php4だけど、php5の関数を使いたい。php4.2だけどphp4.3の関数を使いたい。

Written by uechoco 8月 31
php4だけど、php5の関数を使いたい。php4.2だけどphp4.3の関数を使いたい。 はコメントを受け付けていません。
この記事を読む時間:123くらい

php4の環境でphp5の関数を使いたい、php4.2だけどphp4.3の関数を使いたい、
あるいはそれらの関数と同じ機能を実装したいとき、PEAR::PHP_Compatクラスが使えます。

PHP_Compat により、古いバージョンの PHP には存在しない機能(関数や定数) が得られます。

PHP_Compat が提供する関数は、対応する PHP ネイティブの関数と互換性があるように 設計されています。つまり、ネイティブの関数と同じシグネチャを持ち、同じ値を返し、同じエラーを返します。 すべての関数は、正確性の保障のため、ユニットテストが行われています。

『PEAR :: Manual :: PHP_Compat(日本語マニュアル)』より

ソースコードを参照すれば、このクラスに頼らずに自前の実装をすることができるのではないでしょうか。

PEAR :: Package :: PHP_Compat
http://pear.php.net/package/PHP_Compat/

PEAR :: Manual :: PHP_Compat(日本語マニュアル)
http://pear.php.net/manual/ja/package.php.php-compat.php

[php][PEAR]DB_DataObject::escape

Written by uechoco 8月 30
[php][PEAR]DB_DataObject::escape はコメントを受け付けていません。
この記事を読む時間:58くらい

かなり勘違いしてた。

DB_DataObjectのインスタンス$dbを作って、$db->whereAddを呼び出すとき、挿入する変数が文字列だったら何でもかんでも$db->escape()を呼び出していたんだけど、

PEAR :: Manual :: ->escape()
http://pear.php.net/manual/ja/package.database.db-dataobject.db-dataobject.escape.php

今日たまたまマニュアルを見たら、「Like クエリで使用する文字列をエスケープする」と。ようは、「%」なり「_」をエスケープする模様。

んーマニュアルをよく読んでいない私も悪いが、このメソッド名も悪い。と愚痴りたい。

