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


2004年10月01日(Fri)

[web] devlog

エラーになってる。
undefined local variable or method `section' for #<TDiary::MarkdownSection:0x406cec48> (NameError)
 
./tdiary/markdown_style.rb:40:in `do_html4'
./tdiary/markdown_style.rb:34:in `html4'
./tdiary/markdown_style.rb:158:in `to_html4'
./tdiary/markdown_style.rb:157:in `each_section'
./tdiary/markdown_style.rb:132:in `each'
./tdiary/markdown_style.rb:132:in `each_section'
./tdiary/markdown_style.rb:157:in `to_html4'
./tdiary/markdown_style.rb:150:in `to_html'
(erb):22:in `eval_rhtml'
./tdiary.rb:345:in `eval_rhtml'
(erb):32:in `do_eval_rhtml'
(erb):30:in `latest'
./tdiary.rb:1610:in `reverse_each'
./tdiary.rb:1610:in `latest'
(erb):30:in `do_eval_rhtml'
./tdiary.rb:909:in `do_eval_rhtml'
./tdiary.rb:865:in `eval_rhtml'
index.fcgi:71
index.fcgi:11:in `each_cgi'
/usr/local/lib/ruby/site_ruby/1.9/fcgi.rb:473:in `each'
/usr/local/lib/ruby/site_ruby/1.9/fcgi.rb:473:in `each_cgi'
index.fcgi:11

2004年10月02日(Sat)

[Linux] ratpoison

japan.linux.com | X用コマンドラインインタフェースで紹介されていたratpoisonというwindow managerを使ってみた。GNU screenを使ったことがないとかなり厳しそう。

GNU screenの中のプロセスが画面サイズの変更で落ちたことがあるため、基本的にktermなどの端末を80x50で開いて使っているので、画面のサイズから相対的に端末サイズが決まるというのは厳しいかもしれない。

最近.screenrcを変更してcaption alwaysにしたのでscreenの中からsshしてscreenにattachすると中のscreenの方は$LINESが1つ小さくなってしまっていて、それで問題が出ないことを確認すれば気にしなくていいのかもしれない。

[Linux] ファイルシステム

こっちも古い記事ですがjapan.linux.com | Reiser4のファイルセマンティクス:オープンソースには好機をみて、ファイルACLとか拡張属性とかで単純にファイルの内容をそのまま読み出して書き込むだけだと完全にコピーできないのにコピー用のシステムコールがないのは不便な気がした。


2004年10月03日(Sun)

[ruby] 二日間 Wikiクッキング

queryのvalueって前は複数同じkeyがあるとjoin("\0")されてる文字列になってたけどいつの間にか変わっていたらしい。

[zsh] PROMPT

PROMPTの中で$[PROMPTCOLOR=31+($PROMPTCOLOR-30)%6]のように計算するようにしていたらzsh 4.2.1では表示の時以外でも評価されているようで色の変わり方が変になっていたのでprecmdの中でMY_PROMPT_COLOR=$[31+($MY_PROMPT_COLOR-30)%6]のように計算するようにして解決した。

[ruby] Status of mailing list archives?

http://www.moonwolf.com/~arcml/ はもう動いてないのかな。


2004年10月04日(Mon)

[Linux][ruby] Out of Memory

メモリ不足でnadokaさんがkernel: Out of Memory: Killed process 8554 (ruby18).というようにkernelにkillされてしまった。rss botあたりで解放できないオブジェクトがたまってしまうのかな。とりあえずREXML以外のparserを使って試してみた方が良いのかもしれない。


2004年10月07日(Thu)

[UPnP][SSDP][ruby] ssdp.rb

SSDPがやっとちょっとわかったのでssdp:allというのをみつけて試してみた。いくつもdiscover結果がかえってくるので、何度もrecvfromで受け取らないとだめだったらしい。UDPなので終了判定をtimeoutにしてしまったけど、これは仕方ないかな。
#!/usr/bin/ruby
# ssdp.rb
#
# usage: ssdp.rb [myipaddr [all|wan_ppp_connection|wan_ip_connection]]
 
require 'socket'
 
class SSDP < UDPSocket
  SSDP_HOST = '239.255.255.250'
  SSDP_PORT = 1900
 
  def send_discover(st, mx=3)
    send(<<HTTP_REQUEST.gsub(/\r?\n/, "\r\n")+"\r\n", 0, SSDP_HOST, SSDP_PORT)
M-SEARCH * HTTP/1.1
HOST: #{SSDP_HOST}:#{SSDP_PORT}
MAN: "ssdp:discover"
MX: #{mx}
ST: #{st}
HTTP_REQUEST
  end
 
  def discover_all
    send_discover("ssdp:all")
  end
 
  def discover_wan_ppp_connection
    send_discover("urn:schemas-upnp-org:service:WANPPPConnection:1")
  end
 
  def discover_wan_ip_connection
    send_discover("urn:schemas-upnp-org:service:WANIPConnection:1")
  end
end
 
if __FILE__ == $0
  require 'timeout'
 
  myipaddr = ARGV.shift || Socket.gethostname
  discover_type = "discover_#{ARGV.shift || 'all'}"
 
  p ssdp = SSDP.open
  unless ssdp.respond_to?(discover_type)
    discover_type = "discover_all"
  end
 
  myport = 20000
  begin
    p ssdp.bind(myipaddr, myport)
  rescue Errno::EADDRINUSE
    if myport < 20100
      myport += 1
      retry
    end
  end
  p ssdp.addr
  p discover_type
  p ssdp.__send__(discover_type)
  begin
    while true
      timeout(3) do
        response = ssdp.recvfrom(1024)
        p response
        puts response[0]
      end
    end
  rescue TimeoutError
  end
  ssdp.close
end

2004年10月08日(Fri)

[debian][Linux] GV-MVP/RX on debian

ローカルにhowmでメモをとっていてその形式をRDにしているので、公開するのにtDiaryスタイルに直すのは無駄だということで、またThe RWikiにおいてみた。


2004年10月10日(Sun)

[debian][ruby] libgettext-ruby-util: rgettext may not work

Depends(の一部)が「ruby | ruby1.6 | ruby1.8」になっていて、ruby1.8パッケージだけ入っていてrubyパッケージが入っていないと/usr/bin/ruby1.8はあるけど/usr/bin/rubyはなくて、/usr/bin/rgettextの1行目は「#!/usr/bin/ruby」になっているから実行できないという話。で、どうしてもらえばいいのかはわからず。Debian Ruby Policyを読めばわかるのかもしれない。

[net] hikiには連絡先がない

連絡先メールアドレスも書いていないので管理者もわからないというのはhiki自体のデザインでつかないようになっている問題のような気がする。

というわけで、MUTOPON7 ANNEXにも連絡先メールアドレスは書いていない、と思ってソースを確認してみたらCopyrightの後ろにHTMLエスケープ漏れらしき<>でくくられたメールアドレスが。

[ruby] begin で囲まなくても rescue って置ける

1.7からだったような。(追記:1.5からでした。)

ついでに、次の日のも。RubyConf2004 のmp3はBitTorrentで配布にしてみるとか。大勢が参加してくれるようなものじゃないと難しい?

[tDiary] title_tag.rb

この日記の場合は、カテゴリなしでタイトルに入れられると不適切なことが多いような気がしたので、title_tag.rbプラグインをはずすことにした。

本日のツッコミ(全2件) [ツッコミを入れる]

ささだ [オリジナルは bittorrentで配布されてますよ。]

なかだ [rescueは1.5から。]


2004年10月11日(Mon)


2004年10月13日(Wed)

[Windows] 月刊Windows Update

通知領域の自動更新のツールチップ(チップヘルプ?バルーンヘルプ?)が「更新をダウンロード中: 0%」から変化なし。SP2もダウンロード開始の確認で許可したのにいつの間にかダウンロードをやめちゃってたし、自動更新がうまく動いてないような気がする。


2004年10月15日(Fri)

[Linux] スクロールバーの幅

~/.gtkrc-2.0にこんな記述を追加したらfirefoxとかのスクロールバーの幅を狭くできた。
style "my-scrollbar"
{
  GtkRange::slider_width = 10
  GtkRange::stepper_size = 10
}
 
class "GtkScrollbar" style "my-scrollbar"

2004年10月16日(Sat)

[ruby] Rubyist Magazine - 0002号 (2004-10)

公開されました。


2004年10月22日(Fri)

[web] EseHttpd

esehttpd のサイトってどこに行ってしまったんでしょうか。」ってもうちょっとsourceforge のページの周りを見てみればみつかったのに。というわけで移転先のページランクを上げるためにもリンクしてみるテスト。

[ruby][WEBrick] Content-Encoding: gzip

こんなのを作っていて、Content-Encodingのdeflateはすぐに対応できたけど、gzipはファイルを経由せずにエンコードやデコードする方法がわからなかった。


2004年10月23日(Sat)

[ruby] ZlibとStringIO

NaHiさんに最近のsoap4rのsoaplet.rbにはencode_gzipというメソッドでStringIOと組みあわせてこんな感じでやっていると教えてもらったのでまねをしてみた。Zlib::GzipWriterってopenだとブロックが使えるのにファイル名指定じゃないとだめで、newはIOを渡せるけどブロックは無視するらしい。
begin
  ostream = StringIO.new
  gz = Zlib::GzipWriter.new(ostream)
  gz.write(outstring)
  ostream.string
ensure
  gz.close
end

[関西O+F] 2日目(のみ)

今回は2日目の日本Rubyの会のところとDebian-BOFの最後の方をみた。他にはRuby関係の昼食会と宴会にも参加した。宴会は一応らぐやねんとしてのイベントだったっぽい。


2004年10月24日(Sun)

[cygwin] ck

0.9.28にあげてみた。ckstartは削除と。

ckoの方はWin9x版もあるらしい。unicows.dllを使っているというのが珍しいかも。

[ruby] @cgi.server_port が 0

環境変数SERVER_PORTが0になってるってことは他でも悪影響がありそうだからapache側を直すのが正しいような気が。

[algorithm] 古いものはまばらに残す

pdumpfs-clean: pdumpfs のバックアップを掃除するツールだと「デフォルトでは,最近 7 日分,最近 6 週間の各日曜日,最近 6 ヶ月の各 1 日,最近 2 年の各 1 月 1 日のバックアップを残します.たとえば,2003/05/31 だと 2002/01/01,2002/12/01,2003/01/01, 2003/02/01,2003/03/01,2003/04/01,2003/04/20,2003/04/27,2003/05/01 2003/05/04,2003/05/11,2003/05/18,2003/05/25-2003/05/31 の分を残します.」となっています。期間のはじめの日のものを残していく、という感じでしょうか。

[web] Esehttpd 移転先

ブックマークに入れてしまっていたのでhttp://sourceforge.jp/projects/esehttpd/のプロジェクト ホームページのリンクがそのページ自身になっていてhttp://esehttpd.sourceforge.jp/doc/ja/へのリンクはなかったのを忘れてしまってました。最初はproject名.sourceforge.jpへのリンクになっているはずなので、意図的に変えていると思うのですが、内容があるのなら元に戻してもらった方が良いような気が。リンクが増えてたどり着けるようになってしまえばどっちでもいいという気がしないでもないけど。

本日のツッコミ(全2件) [ツッコミを入れる]

MoonWolf [@cgi.server_portの実装ミスです。環境変数には80がちゃんと入ってます。]

simm [調べてみました。たしかに環境変数には80がはいっていて、cgi.rbを新しいのに入れ替えたら@cgi.server_..]


2004年10月28日(Thu)

[Linux] ``-*-''がないファイルを見つける。

なんかネタっぽいけどつられてみるテスト。リダイレクトは-qをつければ不要。そもそもifの条件としてgrepを直接書けば$?は不要。結論としてはls | grep -ve '-\*-'でいいんじゃないかと言うことで。って書こうとしたときに-eを付け忘れてはまったのは内緒。blockquoteとpreで二重の枠になってて変なのも気づいているけど気にしない方向で。
for f in `ls`
do
    grep -e '-\*-' $f >/dev/null
    if [ $? -ne 0 ]
    then
	echo $f
    fi
done

それは「-*-を含まないファイル名」ということになってしまっていたのでls | xargs grep -Le '-\*-'で。

[ruby] 呼ばれないブロック

メソッド呼び出し時に呼ばれるかどうかをチェックするのが難しいのならメソッドから戻る時にブロックが使われていなかったら警告するのはどうかと思ったけど、条件によって使ったり使わなかったりすることがあるからだめっぽい。

本日のツッコミ(全1件) [ツッコミを入れる]

なかだ [それは「-*-を含まないファイル名」では。]


2004年10月29日(Fri)

[debian] DTDとXML Catalog

Debian の場合は xml-core パッケージで基本的な設定が作られるらしいけど、dh_installxmlcatalogsが入ってなくてちゃんと登録されないパッケージがほとんどのような気がする。確認したものとしてはxbelとglade-2.0.dtdだけだけど。glade-2.0.dtdの方はカタログファイルがないのでどうしようもないけど、xbelの方は/usr/share/sgml/misc/xbel/xbel.catがあるからupdate-xmlcatalogで勝手に登録してしまうというのもありかもしれない。

[subversion] pre-commit hookでxmllintによるチェック

well-formedではないXMLをcommit出来ないようにするために、とりあえず動くことを優先して作ろうとして、Dの時はsvnlook catがエラーになるのでその対策を入れて、文字化けしてるとクライアント側に標準エラー出力の内容が送られなかったのでcat -vを通すようにして、エラーがあったファイル名がわかりにくいのでmktempのbasenameに元のファイル名のbasenameを使うようにして、とやっていたら長くなってしまったのでこのまま使うのはおすすめしないので参考程度に。ファイル削除部分は最初はtrap "rm -f $TMPFILE" 0としていたがbasenameを使うようにしてしまったので、不要になった時点とexit前に重複して削除処理を入れるようになってしまった。 出来ればhookスクリプトの例として入っているcommit-access-control.plのように、設定ファイルで汎用的にファイルパターンに対応するチェックプログラムを設定できるように作り直したい。
SVNLOOK=/usr/bin/svnlook
RM_F="/bin/rm -f"
CUT_B="/usr/bin/cut -b"
XMLLINT="/usr/bin/xmllint --noout"
CAT_V="/bin/cat -v"
LOG=`$SVNLOOK log -t "$TXN" "$REPOS"`
[ -n "$LOG" ] || {
    echo "must not empty log." 1>&2;
    exit 1
}
 
mktemp () {
    /bin/mktemp /tmp/"$(basename $1)".XXXXXX
    if [ "$?" -ne 0 ]; then
        echo "mktemp failed." 1>&2
        exit 1
    fi
}
 
saved_IFS="$IFS"
IFS="
"
for line in $($SVNLOOK changed -t "$TXN" "$REPOS"); do
    IFS="$saved_IFS"
    first_column=$(echo "$line"|$CUT_B 1)
    filepath=$(echo "$line"|$CUT_B 5-)
#    echo "first_column=[$first_column]" 1>&2
#    echo "filepath=[$filepath]" 1>&2
    case "$filepath" in
        *.glade|*.xml)
            if [ "$first_column" != 'D' ]; then
                TMPFILE=$(mktemp "$filepath")
                $SVNLOOK cat -t "$TXN" "$REPOS" "$filepath" >>"$TMPFILE"
                if [ "$?" -ne 0 ]; then
                    $RM_F "$TMPFILE"
                    exit 1
                fi
                TMPFILE2=$(mktemp /tmp/pre-commit.XXXXXX)
                $XMLLINT "$TMPFILE" 2>>"$TMPFILE2"
                if [ "$?" -ne 0 ]; then
                    echo "xmllint error in $filepath:" 1>&2
                    cat -v "$TMPFILE2" 1>&2
                    $RM_F "$TMPFILE" "$TMPFILE2"
                    exit 1
                fi
                $RM_F "$TMPFILE" "$TMPFILE2"
            fi
            ;;
        *)
            ;;
    esac
done
IFS="$saved_IFS"

[Linux] valgrind

FC3のvalgrind-2.2.0-3.src.rpmをとってきてredhat9で「allocated_variable_append: Assertion `current_variable_set_list->next != 0' failed.」とでてそのままだとrpmbuildが通らなかったのはvalgrind-2.2.0/FAQ.txtにも書いてあって、SPECS/valgrind.specのmakeの前にunset CFLAGSを入れて解決した。

以前のバージョンと違ってプログラムを指定するだけだとvalgrind: Missing --tool optionと出てきてチェックしてくれないので、valgrind --tool=addrcheck program args...のように起動して使った。


2004年10月30日(Sat)

[mail] utf-8かつbase64なメール

tdiary-develに流れていたContent-Type: text/plain; charset=UTF-8でContent-Transfer-Encoding: base64のメールがBeckyでは読めるのに、mule-ucsがちゃんと入っているのにWanderlustでは読めないので悩んでいたら、base64なのにその後ろにsourceforge.netが自動でつけた文字列があったからだった。

[web][apache] basic認証をdigest認証に変更するときの罠

罠1:AuthUserFileをAuthDigestFileに変えないといけない。

罠1.5:AuthUserFileと同じだけど.htaccessからの相対パスはだめ。

罠2:htdigestコマンドのrealmっていう引数とAuthNameディレクティブに指定する文字列を同じものにしないといけない。


2004年10月31日(Sun)

[zsh] ヒストリにコメントを残す

zshでもsetopt interactivecommentsすれば#で出来そう。今までそんなところにコメントがかけて何がうれしいのかわからなかったけど、ヒストリを検索するときに使えば便利ということだったらしい。


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