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


2002年04月01日(Mon)

[web] mod_rewrite path_info

http://yasu.asuka.net/diary/200102A.html#i20010206C を参考にしてmod_rewriteを使ってPATH_INFOをindex.cgiに渡す設定がわかった。
<Files *.cgi>
AddHandler cgi-script .cgi
Options +ExecCGI
</Files>
 
DirectoryIndex index.cgi
 
RewriteEngine on
RewriteBase /~kazu/rewrite/
RewriteRule ^([a-z][^/]+)$ index.cgi/$1

[KDE] .DCOP*

.DCOPserver_hostnameというファイルができるので何かと思って検索してみたらKDE関連のファイルだと判明。

[ruby] .irbrc

.irbrcの頭に書いているversionが二回実行されるのでなぜかと思ったら、load '~/.irbrcでirb-historyがLoadErrorになってload './.irbrc'も実行されていたからだった。

def version
  # puts caller # 調査のために一時的に追加した。
  "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
end
puts version

2002年04月02日(Tue)

[web] secure cgi programming (2)

なんかタイトルが変わってる気がしますが気にせずに続きです。 実際にクロスサイトスクリプティング問題があるCGIスクリプトを書いてみよう。とは言っても最初は問題があることに気づかずに書いてしまうことになる。

#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new("html4")
cgi.out {
  cgi.html("PRETTY") {
    cgi.table {
      ENV.sort.collect do |k,v|
        cgi.tr {
          cgi.th{ k } + cgi.td{ v }
        }
      end
    }
  }
}
深く考えずに書くとこのようなコードになる。ここでは標準添付ライブラリということでcgi.rbの機能を使ってタグをつけたが、他の方法でもかまわない。 さて、このコードのどこにクロスサイトスクリプティング問題があるのかというと、すぐに気がつくのは環境変数の値(v)のところである。しかし、それだけで油断してはいけない。ここで油断してvだけをエスケープするようにしてkの方をエスケープし忘れるとクロスサイトスクリプティング問題が残ってしまう。このような些細な油断がY2K問題を修正したつもりで、新たに本来ならば回避可能なY10K問題を埋め込んでしまうということにつながってしまう。だから、このような考え方は避けて、同じような処理をしているところすべてを見直すようにする必要がある。また、可能ならば同じような処理をしているところは共通化して変更を容易にしておくと、消費税が3%から5%になったときのように、さらに変更が必要になった場合に対応しやすくなる。 クロスサイトスクリプティング問題の対策をしたコードはこのようになる。

#!/usr/bin/ruby -wT
require 'cgi'
cgi = CGI.new("html4")
cgi.out {
  cgi.html("PRETTY") {
    cgi.table {
      ENV.sort.collect do |k,v|
        cgi.tr {
          cgi.th{ CGI.escapeHTML k } + cgi.td{ CGI.escapeHTML v }
        }
      end
    }
  }
}

[ruby] taintを利用したescape

taintedなオブジェクトは自動でescapeHTMLするようにすればescapeHTMLを自動化できないだろうか?

def escape_for_taint(ary)
  result = ''
  ary.each do |e|
    case e
    when Array
      result.concat escape_for_taint(e)
    else
      if e.tainted?
        result.concat CGI.escapeHTML(e.to_s).untaint
      else
        result.concat e.to_s
      end
    end
  end
end

2002年04月03日(Wed)

[RWiki] 書き込みに認証をつける方法

RWikiはmethod=postじゃないと書き込めないようになっているので、<Limit POST>などでpostのみに認証をかければうまくいくはずです。tokyo.pmはたぶんそうやっていると思います。

[ruby] ruby -vrpp =(sed 's/\<p\>/pp/g' hoge.rb)

本日のワンライナー。一時的にppを使ってみたかったので、一時的に変換して実行してみた。=(...)はzshの機能。

[web] If-Modified-Since

動的に変化する部分があってその内容が変化してもLast-Modifiedが変化しないページとかIf-Modified-Sinceとかについてちょっと考えた。

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

ただただし [そ、そんな単純なオチだったか〜 >RWiki]

なひ [あくまでもRWiki interfaceのimplementationの1つ(2つ)である rw-cgi.rbおよび..]


