【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のインストールと言っても基本的にはコピーするだけなので簡単なのですが、 実際に移行してみるといくつかテンプレートのハマリ点があったのでメモしておきます。 参考にしていただければ。

続きを読む

【メモ】フレームの幅を変更するJavaScript

今やフレームをページ全体に使用したサイトは殆ど見かけなくなりましたが、 使用しているRSSリーダー「フレッシュリーダー」はフレームで構成されています。 で、メニューフレームが若干狭いために未読件数が増えてくるとこんな感じにボタンがずれてしまうのですが。 「フレッシュリーダー」は殆どが暗号化されていてカスタマイズできないので調整は不可能です。 じゃあどうするか。 Greasemonkeyでやればいいんじゃね? ということでやってみました。

続きを読む

【メモ】DTO、DAO、シングルトン

[ThinkIT] 第5回:PHP5のオブジェクト指向 (1/3) 自分がプログラマとしてどれだけダメかよーく解った。 読めばすぐに解るし、納得できるし、実際のコードも似たような構成になってはいるものの、体系立てて解ってなかった。特に、DTOの扱いとシングルトンパターンの場合のインスタンスの活用について。君が今まで「DTO」と呼びたがってたそのクラス、それただの処理混在のクラスだから。ちっともカプセル化してないから。君が作ってたシングルトンクラス、newしなくて便利以上の用途無いから。何でもかんでもstaticにすればいいってもんじゃないから。 そういうのただの俺俺ルールだから。 今までぼんやりとしか解ってなかった(DAOってDBにアクセスするんでしょとかDTOってデータをまとめて取ってくるんでしょとか)のがサンプルコード読んで目から鱗がボロボロ落ちた。ダメだオレ。何年遅れよ。いまだ似非プログラマから脱出できてない。ちきしょう。 とはいえ悔やんでも仕方がないし、少しずつリファクタリング(もしくは置き換え)していこう。今日書くコードから始める。 その他、読んだもの。 Singleton – GoFデザインパターン~STEP1:まずはここから – PHPによるデザインパターン入門 – Do You PHP? DAOパターンですっきりコーディング!(1/4) - @IT PHP5でデザインパターン - Singletonパターン – Lism.in * blog – nekoya (id:studio-m)

続きを読む

【メモ】prototype.jsのeachでcontinue

ググると以下を使うと良いと書いてあるのだけど、

throw $continue;
1.6では動かない。 仕様を読むと、
The usage of $continue is deprecated. This feature will not be available in releases after Prototype 1.5 in favor of speed. Instead–since your blocks are in fact functions–simply issue a return statement. This will skip the rest of the block, jumping to the next iteration.
 
とあって、つまりは、1.5以降ではサポートされてないとのこと。 代わりに、
return;
とやれば、問題なく動作するよとのこと。なるほどね。 こんな感じか。
var result = [];
$R(1,10).each(function(n) {
if (0 == n % 2)
return;
result.push(n);
});
// result -> [1, 3, 5, 7, 9]
breakの方はなんか特になさそう。 ていうかまぁ、いつまでprototype.js使うんだろね、という話ではあるんだけども…

続きを読む