読者です 読者をやめる 読者になる 読者になる

Perl,Python,PHP,Ruby(LL言語)の人気をGoogleトレンドで比較してみた

PHP Ruby Perl Python

元ネタはこちらです.
floatingdays: PHPのフレームワークの人気を Googleトレンドで比較

LLな言語の検索ボリュームってどうなんだろう,と思って比較してみた.

f:id:mathtti:20130817225808j:plain

PHP: 29
Python: 13
Ruby:13
Perl:3

PHPPerlの10倍で,RubyPythonは同値.
Perlがこんなに低いとは驚きやした.


ちなみに,Java様は圧倒的でございました(・ω<)

f:id:mathtti:20130817230049j:plain

PHPのフレームワークに悩んだらFuelPHP使えばいいと思うという話

PHP FuelPHP

PHPフレームワークに悩んだらFuelPHP使えばいいと思うという話です.

思えば色々なフレームワークを探しては使ってを繰り返してまいりました.
違う,これも違う,自分で作る,うはっPHPのバージョン上がった,また探すんだ...
PHPerあるあるだと思うのですが,フレームワーク多すぎてプロジェクトの度に悩むという感じでした.

少し前まではZendFramework2をよく使ってたのですが最近はFuelPHPを使ってます.
→前にこんなん書きました.
2012年も終わりそうだから,おすすめPHPフレームワークでも紹介するか. - 等身大シンドローム

なぜ乗り換えたかというと,ZendFrameworkって結局ライブラリとして割り切って使うというか,
基礎部分ちゃんと作りこむとかラッパーちゃんと設計するとかしないと最終的にゴチャゴチャしちゃうような印象が強くて,
さくっと作りたいときはイマイチだなぁとか感じていたというのが大きかったです.
もちろん個人的な印象ですし,使い方がうまくなかっただけなのかもです.単純な相性かもしれません.

フレームワーク遍歴

ZendFramework -> CakePHP -> 自作 -> Kohana -> ZendFramework2 -> FuelPHP(New!!)

■おすすめポイント

・公式ドキュメントを読めば大抵のことがわかる.
・開発が活発におこなわれている.
・パッケージ構成とかシンプルで良い感じ.
・Routingの設定が柔軟かつ簡単な感じ.
・TwigとかSmartyの組み込みやすさ抜群.
・Taskとか便利.ロボットかわゆす.
NetBeansのプラグイン,かなり助かってます(ぺこり).
・日本で流行ってるのでイベントとか情報源が沢山.
 (わたくしはヒッキーですのであまり恩恵には預かっておりませぬ)

■参考リンクなど

FuelPHP » A simple, flexible, community driven PHP5.3 framework.
→何はともあれ公式

最近、僕がハマったFuelPHPの紹介
→とてもわかりやすきスライド

PHP FuelPHP Framework - NetBeans Plugin detail
NetBeansのプラグイン.大変お世話になっております(ぺこり)

■参考書など

書かれた時点のバージョンは低いですが,思想であったりプロセスが見える良い本でした.
まずは本を読みたいという方は,この本一択になるのではないでしょうか.

FuelPHP入門

FuelPHP入門


以上,PHPフレームワークに悩んだらFuelPHP使えばいいと思うという話でした.
気が乗ったらFuelPHP系の記事書いてみます.

FuelPHPでSessionをsetしても次画面で消えてしまう問題(原因はドジだった)

PHP FuelPHP

FuelPHPでSession::set();しても,次画面で消えてしまう問題に遭遇した.
Authなども内部ではSessionを利用しているので,それらも全て使えなくなった.

いろいろ情報を探してもそれらしいものが見当たらず途方にくれそうになっていた時,
ぱっと閃きました.


Serverの時刻が狂ってるんじゃないだろうか,って...


結果としてはこれがビンゴで,Deploy先Serverの時刻が過去日付になっていたため毎回破棄されてしまっていたようです.
開発のVMに対して,いっつもntpd仕込むの忘れちゃうんですよ..

あぁ,こんなドジで随分時間を使ってしまった...

