Blog::koyhoge – memcachedを用いた関数キャッシュ

これまでは関数キャッシュにはPEAR::Cache_Lite_Functionとかを使っていたのだけど、キャッシュ内容をディスクに書かれるのは遅い気がするし、最近はやぱしmemcachedでしょということで、Memcache extensionを使った関数キャッシュクラスを作って使っている。

関数キャッシュにmemcachedを使うというお話。

それ以前に関数キャッシュというものを知らなかった。Cache_LiteにCache_Lite_Functionというのがあるんですね。試してみました。

関数をキャッシュするって、副作用はどうなるんだろう?

$ cat func.php
<?php
foo();
foo();

function foo()
{
    static $v = 0;
    echo ++$v;
}
?>
$ php func.php
12

キャッシュ無しの場合。

$ cat cache_func.php
<?php
require_once 'Cache/Lite/Function.php';

$clf = new Cache_Lite_Function();
$clf->call('foo');
$clf->call('foo');

function foo()
{
    static $v = 0;
    echo ++$v;
}
?>
$ php cache_func.php
11

キャッシュありの場合。

デフォルトでは/tmpにできるキャッシュを見てみる。

$ cat /tmp/cache_7b181b55b55aee36ad5e7bd9d5a091ec_4109c93b3462dad44dc7bc4215c9f174
633326628a:2:{s:6:"output";s:1:"1";s:6:"result";N;}

なるほど、返り値と出力の両方をキャッシュしてくれるんですね。 色んなレベルでのキャッシング方法を覚えておくと困ったときに役に立ちそうです。

mysqlのバージョンを上げたから?(MySQL_4.0.24_Debian-10sarge2)かわかんないけど、新しいテーブル作ったら_seqとかいうシーケンス用のテーブルが勝手にできとる・・・。

mysql> show tables;
+------------------+
| Tables_in_plnet  |
+------------------+
| content          |
| content_category |
| custom_template  |
| design           |
| entry            |
| entry_to_tag     |
| feed             |
<strong>| feedback         |
| feedback_seq     |</strong>
| member           |
| member_temporary |
| member_to_feed   |
| site             |
| tag              |
+------------------+
14 rows in set (0.00 sec)

mysql&gt; desc feedback;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| id         | int(11)       |      | PRI | 0       |       |
| name       | varchar(255)  |      |     |         |       |
| comment    | text          |      |     |         |       |
| created_at | timestamp(14) | YES  |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql&gt; desc feedback_seq;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned |      | PRI | NULL    | auto_increment |
+-------+------------------+------+-----+---------+----------------+
1 row in set (0.00 sec)

_seqテーブルを削除しても元のテーブルにデータが入るとまた勝手に出来る。googleで調べてみたけどよくわからなかったな~。

秋元@サイボウズラボ・プログラマー・ブログ: Amazonによる有料Q&Aサービスnownowがベータ開始

Google Answersの撤退も記憶に新しい中、あたらしい有料のQ&AサービスnownowがAmazonによって開始された。

携帯電話からメールでnownowに質問を投げることで、24時間以内に「人力による」回答を3件まで、メールで返送してくるらしい。一件あたりの質問料金は、25セント(30円ぐらい)に収まることを予想しているということ。

回答は人手で行なわれて、この回答者というのはGoogle Answersで用意されていた回答のプロではなく、Amazon Mechanical Turk経由で集められた他ユーザということだ。(Mechanical Turkに登録して、nownowから来た質問を探して回答できるということだ。こちらは招待制じゃない)

きたぁああああ Mechanical Turkベースのサービスをどんどんリリースしてくるに違いない。

ステルス・デザインの方法―イルカの記憶と都市の閉塞感を減らす技

shintaroさんに借りて読みました。

これはすごいwwwwwwwwwwww 今だかつて三十三間堂のステルス性に誰が注目しただろうか。 とにかく新し過ぎる。

Ringo’s Weblog: 2006年12月16日 アーカイブ

私はまず、ステルス・デザインの考え方を発展させる第一段階として、 「ステルス・ウェブ・デザイン」という方法論を考え、いくつかの提案をする。

そして、ステルス・ウェブ・デザイン。 とにかくやられたーって感じです。

