hiromasa.zone : o)

2007/2/3 Saturday 投稿時の月齢:15.7  月名:満月  潮汐:大潮 Moon:15.7[満月]今日の心技体 : 好調期好調期低調期

小樽なると このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち雪 ひろまさ @ 20:45

札幌市からくるまで1時間くらい(住んでるところにもよりますが)の、おとなり北海道小樽市。

観光だけでなく地元の人にも人気らしい「なると」というお店。 若鶏のからあげが食べられます。 ぼくもなんだかんだ年に1回くらいいくかも・・・。 🙂

というわけで本日行ってきました。

なると

お寿司もあります。

なると

おなかいっぱい。 😛

小樽観光の際には行ってみるといいかもしれません! タクシーでなるとっていえばすぐ連れて行ってくれることでしょう。

いま写真をアップロードするのに携帯を見てたら、撮っていて載せてないのがあったことが発覚。

メガマック

発売2日目くらいに買って撮ってたのに、完全にブームに乗り遅れの図。 :shock:

PHP で遊ぼう(5) – プログラムのエントリポイントと生存期間 – このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち雪(4/-6) ひろまさ @ 0:34

と、めずらしく2日続けて遊ぼうシリーズ。 何を隠そう、すでに5回目。 いつも、書き始めるんですが脱線してなかなかプログラムのことまでたどり着けません。 😛

なにやら難しそうなサブタイトルがついていますが、なんのことはありません。 でも意外と入門書には書いていない事実。 今回は PHP というより若干 Web プログラミングよりのお話です。

PHP で書かれたプログラムの多くは、拡張子 .php となっているただのテキストファイルです。 これをそれなりに設定された Web サーバ上において、ブラウザからそのファイルに対してアクセスを行うと動作するといのは、なんとなく分かるかと思います。

じゃー、そのプログラムはどこから始まって、いつ終わるの?というのがエントリポイントと生存期間です。

まずはどこから始まる(エントリポイント)かというお話ですが、これは”そのファイルの先頭”から実行がはじまります。 そして、”1行(文)”づつ基本的に上から下に向かって解釈しながら走行し、ファイルの終端、もしくは exit や die といった構文でプログラム中で明示的に終了を命令されたときに終了します。(ちなみにこういった、ファイルの先頭から実行が始まる言語はエントリポイントが”ない”言語というそうです。 ファイルの先頭からはじまらず、ある特定のキーワードの部分からはじまる言語も多数あります。)

ちょうど人間が、文章を読み進めるがごとく、PHP も指令が書かれた文書を上から下に読み進めるイメージです。 若干違うのは、上から下に進んでいるときに、上にもどったり別の文書(ファイル)を読みに行ったりすることです。

Web / PHP の場合、その読み進めていく課程で行ったなにかしらのの”出力”結果が、ブラウザにそのプラグラムの動作として表示されます。 ブラウザは HTML を解釈して画面を表示するソフトウェアですので、一般的に PHP の出力結果は HTML になります。

ということで、HTML の出力をおえると PHP のプログラムはその役目を終えます。 なので、その生存期間は1秒やそこらです。 WP だと 3~5 秒くらいですか。

ポイントは、次のアクセスは、たとえ同じプログラムでも、さっきうごいていたプログラムとはなんら関係がないということです。 動作中に処理された値などは、終了と同時になくなります。 残るのは、ブラウザに表示された結果だけです。 ブラウザに表示された結果はユーザが消さない限りのこりますので、ユーザの手元には見えますが PHP 的には、生存期間がおわったものはすべて無かったことになります。

それでは、なぜ WP なんかが投稿したエントリを覚えていれるかというと、WP のプログラムはその実行結果を忘れないように MySQL というデータベースに保存するためです。 シンプルな掲示板のシステムなどはファイルにデータを書き出すことも良くやります。 このように生存期間の短い Web / PHP のプログラムでデータを保存したい場合は、ディスクなどの外部記憶を使う必要があります。

