16種類のプログラム言語が武器になったら実に個人的偏見に満ちた、ネタとして見るにもアレな内容。一言で言えば「オレサマが積み上げてきたCのライブラリこそ至高」的な老害意見。その意味で特にツッコミいれたいのがのっけの「C言語」。「古い」「安定性が高い」のは良いとして、その習得はある意味その下に挙がってる「C++」よりも困難であり、かつマトモなPGを組むには更にその下で挙がってる「Java」よりもコードに気を使う必要がある。C言語の方が先だろうと。「M1ガーランド」の例えをそのまま流用するならば「分解されたM1ガーランド。弾薬の入手は困難」というのが正しいように思う。結局のところ各言語の特徴・違いを理解し、且つその周辺技術についても理解し、必要とされるアプリに対して適切な言語を選択し、適切なコードを書くようにするのが大事だよねという話。最大152%高速化と、言う話らしいですが、十数年来のPHPerである私としましては控えめに申しましても「二度とIIS+PHP構成なぞ組むかURIIIIIIIII!!」と言うのが本音でございます。WindowsでPHP動作させたい場合はZendServerCEが一番手っ取り早いとゆーのが結論です。ZendFrameworkを動作させる場合は尚更。他に役に立たないであろう備忘。Linux上のPHPからwinexeを起動して他のWin機のコマンドを実行したい場合。色んな理由からLinuxからWindows(Server)の操作をしたい事があります。専用のAPIやらRPCやらを持ってるモノだったらそこに対してアクセスしますが、内部コマンドについて処理をしたい場合何らかのCLI系サーバをWin側で立ち上げるか、はたまたIISとASP等を経由して内部コマンドを実行、といった手段があります。そんな手法の1つ、「LinuxからWindowsのコマンドを直接実行する手段」としてsamba系のツール「winexe」があります。言うかあることを最近知りました。これはWindowsで言うところの「psexec」に似ており、コマンドプロンプトで実行するようなコマンドを実行することができます。PHPのexec関数やらsystem関数やらを使う事でLinuxベースのWebアプリからWindowsの特定制御を行う事を試みたのが今回のお話です。そんなことしたい人間がどれだけいるかって話です(苦笑)。LinuxはおなじみCentOS5系でPHPは5.1.6。winexeは1.00。winexeのインストールは割愛。ソースコンパイルして適当なbinにコピー。適当にコマンドテスト。/var/log/test_winexe.logとりあえず出力をファイルに書いてます。結果ipconfigの結果が素直に返って来て感動。コマンドプロンプトだから仕方ないか。次にこれをPHPのexec関数から実行。/var/log/test_winexe.log");...ところがコレが何時まで経っても応答が返ってこない。psでプロセス見るとコマンドは発行されて止まってる様子。killしないと残りっぱなし。select()というエラーが1行。「permitted」云々言ってるんでアクセス権かな、と思いsudoによるroot権限実行に変更。他の実行コマンド系はどうだろう、と「system()」「shell_exec()」を用いるものの変化無し。コマンド内容をシェルスクリプトに移動し、そちらで起動しても変化無し。sudoでもそうだったがこういった場合標準出力関係でトラブる事が多いので、似た状況で稼働するcronでの起動を試す。ユーザはPHPの稼働環境と合わせる意味でapache。TTY及びapacheユーザ権限の問題の可能性が薄れる。仕方ないので(いや最初からやれよと)元々出ているエラーメッセージを追うことに。failed」はコネクション系のエラーぽい。ここで「Windows側に処理結果が残るバッチ」を作成して実行したところ、そちらの稼働は確認できた。つまるところ「コマンドを読んだ後の戻り」が上手く言ってない様子。なると、どちらかというと「PHPから起動した故にプロセスの戻りのパイプがよくわからんことになっている」という可能性があるのかなと。EPOLLについて調べてたらファイルディスクリプタがどうこう言われたし。上記シェルの起動を、プロセス単位で制御する「popen()」に変更。ポインタを開く際の権限モードを書き込み可能な「w」で動くように設定。/var/log/test_winexe.log","w");pclose($pp);上記の様にしたところ、無事終了しつつ且つ結果も取れるようになりました。実験で上記popenの権限モードを読み専用の「r」に変更したところ、他のexecやらと同様に停止しつつプロセスに居残り、また同様のEPOLL_CTL_ADD系エラーが発生することを確認しました。まーこんな話が世の中役に立つかはアレですが、他の実行ファイルを起動する場合にも似たような話が発生する可能性はあるでしょう。Chromiumブラウザ『Dartium』リリースほうほう。Dartの存在を忘れてましたがイマイチJavascriptにとっかかりにくい身としては置き換えとして期待したいところ。PHP53においてtimezoneをAsia/Tokyo設定した場合話。久々にPHP話だよ!CentOS5系列最後の方をベースに、毎度おなじみZnedFramework+Smarty+PostgreSQL環境で開発しております。このディストリになるとインストされるPHPを5.1.6系列か53系列かを選択できる。まあ一部足りないモノがあったりもするのだが、この間には越えられない壁があると判断。PostgreSQLも8.1系列と8.4系列を選択できる。ここにも超えられない壁...というか今回xml型を使いたかったので8.4を選択。この2者のため「PHP53からPostgreSQL84につなぐ」ための設定に少し手間取ったりもしたがそう大した話ではない。開発する中でそりゃ使うだろうという関数が日付関数「date」。settings.(中略)とか表示される。Warning非表示にして無視するという選択肢もあるが、標準的な手法としては設定ファイルphp.iniの「date.timezone」に適切な値を設定すれば良い、ということらしい。日本標準時を指定する「Asia/Tokyo」を設定し再起動...うむ、エラーは出なくなった。...と、一般の手法で上手くいかないのが私のパターンw確かにエラーは出なくなった。なんか表示される時間がおかしい。気づいたのはPostgreSQLに設定された時間がずれていた事。当初はてっきりPostgreSQL側のtimezone設定がおかしいものと思って調整したが変わらず。date();」で普通にJST返ってくるし。上述のphp.iniの書き方がおかしいのかなー、と思い色々試すが変化なし。ここで先日遭遇したCentOS自身のtimezoneを指定する「localtime」がおかしいよ話を思い出す。してPHPもここの解釈おかしくなってんじゃないか?と言うかどっかでまとめて時間管理してるのか?と思い、試しにphp.iniに時差の少ないであろー「Asia/Seoul」を設定したところ本来のJSTに近い時間が表示された。AAAAAAAAA!!!!ちなみに見たところ「Asia/Tokyo」設定で返されるのはGMT-5時間くらい。位置的にはペルーとかの南米付近で間違いようがない...のだが敢えて間違う可能性があるとすると同じ「Ja」から始まる「Jamaica」と取り違えた...のだろうか...。こんな話が一般的だったらもっと世の中騒いでてもいいはずだが、軽く調べた限りこんな事で困ってる人はいないようだなぁ。なんかウチの環境だけ特殊なんだろうか。前のCentOS・/etc/localtimeと同様。このファイルの本来のコピーorシンボリックリンク元であるところの「/usr/share/zoneinfo/Asia/Tokyo」をどうやらPHPは参照しているらしい。コレを前回同様1つ前のソレと置き換えればOK。...しかしなんでこれだけこんな状況なんだか。update」でまとめて更新するとこの間違ったファイルに置き換わってしまうようだが。VM」とはふむ?中々に面白い試み。ここ最近PHPってあまり目立った動きがないかなーと思ってたけど色々やってるところはやってるのねぇ。「社会に対する影響度」で言えばこの人の方がよっぽどジョブズ氏よりも大きいハズだよなぁ...。CがなければObjective-Cもなかっただろうし。VMと同じ方式のクライアントサイドなのか。別にサーバサイドでも使えるのだろうけど。ことはやっぱJavascript並びにJAVA置き換えを狙ってるのかな。ウェブプログラミング」向けほぉっほぉぉ~う。公開、断片化でスケーラビリティ向上これはこれで一種かつ一流の自虐ギャグと言えるかもしれない一方、今後より増加するであろうタブレット型と携帯端末型との整合性を取る一助になるのは確か。分断化が激しいなら分断化が問題とならない開発環境を作ればいいじゃない。この場合のケーキは市民に平等に提供されるのでした。Railsのサポートを停止する方針...どーも最近Oracleが絡むと単なる競合潰しのよーな気がしてならない。2010年急成長したプログラミング言語はPython、オランダTIOBE調べむう、PHPがランクを落としている。ZendFrameworkとか導入してコーディングの流れをがらっと変えるとまたイメージ変わると思うんだが、というか変わった。最近はZendServerで導入も楽&プラットフォーム依存も縮小してきてるし。IS11CA話その2。困ったこともないでもない。「風ノ旅ビト」軽くプレイ感想。総アクセス数:1,072,694。