PHPではだめなのかーー?

うーむ。
開発環境も整ったところで、もりもりプログラムを書いていってるのですが、
それとは別に今後どういうプラットフォームを利用すべきか、というのも考えています。


今、ウチの会社でのメインの環境なのは PHP4+MySQL or Perl なんですよね。
PHP4のサポートは打ち切られる予定ですから、 PHP5に移行します。
現在移行しようとしているのは、PHP5 + MySQL + Symfony です。
これと同時に Eclipse PDT や XDebug、各種PEARライブラリや SVN等、一般的なツールを導入して、
開発効率を上げようと思っています。


しかし・・・


本当にPHPで大丈夫なのか、とチョット不安になってきました。
というのも最近こーゆー記事を読んだからです。
http://codezine.jp/a/article/aid/2233.aspx
>実行できる最も重要な対策は、PHPを使わないことです。
>腐った果物を導入する前に、以下に目を通してください。


とほほー、って感じのえらい言われよう。

たしかにPHPでプログラムを書く際に、セキュリティを考えて気をつけなければならない点は多いです。
その点を考えなくて良くなるのならば、他の言語に今から移行させるのもアリだとは思うんですが・・・


(ついでに言うと、たいていのPHP以外を利用している人はPHPを貶しますよね。)


まぁ優れた言語が他にある!というのならば試してみたいのですが、
片っ端から手をつけている時間もないし。
んで、『次、どうしようかなぁ』と考えているところです。


RubyPythonか、Java?うーん。
RubyOnRailsとか、やってみようかな。

ついに来た!ホーム初勝利!

この日曜日、徳島vs福岡の試合をポカスタで見てきました。
実は今期初観戦・・・見に行ってよかった3−1!


すげーあったかい観戦日和。
いつもはゴール裏で観戦してるんだけど、今回は芝生席でまったりしてました。


ただしお客さんは少なめ、まぁ仕方がない。
これから調子が上がっていけば、観客数もひっついてくるさ!


試合の方ですが、当初の自分の予想と違って福岡相手でもガッチリやれてましたね。
戦術はどうにもドゥンビア頼りな感じはしましたが・・・。
とにかく早めにシンプルに。サイドに張ったドゥンビアにロングボールを出して、
ボールキープ&サイド突破の後クロス→ゴールを狙う!


後半失点してからの怒涛の2連続得点はかなり燃えました!
やっぱり得点シーンはサッカーの醍醐味ですからね。
立ち上がってうおおおおおお!!!とか叫んでました。


西河選手のヘッドも高くてうまかったし、
玉乃選手のヘッドもいいタイミングでどんぴしゃだった。
でも、やっぱりドゥンビア抜きでは語れないですよ。
黒人選手特有のしなやかさと加速力、一人で福岡の守備を切り刻んでましたね。
おまけに最後には2人に囲まれながらゴール・・・
ほんとこの選手が外国人枠から溢れる柏ってどんなチームって感じですよ。


まぁ最後はさすがにへばってたみたいで、走らされる姿がちょっとかわいそうでした(*・x・)


とりあえず最初つまずいたものの、チームの雰囲気も良くなってきてるみたいだし、
これからますます勢いが付いてくるものと思います!
そして今期はJ2中位を目指してほしいっ!!(目標低すぎるか?)

Simplate のWindows版バイナリビルド

PHPで利用するテンプレートエンジンを探していて
SimplateというSmarty互換のテンプレートエンジンを見つけました。


特徴は、とりあえず速い、ということです。
ベンチによると、Smartyと比べてだいぶ速く動作するみたいですね。
Smartyが機能テンコ盛りなのに対して、機能を削って速く軽くというのがコンセプトのようです。
また、C++で実装されており、PHP Extentionとして動作します。


ということでインストールしてみおう!
と思ったのですが・・・
公式ページの、Windows版dllファイル、リンク切れなんですよね!
情報無いかな〜〜〜と思っていたのですが、見つけることができませんでした。