さて Web / PHP で永遠に動き続けるプログラムがかけないかというと、そういうわけでもありません。 そういったプログラムにブラウザでアクセスした場合は、ブラウザの地球儀がぐるぐる回り続けそのプログラムは動き続けます。 ただしHTML の出力においてこういった永遠に動き続ける動作をしたところで意味はありませんし、また想定されていないため、ブラウザのタイムアウトや PHP 自身によりこういったプログラムは強制的に落とされます。

この辺が、Web のプログラムになれていない人には分かりづらいとこですね。(職業でコンピュータやっている人でも、Web に携わってないと分からない人が多い)

一般の Windows などのPCで動作するクライアントのソフトウェアは、画面がみえているうちは生存しています。 操作が無くてもプログラムは同じところをぐるぐるぐるぐる動き続け、ユーザからの入力などを待ち動き続けます。 終了はユーザが明示的に終了の操作をしたときや、OS からの指令がきたときです。 なのでこのときまでデータなどは、外部記憶に頼ることなく保存されているわけです。

こういった生存期間が長いクライアントソフトウェアは C++ や C# でかかれることが多いわけですが、同じプログラミング言語ですから PHP だってかけないことはありません。 PHP は Web で使われることを想定していますので、標準で Windows の画面にウインドウをだしたりはできませんが、ライブラリと呼ばれる拡張をつかえば、生存期間がながいぐるぐるぐるぐる動き続けるクライアントソフトを作ることも可能です。 こういった意味合いで区別するため上では「Web / PHP 」といった書き方をしてみました。

また、逆に Web 系のシステムでここでいう生存期間が長いソフトウェアをつくれないかというとそうでもなく、Java 言語などでは、一般的にアプリケーションサーバと呼ばれる仕組みをつかいアプリケーションをサーバ上で生存させ続けることもできます。

また話が脱線してしまいましたが、、Web / PHP に関してはまずは次のように覚えておけば間違いありません。

プログラムはファイルの先頭から、

どこかで終わったら無くなる

HTMLを出し終わったら大満足

せっかくですので、我らが WP のスタートポイントを書きます。 ブログルートにある、index.php です。 上から気合いで読み続けていけば、そのうち終わります。 それがファイルの終端だったか、exit だったかは忘れました。 😛

2007/2/2 Friday 投稿時の月齢:13.8  月名:待宵月  潮汐:大潮 Moon:13.8[待宵月]今日の心技体 : 好調期好調期低調期

PHP で遊ぼう(4) このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雪のち曇(-2/-5) ひろまさ @ 0:40

WordPress を深くいじっていると避けては通れない PHP。 操れたらよりいっそう、WP を自由に使うことができるようになります。

プログラム言語に関してはいくら入門本を読んでもよ~わからん、そんな声も聞こえてきます。 かたやノリだけでかくような人もいて…、この違いは何か!!

条件反射...

いや、そーいってしまってはみもふたもないのですが、案外真実です。

プログラムをかくということはやりたいことをパターンにあてはめることです。 やっている人間は、データ格納の方法、ループの方法、条件の選択の方法の3つを、やりたいことに当てはめられます。 実はこれは簡単で、変数/配列の使い方、制御構文の使い方、if の書き方を知っているだけです。 あとは、それぞれにまつわる小技です。

で、なんで入門書をみてもよーわからんかというと、あんまりこの “当てはめ方” というのが本には書いていません。 それぞれの”使い方”はでているんですが、どうも使いどころまでは書いていないのです。 「変数は値を入れる箱のようなものです」…、だからなんなんだ、みたいな。(笑) なので、理解はできても何かはつくれない…、そういったことなんだと思います。 サンプルコードをみせて、という形だけなので案外スパルタです。

昔はおもしろおかしく、当てはめ方が書いた本/雑誌がいっぱいあったのですが、最近はいまいちなくなってしまったようで、できるできないの格差がひろがってしまったように思います。 インターネットに情報を発信する人も、本人的にはあまりに普通すぎてネタにしないのもあるのかもしれません。

ないなら、ためしに書いてみようかと思い立ちました。 🙂

