Posted at 2007/12/14 13:07
in Diary|Programming
/ Comments (0)
* 13:05 Javascriptクイズ(中級者向け):無名関数と実行効率の話
100文字に収まらなかったのでこっちに。
話の流れ的に関数オブジェクトの生成コストを問題にしてそうなので、だったらクロージャにすれば最初の1回だけ生成してあとは実行するだけ、と。
var style2prop = function(){
var capitalize = function(str){return str.charAt(1).toUpperCase();};
return function(str){return str.replace(/-[a-z]/g, capitalize);};
}();
ちなみにベンチはとってない(だめじゃん)。
* 13:30
関係ないけど、JavaScriptのセミコロン省略の話をどこかで読んだのをふと思い出したのだけど、ぶくましてなかったので誰の記事だったかわかない(いみねー)。
ちなみに↑のコードだと、セミコロン全部消しても動いた。でもあんまりうれしくない。
Posted at 2007/04/05 10:33
in Diary|Programming|Ruby
/ Comments (0)
* 10:30 mistral
たいぷちゃんの nak にインスパイアされた IRC bot を作り中。といっても nadoka の plugin なのでたいして難しいことはしてないのだけど。
とりあえず、発言の URL から TITLE 拾ってくる機能は実装したので、某香港チャンネルに放流。
* 12:15 今週のP2!
実戦キター、得点キター、でも負けるようだ。そりゃそうだろうけど。
* 20:35 まるごとJavaScript & Ajax ! Vol.1
今更のように読み終わった。
- Javascript のシンプルで柔軟なところは、わかりやすい Perl といった雰囲気かも
- Prototype.js ってどことなく Ruby と似てるなーとおもったら Rails が取り込んでたりするのね
- ActionScript3 のどこが ECMAScript なんだろうと思ってたらバージョン4相当らしい
- closure おもしろい
一番意外だったのは ECMAScript4(Javascript2) かな。最近 ActionScript3 流行ってるのはそのへん先取りって意味もあるのかしら。ただ個人的にはこのところ型なし言語ばっかり見てるせいか、型づく方向に向かってるのは抵抗を感じるなあ(省略もできるらしいけど)。
* 25:40 Flex2
というか ActionScript3 で遊んでて思い出した。わたしは Java 嫌いだったんだ。うきー。
Posted at 2006/08/05 00:55
in Programming|WebDev
/ Comments (0)
今更blosxom? とか言われそうですが(笑)、久しぶりにいじってみました。テーマは「タグ化」。
blosxomは標準ではディレクトリ=カテゴリーなわけですが、はてなブックマーク等に慣れてくると、なにかと自由の利くタグを使いたくなってきます。タグ対応pluginは探せば既存でもいくつかあるようですが、やり方を思いついたので自分でも実装してみました。
ソースはこちら。
おおざっぱな仕組みは、filter()で
- エントリーファイルの1行目(タイトル行)からタグ([]で囲った文字列)を収集
- エントリーファイルの存在するパスもタグとして収集
- リクエストのパスをターゲットのタグとし、対象となるファイル以外をファイル一覧(%files)から削除
あとは通常のシーケンスでエントリーが表示されるので、story()で表示用のタグリンクを作成、というシンプルもの。
ただし、通常はカテゴリー(ディレクトリ)内のエントリー以外は表示をスキップする処理が走るので、blosxom.cgiを修正してカテゴリー機能自体を無効にする必要があります。
sub generate {
(中略)
# Only stories in the right hierarchy
# $path =~ /^$currentdir/ \
or $path_file eq "$datadir/$currentdir" \
or next; #←コメントアウト(実際は1行)
また、recentwritebacks_treeのような、エントリーファイルからタイトルを拾ってくるpluginは、タイトルからタグ部分を除去するように改造する必要があります。
sub gettitle {
(中略)
if($fh->open($file)) {
$ret = <$fh>;
$fh->close;
$ret =~ s!(\[[^]]+\])*!!g; #←追加
}
chomp($ret);
他にもタグリストのキャッシュ機能なんかも実装してありますが、細かい話なので省略。
この仕組みので面白いのは、エントリーファイルのパスも自動的にタグ扱いしてくれる点。つまり、既にカテゴリー分けされてる既存のエントリーは、何もしなくても最初から自動的にそのカテゴリー(ディレクトリ)名のタグが付いてくれます。
また、カテゴリーを2階層以上掘ってある場合、エントリーが属する上位のカテゴリーも全てタグとして付いてきます。例えば「/NetGame/RagnarokOnline/sample.txt」というエントリーの場合、「NetGame」と「RagnarokOnline」のタグが一気に付くわけです。「NetGame」直下に置けば「NetGame」だけに属し、「RagnarokOnline」の下に置けば「NetGame」「RagnarokOnline」両方に属する、つまり「RagnarokOnline」は「NetGame」をも含むという、タグ同士の包含関係のようなことが実現できるわけですね。
というわけで、かなり久しぶりにperlをいじりましたが……やっぱり自分で書くならrubyの方が好きだなあ(ぉぃ)。
Posted at 2006/08/04 23:32
in Programming
/ Comments (0)
謎現象のデバッグ時や、挙動のよくわからないソースをおいかけている時など、どういう順番で関数が呼ばれているのがを可視化(ログ化)できればなーと思うことがよくあるのですが、ちょっとした方法を思いついたので試してみようかな……とおもったら、gccなら
-finstrument-functionsというオプションでそういう仕組みが実装可能
らしいです。流石gcc。
VCでもBoundCheckerを使えば可能らしいですけど。……そんなもん個人で買えるかっ。
ちなみに上で書いた「ちょっとした方法」というのは、「.o(.obj)のFixUp情報を書き換えて、関数コールの前後で指定関数を呼ぶproxyコードを呼ぶようにしてから、リンクする」という激しく力業な方法。gccやBoundCheckerも多分似たようなことをしているのでしょうけど(勘)、libbfdが使える環境なら自前でも楽勝で書けそう?