2008-04-29 Tue
* レコーディング・ダイエット [health] 1 user
周囲の人にはわりと公言してましたが,ダイエット中です.公言しているの は後に引けなくするためなので,ここにも書いとくことにします.
ご多分にもれず,きっかけはこの本.
まだ2ヵ月ちょっと (体重・体脂肪率をちゃんと測定し始めてから丁度2ヵ月 くらい) なので,今後どうなるかわからないけど,今のところ1ヵ月当たり 2.5 kg くらいの割合で減量できているらしい.
縦軸はひと目盛 1 kg.具体的な数字は一応秘密.
以下雑感:
- 実は今まで「成人男性の標準的な摂取カロリーは 2200 kcal くらい」という中途半端な認識でいたのだけど,そんなもの人によって違うという当たり前のことをようやく認識した.私のように背が低い場合,適切な摂取カロリーはもっともっと低いのだ.
- で,これまでの食生活はというと,下手すると3食コンビニ弁当とかやっていたわけで,あとは,学食で夕食を食べた後,つい購買でお菓子買ったりとか.そりゃ太るわなあと実感.
- というわけで目標は1日当たり 1500 kcal に設定.
- ただし無理をしない.飲み会のときとか,出て来た物はちゃんと食べる.だから飲み会前後はちょっと食べるのを抑え気味にするけど,それもあまり気にしすぎないことにしている.
- 1500 kcal を 3 食で割ると 1 食 500 kcal なわけだけど,500 kcal に収めるのはなかなか大変.しばらく試行錯誤した結果,がっつり食べるのは1日1食でいいやと思うようになった.朝・昼をおにぎりとか栄養機能食品の類 (SOYJOY とか) で済ますようにすると,夜は 1000 kcal 近く取れる.3食均等に食べるよりこの方が満足度が高い.
- 栄養機能食品べーんり.食事代わりにするだけじゃなく,おやつとしてもよく食べている.つうか普通の菓子類カロリー高すぎ.あり得ん.
- 飲み物についてはちょっと困ったなあとか思っている.牛乳とか,ミルクティとか,常飲していたものが意外とカロリー高くて敬遠しがちになった.代わりにどうなったかというと,まあミネラルウォータを飲むんだけど,その他にノンカロリーコーラをやたらと飲むようになった.これはむしろ体に悪かったりしないのか? とちょっと心配.
- カロリー計算は,もともとコンビニと学食がメインなので,あまり苦にならない.ただし学食はやや困り物で,メニューを選ぶ時点ではカロリー表示がされているものとされていないものがある.会計をすますとレシートに合計カロリーが表示されるのだが,それを見て「あちゃー」となることが多い.せめてレシートに品物ごとのカロリーを表示してくれたら学習できるのにな.
2008-04-23 Wed
* PicLens 対応ウェブサイトの作り方 [firefox][logging] 1 user
Firefox のアドオン PicLens.これはすごい.ぐっと来た.
あまりにぐっと来たので,衝動的にこのサイトでも対応してみた.対応のし かたは以下のページに書いてある.
要は,画像の場所を列挙した Media RSS という XML ファイルを作って, RSS Autodiscovery で見つけさせればよい.うちの Media RSS はこんな感 じになった.
Firefox で PicLens をインストール済みの方は,メニューバーの右側
(Firefox の場合) や ボタンバー内 (IE の場合) にある青い矢印ボタンを
押してみてください.なんかダーっと写真が流れるはず.
(追記・訂正) すみません,当初 Firefox 専用だと思ってこの記事書いてた のですが,実は IE でも Safari でも動くようです.というわけで一部修正.
2008-04-19 Sat
* 世界のナベアツに顔認識で挑戦する [tech] 11 users
世界のナベアツにさまざまな方法で挑戦するのが流行っているようなので,便乗してみる.
入力された画像から認識された顔の数が,3の倍数か3のつく数字のときだけ 顔がアホっぽくなります.
CGI の実装言語は Perl,顔認識は Image::ObjectDetectモジュール (OpenCV の cvHaarDetectObjects),画像処理は Imagerモジュール,実装 は以下の各サイトを参考にしました.
- OpenCVを使って画像の物体認識をするPerlモジュール作った - spiritlooseのはてなダイアリー
- 顔にエフェクトをかけてプライバシーを守るWebサービスの作り方
- 404 Blog Not Found:perl - 顔を認識するcgi
参考というかほぼ丸パクリなので,むしろ一番大変だったのはレンタルサー バに root 権限無しで OpenCV インストールするところだったかも.その辺 の話は気が向いたら書く.
以下ソース:
#!/usr/bin/perl -T
use strict;
use lib "/home/swk/local/lib/perl";
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
use LWP::UserAgent;
use Imager;
use Image::ObjectDetect;
my $tmpdir = "/home/swk/www/nabeatsucv/tmp";
my $cascade = '/home/swk/local/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml';
my $nabeatsu_photo = '/home/swk/www/nabeatsucv/nabeatsu.jpg';
my $q = new CGI;
my $ua = LWP::UserAgent->new(timeout => 15);
my $tmpf = "$tmpdir/$$";
my $uri = $ENV{PATH_INFO};
$uri =~ s/^\///;
$uri .= '?' . $ENV{QUERY_STRING} if $ENV{QUERY_STRING};
my $res = $ua->get($uri, ':content_file' => $tmpf);
die "failed to retrieve $uri: $res->code" unless $res->is_success;
my $type = $res->header('Content-Type');
die 'not a image' unless $type =~ /^image\//;
my $image = Imager->new->read(file => $tmpf);
my $detector = Image::ObjectDetect->new($cascade);
my @faces = $detector->detect($tmpf);
unlink $tmpf;
if (&is_aho(scalar @faces)) {
my $aho = Imager->new->read(file => $nabeatsu_photo);
foreach my $face (@faces) {
my $aho_scaled =
$aho->scale(xpixels => $face->{width}, ypixels => $face->{height});
$image->paste(left => $face->{x}, top => $face->{y},
src => $aho_scaled);
}
} else {
foreach my $face (@faces) {
$image->box(
xmin => $face->{x},
ymin => $face->{y},
xmax => $face->{x} + $face->{width},
ymax => $face->{y} + $face->{height},
color => 'red',
filled => 0,
);
}
}
my $jpg;
$image->write(data => \$jpg, type => 'jpeg');
print $q->header(
-type => 'image/jpeg',
-content_length => length($jpg)
);
print $jpg;
sub is_aho
{
my ($n) = @_;
return ($n % 3 == 0) || ($n =~ /3/);
}
(追記) せっかくなので元ネタ的なものをリストアップしてみる.
- YouTube - 世界のナベアツ: 本家.標準形が見当たらなかったので派生形で.これもすぐ消えるか?
- 日本野望の会−Yabooo.org ? FizzBuzzはもう古い!世界のナベアツ問題。: JavaScript による常識的な実装.一連の流行の中ではおそらく最古か?
- PINKMAC - 世界のナベアツに挑戦のつもり: PHP による常識的な実装.
- 世界のナベアツ問題 - Heaven's Kitchen: Haskell による実装.常識的なのかどうか私には判断できません.
- 力試しにナベアツのような判定をするプログラムを作ろうとしたところ、問題が発生しました。 3の倍数や5の倍数は考えるまでもないんですが、3のつく数字をどう判定したらい.. - 人力検索はてな: 回答多数.いずれも割と常識的.
- 世界のナベアツに Squeak Smalltalk で挑戦する(改訂) - sumim’s smalltalking-tos: Smalltalk による非常識な (← 褒めてます) 実装.
- 世界のナベアツに Ruby で挑戦する - Tociyuki::Diary: Ruby による非常識 (同上) な実装.
- 世界のナベアツにアメばた会議で挑戦する|無料掲示板・アメばた会議: 集合知による実装.
- はてなブックマーク - 世界のナベアツにはてなブックマークで挑戦する - ネットランダム: 同じく集合知による実装.結果的にはアメばた会議の勝利だと思う.
2008-04-17 Thu
2008-04-16 Wed
2008-04-14 Mon
* メモリ増設 [caprice]
買ったとき [2004-09-05-2] のままメモリ 512 MB で使い続けて来たのだけ ど,やはりちょっと厳しくなって来たので 1 GB 増設して 1.5 GB にする. 実はだいぶ前に買ったまま放置していたのをようやく取り付けた次第.
BEST DO! の通販で,2008年2月10日購入.ノーブランド PC-3200 DDR400 CL3.4,870 円 + 送料 630 円.
というか講義資料用に PC 内部の写真を撮ろうと思い立ったついでだったり する.
(気が向いたら後で写真置く)
2008-04-13 Sun
* Google News の関連記事をまとめて読む Greasemonkey スクリプト [firefox] 9 users
新聞は複数紙を比べながら読みなさいと小学校で習ったわけですが,そうい う意味でも Googleニュースの「関連記事」機能はとても便利.しかし,表 示された記事を一つずつ開いて読まないといけないのが面倒くさい.なんと かAutoPagerize っぽい感じで一気に読めないものか.
レイアウトもスタイルもバラバラな複数のサイトをまとめて表示することに なるので,ページ連結はちと難しそうな感じ.というわけで,やや不本意だ けど inline frame を使うことにした.
動作例はこの辺をご覧下さい.
最初は全記事の iframe を一気に展開していたのだけど,冗談かと思うほど 重かったので方針変更.ある記事の iframe にマウスポインタを重ねると次 のを読み込み始めることにした.ついでなので,はてなブックマークのコメ ントも展開.はてブ関連のコードははてなブックマークコメントビューワを真似しました.
基本的には,画面の上の方にマウスポインタを置いて,ホイールで下向きに スクロールし続けて行くとそのまま全部読めるはずです.読み飛ばしたいと きはポインタをインラインフレームの右か左に外してスクロールさせればよ いのですが,読み飛ばしが早過ぎると次のページがまだ読み込まれていなく て逆にイライラする罠.
あ,順番に読まなくても,該当記事の見出しをマウスオーバすればその記事 が展開されるようにはなってます.けど読み込み待ち時間がうざいかも.
既知の問題 (というか作ってみてわかった問題):
- iframe のサイズが決め打ち.なんかいい方法ないんですかね.
- ホイール付マウスがないと,かなり使いにくいはずです.本当はキーボードのみでも読めるようにしたい.適当なショートカットキーを設定して iframe にフォーカスできるようにすればよい?
- マウスポインタをピクリとも動かさず,ホイールだけでスクロールして新しい iframe に突入しても,onmouseover は反応しないようです.まあ実際にマウスを使っている場合はピクリとも動かないことはあり得ないのだけど,例えば Let's Note のホイールパッドでクルクルしているとこの問題に当たります.
- まだ割と重い.(単に私のマシンが非力なだけか?)
- ていうかぶっちゃけ iframe うざい.むしろタブをぶわーっと開きまくるようにした方が便利かも?
* tb-standalone の perl 5.005 → 5.8 移行 [logging][homenet]
Storable の互換性の問題 [2006-03-25-3] で「Byte order is not compatible」とか言われるため perl 5.005_03 で使い続けていた tb.cgi だが,さくらインターネットで使われている OS が FreeBSD 6.x になり perl 5.005_03 が無くなったため,動かなくなっていた.というわけでしば らくトラックバックを送ることも受け取ることも,過去のものを表示するこ ともできなくなっていたのだけど,ようやく重い腰を上げて対応することに した.
ここにある「$Storable::interwork_56_64bitをtrue値に設定」は,Out of memory とか言われてダメだった.
というわけでここの真似をして,いったん perl 5.6.2 で読んでから Data::Dumper で Dump して,改めて perl 5.8.8 で store し直すことにし た.
*.stor を *.stor.old にリネームしてから dump.pl,restore.pl の順に 走らせる.一応うまくいったっぽい.
dump.pl:
#!/usr/local/bin/perl5.6.2
use strict;
use lib "."; # 古い Storable 一式をカレントディレクトリに置いた
use Storable;
use Data::Dumper;
$Data::Dumper::Indent = 0;
$Data::Dumper::Useqq = 1;
while (<*.stor.old>) {
my $new_file = $_;
$new_file =~ s/stor$/txt/;
open(NF, "> $new_file") or die;
my $data = Storable::retrieve($_);
print NF Data::Dumper->Dump([$data], ["data"]), "\n";
close(NF);
}
restore.pl:
#!/usr/local/bin/perl5.8.8
use strict;
use Storable;
while (<*.txt>) {
my $new_file = $_;
$new_file =~ s/txt$/stor/;
open(OF, $_) or die;
my ($line, $data);
$line = <OF>;
eval $line;
close(OF);
Storable::store($data, $new_file);
}
以上,最近 7 日分 (今月分を全部読む)
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2008-04-30 00:33
Shingo W. Kagami - swk(at)kagami.org