たとえばですが、ぼくがかく 1000 step (行) 程度のプラグインの規模くらいだと、骨の部分は3論理エラーくらいで通ります。 実はコードを全部かいてから、エラーフリーで一気に通そうとするのが若干趣味な部分もあるのですが、、いや、当然のようにぼくの場合無理ですよ。(笑) まぁ3つくらいひっかかるくらいでいけます。 もちろん、表示位置の調整とか細かい部分はランアンドトライの繰り返しです。

なんとなくすごそうなかきっぷりですが、単純に条件反射でやっているから間違わないのです。 どのプログラムもたいていは同じパターンでかけるから、間違いようがないというか。

オブジェクト指向というプログラム言語の世界では、デザインパターンという言葉があります。 こういうときには、こういうふうにオブジェクトをくめばいいというパターンを集めたものですが、ここで書きたいのはもっと手続きのパターン。(オブジェクト指向だって、中の細かい処理は手続き型です)

プログラムをかくのに必要なのは、たった8この知識!(たぶん) 定数、変数演算、フラグ、配列、ループ、ループカウンタ、if、関数 。

ついでに、Web についても覚えちゃえってことで、PHP を使ってなにかやってみようかと思います。 まぁ1から全部つくって見てくれの良いものはなかなか大変なので、WP のプラグインをお題にしてもでもいいですね。 😛

こんなんやってくれ、とかありましたらコメントいただければ!

2007/1/29 Monday 投稿時の月齢:9.8  月名:十日月  潮汐:長潮 Moon:9.8[十日月]今日の心技体 : 好調前不安定期低調期好調期

祝2周年。 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - ひろまさ @ 0:00

hiromasa.zone が blog style になってから、本日でちょうど2年!

祝2周年!

PHP + MySQL で遊んでみようとおもって立ち上げたサイトが、こんなに長続きするとはびっくりです。 ひとえに読んでくださっている方のおかげだと思います。 これからもよろしくお願いいたします。 🙂

ということで、日ごろの感謝の気持ちも込めて、いままでなかったリンク集というのをつくってみました!。

リンク集@hiromasa.zone

いままでブログにコメント・トラックバックをくださった皆様です。トラックバックのみの方はサイト名になっています。

wp-kumonosu を改造して、管理画面から、表示をサイトに出したものです。 WP サイトさんが中心になりましたので、リンク回るといろいろ発見があるかもしれません。 😛

また、できないぼくのために、HTML & CSS を Kaira さん が書いてくれました。 元は妙はテーブルレイアウトだったんですが、これで横幅考えず、フレキシブルにサイトに表示できるようになりました。 ありがとう~ :-) (次のバージョンに取り込みます)

あわせて、ブログのトップページのページランクが 6 になったようです。 さすがにこれで打ち止めだと思いますが、なんか Google 先生からのプレゼントみたいでいいですね。(笑)

のんびり我が道を進む hiromasa.zone ですが、重ねまして今後ともよろしくお願いいたします。

2007/1/26 Friday 投稿時の月齢:7.3  月名:弓張月(上弦)  潮汐:小潮 Moon:7.3[弓張月(上弦)]今日の心技体 : 低調期低調期好調期

hiromasa.zone 運用連絡 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち曇 ひろまさ @ 12:36

hiromasa.zone 運用連絡です。

昨日よりデータベースサーバがコネクションマックスにつきダウン中です。 暫定対処で、MySQL のみ自宅に収容しています。(なんて無駄な通信経路…) アクセスがもったりしたり、また落ちていたりするかもしれませんが、ややしばらくお待ちいただければと思います。

ちなみに、Web サーバからのみ自宅の MySQL にアクセス許可するファイアーウォール(iptables)の設定は以下のようにします。(メモ)

/sbin/iptables -A INPUT -i eth1 -s [WebサーバのIP] -d 192.168.0.100 -p tcp --dport 3306 -j ACCEPT

ちなみに本人も風邪で落ちております。。

ではでは、みなさん、良い週末を…! 🙂

2007/1/24 Wednesday 投稿時の月齢:5.7  月名:六日月  潮汐:中潮 Moon:5.7[六日月]今日の心技体 : 低調期低調期好調期

Thunderbird 2 ベータとソフトウェア保守 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雪のち曇 ひろまさ @ 22:00