ウェブ・ユーザビリティ―顧客を逃がさないサイトづくりの秘訣

古典ぽかったんで買ったんですが、もっと構造化された説明が読めるのかと思ってたのでガッカリ。この本の更にまとめみたいのがあればそれで十分だったかも・・・。

デモではものができあがっているように見せない

私たちはそういうことを本やソフトウェアでしょっちゅう目にしている。彼らに何か磨き上げられたこぎれいなものを見せるなら、フォントサイズみたいなことについてフィードバックを受け取ることになる。レビュアは目の前にあるものに 目を奪われて、細かい差分的な調整をしようとする。しかしナプキンに描いたスケッチを見せたなら、彼らはそこにあるものを見るだけでなく、何が可能なのかを理解する。あなたはレビュアに今の時点ではどのような種類のフィードバックがほしいのか伝える必要がある・・・「木」の 段階に進もうというときに、「森」を見るような全体的なフィードバックをほしいとは思わないだろう。一方あなたが何か完成形のものを見せるときには、もっぱら木のレベルで微調整するようなフィードバックを受け取ることになる。だから全体像レベルのフィードバックがほしいときには、提示する情報を曖昧なものにすることだ!

それから、実情に合った見かけを作るのを助けてくれるツールがあることを知っておくべきだ。私のお気に入りはNapkin Look and Feelで、これはインタフェースを??文字通り??ナプキンに落書きしたような見かけにしてくれるJavaプログラム用のGUIスキンだ。これはすごくいい。

なるほどー。

ところでデモに使うツールは何がいいんだろう? HTML? Photoshop? PowerPoint? Excel?

つい最近デモを作ったんですが、Photoshopでやったら“ほとんど出来てる感”が出てしまってフィードバックの幅が狭まってしまいました。これは課題だなあ~。

なんでも継続

プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。

すごいうまい説明だな~。 ちょっと一般化して、「コンピュータの世界の概念には禅問答のようなものがある」っていうのは使いやすいかもなあ。

プログラムの勉強を始めた時に感じた、「ホントにそんなわけわからん言い方しなけりゃ説明できないものなんかい!」という感情は禅問答にイラッとするのと同じ種類のものだったのか。

再帰、オブジェクト指向、モナド、継続・・・

わかってみるとそうとしか説明しようがないように思えるのに、理解する前は禅問答にしか見えない。

ではそういう種類の概念を説明するにはどうするのが一番の早道なのか。 引用先を見ていると↓こういうのがいいのかもと思いました。

  1. 対象を直じゃなくて、それをあらわすモデルの図柄的なディテールを説明する。(四角があって、三角があってとか)
  2. そのモデルの図柄を頭にイメージさせながら、本筋の対象の説明をする。

たぶん、頭の中にグラフィカルなモデルのイメージを描けていると説明がすんなり入るんじゃないだろうか。一端理解した後は、その単語を聞いただけで頭にパッとその絵が浮かんで消すことが出来ないから理解してない人の気持ちが理解できない。

↓こういう絵のディテールを単に説明する。

スタック:

チューリングマシン:

要するに何が言いたいかというと、

誰かモナドと継続を俺にわかるように説明して!!!!

ヒューマン2.0―web新時代の働き方(かもしれない)

シリコンバレーに合う人の特徴として「ちょっとふわふわしてる」っていうのが面白いなあ。

ショックを受けたのが作者の人の趣味?の「不潔に慣れること」というヤツ。

俺も「いつ家が燃えてもかまわない」ぐらいに自分のポータビリティを上げる努力をしてますが、「毎日風呂に入らないといけない(入りたい)」という点で住める場所が限られるよな~と思ってました。(風呂 dependency)

具体的に不潔に慣れる努力をすれば良いのか。その発想はなかったわ

自虐の詩 (上)
  • 自虐の詩 (上)
  • 竹書房(1996-06)
  • 竹書房
  • (著)業田 良家
  • 定価:¥ 591
  • 新品価格:¥ 591
  • 中古価格:¥ 154
  • ASIN:4812401267

映画化決定だそうでとても手に入りやすくなってました。 よくわかんなかったなー。

WAGASIYA

和菓子屋:「ん?」