1. トップページ

CakePHP Serialize Behavior

2011年09月12日

CakePHP Serialize Behavior - Download

CakePHPで独自のビヘイビアを作成したので公開して見たいと思います。今回作成したSerialize Behaviorはデータベースからのデータをシリアライズやアンシリアライズしたりすることが出来ます。

具体的には以下のようなことが可能です。

  • データをデータベースへ送信するときにシリアライズする。
  • データをデータベースから引き出すときアンシリアライズする。
  • データを編集するためのコールバック関数を呼ぶことが出来る。

どれも機能もフィールドごとにシリアライズしたりアンシリアライズしたりコールバック関数を呼んだりできます。シリアライズ、アンシリアライズは現在のところPHP仕様のとJSONの二つに対応しています。

Serialize Behaviorの使用例としては以下のようなコードです。


class Example extends AppModel {
    // barフィールドがあればPHPのシリアライズ、アンシリアライズが処理を行われる。
    var $actsAs = array('Serialize' => array('bar', 'foo' => array('transform', 5)));

    function transform($data, $serialize, $int) {
         // fooフィールドが存在すればこのメソッドが呼ばれる。
         // $serializeがtrueの場合はシリアライズをfalseの場合はアンシリアライズの処理が望まれる。
         // 引数の5は$intに格納されている。
         return $data;
    }
}

以上のようなコードだとデータを保存するときも、引き出すときの両方でtransformメソッドが呼ばれます。しかしながら保存するときだけコールバック関数を呼び出したいときもあるかと思われます。たとえばデータを保存するときパスワードの部分だけハッシュ化したいということなどもあるかもしれません。その場合以下のような記述でOKです。


class Example extends AppModel {
    var $actsAs = array('Serialize' => array('password' => array('serialize' => 'toHash')));

    function toHash($string, $serialize) {
        App::import('Core', 'Security');

        return Security::hash($string);
    }
}

基本的な使い方は以上です。分からないところがあればコメント等をください。

CakePHP Serialize Behaviorはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。

タグ: PHP

CakePHP Typography Helper

2011年09月09日

CakePHP Typography Helper 1.0.1 - Download

CakePHP Typography Helper 1.0 - Download

CakePHPでTypography Helperをコントロールするヘルパーを作成してみました。以下のような機能が使用できます。

  • 改行をp要素やbr要素に変換します。
  • 連続するハイフンダッシュをmdash(—)に変換します。
  • 数学記号に変換します。たとえば100x100を100×100に変換されます。
  • h抜きのURLを正規化します。
  • (C)や(R)をc(©)やR(®)に変換します。

詳細なドキュメントはダウンロードファイル内に同梱されていますので、其方をご覧になってください。

また使用に関しては自己責任でご使用ください。製造者責任は生じないものとします。

動作環境は詳しく調べてないので分からないのですが、PHP5以上で問題なく動作する模様です。

CakePHP Typography Helperはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。

タグ: PHP

メイプルストーリーでのショタとロリについて

2011年09月09日

最近の事なのだがショタコンの気持ちがほんの少しだけ分かった気がする。たしかに本当に美しい少年などを見たりすると少しばかり心がぐらつく。本当のショタコンの方々の気持ちもこのようなものなのだろうか。

ところでメイプルストーリーは低年齢のプレイヤーが多いとされているが、それらのプレイヤーを狙ってロリコンやショタコンも多いのではないかと勝手に推測。

仮にそうだとすると幼いプレイヤーの方々には気をつけてほしい限りです。別にロリコンやショタコンが悪いと言っているのでは決して無いが、幼い身体を獲物を捕らえる目つきの如く狙っているプレイヤーが一部に存在するのも事実だと思う。

それと余談だが相手が未成年だと知りながら、裸の写真を要求するとおまわりさんがやってくるらしいですよ。

タグ: メイプルストーリー ショタコン

ハツカレと砂時計

2011年09月02日

ハツカレという漫画は初々しく、そしてそれ故に物語のスピードが遅いためせっかちな人にはとても薦められない漫画なのだが、意外な使い道があった。

