PHPのフレームワークに悩んだらFuelPHP使えばいいと思うという話
PHPのフレームワークに悩んだらFuelPHP使えばいいと思うという話です.
思えば色々なフレームワークを探しては使ってを繰り返してまいりました.
違う,これも違う,自分で作る,うはっPHPのバージョン上がった,また探すんだ...
PHPerあるあるだと思うのですが,フレームワーク多すぎてプロジェクトの度に悩むという感じでした.
少し前まではZendFramework2をよく使ってたのですが最近はFuelPHPを使ってます.
→前にこんなん書きました.
2012年も終わりそうだから,おすすめPHPフレームワークでも紹介するか. - 等身大シンドローム
なぜ乗り換えたかというと,ZendFrameworkって結局ライブラリとして割り切って使うというか,
基礎部分ちゃんと作りこむとかラッパーちゃんと設計するとかしないと最終的にゴチャゴチャしちゃうような印象が強くて,
さくっと作りたいときはイマイチだなぁとか感じていたというのが大きかったです.
もちろん個人的な印象ですし,使い方がうまくなかっただけなのかもです.単純な相性かもしれません.
■おすすめポイント
・公式ドキュメントを読めば大抵のことがわかる.
・開発が活発におこなわれている.
・パッケージ構成とかシンプルで良い感じ.
・Routingの設定が柔軟かつ簡単な感じ.
・TwigとかSmartyの組み込みやすさ抜群.
・Taskとか便利.ロボットかわゆす.
・NetBeansのプラグイン,かなり助かってます(ぺこり).
・日本で流行ってるのでイベントとか情報源が沢山.
(わたくしはヒッキーですのであまり恩恵には預かっておりませぬ)
■参考リンクなど
FuelPHP » A simple, flexible, community driven PHP5.3 framework.
→何はともあれ公式
最近、僕がハマったFuelPHPの紹介
→とてもわかりやすきスライド
PHP FuelPHP Framework - NetBeans Plugin detail
→NetBeansのプラグイン.大変お世話になっております(ぺこり)
FuelPHPでSessionをsetしても次画面で消えてしまう問題(原因はドジだった)
FuelPHPでSession::set();しても,次画面で消えてしまう問題に遭遇した.
Authなども内部ではSessionを利用しているので,それらも全て使えなくなった.
いろいろ情報を探してもそれらしいものが見当たらず途方にくれそうになっていた時,
ぱっと閃きました.
Serverの時刻が狂ってるんじゃないだろうか,って...
結果としてはこれがビンゴで,Deploy先Serverの時刻が過去日付になっていたため毎回破棄されてしまっていたようです.
開発のVMに対して,いっつもntpd仕込むの忘れちゃうんですよ..
あぁ,こんなドジで随分時間を使ってしまった...
MacのVMをVirtualBoxからVMWareFusionに移行してみた
MacのVM管理をVirtualBoxからVMWareFusionに移行しました.
ベンチマークをとったわけでも,メリデメをあげるわけでもないのですが,
VirtualBoxからVMWareFusionへの移行記事はあるのに逆はあまりなかったのでダラダラと書いてみました.
VMWareFusionにのりかえた動機
Windows使うわけでもVirtualBoxに不満があるわけでもなかったのですが,
なんとなくVMWareFusion使ってみたいなぁと思い立って購入しました.
Parallelsも考えたのですが,WindowsでVMWareを使っていた経験や,
ユニティモードすげーなんていうこともありこちらを選択.
(Windows使わないのでユニティモードは陽の目をみないのですが..)
購入
ダウンロード版よりAmazonでパッケージ版を購入したほうが安かったのでそちらを購入.
- 出版社/メーカー: アクト・ツー
- 発売日: 2012/09/28
- メディア: DVD-ROM
- 購入: 10人 クリック: 58回
- この商品を含むブログ (8件) を見る
インストール,そしてVirtualBoxからの移行
インストールはポチポチしてれば完了.
移行はVirtualBoxから仮想アプライアンスのエクスポートをおこない,それをVMWareFusionでインポートすればすんなりとできました.
が,VMWareFusionから立ち上げてもネットワークがあがらない....
調べてみたところ,NICからみの問題のようで,以下のサイトを参考にして解決しました.感謝感謝.
ちょっと使ってみた感じ
VMで動かしているのはCentOSですし,特殊な使いかたをしているわけでもないので体感は変わりません.
ただ,スナップショットの管理がイケてる感じだったり,メニューバーからいろいろ操作できたりするのは良いですね.
30日間無料体験版もあるみたいですし,興味がある方はお試ししてみてはいかがでしょうか.
2012年も終わりそうだから,おすすめPHPフレームワークでも紹介するか.
PHPをひたすら書いていた時は,まだ5.2系だったりしたのですが.
5.3系(もう5.4もきてますね)になって名前空間サポートされたりとか色々機能が増えたりして,さらにフレームワークを作りやすくなっちゃったりしてますね.戦国時代.
PHPでも名前空間とかレイトスタティックバインディングとかが出来るようになってきて,「それはJavaでやればいい」とか「PHPでそんなのやる必要あるか」みたいな意見も聞くんですが,やっぱり使えれば便利だと思うんですよね.
特にレイトスタティックバインディングが出来ない頃は,無駄に頑張ってevalとかやっちゃって後悔したりしてました.
で,久しぶりにPHPでも書くかと思ってフレームワークを探してみた結果,今ならこの3つがいいなーってのにたどり着いたのでご紹介です.あくまで個人的見解です.
ZendFramework2(公式サイト)
結論から言ってしまうと,個人的にはZendFramework2が総合力No.1だと思います.
なので,新しいフレームワークを探している人にはこれを薦めることにしている.
良いとこ
・品質に対して大きな安心感がある.
・DIとかできちゃうんだぜ.
・libraryの数とか半端ないんだぜ.
・EventManagerとか搭載されてるんだぜ.
・名前空間の恩恵をフルに受けてる気がする.
・なんだかんだ言ってもZendFrameworkなので,技術者が集まりやすいかも.
悪いとこ
・出たばっか(2012年9月にメジャーリリース).
→まぁ,開発期間長かったしZendだし心配は必要ないと思ってるのですが.
・日本語の情報が少ない.
→書籍もないです
→公式ドキュメントはめちゃくちゃ充実してますが,全部英語です.
Kohana(公式サイト)
なんらかの事情でZendFramework2を使わないってなったらKohanaかFuelPHPを使う.
CodeIgniterからの派生なので,経験者は学習コストも低いのではないでしょうか.
このフレームワークはとにかく実装が綺麗.使わなくてもいいから読んでみると勉強になる.
良いとこ
・書いてて気持ちいい.
・シンプルな構成なので,フレームワーク起因でハマることが少ない.
・拡張しやすい.
悪いとこ
・ORMが微妙な感じ.
・日本語の情報が少ない.
→書籍もないです
→公式ドキュメントはそれなり.全部英語です.
FuelPHP(公式サイト)
Kohana使おうとしたけど,英語はちょっときついなって場合だとか,
思想はわかるんだけどちょっと肌に合わないなって場合はFuelPHPがいいと思う.
なんか,流行ってきてるし情報も集めやすいのではないでしょーか.
良いとこ
・CodeIgniterとかKohanaのいいとこを良い感じに取り入れてる風.
・拡張しやすい.
悪いとこ
・これといってない..
シェルスクリプトで回数指定のforループさせたりする
シェルスクリプトで回数指定のforループさせたりするコード.
for i in `seq 1 1 10`; do // 処理書く done
無駄に解説なぞしますと, seqコマンドの結果をforに渡しています.
$ seq usage: seq [-w] [-f format] [-s string] [-t string] [first [incr]] last // 10 から 1 ずつ増やして 50 がゴールの例 $ seq 10 1 50 10 ... 50
最初の例だと,以下のように書くのと同義です.
for i in 1 2 3 4 5 6 7 8 9 10; do // 処理書く done
ワンライナーにするのも簡単.
こういう処理がぱっと書けると,ターミナル作業での生産性がupすると思う.
SMALL LIGHT(スモールライト)で簡単サムネイル作成 - インストール編 -
Webサイトにおけるサムネイル画像とSMALL LIGHTについて
Webサイトでサムネイル画像が必要になるというのは多い.
アップロード時にResize作るか~とか,なんだとかかんだとか,運用まで考えてみると,意外とメンドクサイ問題であったりする.
そして,仕様変更でResize画像サイズ変更ね,とか.結構死ねる.
SMALL LIGHT(スモールライト)は,そんなサムネイル画像の作成や管理を良い感じにやってくれるlivedoor ラボ「EDGE」製のApacheモジュール.
原理は単純で,Apache上でmod_small_lightというモジュールを展開しておいて,こいつがImageMagickやimlib2といった画像変換ソフトウェアのラッパーとして動いてくれるというわけです.
ためしてみるとわかるけど,お手軽だし,かなり便利.
livedoorなどの大規模サイトでも利用されているようで,実績があるというのもまた魅力的っすね.
以上が前置きでして..
インストールや実運用に発展させるためのキャッシュ戦略とか,気持ちが続く限り書く.
1.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - インストール編 - (いまここ)
2.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - 性能検証編 - (そのうち書く)
3.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - キャッシュ戦略編 - (そのうち書く)
インストール
検証環境
さくらのVPS
CentOS release 6.3 (Final) 64bit
SMALL LIGHTのインストール
本丸.
[user1@ns1 ~] $ cd /usr/local/src # ダウンロード [user1@ns1 /usr/local/src] $ wget http://smalllight.googlecode.com/files/mod_small_light-1.1.1.tar.gz [user1@ns1 /usr/local/src] $ tar zxf mod_small_light-1.1.1.tar.gz [user1@ns1 /usr/local/src] $ cd mod_small_light-1.1.1 # ImageMagickとimlib2を利用するようにconfigure [user1@ns1 /usr/local/src] $ ./configure --with-apxs=[apxsのパス] --with-imlib2-config=[imlib2-configのパス] --with-Wand-config=[Wand-configのパス] [user1@ns1 /usr/local/src] $ make [user1@ns1 /usr/local/src] $ sudo make install
※ makeが上手くできない場合は,以下のページを参考にするといいかもしれません.
Apacheの動的画像リサイズモジュール「smalllight」のmakeが通らなかったのを直してみた。 - コロタエンヂニアリング
Apacheの設定
make installすると勝手にhttpd.confに書き込まれるぽいですが,以下のモジュールがLoadModuleで読み込まれている必要があります.
LoadModule small_light_module /path/to/hoge/mod_small_light.so
そして,mod_rewirteでURL設計をして,上手くSMALL LIGHTのfilterを通してあげるようにします.
例)small_lightで始まるURLのものは,変換対象とする(VirtualHost設定の中とかに書く)
RewriteRule ^/small_light[^/]*/(.+)$ /path/to/img/$1 <LocationMatch ^/small_light[^/]*/> SetOutputFilter SMALL_LIGHT </LocationMatch>
※公式サイトの解説がかなり詳しいので,出来ればそこを一回読んだ方がよいと思います.
ここまで出来ていれば,あとは実際に動かしてみましょう.
動作検証
/path/to/img に画像置いてある前提です.
http://[URL]/img/hoge.jpeg
→オリジナルの画像が表示される
http://[URL]/small_light(dw=400,dh=400,ds=s, e=imagemagick)/hoge.jpeg
→ImageMagickで変換した画像が表示される
http://[URL]/small_light(dw=400,dh=400,ds=s, e=imlib2)/hoge.jpeg
→imlib2で変換した画像が表示される
うーん,お手軽っ.
すーぱーお手軽負荷検証
負荷検証はまた別エントリしますが,すーぱーお手軽な感じで[F5]連打時の変換コストをvmstatでモニタリング.1200×800のjpeg画像でやっております.
注目は,[memory]の[free]と[cpu]の[us]数値.
ImageMagick(cpuめちゃ上がる)
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 384 579748 108548 188360 0 0 0 0 206 32 7 1 93 0 0 9 0 384 463788 108548 188360 0 0 0 0 2290 577 72 16 3 0 10 11 0 384 410296 108548 188360 0 0 0 0 2367 686 91 9 0 0 1 15 0 384 364792 108548 188364 0 0 0 0 2214 690 88 12 0 0 0 23 0 384 309648 108548 188364 0 0 0 0 2071 689 85 14 0 0 0 27 0 384 201984 108548 188368 0 0 0 0 2043 695 82 18 0 0 0 0 0 384 530184 108556 188368 0 0 0 16 2017 654 89 7 5 0 0
imlib2(うわっ……私の負荷、低すぎ……?)
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 384 481396 108636 188396 0 0 0 0 48 22 0 0 100 0 0 1 0 384 481272 108636 188812 0 0 0 0 795 89 16 2 80 0 2 1 0 384 481272 108636 188704 0 0 0 0 1113 106 23 3 72 0 2 1 0 384 481272 108636 188764 0 0 0 0 1357 122 30 4 64 0 1 1 0 384 481148 108636 188712 0 0 0 0 1268 118 26 4 65 0 5 0 0 384 481148 108636 188416 0 0 0 0 1329 121 28 4 66 0 2
imlib2マンセーと言いたくなりますが,こやつがgifに対応していない罠があります.
今回はこのへんで!