何回やっても .svn 以下を除いてリストする コマンドが覚えられないのでメモっとく。
tukumo:/usr/local/lib/bitclust % find lib -name .svn -prune -o -print lib lib/bitclust lib/bitclust/methodid.rb lib/bitclust/compat.rb lib/bitclust/server.rb lib/bitclust/lineinput.rb 以下略
(17:10)
ちなみに、どうしても思い出せないときは Ruby に逃げる。
tukumo:/usr/local/lib/bitclust % ruby -rfind -e 'Find.find(ARGV[0]) {|path| Find.prune if File.basename(path) == ".svn"; puts path }' lib lib lib/bitclust.rb lib/fcgi.rb lib/bitclust lib/bitclust/textutils.rb lib/bitclust/requesthandler.rb 以下略
(17:12)
ようやく Java 版の cflat も Hello, World をコンパイルできた……。 実に長い戦いであった。
~/c/stdcompiler/src % cat test1.cb import stdio;
……うーんよく見るとシンボルの先頭にアンダースコアが足りないような気がする。 どっか AMD64 と混じってるな。
(05:18)
すでに昨日のことだが BitClust を WEBrick に対応させた。
$ ruby standalone.rb --baseurl=http://localhost:10080 --database=./db --debug
でな感じでサーバを起動して、 http://localhost:10080/view にアクセスするとライブラリ一覧が見られる。はず。 あと、データベース (./db) はあらかじめ作っておく。
なんで --baseurl と --port が連動してないのー、 とかそういう細かいツッコミはなしの方向で。 あとマルチスレッド対応してないのに WEBrick でいいのかー、 とかのややこしい話もナシの方向で。
(05:23)
風邪で完全にダウン。やすめないのがきつい。
…… 38 度台かあ。体感のわりに低いな。 まあ、おれは 39 度こえると吐くからそんなもんかもしれない。
(19:37)
Windows でパイプをつなぎたくなったとする。
それでいて system とかは使わず自力でつなぎたいとする。
なんでパイプをつなぎたいのかってのは人それぞれだが、 「パイプをつながないと死んじゃう病」になったとか、 cmd.exe にプチきれてシェルを書き始めたとか、理由はいろいろ考えられる。
そんなわけで Win32API を調べたりしたんだけど、 つなげるだけなら Ruby では IO.popen を使えばいいので IO.popen(["こまんど", "引数"]) と書いとけばいいわけである。 あ、第一引数に配列が渡せるのは 1.9 限定だな確か。
ただ、IO.popen で一段はパイプがつなげるのだが、 ls | grep test | less みたいに二段以上になると どうしたらいいのかわからなくなってしまった。 まあ IO.popen("ls | grep test", "w") とか書くと ちゃんとパイプが働くのだけど、 やっぱこう、なんとなく自力でやりたいわけである。
で考えたのが、GetModuleFileName で自分の実行ファイルのパスを得て、 --connect-pipe とか適当な引数をつけて自分を起動して、 パイプ接続先コマンドを exec させるという方法。 それでなんとなく動いたんだけど、なんか実にアホな感じである。 もっと楽にいけないのかね。 というか cmd.exe はどうやってんだ。
そういえば、exec もどうやって実装されてるのか結構謎であった。 けど、実装を見てみたらすげー単純で驚いた。 子プロセスを作って WaitSingleObject で終了を待ってんのね。 こんな方法があるんだなあ。
(20:21)
あれ? なんで IO.popen("ls | grep build | false") ってちゃんと動くんだろ。
……あああそうかこれ Mac OS X じゃん……。 だめだ本当に風邪はよくない。 もう寝ゆ。
(20:45)
■ znz [IO.popen("-")じゃだめなんでしょうか?]
Debian で Java 使うのはすげー楽になったなあ。 aptitude install sun-java5-jdk で終わってしまった。 ant とか junit も一発で入るし、すげー楽だ。
どっちかというと、その前に 32 ビット環境を作るほうが面倒だったりした。 AMD64 なので。
(05:05)
ようやく Hello, World コンパイルできた。
tukumo:~/c/stdcompiler/src/test % cat test1.cb import stdio;
あー、なんかめっちゃ苦労した……。
(06:41)
■
い [おいらは、ドッチかっていうと「df」だな。
昔、空き容量を気にしながら作業していた時のクセで...]
■
う [if ! idea then
muchi打って
walk
[and-then]
go to bed
end]
■
う [if ! idea then
muchi打って
walk
[and-then]
go to bed
end]
■ お [まちがたっ!修正ぷりーず!!]
■ ujihisa [ほか、vimのクセでjkhlを無意味に押したりとか]
■
takano32 [無意味にエディタの選択を繰り返すことがありますね.
注目していないし,コピーもしたくはないのに反転させてみる,とか.]
もー、HTTP が突然止まる病がどうしてもなおらないので、 ルータをリストラしました。 今度は Corega にしてみた (安かった)。 これでしばらく運用してみよう。
(00:17)
どうもファイアウォールってか SPI (Stateful PacketInspection) が信用できない。 ZyWall のときも pipelining SMTP が SPI ファイアウォールに止められたし、 DNS スレーブ接続もブロックされたし、 MR504DV で HTTP が止まるのもどうも SPI がらみのような気がするんだよな。 SPI がパケットをブロックした直後から HTTP が全部止まってんだもん。
つーかさー、もうファイアウォールいらなくね? 邪魔するばっかりで全然役に立ってねえよ。 ちゃんとルーティングだけしてくれればそれでいいじゃん。
(00:32)
自分で ls を連打しなくて済ますためのシェルスクリプトを書いてみた。 return を連打するだけでランダムに ls, ls -l, ls -as を実行する。
#!/bin/sh while read cmd do [ "$cmd" = "exit" ] && exit case `expr "$RANDOM" % 3` in 0) ls ;; 1) ls -l ;; 2) ls -as ;; *) echo "???" ;; esac done
手抜きしたので $RANDOM があるシェル専用。
(01:17)
ランダムで cd するようにしてみた。
#!/usr/bin/env ruby unless Array.method_defined?(:choice) class Array def choice at(rand(size())) end end end def main Signal.trap(:INT, 'EXIT') actions = [ lambda { cmd "ls" }, lambda { cmd "ls -l" }, lambda { cmd "ls -a" }, lambda { cmd "ls -s" }, lambda { random_chdir } ] $stdin.each do |line| exit if line.strip == 'exit' actions.choice.call end rescue Interrupt exit 1 end def cmd(s) $stderr.puts s system s end def random_chdir ent = (Dir.entries('.') - ['.']).select {|ent| File.directory?(ent) }.choice $stderr.puts "cd #{ent}" Dir.chdir ent end main
(02:23)
■ takano32 [svn list -R ではダメ?]
■ naka [find lib -not -regex '.*\.svn.*' とか]