<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>寝る前にラーメン &#187; お仕事</title>
	<atom:link href="http://thleave.com/category/works/feed" rel="self" type="application/rss+xml" />
	<link>http://thleave.com</link>
	<description>学生エンジニアのコードに関する忘備録</description>
	<lastBuildDate>Mon, 30 Aug 2010 15:41:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>mMeasureによるMysqlの最適化と監視</title>
		<link>http://thleave.com/works/342</link>
		<comments>http://thleave.com/works/342#comments</comments>
		<pubDate>Tue, 17 Aug 2010 16:41:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>
		<category><![CDATA[mMeasure]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=342</guid>
		<description><![CDATA[作っているサービスの負荷がバカにならないくらいになってきたので、
真面目に調べてみた。

最初、スロークエリーの解析と監視したかったので調べていたら、
MySQL Query Analyzerが浮上。
でも、どうやらエン [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>作っているサービスの負荷がバカにならないくらいになってきたので、<br />
真面目に調べてみた。</p>
<p><span id="more-342"></span></p>
<p>最初、スロークエリーの解析と監視したかったので調べていたら、<br />
<a href="http://www-jp.mysql.com/products/enterprise/query.html">MySQL Query Analyzer</a>が浮上。<br />
でも、どうやらエンタープライズ向けで、小規模でお金をかけたくない今回には向かない。</p>
<p>分散されたノードの監視に適したツールはいくつかあったけど、<br />
監視サーバーが必要だったり、鳥瞰的なデータよりも細かいデータが欲しかったのでスルー。<br />
でも、いずれは使ってみたい。(NagiosやZAPPIXなどといったソフトウェア）</p>
<p>そこでたどり着いたのが<a href="http://mmeasure.sourceforge.jp/">mMeasure</a>というMysqlモニタリングソフトウェア。<br />
監視サーバー不要で運用サーバーに直接インストールして実行できるのでお手軽。<br />
いくつかのページを参考にして導入してみた。</p>
<p>mMeasureの実行にはrrdtoolというソフトウェアが必要なのでインストールする。<br />
yumが入っていなかったので、rpmでインストールしようとしたが依存関係の解決が難しくて断念。<br />
yumから入れることにした。</p>
<p>[bash]<br />
wget http://mirror.centos.org/centos-5/5.5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm<br />
rpm -ivh yum-3.2.22-26.el5.centos.noarch.rpm<br />
[/bash]</p>
<p>すると依存関係で怒られるので、警告で出るパッケージを同ディレクトリから落としてくる。<br />
サーバーのCentOSのバージョンが5.3だったんだけど、<br />
対応するディレクトリが空だったので5.5のディレクトリのyumをいれたけど特に問題なく動いている。</p>
<p>次にmMeasureに必要なrrdtoolを入れるんだけど、<br />
最初から用意されているリポジトリにはrrdtoolsが置いてないので、リポジトリを追加する。</p>
<p><a href="http://rpmrepo.org/RPMforge">RPMForge</a>でrpmが配布されているので、落としてくる。<br />
[bash]<br />
# x86_64<br />
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm<br />
rpm -ivh pmforge-release-0.5.1-1.el5.rf.x86_64.rpm<br />
[/bash]</p>
<p>これでリポジトリが追加された。<br />
ここまでくれば楽ちん。</p>
<p>[bash]<br />
yum install rrdtool<br />
[/bash]</p>
<p>他にmMeasureを実行するにはPerlのライブラリであるJcode.pmが必要。<br />
CPANコマンドをインストールして落としてくるのが一番らくちん。<br />
Perlユーザーならなんて事ないだろうけども、最初にCPANを使う方はちょっといろいろ質問される。</p>
<p>ここまでくれば<a href="http://mmeasure.sourceforge.jp/install/">mMeasure</a>にあるドキュメント通りインストールする。<br />
ただ、周知のようにいくつか修正が必要な箇所があるので注意。</p>
<p>mmeasure.confが一番修正箇所が多い気がする。<br />
あと、Mysql5.xでクエリー比率などを計測するには他のソースも修正が必要。</p>
<p>いくつかのサイトを参考にさせて頂きました。<br />
ドキュメントには書いていないので、見なかったら絶対無理だった。</p>
<p><a href="http://koexuka.blogspot.com/2009/09/mmeasure.html">オデの日記＠WEB系: mmeasureのインストール</a></p>
<p>ここらへんで正常に動くようになった。<br />
その後はmMeasureと相談しながらmy.cnfを修正してゆく。</p>
<p>それで結果を参考にいろいろ調整してみたけど、パフォーマンスに体感できるほどの変化は無かったと思う。<br />
元々、クエリーの結果を<a href="http://memcached.org/">memcached</a>を使ってメモリー上に置いてたってのもあると思う。<br />
（それが一番効果的だったと思う！）</p>
<p>ただ、入れたのが無駄だったんじゃなくて、<br />
データベースの状態がグラフィカルに随時確認できるので、安心感が増して良かったと思ってる。<br />
今後、状況が変化した時の対応もしやすいだろうし。</p>
<p>ちょっと大変だったけど、時間があれば是非。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/342/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakephpでURL書き換えつつPagenation（ページング）</title>
		<link>http://thleave.com/works/277</link>
		<comments>http://thleave.com/works/277#comments</comments>
		<pubDate>Thu, 03 Jun 2010 18:05:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=277</guid>
		<description><![CDATA[CakephpのPagenatorヘルパーを使ってページングを実装する話。
ただ、URLはデフォルトのものじゃなくて、自由にやりたいんだけど？という制約。

Pagenatorの基本的な使い方
なんだかんだ言って公式が一 [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>CakephpのPagenatorヘルパーを使ってページングを実装する話。<br />
ただ、URLはデフォルトのものじゃなくて、自由にやりたいんだけど？という制約。</p>
<p><span id="more-277"></span></p>
<h3>Pagenatorの基本的な使い方</h3>
<p>なんだかんだ言って公式が一番わかり易い気がする。<br />
<a href="http://book.cakephp.org/ja/view/164/Pagination">4.9 ページ付け(Pagination)</a></p>
<p>ダイナミックな検索を実装するときには、検索条件をなんらかの方法で保持しないといけない。<br />
(Pagenatorは自動でそこまではやってくれない)</p>
<p>例えば、<br />
[php]<br />
$options = array(<br />
	&#8216;conditions&#8217; => array(<br />
		&#8216;Joboffer.industry_id&#8217; => $id,<br />
		&#8216;Joboffer.is_deleted&#8217; => &#8217;0&#8242;,<br />
	)<br />
);<br />
$this->Session->write(&#8216;options&#8217;, $options);</p>
<p>[/php]</p>
<p>とかってやってた。</p>
<p>CakePHPのセッションは配列やオブジェクトもそのまま保存できる。<br />
いちいちシリアライズする必要がない。<br />
（標準でもできたっけ？）</p>
<p>ある程度固定ならメンバに書いて、一部変更でも良い。</p>
<p>[php]<br />
	public $paginate = array(<br />
		&#8216;Joboffer&#8217; => array(<br />
			&#8216;limit&#8217;	=> 20,<br />
			&#8216;order&#8217;	=> array(&#8216;Joboffer.regist_date&#8217; => &#8216;desc&#8217;, &#8216;Joboffer.id&#8217;),<br />
			&#8216;conditions&#8217; => array(&#8216;Joboffer.is_deleted&#8217; => &#8217;0&#8242;),<br />
		),<br />
	);<br />
[/php]</p>
<h3>Routesを使って、URLを書き換える</h3>
<p>普段だとmod_rewriteを使う場面。<br />
CakePHPはリクエストされるURLをすべて一度受け取って、<br />
それからディスパッチしてるのでその際のルールを書き換えるだけでOK</p>
<p><a href="http://book.cakephp.org/ja/view/46/Routes-Configuration">3.4.5 Routesの設定</a></p>
<p>制約やルールを簡単に書くと、</p>
<ul>
<li>Routesで指定した変数は$this->paramsに入る。</li>
<li>prefixをつけたい場合は、そのまま書くだけ</li>
<li>但しsuffixをつけたい場合は書くだけでは出来ない。<br/><a href="http://book.cakephp.org/ja/view/46/Routes-Configuration#File-extensions-853">3.4.5.7 File extensions</a>を読む。ここで対応できない部分はたぶんできない。</li>
<li>/:someparam_:someparam/のような書き方はできない。<br/>ひとつのディレクトリーに１変数まで。</li>
</ul>
<p>知らないと意外にハマる。</p>
<h3>PagenatorとRoutesの連携</h3>
<p>一緒になると非常にややこしい。</p>
<p>基本的には別々に設定すれば良い。<br />
ただし、ページ数までカスタムURLの中に含めようとすると頭がいたくなる。</p>
<p>どういうことかというと、以下のように適当にURLを書き換えて、<br />
そのページでページングするなら簡単に出来る。<br />
[php]<br />
	Router::connect(&#8216;/job/:id&#8217;, array(<br />
		&#8216;controller&#8217; => &#8216;job&#8217;,<br />
		&#8216;action&#8217; => &#8216;get&#8217;<br />
	), array(<br />
		&#8216;id&#8217;	=> &#8216;[0-9]+&#8217;,<br />
	));<br />
[/php]</p>
<p>/job/:id/page:2みたいになるはず。</p>
<p>ただ、以下のようになると話が違ってくる。</p>
<p>[php]<br />
	Router::connect(&#8216;/search_:page&#8217;,array(<br />
		&#8216;controller&#8217; => &#8216;search&#8217;,<br />
		&#8216;action&#8217; => &#8216;index&#8217;<br />
	), array(<br />
		&#8216;page&#8217;=> &#8216;[0-9]+&#8217;,<br />
	));<br />
[/php]</p>
<p>search_2.htm のようなURLを作りたいということ。<br />
普通だったらこういうことはもう不要なんだけどね。</p>
<p>実は公式には書いてないんだけど、Pagenatorでリンクを生成する関数を辿っていくと、router.phpに行き着く。<br />
なので、Routesでしっかり設定しておくと、自動的にそのURLでページングされるようになるわけ！ここはもうマジック。</p>
<p>但しマジックなので、コツがいります。</p>
<ul>
<li>router.phpではとても厳しい基準でマッチングをしている。<br />
本当に書き換えるべきURLなのか？分かりやすく正確にRoutesに設定し、Pagenatorで指定する必要がある。<br />
具体的に言うとURLだけでなくパラメーターまで見る。</li>
<li>router.phpのリンク生成の関数までパラメーターを渡すことができる。<br />
viewの関数の引数で、option['url']に配列で渡すと最後まで届く。</li>
</ul>
<p>例を交えて説明します。</p>
<p>まず、<strong>router.phpではとても厳しい基準でマッチングをしている。</strong>という点。<br />
当然なんですが、結構ハマります。</p>
<p>URLだけがマッチしていれば（他に曖昧なものがなければ）、書き換えてくれそうなものですが、<br />
router.phpは指定したパラメーターまで見てくれます。</p>
<p>具体的に説明すると、<br />
[php]<br />
	Router::connect(&#8216;/hogehoge/area_:pref/:page&#8217;, array(<br />
		&#8216;controller&#8217; => &#8216;hogehoge&#8217;,<br />
		&#8216;action&#8217; => &#8216;area&#8217;<br />
	), array(<br />
		&#8216;pref&#8217;	=> &#8216;[0-9]+&#8217;,<br />
		&#8216;page&#8217;	=> &#8216;[0-9]+&#8217;,<br />
	));<br />
[/php]<br />
とした場合、パラメーターがprefとpageとあるわけです。<br />
pageは自動的にPagenatorから渡されますが、<br />
prefは手動で渡してあげないとrouter.phpは気づいてくれません。</p>
<p>ここで次のポイントが生きてきます。<br />
<strong>router.phpのリンク生成の関数までパラメーターを渡すことができる。</strong></p>
<p>router.phpではパラメーターまで見るので、そこまで値が渡せなければいけません。<br />
ただ、普通にoptionに書いたのでは途中で切り捨てられ、届きません。</p>
<p>どうやるかというと、<br />
[php]<br />
$paginator->prev(&#8216;前の20件を表示&#8217;, array(&#8216;url&#8217; => array(&#8216;ext&#8217; => &#8216;htm&#8217;, &#8216;pref&#8217; => $pref_id)));<br />
[/php]<br />
のように、optionのurlに指定してあげます。</p>
<p>この例だと上のようにviewで指定すれば、ちゃんとURLが書き換えられてページングが出来ます。<br />
ややこしいね。</p>
<p>興味がある方は/libs/view/helpers/paginator.phpを読んで、<br />
router.phpまで辿ってみると理解が深まると思います。</p>
<p>ちょっとソースもややこしいので、もっと整理されて分かりやすく使いやすくなればいいなぁと思いました。<br />
それでも標準でここまで出来ることが素晴らしいので、改めてCakePHPのパワーを感じる結果になりました。</p>
<p>ご参考になれば。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/277/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UNIXコマンドをPerl(CGI)で動かそうとする</title>
		<link>http://thleave.com/works/146</link>
		<comments>http://thleave.com/works/146#comments</comments>
		<pubDate>Thu, 12 Nov 2009 18:22:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=146</guid>
		<description><![CDATA[外部からはSSHが通せないサーバーのスクリプトを動かしたいというのがテーマ。
crontabとかではなくて、任意のタイミングで。

まず、PerlでUNIXコマンドを動かすには方法がいくつかある。

バッククォート(=b [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>外部からはSSHが通せないサーバーのスクリプトを動かしたいというのがテーマ。<br />
crontabとかではなくて、任意のタイミングで。</p>
<p><span id="more-146"></span></p>
<p>まず、PerlでUNIXコマンドを動かすには方法がいくつかある。</p>
<ul>
<li>バッククォート(=backtrick) を使って動かす。<br />
[perl]<br />
print `ls -al`;<br />
[/perl]<br />
出力はコマンドの実行結果。
</li>
<li>system()やexec()などの関数を使う<br />
[perl]<br />
system &#8220;ls -al&#8221;;<br />
[/perl]<br />
出力はコマンドの返値、正否。1とか0とか。詳しくは調べて。
</li>
</ul>
<p>別にどっちを使っても構わないと思う。<br />
<br/></p>
<p>次に問題になるのはログインするユーザー。</p>
<ul>
<li>CGIによるアクセス => nobody</li>
<li>通常のSSHアクセス => rootとか登録されたユーザーとか</li>
</ul>
<p>ファイルを触りたい場合、suするかsudoを使うしかない。</p>
<ol>
<li>suする場合<br />
対話型のコマンドなのでパスワードが必要なユーザーには基本的にはsuできないが、expectを使えばいける。<br />
詳しくは調べてー。インストール必要。
</li>
<li>sudoする場合<br />
サーバー管理者に設定してもらう必要がある。<br />
セキュリティーホールを広げるものなのでー、これは基本的に非推奨だよね。
</li>
</ol>
<p>どちらにせよ、こういうことをするのはセキュリティーを下げてリスクを上げるので良くなさそう。<br />
できそうな感じにはなったけどね。<br />
参考までに。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/146/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>こんにちはblogparts</title>
		<link>http://thleave.com/works/124</link>
		<comments>http://thleave.com/works/124#comments</comments>
		<pubDate>Mon, 05 Oct 2009 07:47:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=124</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><script type="text/javascript" charset="UTF-8" src="http://venture-s.jp/blogparts/blogparts.htm"></script></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/124/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>はじめてではないPerl</title>
		<link>http://thleave.com/works/79</link>
		<comments>http://thleave.com/works/79#comments</comments>
		<pubDate>Sat, 15 Aug 2009 16:33:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=79</guid>
		<description><![CDATA[昔よく簡単なアプリを作るのに使っていたので書けるつもりでいたPerl
今度仕事で使いそうだったので、ちゃんと勉強してみようと思い本を買った。
それも易しめのタイトル「はじめてのPerl」、しかしオライリー。

語弊を恐れ [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>昔よく簡単なアプリを作るのに使っていたので書けるつもりでいたPerl<br />
今度仕事で使いそうだったので、ちゃんと勉強してみようと思い本を買った。<br />
それも易しめのタイトル「はじめてのPerl」、しかしオライリー。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sasuraifish-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873111269" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>語弊を恐れず書くと、読んでみたらさっぱり分からないのなんのって。<br />
きっと読めない、書けないわけではないんだけど、知らない文法とか機能が多くて驚いた。<br />
PHP書けるから余裕だと思っていたけど、それなんかよりよっぽど複雑な言語だった。<br />
でも、全部覚えたら楽しそう。複雑なアルゴリズムが短いコードでぬるぬる書けたら絶対楽しい。<br />
この上にRubyがあるって思うと更に。<br />
ちゃんと勉強しよう。</p>
<p>ちなみにPerlの本、続きがあって。<br />
表紙に毛が生えた「続編」</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sasuraifish-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873113059" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>全員大集合の「マスタリングPerl」</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=sasuraifish-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4873113970" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>表紙が面白い。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/79/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WicketでMarkupExceptionがうるさい</title>
		<link>http://thleave.com/works/76</link>
		<comments>http://thleave.com/works/76#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:12:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[お仕事]]></category>
		<category><![CDATA[Wicket]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=76</guid>
		<description><![CDATA[ApacheWicketで、wicket:idをマークアップしたのに、componentを追加していないと怒られる。
逆にcomponentを追加したのに、wicket:idをマークアップしていないと怒られる。
ここまで [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>ApacheWicketで、wicket:idをマークアップしたのに、componentを追加していないと怒られる。<br />
逆にcomponentを追加したのに、wicket:idをマークアップしていないと怒られる。<br />
ここまでは大丈夫。<br />
むしろ、親切なFWだなぁって最初は思っていた。</p>
<p>だけど、だんだん開発を重ねるうちにMarkupExceptionがうるさく感じてきた。<br />
例えば、何かのイベント（例えば、onClickなど）に反応してcomponentを追加したりしたいとき、<br />
wicket:idのマークアップ先の初期値はすっからかんのはず。</p>
<p>なのに最初でも適当なLabelを追加しないと怒られる。<br />
運用だと（確か？）怒られないはずだったけど、そういう問題じゃないよなぁ。<br />
ignoreなんとかってオプションがあればいいなーってふと思った。<br />
あって気づいてないだけかもしれないけど。</p>
<p>[java]<br />
WebMarkupContainer wmc = new WebMarkupContainer(&#8220;dpList&#8221;);<br />
wmc.add(new Label(&#8220;name&#8221;));<br />
wmc.add(new Label(&#8220;number_of_classes&#8221;));<br />
wmc.add(new Label(&#8220;number_of_not_checked_classes&#8221;));<br />
wmc.add(new Label(&#8220;number_of_evaluations&#8221;));<br />
wmc.add(new Label(&#8220;number_of_not_checked_evaluations&#8221;));<br />
wmc.add(new Label(&#8220;sum_of_evaluations&#8221;));<br />
[/java]</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/76/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ECサイトを2週間で作れ</title>
		<link>http://thleave.com/works/59</link>
		<comments>http://thleave.com/works/59#comments</comments>
		<pubDate>Sun, 26 Jul 2009 16:29:10 +0000</pubDate>
		<dc:creator>tchiba</dc:creator>
				<category><![CDATA[お仕事]]></category>

		<guid isPermaLink="false">http://thleaves.railsplayground.net/?p=59</guid>
		<description><![CDATA[と言われたので頑張ってみんなで作った。
土台から作るのは時間的に無理だったので、
パッケージを探してこれにたどり着いた。
EC-Cube
http://www.ec-cube.net/
即採用だったんですが、理由は、

 [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>と言われたので頑張ってみんなで作った。</p>
<p>土台から作るのは時間的に無理だったので、<br />
パッケージを探してこれにたどり着いた。</p>
<p>EC-Cube<br />
<a href="http://www.ec-cube.net/">http://www.ec-cube.net/</a><br />
即採用だったんですが、理由は、</p>
<ul>
<li>日本製（ローカライズが不要）</li>
<li>GPLライセンス</li>
<li>デザインがSmarty でしっかり分離されている</li>
<li>目立たない部分もしっかり作り込まれている。</li>
</ul>
<p>実際にいじりはじめてからも、<br />
WIKIがしっかりしているので苦労しなかった。</p>
<p>テストとデザインを含めると少し納期を越えそうですが、まぁヨシとしようね。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/works/59/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