MacのVMをVirtualBoxからVMWareFusionに移行してみた

Mac VMWare

MacのVM管理をVirtualBoxからVMWareFusionに移行しました.

ベンチマークをとったわけでも,メリデメをあげるわけでもないのですが,
VirtualBoxからVMWareFusionへの移行記事はあるのに逆はあまりなかったのでダラダラと書いてみました.

VMWareFusionにのりかえた動機

Windows使うわけでもVirtualBoxに不満があるわけでもなかったのですが,
なんとなくVMWareFusion使ってみたいなぁと思い立って購入しました.

Parallelsも考えたのですが,WindowsでVMWareを使っていた経験や,
ユニティモードすげーなんていうこともありこちらを選択.
(Windows使わないのでユニティモードは陽の目をみないのですが..)

購入

ダウンロード版よりAmazonでパッケージ版を購入したほうが安かったのでそちらを購入.

VMware Fusion 5

VMware Fusion 5

インストール,そしてVirtualBoxからの移行

インストールはポチポチしてれば完了.
移行はVirtualBoxから仮想アプライアンスのエクスポートをおこない,それをVMWareFusionでインポートすればすんなりとできました.
が,VMWareFusionから立ち上げてもネットワークがあがらない....
調べてみたところ,NICからみの問題のようで,以下のサイトを参考にして解決しました.感謝感謝.

VMwareで「Device eth0 does not seem to be present, delaying initialization」と表示された時の対処法 その2|リナックスマスター.JP 公式ブログ

ちょっと使ってみた感じ

VMで動かしているのはCentOSですし,特殊な使いかたをしているわけでもないので体感は変わりません.
ただ,スナップショットの管理がイケてる感じだったり,メニューバーからいろいろ操作できたりするのは良いですね.

30日間無料体験版もあるみたいですし,興味がある方はお試ししてみてはいかがでしょうか.

2012年も終わりそうだから,おすすめPHPフレームワークでも紹介するか.

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のいいとこを良い感じに取り入れてる風.
・拡張しやすい.

悪いとこ

・これといってない..

その他のフレームワーク

CakePHPとか,Symfonyって出た当初からなんか好きになれなったんですよねぇ.
ZendFrameworkも今なら2を使った方がいいし.

シェルスクリプトで回数指定のforループさせたりする

Linux

シェルスクリプトで回数指定の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(スモールライト)で簡単サムネイル作成 - インストール編 -

Linux Apache

Webサイトにおけるサムネイル画像とSMALL LIGHTについて

Webサイトでサムネイル画像が必要になるというのは多い.
アップロード時にResize作るか~とか,なんだとかかんだとか,運用まで考えてみると,意外とメンドクサイ問題であったりする.
そして,仕様変更でResize画像サイズ変更ね,とか.結構死ねる.

SMALL LIGHT(スモールライト)は,そんなサムネイル画像の作成や管理を良い感じにやってくれるlivedoor ラボ「EDGE」製のApacheモジュール.
原理は単純で,Apache上でmod_small_lightというモジュールを展開しておいて,こいつがImageMagickやimlib2といった画像変換ソフトウェアのラッパーとして動いてくれるというわけです.

f:id:mathtti:20121001214239j:plain

ためしてみるとわかるけど,お手軽だし,かなり便利.

livedoorなどの大規模サイトでも利用されているようで,実績があるというのもまた魅力的っすね.

以上が前置きでして..

インストールや実運用に発展させるためのキャッシュ戦略とか,気持ちが続く限り書く.

1.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - インストール編 - (いまここ)
2.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - 性能検証編 - (そのうち書く)
3.SMALL LIGHT(スモールライト)で簡単サムネイル作成 - キャッシュ戦略編 - (そのうち書く)

インストール

検証環境

さくらのVPS
CentOS release 6.3 (Final) 64bit

検証時のソフトウェアバージョン

Apache
Server version: Apache/2.2.15 (Unix)

ImageMagick
6.7.6 Q16

imlib2
1.4.4

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に対応していない罠があります.

今回はこのへんで!