【tips】 PEAR::Cache_Liteのディレクトリ構造を深くする

レンタルサーバではmemcachedなどを使用することが出来ないので、何らかのファイルキャッシュを使うことが多いと思うんですが、いくつかのサービスではPEAR::Cache_Liteを導入しています。 Cache_Lite 規模が大きくなるとI/Oがネックになるので、ファイルキャッシュはいずれ問題になってくるのですが、小規模なサービスであればこれで十分。 で、導入自体は極めて簡単なんですけど、気になったのはディレクトリ。UNIX系サーバでは1ディレクトリにおけるファイル数は10,000くらいなので、サービスを継続しているといずれキャッシュが作れなくなってしまう。でもCache_Liteの設定(インスタンス生成時にオプションを配列で渡す)ではディレクトリを渡すだけ。今は大丈夫だけど念のためディレクトリを構造化したいな… と思ったら、ちゃんとその設定がありました。 マニュアルは細かく読まないとダメだね。

続きを読む

PDO::FETCH_CLASSとgetter/setterのマジックメソッド

「食わず嫌い」とはアレなものでして、長いことPDOでfetchといえばFETCH_ASSOCと思ってたんですが、なんだよ、FETCH_CLASS超便利じゃん、と言うことに気付いたのでいくつか試行錯誤してみるなど。 まぁ便利さ言うならちゃんとO/Rマッパー使えこの野郎という話ですけど、設定が面倒なときもあってついあれなので…FETCH_CLASSとマジックメソッド使ってみたかった的なアレでひとつ。

続きを読む

未定義の特殊文字の実体参照が含まれるXMLファイルを無理矢理パースする

RSSを始めとするXMLで使用できるる特殊文字の実体参照は、以下の5つだけです。 (何の定義も与えられていない場合)

  • &lt; → <
  • &gt; → >
  • &amp; → &
  • &apos; → '
  • &quot; → "
これ以外の特殊文字の実体参照(例えば&times → &timesや、∞ → &infin;)が含まれている場合、パース時にパースエラーとなって読み込めないことがあります。ブラウザで表示しようとしてもそこで途切れてしまったり、返り値がfalseになったり(例えばSimpleXML)。動作としてはそれで正しいのですが、
  1. RSSを配信しているのが自分ではない
  2. 何らかの処理のために無理矢理読み込んでパースしたい
と言うときがあります。 本来であれば、パース処理の方に手を加えるべきなのでしょうが、面倒なので次のような過程を踏んでみました。

続きを読む

【メモ】 PEAR::Authを使ったサービスを検討中。

自信が無くてユーザー登録を使ったシステムの構築には二の足を踏んでいたのだけど、PEAR::Authを使えば比較的楽に構築できそうなので少し勉強して、作成中。作ろうかと思って結局止めたサービス(結果的にはPEAR::Authの試験実装になった)では、「新規登録→仮登録・メール送信→本登録」の流れや、ログイン・ログアウトのシステムまで構築できたので特に問題ないと思われ。 作ろうとしているサービスがあまりに小粒で、フレームワークを入れるほどではないと個人的には思っているのだけど、かといってなんもないのも微妙なので、フレームワークの中かのごく一部だけをかじったようなもの(つまりオレオレフレームワーク)をでっち上げてコーディング中(諦めてCakePHPでも入れなさいよという話ではある)。 試験実装の続きと言うことで、仕様が右往左往しており、いつになったら公開できるか全然未定で、そう言う意味で昨今のスピーディな開発の流れから完全に乖離したやるせない状況なのだけど(もしかしたら既存サービスのブラッシュアップになるかも)、まぁ趣味であって業務じゃないから良いかなという方向で。

続きを読む

【PHP】PEAR::Services_Hatena_Bookmarkを使う

全然気づいてなかったけど、PEAR::Services_Hatenaっていうライブラリがあるんですね。 Services_Hatena しかもPEARに収録されたのは2006年のこと。 今までWSSEとか自分で実装してましたが、これ使えばそういう煩雑な部分全部省略できますね。 なんというか、まったくもって迂闊でした。 というわけで、この中のServices_Hatena_Bookmarkを使ってブックマークのポストその他をしてみるテスト。

続きを読む