ソフトウェアに関しては割と保守派だったりするのですが、Thunderbird 2 のベータがでているということで早速入れてみました。

Thunderbird 2

アップデート項目もよく見ていなかったりするのですが、まぁたまに勢いってもんも必要です。 🙂

実は利用するメーラには決めてに欠けていまして、、結構長い間 Thunderbird 使っていたように思うのですが、どうもいまいち手につかないというか、しっくりはきていませんでした。 最近だと、Sylpheed がいいように思って、遊んでいました。(こういうとき IMAP 使っていると気分でメーラを使えて便利です)

Thunderbird 2 のベータですが、なにか軽くなったような気がします。 気のせいですか??。 やはり普段よく使うものは、さくさくうごいたほうがいいみたいですね。 手につかないのは原因は速度だったのかもしれません。 いい感じです。

さて、Thunderbird と全然関係ないですが、、ソフトウェア保守派といえば WordPress の 2.0 系はブランチされるとのこと。 2.0 系はセキュリティーフィックスと既存の機能のバグの上位バージョンからのバックポートが行われることになります。(なんと2010年まで!) 企業や業務などで、すでに 2.0 で機能満足していて、安定して WP を運用したい人には朗報ですね。 こういった方針ができるということは、WordPress もいろいろな使われ方をしてきている証拠です。

ちなみに、ロードマップをみると 2.0.8 が既に予定されて、2.0.9 の次に 2.1 になっちゃう!(笑) なんて、、おそらく 2.0.10 になると予想します。 🙂

WP に関しては最新を追いかけていきたいと思いますが、hiromasa.zone は MySQL 4.”0″。 4月までの運命ですか。 :-) MySQL 4.1 からサブクエリ使えるし、移行したい気持ちはよく分かります。(wp-kumonosu も 4.0 で動かすために無理しているし…)

まだもーちょっと時間あるので考えます。 👿

2007/1/20 Saturday 投稿時の月齢:1.6  月名:二日月  潮汐:大潮 Moon:1.6[二日月]今日の心技体 : 低調期低調期好調前不安定期

WordPress 2.1 の新機能 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴 ひろまさ @ 19:07

そろそろでると噂の WordPress 2.1。 なにが変わっているのかな~とWordPress Tracからソースをななめ読み…。 🙂

enhanced 扱いになっているものといくつかの defect チケットをひろってみました。

