2002年10月18日(金) 風の強い一日
● 自転車はあきらめたヘタレなわたくし。
● 電池を長持ちさせる
Marc Lehmann's "speedstep"をもう一度見たら、
this utility only supports Intel Pentium III Mobile-M cpus, on all other models/cpus, it might kill your data or fry your machine.
と書いてあった。手元のは、
Pentium III (Coppermine)
なので全然だめなのです。PCが飛ぶんならそれはそれでいいけど。
というわけで紹介されていた、ARM Linuxを眺める。 ドキュメントを見ると、 kernel patchなのだと。 どこかのI/Oポートに1か0を書き込めばクロックが変わるんだろう、とか、 簡単に考えてたんだけどそうでもないみたい。 再コンパイルにつきあう時間はちょっとなさそう。 もっと時間ができた時に試してみます。残念。
2003年10月18日(土) Nachbarhilfe
● となり町の子ども用品バザーに行く。要らないモノのある人は事前にそれを事務局に持って行って値段を付けておく。僕らは欲しいものを買って、モノが売れた場合には持って行った人がお金が、売れなかった場合は品物が帰ってくる仕組みみたい。子ども用品なんてどんどんサイズが変わるし、いい仕組みだと思う。
● 1つのHTMLファイルに多国語を書いておいてユーザーの求める言語だけを表示する
勇魚さんのコロンビア事故最終報告書の翻訳に触発されて思いつきました。 CSSのコンテント・ネゴシエーションを利用してみます。
下記の3つのCSSファイルを用意します。
- m17n.css
div.ja, div.en { display: none; }- local.css.ja
div.ja { display: block; }- local.css.en
div.en { display: block; }
これらのCSSを利用する下記のようなHTMLファイルを、
<html> <head> <link rel="stylesheet" href="m17n.css" type="text/css"> <link rel="stylesheet" href="local.css" type="text/css"> </head> <body> <div class="ja" lang="ja"> <p>日本語のテキスト</p> </div> <div class="en" lang="en"> <p>English text</p> </div> </body> </html>
コンテント・ネゴシエーションを可能にしたサーバーに置いて CSSを理解するブラウザから閲覧すると、 ブラウザの設定によって、 local.cssのためにlocal.css.jaかlocal.css.enが送信されて、 見たい方のdivだけが見えるというわけ。
…いや、それだけなんですけどね。 本当はtDiaryの表示の多言語化をしたかったのだけれど、奥が深そう。 HTTP_ACCEPT_LANGUAGEに応じてconf.langを設定して、 UTF-8で出力できるようにして、 conf.langに応じてテキストを出力するかどうか判断するプラグインを書けば、 1つのtDiaryで、複数の言語のなかから読者に最適な言語を表示できるのだ。 翻訳はもちろん日記の筆者がするのだけれど、書く人が一緒なら、 各国語で同時に編集できるメリットは多い。 HTTP_ACCEPT_LANGUAGEと使用可能な言語から、最適な言語を選ぶアルゴリズムを、 知る必要がある。 こちらはまた今度。(いつ?)
2004年10月18日(月) 朝から自転車で坂を登る
● 公衆電話から電話をかける
ちょっと用事があって公衆電話から電話をかけたら、先方の声は聞こえてくるんだけれど、こちらの声は先方に届かない、という妙な事態になりました。まあこちらのインフラなんてこんなもんだろう。仕方がないので出先から戻るまで電話はおあずけ。
きっとイラクの軍用電話の方がちゃんと通じるんだ。わはは。
2005年10月18日(火) シゴトたまってますよー
● -DNDEBUGでSIGSEGV
assert(file = fopen(...));とかやっちゃいけません。昔の自分のアホー。
…やっとgmon.outができた。次はgprofの出力の読み方のべんきょー(泥縄)
● 折りたたみ式箸
旅行用の歯ブラシみたいに分割できるの。初めてみた。やっぱり飛行機に持ち込むのはしんどかったそうで。
● shm_open(3)のプロトタイプ
日本語のmanを読むとvoid * shm_open(...)と書いてあって焦った。英語だとint shm_open(...)で、こっちが本当だよね。
man-pages-ja-0.6-0.20050215。バグレポートはどこに出すのが正しいんだろ?最新版ではなおってたりする?
● gprofはシステムコールは測れないのだと気づきがっかりする
gprofは頼れないのでどんどんソースの贅肉を落として速度を測りまくりました。SolarisでPOSIX共有メモリへの書き込みが遅くみえるのは、shm_open(3)かftruncate(3)が遅いためのようだ。
で、Google先生におうかがいを立てると、SunOS 5.7_x86: librt.so.1 Patchなんていうページ*1がみつかりました。職場のSolarisは5.8だしSparcなので関係ないような気もするけど関係あるような気もする…ていうか関係あることになってくれ。
そういうわけで既知の問題として片づけちまおうかと思っている今日このごろ。次の仕事に移ろう。
*1 マウスポインタを動かすだけでドロップダウンメニューが開きまくるので注意
● [memo][Ruby] SNMP Library for Rubyを/usr/localに入れる
相変らずsetup.rbの使いかたをわかっていない。すまーん。
$ ruby setup.rb config --prefix=/usr/local \ --siteruby=/usr/local/lib/ruby/site_ruby \ --datadir=/usr/local/lib/ruby/site_ruby/data/ $ ruby setup.rb setup # ruby steup.rb install
で少なくともruby -rsnmp -e ''はできた。
2007年10月18日(木) そういえば昨日はC仕事もすすみましてよ
● Firefoxが、「突然終了」してから「セッションを復元」するときに、Yahoo!メールはログインした状態に戻るが、Gmailはログインする前の状態に戻る。「復元」の際にはたぶんCookieが保存されるのだろうからYahoo!メールがログインした状態に戻るは理解できるが、Gmailがログイン前の状態に戻る機構はよくわからない。CookieにオプションがあるのかJavascriptを使ってるのか…そのうち調べ、る時間があるといいな。
● ドイツ人の性別は手紙から推測しやすい
久しぶりにドイツの人にメールを書いた。さて、Mr.と書くかMs.と書くか悩んだのだけれど、英語ほど難しくないことがわかった。ドイツ語では職名が性別によって変化するので、それを見ればすぐわかったわけ。
● クラッチケーブル到着
注文してから、到着すると言われた次の日にはちゃんと到着したと電話がかかってきた。ありがたい。よくみると「Made in italy」とのこと。すごい…が一抹の不安も :)
明日交換できるかな。
2010年10月18日(月) この日誌が時々見えなくなるのはなぜなんだろう
● [Ruby] WEBrickがAccessLogを知らないと言う
家のサーバで運用しているBitChannelのサイトが、 Firefoxから閲覧すると時々下記のようなエラーを表示するのに気づきました。
BitChannel Error uninitialized constant WEBrick::HTTPStatus::Status::AccessLog (NameError) /usr/lib/ruby/1.8/webrick/httpstatus.rb:17:in `initialize' /home/www/wiki/bitchannel/lib/bitchannel/handler.rb:59:in `exception' /home/www/wiki/bitchannel/lib/bitchannel/handler.rb:59:in `raise' /home/www/wiki/bitchannel/lib/bitchannel/handler.rb:59:in `check_IfModifiedSince' /home/www/wiki/bitchannel/lib/bitchannel/handler.rb:38:in `handle' /home/www/wiki/bitchannel/lib/bitchannel/cgi.rb:23:in `do_GET' /home/www/wiki/bitchannel/lib/bitchannel/wikispace.rb:39:in `session' /home/www/wiki/bitchannel/lib/bitchannel/cgi.rb:22:in `do_GET' /usr/lib/ruby/1.8/webrick/cgi.rb:114:in `__send__' /usr/lib/ruby/1.8/webrick/cgi.rb:114:in `service' /usr/lib/ruby/1.8/webrick/cgi.rb:75:in `start' /home/www/wiki/bitchannel/lib/bitchannel/webrick_cgi.rb:25:in `run' /home/www/wiki/bitchannel/lib/bitchannel/webrick_cgi.rb:20:in `each_request' /home/www/wiki/bitchannel/lib/bitchannel/webrick_cgi.rb:24:in `run' /home/www/wiki/bitchannel/lib/bitchannel/webrick_cgi.rb:16:in `main' /home/www/wiki/bitchannel/lib/bitchannel/cgi.rb:17:in `main' /home/www/html/w/index.cgi:14
サーバはUbuntu 10.04で、Rubyのバージョンは下記のようになっています。
$ dpkg -l ruby Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ 名前 バージョ 説明 +++-==============-==============-============================================ ii ruby 4.2 An interpreter of object-oriented scripting $ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
現象を再現する最小のコードは下記かな。
$ cat test.rb require 'webrick/httpstatus' raise WEBrick::HTTPStatus::NotModified, 'not modified' $ ruby test.rb /usr/lib/ruby/1.8/webrick/httpstatus.rb:17:in `initialize': uninitialized constant WEBrick::HTTPStatus::Status::AccessLog (NameError) from test.rb:2:in `exception' from test.rb:2:in `raise' from test.rb:2
このサーバでは、下記のような変更でエラーがでなくなったようです。
--- /usr/lib/ruby/1.8/webrick/httpstatus.rb.orig 2010-01-10 00:30:06.000000000 -1000 +++ /usr/lib/ruby/1.8/webrick/httpstatus.rb 2010-10-18 18:32:08.301752311 -1000 @@ -8,6 +8,8 @@ # # $IPR: httpstatus.rb,v 1.11 2003/03/24 20:18:55 gotoyuzo Exp $ +require 'webrick/accesslog' + module WEBrick module HTTPStatus
$ ruby test.rb test.rb:2: not modified (WEBrick::HTTPStatus::NotModified)
えーと、1.9.2ではどうなってるのかな。Momonga 7で
$ ruby -v test.rb ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux] /usr/lib/ruby/1.9.1/webrick/httpstatus.rb:17:in `initialize': uninitialized constant WEBrick::HTTPStatus::Status::AccessLog (NameError) from test.rb:2:in `exception' from test.rb:2:in `raise' from test.rb:2:in `<main>'
うーん。しかしどちらかというとrequireを変えろ、という話かも?
$ cat test2.rb require 'webrick' raise WEBrick::HTTPStatus::NotModified, 'not modified' $ ruby test2.rb test2.rb:2:in `<main>': not modified (WEBrick::HTTPStatus::NotModified)
> KM [これかな? http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sh..]
> zunda [ありがとうございます。JMに報告してみました。]