この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
% 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
%
「先々のために」
引用元はYAGNIの話だと思いますが、こんなことがありました。
「ある処理の後に」という機能をつけようとしたときに、すぐには必要なかったが、仕様の対称性や実装の難易度(その時点では条件を逆にしただけの処理を追加するだけだった)などを考えて「ある処理の前に」という機能も一緒につけた。そしてその機能は結局後で必要になった。後で必要になった時点でその機能を実装しようとすると、またそのコードの周辺をみる必要があって余分な時間がかかっていたと思われる。
この場合はYAGNIよりも仕様のシンプルさを選んだと言うことになるのかもしれない。
^http://.*search.msn.*?(&q|MT)=([^&]*).*.*?\b(q|MT)の方がよさそう。
14.23 Hostによると空の場合もあるらしい。
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が呼ばれていたから。
ということでのかださん(誰)のWeb日記が出来るのを期待してます。
IRCの%rrrでURLを教えてもらって存在を知った。そして本日のリンク元のURLをみていって、みんながどこで知ったのか想像してみた。
『たのしいRuby』の画像がすぐには表示されなくて、alt属性に「</title>」が入っているのに気づいた。
644や755は頭に0が抜けてると思ったけど、それだけの指摘メールを出すのもなんだかなぁ、と思っていたらタイミングを逃した感じでますます出しづらくなってしまった。
CGIの一般ユーザ権限からルート権限で動かしたいデーモンプログラムを起動するのに、chmod u+sしただけだと不十分だったので(/proc/$$/statusで確認)、setresuid(0, 0, 0); setresgid(0, 0, 0);を使ってみた。
ところがリンクは通るのにコンパイルでwarningが出るのでJMを良く読んでみたら注意のところに「Linux ではどのインクルードファイルにもプロトタイプが存在しない。これは glibc のバグである。このシステム・コールを利用するプログラムは自分でプロトタイプを追加する必要がある。
」と書いてあった。書式のところに書いてあるincludeはuid_tとgid_tのため?
SKKといえば「from」の「(concat "----- ここから ----- ここから ----- ここから ----- ここから -----\n")」とか「to」の「(concat "----- ここまで ----- ここまで ----- ここまで ----- ここまで -----\n")」とかがそのままだとmigemoに厳しいです。migemoなどに流用されることを考えるとはずしてほしいといいたいところですが、SKK本来の用途を考えると言い難い。
sed 1qでsed: invalid commandになっていたので、:%s/sed 1q/head -n 1/g。
sed 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の方の問題かもしれない。
IEは%いっぱいの意味不明な文字列をステータスバーに表示するときに(たぶんUTF-8として)デコードして表示してくれて、もっと意味不明な文字列がステータスバーに表示されることがあります。確認してませんが、Opera6は今表示しているページと同じエンコードとして表示していたような気がします。一番望ましいのはたぶんリンク先のページのエンコードとみなすことだと思うのですが、リンク先を開く前にはエンコードが何かを知るのは無理そうです。ではどうすればいいのでしょうか。
URLに直接他多言語が使えるようになったとしたら、同じようにサーバにどのエンコードで送ればいいのかという問題がありそうです。
追記: 他言語じゃなくて多言語でした。
% 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
BusyBox v0.60.3だとhead -1も使えないからhead -n 1にしてたんですが。
他の問題もあるらしいのでbusyboxの環境でrubyをmakeする必要は無くなったかも。
スレッドにはforkのようにその場で処理が分岐する系とpthreadやJavaのThreadのように別途定めるエントリポイントから新しいスレッドの実行が始まる系(長い)がある。
Rubyはforkのようにその場で分岐系だけどRubyに対する他言語の影響にはJava スレッド仕様
と書いてある。注目している点が違う?
fork系は1つのローカル変数のスコープが2つに分かれて、pthread系は新しいスレッドの方が全く新しいローカル変数スコープになるという区別もあるはず。
セクションアンカーとツッコミアンカーを変えてみた。「§」がセクションという意味であってるのかどうかがよくわからない。ツッコミアンカーの方はIE6では表示されなかったけど、Opera6でみたら表示されていた。
人工無能うずら(人工痴能)の部屋からリンクされていて知った。
/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
IRCnetの#ruby:*.jpでhttp://www.ruby-lang.org/ja/20020310.htmlなどがエラーになるという話が。evalなのでソースファイル名がわからない。evalの3番目と4番目の引数を指定してもらえるとわかりやすくなるんですが。
Google 検索: デデデデとか検索するとPDFばっかりで役に立たない。
cat /proc/statだけならroot権限はいらないのに、わざわざパスフレーズなしの鍵でroot権限の穴をあけている…。
同一要素を繰り返して置いたときにその要素が次第に左へ寄っていくという話のような気が。
「デデデデ -filetype:pdf」で除外指定が出来るというのは知らなかった。本当の問題はPDFで文字がだぶっていてちゃんと検索できないことではないかと思っていますが。
前回The RWikiのupdateと再起動をしたのがそのあたりの修正をしてバグありの頃だったみたい。最新版だと直っているので現在のCVS HEADにあげておきました。
編というtypoを先日みたときとあわせて、2度みてしまったのでかなり気になる。
誰でも書き込めるWikiだと勝手になおしておけるし、匿名OKと明記してあるツッコミメールが送れるフォームがあるところも報告しやすい。
たった数バイトのためにその何倍もの文を考えないといけないというのが一般のWebページに対するtypoの指摘が気軽に行えない原因の1つだと思うのですが、何か良い解決方法はないものでしょうか。
試し方も書いておいてほしいんですが…。
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(?)で検索してみても有効か無効かがどこに書いてあるのかわかりませんでした。
COZMIXNGでアカウントを頂いたので、ログインしてみたらFreeBSDでした。一般ユーザ権限とからみたLinuxとの違いで気づいたことを時々書いていくかもしれません。wgetに対するfetchのように代替手段がある場合は出来るだけFreeBSD流にやっていきたいと思っています。
wget -Nが使えなかったので、fetch -mを使ったり、ls --colorやls --helpが使えないと言うかGNU lsとは意味が違ってたり。
lessで日本語のファイルが一部文字化けすると思ったらjlessじゃないからだったので、lvを使うことにした。
LANG=ja_JP.eucJP LC_ALL=ja_JP.eucJP man manとしてもjpmanが出てこないと思ったら、/usr/share/man/ja/*が空だった。
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
Windows 2000/XP が勝手に再起動しますの対処をしてBSODの画面で止まるようにしてから初めてブルースクリーンになったので、デジカメで撮ってから原因をGoogleで調べてみると、fwdrv.sysはTiny Personal Firewallの一部でNICとの相性問題とかで落ちることがあるみたいだった。
mostly曇っていう英語と日本語が混ざってるのがなんだかなぁ。
「pipe reopenとautoloadはなかださんが責任もって(?)コミットしてくださるなら、どうぞ。」という件のautoloadの方を期待して待っているのでよろしくお願いします。と書いてみるテスト。pipe reopenは何のことだかわかってません。
[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/になっていてやっぱりエラーに。
$ 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 $
「単純な物でも問題が生じるというウェブアプリの怖さ」といえば環境変数表示CGIのクロスサイトスクリプティング脆弱性 (1)とsecure cgi programming (2)のあたりで書いてみようとしていた形跡があるけど、結局続かなかったみたい。
テキストのみ対応というのが多いですが、全ての形式に対応できるとすごそうです。ブラウザからスタイルシートや画像込みのHTML断片をコピーして、別マシンのHTMLエディタに貼り付けると再現できるとか、って単独マシンだけでも無理だった。
出来そうな範囲だと、スクリーンショットを撮ってリモートで画像編集ソフトにペーストとかは出来てほしい気が。
ktermなどの端末で範囲選択するとコピーされるクリップボードとかMozillaなどで明示的にコピーしないとコピー出来ないクリップボードとか複数あるようでわけがわからない。
範囲選択でコピーしたものはメニューからペーストを選んでも貼り付けられないこともあるし。
/etc/passwd%00のようなものはFile.openが"\0"を含む文字列を渡されたときにArgumentErrorにしてくれれば防げる可能性があがる気がする。
✑ まつもと [Javaを参考にしたことはないけどな。 Rubyのスレッドの発想のベースはfork+OCamlです。]
✑ ささだ [記述的が分岐っぽくみえるだけで、rubyも別途定めるエントリポイントから新しいスレッドの実行が始まる系(長い)だと思..]
✑ あおき [「Java:スレッドの仕様」に関して動かぬ証拠を発見しました。 [ruby-list:5194] http://bl..]