カテゴリ 内容
投稿 <!–more[文字列]?–> って書くと「続く」テキストを指定できる。
投稿に<input><param><script>がかけるようになった。
画像サムネイルサイズ可変化。 ただし管理画面は未実装。
管理画面 リンクマネージャの改良(リンクマネージャにリンクの一括削除機能等が実装)された。
カスタムフィールドの追加など、管理画面の AJAX 化がすすんだ。
ページ作成にも草稿機能が追加された。
管理画面の管理->カテゴリページの投稿数にリンクが付与され、そのカテゴリの記事を全て表示できるようになった。
ページの編集にも、ポストと同じように編集者によるアクセス制限がついた。
管理->投稿 にカテゴリの選択ドロップダウンが追加された。
管理画面のコメント削除時のインフォメーションが詳しくなった。
投稿画面のタイムスタンプをいじると、タイムスタンプを編集に自動的にチェックがはいるようになった。
管理画面で 20件以上のコメントをみるページ機能がついた。
メニューバーのコメントの承認待ち件数などが AJAX で追従するようになった。?
ダッシュボードのフィードの取得が wp-cron で実装された。?なってないようだ。
投稿者とユーザ画面の修正いろいろ。
ビジュアルエディタのタブ化、インラインウインドウ化
投稿画面でデフォルトカテゴリのチェックが保存される。?
オートセーブされるようになった。
bookmark-template.php のコードのクリーンアップ。
管理画面で隠されたカテゴリを表示しない。
管理画面のデザインのクリーンアップ。
paginate_links() 次へ前への実装されたリンクページの追加。
画像アップローダの改良。 管理->Uploadsに管理ページが追加された。
空のブックマークを保存しないようにした。?
ポストメタのドロップダウンリストの数制限と、フィルター(postmeta_form_limit)の追加。
管理画面のリンクの改良
カテゴリインターフェースの改良と hook の追加。
TinyMCE の改良。
テンプレートタグ wp_get_archives の引数に yearly が追加された。
記事の修正時間を表す the_modified_date() が追加された。
the_author_link() がいい感じにリンクを返すように。?
list_cats_exclusions、get_categories にごっそりカテゴリーの配列が渡ってくるようになった。
wp_list_pages に excludes機能と、wp_list_pages_excludes フィルターを追加。
プラグイン get_previous_post_join、get_previous_post_where、get_previous_post_sort フィルターが追加された。
the_posts の位置が変わった。
single_cat_title フィルターの追加。
comments_array フィルターの追加。
restrict_manage_posts アクションの追加。
コメント投稿 15 秒規制をプラグインで hook可能に。 comment_flood_filter の追加。
xmlrpc に wp_handle_upload フィルターの追加。
mod_rewrite をプラグインから制御したときに、成功か失敗かわかるようになった。
wp-commentsrss2.php へのフックの追加。
ローカライズ 管理画面のボタンでつかわれている実体参照が、ローカライズされた。
i18n 系のファイルの読み込みの改良。
言語ファイルの位置を、wp-content/languege もみるように。(こっち推奨)
ABSPATH . LANGDIR ."/$locale.php"; にファイルをいれると include するようになった。
WPLANG の _ より前の値がlanguage_attributes として HTML や HTTP ヘッダなどに出力されるようになった。
その他 管理画面、設定、表示設定でトップページにページを割り当てできるようになった。
管理画面 Privacy Options <meta name="robots" content="noindex,nofollow" />’ の出力の設定ができるようになった。
管理画面で SSL による暗号化通信機能のサポート。
コメントのメール通知でスパムにマークするリンクが追加された。
コメントの必須未入力エラーなどででていた、へっぽこなエラー画面が新設された wp_die()によりかっこよくなった。
wp-cron が実装された。(未来日投稿等を cron で実装。 wp-otenki で未来日投稿でもお天気とれるかも。 do_ping もあわせて cron で実装。 wp_schedule_single_event)
query_posts() でオフセット指定ができるようになった。
setup-config.php のスタイルが変更になった。
配列で unset する新しい関数の追加。
wptexturize の高速化。
prototype.js が標準ではいった。
akismet が widget 対応した。?
ログインフォームの改良。
ポストスラッグ変更時の動作の改良。 古いポストスラッグのアクセスを、新スラッグに 301ですっとばす?
コメントフィードに<author>タグの追加を行い、フィードを出力するように。
WordPress XML エクスポート、インポートにカテゴリ等の情報を追加。
ソース ソースコードから不要なホワイトスペースが消えた。
unregister_globals() の名前の変更。
推奨されていない、wp_set_post_cats 関数の削除。
get_children() の改良。
convert_smilies の最適化。
TinyMCE ファイルがなくても動作するように改善。
ポストメタをキャッシュ対象にし、クエリー数の削減をした。
ポストメタを修正しないでアップロードしたときの不具合の改善。
デフォルトテーマの改善。
sanitize_file_name(). の追加。
wp_get_post_categories() でキャッシュを使うように改善。

カテゴリとか内容はぼくが勝手につけたものです。 😎

ほんと斜め読みレベルですので間違っている可能性は”大”です。 ご注意ください。 また、defect でも enhanced に近いものもありますので、改良はまだまだあるはずです。 ソース見てぱっと分からなかったのは?つけています。

wp-cron とかページ系の機能の向上が面白そうです。

他にも面白そうな機能を見つけたら是非おしえてください。 🙂

管理画面のある WordPress プラグインの作成方法 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々雪(0/-4) ひろまさ @ 3:53

最近日本の方の WordPress プラグインもずいぶん増えてきて、同じことをしている人間としては嬉しい限りです。 🙂

ぼくも何本か書いてきて、ようやく勘所のようなものがつかめてきたのでちょっとプラグイン作成のノウハウなんかをエントリしてみたいと思います。