現在ハツカレとともに砂時計も読んでいるのだが、正直言うと辛い。まさか砂時計という漫画を本気になって読むとこんなにも辛いとは知らなかった。気疲れするし、頭痛もする。原因としてはストーリーが重い。漫画の登場人物の行動や発言を考える場合少なからずその人物に感情移入しないと考察できないのだが、ストーリーが重いおかげで考えるのも辛い。

最近の考察はなぜ杏は大悟に別れを告げたのか、美和子の自殺が杏に実際問題どういう影響があったのか、杏は自殺未遂の際母親の自殺について何を悟ったのかというこの三点。どれも砂時計では重要なポイントで直ぐには答えが出ないだろう。

そしてこれらの問題に自分なりの答えを出すため読んでいるのだが、行き詰って頭が痛くなったらハツカレを読むといいことが分かった。ハツカレもそれ単体読んでいたときはストーリーの軽重のことは考えなかったのだが、砂時計のストーリーと比較して見るとハツカレのストーリーは軽い。勿論チロやハシモト達は一生懸命でそして必死なのだが、砂時計と比べるとどうしても軽く見えてしまう。

しかしその軽いストーリーが砂時計で痛めた頭を清涼剤のごとくクールダウンしてくれる。

PHP HTTP Response Header Library

2011年09月02日

PHP HTTP Response Header Library - Download

PHPでHTTP Response Headerをコントロールするライブラリを作成してみました。

304 Not Modifiedや412 Precondition Failedや範囲リクエストなどにも対応しています。

詳細なドキュメントはダウンロードファイル内に同梱されていますので、其方をご覧になってください。

また使用に関しては自己責任でご使用ください。製造者責任は生じないものとします。

動作環境は詳しく調べてないので分からないのですが、PHP5以上で問題なく動作する模様です。

PHP HTTP Response Header Libraryはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。

タグ: PHP

忍者ホームページの増量申請

2011年08月31日

焼きたて!!ジャぱんレシピはホスティングサービスに忍者ホームページを利用しているのだが、容量が限界なので08月26日に増量申請をしてその可否が返ってきた。サーバー管理者のメールによると100MBの増量をしてくれるとのこと。

一部の掲示板では忍者ホームページは増量申請が厳しすぎて実質100MBと揶揄されていたので、増量申請はしたものが拒否されるのものとばかり思っていた。それが以外にもあっさりと許可されたので驚きとともに、少しほっとしている。(しかし今回は運が良かっただけかも知れないが。)

とりあえずこれで当分の間は容量のの事は気にせずに新たなコンテンツ(レシピ等)を追加していく事が出来そう。

Short Namespace Vocabulary(名前空間を短くする語彙)

2011年08月31日

久々に新たなWebサイトを作成しました。Short Namespace Vocabulary(以下SNV)はRDF等での名前空間を短く出来るボキャブラリーです。

自分はRDFが好きでRDF/XMLRDFaTurtle等様々なフォーマットでRDFを書くことも少なくないのだが、どんなフォーマットで書く場合も共通する不満がありました。それはフロパティやクラスなどで語彙を使用するたびに語彙群の識別URIを名前空間で定義しなければならず、複数の語彙群を使用すると名前空間が直ぐに肥大化してしまう点です。

たとえばDublin CoreとFOAFの語彙を使用する場合夫々別に名前空間で定義しなければなりません。これに加えてRDFSとOWLとXHTML Vocabを定義しただけで最低でも名前空間を五つも占領します。これらの問題の原因の一つとしてどのフォーマットであれプロパティやクラス等のたった一つの語彙を使用するだけでも名前空間を追加しなければなりません。

名前空間を追加しなければ使用できないというのは新たなプロパティやクラスの使用を躊躇わせます。RDF/XMLのような重量系で元々ファイルサイズが大きくなりがちなフォーマットならばまだ良いかもしれませんが、XHTMLとしての要素を兼ね備えているRDFaや軽量でRDFを短く記述できるTurtle等で名前空間を幾つも並べるのは馴染みません。そしてどのフォーマットであれ可読性が低下する事も考えられます。