2002年04月04日(Thu)

[mail] 無駄なHTMLメール

MSOEのつける無駄なHTMLパートをどうにかしようと思ったらmultipart/alternativeで中身がtext/plaintext/htmlのみのものっていう条件になるんだろうか?

できれば内容までまったく同じかどうかもチェックすればよさそうだけど。

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

なかだ [text/plainがあればそれを優先してしまって何ら問題はないはず。 あるとしたらそれは書いた方の責任。 って何..]

kjana [同じ内容を日本語と英語とスペイン語とか,text/plain と text/html とか 違う記法で書いたのを束ね..]


2002年04月05日(Fri)

[Lisp] coffee? t.

Lispなら括弧は…?

[vim] ナローバンド

AirH"経由で使うには結構重い。

[Linux] chsh, sudo

某所のアカウントはsshの公開鍵だけ送って登録してもらったのでsudoどころかchshさえも使えないという。でも.bash_profileでexec zshしてzshを使ってるけど。

[editor] transpose-chars

Emacsのtranspose-charsと同じことをvimでやろうとするとxpとするしかないんだろうか?

[note PC] 液晶

液晶の埃はどうするのがいいんだろう?

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

きた [mapを使って適当なkeyに割り当てるのがよいのではないでしょうか.>viでtranspose-chars map ..]


2002年04月06日(Sat)

[editor] vim

Emacsっていろいろ設定すれば多機能で便利に使えて、viは設定しなくても便利に使えるっていう感じで使い分けてるので、mapでviの設定を変えるのはあんまりやりたくない気が。


2002年04月07日(Sun)

[regexp] ruby-devのOniGurumaスレッド

[ruby-dev:16669] Re: [OniGuruma] nested repeat operatorとか[ruby-dev:16732] sharing sub-regexpとかのスレッドをregexp MLで紹介すれば面白そうな気がしたけど、紹介の文が思いつかなかった。

2002年04月08日(Mon)

[tdiary] 謎JavaScript

「HTML鳩丸倶楽部」更新履歴の2002-04-07でユーザビリ ティやアクセシビリティを向上させるためのJavaScriptの例として紹介されていた。


2002年04月09日(Tue)

[ruby] WebUnit

1.7で動かそうとしたらelem = HtmlElem::new( tag, attrs_to_hash attrs )がparse errorになったのでelem = HtmlElem::new( tag, attrs_to_hash( attrs ) )に変更。同様の変更をいくつか。

ruby自体のconfigureで--program-suffixをつけているとhtml-parserのinstall.rbの呼び出しで違うrubyバイナリを呼び出してこけていたのでsystem( 'ruby install.rb' )からsystem( Config::CONFIG['ruby_install_name'], 'install.rb' )に変更。Config::CONFIG['RUBY_INSTALL_NAME']との違いがわからなかったけど、小文字の方を使ってみた。

TestUnitとの組み合わせだとTestCaseの引数のチェックが厳しいらしく、WebUnit::TestCase::new( 'dummy' ).setupNameError: undefined method `dummy' for class `WebUnit::TestCase'でこけたのでとりあえずWebUnit::TestCase::new( 'nil?' ).setupに変更。


2002年04月10日(Wed)

[term] 小うるさい端末

笑った。この場合はexec /usr/bin/make "$@"とexecをつけた方がよさそう。

[ruby] tainted?

間違えてArray#eachのつもりでString#eachを使ってしまったらFixnumなのでtainted?がfalseになってしまっていてはまった。


2002年04月11日(Thu)

[ruby] testunit

IRCでの話より。

shimで使われているtestunitっていうのはrough/lib/testunitにあります。

[mail] lists.sourceforge.net

niftyからメールが送れなくて困りまくり。 エラーメールによるとpostmasterがないからだめってことらしいのですが、どう説明すればなんとかしてもらえるんでしょうか?
Remote host said: 550-Envelope sender verification failed
550 rejected: Cannot accept mail from <zn@m...> because your server doesn't have a postmaster account: Response from mbf.nifty.com [202.248.175.21] was "554 no mailbox here." when checking for existence of a postmaster mailbox. RFC 822 section 6.3 (which you have to abide by if you send and receive Email) states that you are required to have a postmaster mailbox that is routed to the person responsible for mail (http://www.rfc822.com/). We need to be able to contact you at the postmaster address to resolve potential problems if need be before we can accept your mail. Please create a postmaster account at your site
本日のツッコミ(全5件) [ツッコミを入れる]

