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


2005年11月03日(Thu)

[web] OperaShow

ブラウザでプレゼンというとOperaにはOperaShowというのが少し前のバージョンからついているけど、あまり有名じゃないのかなあ。


2005年11月04日(Fri)

[ruby] [ruby-list:41478] [ANN] ReFe(Gems版)

HTML版のファイル名(への変換ルール)を変更したけど影響はないのかなと思ったけど、ReFeは元のRDファイルの方を使うから影響はないんだった。

RWikiのUTF-8化を考えているけど、それは日本語が入ったファイル名が変わるから影響があるのかもしれない。

[web] fragmentの変換

フッタに入れているようにクールなURIは変わらないということに出来るだけしたいので、RWikiをUTF-8にしたときにページが存在しなくて、指定されたページ名をeuc-jp(-ms)と見なしてUTF-8に変換した名前のページが存在すればリンクを表示するようにしたい。そこまではサーバ側だけで出来るからいいとして、fragment部分(URIの#以降の部分)もどうにかしたいと思うと、その部分は普通はサーバ側に送られてこないので変換できなくて困ってしまう。

クライアント側で何とか出来ないかと思ったけど、仮にJavaScriptで変換できたとしても、euc-jpとeuc-jp-msのような違いがあって、それがサーバ側と一致していないと困ってしまう。だから結局サーバに送信して変換してしまうしかなさそう。というわけでajaxのようにサーバに送ってどうにかすれば良さそうと思ったけど、具体的にどういうコードにすればいいのかはまだ調べていない。


2005年11月06日(Sun)

[ruby] iconv.dll

iconv.dllでrb_sys_fail(iconv)をみて、そういえばcygwinの自分でmakeしたruby18がiconvでErrno::ENOENTになることがあると思って調べてみた。

rubyとirbはcygwinのパッケージのバイナリで、ruby18とirb18は自分でmakeしたもの。自分でmakeした方はSylpheed/Win32を試すときに入れたものに入っていたiconv.dllを使ってしまっていて、Iconv::IllegalSequenceにならなければ(偶然?)うまく動いていて、Iconv::IllegalSequenceになるべきところから変になってしまうようです。

途中でmakeし直したのでruby18のバージョンが変わってますが、ext/iconvは変わってないので影響はないはずです。

ではC:\GTK\bin\iconv.dllが見えなければいいのかと思ってC:\GTK\binをPATHからはずしてみるとrequire 'iconv'がLoadErrorになって、結局cygwinのパッケージのrubyと同じ状態には出来なかった。

% irb18
irb 0.9.5(05/04/13)
ruby 1.8.3 (2005-10-23) [i386-cygwin]
irb(main):001:0> require 'iconv'
=> true
irb(main):002:0> p Iconv.iconv("ISO8859-1", "UTF-8", "ABCDE")
["ABCDE"]
=> nil
irb(main):003:0> p Iconv.iconv("ISO8859-1", "UTF-8", "\342\200\234")
Errno::ENOENT: No such file or directory - iconv
        from (irb):3:in `iconv'
        from (irb):3
        from :0
irb(main):004:0>
% irb18
irb 0.9.5(05/04/13)
ruby 1.8.4 (2005-11-06) [i386-cygwin]
irb(main):001:0> require 'iconv'
=> true
irb(main):002:0> puts File.read("/proc/#{$$}/maps")
00400000-0040A000 r-xs 00401000 A8B0:01F2 4503599627439818    /opt/ruby18/bin/ruby18.exe
7C940000-7C9DD000 rw-p 7C953156 A8B0:01F2 562949953666397     /cygdrive/c/WINDOWS/system32/ntdll.dll
7C800000-7C931000 rw-p 7C80B436 A8B0:01F2 562949953666407     /cygdrive/c/WINDOWS/system32/kernel32.dll
10000000-100C3000 r-xs 10084A00 A8B0:01F2 7318349394546386    /opt/ruby18/bin/cygruby1818.dll
77CF0000-77D7F000 r-xs 77CFF538 A8B0:01F2 1125899906960057    /cygdrive/c/WINDOWS/system32/USER32.dll
77ED0000-77F16000 r-xs 77ED63CA A8B0:01F2 3421891291871690816   /cygdrive/c/WINDOWS/system32/GDI32.dll
6F530000-6F537000 r--s 6F5317F0 A8B0:01F2 281474976761713     /usr/bin/cygcrypt-0.dll
61000000-61259000 r-xs 6104BA10 A8B0:01F2 844424930181929     /usr/bin/cygwin1.dll
77D80000-77E29000 r-xs 77D870D4 A8B0:01F2 562949953666419     /cygdrive/c/WINDOWS/system32/ADVAPI32.DLL
77E30000-77EC1000 r-xs 77E36284 A8B0:01F2 562949953666701     /cygdrive/c/WINDOWS/system32/RPCRT4.dll
762E0000-762FD000 r-xs 762E12C0 A8B0:01F2 562949953667090     /cygdrive/c/WINDOWS/system32/IMM32.DLL
60740000-60749000 r-xs 60742EAD A8B0:01F2 562949953667027     /cygdrive/c/WINDOWS/system32/LPK.DLL
73F80000-73FEB000 r-xs 73FBAEB6 A8B0:01F2 13879249626625981928   /cygdrive/c/WINDOWS/system32/USP10.dll
77BC0000-77C18000 r-xs 77BCF2A1 A8B0:01F2 562949953666891     /cygdrive/c/WINDOWS/system32/msvcrt.dll
003C0000-003C9000 r--s 003C28F0 A8B0:01F2 1125899907099599    /opt/ruby18/lib/ruby/1.8/i386-cygwin/readline.so
6BD50000-6BD7A000 r-xs 6BD68A90 A8B0:01F2 1688849860347154    /usr/bin/cygreadline6.dll
6C180000-6C1BD000 rw-p 6C1A40D0 A8B0:01F2 1688849860339699    /usr/bin/cygncurses-8.dll
003E0000-003E8000 r--s 003E27C0 A8B0:01F2 1688849860393559    /opt/ruby18/lib/ruby/1.8/i386-cygwin/iconv.so
06820000-068FA000 rw-p 0682D0B7 A8B0:01F2 844424930408275     /cygdrive/c/GTK/bin/iconv.dll
76BA0000-76BAB000 r-xs 76BA10F1 A8B0:01F2 562949953666759     /cygdrive/c/WINDOWS/system32/psapi.dll
=> nil
% irb
irb 0.9.5(05/04/13)
ruby 1.8.3 (2005-09-21) [i386-cygwin]
irb(main):001:0> require 'iconv'
=> true
irb(main):002:0> puts File.read("/proc/#{$$}/maps")
00400000-00405000 r-xs 00401000 A8B0:01F2 562949953509471     /usr/bin/ruby.exe
7C940000-7C9DD000 rw-p 7C953156 A8B0:01F2 562949953666397     /cygdrive/c/WINDOWS/system32/ntdll.dll
7C800000-7C931000 r-xs 7C80B436 A8B0:01F2 562949953666407     /cygdrive/c/WINDOWS/system32/kernel32.dll
10000000-100C3000 r-xs 100842AA A8B0:01F2 562949953509466     /usr/bin/cygruby18.dll
6F530000-6F537000 rw-s 6F5317F0 A8B0:01F2 281474976761713     /usr/bin/cygcrypt-0.dll
61000000-61259000 r-xs 6104BA10 A8B0:01F2 844424930181929     /usr/bin/cygwin1.dll
77D80000-77E29000 r-xs 77D870D4 A8B0:01F2 562949953666419     /cygdrive/c/WINDOWS/system32/ADVAPI32.DLL
77E30000-77EC1000 r-xs 77E36284 A8B0:01F2 562949953666701     /cygdrive/c/WINDOWS/system32/RPCRT4.dll
77CF0000-77D7F000 r-xs 77CFF538 A8B0:01F2 1125899906960057    /cygdrive/c/WINDOWS/system32/USER32.dll
77ED0000-77F16000 r-xs 77ED63CA A8B0:01F2 3421891291871690816   /cygdrive/c/WINDOWS/system32/GDI32.dll
762E0000-762FD000 r-xs 762E12C0 A8B0:01F2 562949953667090     /cygdrive/c/WINDOWS/system32/IMM32.DLL
60740000-60749000 rw-p 60742EAD A8B0:01F2 562949953667027     /cygdrive/c/WINDOWS/system32/LPK.DLL
73F80000-73FEB000 rw-p 73FBAEB6 A8B0:01F2 13879249626625981928   /cygdrive/c/WINDOWS/system32/USP10.dll
77BC0000-77C18000 r-xs 77BCF2A1 A8B0:01F2 562949953666891     /cygdrive/c/WINDOWS/system32/msvcrt.dll
003C0000-003C9000 r--s 003C28AA A8B0:01F2 562949953509566     /usr/lib/ruby/1.8/i386-cygwin/readline.so
6BD50000-6BD7A000 r-xs 6BD68A90 A8B0:01F2 1688849860347154    /usr/bin/cygreadline6.dll
6C180000-6C1BD000 rw-p 6C1A40D0 A8B0:01F2 1688849860339699    /usr/bin/cygncurses-8.dll
003E0000-003E8000 r--s 003E27BA A8B0:01F2 562949953509555     /usr/lib/ruby/1.8/i386-cygwin/iconv.so
6C6F0000-6C7E2000 r-xs 6C7DBB40 A8B0:01F2 281474976783482     /usr/bin/cygiconv-2.dll
76BA0000-76BAB000 r-xs 76BA10F1 A8B0:01F2 562949953666759     /cygdrive/c/WINDOWS/system32/psapi.dll
=> nil
irb(main):003:0>

2005年11月10日(Thu)

[Makefile] 空白

OUTFLAG_SPACEあたりの話はどこかで見たことがあると思って、探してみたら、GNU make 日本語訳(Coop編) - 変数の二つの味の先行空白(leading whitespace)のあたりの話だった。そこでの例はこんな感じ。

nullstring :=
space := $(nullstring) # end of the line
本日のツッコミ(全1件) [ツッコミを入れる]

なかだ [それはGNU makeは末尾のスペースを保存する例なので、ちょっと違いますね。]


2005年11月11日(Fri)

[net] ntp

久しぶりにサービス詳細 : インターネットマルチフィード時刻情報サービス for Publicを見てみたら、いつの間にかDNSラウンドロビンのとかv6のとかが増えていた。ルータとかWindowsとかはDNSラウンドロビンのntp.jst.mfeed.ad.jpにしておくとよさそう。


2005年11月16日(Wed)

[ruby] Rubyist Magazine 0011 号

一周年を過ぎて、順調に続いています。

適当に感想とか。

巻頭言
最近Ruby関係のイベントが多い。中小のイベントはこれからも続きそうだけど、次の大きなイベントは来年6月になりそう?
Ruby の歩き方
号数がついていないからわかりそうだけど、常設記事で今号での変化はなかったはず。
Rubyist Hotlinks 【第 11 回】 後藤兄弟 前編
今回初めて二人一緒のインタビュー。野次馬の人の話で盛り上がっているところもあるような。
Ruby ビギナーのための CGI 入門 【第 1 回】 初めての CGI プログラム
RubyもCGIも知らない人向けの入門記事。
解説 Ruby Refactoring Browser - Ruby Refactoring Browser の組み込み
この記事を参考にして他のエディタへの組み込みも誰か作るのかも?
あなたの Ruby コードを添削します 【第 2 回】 HexStruct.rb
前号で人気のあった添削記事。
コーディングスタイルで例外クラスの定義を1行にするかどうかはよく悩む気がする。
for_ioっていうメソッド名は気に入らないなあ。じゃあどうすればいいのかと言えば、pstore.rbではyaml/store.rbを簡素化するパッチを投げたときにloadで引数の文字列をそのまま内容として扱ってloadするのはload(content)でIOを想定している方はload_file(file)としてみたけど、この2つの違いはxmlstore.rbを作ってみたときに役に立ったので意味はあったと思うけど、名前が良かったかどうかは不明。最近のpstore.rbをよく見るとload_fileの方は使ってないから実はいらないっぽい。1.6.8の方でもfileからMarshal::loadしているところはないからレースコンディション対策がいろいろ変わってる時の一時的なものだった可能性が高いなあ。
話は戻ってload(path)のようにファイルパスを指定して読み込むのとIOを渡して読み込むのとどっちをloadにした方がいいのかというのは悩ましい。
記事とは関係ないけど、ファイル名がフルパスの時はfilepathという変数名にしてフルパスじゃない時にはfilenameという変数名を使うようにしているというのを思い出した。
module_evalやdefine_methodはまだちゃんと使ったことない気がする。スコープやselfがどうなるのかがわかりにくくなりそうなので使わないですむのなら使わない方がいいんだろうけど。
クラス名に2とつけてるけど、これはわかりにくい。冗長にするならHexStructReviewとかHexStructRefactorとか、短くするならHexStructRとか。
プログラマーのための YAML 入門 (実践編)
YAMLを使ったプログラム例の話。「XML + XSLT」との比較の話があって『「XML + XSLT」の場合、元データとしては XML しか利用できません。』とあって、出力についてはXML限定とは書いていないんだけど、実際にXSLTを使ったことがあると、空白の扱いとかの問題があって、XML以外の出力に使うのは結構つらい気がしたのを思い出した。
Rubyist のための他言語探訪 【第 4 回】 Tcl
Tcl/TkはRuby/Tkの内部でも使われているので、Ruby/Tkを奥深くまで使いこなしている人にはなじみ深いのかもしれない。
まとめのところの「一度広まった言語はしぶとく生き残り続けるようです」というところで、LLDNでXML対応awkの話があったのを思い出した。
標準添付ライブラリ紹介 【第 5 回】 enumerator
いつものように、適当に書いておいたら、編集部でいろいろと指摘や改善案を出してもらって、いい感じになりました。指摘とかがないとなかなか書き直しとかが出来ないので、わかりにくいとか例が欲しいとかそういう指摘はありがたかったです。リリースが近づいた時期に、例を出した後に説明がないという指摘もあったのですが、それは次回以降で参考にするということで。
内容はenumerator.soの説明。最初はRubyリファレンスマニュアルにあわせてenumerator.soというサブタイトルにしていたのですが、「.so」はなくてもいいかなと思って削りました。Enumerableの説明もしようかとは思っていたのですが、追加できなかったので、Ruby勉強会@関西-KOF2005の資料などを参考にしてもらうと言うことで。
Ruby Conference 2005 レポート
CodeFest 京都 2005があったころ、こんなことをしていたらしい。
0011-RubyNews
イベント関連と1.8.4preview1です。
0011-RubyEventCheck
1ヶ月分しかないからか、年末でみんな忙しくてイベントがあまりないからか、少なめです。
0011 号 編集後記
お題は勉強会。CodeFest 京都 2005とか関西オープンソース 2005とかで自分の行動が、事前にちゃんと予定を立てていなかったこともあって、結構ダメっぽかったので、今後は積極的にがんばっていこうかという思いはあるのですが、はてさて。

2005年11月17日(Thu)

[ssh] UserKnownHostsFile

cygwin とか coLinuxを見て、NATの中の複数ホストに接続する時にWarning: the RSA host key for 'hoge.test' differs from the key for the IP address '10.1.1.1'のように同じIPアドレスで違うhost keyがあるという警告が出るのは、UserKnownHostsFileを使えばいいということに気がついた。今までもPortを設定するために~/.ssh/configに設定はしていたので、それぞれ1行増えるだけで解決した。


2005年11月19日(Sat)

[Wanderlust] wl + dovecot

ちょっとdovecot-imapdを試してみようと思ったら、「Login failed: elmo-imap4-auth-login」と出てつながらなくて、サーバ側のログ(/var/log/mail.log)には「imap-login: Disconnected」としか出てなくて、*IMAP4 DEBUG*バッファを見ても「NO LOGGING」が3行あるだけで原因がよくわからないと思ったら、dovecotは認証がloginじゃなくてclearという罠だったので、「%INBOX:kazu/clear@dovecot.example.jp」のように「/clear」を追加して解決した。

[i18n] グローバリゼーションとローカリゼーションの問題

bidi関係を調べていたら偶然見つけた。このくらいの話はi18n対応のアプリケーションを作る人には常識として知っておいてほしい気がする。

「文字列の連結」のあたりの話や「ユーザーインターフェイスの問題」の最後の方に書いてある「UI コントロールを文の一部として使用しないこと。」というのはKDEの翻訳でも非常に苦労してそうな感じがした。


2005年11月20日(Sun)

[zsh] M-f, M-b関係

WORDCHARSから「.」を削る。


2005年11月21日(Mon)

[ruby] Re: String%(val) の拡張

区切り無しだと":filename :file" % {:filename => filename, :file => File.read(filename) }とかで簡単に困ったことになるので、Pythonの % 演算子の右辺がdictの場合のように"%{filename}s %{file}s" % {:filename => filename, :file => File.read(filename) }という感じで指定できるのが良いのではないかと思いました。ちなみに括弧はparenよりもbraceの方が#{}に近くていいかなと思ってbraceにしてみてます。


2005年11月22日(Tue)

[NDS][無線LAN] おいでよ どうぶつの森

今までゲームのことはここには(たぶん)書かなかったけど、ニンテンドーWi-Fiコネクションで無線LAN関係ということで。発売日前日だったけど、偶然売っているのをみつけてしまったので、買ってしまった。

ゲーム自体の説明書とは別にニンテンドーWi-Fiコネクションガイドブックという小冊子がついていて、ニンテンドーWi-Fiコネクションと同じ説明が載っている。

対応しているのはWEP(152/128/64ビット)のみで他の暗号化(AESやTKIP)や認証方式(WPA-PSKやWPA-EAP)などには対応していない。

SSIDをブロードキャストしない設定は手動設定で接続出来るので問題なし。

で、接続してみようとすると「エラーコード:51300」でつながらなかったので、とりあえず後で考えようと思って普通に始めて、きりがいいところまでいったところで、もう一度アクセスポイントの設定画面を見ながら試してみると、MACアドレス制限が原因だったとわかったので、DSのMACアドレスを登録すると接続できるようになった。


2005年11月26日(Sat)

[ruby] 第7回 Ruby勉強会@関西

Ruby勉強会@関西のページによると第0回からちょうど1年たつ日だったらしい。 発表については他の人が書いているのでおいといて、雑談ネタのメモ。
  • 例外の上げ方はMyException.raise("message")という書き方が出来てもいいのではないか
  • autoloadとconst_missing。ささださんがruby-devに投げるはず。
  • かずひこさんが使っていたのはrabbitではなくrd2sxi。RDならrabbitでいいのでは?ということで次からはrabbitでrd2sxi風のテーマを使ってプレゼンになる?
  • rescueのelseって使われてる? ripper使えば調べられそう
  • rescueのelseって必要?
  • 次の標準添付ライブラリ紹介のネタは何にしよう?
本日のツッコミ(全1件) [ツッコミを入れる]

どこかの人 [ネタかい!]


2005年11月28日(Mon)

[IRC] irc.fujisawa.wide.ad.jp停止予定

2005.12.04 (Sun) 07:30 - 18:00にirc.fujisawa.wide.ad.jpが停止予定らしい。

最近停止予定がJIRCC MLには流れるのにWebには載らないことが多くて他の人に教えるのに困っていたけど、サーバ管理者によって載せるかどうかが違うのかな。


2005年11月29日(Tue)

[ruby] ゲタ記号

XML 1.0の文字として使えないものをU+3013(ゲタ記号)にしようと思って、Iconvで変換した後にgsubで変換するようにしてみた。ruby 1.8の正規表現の文字クラスだと[\x10000-\x10FFFF]の範囲は扱えなかったので、それ以外の範囲をチェックするようにしてみた。

以下はrwiki/trunk/site/ruby-lang/migrate.rbからiconv周りだけ抜粋。gsub部分があるので、tocodeにはUTF-8系しか使えない。migrate.rbではCVSの,vファイルも変換しているので、fromcodeで多バイト文字の2バイト目以降に「@」が入るものもまずそう(だけど以下の部分だけなら問題ないはず)。

require 'fileutils'
require 'iconv'
class FilenameMigrate
  def initialize(fromcode, tocode, notest)
    @fromcode = fromcode
    @tocode = tocode
    @notest = notest
    if notest
      @FileUtils = FileUtils::Verbose
    else
      @FileUtils = FileUtils::DryRun
    end
  end
  
  GETA_KIGO = [0x3013].pack('U')
  
  def convert_code(indata)
    outdata = ''
    iconv = Iconv.new(@tocode, @fromcode)
    begin
      outdata << iconv.iconv(indata)
    rescue Iconv::IllegalSequence => e
      outdata << e.success
      indata = e.failed
      indata[0] = 0x1a # dummy
      retry
    end
    outdata << iconv.close
    # [#x10000-#x10FFFF] are OK in XML 1.0 too
    outdata.gsub(/[^\x9\xA\xD\x20-\xD7FF\xE000-\xFFFD]/u) { GETA_KIGO }
  end
end

2005年11月30日(Wed)

[linux] loに流れるパケットのIPアドレス

HotSaNICのpingモジュールでチェックしていたマシンが止まっていて、HotSaNICを動かしていたマシンのiptablesの設定を厳しくしていたので、loにLAN側IPアドレスからLAN側IPアドレス宛のICMPのTYPE=3のパケット(Destination Unreachable)が捨てられていた。loは127.0.0.1から127.0.0.1のようなloに割り当てられているIPアドレスのパケットしか流れないのかと思っていたけど、そうでもなかったらしい。

[firefox] firefox 1.5 for i686 Linux, Japanese

tarballをダウンロードしてみたら、実行ファイルとかだけしか入ってなくて、風博士とかから使うのは無理っぽい感じがした。

とりあえず$HOME以下に置いて使ってみることに。

なんとなく全体的に速くなっている気がする。

設定画面が新しくなって、左に一般とか詳細とかが並んでいたのが、上に並ぶようになっていた。

httpsでURLを入力するところが黄色くなるけど、Basic認証のダイアログが出ているときには黄色くなっていないのが気になってしまった。

[ruby] IPAddr

IPAddr.new('192.168.0.0/24').include?('192.168.0.1')のようにするとfalseになるので、なぜかと思っていたらIPAddr.new('192.168.0.0/24').include?(IPAddr.new('192.168.0.1'))のように引数の方もIPAddrにしないとダメということだった。自動で変換してくれるとか、ArgumentErrorとかTypeErrorになるとかしてくれないと、なかなか気付かないような気がする。


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