もし同じRDFを今よりも短く記述で切るならば其の方がスマートだとは思いませんか。そしてこのような問題を解決するために作成したのがSNVです。SNVの識別URIであるhttp://purl.org/meta/snv/ns/を名前空間で定義すれば40近くの語彙群を使用することが出来ます。勿論使用できる語彙群はDublin CoreFOAFOWLなどメジャーなものも含まれます。また語彙群はこれからも追加していく予定です。

具体的にどのように名前空間の記述を省略できるかはSNVのホームページに書かれていますのでそちらを見てください。

また語彙の同一を定義するのにはowl:sameAsを使用しています。

ハツカレ3巻までの感想

2011年08月29日

この間購入したハツカレ全10巻の内3巻まで読み終わったので感想を。

基本的に仄々とした恋愛漫画だと思う。最初のころはちひろとハシモト初々しくそれ故に二人がギクシャクしてしまう事もある。

1巻の終わりごろからイブシが登場しちひろを巡って三角関係に、2巻の初め頃からちゃーちゃんがイブシに恋心を抱くようになり四画関係へと突入する。その後ハシモトが通っている東阪高校文化祭など色々あるが、このままの関係のまま3巻が終了する。

この漫画の特色のひとつとして時間の流れが非常に遅いのではないかと思う。文化祭へ行くというのは他の漫画でも別に珍しいことではなく話としては精精1話〜2話で引き伸ばしても3話位だと思われるのだが、なんとハツカレは4話掛けて文化祭のことが書かれている。そのため2巻の半分以上は文化祭の話となっている。正直な所ここまで時間の流れが遅く一日が長い漫画を見たのは初めてだと思う。

それともう一つ注目しておきたいのが、突如としてちゃーちゃんが大きく成長すること。今までイブシとじゃれ合ったり、喧嘩したりしていたのだが3巻STEP.16から精神面で大きく成長した姿が垣間見える。特に3巻のSTEP.16、STEP.17、STEP.18はちゃーちゃんがメインの回と言っても過言ではないと思う。ここでのちゃーちゃんは愛に満ちていて、達観しており、非常に寛容的なように見える。人格者と言っても語弊はないように思える。

また一話毎にそれぞれテーマがあるように思える。たとえばSTEP.11では独占欲、STEP.15では笑顔、STEP.19とSTEP.20では嫉妬心等々興味深いテーマが並んでいる。

またこの漫画は比喩の表現が巧みなため、重要な部分を何事も無かった様に読み飛ばしてしまっている可能性もあると思う。これらは何度か読み直さないと分からない部分も結構あると思う。

CakePHP用AtomHelperClass

2011年08月29日

Atom Helper Class - Download

CakePHPにはRssHelperは存在するのに、何故かAtomHelperは無いです。

個人的には曖昧さが多いRSS2.0よりも厳密に定義されたAtomのほうが好きなので、自分で一からコードを書いてCakePHP用のAtomHelperを作成してみました。Atomで定義されている要素には全て対応しています。

詳細なドキュメントはダウンロードファイル内に同梱されていますので、其方をご覧になってください。

動作環境は詳しく調べてないので分からないのですが、PHP5以上で問題なく動作する模様です。

クリエイティブ・コモンズ・ライセンス Atom Helper Classはクリエイティブ・コモンズ 表示 3.0 非移植 ライセンスの下に提供されています。

PHP UUID Library

2011年08月29日

PHP UUID Library - Download

PHPでUUIDを生成するライブラリを作成して見ました。とは言っても自分が一からコードを書いたわけではなくてhttp://php.net/uniqid#94959に書かれていたコードをCut&Pasteしたのをファイルに纏めたのみ。

他に行った事といえばライブラリの説明を英語から日本語に翻訳したこと位。正直エスパー翻訳なので訳文の正確性には自信が無いです。

このライブラリーの便利なところは任意のUUIDと任意の文字列を引数として渡すと新たなUUIDを生成してくるということです。UUID::v3()とUUID::v5()は引数となるUUIDと文字列が同じならば返却されるUUIDは常に同じものになります。引数が異なれば全く別のUUIDが返されます。UUID::v4()は完全にランダムなUUIDを生成します。

より詳細なドキュメントはダウンロードファイル内に同梱されていますので、其方をご覧になってください。

動作環境は詳しく調べてないので分からないのですが、PHP5以上で問題なく動作する模様です。