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をどうぞ。


2010年04月03日(Sat)

torne用USB HDD

torne対応と書いてあるものは高かったので、他のテレビだったかHDDレコーダーだったかに対応と書いてある安い1.5TBのUSB HDDを買ってみたが、そのまま問題なく使えた。 FAT32だったら何でも良さそうな感じがした。

http://ja.wikipedia.org/wiki/File_Allocation_Table によるとFAT32だと1ファイルのサイズ制限が4GiBより1バイト少ないらしいので、それを超える時間の録画をどうしているのかが気になった。


2010年04月08日(Thu)

[emacs] るりま用rd-modeの設定

るりま用の rd-mode の設定の http://github.com/znz/dot-emacs/blob/master/init.el.d/50rd-mode.el を含めて emacs23 用に作り直している途中の emacs の設定を github においた。


2010年04月12日(Mon)

[ruby] gccの最適化のバグ?

http://redmine.ruby-lang.org/issues/show/2727 の件。 gdb の watch を使ってメモリが書き換えられてしまうところを追ってみたけど、さっぱり参考にならなかった。 gcc 4.4.1 だけじゃなくて Ubuntu 10.04 (beta) や sid の gcc 4.4.3 でも再現するようなので、gcc 側に報告した方が良さそうだけど、どこに言えばいいんだろう? 報告しやすいところにするなら debian の gcc パッケージに BTS になりそうだけど。

% gdb --args ./miniruby -e 'catch(:foo){throw :foo}'
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/kazu/build/ruby/ruby_1_9_1/ruby/miniruby...done.
(gdb) b rb_f_catch
Breakpoint 1 at 0x8167be7: file /home/kazu/wc/ruby/branches/ruby_1_9_1/vm_eval.c, line 1238.
(gdb) r
Starting program: /home/kazu/build/ruby/ruby_1_9_1/ruby/miniruby -e catch\(:foo\)\{throw\ :foo\}
[Thread debugging using libthread_db enabled]
[New Thread 0xb7c00b70 (LWP 23992)]

Breakpoint 1, rb_f_catch (argc=1, argv=0xb7c01024)
    at /home/kazu/wc/ruby/branches/ruby_1_9_1/vm_eval.c:1238