いや、最初のころはずいぶん苦労したんです。。 なにができなかったって、PHP を知らなかった。 最近だいぶ”ソラ”でかけるようになってきましたが、まだまだ語彙が少なく、できる方から見ればなんだこりゃ、なんだと思うんですが…。

でまぁ、知らなくてもノリでできちゃうのがスクリプト言語の良いところ。 ここでは、「管理画面のある WordPress プラグインの作成方法」を書いてみたいと思います。

管理画面の追加の方法は分かるとして、問題はデータの保存とプログラムの構造。 経験的に以下の構造にすると、ストレス無くコードをかけるような気がします。 まずはクラスを 3 つつくります。

  1. WordPress とインターフェースするクラス (ex. class WpHoge)
  2. データを処理するクラス (ex. class WpHogeModel)
  3. 管理画面の HTML を出力するクラス (ex. class WpHogeView)

プログラムの構造はいわゆる MVC の構造をとるわけですが、あんまり厳格にやると、一般的な WP のプラグインの規模くらいでは逆に面倒になりますのでその辺は適当に… 😛

class WpHoge は、WordPress とのインターフェースを書きます。 プラグインメインロジックと WordPress の仲介をするコントローラクラスですが、要は WordPress のコア関数を呼ぶのはなるべくここだけにします。(たとえば、多国語化すると WpHogeView に __、_e をかかなければならないのとかは愛敬。 WpHoge でラップしてもいいけど、そこまでは…)

今回書きたかったのは、以下から。 管理画面で設定するオプションデータの保存処理の方法のノウハウです。

class WpHogeModel には、メイン処理、いわゆるビジネスロジックを書きます。

データ保存をするときのポイントは、このオブジェクトの状態をそのまんま WP のデータベースに保存すること。 オブジェクトを復元すれば、次回同じ状態(設定したオプション値など)をうまく再現できるわけです。 では仮に WpHogeModel を以下のように定義します。

  1.  class WpHogeModel {
  2.     
  3.    // メンバ変数
  4.      $oprion = array();
  5.     
  6.    // コンストラクタ
  7.      function WpHogeModel() {
  8.          $option['保存したいオプション1'] = 初期値;
  9.          $option['保存したいオプション2'] = 初期値;
  10.          $option['保存したいオプション3'] = 初期値;
  11.      }
  12.     
  13.    // 処理
  14.      function syori() {
  15.          $this->$option['保存したいオプション1'] = 更新値;
  16.      }
  17.     
  18.  }

保存したいオプション値をメンバ変数にして、オブジェクトを new した時唯一実行されるコンストラクタには、保存したいオプション値の初期値を書いておきます。 で、あとはオプションのメンバにアクセスしつつ適当に処理を書きます。

次に WP の領域でインスタンス化するコントローラ class WpHoge の中で、この class WpHogeModel のインスタンスをつくります。

でもって、インスタンス化した class WpHogeModel を”ごっそり”シリアライズして WP に登録してしまいます。(初回) もし、すでに WP に登録があるようであれば、シリアライズされたデータからインスタンスを復元します。(2回目以降)

2回目以降インスタンスの復元時は、new されるわけではないので class WpHogeModel のコンストラクタは働かず、オプションは初期化されずオプションのメンバ変数が WP に登録された時点のものに復元されるわけです。 あとは、また通常通り Model の処理関数をコントローラから呼び出して処理を続行するだけです。

class WpHoge のデータ取得系の処理はたとえば以下のようになるでしょう。

  1.  class WpHoge {
  2.     
  3.      var $model;
  4.     
  5.    // コンストラクタ
  6.      function WpHoge() {
  7.         
  8.          $this->model = $this->getModelObject();
  9.          $this->model->syori();
  10.         
  11.      }
  12.     
  13.    // モデルオブジェクトの作成
  14.      function getModelObject() {
  15.         
  16.        // WP からオプション所得
  17.          $option = $this->getWpOption();
  18.         
  19.        // Model のクラスが登録されていたらそれを復元
  20.          if(strtolower(get_class($option)) == strtolower('WpHoge')) {
  21.              $model = $option;
  22.          }
  23.        // なかったら(初回) 新しく Model インスタンスつくって WP に登録(writeWpOptionは省略)
  24.          else {
  25.              $model = new WpHoge();
  26.              $this->writeWpOption($model);
  27.          }
  28.         
  29.          return $model;
  30.         
  31.      }
  32.     
  33.      function getWpOption() {
  34.         
  35.          $option = get_option('オプション登録名');
  36.         
  37.          if(!$option == false) {
  38.              $OptionValue = $option;
  39.          } else {
  40.              $OptionValue = false;
  41.          }
  42.         
  43.          return $OptionValue;
  44.         
  45.      }
  46.  
  47.  }