Simplateアーカイブには VC++で開くことができるプロジェクトファイルが入っています。
VCや、コンパイル周辺の知識はほとんど無いに近しい私ですが、
うーん、なんとかなるかなぁ、と思ってやってみたらなんとかなりました。


このメモを書く上で状況を整理してまとめてみたら、かなりシンプルな手順になりましたorz
これだったらわ、ざわざまとめなくても大丈夫だったかな〜


まず、PCに Microsoft VisualC++ 2008 ExpressEditionをインストールします。
無料で使えてウマウマですね。標準のインストールでいけると思います。(オプションあったかどうか忘れた・・・)


次にSimplateの最新ソースコードと、phpソースコードを取得しておきます。
んで、ソースを展開、ここでは展開先を c:\dev\src\ にしておきますね。
展開のイメージですが
  \dev
    \src
      \php-5.2.5
        \simplate-0.4.0-RC1
          \simplate-0.4.0
という具合で。
phpソースのフォルダの下に、simplateの解凍イメージを放り込んだ形ですね。


リンク段階で php5ts.lib が必要になります。
これ、phpを自前でビルドした場合はソースフォルダ内にあると思うんですが、
ソースコードを展開しただけの場合は、存在しません。
で、どっからとってくるかというと、phpのwin版バイナリに入ってます。
phpのインストールフォルダ内の \dev の中です。
ソレを \src\php-5.2.5\Release_TS\にコピーします。 Release_TSフォルダは作成してください。


それでは準備完了ですので、れっつビルド!
あ、VC++ツールバー内ドロップダウン [Debug] [Win32] を [Release] [Win32] に変更するのをお忘れなく。
変更できたら「ビルド」→「ソリューションのビルド」でOKです。
simplateのフォルダ内 releaseフォルダの中にビルドで生成されたファイルがあります。


あとは php_simplate.dll を phpのextension_dir にコピーして、
php.ini に extension = php_simplate.dll を追加、apache再起動すれば完了です。
phpinfo(); や php -i で simplateの項目が出ていれば成功ですね。
おつかれさまでした。


最近ようやっと EclipsePDTや XDebugを利用したリッチな開発環境に移行できました。
それまでは SakuraEditor で書いて、FFFTPでアップロードして、ページ開いて
エラーログや echo出力とにらめっこするような開発だったので、便利さを痛感しとります。
ただ、どばっと新しいことを取り入れたのでなかなか作業がすすまないorz

激安サーバー買ってみた

まえまえから気になってはいたのですが、
必ず必要なものでもないし電気代はかかるし、お金がもったいないワ。
という意識でスルーしていた・・・

HP ProLiant ML115 \14,750-送料無料 http://nttxstore.jp/_II_HP12312916

たびたびキャンペーンということで激安で売ってるサーバー機なんですが、
結局誘惑に負けて注文しちまいました。


メインPCのHDDの空き容量が少々圧迫されてきた
  ↓
どうせ追加するならLANにつなげるHDDにしよう
  ↓
安く売ってるけど、HDD1台でファイルサーバーとして使うにはちょっと怖い
(一回壊れると全て失う羽目になるし)
  ↓
RAID対応のLANHDDは高いなー
  ↓
開発用のLinux機も欲しかったし、どうせなら激安サーバー買って
ファイルサーバー兼いろいろサーバーにしてウマウマするか!
  ↓
ウマウマ


なんかね、どう考えても安すぎですよね。
どんだけ大量に一括購入して売りさばいてンだと。
自分でパーツ屋でそろえてたらどうやってもこの値段には収まりませんよ。


まぁここからメインPCとして使おうとすると、
またいろいろ追加しないといけないんですけどね。
調子に乗っていろいろパーツ追加してると結構なお値段に・・・


