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


2003年05月01日(Thu)

[ruby] rand

Rationalを引数にしたときに違いがあったのですが、引数を1.8だとrb_Integerで変換していて1.6だとNUM2LONGで変換しているようです。
% ruby18 -ve 'def (o=Object.new).to_i;0;end; rand(o)'
ruby 1.8.0 (2003-04-27) [i686-linux]
% ruby16 -ve 'def (o=Object.new).to_i;0;end; rand(o)'
ruby 1.6.8 (2003-04-20) [i686-linux]
-e:1:in `rand': failed to convert Object into Integer (TypeError)
        from -e:1
%

2003年05月03日(Sat)

[programming] 「先々のために」

引用元はYAGNIの話だと思いますが、こんなことがありました。

「ある処理の後に」という機能をつけようとしたときに、すぐには必要なかったが、仕様の対称性や実装の難易度(その時点では条件を逆にしただけの処理を追加するだけだった)などを考えて「ある処理の前に」という機能も一緒につけた。そしてその機能は結局後で必要になった。後で必要になった時点でその機能を実装しようとすると、またそのコードの周辺をみる必要があって余分な時間がかかっていたと思われる。

この場合はYAGNIよりも仕様のシンプルさを選んだと言うことになるのかもしれない。


2003年05月04日(Sun)

[ruby] ^http://.*search.msn.*?(&q|MT)=([^&]*).*

.*?\b(q|MT)の方がよさそう。

[web] HTTP_HOST

14.23 Hostによると空の場合もあるらしい。

[ruby] eval

以下のような処理をするコードでInsecure: can't change global variable valueと出てきて悩んでしまった。
obj = Object.new
def obj.sandbox
  @binding = binding
  @binding.taint
end
obj.sandbox
def obj.eval(str)
  Thread.start {
    $SAFE = 4
    Kernel.eval str, @binding
  }.value
end
obj.eval("s = self")
obj.eval("eval('s')")
この再現用のコードを実行すると行番号が出たので原因はすぐわかったけど、evalでKernel.evalではなくself.evalが呼ばれていたから。

2003年05月05日(Mon)

[diary] ネタが無ければ作ればOk

ということでのかださん(誰)のWeb日記が出来るのを期待してます。

[tDiary] Matzにっき

IRCの%rrrでURLを教えてもらって存在を知った。そして本日のリンク元のURLをみていって、みんながどこで知ったのか想像してみた。

『たのしいRuby』の画像がすぐには表示されなくて、alt属性に「</title>」が入っているのに気づいた。

[ruby] Re: [ruby-dev:20138] fileutils.rb feature change

644や755は頭に0が抜けてると思ったけど、それだけの指摘メールを出すのもなんだかなぁ、と思っていたらタイミングを逃した感じでますます出しづらくなってしまった。


2003年05月06日(Tue)

[Linux] setresuid

CGIの一般ユーザ権限からルート権限で動かしたいデーモンプログラムを起動するのに、chmod u+sしただけだと不十分だったので(/proc/$$/statusで確認)、setresuid(0, 0, 0); setresgid(0, 0, 0);を使ってみた。

ところがリンクは通るのにコンパイルでwarningが出るのでJMを良く読んでみたら注意のところに「Linux ではどのインクルードファイルにもプロトタイプが存在しない。これは glibc のバグである。このシステム・コールを利用するプログラムは自分でプロトタイプを追加する必要がある。」と書いてあった。書式のところに書いてあるincludeはuid_tとgid_tのため?


2003年05月07日(Wed)


2003年05月08日(Thu)

[ruby] File.utime

File.utime(Time.now, Time.now)って何も起きない?


2003年05月09日(Fri)

[SKK] SKK-JISYO.L

SKKといえば「from」の「(concat "----- ここから ----- ここから ----- ここから ----- ここから -----\n")」とか「to」の「(concat "----- ここまで ----- ここまで ----- ここまで ----- ここまで -----\n")」とかがそのままだとmigemoに厳しいです。migemoなどに流用されることを考えるとはずしてほしいといいたいところですが、SKK本来の用途を考えると言い難い。

[Linux] busybox-0.60.3

busyboxな環境にrubyを入れようとしてみたら、sed: invalid commandと出ていたのでbash -x ./configure --prefix=$HOME/r 2>&1 | grep sedで原因調査。 sed 1qでsed: invalid commandになっていたので、:%s/sed 1q/head -n 1/gsed y(略)もsed: invalid commandになっていたので、:%s/sed y/perl -pe y/g。config.statusも。sed 'y,./+-,__p_,'というのもあったのでこのsedもperl -peに変更。 まだダメでconfig.statusやMakefileの生成のあたりでsed: invalid commandが出ていたけど時間切れで終了。
$ bash -x ./configure --prefix=$HOME/r 2>&1 | grep sed
(略)
++ sed 's/:.*//'
+ sed '
sed: invalid command
+ sed -n 's/'\''/'\''\\'\'''\''/g;
++ sed -n -f confdef2opt.sed confdefs.h
sed: invalid command
+ rm -f confdef2opt.sed
++ sed 's/$U\././;s/\.o$//;s/\.obj$//'
++ sed 's/[\""`$]/\\&/g'
sed: invalid command
sed: invalid command
sed: invalid command
+ sed -n 's/'\''/'\''\\'\'''\''/g;
yに対応していないsedというのはちょっと予想外だった。まだエラーになってるところはbashの方の問題かもしれない。

