2010年 10月 16日

YAPC::Asia 2010 で「映画にでてくるハッカーになりたい」というタイトルで発表してきました

大変恐縮ながら投票でエンターテナー賞を頂きました。聞き間違えかと思うぐらいびびりました。ありがとうございます。ちょうど iPad の Safari でお絵描きツールを作りたいけど、継続的に使える実機がなくて困っていたので嬉しいです。

以下補足

realtime*

realtime* 系は動かすのにちょいと設定がいるので説明しておきますと (この説明でわかるかわかりませんが……)

~/.rrggc に以下のような感じのことを書く

Format::Apache::LogFormat->define_logformats(q[
	LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %{X-DCMGUID}i %{X-UP-SUBNO}i %{X-JPHONE-UID}i %{X-SID}i" mylog
]);

これは realtime* が実行されるときに do されるファイルで、define_logformats の中は Apache のログフォーマットをそのままコピペするとたぶん動きます (動かないかも) responsegraph をとりたい場合には %D が必須で、accesstrack をみたいときは X-JPHONE-UID とか、ユーザど同定するセクションが必須です。

それで

tail ... | realtimeresponsegraph.pl --format mylog

とかやるとでてくる気がします。ほか、オプションがいくかありますが --format だけ必須です。

Devel::KYTProf

  • http://github.com/onishi/perl5-devel-kytprof
    • 僕がフォークしてるやつは前パッチ書いたときにやったやつなので、onishi さんのが一番新しいはずです (今はコラボレータに入れてもらったので直接コミットしてます)。

use するだけで

  • DBI
  • LWP::UserAgent
  • Cache::Memcached::Fast
  • MogileFS::Client

のメソッドコールが表示されるようになりますが、任意のメソッドの対して設定できるようになっているので自力で設定することもできるようになっているようです

あと、いくつか正規表現を設定できて、例えば

Devel::KYTProf->namespace_regex(qr/Hatena/);

とかやると、フックしたメソッドが呼ばれたとき、表示されるパッケージ名を、指定した regexp にマッチするパッケージまでたどるので、「自分のアプリ内で、どこからよばれているか」がわかるようになって便利です。

2010年 10月 14日

BDF フォントを canvas にレンダリングする

ブラウザでアンチエイリアスのきいてない bitmap フォントを使おうと思い webfont でいけるかなと思いきや、手元の環境だとどのブラウザでも bitmap フォントを使用できなかった、ということがありました。(Firefox はオプションを入れればできるみたいなのを最近見たんですが試さず)

で、それなら自力でレンダリングしたらいいんじゃないかなと思いつつ、面倒でやってなかったのですが、bdf のフォーマットがただのテキストファイルということを知って多少やる気が沸いたのでやってみました。

依存しているブラウザの機能は

  • canvas
  • 2d Context
  • fillRect

だけなので canvas が実装されていれば大抵のブラウザで動きます。

日本語も対応 bdf さえあれば描けるのですが、JS の charCodeAt でとれる数値と、bdf のコードポイントが一致していないといけないので、普通は変換が必要です。mplus の bdf 用の変換器 (というか jis から ucs) は書いたのを一緒のレポジトリにいれてあります

どや

2010年 10月 13日

2010年 10月 12日


そういえば、月読尊という神様について、自分は女神だと思っていたけれど、(ハッキリはしないものの) 基本的には男神らしい。松尾大社の月読神社も男神らしい。なんで自分が女神だと思っているのかはよくわからないが (クロノクロスのせい?)、男神ってのは、あんまりピンとこないなあ。

2010年 10月 09日

ワンダーワンダーの足利義政の回がおもしろかった

2010年 10月 08日

gerry++

2010年 10月 07日

vim、三項条件演算子の第二項と第三項を入れかえる

nnoremap e3 :s/?\s*\((.\{-1,})\\|\S\+\)\s*:\s*\((.\{-1,})\\|\S\+\)/? \2 : \1/<CR>

でいける。


以下つくりかたのメモ

#!/usr/bin/env perl
use strict;
use warnings;
use Test::Most;

my $tests = [
	'aa ? bb : cc' => 'aa ? cc : bb',
	'aa ? bb : cc | foobar' => 'aa ? cc : bb | foobar',
	'aa ? (bb bb) : (cc cc)' => 'aa ? (cc cc) : (bb bb)',
];

while (my ($a, $b) = splice @$tests, 0, 2) {
	$a =~ s/\?\s*(\(.+?\)|\S+)\s*:\s*(\(.+?\)|\S+)/? $2 : $1/;
	is $a, $b;
}
done_testing;

みたいなのを書いて正規表現を確定させる

eregex.vim を入れた状態で

:echo E2v('\?\s*(\(.+?\)|\S+)\s*:\s*(\(.+?\)|\S+)')

する

でてきた正規表現でだいたいいいのだけれど .vimrc に書くと \| が | として認識されるので \| は \\| にさらに置換する