いや、そもそもDB_DataObjectなる古の産物を使う私が悪いか?(笑

自分にぴったりのメモ帳を携帯する

Written by uechoco 8月 29
自分にぴったりのメモ帳を携帯する はコメントを受け付けていません。
この記事を読む時間:36くらい

メモ帳を携帯することは当然とも言える行為だが、どうも今のメモ帳は自分に合っていないようで、使い勝手に少し不満。おそらくメモ帳が悪いのではなく、使い方が悪いだけ。ちなみに今使っているのはモールスキンのプレーン・ノートブックのポケットサイズ。メモ帳が悪いのではない。

自分の要望としては、

  1. 思いついたときに自由に何でも書き込めるものが欲しい
  2. 過去のアイデアで、また実践(実行)していないものを貯めておきたい(できれば整理した形で)
  3. 昔のメモに新しく付け足して書き込みたい。
  4. 多くても携帯する個数は2つまで。かさばらないのがベスト

といったところ。過去のアイデアを貯めておきたいというのは、突然振り返りたくなることがあるからだ。

例えば、普通のメモ帳1冊をもちあるくと、どうにも相性が悪いようだ。自由に書きこめるという要望は、前から順番に白紙を使っていけば問題ない。ところが、過去のアイデアを非常に参照しにくい。どうでもいいようなメモが途中にたくさん入っているからだ。

メモ帳1冊のみで解決しようとするならば、アイデアを書いたページの淵を蛍光ペンで色付けしておけばいいのかもしれない。そうすると今度は、昔のメモに付け足すという要望がちょっと厳しい。そのページが一杯になってしまうと、次に書き込めるのはメモ帳の書き込み順の新しいところとなってしまう。つまり、アイデアがばらけてしまうのだ。

これを解決するのに思い浮かんだのは2つある。1つはシステム手帳のようなリング式だ。ルーズリーフ感覚に入れたり外したりでき、順番を変えることができる。これは自分の要望をすべて満たしている・・・気がするのだが、どうもあの大きなリングが気に入らない。厚みがでてしまう。この厚みさえ解決できればいいのだが・・・。

もう1つの策はロディアだ。つまり、切り取れるメモ帳だ。これもやっぱり切り取ることで、順番を変えることができるということだ。しかしロディアの場合、切り取ったメモをどうやって残していくかが問題となる。

切り取ったメモを保存するものを探していたら、ネットのブログでみつけた。

So-net blog:シリアル・ポップ2:モレスキン・メモポケッツでGTD
http://blog.so-net.ne.jp/akizukid/2006-07-07

So-net blog:STILLNESS IN TIME:モールスキンとロディア
http://blog.so-net.ne.jp/stillness/2005-03-28

モールスキンのメモポケッツにロディアの切れ端を入れるというもの。これは考えつかなかった。ちなみにメモポケッツのポケット数は6つ。ジャンルわけ+INBOXで分ければなかなかいいかもしれない。

もちろん、実際使ってみないと、ほんとにいいのかどうかわからないけど、試してみる価値はあるかな。ちとコストは高めだけど(笑

phpフレームワークの本が増えてきた。

Written by uechoco 8月 29
phpフレームワークの本が増えてきた。 はコメントを受け付けていません。
この記事を読む時間:454くらい

最近になって、phpフレームワークを紹介する書籍が増えてきました。もちろんムック本などでは以前から紹介されていますが、パソコン書籍として出版されたのは最近のことです。

個人的にはCakePHPをいい加減にやりたい(し、CakeUploaderのブログも再会させたい)と思っているので、そこらへんを中心に書籍紹介。

  1. Web2.0ビギナーズバイブル
  2. この本は「HTMLとは?」から「各LL(Lightweight Language)でWeb2.0的サイトの実際の作り方」まで初歩から学習できる本です。HTML、XML、CSS、Webサーバ(Apache管理)、データベース(PostgreSQL、MySQL、SQLite)、Ajax、Perl、PHP、CakePHP、Ruby、Ruby on Rails、Python、TurboGearsと、この本で学べる知識は膨大です。
    個々のWeb言語のプログラマがフレームワークの勉強に用いるのもよし、少しPCに詳しいITビジネスマンがWeb2.0の本質を学ぶのに用いるのもよし、まさにバイブルと言えるのではないでしょうか?

  3. PHPによるJavaScriptを書かないAjax
  4. この本は、Ajaxの入門から、Rails系PHPフレームワークによる実践までを扱っています。Ajax入門ではXMLHttpRequestの直叩きでDOMや非同期通信のことを学び、続いてAjaxを活用するためのJavaScriptのライブラリとしてPrototypeとscript.aculo.usを分厚く解説、PHPでAjaxを学ぶところでは、PEAR::HTML_AJAXライブラリとxajaxライブラリを軽くさらっています。最後にフレームワークでの実践編として、CakePHPを約100ページとsymfonyを70ページに渡って書かれています。
    この本のいいところは、HTML_AJAX vs xajax、CakePHP vs symfony、それぞれ同じサンプルの作り方を載せているところです。異なるライブラリで全く同じもの作っているので、読み手はソースコードを見比べて「こっちのライブラリならここの書き方が違うのか」というような検証ができます。
    また、この本の著者「佐久嶋ひろみ」さんは、「PHPの薬箱―エラー・トラブル回避のテクニックとセキュリティ対策」の作者でもあります。

  5. [LLフレームワークBooks # 2] Ethna×PHP
  6. この本は、Mojavi系MVCフレームワークで、GREEで使われていることで有名なPHPフレームワークEthnaの解説本です。1つのPHPフレームワークのみを扱った解説本はこれが初ではないでしょうか?(間違ってたらごめんなさい。) この手の本では珍しいA5サイズのちっちゃな本で、しかも200ページとあまり厚くなく、PCデスクに常備してもかさばらない大きさです。
    この本では、PHPの簡単な説明やインストールの仕方まで載っている親切設計です。その後はEthnaの導入、Ethnaの仕組み、AjaxなToDoソフトを作る実践サンプルという具合です。Ethna関係の記述は130ページ分くらいあります。諸所のphp達人たちがやみつきになっているEthnaをはじめるには、とっておきの1冊です。

  7. PHPフレームワーク完全マスター ―PHP5.2.3PHP4.4.7対応
  8. 2007年8月27日に発売(この記事の2日前!!)という新刊です。私はまだ中身を見てませんが、早くもちょっと話題なのかな?著者は先ほども登場した「佐久嶋 ひろみ」さん。最近精力的に執筆していらっしゃるのかな?
    一番のポイントは、ついにZend Frameworkの解説本が出たというところ。目次を見てみると、ZFのMVCを中心に主要なコンポーネントの解説をしている模様。
    そしてお次はCakePHP。個人的にはFormヘルパーやAjaxヘルパーの解説があるのが気になります。DB関係の解説もありますね。
    最後はSymfony。こちらも各種設定の方法や、ヘルパーの解説が期待できそうです。

ちなみに、こんだけ解説していますが、私は中身を読んでいません(笑)。一応全部買った(or買うつもりな)ので、パラ見でこんな解説書いてます。あと、Amazonアフィリの使い方を学ぶためもか。

今年末のphp4サポート打ち切りをきっかけに、php5のみ対応のZend Frameworkとsymfonyの勢力が拡大しそうな気がします。また、MapleやAkelosやPieceなどもがんばっているらしいです。phpフレームワークの地位争奪戦から目が離せませんね。

JavaScriptの高速化

Written by uechoco 8月 28
JavaScriptの高速化 はコメントを受け付けていません。
この記事を読む時間:123くらい

JavaScriptはスクリプト言語(インタプリタ言語)なので書き方1つでかなりの処理速度の差が出るようだ。

IT戦記 – Shibuya.js Technical Talk #1 を終えて。
http://d.hatena.ne.jp/amachang/20060417/1145236908

こちらのブログから資料としてリンクされているJavaScriptの高速化(ppt)というスライドを見ると、JavaScriptの高速化のテクニックがいくつか載っている。スライドの終盤には高速化と可読性(保守性)はトレードオフとも書いてあるので、やりすぎには注意ということ。
もちろん、簡単に改善できそうなものもある。以下はその例。

  1. for (var i = 0; i <= arr.length; i++) {
  2. //処理
  3. }

この配列の要素数参照を以下のように変数経由で呼び出す。

  1. var len = arr.length;
  2. for (var i = 0; i <= len; i++) {
  3. //処理
  4. }

これだけでも意外と速くなる。

Web2.0には欠かせないJavaScriptのテクニックをもう一度見直してみるのもいいかもしれない。