[web] 多言語URL

IEは%いっぱいの意味不明な文字列をステータスバーに表示するときに(たぶんUTF-8として)デコードして表示してくれて、もっと意味不明な文字列がステータスバーに表示されることがあります。確認してませんが、Opera6は今表示しているページと同じエンコードとして表示していたような気がします。一番望ましいのはたぶんリンク先のページのエンコードとみなすことだと思うのですが、リンク先を開く前にはエンコードが何かを知るのは無理そうです。ではどうすればいいのでしょうか。

URLに直接多言語が使えるようになったとしたら、同じようにサーバにどのエンコードで送ればいいのかという問題がありそうです。

追記: 他言語じゃなくて多言語でした。


2003年05月11日(Sun)

[cygwin] jlessとnkf

Windows 環境で欠かせないツールをみてjlessとnkfをインストールしてみることにした。 jlessはprogram-prefixがきかなかったので、Makefileのbinprefixとmanprefixをjにしてみた。
% wget -N http://www.io.com/~kazushi/less/less-358.tar.gz
(略)
% wget -N http://www.io.com/~kazushi/less/less-358-iso254.patch.gz
(略)
% tar zxvf less-358.tar.gz
(略)
% cd less-358
% zcat ../less-358-iso254.patch.gz | patch -p1
(略)
% ./configure --program-prefix=j
(略)
% make
(略)
% make
gcc -I. -c -DSYSDIR=\"/usr/local/bin\"  -g -O2 command.c
In file included from command.c:24:
option.h:53: redefinition of `struct option'
make: *** [command.o] Error 1
% perl -pi~ -e 's/struct option/struct option_/g' *.[ch]
% make
(略)
% make install
(略)
% make uninstall
(略)
% vi Makefile
binprefix = j
と
manprefix = j
に変更。
% make install
(略)
% wget -N http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/nkf202-2003.05.04.tar.gz
(略)
% tar zxvf nkf202-2003.05.04.tar.gz
(略)
% cd nkf202
% vi Makefile
CCをgccに変更。
% make
(略)
% make test
(略)
% install -c nkf /usr/local/bin/nkf

2003年05月12日(Mon)

[Linux] Re: BusyBox

BusyBox v0.60.3だとhead -1も使えないからhead -n 1にしてたんですが。

他の問題もあるらしいのでbusyboxの環境でrubyをmakeする必要は無くなったかも。

[programming] Thread

スレッドにはforkのようにその場で処理が分岐する系とpthreadやJavaのThreadのように別途定めるエントリポイントから新しいスレッドの実行が始まる系(長い)がある。

Rubyはforkのようにその場で分岐系だけどRubyに対する他言語の影響にはJava スレッド仕様と書いてある。注目している点が違う?

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

まつもと [Javaを参考にしたことはないけどな。 Rubyのスレッドの発想のベースはfork+OCamlです。]

ささだ [記述的が分岐っぽくみえるだけで、rubyも別途定めるエントリポイントから新しいスレッドの実行が始まる系(長い)だと思..]

あおき [「Java:スレッドの仕様」に関して動かぬ証拠を発見しました。 [ruby-list:5194] http://bl..]


2003年05月13日(Tue)

[ruby] def initialize

defはdefineではなくてdefなのにinitializeはinitではなくinitialize。

[tDiary] 1.4から1.5へのバージョンアップ

バージョンアップするのにまとまったドキュメントは無いのかな。

[programming] Re: Thread

fork系は1つのローカル変数のスコープが2つに分かれて、pthread系は新しいスレッドの方が全く新しいローカル変数スコープになるという区別もあるはず。

[tDiary] セクションアンカー

セクションアンカーとツッコミアンカーを変えてみた。「§」がセクションという意味であってるのかどうかがよくわからない。ツッコミアンカーの方はIE6では表示されなかったけど、Opera6でみたら表示されていた。

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

まつもと [def initialize 当然理由がある。推測せよ(25点)]


2003年05月15日(Thu)

[ruby] Re: feature freeze

トップレベル以外の定数のautoloadを入れてほしいのに、入らないのはなぜだろう…。


2003年05月17日(Sat)

[tDiary] disp_referer error?

圏外からのひとことでこんなエラーが出たけどリロードしたら直った。なんだったんだろう?
/virtual/amrita/public_html/d/tdiary.rb:298:in `disp_referer': unmatched (: /クk\025\010(\002&\010search.msn.co.jp\/.*?(q|MT)=([^&]*).*/ (RegexpError)
 