1238    {
(gdb) watch *&th
Hardware watchpoint 2: *&th
(gdb) c
Continuing.
Hardware watchpoint 2: *&th

Old value = (rb_thread_t *) 0xb7e723ae
New value = (rb_thread_t *) 0x81c7758
rb_f_catch (argc=1, argv=0xb7c01024)
    at /home/kazu/wc/ruby/branches/ruby_1_9_1/vm_eval.c:1243
1243        rb_control_frame_t *saved_cfp = th->cfp;
(gdb)
Continuing.
Hardware watchpoint 2: *&th

Old value = (rb_thread_t *) 0x81c7758
New value = (rb_thread_t *) 0xb7c80f8d
check_block (argc=1, argv=0xb7c01024)
    at /home/kazu/wc/ruby/branches/ruby_1_9_1/vm.c:538
538         if (blockptr == 0) {
(gdb)
Continuing.
Hardware watchpoint 2: *&th

Old value = (rb_thread_t *) 0xb7c80f8d
New value = (rb_thread_t *) 0xffffffff
0x0816809c in vm_yield_setup_block_args (argc=1, argv=0xb7c01024)
    at /home/kazu/wc/ruby/branches/ruby_1_9_1/vm_insnhelper.c:802
802         if (iseq->arg_rest == -1 && iseq->arg_opts == 0) {
(gdb)
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x08167f46 in rb_f_catch (argc=1, argv=0xb7c01024)
    at /home/kazu/wc/ruby/branches/ruby_1_9_1/vm_eval.c:1258
1258        else if (state == TAG_THROW && RNODE(th->errinfo)->u1.value == tag) {
(gdb)

2010年04月17日(Sat)

[emacs] emacs23とwanderlustでメールの文字化け

「charset=iso-2022-jp」なのにiso-2022-jpにない文字を使っているというよくある問題。

いわゆる機種依存文字については http://nijino.homelinux.net/emacs/emacs23-ja.html の設定を使うことで文字化けしなくなったが、 http://redmine.ruby-lang.org/issues/show/3161 で送られてきた http://www.fdiary.net/ml/ruby-reference-manual/msg/2137 が化けてしまう (本文中の「〜」が「ESC $(D"7」になるのと Subject が「帳」とフォントに対応する文字がないとき(?)の四角になる)。

http://github.com/znz/dot-emacs/blob/master/init.el.d/20japanese.el (該当部分は下にもコピー) のように CP50220 に JIS X 0212 対応をしたオレオレコーディングシステムを追加して使うようにしたら、本文の方は化けなくなったが、Subject の方は化けたままだった。

 (define-coding-system 'cp50220+jisx0212
   "CP50220 (Microsoft iso-2022-jp for mail) + JIS X 0212"
   :coding-type 'iso-2022
   :mnemonic ?J
   :designation [(ascii japanese-jisx0208-1978 japanese-jisx0208
                        japanese-jisx0212 ; 追加
                        latin-jisx0201 katakana-jisx0201)
                 nil nil nil]
   :flags '(short ascii-at-eol ascii-at-cntl 7-bit designation)
   :charset-list '(ascii japanese-jisx0208
                         japanese-jisx0212 ; 追加
                         japanese-jisx0208-1978 latin-jisx0201
                         katakana-jisx0201)
   :decode-translation-table '(cp51932-decode japanese-ucs-jis-to-cp932-map)
   :encode-translation-table '(cp50220-jisx0201-katakana-to-zenkaku
                               cp51932-encode japanese-ucs-cp932-to-jis-map))
 ;; SEMI
 (eval-after-load "mcs-20"
   '(when (coding-system-p 'cp50220+jisx0212)
      (add-to-list 'mime-charset-coding-system-alist
                   '(iso-2022-jp . cp50220+jisx0212))))

化ける Subject 部分の元は以下の通り。

Subject: [ruby-reference-manual:2137] [Bug #3161] @sse =?iso-2022-jp?B?GyRCJEchVkQiKEIkcjsyPkghIyFXJE8bKEI=?=
 =?iso-2022-jp?B?GyRCSVRNVxsoQg==?=

2010年04月18日(Sun)

[zsh] download-or-expand-or-complete

紫ログ:【雑】tarとかunzipとかでアーカイブファイルのURLを直接指定したい - livedoor Blog(ブログ) を見て、勝手に置き換えられるのは嫌だなあと思って、タブの補完の前に URL だったらダウンロードするコマンドラインを挟むものを作ってみた。

動作としては

  • コマンドラインの最後の単語が /(https?|ftp):/ で始まっていたら
    • その単語をファイル名のみにする
    • 変更したコマンドラインを push-line で保存する
    • 現在のコマンドラインを wget -N URL にする
  • 最後の単語がそれ以外なら expand-or-complete を呼ぶ

という感じにしてみた。

download-or-expand-or-complete () {
  local url
  local -a words
  words=("${(@Q)${(z)BUFFER}}")
  if [[ "$words[-1]" == (http|https|ftp):* ]]; then
    url="$words[-1]"
    words[-1]=$url:t
    BUFFER="$words"
    zle push-line
    BUFFER="wget $url"
  else
    zle expand-or-complete
  fi
}
zle -N download-or-expand-or-complete
bindkey '^I' download-or-expand-or-complete

2010年04月21日(Wed)

svn 1.6 で @ を含むファイルが指定出来ない

すでにバージョン管理下にあるものはディレクトリごと指定すれば問題なく svn commit 出来るが、 svn add はすでに管理下になっているディレクトリを指定してその中のファイルを追加は出来なくて困っていた。

とりあえず libsvn-ruby1.8 を使って以下のようにしたら追加できた。

% irb -r irb/completion
irb(main):001:0> require 'svn/client'
=> true
irb(main):002:0> ctx = Svn::Client::Context.new
=> #<Svn::Ext::Client::Svn_client_ctx_t:0x7f50d403e9a0>
irb(main):003:0> ctx.add("foo@bar", false)
=> nil
irb(main):004:0>

その後 twitter で「foo@bar@」のように指定すれば良いと教えてもらった。 他の操作でも同様に末尾に「@」をつければ出来た。

% svn add foo@bar
svn: 警告: 'foo' が見つかりません
% svn add foo@bar@
A         foo@bar
%

2010年04月24日(Sat)

第 42 回 Ruby/Rails 勉強会@関西

今回も参加した。

最近買った MacBook Pro の設定がほとんど出来ていなかったので、そっちに気を取られて、あんまり聞いていないこともあったけど。


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