zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|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|
2004|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|
2006|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|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|
2012|04|05|06|09|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2009年03月12日(Thu)

open(uri).readは良くない

open-uriでopenしたのをcloseしてないのは良くないとつぶやいてみたらいくつか反応があった。

  • URI.parse(uri).read とか URI(uri).read のように URI#read を使えばいいという話。openメソッドにこだわらなければこれが一番良さそう。
  • open(uri).read {} は read に(使われない)ブロックを渡しているだけで open(uri).read と同じ。
  • open(uri, &:read) というのを今回思いついたけど code golf のプログラムなら気にせず open(uri).read にしてしまいそう。

自分が使うときは open(uri){|f| f.read } と書いている。


2009年03月13日(Fri)

ruby_1_8ブランチ(ruby 1.8.8dev)でrubygems 1.3.1が動かない

RUBY_PATCHLEVELが-1になった影響らしい。 rubygems/version.rbにtrunkのr21951と同じ修正をして手元では解決。 rubyforgeのトラッカーに報告してみたので1.3.2では直るかもしれない。

lennyのcryptsetupはtimeoutをサポートしていない

/usr/share/doc/cryptsetup/NEWS.Debian.gz の「cryptsetup (2:1.0.6-7) unstable; urgency=medium」のところに書いてあった。

 Support for the timeout option has been removed from cryptdisks initscripts
 in order to support splash screens and remote shells in boot process.
 The implementation had been unclean and produced many anyway.
 If you used the timeout option on headless systems without physical access,
 then it's a much cleaner solution anyway, to use the 'noauto' option in
 /etc/crypttab, and start the encrypted devices manually with
 '/etc/init.d/cryptdisks force-start'.
 Another approach is to start a minimal ssh-server in the initramfs and unlock
 the encrypted devices after connecting to it. This even supports encrypted
 root filesystems for headless server systems.
 For more information, please see /usr/share/docs/cryptsetup/README.Debian.gz

/etc/crypttabにnoautoオプションをつけて「/etc/init.d/cryptdisks force-start」で手動で開始するか、initramfsに最小限のsshサーバを入れておくとかすればいいらしい。


2009年03月19日(Thu)

printfでSIGSEGVしたり(null)だったりする話

printfでSIGSEGVしたりしなかったりする話をみて、調べてみたらだいたい予想通りの理由だった。

「(null)」はgcc依存でいいときに便利に使っていたので、むしろSIGSEGVになる方が予想外の挙動だった。

調べた結果は後で書く。

2009-04-01追記: まとめ直して書こうと思ったらなかなか書けないので、概要だけ。 gcc -Sで調べたら片方はputsに最適化されていてSIGSEGVになっていて、もう片方はprintfがちゃんと呼ばれて「(null)」になっていたという話。

[firefox] アクセスキーがきかない

アドオンのダイアログで「更新を確認(F)」のAlt+Fなどがきかないのが非常に不便だったので原因を調べてみたところ、ページ内のaccesskey属性が邪魔でui.key.generalAccessKeyを0にしていたのが原因だった。

今はui.key.generalAccessKeyの他にui.key.chromeAccessui.key.contentAccessでchrome部分とページの内容部分が別々に設定できるようになっていて、ui.key.contentAccessのデフォルトがWindowsとLinuxでは「5 ("Shift+Alt")」になっているようなので、デフォルトに戻すことにした。


2009年03月26日(Thu)

[rails] セッションクッキーの有効期限

rails を 2.3.2 にあげたら controller の before_filter で「::ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_expi res => 3.day.from_now )」としていたのがきかなくなったので、 config/initializers/session_store.rb の ActionController::Base.session に代入しているハッシュに「:expire_after => 3.day,」を追加した。

expires を直接更新していたのをやめて、差分での指定が出来るようになったので、from_now が不要になった。(間違えてつけていたら RangeError になっていた。)


copyright © 2001-2013 ZnZ
Key fingerprint = 6E14 2C9C DBD7 874D 8B3C CAA8 9B58 5538 ED7E 1B73