あとは、管理画面からの更新などをきっかけとして、コントローラが Model をコントロールしつつ適切なタイミングで WP に add_option、update_option すれば OK です。 これらの関数はオブジェクトが引数に渡されると勝手にシリアライズしてくれます。

この方式をつかうと、オプションの保存/取得が 1 query になりますし、なにより “楽” です。 wp-kumonosu がこの方式で動いていますので、興味がある方はコードをみてみてください。

wp-kumonosu では管理画面からの http リクエストをコントローラで Model に振り分け処理を進めていっています。 Model で直接 WordPress の DB に SQL 発行しちゃったりして、厳密に言うとちゃんと MVC になっていないのですが、まぁひとりで作るくらいの規模なのでいいんじゃないっすか 😛

みなさんそれぞれのコーディングスタイルがあると思うので、これがいいってわけでもないのですが、もし管理画面付きプラグインでコードが煩雑になって困っている方のご参考になったら。

2007/1/14 Sunday 投稿時の月齢:25.2  月名:二十六夜  潮汐:若潮 Moon:25.2[二十六夜]今日の心技体 : 好調期低調前不安定期低調期

自動車の免許は持っていなかったけど… このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々雪 ひろまさ @ 18:37

Otsukare さんのところで、面白そうなラジコンヘリを発見。 🙂

操る喜びを堪能できそう@Otsukare さん

男ってやつぁ、何かを操ることに喜びを感じるところがあると思う。

いいなぁ、これ…。

操るといえば、コンピュータもそのひとつ。 非リアルタイムでは、コンピュータをコンピュータ言語で指示をかき、実行してわ~っと高速に処理されている様子とか、入力に対する結果が、頭の予想と違った!! というのが大好きです。

で、ラジコンといえばリアルタイム指示。 自動車の免許は持っていなかったけど、、TAMIYA RC カーグランプリ(TV)世代としては当然持っているわけです。(笑)

ラジコン

数年動かしていませんが、TAMIYA の ミッドシップシャフトドライブ 4WD のラジコンです。 いまみたら、オイルダンパーのオイルがやばそう。。 😛

速いシャーシはベルトドライブが主流みたいですが、うえのシャフトドライブのシャーシでも、モータとボールベアリングを変えれば割とびっくりするくらいのスピードが出て楽しめます。 他にもスタピライザつけたり、ギア比かえたり、手軽な投資でいろいろいじりがいがあるのが RC カーの面白いところ。

電動RCカー 主要シャーシ紹介 1@TAMIYA

1/10 R/C電動4WD ツーリングカー@KYOSHO

いや、KYOSHO のは手軽な投資を越えていますが、、さすがに美しいですね。。 ものすごい速いです。

最近は室内で遊べるタイプも人気のようですね。

グラスホッパー、ホーネット、マイティーフロッグ…。 ああ、懐かしい。 🙂

2007/1/13 Saturday 投稿時の月齢:24.4  月名:二十五日月  潮汐:長潮 Moon:24.4[二十五日月]今日の心技体 : 好調期低調前不安定期低調期

だぶるぴーめがてん このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々雪 ひろまさ @ 23:29

期待には応えなければいけないのが、プログラマーというものです。

wp-megaten@いつきたん

そして悪魔と交渉できる「wp-megaten」、誰か作って! :mrgreen:

あなたはみごと Otsukare さんを仲魔にすることができるか!?

ちゃれんじじょい

だぶるぴーめがてん

Otsukare がこちらを見ている。

すいません、、もうしません。。

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

18 queries. 0.169 seconds.

このページの先頭へ