ちなみに今メインで使ってるのも激安サーバー機の草分け的存在
DELL SC420の後継機種である DELL PowerEdge SC440 なんですね。
こっちは後からメモリやグラフィックカード、DVDドライブ、サウンドカードを追加して
ついでにWindowsVistaまで買う必要があったから、想外に予算かかってしまいorz
PCI-E x16のカードそのまま挿せないので、スロット削ったりね。


HP Proliant ML115は元から x16付いてます。
今回はサーバー用途なんで使わないですけどね。
安くて、オンボードRAIDが付いてて、ECC無しメモリもサポートしてて、
BIOSでCPU電圧調整できて(オーバークロックじゃなくて、ダウンクロック用途ですね)
割と良い品なんではないでしょうか。
CPUはAMD系ですけどね。これがちょっとわかんないところ。
最近AMD系のシステム触ってないからなぁ・・・


デスクトップPCへの転用は注意すべき点があるようですね。
参考 http://wiki.nothing.sh/1361.html
・スタンバイが使えない
・メモリ大量に積むとPCI-Eグラフィックカードが障害
・普通のPCIも使えるが 3.3V専用
やっぱりサーバー機だから割り切った設計になってるのかね。
これだったらデスクトップPCへの転用は DELL SC440の方が合ってるのかな。


とりあえずモノが届いたら CentOSでも入れて
sambaで極フツーの家庭内ファイルサーバー
兼、Apache+MySQL+PHP5で、絵に描いたようなフツーの開発用サーバー
兼、VNC入れて会社から家のネットワークにアクセスのVNCサーバー
兼、VMWareも入れてもうすでに何がやりたいのかわからんサーバー
と夢がふくらみんぐですね!


ぁあ、願わくば飽きて無駄遣いにならないように・・・

小物おいとく場所がない・・・

デュアリス順調、はいいんですが。
この車の弱点のひとつ、小物おいとく場所がない!


このへん、ニッサンUKが主体で作られてるっていうのがひしひしと感じられます・・・
なんというか、日本車の、こー、至れり尽くせりというか、細かいところに気が利いてるとか、
そういうのがまったくありません、この車。
それゆえに切り詰めたカッコヨサがあるのかもしれませんけど。


とりあえず、収納は問題ですよ。
車にのって携帯置こうと思ってまず困る。
置く場所がいきなり中央のドリンクホルダーしかない。
ひじ置き下の収納に入れてしまうと必要なときにすぐ取れないし。


どこかに小さいポーチ的なものをくっつけようとおもったんですが、
そのスペースすらなかなか見つからない・・・
すぐに運転席から手が届いて、空いてる場所つーとステアリング左下、センターコンソールまでのスペースぐらい?


で、今日、家にあった黒のベルトポーチ
(?というのかどうか、ベルトに付けてケータイとか小物を入れとける、開口部に枠がついた小物入れ)
をそこに設置しようと、
フックと3Mの超強力・内装用両面テープ片手に席に着いたのですがー


ふと、席についてドリンクホルダーを見るとその上にデッドスペースが・・・
4WDの車種だと、駆動方式の切り替えスイッチが付いてる場所ですね。
うちのはFFなのでカバーがついてます。
ここ、どうなってんだろ・・・と思ってマイナスドライバーでコジコジすると、
切り替えスイッチのハーネスと思われるものと一緒にカバーがカパッと取れました。


覗き込んでみると・・・わりと広大なスペースが!!
深い感じだったので、ポーチを突っ込んでみると・・・Oh JustDoIt!


ちょうどいい感じに埋ってくれました。
長さもちょうどいい。底まで届かせても口の部分は外に出てる。
おまけに口の部分にはプラスチックの枠がついてるので、中に落ち込むこともない。
ちょっと脇にスキマがあるけど、なんか黒い素材まいとけば大丈夫そう。


というわけで、簡単なDIY・・・というには簡単すぎるか・・・
ポーチ突っ込んだだけだorz
でも、とりあえず小物入れつける、という問題は解決できました。
携帯・小銭・ガムぐらいならスポっと放り込めます。ワーイ

