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. 何らかの処理のために無理矢理読み込んでパースしたい
と言うときがあります。 本来であれば、パース処理の方に手を加えるべきなのでしょうが、面倒なので次のような過程を踏んでみました。

続きを読む

【メモ】さくらインターネットでSymfonyを使う

フレームワークを使わない管理から、俺俺フレームワークもどきに移行しかけていたのですが、そもそもフレームワークを設計する技量など無く便利な部分だけを抜き書きしただけ(autoload周りとか)だったので、これ以上カオスな状態にするのは止めようとフレームワーク導入を決定。導入するのは何にするかほんの少し考えたけど、CakePHPとZendFrameworkもよぎりましたが、CakePHPは複数プロジェクトを管理できないっぽかったし、ZendFrameworkは全然わかんないし、そもそもどれも解ってるとは言い難いので、仕事で使ってて少しはなじみがあるSymfonyを入れてみました(ただし、入れたのは1.4系。仕事で使ってるのは1.0系)。 インストールはここを参考にして、PEAR経由で。 さくらインターネットでsymfonyをインストール | ueblog

続きを読む

O/Rマッパーを覚えた

なんかもう、プログラムにさわり始めて何年よ、と思うと、毎度毎度「常識」にぶちあたるのが悲しいやら情けないやらなのだけど、それでも、「誰でも意志があれば学べて誰にでも公平に存在するのがプログラミング」とも感じるし、半ばやけくそ気味ではあるけれども、少し前向きには考えられる自分もいたりする。 やはり自分に足りないものは「流儀の習得」で、それはテストケースを殆ど書かない、テストプログラムも自己流のシステム化されてない作りなんてとこでまだ残ってて、きちんと学ぶべきだなぁと思いながら日々の業務に流されてるわけで、その辺ジレンマって言うかなんというか。少しは改善しつつあるのだけど。 以前書いたコードをいつか恥ずかしく思わなくなったりすることがあるのかしら?とか考えるのだけど、現在の無知ぶりからすると、例えそれがあったとしても遠い遠い未来なような気がするなぁ。コードや書籍を多く読んで身につけていくしかないね。(幸いコード読むのは楽しくて苦にならない) 情けなくはあるけど、常に余地があるのはちょっとだけ嬉しい。 それがプログラミングかも。なんつて。おこがましいけど。

続きを読む

【PHP】PEAR::Services_Hatena_Bookmarkを使う

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

続きを読む

【メモ】Smarty2 → 3のハマリどころ

Smarty3の最新β(β8)が出たのが3/5。 今後どうなっていくのか、正式版はいつ頃リリースなのかその辺気になるところですが、 使ってみている限りで特に不具合はない(このサイトはMobavleType+PHP5+Smarty3で構築されています)ので、 それほど大きな影響がない、あってもなんとかなるくらいの環境であれば移行してみても良いかも知れません。 (今から脆弱性が発見される可能性も無くはないですけど) Smarty3になると何が変わるかはSmarty3に同梱の「SMARTY2_BC_NOTES」ファイルに記載されています。 日本語訳はこちらにあります。 Smarty2.0からSmarty3.0への変更点 | スイナシア 大きな変更は、PHP5以上で動作というところだと思いますが、他にもメソッドチェーンをサポートしていたり、色々と地味に便利になっているような気がします。 で、Smartyのインストールと言っても基本的にはコピーするだけなので簡単なのですが、 実際に移行してみるといくつかテンプレートのハマリ点があったのでメモしておきます。 参考にしていただければ。

続きを読む

長いタイトルを付けちゃうのは職業病なんだろうか

さっき、今度ラウンジで出演させていただくイベントのオーガナイザー宛にプロフィールとアー写を送ったのだけど、 添付した圧縮ファイルの名前が、

{イベント名}_{年月}_{内容}.zip
っていう構成になってて、自分としてはなるべくわかりやすくと思って付けたんだけど、 送信する前に既に気がついてたけど、 一般的に考えてどう考えても長い(苦笑) 普通は単に「プロフィール.zip」とかにするんだろうし、それが一般的な「合理性」なんだろうけど、 そういうのはコード書くときの「合理性」とはちょっと違って、 あとで見返してパッと見てわかんないと困るだろとか思ってこんな命名になるわけで、 しかしよくよく考えてみるとプロフのファイルなんかコピーして解凍したら振り返らないし二度と触らないわけだから、 そこまでするのはさすが余計というか要するに「YAGNI」であるわけなんだけど、 まぁいいかと思って送信。 職業病って言うか多分に個人的なアレもあるんだけども、こういうのとかメールの件名とか、どうもねー。 「あとで見てわかんないと困るじゃん」とか思うんだよね。 実際は大して困らないんだけども。

続きを読む