/virtual/amrita/public_html/d/tdiary.rb:609:in `eval_src'
/virtual/amrita/public_html/d/tdiary.rb:74:in `join'
/virtual/amrita/public_html/d/tdiary.rb:74:in `safe'
/virtual/amrita/public_html/d/tdiary.rb:610:in `eval_src'
/virtual/amrita/public_html/d/tdiary.rb:761:in `eval_rhtml'
/virtual/amrita/public_html/d/index.rb:69

[ruby] eval

IRCnetの#ruby:*.jpでhttp://www.ruby-lang.org/ja/20020310.htmlなどがエラーになるという話が。evalなのでソースファイル名がわからない。evalの3番目と4番目の引数を指定してもらえるとわかりやすくなるんですが。

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

むとぽん [うーん、最近修正したmsn検索絡みですかね。正規表現の書き方が悪いのかな...?]


2003年05月19日(Mon)

[web] google

Google 検索: デデデデとか検索するとPDFばっかりで役に立たない。

[ssh] ssh 192.168.0.2 cat /proc/stat

cat /proc/statだけならroot権限はいらないのに、わざわざパスフレーズなしの鍵でroot権限の穴をあけている…。

[web] google

「デデデデ -filetype:pdf」で除外指定が出来るというのは知らなかった。本当の問題はPDFで文字がだぶっていてちゃんと検索できないことではないかと思っていますが。

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

jun-o [「デデデデ -filetype:pdf」で検索して PDF を対象から外すのはどうでしょうか?]


2003年05月22日(Thu)

[RWiki] 脚注のリンク

前回The RWikiのupdateと再起動をしたのがそのあたりの修正をしてバグありの頃だったみたい。最新版だと直っているので現在のCVS HEADにあげておきました。

[word] 基礎?

Windowsの土台部分の意味の基礎なのかも。

[BTS] 分散

Web日記で分散BTS状態? Tが難しそう。

[web] typo

というtypoを先日みたときとあわせて、2度みてしまったのでかなり気になる。

誰でも書き込めるWikiだと勝手になおしておけるし、匿名OKと明記してあるツッコミメールが送れるフォームがあるところも報告しやすい。

たった数バイトのためにその何倍もの文を考えないといけないというのが一般のWebページに対するtypoの指摘が気軽に行えない原因の1つだと思うのですが、何か良い解決方法はないものでしょうか。

[ruby][win32] resolv.rb on win32 for ruby 1.8 release

試し方も書いておいてほしいんですが…。

resolv.rb in win32 (mswin32/cygwin/mingw)に書いてあるruby -rwin32/resolv -e "p Win32::Resolv.get_resolv_info"を試してみたら、前回と同様に固定IPアドレスで複数のDNSサーバを指定していると"xxx.xxx.xxx.x,xxx.xxx.xxx.x"が出てきました。

順番を入れ替えると変わるかな?と思って変えてみたら、今は無きinterfaceの情報も出てきて驚きました。現在そのinterfaceが有効か無効かもみないといけないようですが、レジストリを今は無きinterfaceのGUID(?)で検索してみても有効か無効かがどこに書いてあるのかわかりませんでした。

[FreeBSD] Linuxとの違い

COZMIXNGでアカウントを頂いたので、ログインしてみたらFreeBSDでした。一般ユーザ権限とからみたLinuxとの違いで気づいたことを時々書いていくかもしれません。wgetに対するfetchのように代替手段がある場合は出来るだけFreeBSD流にやっていきたいと思っています。

wget -Nが使えなかったので、fetch -mを使ったり、ls --colorls --helpが使えないと言うかGNU lsとは意味が違ってたり。

lessで日本語のファイルが一部文字化けすると思ったらjlessじゃないからだったので、lvを使うことにした。

LANG=ja_JP.eucJP LC_ALL=ja_JP.eucJP man manとしてもjpmanが出てこないと思ったら、/usr/share/man/ja/*が空だった。

[ruby] 代用nkf

nkfも入ってなかったので、cygwin用に作っていたシェル関数nkfを使うことにした。
if type nkf >/dev/null 2>&1; then
    :
else
    nkf () {
        ruby -rnkf -ple '
  BEGIN {
    $opt = ""
    while /^-/ =~ ARGV[0]
      $opt += " #{ARGV.shift}"
    end
    if $opt.empty?
      case RUBY_PLATFORM
      when /win|mingw/
        $opt =  "-s"
      else
        $opt = "-e"
      end
    end
  }
  $_ = NKF.nkf($opt, $_)
  ' -- "$@"
    }
fi

2003年05月24日(Sat)

[web] Re: ごじ

時々長文書いてるのは前から思ってることを思い出して、関連することがあったときにまとめて書いてるだけなので、きっかけはあんまり関係なかったり。

WebのURLをキーにして云々というのはOdigoしか思い出せませんでした。Odigoはサイトチャットでメモとかが出来るものではなさそうです。メモを共有できるというのはそれ以前にあったと思うのですが、検索のキーワードも思い浮かびませんでした。

匿名OKとしては2chを経由して親しい人が(以下略)という方法もあるようですが、伝わりにくそうな気がします。


2003年05月25日(Sun)

[Windows] BSOD

Windows 2000/XP が勝手に再起動しますの対処をしてBSODの画面で止まるようにしてから初めてブルースクリーンになったので、デジカメで撮ってから原因をGoogleで調べてみると、fwdrv.sysはTiny Personal Firewallの一部でNICとの相性問題とかで落ちることがあるみたいだった。


2003年05月27日(Tue)

[tDiary][web][ruby] A Strolling Programmer

RRRWiki - NaHiより。

mostly曇っていう英語と日本語が混ざってるのがなんだかなぁ。

pipe reopenとautoloadはなかださんが責任もって(?)コミットしてくださるなら、どうぞ。」という件のautoloadの方を期待して待っているのでよろしくお願いします。と書いてみるテスト。pipe reopenは何のことだかわかってません。

[mail] MLへのFrom詐称spamworm

[quickml-users:428]とか[ruby-list:37727]はFrom詐称だと思うのですが、メンバーのみ投稿可能という制限だけでこういうメールを防ぐのは難しそうです。

37727はbladeにまだ入ってなくて(spamだから消された?)、「scat.rb:ERROR File not found (37727).」になっているのですが、RETURNのリンク先がhttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/になっていてやっぱりエラーに。

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

ただただし [spamじゃなくてwormだと思う]


2003年05月28日(Wed)

[ruby] 野良ビルド

mobileimapを最新版のrubyで試してみようと思って野良ビルド。rubyのmake testでwarningが出てたのが気になった。
$ make test
/home/kazu/fromcvs/ruby/sample/test.rb:931: warning: Method#to_proc is deprecated; use Method#to_block
/home/kazu/fromcvs/ruby/sample/test.rb:933: warning: Method#to_proc is deprecated; use Method#to_block
test succeeded
$

[ruby] extconf.rb

~/r/bin/ruby18 extconf.rbで作成したMakefileを使ってmakeするとruby18がパスにないと言われて止まるので、PATH=$HOME/r/bin:$PATH makeでしのぐ。以前も同じ現象にはまって同じように対処して、そのときはそのまま気にせず忘れてしまってたような気がする。


2003年05月30日(Fri)

[web] XSS

「単純な物でも問題が生じるというウェブアプリの怖さ」といえば環境変数表示CGIのクロスサイトスクリプティング脆弱性 (1)secure cgi programming (2)のあたりで書いてみようとしていた形跡があるけど、結局続かなかったみたい。


2003年05月31日(Sat)

[clipboard] 共有

テキストのみ対応というのが多いですが、全ての形式に対応できるとすごそうです。ブラウザからスタイルシートや画像込みのHTML断片をコピーして、別マシンのHTMLエディタに貼り付けると再現できるとか、って単独マシンだけでも無理だった。

出来そうな範囲だと、スクリーンショットを撮ってリモートで画像編集ソフトにペーストとかは出来てほしい気が。

[clipboard] Xのクリップボード

ktermなどの端末で範囲選択するとコピーされるクリップボードとかMozillaなどで明示的にコピーしないとコピー出来ないクリップボードとか複数あるようでわけがわからない。

範囲選択でコピーしたものはメニューからペーストを選んでも貼り付けられないこともあるし。

[security][ruby] NUL文字

/etc/passwd%00のようなものはFile.openが"\0"を含む文字列を渡されたときにArgumentErrorにしてくれれば防げる可能性があがる気がする。

[Perl] open

printの引数のFILEの直後には「,」をつけないのにopenの引数のFILEの直後にはつけるのをみると、あってるのかどうかちょっと考え込んでしまう。


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