2008-03-01 :-)
_ 朝ったー
0700 起床。チャリったー。多摩川河川敷にて河津桜が咲いてました。
_ [桜庭一樹] 2/24 放送の桜庭一樹な情熱大陸を見た
( via 桜庭一樹オフィシャルサイト Scheherzade - Diary )
桜庭一樹さんの作品は GOSICK、「砂糖菓子の弾丸は撃ち抜けない」[ 20041113#p07 ]、「推定少女」[ 20041102#p07 ]を読んだくらいしか知らないのだけど( 全部ライトノベルですね )名前だけは知ってるので録画して見ました。ハサミの形をしたヘアピンがツンを表していました。読書は 1 年で 400 冊、1 日 1 冊。読むの速いです。
「書いたら出ていってしまうのでたくさん読むんです」
_ [自分の仕事をつくる]自分の仕事をつくる
仕事とはそもそもなんだ? と考える本です。
5 年前に読んでたら感動したかもしれません。
もしくは NHK プロフェッショナル仕事の流儀 を見るのもいいです。
4794965850
2008-03-02 :-)
_ [ロマサガ]燃えよロマサガ2:アルファルファモザイク
( via しばたさんのブックマーク )
秋葉でロマサガ2を買って来て、今やってるんだが
前の持ち主のセーブデータが残ってたんでラストダンジョンに出陣したら…メンバー全員男なのに※テンプテーション覚えてないんだ
これ…クリア出来たんかな?
無理だよな?
ロマサガをプレイしたおかげで常にセーブデータを二重化する習慣がつきました。こんな使い方。
- ダンジョンに入る前のセーブデータ
- ダンジョン中のセーブデータ
ダンジョンをクリアしたら 2 つとも同じにします。ロマサガ脳。あとテンプテーションを見切ってなくてもクイックタイムがあれば勝てます。
2008-03-03 :-)
_ 朝ったー
0540 起床。ねむ
_ [おおたか静流][植松伸夫][ファイナルファンタジーIII 悠久の風伝説]通勤ったー
ファイナルファンタジーIII 悠久の風伝説
FF3 アレンジです。原曲をキーボードで演奏しなおしたくらいの軽いアレンジです。各トラックの最初にナレーションが入ります。FF3 の物語を沿うように展開していきます。おおたか静流さん「Roaming Sheep」もあります。「Roaming Sheep」は FF6 TVCM で使われました。懐かしい。
B00005FO1M
_ 仕事
0830 出勤。
_ 「第一回チキチキ 日本ペアプログラミングの会java-ja支部会」
( via 航海日誌 )
kakutani ”大きくなった油田の火事は、ニトロで派手に吹き消すそうじゃないか…”
AKIRA で見た気がするんだが
だれのセリフだっけ
金田?
_ 無気力だったころにヲレがやったこと
- 本を捨てた
- CD を捨てた
- 植松伸夫の音楽だけを聴いた
- 料理を作り始めた
- 写真( IXY DIGITAL を買った )を撮り始めた
- とりあえず行動した
あとさき考えずにとりあえず行動してました。体を動かしておいて、感情はあとからついてきます。病院で診察してもらってないので うつ病だったかどうかは知りません。病院へ行く気力が無かったんですけどね。
_ [ChangeLog][コードリーディング][がらくた][高林哲]がらくたを読む - changelog-checker
http://0xcc.net/attic/changelog-checker
ChangeLog のヘッダごとの変更回数を調べるプログラムです。
このプログラムは GNU コーディング規約に従った ChangeLog 形式を想定してます。たぶん。
以下に簡単な変更履歴の例をいくつか示します. まず,ヘッダ行で誰がいつ変更を行なったかを述べます. 次に,個々の変更の説明を書きます. (以下の例は,Emacs と GCC から取ったものです.)
ChangeLog の例があります。
1998-08-17 Richard Stallman <rms@gnu.org> * register.el (insert-register): Return nil. (jump-to-register): Likewise. * sort.el (sort-subr): Return nil. * tex-mode.el (tex-bibtex-file, tex-file, tex-region): Restart the tex shell if process is gone or stopped. (tex-shell-running): New function. * expr.c (store_one_arg): Round size up for move_block_to_reg. (expand_call): Round up when emitting USE insns. * stmt.c (assign_parms): Round size up for move_block_from_reg.
「日付 名前 <メールアドレス>」がヘッダです。「*」から始まる段落?が変更の説明です。
これを踏まえてコードを読みます。短いです。
use strict; my $date_and_name = undef; my $cnt = 0; while (<>) { next if /^\s*$/; # 空行は無視 chomp; if (/^\d/) { # 日付にヒット if (defined $date_and_name) { # ヘッダを通過してたら printf "%8d $date_and_name\n", $cnt; # ヘッダと変更回数を印字 } $date_and_name = $_; # ヘッダを設定 $cnt = 0; # 変更回数をクリア } elsif (/^\s+\*/) { # 変更の説明「*」にヒット $cnt++; } } printf "%8d $date_and_name\n", $cnt; # ヘッダと変更回数を印字
解析するために状態変数を使う方法を思いつきましたが、デザインパターン脳のひとは State パターンを使ったりするんでしょうか。
コード冒頭のコメントに Copyright があります。
# Copyright (C) 1999 Satoru Takabayashi <satoru-t@is.aist-nara.ac.jp>
NAIST( 奈良先端科学技術大学院大学 )に居たころに書いたようです。ちなみに cdbiff は以下のようになっていました。
# Copyright (C) 2001 Satoru Takabayashi <satoru@namazu.org>
メールアドレスを読むとコードの歴史が分かって面白いです。
2008-03-04 :-)
_ 朝ったー
0540 起床。ねむ
_ [植松伸夫][ファイナルファンタジーIV ケルティックムーン]通勤ったー
ファイナルファンタジーIV ケルティックムーン
FF4 アレンジです。アイリッシュ音楽でアレンジされてます。電子音ではなくて生の音ですってよ。民族楽器の暖かさというか、柔らかい音が心地よいです。FF 音楽を楽器でアレンジしたのはこれが初めてです。たぶん。長すぎずキレイにまとまっているので聴きやすいです。
B000058AB1
_ 仕事
0830 出勤。
_ ヴァルキリープロファイル レナス
- プレイ時間 2:30
- 最初のダンジョンをクリア
- どうやってダンジョンから出るんだ
_ [mixi][Plagger]mixi => Plagger => Publish::feed ってやってませんが
Publish する先によってはマイミクシィ限定公開してるひとの mixi 日記を web に置けるのかしら。やらないけど。
_ 絡まれ力
先日 IRC で友人が「絡まれた」と言ってて、そういえば私はその友人と対して変わらない行動してるはずなのに絡まれたことが無いことに気づいた。いままで絡まれなかったからといって今後も絡まれないとは言えないし、いまどきならば電車に乗ってるときに「ハロー、ジェントルメン。おまえの命を貰いにきた」とピエロの格好したひとに唐突に刺されることだってあるのだけど。とりあえず戦闘力は低いので逃げることだけ考えよう。そのためにも足腰は鍛えておくと嬉しい。
_ [コードリーディング][がらくた][高林哲]がらくたを読む - changelog2graph
http://0xcc.net/attic/changelog2graph
ChangeLog のヘッダごとの変更回数をグラフにします。
冒頭から読みます。
use strict; use Chart::PNGgraph::lines; use Time::Local;
使用するモジュールです。
Chart::PNGgraph はこちら。
詳しいことは GD::Graph を読めと書いてあります。GD::Graph はこちら。
ここを読むとプログラムで使っているメソッドなどの意味が分かります。Chart::PNGgraph は main で使っています。$my_graph->set では OPTIONS にあるオプションを設定してます。
main(); sub main { my %freqs = analyze_changelog(); # ChangeLog を何か解析した結果のハッシュ my $first_time = get_first_time(\%freqs); # ChangeLog 内の最初の日付? my $last_time = get_last_time(\%freqs); # ChangeLog 内の最後の日付? my @data = generate_data(\%freqs, $first_time, $last_time); # グラフ用のデータ作成? my $my_graph = new Chart::PNGgraph::lines(600,400); # グラフインスタンス作成 $my_graph->set( # オプション設定 transparent => 0, two_axes => 1, line_width => 2, x_label => 'Date', y_label => 'Changes', title => 'ChangeLog Graph', x_label_skip => int(@{$data[0]} / 8) + 1, y_label_skip => 2, r_margin => 20, textclr => "black", dclrs => [ qw(red blue green pink cyan) ], ); print $my_graph->plot(\@data); # グラフ書きませう }
main から呼び出しているメソッドはまだ読んでませんが変数名などからするとコメントに書いたような処理だと思います。
analyze_changelog を読みます。ChangeLog を解析してヘッダごとの変更回数を数えて ヘッダ=> 変更回数のハッシュにしています( ref. GNU コーディング規約 - 変更履歴の形式 )。
sub analyze_changelog () { my %freqs = (); my $date = undef; my $freq = 0; while (<>) { next if /^\s*$/; chomp; if (/^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+ (\w+)\s+(\d+)\s+(?:[\d:]+)\s+(\d+)(.*)/x) { # Old type format: # Wed Jun 2 17:55:44 1999 Foo Bar <foo@bar.jp> my $mon = $month_names{$1} + 1; my $mday = $2; my $year = $3; my $rest = $4; # Convert it to ISO 8601 type. $_ = sprintf "%4d-%02d-%02d%s", $year, $mon, $mday, $rest; } if (/^(\d{4}-\d{2}-\d{2})\s/) { # ISO 8601 format: # 1999-06-02 Foo Bar <foo@bar.jp> if (defined $date) { $freqs{$date} = $freq; } $date = $1; $freq = 0; } elsif (/^\s+\*/) { $freq++; } } $freqs{$date} = $freq; return %freqs; }
コメントにもありますが「Old type format」と「ISO 8601 format」の 2 種類の日付の形式を処理しています。「Old type format」ならば「ISO 8601 format」に変換しておき( これを「正規化する」といいます )「ISO 8601 format」として処理できるようになります。
日付を探している部分が
if (/^(\d{4}-\d{2}-\d{2})\s/)
となっていて $date の部分が
$date = $1;
になっています。結局 $date にはヘッダのうち日付の部分が格納されます。
これで %freqs に「日付 => 変更回数」のハッシュを作り、返します。
ところで「ISO 8601」ってなに?
YYYY-MM-DD や hh:mm:ss などの形式のことらしいです。
get_first_time を読みます。
sub get_first_time ($) { my ($freqs_ref) = @_; my $first_date = (sort keys %{$freqs_ref})[0]; return date_to_time($first_date); }
freqs_ref は analyze_changelog で作ったハッシュです。(sort keys %{$freqs_ref})[0]; を分解します。
sort keys %{$freqs_ref}
%{$freqs_ref} を key でソートします。key は日付です。
()[0]
ソートした結果の最初の要素です。
date_to_time を呼んでるので date_to_time を読みます。
sub date_to_time ($) { my ($date) = @_; if ($date =~ /^(\d+)-(\d+)-(\d+)/) { my $year = $1; my $mon = $2 - 1; my $mday = $3; return timelocal(0, 0, 0, $mday, $mon, $year); } else { die "$date: invalid date format"; } }
timelocal ってなに?
ということで日付からシステム起動時からの秒数へ変換します。bulkplot でも秒数に変換して処理してました。日付はシステム起動時からの秒数にして処理すると、ライブラリなどのインターフェース部分に渡すときに日付の形式を処理する手間が省ける( ISO 8601 なのかそれ以外なのか、異常な形式なのかとか ) という意図でしょうか。「日付クラス」というのが存在するならばそのインスタンスを受け渡しすると良さそうですがどうなんでしょう。
get_last_time を読みます。
sub get_last_time ($) { my ($freqs_ref) = @_; my $last_date = (reverse sort keys %{$freqs_ref})[0]; return date_to_time($last_date); }
get_first_time に似てますが reverse してるところが違います。処理は以下の手順です。
- 「日付 => 変更回数」のハッシュを日付でソート
- 逆順にする
- 最初の要素( 日付 )を取得
- 日付をシステム起動時からの秒数に変換
generate_data を読みます。
sub generate_data ($$$) { my ($freqs_ref, $first_time, $last_time) = @_; my @dates = (); my @indps = (); # independent my @cumls = (); # cumulative my $sum = 0; for (my $time = $first_time; $time <= $last_time; $time += 60 * 60 * 24) { my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($time); $year += 1900; $mon++; my $date = sprintf "%4d-%02d-%02d", $year, $mon, $mday; push @dates, $date; if (defined $freqs_ref->{$date}) { push @indps, $freqs_ref->{$date}; $sum += $freqs_ref->{$date} } else { push @indps, 0; } push @cumls, $sum; } return ([ @dates ], [ @indps ], [ @cumls ]); }
グラフに使うデータを作ってます。作っているデータは以下の 3 つです。
- 日付( @dates )
- 日付ごとの変更回数( @indps )
- 累積変更回数( @cumls )
作ったデータを sub main で $my_graph->plot(\@data); してグラフを作成します。
for にある time を増加させる式に注目。
for (my $time = $first_time; $time <= $last_time; $time += 60 * 60 * 24) {
60 * 60 * 24 は 86400 です。ここに 86400 と書かずに 60 * 60 * 24 と書いてます。この数値の並びを見ると時間を扱ってるということが分かります。60 が秒数、60 が分、24 は 1 日の時間だと理解できます。結局 86400 は 1 日の秒数だということが分かります。慣れてるひとは 86400 という数値を見ただけで 1 日の秒数を表してるのだと分かるかもしれません。
2008-03-05 :-)
_ 朝ったー
0540 起床。ねむ。
_ [植松伸夫][ファイナルファンタジーV ディア・フレンズ]通勤ったー
ファイナルファンタジーV ディア・フレンズ
FF5 アレンジです。オリジナルに近いアレンジです。1 曲目「AHEAD ON OUR WAY」( ファイナルファンタジーVメインテーマ )はフルートかしら?オリジナルの柔らかい曲の雰囲気を再現しています。全体的にゆるい曲をアレンジしてるのでアルバム全体の雰囲気もゆるくなっています。
スタッフとして「おれたちゃ海賊」に植松伸夫さんや岡宮道生さんなどスクウェアのスタッフが参加してたり、「栄養ドリンク提供: 植松玲子、伊藤裕之」などと書いてあったりお茶目です。
B00005FNVP
_ 仕事
0830 出勤。
_ プロジェクトの最初にやること
- trac月 - コマンドプロンプト - create-project.bat MyProject
- mkdir -p G:\MyProject\branches
- mkdir -p G:\MyProject\tags
- mkdir -p G:\MyProject\trunk
- G:\MyProject をリポジトリ へインポート
- G:\MyProject を削除
- G:\MyProject へ をチェックアウト
_ お世話になっているプログラムの求めしところ
オペレーティングシステムの求めしところ に便乗します。
NetBSD is a free, secure, and highly portable Unix-like Open Source operating system available for many platforms, from large-scale server systems to powerful desktop systems to handheld and embedded devices. Its clean design and advanced features make it excellent in both production and research environments, and the source code is freely available under a business-friendly license.
The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.
qmail is a secure, reliable, efficient, simple message transfer agent. It is designed for typical Internet-connected UNIX hosts. As of October 2001, qmail is the second most common SMTP server on the Internet, and has by far the fastest growth of any SMTP server.
It works for Lycos. It works for citysearch.com. It works for pobox.com. It works for 1.85 million more .com's. It works for several of the Internet's largest domain-hosting companies: directNIC, MyDomain/NamesDirect, Interland, Dotster, Easyspace, Namezero, Netfirms, and Rackspace Managed Hosting. It'll work for you too.
求めしところ? qmail.jp はこんな。
djbdns は安全、確実、高速、簡潔、設定も簡単なDNS サーバとツール群です。
Postfix attempts to be fast, easy to administer, and secure. The outside has a definite Sendmail-ish flavor, but the inside is completely different.
Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added. The introductory document details some of the unique features of zsh. It assumes basic knowledge of the standard UNIX shells; the intent is to show a reader already familiar with one of the other major shells what makes zsh more useful or more powerful.
Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.
Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files.
Despite what the above comic suggests, Vim can be configured to work in a very simple (Notepad-like) way, called evim or Easy Vim.
Emacs is the extensible, customizable, self-documenting real-time display editor.
quickmlサーバは超お手軽なメーリングリストシステムです。 quickmlサーバを利用すれば、超お手軽なメーリングリストサービスを提供できます。
_ [Perl][Schwartzian Transform][ChangeLog][シュウォーツ][コードリーディング][がらくた][高林哲]がらくたを読む - clgrep
ChangeLog を grep します。
ruby で書き直したものが 横着プログラミング 第1回: Unixのメモ技術 にありますが、せっかくだからがらくたのほうを読みます。Unixのメモ技術のほうがコードが短くなっていますが、これはがらくたにあるコードから機能を削除したためです。
Perl プログラムです。
#! /usr/bin/perl -w # # clgrep - ChangeLog grep
Copyright が続きます。ちなみに Unixのメモ技術は「(公開日: 2002-03-18)」となっています。
# # Copyright (C) 2000 Satoru Takabayashi <satoru-t@is.aist-nara.ac.jp> # All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # # You can redistribute it and/or modify it under the terms of # the GNU General Public License version 2. #
Getopt::Long を使ってオプションを解析します。
Getopt::Long::Configure('bundling'); GetOptions( 'i|ignore-case' => \$opt_icase, 'p|sort-by-page' => \$opt_sort, 's|statistics' => \$opt_stat, );
hio.jp のひとが和訳してくれているのでそちらを読みます。
bundling は オプションの合成 にあります。オプション -v -a -x を -vax と合成する機能です。
オプションの概要はあるのだけど具体的にどのような動作をするのかよく分からないので実際に使ってみます。quickml の ChangeLog に使ってみます。
普通に clgrep
% ./clgrep 2004 ~/usr/local/quickml-0.7/ChangeLog 2004-06-09 Satoru Takabayashi <satoru@namazu.org> 2004-06-08 Satoru Takabayashi <satoru@namazu.org> 2004-05-17 Satoru Takabayashi <satoru@namazu.org> 2004-04-01 Satoru Takabayashi <satoru@namazu.org> :
変更したファイル名と変更した回数を印字するようです。
% ./clgrep -s ~/usr/local/quickml-0.7/ChangeLog 41 lib/quickml/core.rb 28 quickml 22 lib/quickml/mail.rb 19 lib/quickml/server.rb 19 lib/quickml/config.rb 14 quickml.in 12 Makefile 10 lib/quickml/utils.rb 6 quickmlrc.sample.in 5 lib/quickml/gettext.rb :
大文字小文字を区別しない。
% ./clgrep -i SATORU ~/usr/local/quickml-0.7/ChangeLog 2004-06-09 Satoru Takabayashi <satoru@namazu.org> 2004-06-08 Satoru Takabayashi <satoru@namazu.org> 2004-05-17 Satoru Takabayashi <satoru@namazu.org> 2004-04-01 Satoru Takabayashi <satoru@namazu.org> 2004-03-28 Satoru Takabayashi <satoru@namazu.org>
オプション -p が何をやってるのか分からないのでコードを見てみます。sort_by_page です。
sub sort_by_page { my @logs = @_; return map { $_->[0]; } sort { $a->[1] <=> $b->[1]; } map { if (/^ \* .*?\(pp?\.(\d+)/) { [ $_, $1 ]; } else { [ $_, 0 ]; } } @logs; }
map と sort を駆使した処理を「 Schwartzian Transform 」と言うのだそうです。
行データを、指定したフィールドでソートするようなときには、ずばり「シュウォーツ変換 (Schwartzian Transform)」!!! 比較の度にいちいち split する手間がはぶけて効率的!
「Effective Perl」に詳細が書いてあるそうです。持ってません。誰かください。
if (/^ \* .*?\(pp?\.(\d+)/) はページ番号(「p.」または「pp.」)にヒットします。たとえば ruby の ChangeLog にそのような箇所があります。
Wed Aug 22 05:51:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org> * util.c (ruby_strtod): replaced by the implementation by David M. Gay inspired by William D. Clinger's paper "How to Read Floating Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101]. a patch from Satoshi Nakagawa <snakagawa AT infoteria.co.jp>. [ruby-dev:31582]
論文を引用するなどした場合に ChangeLog に書くんですね。
4756130577
_ [百度][baidu]百度(baidu)がツンツンすぎる
% grep "Wed Mar 05" /var/log/httpd/error_log | grep -E '122\.152\.(140|128)' | awk '{ print $8}' | tr -d ] | sort | uniq -c | sort -nr 2217 122.152.140.170 2204 122.152.128.11 2193 122.152.128.6 156 122.152.140.5 101 122.152.140.7 18 122.152.128.78 5 122.152.140.139 3 122.152.128.49 2 122.152.128.46 2 122.152.128.47 1 122.152.140.140 1 122.152.140.16 1 122.152.140.40
% grep "Wed Mar 05" /var/log/httpd/error_log | grep -E '122\.152\.(140|128)' | awk '{ print $8}' | tr -d ] | wc -l 6907
2008-03-06 :-)
_ 朝ったー
0440 起床。チャリったー
_ [植松伸夫][ファイナルファンタジーVI グランドフィナーレ]通勤ったー
ファイナルファンタジーVI グランドフィナーレ
FF6 のオーケストラアレンジです。30 年くらい前の映画音楽のような印象です。ようするにイマイチです。FF6 グランドフィナーレは植松伸夫さんによるオーケストラアレンジは初めての作品かな。植松さん本人もかなりショックだったようです。ライナーノーツに以下のように書いてます。
個人的には今回のアレンジアルバムの出来には満足していない。
僕の中でそれぞれの曲に対するイメージとはあまりにもかけはなれた作品になってしまった。これは決してアレンジャーの責任ではない。これだけは死守したいというイメージを明確にアレンジャーの人に伝えきれなかった自分の怠慢であり、「これがどんな出来になろうともアレンジしたのは僕じゃない。」という逃げ道を用意していた自分自身の責任である。
B000058A85
2008-03-07 :-)
_ 朝ったー
0540 起床。ねむ
_ [植松伸夫][ファイナルファンタジーVII リユニオントラックス]通勤ったー
ファイナルファンタジーVII リユニオントラックス
FF7 アレンジも含まれています。人気があった曲を収録したそうです。以下 3 曲はオーケストラアレンジされています。それ以外すべてオリジナルです。オリジナルサウンドトラックを持ってるひとはこの 3 曲のために買うわけです。
- F.F.VIIメインテーマ
- 片翼の天使
- エアリスのテーマ
3 曲ともオリジナルに忠実にアレンジされています。よく言えば期待どおりだし、悪く言えばひねりが無いです。
B000793EK2
_ 仕事
0830 出勤。
_ [技能][技術]技能と技術
- 技術
- 知識のうちの1つ
- 自分を否定できること
- 技能の変化に対応できること
- 技能
- 道具の使い方に長けたひと
- COBOLマスターとか
- 技能者
- 道具が変わると仕事できない
ref. Embedded Technology 2007[ 20071116#p06 ]
_ [木下史彦][角谷信太郎][XPJUG20th][XPJUG][アジャイルプラクティス]第20回 XPユーザー会
20回目となるXPユーザー会は『「アジャイルプラクティス」を携えて』と題して、2007年12月刊行の書籍「アジャイルプラクティス」をテーマに開催致します。
アジャイルプラクティス[ 20080225#p05 ]について監訳者 角谷信太郎さんと木下史彦さん によるお話です。XP 祭りは参加したことがあるのだけど XPJUG は参加したことが無かったので行ってみました。懇親会は申し込んだのだけど体力の限界が近かったのでキャンセルしました。ドタキャンで申し訳ないです。
最初に見たそのときから「気持ち悪い」「おぞましい」という感想を持っていた表紙なんですが角谷さんが解説してくれました( ref. [mixi] アジャイルプラクティス読み始め )。
今日の目標:プラクティス番号で会話できるようになる
角谷信太郎さん
- アサマシしようぜ
- 翻訳作業
- 目標は読みやすくすること
- アジャイル監訳
- でも最後は炎上した
- 本のタイトル
- これは、ある開発者の習慣である → それがたまたまアジャイルだった
- 達人プログラマに学ぶ
- 装丁
- 表紙は ピーテル・ブリューゲル-叛逆天使の墜落
- 天使と悪魔が入り乱れる
- 天使が上、悪魔が下、ということではない
- 天使の声、悪魔の声が交差する
- 揺れ動く開発者を表現してくれた
- 轟木さん GJ
木下史彦さん
- 天使とガネーシャ( 夢をかなえるゾウ )
- 言ってることは共通してる
- アジャイル開発者とは、アジャイル開発をしているひとのことである
- 「プログラムを書いていればプログラマーである」みたいな
- XPことはじめ
- サインアップするタスクをダーツで決めた
- 応募する
- XP 祭り 2006 に初めて応募した
- XPJUG は被り物するグループではない
- 当時 木下さんの話聴いてたよ![ 20060902#p02 ]
- 監訳作業
- 最後のほうはペア翻訳
- 数分おきにコミット
- それ以外は夜にお仕事
- 章ごとではなく好き勝手に翻訳しまくり
質疑応答
- リズムを作る
- スタンドアップミーティングから始めると良い。手軽だ
- 振り返りは毎週
- 習慣にするまで躾け役のひとを置くといいかもしれない
- 懸田剛さん
- アジャイルプラクティスで社内読書会した
- 「アジャイル」という言葉に過剰反応するひとがいた
- 「アジャイル」じゃなくて「天使と悪魔の言葉」など別のことをアピールして釣るといい
お二人からサインを頂きました。あざーす。
イベントの感想などをブクマするときの公式タグは「XPJUG20th」にしたいと思います。ご協力お願いします。
ということでタグは XPJUG20th です。
4274066940
4870318059
2008-03-08 :-)
_ [インスタントコーヒー][香味焙煎]買い物
インスタントコーヒー。カップ付きだよ!ということで釣られてみました。せっかくだから 2 つ買いました。このコーヒーを飲んだことが無かったのでちょうどよいいです。
_ [Gauche]gauche.night
この会場はもう行きたくないなあ。
- 音が大きい
- 話し声が聞こえないくらいの音量だった
- この音量には何か意味があるのか?
- 天井の照明の下にプロペラ( なにあれ? )がありその所為で灯りがチラつく
- 目が痛い
- 気持ち悪い
- この設計には何か意味があるのか?
- 座談会のスクリーンが無駄だった
- 計算機からの出力をスクリーンに映してた
- ステージの様子を映してくれ
- ステージの後ろにあるスクリーンには映してた
- そこに映して何か意味があるのか?
といったことを会場のアンケートに書いておきました。
第1部: 座談会「R6RSを斬る」
- プログラミング Gauche
- 7 章が Lisp 脳
- 本文と本文の間のコラムは本文の一部
- 署名入りのコラムは著者の独断と偏見
- おくづきをミス
- Scheme と Lisp でも飯を食える(川合)
- Gauche ソースコード完全解説欲しい(笹田)
- 7 つのプリミティブがあればプログラミング言語は実装できる
- Arc はまだ発展途上
- R6RS
- 「Scheme を名乗るな」等かなり盛り上がってたけどアルゴリズムとかオペレーショナルとかさっぱり分かりませんでした
- ポータブル重要
- スクリプト系でポータブルを無視したものがある
- そーいう奴にエンジニアリングを語って欲しくない
- バージョンが 0.1 違うだけで全然挙動が違う言語とか( ← Ruby のこと )
- すいません(笹田)
- 爆笑した
- eval は「えばーる」と読んでた
- 「いーばる」だと思ってた
- evaluate「いばるえいと」か( ref. e・val・u・ate - goo 辞書 )
第2部: デモ大会「gauche.gong」
ライトニングトークス。
- デモがあるなら最初に実演したほうが時間切れしなくて済む
- LT 5 分の時間はプレゼンの時間だけを計測してた
- 交代は時間に入らないようだ
- 交代するときにスクリーンに映らなかったりいくつかトラブルがあった
- リハーサルしてないのか?
- オブラブ2006夏[ 20070620#p02 ]の LT では全くトラブルがなかったのは凄かったんだな
- リハーサルしてたし
- 当時のオブラブLTスタッフは m_pixy さんか。m_pixy++
- 「Gaucheで作るPIC電子工作」がすごかった。
会場でプログラミング Gauche を先行販売してたので買いました。
あとトレーナーを貰いました。
4873113482
2008-03-09 :-)
_ [声優][ラブレター][伊藤静]女性声優からのラブレター
( via つっちぃのとこ )
伊藤静さんだそうです。
みわくんへ
なんでみわくんは、私の事を好きになってくれないの?
なんでみわくんは、金田朋子のギャグで笑ってるの?
もうやめて・・・。
もっと私と話をして欲しい、私の事を見てほしいの。
確かに私は自分勝手、みわくんの事をあまり考えてないわ。
でも、いつも応援してるんだよ。
みわくんの事を一番に考えてるんだよ。
みわくんに私は映ってる?
金田朋子、斎賀みつきばかり見てないでもっと私を見て欲しいの!
ねえ・・・。
ムリだったら言って欲しい。
そうしてくれたら諦めることができるから。
じゃないと、みわくんの事ばかり考えて、みわくんの事ばかり見つめちゃって・・・
もっともっと好きになっちゃうよ。
私がプールに行った時、必ず泣いてるのを知らないでしょ?
今度会う時は少しでも話がしたい。
お願い・・・
伊藤静を好きになってください
miwarin では山口眞弓さんからになりました。
_ [ケータイ][メール][movatwitter]ケータイメールの送信履歴が movatwitter で埋まっている
リア充
2008-03-10 :-)
_ 朝ったー
0540 起床。
_ [ファイナルファンタジーVIII オーケストラ・ヴァージョン][植松伸夫]通勤ったー
ファイナルファンタジーVIII オーケストラ・ヴァージョン
FF8 オーケストラアレンジです。「Liberi Fatali」「Eyes On Me」「Ending Theme」はたぶんオリジナルのままです。アレンジは分かりやすいというか、オリジナルの印象そのままにアレンジしてあるので過剰気味です。
B00003WGBZ
2008-03-11 :-)
_ 朝ったー
0540 起床。ねむ
_ [植松伸夫][ファイナルファンタジーIX オリジナルサウンドトラックプラス]通勤ったー
ファイナルファンタジーIX オリジナルサウンドトラックプラス
FF9 オリジナルサウンドトラックに収録されなかったぶんのオリジナル曲です。CD 1 枚ぶんです。別の商品としてではなくてオリジナルサウンドトラックを CD 5 枚にするとか DVD にするかして欲しかったです。いろいろな事情があるんだろうけど。
収録曲はムービーの曲が多いようです。「ルーファウス歓迎式典」なども収録されてます。
B000056UV4
_ 仕事
0830 出勤。
2008-03-12 :-)
_ 朝ったー
0540 起床。ねむ
_ [植松伸夫][ピアノコレクションズ ファイナルファンタジーV]通勤ったー
ピアノコレクションズ ファイナルファンタジーV
FF5 ピアノアレンジです。「Dear Friends」はピアノの良い雰囲気を作ってるんですが、全体的にどうも気持ち悪いです。「Critter Tripper Fritter !?」は最悪です。鍵盤を叩きつけるような演奏をしてるんですが、なんでこんなアレンジにしたんだ?
B00005L8V8
_ 仕事
0830 出勤。
_ 月刊 Windows Update
20GB くらいある C ドライブが容量不足になりました。他に D、E、F ドライブが各々 30 GB から 40GB ずつあります。C ドライブに Visual Studio をインストールしたのがイケナイようです。
_ [amazon]Amazonほしい物リスト、個人情報漏れまくりで祭に発展
( via いろんなとこ )
このサービス、名前とメールアドレスのどちらかで検索することができるのだが、このメールアドレスが曲者だ。率直に言おう。メールアドレスが分かればその人の本名を知ることができる。
amazon ウィッシュリストから名前が変わってたんですね。
昨日から騒がれていた(る?)ようです。私は amazon ほしい物リストは他人に見せるためのサービスだと思って使ってるので騒ぎになってる話題は問題にならないんですが、じつは今回の騒ぎは amazon ほしい物リストを世に広めるために amazon が意図的におこなったことであり、「 amazon ほしい物リストを晒しておくと誰かが買ってくれるかもしれないよ!amazon ほしい物リストを推進しよう!」という amazon の陰謀ではないでしょうか。なお、私のほしい物リストはこちらです。買って私に送るといいです。
2008-03-13 :-)
_ 朝ったー
0440 起床。チャリったー
_ [植松伸夫][ピアノコレクションズ ファイナルファンタジーVII]通勤ったー
ピアノコレクションズ ファイナルファンタジーVII
FF7 ピアノアレンジです。FF5 ピアノアレンジはかなりガッカリしたけど FF7 は良いです。ピアノアレンジとはこーいうものだよなあ、と思える作品です。「闘う者達」等のバトル曲もアレンジしてるのが驚きです。「闘う者達」はオリジナル曲よりもピアノアレンジのほうがスピード感があって良いです。
B00025E1VC
_ 仕事
0830 出勤。
_ FF のピアノコレクション
FF4 と FF6 は持ってないんです。
_ [光田康典][佐野電磁][KORG]KORG DS-10
- 発表!!DS10 光田康典さん
- KORG DS-10 佐野電磁さん
- KORG DS-10 中村隆之さん
- Touch the synth ESTi さん
光田康典さんと佐野電磁さんは KORG DS-10 の中の人だということは分かりました( ref. 多角的な情報を収集して情報をつなげるとその本筋が見えてくる[ 20080214#p01 ] )。
_ [バグレポート][bug]バグレポートに最低限書いて欲しいこと
これくらい。
- 現象
- 環境
- 再現手順
あわせて読みたい。
- Mozilla Developer Center - Bug writing guidelines
- Apple Developer Connection Bug Reporting Best Practices page
- NetBSD Problem Reports
- Mew - バグレポートの書き方
Mew がうまく動かないときに,「〜が動きません,どうしたらいいでしょう」だけでは,誰も答えることができません.まず,Mew をどのような環境(オペレーティングシステムの種類・バージョン,Emacsの種類・バージョン,Mewのバージョン等)で利用しているのかを書きましょう.
次に症状を書きます.できるだけ具体的に,再現性があるものならその手順を簡潔に書いて下さい.
_ ココロはみわさんの笑顔が見たいです
;-)
2008-03-14 :-)
_ 朝ったー
0540 起床。
_ [植松伸夫][ファイナル・ファンタジーVIII ピアノ・コレクションズ]通勤ったー
ファイナル・ファンタジーVIII ピアノ・コレクションズ
FF8 ピアノアレンジです。FF7 ピアノアレンジからは良いアレンジです。アレンジャーが変わったんでしょうか。「Ending Theme」のアレンジが素晴らしいです。これを聴いていたらオリジナルの「Ending Theme」も自分は気に入っていたことを思い出しました。
B000058AB3
_ 問題はその人物を特定できるかどうかだ
実名だろうが匿名だろうが偽名だろうが問題ではありません。疑似乱数生成機によって作った名前でもユニークならばそのひとを特定できるし、「じゅげむじゅげむごこうのすりきれかいじゃりすいぎょのすいぎょうまつうんらいまつふうらいまつくうねるところにすむところやぶらこうじのやぶこうじぱいぽぱいぽぱいぽのしゅーりんがんしゅーりんがんのぐーりんだいぐーりんだいのぽんぽこぴーのぽんぽこなーのちょうきゅうめいのちょうすけ」という名前であっても同じ名前が世界に 2 人以上居ればユニークではありません。「じゅげむじゅげむごこうのすりきれかいじゃりすいぎょのすいぎょうまつうんらいまつふうらいまつくうねるところにすむところやぶらこうじのやぶこうじぱいぽぱいぽぱいぽのしゅーりんがんしゅーりんがんのぐーりんだいぐーりんだいのぽんぽこぴーのぽんぽこなーのちょうきゅうめいのちょうすけ」はこの人である、と決められません。名前なんて重要ではありません。ミギーもそう言っている。
ref. 寄生獣 - Wikipedia
_ SHA-1 で遊ぼう
ということで今後は匿名で活動することにしました。
ハンドルは random から sha-1 した値にします。
% ruby -r 'digest/sha1' -e 'p Digest::SHA1.new( rand().to_s ).hexdigest' "ac5acf440b209fee9d54b480d85aa435c217c22c"
「ac5acf440b209fee9d54b480d85aa435c217c22c さんですか。長い名前ですね」
「長くても簡単だよ。何度でもいえる。私の名前は ac5acf440b209fee9d54b480d85aa435c217c22c です。私の名前は ac5acf440b209fee9d54b480d85aa435c217c22c です」
「コピペしてるだけじゃないですか」
「どもども。ac5ac...ええと、なんだって?」
「やだなあ、ちゃんと覚えてよ。いいかい、名乗るよ?」
% ruby -r 'digest/sha1' -e 'p Digest::SHA1.new( rand().to_s ).hexdigest' "9cd0ab8d05020802713691c6951659dfe3f10ea3"
「私の名前は 9cd0ab8d05020802713691c6951659dfe3f10ea3 と申します」
「9cd0ab8d05020802713691c6951659dfe3f10ea3 さんね。よろしく」
「なになにー。何か面白いことやってるの? あれ?名前変わったの?」
「やあ、こんにちは。私の名前はry」
名乗るたびに名前は変わります。
_ [Perl][エンディアン][コードリーディング][がらくた][高林哲]がらくたを読む - endian
リトルエンディアンかビッグエンディアンか。
#! /usr/bin/env perl my $word = pack 'I', 1; if ($word eq "\x01\x00\x00\x00") { print "little endian\n"; } else { print "big endian\n"; }
pack ってなに?
perldoc -f pack します。
pack TEMPLATE,LIST Takes a LIST of values and converts it into a string using the rules given by the TEMPLATE. The resulting string is the con- catenation of the converted values. Typically, each converted value looks like its machine-level representation. For exam- ple, on 32-bit machines a converted integer may be represented by a sequence of 4 bytes. The TEMPLATE is a sequence of characters that give the order and type of values, as follows:
で、I がここ。
I An unsigned integer value. (This 'integer' is _at_least_ 32 bits wide. Its exact size depends on what a local C compiler calls 'int', and may even be larger than the 'long' described in the next item.)
1 を符号なし 32 ビット整数に変換してます。
リトルエンディアンでは 01 00 00 00 と格納されます。
ビッグエンディアンでは 00 00 00 01 と格納されます。
人間が読むぶんにはビッグエンディアンのほうが直感的なので分かりやすいんですが、計算機的にはリトルエンディアンのほうがうれしいそうです。
ref.
2008-03-15 :-)
_ [tuvasa2001][細江慎治][quad][LINEAR]LINEAR vol.25
@Heavy Sick Zero (Nakano)
quad さんステージの途中から入りました。
細江慎治さんはエロゲの歌アレンジ? ウッウーウマウマで会場みんな踊ってて キモイ 笑った。
tuvasa2001 さんとこもウッウーウマウマ。最後は「りにあのうた2 REMIXES」 M-Projectアレンジかしら。
次回の告知してたから書いて良いんだよなあ。
- 次回
- 5/17 あたり。渋谷のなんとか
- ゲスト
- ESTi
- 大久保博
- 佐野電磁
- 三宅優
- 他たくさん
2008-03-16 :-)
_ [写真]yuka さんのブログの写真のセンスが素晴らしい
だいぶ前に hiroym が言っていたのでそれを意識してしばらくウォッチしてみました。Twitter に書くような気軽さで写真を撮ってブログに書くとこんな写真を撮れるかもしれません。Twitter 使えるならブログじゃなくて Twitter に投げてしまいそうになるけど。
ref.
- デジカメのえほん[ 20071101#p05 ]
- 自分の気持ちの変化に気付こう[ 20080126#p04 ]
_ [AsiaBSDcon2008]AsiaBSDCon 2008
明日から値段が高くなるので今日のうちに申し込みました。
3/28 の T3B: Development Technique for BSD Embedded Systems を見ます。
_ [KORG DS-10][佐野電磁][光田康典]MITSUDA'S DIARY DS-10続報
( 光田康典さんとこ )
佐野電磁氏がプレゼンするのDS-10のプレイビデオロングバージョンです。
ということで見ようとしたけど途切れてしまうので youtube を検索しました。これかしら。ちなみに私は amazon にて予約済みです。
僕も曲をこれで作って電磁氏とセッションしたいと考えております(笑)
おおいに期待します。
おおいに期待します。
おおいに期待します。
B0015PSKV0
_ [BAGEL & BAGEL][ベーグル][おひる]おひる
BAGEL & BAGEL のベーグルたち。以前買ったとき[ 20050528#p02 ]は二子玉川駅のそばにあったのだけど無くなってました。渋谷東急の地下で買いました。
2008-03-17 :-)
_ 朝ったー
0540 起床。うに
_ [植松伸夫][ピアノ・コレクションズ ファイナルファンタジーIX]通勤ったー
ピアノ・コレクションズ ファイナルファンタジーIX
FF9 ピアノアレンジです。FF8 に引き続き期待を裏切らない良い作品です。「眠らない街 トレノ」はオリジナルの雰囲気が出てて素晴らしい。
B00005HTED
_ 仕事
0830 出勤。
_ サイドバーにいろいろ設置しても自分以外誰も見ない
RSS フィードを読んでるひとは( ヲレ含む )日記本文以外は読まないしアンテナで巡回してるひとはサイドバーにあるものは目に映ってたとしても脳内フィルタにより脳内に入らない。たまに間違い探しが入ってるかもしれません。
_ [パン]パンが失敗する原因が分かったかもしんない
最初に成功して[ 20050419#p05 ]それ以来失敗続きだったわけですが[ 20060314#p04 ][ 20070703#p13 ][ 20071120#p05 ]どうしてパンが膨らまないのだろうと思ってたんですがその原因はドライイーストを使ってなかったんだろうということに気づきました
2008-03-18 :-)
_ 朝ったー
0540 起床。
_ [人生思うがまま][植松伸夫][服部克久][おおたか静流][ファイナルファンタジー 1987-1994]通勤ったー
ファイナルファンタジー 1987-1994
エッセイ集 人生思うがまま が入っている作品です。
参加者は以下の方々。
- 服部克久
- 植松伸夫
- Maire Bhreatnach
- おおたか静流
- Toshiyuki Mori
- Ken Morimura
過去に発売された FF1 から FF6 アレンジを再収録したものです。「大森林の伝説」は FF5 ディアフレンズではサーミ語だった( らしい )んですがここでは日本語になってます。
ブックレットには植松伸夫さんによる全曲解説があります。珍しいです。「SCENE VII」より引用。
[ ... ] 初めて自分で編曲した曲がオーケストラによって演奏されている間、僕はずっと唇を噛みしめていたのです。実際の演奏を聴いてみると、その編曲は自分が予想していたよりもずっとひどいものでした。コンサートの後、しょげかえる僕を「これは植松君にとってのレベル 1 なんだよ。レベル 1 を経験しないとレベル 2 に行けないだろ」と励ましてくれたのは、すぎやまこういちさんでした。
植松伸夫さんの師匠は すぎやまこういちさんです。ですか?
B00005FNVL
_ [ESTi][ゲーム]Strictly Business
( ESTi さんとこ )
以前さぁぶさんから「 ぱんやの曲書いてる ESTi がスゲーんですよ」と教えていただいて、それ以来 ESTi さんのブログ( vox というところがナイス )を読んでます。ESTi さんについて詳細は wikipedia をどうぞ。
ESTi さんは日本のゲームにもたくさんの曲を書いてます。wikipedia を読んで知ったのだけどリッジレーサー 7 に 2 曲書いてます。私が毎日のように聴いてるリッジレーサー 7 の曲を書いてたなんて!よく見たらたしかにリッジレーサーズ 7 ダイレクトオーディオのアーティストに「ESTi」の文字があるではないか!!!!!1111などと脳内で興奮した記憶があります。あのころは若かった。ちなみに次回 LINEAR に来るそうですよ[ 20080315#p03 ]。
という ESTi さんのブログに音楽を作るときの日本側と韓国側とのやりとりについての記事があります。でもこれは日本と韓国とのやりとりだけでなくて日本どうしでもありそうですねというかむしろあります。
それはそれとして日本の言葉を使いこなしてるところが笑えます。
アップデート当日00時から朝8時に終わって鯖に即うp。
「うp」って言うんですね。
B000NO2AQK
_ [ハッカー][hacker]ハッカーになるために
先日 サロンパスさん ]からハッカーズなんちゃらに招待していただいたのだけどこの日記を見ても分かるように我が輩はハックに縁はあるが自分ではさっぱりハックしないというかハックするためのスキルが無いので「もうちょっとうまくできるようになったらハックするよ」というのび太メソッド炸裂させるほどの戯けモノなので最早この日記は飯かおやつかゲーム音楽のネタしか書いていないので読者は割りとガッカリしていると思われるような現状であり サロンパスさん] から誘ってもらったときも拙者の第一声は「まんじゅうこわい」であり其れ程までの怠け者なので参加することに躊躇したのだがそれではいつまで経っても何も行動しないのでここは敢えて自分を窮地に追い込むことにより行動を促進するという暴挙に出てみた次第でありんす。むしろ「夏休みの宿題」メソッド。
_ [THE BLACK MAGES]買い物
( via FF&KH 情報倉庫 )
@渋谷タワーレコード
イベント参加券を貰ました。amazon で予約しておいて amazon から発送通知が来てるんですけどね。
ref. ザ・ブラック・メイジーズ「THE BLACK MAGES III Darkness and Starlight」 発売記念トーク&握手会@TOWER RECORDS渋谷店
B0013FCOHS
2008-03-19 :-)
_ 朝ったー
0540 起床。
_ [植松伸夫][大木理沙][ファイナルファンタジー ヴォーカル・コレクションズ I −祈り−]通勤ったー
ファイナルファンタジー ヴォーカル・コレクションズ I −祈り−
FF1 から FF6 の曲に歌詞をつけたアルバムです。ヴォーカルは大木理沙さん。日本語の歌詞はファンタジーの色が溢れていて聴いているとけっこう恥ずかしいです。ゲーム音楽に歌詞をつけるとこうなるんだなあ、くらいに聴いてます。
B00005FNVH
_ [FreeBSD][NetBSD]いよいよ7.0-RELEASE登場! FreeBSDフルコース・2008
「NetBSD フルコース」をやってくれないかなあと思ったけど「カーネル読め」で終わりそう。
_ [まつもとゆきひろ][小飼弾]エンジニアの進化は"アウトプット"にあり! まつもとゆきひろ×小飼弾
「アウトプットの数を増やせば当然叩かれることもある。それをおそれずに、叩かれることに強くなってほしい」(小飼氏)、「アウトプットの多い人ほど、たくさん学ぶことができる。RubyはOSSとして公開し、多くの人から突っ込まれ、叩かれてきたからこそ今の姿がある」(まつもと氏)
いままでアウトプットとは「ただひたすら文章を書く」「ブログを書く」ということだと思ってたけどそうじゃない。ブロガーはそれで良いけど( ブロガーってなに ) プログラマならコードをアウトプットすることが重要なんですね。なんということだ。いまさら気づくなんてなあ。
あわせて読みたい:作品をよく見せるためのお手軽なテクニック集
_ 自動返信のためのボットなんてどうだろうか
客先のひとが外出中なのを知ってるんですがそこで敢えて客先へメールを投げたら「休暇をいただいております以下略」というメールが自動返信されてきました。わざわざ自動で返信するなんてのは、コマンドに対して ack を返すとか ping に対して pong を返すとか HELO に対して 250 を返すとか、そのくらいの意味で使っているのだろうけど E-mail の特性からしてそのような行為は無意味であり計算機とネットワークの資源の無駄使いなのでどうせ無駄にするならいっそのこと返信用メッセージを人工無能に書かせるというのは如何なものか。
_ 得意な言語はなんですか?
計算機関連の文脈で上記のような質問があるときの回答に「日本語」「英語」「クリンゴン語」など自然言語が混ざっているときがあるのだけど、質問者は「自然言語も込みで回答してね」ということを言っているのか、それとも「この文脈ではプログラミング言語を回答するだろ常識的に考えて」としか考えてないのか。たぶん前者。
_ [Exif][JPEG][画像][コードリーディング][がらくた][高林哲]がらくたを読む - exif-touch
http://0xcc.net/attic/exif-touch
JPEG ファイルの mtime を Exif にある mtime に変更します。Exif についてはこちら。
module Exif HEADER_OFFSET1 = 12 <= TIFFヘッダー部 開始位置 HEADER_OFFSET2 = 8
Exif というモジュールにしてます。Ruby では大文字で始めると定数になります。HEADER_OFFSET だと用途が分からないので名前を具体的にしてほしいところですが一発プログラムなのであまり深く考えなかったのでしょう。
module_function def exif_file? (filename) exif_header = "\xff\xd8\xff\xe1" <= SOIマーカとAPP1マーカ magic = File.open(filename) {|f| f.read(4) } magic == exif_header end
Exifに使われるマーカー より引用します。
Exif形式画像の最初の部分は、必ず次のような形式になっています。
SOI Marker が FFD8 で APP1 Marker が FFE1 です。これらのマジックナンバーを見て Exif ファイルか否かを判定してます。return などが書いてない場合は最後に評価した値が関数の戻り値になります。この場合はファイルの先頭 4 バイトにある数値が FF D8 FF E1 と同じならば true が返ります。そうでなければ false が返ります。
def get_endian (f) f.seek(HEADER_OFFSET1) data = f.read(2) if data == "\x49\x49" :little_endian elsif data == "\x4d\x4d" :big_endian else raise 'unknown format' end end
49 49 などの値はなんでしょうか?
TIFF形式の最初の8バイトはヘッダー部です。最初の2バイトはバイト並びの形式を定義しています。0x4d4d:"MM"の場合はモトローラ形式、0x4949:"I I"の場合はインテル形式です。
ここの 2 バイトを見ればエンディアンが分かるようです。ちなみに キヤノン:EOS-1Ds Mark III サンプルイメージ 1 にある画像に対して以下のコードを実行したらリトルエンディアンでした。
File.open( ARGV.shift ){ |f| p Exif.get_endian( f ) }
% ./exif-touch portrait.jpg :little_endian
read_directory は IFD : Image file directory を読みます。get_time とあわせて読むと面白いです。
def read_directory (f, read_ushort, read_ulong) n = read_ushort.call(f) ## ディレクトリーエントリー数 n.times { ## ディレクトリーエントリー数ぶんをなめる tag = read_ushort.call(f) ## ディレクトリーエントリー 12 バイトぶん type = read_ushort.call(f) size = read_ulong.call(f) value = read_ulong.call(f) yield(f, tag, type, size, value) } end
def get_time (filename) time = File.mtime(filename) begin raise 'not an exif file' unless exif_file?(filename) File.open(filename) {|f| read_ushort = lambda {|f| f.read(2).unpack('v').first } ## little endian unsigned 16bit read_ulong = lambda {|f| f.read(4).unpack('V').first } ## little endian unsigned 32bit if get_endian(f) == :big_endian read_ushort = lambda {|f| f.read(2).unpack('n').first } ## big endian unsigned 16bit read_ulong = lambda {|f| f.read(4).unpack('N').first } ## big endian unsigned 32bit end f.seek(HEADER_OFFSET1 + HEADER_OFFSET2) special_offset = nil read_directory(f, read_ushort, read_ulong) {|f, tag, type, size, value| special_offset = value if tag == 0x8769 ## Exif offset } raise if special_offset.nil? f.seek(HEADER_OFFSET1 + special_offset) ## オフセット値が示すアドレス read_directory(f, read_ushort, read_ulong) {|f, tag, type, size, value| ## Exif SubIFD を読む if tag == 0x9003 ## DateTimeOriginal curpos = f.pos f.seek(HEADER_OFFSET1 + value) s = f.read(size) # 2003:01:26 16:37:04 if /(\d\d\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)/.match(s) year = $1.to_i; mon = $2.to_i day = $3.to_i; hour = $4.to_i min = $5.to_i; sec = $6.to_i time = Time.mktime(year, mon, day, hour, min, sec) end f.seek(curpos) end } } rescue => e STDERR.puts "exif-touch: #{filename}: #{e.message}" exit 1 end return time end end
「ヘッダーオフセット」のところにある値の回数ぶんだけ read_directory します。special_offset = value if tag == 0x8769 は Exif Offset(0x8769) を探します。
Exif 形式の場合、IFD0の中にはExif Offset(0x8769)という特殊なタグが必ず含まれています。このオフセット値が示すアドレスには、やはりIFD形式のデーター(Exif SubIFD)が格納されており、ここにカメラの詳細情報等が書かれています。
f.seek(HEADER_OFFSET1 + special_offset) で「オフセット値が示すアドレス」まで読み飛ばします。
次の read_directory で Exif SubIFD を読み、tag 0x9003 と比較します。tag 0x9003 はオリジナル画像が撮影された日時です。その日時による Time オブジェクトを生成しておきます( Time.mktime )。
if __FILE__ == $0 def fmt (t) t.strftime("%Y-%m-%d %H:%M:%S") end
日付と時刻を整形します。t はたぶん Time オブジェクトが入ります。strftime で 2008-03-19 18:55:22 のような文字列にします。
ここで分からないのは if __FILE__ == $0 です。__FILE__ にはこのファイル名が入ります。$0 にはこのスクリプトの名前が入ります。両方が異なる場合というのはどういう場合なんでしょうか。
ARGV.each {|filename| if Exif.exif_file?(filename) old = File.mtime(filename) ## ファイルの mtime new = Exif.get_time(filename) ## Exif の mtime File.utime(new, new, filename) puts "#{filename}: #{fmt(old)} -> #{fmt(new)}" else puts "#{filename}: not an exif file" end } end
メインの処理です。ARGV.each で与えたファイルをすべて処理します。
exif-touch では lambda を使ったコードが面白いです。私は lambda を使ったコードに見慣れてなかったので戸惑いました。まだ慣れてませんが。lambda の壁は高そうです。でもこの壁を超えると世界が変わりそう。
_ さいき [>得意な言語はなんですか? 方言(例えば、関西弁とか)を記入して 様子(回答)を待つとか?w まぁ〜ニュアンス的..]
2008-03-21 :-)
_ [Panasonic][Let's CF-R4][NetBSD][pxeboot][tftpboot][NFS][DHCP]Panasonic Let's CF-R4 に NetBSD をインストールする
CD-ROM や FD が無いので pxeboot します。
手順
サーバーの準備( NetBSD/i386 )
- sets を作る
- pxeboot を準備する
- netbsd を準備する
- dhcpd を準備する
- tftp を準備する
- NFS を準備する
インストールさせるクライアント( Let's CF-R4 )
- pxeboot_ia32.bin を取得する
- pxeboot_ia32.bin を起動する
- netbsd( netbsd-INSTALL.gz を展開して rename しとく )を取得する
- netbsd を起動する
- インストール開始する
- sets をサーバーから取得する
- インストールする
参考
- Netbooting/i386
- 私的日常非日常記録 - pxeboot
- Diskless NetBSD HOW-TO, 序説 (i386固有な部分)
- Diskless NetBSD HOW-TO dhcpd サーバーの設定
- Diskless NetBSD HOW-TO, tftpd サーバーの設定
- Chapter 28. Network services - 28.1. The Network File System (NFS)
- UNIX MAGAZINE 2004-11 「文房具としてのUNIX」pxeboot の解説がある
サーバーの準備
sets を作る。
cd /usr/src mkdir /usr/obj /usr/tools /usr/release ./build.sh -O ../obj -T ../tools -u tools ./build.sh -O ../obj -T ../tools -R ../release -u release
pxeboot を準備する
cd /usr/release/i386/binary/sets/ tar zxvf base.tgz ./usr/mdec/pxeboot_ia32.bin ./usr/mdec/pxeboot_ia32.bin tar: ustar vol 1, 3784 files, 71106560 bytes read, 0 bytes written in 1 secs (71106560 bytes/sec)
mkdir -p /export/tftpboot/i386 cp /usr/release/i386/binary/sets/usr/mdec/pxeboot_ia32.bin /export/tftpboot/i386
netbsd を準備する
cp /usr/release/i386/binary/kernel/netbsd-INSTALL.gz /export/tftpboot/i386 cd /export/tftpboot/i386 gunzip netbsd-INSTALL.gz mv netbsd-INSTALL netbsd
dhcpd を準備する
/etc/dhcpd.conf を編集する。
host megumi { hardware ethernet 00:0B:97:2F:71:B1; fixed-address 192.168.0.8; filename="i386/pxeboot_ia32.bin"; next-server 192.168.0.6; option root-path="/export/tftpboot/i386/"; }
再起動
/etc/rc.d/dhcpd restart
tftp を準備する
/etc/inetd.conf を編集する。
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /export/tftpboot
再起動
/etc/rc.d/inetd restart
NFS を準備する
/etc/exports を編集する。
/export -maproot=0 -noresvport -noresvmnt -network 192.168.0.0 -mask 255.255.255.0 -alldirs
/etc/rc.conf を編集する。
rpcbind=yes mountd=yes nfs_server=yes lockd=yes statd=yes
再起動。
/etc/rc.d/mountd restart /etc/rc.d/nfsd restart
sets をコピーする
cp -R /usr/release/i386/binary/sets /export/tftpboot/i386/
こんな状態になる。
ls /export/tftpboot/i386/ netbsd pxeboot_ia32.bin sets/
クライアントのインストール
Let's CF-R4 の電源を入れた直後の「 Panasonic 」のロゴが出てるうちに F12 を叩くと PXE 起動に移行する。
pxeboot して netbsd-INSTALL が起動して sysinst が起動する。
disklabel はこんな。
配布元は netbsd.org を使っても良いのだけどせっかくだからサーバーに作った sets を使う。sets を作ったときに X11 関連の物を作らなかったので Full installation じゃなくて Custom installation を選択する。Full を選択すると xbase 等をインストールしようとしてエラーになる。
インストールするのはこれだけ。
NFS の設定。サーバーを上記のように作った場合は以下のように設定する。
あとは普通にインストールするだけ。
2008-03-22 :-)
_ 朝ったー
0700 起床。頭痛が治ったようなのでチャリる。体力オチまくっている。さぁぶさんちでリッジレーサー7 をプレイする白昼夢を見た。
_ 朝飯る
日向夏のジャムを作ったので食べてみるれ。砂糖漬けにしたアレを煮ただけな。
_ [リッジレーサーズ2] リッジレーサーズ2
- MAX ツアーに挑戦
- スタート直後にニトロされた
- 普通に走ってたら普通に追い抜かれた
- ようやく追いつきそうなところでニトロで逃げられた
勝てないよ!
無限ニトロか!?
スペシャルクラスの車体に挑戦するようなやり方と同じ戦術でいいのかなあ。
2008-03-23 :-)
_ [スクウェアエニックス]スクウェアエニックスメンバーズページとかなんとかを作ってみた
FF&KH 情報倉庫 のひとがスクエニにページを作っていたのでそんなサービスがあることを知りました。活用するかどうかは別として。
_ [おやつ][さくらマカロン][酒粕マカロン]おやつ
さくらマカロン・酒粕マカロン。昨日ホテルニューオータニのパティスリー SATSUKI で買っておいたものです。
2008-03-24 :-)
_ 朝ったー
0540 起床。
_ [植松伸夫][大木理沙][野口郁子][ファイナルファンタジー ヴォーカル・コレクション 2 ラブ・ウィル・グロウ]通勤ったー
ファイナルファンタジー ヴォーカル・コレクション 2 ラブ・ウィル・グロウ
歌は大木理沙さん、野口郁子さん。相変わらず日本語の歌詞を聴くのは恥ずかしいですがアレンジした曲を聴くぶんには楽しめます。「はるかなる故郷」等オリジナルの雰囲気と異なるアレンジが気になるかもしれませんが、そこを楽しむのも良いかもしれません。
B00005FNW2
_ 仕事
0830 出勤。
_ ネットで使うIDはまとめておいた方がやっぱり楽しいかも
新しいサービスが出来たら光速で自分のアカウントを取得しておくといいです。使うかどうかは別として。さもないと はてなで id:rin51 とか Yahoo! で riinn5511 とか Skype で miwa-rin といった自分でも分かりづらい ID を使うことになりますというか Yahoo! の ID はこれであってたか自信ありません。
_ [ガンダム 00]ガンダム 00 を見た
- ひと死にすぎ
- サジの出番はどうなった
- グラハムはどこに行った
- この回になってようやくあの船が「プトレマイオス」なのだと覚えた
- コックピット狙撃されて人間の造形が残ってるのはおかしい
- 小説が出るとしたらあの場面は「蒸発した」と手短に書きそう
- プトレマイオスクルーの名前は結局スメラギさんしか覚えてない
- ソレスタルナントカの組織全体が未だ不明
- ガンダムを組み立てるひととか居るだろ
- あでもガンダムウィングでは 5 人のじいさん達だけだったのだっけ
_ [Armadillo9][NetBSD]Armadillo9 に NetBSD を入れる( 準備 )
参考
作業
「Armadillo-9を使ったMicroDriveのパーティショニング」「PCを使ったNetBSD/evbarmのインストール」の手順は tokuda.net さんのところに書いてあることをそのままやる。release を作る方法は書いてないので手探りでやってみた。こう?
/usr/src/sys/arch/evbarm/conf/ARMADILLO9_INSTALL を作る
# $NetBSD$ # # ARMADILLO9_INSTALL -- ARMADILLO9 kernel with installation-sized # ramdisk # include "arch/evbarm/conf/ARMADILLO9" include "arch/evbarm/conf/INSTALL"
/usr/src/etc/etc.evbarm/Makefile.inc を変更する
.if ${MACHINE_ARCH} == "arm" # Little endian platforms EVBARM_BOARDS= ARMADILLO9 ARMADILLO210 ADI_BRH INTEGRATOR IQ80310 IQ80321 SMDK2410 SMDK2800 \ TEAMASA_NPWR TS7200 TWINTAIL
tools を作る
./build.sh -m evbarm -T /usr/src/evbarm.tools -R /usr/src/evbarm.release tools
release を作る。3.5 時間ほどかかるので寝て待つ。
./build.sh -m evbarm -T /usr/src/evbarm.tools -R /usr/src/evbarm.release kernel=ARMADILLO9 release : ===> Summary of results: build.sh command: ./build.sh -m evbarm -T /usr/src/evbarm.tools -R /usr/src/evbarm.release kernel=ARMADILLO9 release build.sh started: Mon Mar 10 19:52:29 JST 2008 NetBSD version: 4.99.55 MACHINE: evbarm MACHINE_ARCH: arm Build platform: NetBSD 4.99.55 i386 HOST_SH: /bin/sh TOOLDIR path: /usr/src/evbarm.tools DESTDIR path: /usr/src/obj/destdir.evbarm RELEASEDIR path: /usr/src/evbarm.release makewrapper: /usr/src/evbarm.tools/bin/nbmake-evbarm Updated /usr/src/evbarm.tools/bin/nbmake-evbarm Building kernel without building new tools Building kernel: ARMADILLO9 Build directory: /usr/src/sys/arch/evbarm/compile/obj/ARMADILLO9 Kernels built from ARMADILLO9: /usr/src/sys/arch/evbarm/compile/obj/ARMADILLO9/netbsd /usr/src/sys/arch/evbarm/compile/obj/ARMADILLO9/netbsd-epe0 /usr/src/sys/arch/evbarm/compile/obj/ARMADILLO9/netbsd-wd0 /usr/src/sys/arch/evbarm/compile/obj/ARMADILLO9/netbsd-sd0 Successful make release build.sh ended: Mon Mar 10 23:13:43 JST 2008 ===> .
_ [Armadillo9][NetBSD]Armadillo9 に NetBSD を入れる( 起動失敗 )
ジャンパを 刺して 電源を入れた。起動した。途中で止まった。
Hermit-At v1.0.0 (armadillo9) compiled at 18:43:28, Sep 26 2005 Disk drive detected: HMS360604D5CF00 DP4OC40D DNP450B4VL6ABA /dev/hdc1: start=0x0000003f, size=0x000032f1 Image.gz is found. Copying kernel.......done. Uncompressing kernel...................................................................... ..........................done. Doing noinitrd Doing root=/dev/hdc Doing mtdparts=armadillo9-nor:0x10000(bootloader)ro,0x170000(kernel),0x670000(userland),-(c onfig) NetBSD/Armadillo-9 booting ... Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 4.99.55 (ARMADILLO9) #4: Mon Mar 10 21:38:16 JST 2008 rin@yukina.area51.gr.jp:/usr/obj/sys/arch/evbarm/compile/ARMADILLO9 total memory = 65536 KB avail memory = 60292 KB mainbus0 (root) cpu0 at mainbus0: ARM920T rev 0 (ARM9TDMI core) cpu0: DC enabled IC enabled WB enabled EABT cpu0: 16KB/32B 64-way Instruction cache cpu0: 16KB/32B 64-way write-back-locking-A Data cache epsoc0 at mainbus0: Cirrus Logic EP93xx SoC rev E0 epsoc0: fclk 200.02 MHz hclk 100.01 MHz pclk 50.00 MHz epclk0 at epsoc0 addr 0x80810000-0x8081008f intr 4 epgpio0 at epsoc0 addr 0x80840000-0x808400cb intr 59 gpio0 at epgpio0: port A: 8 pins gpio1 at epgpio0: port B: 8 pins gpio2 at epgpio0: port C: 8 pins gpio3 at epgpio0: port D: 8 pins gpio4 at epgpio0: port E: 8 pins gpio5 at epgpio0: port F: 8 pins gpio6 at epgpio0: port G: 8 pins gpio7 at epgpio0: port H: 8 pins epled0 at epgpio0: port E bit1 0 bit2 1 armadillo9iic0 at epgpio0: port B bit1 4 bit2 5 iic0 at armadillo9iic0: I2C bus seeprom0 at iic0 addr 0x50: AT24Cxx EEPROM
seeprom0 で止まった。このあと何をやろうとしてるんだろう。ぐぐる。
Armadillo210 ですが。seeprom0 のあとは epe0 を処理してる?/usr/src/sys/arch/evbarm/conf/ARMADILLO9 を眺める。
# AHB Peripheral # On-chip 10/100 Ethernet epe0 at epsoc? addr 0x80010000 size 0x10000 intr 39
アドレスが変とか、というわけじゃなさそう。Ethernet ケーブルを刺してないとダメとか?
_ [ソフトフランスパン][みそクリームシチュー][飯]飯
みそクリームシチュー( ref. きょうの料理 2007-12 p.112 )、ソフトフランスパン( ref. きょうの料理 2005-03 pp117-119 )。
- 問題:パンが膨らまない
- 原因:コネが足りない
昨日パンをこねて今日は筋肉痛です。
_ [デジタルマクロ]デジタルマクロってなに?
●デジタルマクロモード
マクロモードに加え、より被写体を拡大して撮影できる「デジタルマクロモード」を搭載しています。デジタルマクロモードは、デジタルズーム機能を利用し、画像の中央を拡大して撮影するものです。
●デジタルマクロモード
マクロモードに加え、より被写体を拡大して撮影できる「デジタルマクロモード」を搭載しています。デジタルマクロモードは、デジタルズーム機能を利用し、レンズがワイド端のとき、レンズと被写体の距離が3〜10cmの範囲で撮影することができます。もっとも拡大した状態では、10.2×7.5mmの範囲が撮影できます。
●デジタルマクロ
マクロに加え、より被写体を拡大して撮影できる「デジタルマクロ」を搭載しています。デジタルズーム機能を利用し、画像の中央を拡大します。もっとも拡大した状態で、17×13 mmの範囲が撮影できます。
●デジタルマクロモード
マクロモードに加え、より被写体を拡大して撮影できる「デジタルマクロモード」を搭載しています。デジタルマクロモードは、デジタルズーム機能を利用し、画像の中央を拡大して撮影するものです。もっとも拡大した状態で、14×11mmの範囲が撮影できます。
2008-03-25 :-)
_ 朝ったー
0540 起床。
_ [ファイナルファンタジーソングブック まほろば][植松伸夫][清田愛未][長谷川友二]通勤ったー
ファイナルファンタジーソングブック まほろば
FF 曲のボーカルアレンジです。アレンジは長谷川友二さん。歌は清田まなみさん( 現在は清田愛未 )。オリジナル曲に忠実にアレンジされてます。長谷川友二さんによるアコースティックギター演奏が良いです。清田まなみさんの声はちょいと力が弱いのであまり印象に残らないかもしれません。
「明日の夢も忘れて」は TEN PLANTS[ 20070919#p02 ]に収録されてる植松伸夫さんの曲のアレンジです。これはオリジナルのほうが良いかなあ。
「廻る光」の 07:35 から FF9 「いつか帰るところ」のアレンジになります。収録が終わったあとの打ち上げのようなお祭り騒ぎです。すごく楽しそう。文字通り「音を楽しむ音楽」という空気を感じられます。アタシはこの部分が大好きです。こーいう曲に参加したいです。けまらしい。
B000197ITG
_ 仕事
0830 出勤。
_ [safari]Win版iTunesアップデートにSafari,MozillaのCEOがAppleを批判:ITpro
これってアップルだから「こやつめ ハハハ」で笑って済まされるけど( 私は笑って済ました )同じことをマイクロソフトがやったら反響が大きそうです。
_ [twitter]みんなのTwitterスタイルまとめ
スタイル。
- Twitter / miwarin with friends を読む
- follow も自分の発言も読む
- たまに漏れる
- Twitter:@あらったー! に登録する
- 誰かが @miwarin と書くと私のケータイにメールが飛んでくる
- dk19810313++
- たまに落ちる
- buzztter
- @miwarin を検索させて検索結果のフィードを読む
- あらったーを補完
- ふぁぼったー
- 登録してフィードを読む
- ふぁぼられてニヤニヤする
- ono_matope++
- MovaTwitter に登録する
- あらったーと組み合わせればケータイだけで twitter できる
- 【P3】P3:PeraPeraPrv - とかいろいろ
- Twitter クライアント
- 家に居ると使う
- lynmock++
- TwitterIrcGateway - misuzilla.org
- IRC クライアントで Twitter
- 最近使ってない
_ [xorg][NetBSD][Let's note CF-R4]Let's note CF-R4 NetBSD に xorg を入れる( 途中 )
ref. How to install modular Xorg - NetBSD Wiki
/etc/mk.conf に以下を追加
X11_TYPE=modular
# cd /usr/pkgsrc/x11/modular-xorg-server # make install clean-depends
ok
# cd /usr/pkgsrc/meta-pkgs/modular-xorg-apps # make install clean-depends
ok
# cd /usr/pkgsrc/meta-pkgs/modular-xorg-fonts # make install clean-depends
失敗。後述
# cd /usr/pkgsrc/x11/xf86-input-keyboard # make install clean-depends
ok
# cd /usr/pkgsrc/x11/xf86-input-mouse # make install clean-depends
ok
# cd /usr/pkgsrc/x11/xf86-video-intel # make install clean-depends
ok
meta-pkgs/modular-xorg-apps でエラー
# cd /usr/pkgsrc/meta-pkgs/modular-xorg-apps # make install clean-depends : => Full dependency xinit-[0-9]*: found xinit-1.0.7nb2 => Full dependency xkill-[0-9]*: found xkill-1.0.1 => Full dependency xload-[0-9]*: found xload-1.0.2 => Full dependency xlogo-[0-9]*: NOT found => Verifying update for ../../x11/xlogo ===> Resuming update for xlogo-1.0.1nb1 => Bootstrap dependency digest>=20010302: found digest-20070803 ===> Checking for vulnerabilities in xlogo-1.0.1nb1 ===> Building for xlogo-1.0.1nb1 /usr/bin/make all-am if cc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/freetype2 -D_POSIX_THREAD_SAFE_FUNCTIONS -I/usr/pkg/include 1 -D_POSIX_THREAD_SAFE_FUNCTIONS -I/usr/pkg/include -D_POSIX_THREAD_SAFE_FUNCTIONS -I/usr/pkg/include -I/usr/pkg/include/freetype2 -D_POSIX_THREAD_SAFE_FUNCTIONS -I/usr/pkg/include -O2 -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/freetype2 -MT xlogo-print.o -MD -MP -MF ".deps/xlogo-print.Tpo" -c -o xlogo-print.o `test -f 'print.c' || echo './'`print.c; then mv -f ".deps/xlogo-print.Tpo" ".deps/xlogo-print.Po"; else rm -f ".deps/xlogo-print.Tpo"; exit 1; fi gcc: 1: No such file or directory In file included from print.c:33: print.h:36:39: error: X11/XprintUtil/xprintutil.h: No such file or directory print.c: In function 'FinishPrinting': print.c:132: warning: initialization makes pointer from integer without a cast print.c: In function 'DoPrint': print.c:198: warning: assignment makes pointer from integer without a cast print.c:246: warning: assignment makes pointer from integer without a cast *** Error code 1 Stop. make: stopped in /usr/pkgsrc/x11/xlogo/work/xlogo-1.0.1 *** Error code 1 Stop. make: stopped in /usr/pkgsrc/x11/xlogo/work/xlogo-1.0.1 *** Error code 1 Stop. make: stopped in /usr/pkgsrc/x11/xlogo *** Error code 1 Stop. make: stopped in /usr/pkgsrc/x11/xlogo *** Error code 1 Stop. make: stopped in /usr/pkgsrc/x11/xlogo *** Error code 1 Stop. make: stopped in /usr/pkgsrc/meta-pkgs/modular-xorg-apps *** Error code 1 Stop. make: stopped in /usr/pkgsrc/meta-pkgs/modular-xorg-apps
X11/XprintUtil/xprintutil.h: No such file or directory って言うけどあるんだよなあ。
# ls -l /usr/pkg/include/X11/Xpkg/include/X11/XprintUtil/xprintutil.h -r--r--r-- 1 root wheel 11095 Mar 23 16:08 /usr/pkg/include/X11/XprintUtil/xprintutil.h
_ [飯][きのこの炊き込みご飯]飯
きのこの炊き込みご飯( ref. きょうの料理 2007-09 p.86 )
2008-03-26 :-)
_ 朝ったー
0540 起床。
_ [DIRGE of CERBERUS -FINAL FANTASY- MULTIPLAYER MODE][浜渦正志][山崎良]通勤ったー
DIRGE of CERBERUS -FINAL FANTASY- MULTIPLAYER MODE
ゲーム未プレイ。作曲は浜渦正志さん、山崎良さん。浜渦正志さんらしい曲が多いです。音の使い方が「武蔵伝 2」と似ています。ゲームシステムを知らないのだけどフィールドを移動しつつ敵とエンカウントしたらバトル、というシステムとは違うのかしら。聖剣伝説や FF12 のようにフィールドとバトルの境が無いようなシステムかしら?バトルフィールドっぽい曲が多いです。サントラを聴いただけだとオープニングやエンディングの曲が無いのだけどゲームにも無いのかしら。どうも始まりと終わりがはっきりしないサントラです。
購入は iTunes Store です。
_ 仕事
0830 出勤。
_ BETTA FLASH ワンマンライブがあるんだが
チケット購入するサイトに個人情報を登録して( それはどうでもいいんだが )メールアドレスを登録するのだけど、サイトのポリシーとして gmail.com を登録できないらしいので萎えてしまって結局まだ買ってないです。いや gmail.com 以外にもいくつかメールアドレスを持ってるから問題無いのだけどね。それはそれとして。gmail.com 以外にも yahoo 等のフリーメールアカウントとかいうメールアドレスは登録を拒否してるようです。ええと。example.jp が登録できたらそれはそれで面白いですね。
_ [爆笑問題] 爆笑問題のニッポンの教養 爆笑問題×京大 独創力!
昨日たまたま見ました。京都大学へ行って爆笑問題 x 教授 x 学生で盛り上がろうぜということで「独創力」について話してました。内容は独創とはなんぞや、独創は必要なのか、独創を育てるためにどーすんのか、などといった話題でした。それはそれとして。
この番組はたまに見るのだけど( 録画して毎回見る、というほど熱心じゃない ) 爆笑問題の大田が面白い。というかすごい。納得できなかったらしつこく「なんで?なんで?なんで?なんで?なんで?」とツッコミを入れてそこは id:jkondo を連想させるのだけど、すごいと思ったのは大田は自分を否定できるところ。自尊心バトルに陥らないでちゃんと自分を理解してる。自分が間違ってたらちゃんとそれを認めてる。出来て当たり前? やあ、私はそれがなかなか出来ないんだよねえ。大田はすごいと思った。
_ ぐったり
帰宅して batan-q
_ [幻魔大戦][石ノ森章太郎]BS2 とことん!石ノ森章太郎 / 第四夜 の幻魔大戦を見た
- 初めて見たのは 25 年くらい前
- 内容はさっぱり覚えてない
- 幻魔ってなんだっけ?
- 変なおばさんが「ヒッヒッヒ」と笑いながら踊ってるような記憶があった
くらいの勢いです。幻魔大戦の原作があるのか( ありそうだ )何も前提知識が無い状態です。いま見てみると話の流れが強引なところもあるけど、幻魔大戦の一番の功績は超能力を可視化したことじゃなかろうか。AKIRA はどう見ても幻魔大戦に影響されてるし( スタッフに大友克洋が居たし )登場するキャラクターのデザインが大友克洋の絵っぽいですと思ったら キャラクターデザイン大友克洋 でした( ref. 幻魔大戦 - Wikipedia )
2008-03-27 :-)
_ 朝ったー
0540 起床。ねむ。
_ [植松伸夫][福井健一郎][関戸剛][河盛憲次][ファイナルファンタジーVII アドベントチルドレン]通勤ったー
ファイナルファンタジーVII アドベントチルドレン
作曲( 編曲 )は以下の方々。いま気づいたけど全員 THE BLACK MAGES のメンバーです。
- 植松伸夫
- 福井健一郎
- 関戸剛
- 河盛憲次
FF7AC は FF7 の後日談の作品です。なので FF7 オリジナルをアレンジした曲が多いです。FF7AC サントラは買うつもりは無かったのだけど作品冒頭のバイクバトルの曲「Beyond The Wasteland」が気に入ったので買いました。ロックアレンジが多いです。植松さんがロックアレンジするのが珍しかったので驚きましたが元々植松さんはロック大好きなひとなのでロック魂を炸裂させたのかもしれません。
- 闘う者達 [Piano Version]:FF7 ピアノコレクションズ[ 20080313#p02 ]にあった「闘う者達」です。
- 再臨:片翼の天使〜Advent:One-Winged Angel〜:FF7「片翼の天使」のアレンジです。コンサートでよく演奏されます。
B000AO8CH4
_ トイレで知人に遭遇したときは挨拶したものか迷う
スルーするのがマナー?
_ [夜のお菓子][うなぎパイ]うなぎパイを貰った
夜のお菓子ってなに?
「うなぎパイ」には疲労回復に良いといわれているビタミン A や夜の調味料ともいわれているガーリックを使用しているため "パワーが沸く" ということから「夜のお菓子」というキャッチフレーズがつけられました。
うなぎパイは「夜のお菓子」という有名なキャッチフレーズでも知られているが、このキャッチフレーズ自体はもともと、出張や旅行のお土産として家庭に買って帰ったその夜(晩)に「一家だんらんのひとときを『うなぎパイ』で過ごしてほしい。」との願いを込めて当時の社長が考案したものである。
_ ゆるふわ愛され系ってよく分からないけど
たぶん木之本桜のことなんだと思う。
_ フロクライミング
露天風呂の岩でクライミングすること。
_ Windows Updateを適用していない人がいます
( via インフラ管理者の独り言(はなずきん@酒好テム管理者))
「Windows Updateって、本当に必須と言えるほど重要なのか?」
Windows Update なんてユーザーに見せないで出荷時の Windows がデフォルトで Windows Update するようにしておけばいい。どうせ必要なんだから。という発想なら誰でもすると思うのだけどそのようには実装されてません。実装されないということは何か理由があってやってないんですよね。以下思いつく理由。
- ユーザーに選択肢を持たせるため
- ユーザーに責任を持たせるため
- ユーザーはオペレーティングシステムがやってることを把握したいと考えてる、とマイクロソフトは考えてる
- Windows は安全です
逆に Windows Update をデフォルトで実行させるたった 1 つの理由。
- 手作業はどうせ自動化する
まさか技術者なのに「俺は全部手動でやりたいんだ」なんて言うひとは居ませんよね?
_ [Unicode][オープンソース][萌え][Greasemonkey][JavaScript]「オープンソース」という文字列を片っ端から「萌え」に置換する Greasemonkey スクリプト
そうそう、この話をもう少し面白おかしく読みたいと思う人は、「オープンソース」という文字列を脳内で片っ端から「萌え」に置換してみるとよろしい。まー要するにパターン化してるんですよホント。
Greasemonkey とか JavaScript なんてまったくの素人なのだけどコピペしながら書いてみました。@name とか書き方を知らないのでテキトーです。
// ==UserScript== // @name OSS2moe // @namespace http://www.area51.gr.jp/ // @description convert "オープンソース" to "萌え" // @include * // @version 1.0 // ==/UserScript== // // via yusuke@blog ≫ Twitter に Google Maps へのリンクを追加するグリモン http://www.sukechan.net/blog/archives/26/ // ref. 某日記(後期) http://diary.imou.to/~AoiMoe/2008.03/late.html#2008.03.26_s01_p03 // 「オープンソース」という文字列を脳内で片っ端から「萌え」に置換してみるとよろしい // (function() { const strFrom = /\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9/g; //オープンソース const strTo = '\u840C\u3048'; //萌え var x = document.evaluate('//div', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < x.snapshotLength; i++) { x.snapshotItem(i).innerHTML = x.snapshotItem(i).innerHTML.replace( strFrom, strTo ); } })();
ref.
_ [Unicode][スイーツ][Greasemonkey][JavaScript]「スイーツ」という単語を見つけたら末尾に「(笑)」をつける Greasemonkey スクリプト
形態素解析なんてしてないので「アバランチ」が「アバランチ(笑)」になったりします。
// ==UserScript== // @name warai // @namespace http://www.area51.gr.jp/ // @description add "スイーツ" + "(笑)" // @include * // @version 1.0 // ==/UserScript== (function() { const strMatch = /(\u30D1\u30B9\u30BF|\u30E9\u30F3\u30C1|\u30BB\u30EC\u30D6|\u30B9\u30A4\u30FC\u30C4|\u30ED\u30CF\u30B9|\u30B9\u30ED\u30FC\u30D5\u30FC\u30C9|\u30B9\u30ED\u30FC\u30E9\u30A4\u30D5|\u30E2\u30C6\u30AB\u30EF|\u30A8\u30ED\u30AB\u30EF|\u30AD\u30E2\u30AB\u30EF|\u30DE\u30A4\u30CA\u30B9\u30A4\u30AA\u30F3|\u30EF\u30FC\u30AD\u30F3\u30B0\u30D3\u30E5\u30FC\u30C6\u30A3\u30FC|\u604B\u611B\u4F53\u8CEA)/g; const strW = '\u0028\u7B11\u0029'; //(笑) var x = document.evaluate('//div', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0; i < x.snapshotLength; i++) { x.snapshotItem(i).innerHTML = x.snapshotItem(i).innerHTML.replace( strMatch, '$1' + strW ); } })();
マッチさせる単語は スイーツ(笑)とは - はてなダイアリー からいくつか抜粋しました。
- パスタ
- ランチ
- セレブ
- スイーツ
- ロハス
- スローフード
- スローライフ
- モテカワ
- エロカワ
- キモカワ
- マイナスイオン
- ワーキングビューティー
- 恋愛体質
_ [マッシュポテトグラタン][飯]飯
マッシュポテトグラタン( ref. きょうの料理 2007-12 p.125 )
2008-03-28 :-)
_ 朝ったー
0800 起床。だる
_ 仕事
1 回休み
_ [AsiaBSDCon][NetBSD]AsiaBSDCon 2008 2 日目
初めての AsiaBSDCon です。BSD 開発者に知り合いなんて居ないし NetBSD を使ってるだけだし send-pr したこことないし英語セッションばかりだけどせっかくだから行ってみました。
In Memory of Jun-ichiro "itojun" Hagino
最初に感想
面白かった。やはり BSD は良い。萌え萌えですね。3/29 以降は FreeBSD の話題が多いみたいだけどせっかくだから行くことにします。そいや周囲の友人たちには FreeBSD 使いが多いけど AsiaBSDCon の話題を聞かないです。
貰い物
会場に入ってすぐに貰いました。資料などです。
今日のチュートリアル資料です。
3/29 以降の論文セッション等の資料です。
タイムスケジュール
ネックストラップです。うふふ
BSD MAGAZINE が復活?
T3B: BSDの組み込みへの適用方法
- クロスビルド
- NetBSD OpenBSD は楽
- FreeBSD Linux はつらい
- CF/USB メモリに NetBSD
- なんちゃって組み込み
- 社内プレゼンとかにいいよ
- NetBSD
- 異なるアーキテクチャでもデバイスドライバがそのまま動くことが多い
- build.sh いいよ
- クランチバイナリ
- crunchgen(1)
- Linux では Busy Box
- busybox - PukiWiki
- 組み込みLinuxで際立つ「BusyBox」の魅力(1/2) − @IT MONOist
- BSD ソースコードの値段
- いま無料
- 30 年前は 1000 万円
- AT&T へのライセンス料とかいろいろ
- デバイスドライバ
FreeBSD => OpenBSD => NetBSD |++++++++++++| ここを itojun がやってた NetBSD への移植は速かった
_ ぐったり
体力の全開なので帰宅後 btn-q
_ 5時間後
起きた。だる
_ 生活のリズムは重要
- 普段
- 2330 就寝
- 0540 起床
- 昨日
- 0230 就寝 幻魔大戦を見た[ 20080326#p08 ]
- 0540 起床
- 今日
- 0800 起床 かなりつらい
- 1500 起きてるのがつらいので 6 時間寝た
普段は睡眠時間ギリギリの生活しているようです。だからどこかでリズムを変えるとかなり堪えるようです。
2008-03-29 :-)
_ [AsiaBSDCon]AsiaBSDCon 2008 3 日目
- P1B: Tracking FreeBSD in a Commercial Setting
- Key Note
- P3B: BSD implementations of XCAST6
- P4B: Send and Receive of File System Protocols: Userspace Approach With puffs
XCAST の講演者は日本人ですが英語でした。それ以外の方々はネイティブな英語でした。XCAST のひとはかろうじて聞き取れたけどそれ以外のひとはさっぱりさっぱり。スライドの文字を追ってました。英語を聞き取れないと絶望的に分かりません。明日も行きます。
_ [リッジレーサーズ][LINEAR]ちょっとエッチな感じがいいよね
下世話といえば……「ちょっとエッチな感じがいいよね」という話から、デザイナーとのやりとりで「この辺をこういう感じで」と永瀬麗子のイメージを切り出したものを送ってみたら、デザイナーの方と気があっていたというか、「前に壁紙作るときに切り出した絵があるんだよね」と見せてもらったのがまったく同じ「永瀬麗子の足」の部分だったんですよ。
ということでたとえば LINEAR vol.01 の絵を使ってみます。
胸を切り出す。
足を切り出す。
_ [Let's CF-R4][NetBSD][xorg]Let's CF-R4 の NetBSD に xorg を入れる( 途中 )
グーグル検索しながら適当( t e k i t o - )に /etc/X11/xorg.conf を書きつつ startx を繰り返す生活をしているのだが言うなれば
- /etc/X11/xorg.conf を書く
- startx
1 と 2 を行ったり来たりしております。とりあえず X が起動しました。
# tail -20 /var/log/Xorg.0.log (**) Option "XkbRules" "xorg" (**) Keyboard1: XkbRules: "xorg" (**) Option "XkbModel" "jp106" (**) Keyboard1: XkbModel: "jp106" (**) Option "XkbLayout" "jp" (**) Keyboard1: XkbLayout: "jp" (**) Option "XkbOptions" "ctrl:swapcaps,caps:capslock" (**) Keyboard1: XkbOptions: "ctrl:swapcaps,caps:capslock" (**) Option "CustomKeycodes" "off" (**) Keyboard1: CustomKeycodes disabled (II) XINPUT: Adding extended input device "Keyboard1" (type: KEYBOARD) (II) XINPUT: Adding extended input device "Mouse1" (type: MOUSE) (II) 3rd Button detected: disabling emulate3Button (WW) VESA(0): remove MTRR 0 - 1000 (WW) VESA(0): remove MTRR 0 - 1000 (WW) VESA(0): remove MTRR 0 - 1000 (WW) VESA(0): remove MTRR 0 - 1000 (WW) VESA(0): remove MTRR 0 - 1000 (WW) VESA(0): remove MTRR 0 - 1000 FreeFontPath: FPE "/usr/pkg/lib/X11/fonts/misc/" refcount is 2, should be 1; fixing.
入力デバイスから何も操作できません。Let's CF-R4 のタッチパッドは synaptics デバイスナントカらしいです。Windows のシステム情報 でいうコレ。
IRQ 12 Synaptics PS/2 Port TouchPad OK
ナンデスカソレ?カーネルコンフィグする必要があるらしいです。アーッ Let's にソースコード置いてない!とりあえず別の計算機で見るみる。これ
rin@hitomi[~]% grep PMS /usr/src/sys/arch/i386/conf/GENERIC #options PMS_DISABLE_POWERHOOK # Disable PS/2 reset on resume #options PMS_SYNAPTICS_TOUCHPAD # Enable support for Synaptics Touchpads
明日にでもソースコードを cvs co します。
2008-03-30 :-)
_ [AsiaBSDCon]AsiaBSDCon 2008 4 日目
- P5A: Logical Isolation in the NetBSD Kernel
- P6A: A Portable iSCSI Initiator
Xen を使ってウハウハとか? iSCSI の利用方法とか。相変わらず英語ですが。どうにも疲労しまくっていたので午前中で抜け出して帰宅しました。
AsiaBSDCon 2008 は私にとって初めての BSDCon だったわけですが英語を聞き取るスキルが無いことを痛感しました。英語を聞き取れないとほとんど分からないです。また、参加者の半分くらいが外国人なので会話も何も出来ません。BSD デベロッパーはみんな英語話せるのかしら。
_ ぐったり
btn-q
_ [twitter]twitter/studio5 から昨日のうちに direct message が来ていた
ということに今日気づきました。時すでに遅し。すんません (ノД`)
twitter には gmail.com のメールアドレスを登録してるんでケータイのメールアドレスを登録してみました。これで direct message が来たらケータイに通知されるかな。
_ UNIX MAGAZINE とか BSD MAGAZINE の DVD に PDF があるが検索できない
それ Google デスクトップ検索でry
ということで Google デスクトップ検索をインストールしてみました。
検索。
Gmail のメールがヒットしました( オプションにより Gmail のメールを検索できる )。
まだインデックスを作成中です。
475615008X
4756144616
2008-03-31 :-)
_ 朝ったー
0540 起床。
_ [東祥高][パンツァードラグーン]通勤ったー
パンツァードラグーン
ゲーム未プレイ。作曲は東祥高さん。1 曲目オーケストラアレンジから始まります。雄大な曲です。まるで「地球大自然ナントカ」といった番組に使えそうな曲です。全体的にバトル曲が多いです。緩やかな曲調のなかにドラムの激しさが混ざっていたりと空中戦らしい曲が多いです。
B00005MSU7
_ 仕事
0830 出勤。
大井町線ダイヤ改正してから初めての通勤です( 大井町線は 3/28( 金 )に改正したけど 3/28 は AsiaBSDCon に行ったので通勤してません )。これまでと比較して 5 分遅く仕事場に到着しました。なるほど。
_ [英語]英語学習への道
AsiaBSDCon 2008 に行って英語を話す/聞く/読む/書くスキルの無いことが分かったので身に付けることにします。その手段を模索します。昨日蔵に行ったときに ohguchi や hiroym にちょいと話をしてみたのだけど、やれそうなことを書き出してみます。まず私の現状。大別して「読み書き」「会話」に分けます。
- 読み書き
- 中学生レベル
- NetBSD Documentation を読むくらいは出来る
- たぶん書けない
- 会話
- 悪い意味で中学生レベル
- 英語圏の国は経験なし
- 外国人の知人なんて居ない
やれそうなこと。
- 読み書き
- NetBSD Mailing Lists を読む
- 議論に参加する
- 技術系ブログをひたすら読むなどする
- NetBSD Mailing Lists を読む
- 会話
- 英会話学校派
- イーオンとかどうよ( by ohguchi )
- いきなり実践派
- アイリッシュパブで実践してみたらどうよ( by hiroym )
- 英会話学校派
読み書きは今からでも出来ます。会話は英会話学校に通おうかしら。id:youichi が英会話やってた気がする。
_ [Now][Ruby]Now
C
void Now( void ) { char buf[ 128 ]; time_t tm; time( &tm ); strftime( buf, sizeof buf, "%Y-%m-%d %H:%M:%S", localtime( &tm ) ); puts( buf ); }
Ruby
ruby -e 'p Time.now.strftime( "%Y-%m-%d %H:%M:%S" )'
date(1)
% date +"%F %T"
_ {ゲーム,マンガ,アニメ}が影響を及ぼすと言うならば
理想的な子供が育つような{ゲーム,マンガ,アニメ}を作ってそれを義務教育に使って教育すればいいじゃない。
_ [Let's CF-R4][NetBSD][xorg]Let's note CF-R4 NetBSD xorg を起動させる
起動しました。
記念のスクリーンショット。ImageMagick の import を使いました。
ref.
- How to take a screen shot on X11
- すみっこのメモ - CF-R4にUbuntu(edgy)をインストールしたときのメモ
- cc-env - laptop 用の kernel 再構築
- Let's note R4 への Linux インストールメモ
- yoosee.wiki - Debian sarge on Let's Note CF-Y4
- Momma's Wiki: FreeBSD/On Let's Note CF-T2 - Let's Noteの円形タッチパッドはSynaptics社製。ports...
マウスはこの設定でした。
XFree86 3.3.4 以降は NetBSD 1.4 で導入された新しい wscons コンソールドライバに含まれているマウスドライバもサポートしています。NetBSD 1.4 で wscons を使っているならば、/etc/XF86Config ではマウスのプロトコルとして wsmouse'' を指定し、デバイスとして /dev/wsmouse0'' を指定してください。
_ あらかー。 [生地のふくらみを考慮しなかったって感じかな? うちが焼くときは、生地と生地の間に生地の大きさの1.5倍程度の空間を設..]
_ さいき [クッキーと言うよりなんかパイに見えるw (特に上の写真)]
_ 坊T@daresore [なんかバター多いとか? あとオーブン温度も少しあってないのかもとか 思ってみたり。 (クッキー作ったこと無いので勘で..]
_ みわ [あらかーさん: これだけ膨らむのは正しいのかどうなのか全然自信ないのでレシピどおりに正攻法で焼いてみました。膨らむの..]