analogの検索文字列デコード

現在やっている仕事では、アクセスログ解析にanalogを利用しています。


サーバーにインストールしてapacheのログを解析し、レポートを出力するアレです。
かなり複雑なカスタマイズもできて良いのですが、
どうにもお客さんに不評なのが、検索語レポートなんですよね。
コレ、日本語についてはURLエンコードされた結果を集計するので
フツーの人が見ても何がナンやら分かりません。
手動でデコードフォームに放り込んで・・・なんてこと、ちょっとスマートではないです。


で、なんとかならんのか、と思って調べてみると・・・
やっぱりありますねぇ。
ネットってほんと、大体のことはどこかに記述がある。
問題はそれを調べきれるか、その時間があるか、ってことだけど。


それは置いておいて。


http://www.inwonder.net/~dayan/pukiwiki/index.php?analog%B4%D8%CF%A2
Graffiti様の「analogurldecode ベータ版その2」が使えそうです。
Perl5とJcode.pmがインストールされていれば利用できます。
Jcode.pmのインストールについてはぐぐって下さい。


で、こちらのスクリプトはファイルを指定して標準出力に吐き出すタイプですね。
おそらくウェブへの出力にもCGIとして使えるのでしょうが、
この辺の仕組み、いまだによく理解していなかったりします・・・orz
で、ちょっと書き換えて、GETの引数で渡されたファイル名の中身を出力するように変更しました。


## 頭のところ
use CGI;

## $data=join('',<>); のところ
$cgi = new CGI;
$fname = $cgi->param('f');
if(-f $fname){
open IN , "<$fname";
$data = join('', );
close IN;
} else {
print "file $fname can not find.\n";
exit;
}
## 一番下 foreach(@xml) の上
print "Content-type: text/html\n\n";


これを logview.cgiで保存。
アップロードして権限設定したのち、logview.cgi?f=xxxx0801.html で呼ぶと、
そのhtmlを読み込んで、検索文字列をデコードして出力してくれます。


コレで解決ヤッホイ!と思ったのですが、別サーバーに導入してみると動かない・・・
error.logには
unknown encoding at (eval 1) line 135
と記録されてる・・・なにやらヨクワカランが、エンコードの周辺がおかしいらしい。


しかたがないので、またぐぐるさんにお任せ。
するとやっぱり在った!すばらしいです。
こういう、つまづきやメモ書き、tipsなどを書いて公開されている方には、本当に頭が下がります。
確実にその1エントリを必要とする人は居ます!がんばってください!


http://ameblo.jp/flyby/
すとぶろ様の2008-02-26の記事ですね。
> 実行時に「unknown encoding at (eval 1) line 135」のエラーが出る場合
というのが在ります。


この記事を参考に修正して・・・完成!


しかし、あれだね。
導入の手間、カスタマイズの手間、集計時のリソース、管理の手間、便利さ、とか考えると、
GoogleAnalytics導入すんのが一番いいような気がしてくるね。
考えたら負けだね。
でも次のプロジェクトからは真剣に考えたいと思います。
携帯対応してないのがネックなんですよね、GoogleAnalyticsは。
最近は対応したのかな。以前評価して以来触ってないんだけど。


また調べてみよ。

デュアリス燃費

ありゃ。
携帯から写真添付で書き込みメール送ったんだけど、書き込めてない・・・


ちょうど昨日、給油ランプがペカーっと点灯したので給油してきました。
前回給油時に0にしておいた距離メーターは現在686km。
今回の給油量は 56L。
んで、満タン法による平均燃費は・・・

 12.25km/L

でした!
以前乗っていたカローラフィールダーやワゴンRは14〜15あたりだったので多少悪化しましたが、
車のサイズを考えれば「まぁこんなもんか」ってところでしょうか。
むしろクラス的には良いほうかな・・・?