Before...

アバン(出動待機中) [メアドプラス http://www.nifty.com/mail/plus/]

ばけら [ ていうか「お前らのせいでメールが送信できないんだ、どう責任取ってくれる」とねじ込むべきでしょう。  ニフティは金を..]

りゅう [つまりpostmasterっていう名前で誰かがメアドを取れば万事解決って感じですか?(謎)]


2002年04月12日(Fri)

[debian] uupdate

ソース差し替えだけというのをやってみた。
apt-get source drb
wget -N (略)/drb-1.3.6.tar.gz
cd drb-1.3.4
uupdate ../drb-1.3.6.tar.gz
cd ../drb-1.3.6
cp -a ../drb-1.3.4/lib/drb/cgi_drb.rb lib/drb/
vi debian/changelog
(1.3.6-1を1.3.6-0.1に変更。)
dpkg-buildpackage -rfakeroot
cd ..
ls
sudo dpkg -i drb_1.3.6-0.1_all.deb

2002年04月13日(Sat)

[diary] weekly typed

毎週タイプ?

[web] http

メソッド(GETとかHEADとか)の前に余分な空白文字とかをつけるのはだめらしい。

[cygwin] update

setup.exeを新しくしてからじゃないとまずいらしい、というのが4月10日の話。

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

kjana [あー,うー,see <http://www.dm4lab.to/~kjana/memo/memo200204.htm..]


2002年04月14日(Sun)

[言葉] バータリー

語源ってバータリーなのでしょうか?

[cygwin] wwwoffle-2.7a

2.7aが最新っぽかったのでさくっとmakeして入れてみた。upgrade-config.plがなくてとまったけど、必要なさそうだったので無視。その後もcygwin1.dllをコピーしようとするだけだったので無視。

/etc/wwwoffle.confのbind-ipv4を127.0.0.1に変更だけして/usr/local/sbin/wwwoffledで起動。初めて使ってみたけどちゃんと動いてます。

syslogってNT系だとイベントビューアかと思いきや/etc/wwwoffle.syslogに書いてました。


2002年04月15日(Mon)

[cygwin] cygrunsrv

wwwoffleをcygrunsrvで起動させようとしたらうまくいかなかったが、スタートアップにショートカットをおいて起動させるというので十分だった。

[ruby] Dir.glob('*')とsafe level

Thread.new{$SAFE=3;Dir.glob('*')}.valueでSecurityErrorとなったのでちょっと悩んだ。理由はsafe level 3で生成される文字列'*'がレベル3なのでtaintになり、レベル1の汚染された文字列を引数としたDirのクラスメソッドという条件にひっかかってしまったからだった。だからpattern='*';Thread.new{$SAFE=3;Dir.glob(pattern)}.valueなら大丈夫。

[ruby] -Tと$LOAD_PATH

ruby -Tという感じで-Tを指定していると$LOAD_PATHに.(カレントディレクトリ)が入らない。


2002年04月16日(Tue)

[ruby] mod_ruby

mod_rubyだと$stdin.readは使えるけどSTDIN.readは使えない(nilが返ってくる)らしい。

[ruby] setup.rb

$HOME以下へのraccのインストールがこけると思ったらRUBYLIBを設定してるのが悪かったみたいで、unsetして解決。

[linux] Unknown HZ value! (5) Assume 100.

topとかpsとかwとかで出てくるんですが「HZ value」って何?

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

(う) [HZはticks per secondです。]


2002年04月17日(Wed)

[cvs] ~/.cvsignore

vimの編集中にできる*.swpがcvs upで表示されるのが気になったので、~/.cvsignoreを作成して*.swpを書いておいた。


2002年04月18日(Thu)

[ruby] RDoc

記法についての日本語のドキュメントはないんだろうか?

ruby17 install.rbを実行したのに内部でrubyをexecしていて残念な思いをした。

[ruby] ext/**/.cvsignore

ext/{iconv,racc/cparse,stringio,strscan}/Makefileを.cvsignoreに追加してほしいです。

さっきはmkmf.logも出てきたと思ったのに今やりなおしてみたらextの下のディレクトリの中にはできてませんでした。

出てこないと思ったら出てきていたのはshimの方だったのでruby/ext/**/.cvsignoreと同様に追加しておいた。

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

MoonWolf [RDoc覚え書き(http://www.jin.gr.jp/~nahi/RWiki/index.cgi?cmd=vi..]


2002年04月19日(Fri)

[ruby] rough ←→ ruby, shim

pp.rbはrubyのHEADとshimの中に取り込まれたのにRUBYLIBの関係でroughの方のpp.rbが読み込まれてirb上で使うとnilを返してくれないのが不便だったので、HEAD版とshim/ruby16版を比べてshim/ruby16版は1.6と1.7の両方に対応しているようだったのでroughにコピーしてcommitしてみた。

rubyとshimにいってしまったライブラリはroughに古いのが残ることになってそれを間違って使ってしまうと困ることがありそうなので、安定してしまったものについてはroughから消えてもいいような気がした。


2002年04月21日(Sun)

[Windows] hosts

Windows XPだと%systemroot%\System32\Drivers\Etcとφ(.. )

[ruby] socket.c

heliumでsocket.c:98: redefinition of `struct sockaddr_storage'となる。

[cygwin] CVS

Ruby/CVSをcheckoutしてみるとこうなった。checkoutできるけどupdateはうまくいかないだけみたい。
~/ruby-cvs/lib$ ls
CVS  cvs.rb  diff  diff.rb  rcs  rcs.rb  tempdir.rb
~/ruby-cvs/lib$ ls CVS
Entries  Repository  Root  local.rb  parser.rb  remote.rb
~/ruby-cvs/lib$ cvs -q up
cvs update: in directory cvs:
cvs update: cannot open CVS/Entries for reading: No such file or directory
cvs update: move away cvs/local.rb; it is in the way
C cvs/local.rb
cvs update: move away cvs/parser.rb; it is in the way
C cvs/parser.rb
cvs update: move away cvs/remote.rb; it is in the way
C cvs/remote.rb
~/ruby-cvs/lib$
本日のツッコミ(全17件) [ツッコミを入れる]

Before...

miss [internet advertising]

temporabla [oxycontin http://oxy]

cukimbo [aldara http://aldara]


2002年04月22日(Mon)

[cvs] annotate

cvsweb経由でしか使ったことなかったけど、直接使ってみた。行単位で管理されてる文書でどこを誰が書いたかがよくわかっておもしろい。

[web] mozilla

mozilla index.htmでカレントディレクトリのindex.htmが開けなくて残念な思いをした。mozilla ./index.htmmozilla file:./index.htmmozilla file:`pwd`/index.htmでやっと開けた。

[cvs] add -- -hoge

ファイル名が-で始まっているファイルのaddでcvsがこけていた。--をつけて対処。

[ruby] evalとRDoc

ほとんど同じことをするメソッドをevalでdef #{hoge}_foobarのように定義していたらRDocでドキュメントを書けないと気づいたので、共通部分を違いの分だけ引数が1つ増えたメソッドに変更してそれを呼び出すように変更した。引数にデフォルト値があるので、同じ引数を並べないといけないのがちょっと無駄っぽい。


2002年04月23日(Tue)

[RWiki] PageRankもどき

Namazuシステムの構築と活用を立ち読みした時に思いついたアイデアを投げておいたらさくっと入れられていた。

[ruby] MultiRange

21日に引くことも出来るようにしてみたのをtmpに放置中。置く場所を決めてtmpから移動させないといけないなぁ。


2002年04月24日(Wed)

[web] JavaScript 1.1

<script language="JavaScript 1.1" type="text/javascript">がMozilla 1.0RC1(Linux)で動かなくて残念な思いをした。IE6,Opera6.01(Win32,日本語版),Konqueror 2.2.2(KDE 2.2.2)では動いた。コアがMozillaと同じGaleonやSkipStoneもLinux上で試してみたら動かなかった。

JavaScript1.1じゃないとだめ?


2002年04月25日(Thu)

[shell] exec

.profileでexecというのをみて現在は以下のようにやってますが、bashは-lではなく--loginなのでbashが選ばれると破綻しそうですが、今のところ唯一そういう環境に該当するcygwinは直接bashが起動されるので問題が起きてません。

[misc] dagger

どちらもさすもの?


2002年04月26日(Fri)

[ruby] pack,unpack

system("ping #{[192,168,0,2].pack('C4').unpack('N')[0]}")とかやってみた。


2002年04月27日(Sat)

[shell] zsh

最近一番よく使うzshの機能は*(.)かなぁ。

[mail] @nifty to sf.net

postmasterの件は直ったらしい。これでやっとtDiaryのメーリングリストに入れます。

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

きた [オレがよく使うのは**/*と=(command)かな. あとzftpsysが結構お気に入りです.=commandも便..]


2002年04月28日(Sun)

[samba] \\server\printer

DFでsamba上のプリンタに移動できてしまったので、cygwinでも試してみるとcd出来てしまった。でもlsするとls: .: No such file or directoryとなる。不思議な感じ。

[mail] Klez

メーリングリストは100KB制限してくれればKlezが流れる可能性はかなり減る気がする。

[ruby] $KCODE

$KCODEがEUCで処理するデータがSJISというスクリプトでgsubの第一引数に"\n"が指定されていてちゃんと動いていなかった。

本当はちゃんとRegexp.newで処理するデータの文字コードを指定した方がいいのだけれど、呼ばれる回数が多い場所で、\nはマルチバイトの文字に含まれないはずということで/\n/nにしておいた。

こういう場所にはちゃんとそのことについてのコメントも書いておいた。


2002年04月29日(Mon)

[Linux] ディスク容量

/proc/ide/hda/geometryでphysicalとlogicalがあってそれぞれの3つの値をかけた値が違うんですが、どっちが本当のディスク容量なんでしょうか?

[ruby] sub,gsubの第一引数

文字列だった場合も正規表現にコンパイルされてから使われますが、そのときにKCODEが問題に。文字列にエンコードの情報がつくようになったときにはそのエンコードの正規表現になればよさそう。と思ったけど正規表現と適用しようとした文字列のエンコードが違うとどうなるんだろう?

[misc] へめへめくつし

へのへのもへじの女バージョンがへめへめまでしか思い出せなくてずっと気になったけど思い出した。

[CVS] commit -n

loginfoで指定したプログラムは-nをつけてても動いたので、実行されなくなるのは$CVSROOT/modulesで指定したプログラムだけ?

[web] deflate

天泣記をちゃんと読めることが確認できたのはOperaとw3m。だめだったのはMSIE。iCabもだめだったらしい。

HEAD http://cvs.m17n.org/~akr/diary/で見てみたらContent-Encoding: dEflateのEだけ大文字なのが気になった。

Acceptにdeflateがないときに406 Not Acceptableを返さなくていいんだろうか?

[cvs] chmod

permissionを変更するのはレポジトリを直接いじらないとだめらしいですが、rubyのbenchmark.rbの実行属性をはずしてもらった後、cvs upで実行属性がはずれなかったので一度rm benchmark.rbしてからcvs upすると実行属性がついていないファイルになった。

[emacs] wl

Emacs20とEmacs21とXEmacsでエラーが違うので悩んでいたらdebianパッケージで入れているのとcvsから直接とってきているものが混ざっていたのがEmacs21でおかしかった原因だった。Emacs20はSEGVで落ちてしまっていたので、原因っぽかったbbdbを消した。使ってなかったし。

[emacs] PuTTYjp

PuTTY経由でEmacsを使っているとundo(C-/ or C-_)が使えなくて困り中。ttsshだとC-/は使えなくてもC-_が使えていた。


2002年04月30日(Tue)

[Linux] reboot

謎のリブート。原因不明。せっかくなので前からやろうと思っていたext2の領域をすべてext3に変更(tune2fs -j /dev/hda1)をしておいた。


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