カテゴリー
technology

JavaScriptで絵を描く(Processing.js)

各種ウェブサービスの規模を1枚で表現するために書いた図をブログに載せようと思ったのが始まりだったのに、いつの間にか Processing および Processing.js のお勉強開始。さらにはTTFフォントをSVGに書き出ししたり、ゴールが見えなくなりそうで息切れ気味。
ひとまず静止画だけはできたので一旦公開。
2009年4月のユニークビジター数

データ出典: compete




カテゴリー
technology

ブログパーツのテスト

カテゴリー
technology

MT::Blog::clone()の罠

仕事でMTをごにょごにょいじってる。バッチ処理中にMT::Blogのclone()を使ってガンガン作成しようとするとエラーが出た。

DBD::mysql::st execute failed: Column 'templatemap_template_id' cannot be null at /path/to/MT/extlib/Data/ObjectDriver/Driver/DBI.pm line 348, <> line 4.

管理画面のブログ一覧から「ブログの複製」を実行すると特に警告もなく終了する。もちろんログに何も出ていない。
いろいろ調査していくとMT::Blog::clone()で、え?と思う実装が。(以下ソースは 4.23 のもの)

require MT::Template;
$iter = MT::Template->load_iter(
{ blog_id => $old_blog_id, type => { not => 'widgetset' } }
);
my $tmpl_processor = sub {
my ( $new_blog_id, $counter, $tmpl, $tmpl_map ) = @_;
$callback->($state . " " . MT->translate("[_1] records processed...", $$counter), 'tmpls')
if $counter && ($$counter % 100 == 0);
my $tmpl_id = $tmpl->id;
$$counter++;
delete $tmpl->{column_values}->{id};
delete $tmpl->{changed_cols}->{id};
# linked_file won't be cloned for now because
# new blog does not have site_path - breaks relative path
delete $tmpl->{column_values}->{linked_file};
delete $tmpl->{column_values}->{linked_file_mtime};
delete $tmpl->{column_values}->{linked_file_size};
$tmpl->blog_id($new_blog_id);
$tmpl->save or die $tmpl->errstr;
$tmpl_map->{$tmpl_id} = $tmpl->id;
};
$counter = 0;
while (my $tmpl = $iter->()) {
$tmpl_processor->($new_blog_id, \$counter, $tmpl, \%tmpl_map);
}

パッチでも送りつけようかと思ったけど、とりあえず普通にCGI経由で使っていれば問題がないので(顕在化しない)ブログに公開する程度にする。

カテゴリー
technology

TimesWidgets by The New York Times

あの The New York Times がブロガー向けにウィジェットを提供しはじめた。かなりに自由にカスタマイズできるようになっていて、使ってみたくなったので張ってみる。

しかし新聞が売れなくなって来ている昨今、オンライン版サービスで直接広告収入に結びつかない活動をいつまで続けられるのかね?うまくいくなら見習いたい。

カテゴリー
technology

Subversion + Trac 導入 on CentOS

Subversion と Trac の導入は過去に何度もやっているのに、毎回調べないと思い出せないくらいの頻度でしか行わないので面倒。ということで CentOS のケースをメモ。
ついでに SyntaxHighlighter の導入もして、かつコマンドライン風味とPerl風味を自作してみたが、その件は後日。

カテゴリー
technology

MT4 アップグレート+Redirect+Action Stream

MT4が出たのは知っていたが別に必要がなかったのでほって置いたのに、なぜか昨夜火がついて 3.34 からのアップグレードを実施。
移行自体はあっけなく終了。テンプレート関係の問題もでず、そのまま再構築しても以前と全く同じデザインで再構築された。ついでに以前から気になってたデータベース charset が latin1 のままになっていた問題を解決して満足した。
あまりにもうまくいきすぎてつまらないので、テンプレート初期化を実行。あー、もうー。その後は結構面倒。標準テンプレートに戻ったわけなので、新規ブログを作るときのテンプレートデザインプロセスそのまま。
まず Widget Manager がオフになっているのでプラグイン設定画面でオン。次にWidget 関連のタグ変わってたので変更(WidgetManager -> WidgetSet)。widget関係の標準スタイル名が変更になっているので修正(module-XXX -> widget-XXX)。あとはウィジェットセットを新規に作成して、ウィジェットセットをサイドバーで読み込むよう include の記述をして完了。

カテゴリー
technology

携帯サイトへの自動転送テストとApacheで携帯User-Agent判定方法

仕事で運営しているサイトで携帯版ページを試験的に公開するにあたって、携帯からアクセスがあった場合に自動転送する処理をApacheでどうやるのか調べていた。結論から言えば User Agent で振り分けるだけなんだけど各携帯端末の User Agent の値がまとまっていなくてちょいと苦労した。
そういえば7月から自前の携帯はiPhone一本になったため携帯サイトの動作・表示確認がしづらくて困ったな。そんなときのための携帯ブラウザシミュレータ。docomoはシミュレーターを提供しているが手元の環境が Mac OS X なので VMware で Windows 起動して検証した。auは現在シミュレータ提供停止中。SoftBankは会員登録しないとダウンロードできないので面倒なのでダウンロードせず。
一旦iモードシミュレータで確認して、あとはTwitterで元気玉メソッド。あっという間に全国から(?)4キャリア14機種の検証結果が集められた。皆様その節はありがとうございました。
すぐに忘れてしまいそうなので設定をまとめておく。

カテゴリー
technology

DBIx::MoCoと戯れる

最近仕事で DBIx::MoCo を使ってる。実装が軽いのとリストメソッドチェーンが気持ち良くて、データベーステーブルありきの実装の際は一番簡単にO/Rマッパを実装できるんじゃないかな。
ところが、はまった箇所があったので、忘れないようメモ。

カテゴリー
technology

Google って検索キーワード補正に英和辞書も使ってる?

カッとなってから2ヶ月越しでポチっとしてしまった Macbook Air を迎えるために調べ物をしていて気づいたのだが、Google って英単語と日本語の表記揺れも対応しているのですね。
実際に検索したキーワードは「macbook air emobile」。その結果では「イーモバイル」も強調表示されていて、もちろん検索結果に入ってる。
google_results
Google で「macbook air emobile」を検索した結果

カテゴリー
technology

Postfix で不要なローカルユーザーへのメイルを拒否する方法

新しいマシンにやっと移行できた翌日なぜか見慣れぬディレクトリが存在することに気づいた。

/var/mail/Maildir/

あれ?Postfix の特別なディレクトリかと思って存在するメイルを調べたら mail@5net.com 宛を受け取ってる?え?そんなユーザーいたっけ?でもユーザーを削除していいのかは不明。どうすべきか…
ということで、アカウントそのものは削除せずアカウントが存在してもメイルを受けない設定をしてみた。少し調べたところではログインアカウントとは別にメイルアカウント用のマップファイルを作るのがまっとうな方法らしいが、ログインアカウント作成時に都度マップファイル更新も面倒なので、拒否したいユーザーのリストを作ることにした。