青木日記

<前月 | 最新 | 次月>

2007-07-01

svn 以下を除いてリスト (1)

何回やっても .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)

.svn 以下を除いてリスト (2)

ちなみに、どうしても思い出せないときは 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)

.svn 以下を除いてリスト (3)

表示順序が違うなあ。 find(1) はソートしないけど Ruby の Find はソートするという違いか。

(17:14)

本日のツッコミ (全2件)

takano32 [svn list -R ではダメ?]

naka [find lib -not -regex '.*\.svn.*' とか]


2007-07-02

Java 版 cflat

ようやく Java 版の cflat も Hello, World をコンパイルできた……。 実に長い戦いであった。

~/c/stdcompiler/src % cat test1.cb
import stdio;

int

main(int argc, char **argv)

{

printf("Hello, World!\n");

return 0;

}

~/c/stdcompiler/src % java -classpath build/classesnet.loveruby.cflat.compiler.Compiler test1.cb

.globl main main: pushl %ebp movl %esp,%ebp movl $.LC,%eax pushl %eax call printf movl $0,%eax jmp .Lmain$epilogue .Lmain$epilogue: movl %ebp,%esp popl %ebp ret

……うーんよく見るとシンボルの先頭にアンダースコアが足りないような気がする。 どっか AMD64 と混じってるな。

(05:18)

BitClust の WEBrick 対応

すでに昨日のことだが BitClust を WEBrick に対応させた。

$ ruby standalone.rb --baseurl=http://localhost:10080 --database=./db --debug

でな感じでサーバを起動して、 http://localhost:10080/view にアクセスするとライブラリ一覧が見られる。はず。 あと、データベース (./db) はあらかじめ作っておく。

なんで --baseurl と --port が連動してないのー、 とかそういう細かいツッコミはなしの方向で。 あとマルチスレッド対応してないのに WEBrick でいいのかー、 とかのややこしい話もナシの方向で。

(05:23)


2007-07-12

うわー日記書くのめっちゃ久しぶりだ

風邪で完全にダウン。やすめないのがきつい。

…… 38 度台かあ。体感のわりに低いな。 まあ、おれは 39 度こえると吐くからそんなもんかもしれない。

(19:37)

Windows でパイプをつなぐ

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)

復活の予感……!

あー、適当なこと書いてたら調子よくなってきた。 明日には復活できるだろうか。

つーかさっさと寝ろという話だ。 はいそれじゃテンション高いまま寝ます。

(20:38)

Windows でパイプをつなぐ (2)

あれ? なんで IO.popen("ls | grep build | false") ってちゃんと動くんだろ。

……あああそうかこれ Mac OS X じゃん……。 だめだ本当に風邪はよくない。 もう寝ゆ。

(20:45)

本日のツッコミ (全1件)

znz [IO.popen("-")じゃだめなんでしょうか?]


2007-07-16

絶望した

味噌汁つくったのに味噌がない!!!

(02:45)

本日のツッコミ (全2件)

iskw [味噌汁を作った、と言えるかどうかすら危ういですね。]

ゆーぼー [あるある。今夜はソースに凝った焼きそばにしようと思い、ウースターソース、ケチャップ、マヨネーズを買い求めた。さて作ろうかとレジ袋を開けたところ、肝心の麺がない。「オー、マイ、ガッドネスッ!!」→速攻でスーパーへ直行!!…
しかも、これが二回目だ orz...]


2007-07-17

Debian で Java

Debian で Java 使うのはすげー楽になったなあ。 aptitude install sun-java5-jdk で終わってしまった。 ant とか junit も一発で入るし、すげー楽だ。

どっちかというと、その前に 32 ビット環境を作るほうが面倒だったりした。 AMD64 なので。

(05:05)

Cflat コンパイラ Java 版

ようやく Hello, World コンパイルできた。

tukumo:~/c/stdcompiler/src/test % cat test1.cb
import stdio;

int

main(int argc, char **argv) { printf("Hello, World!\n"); return 0; } tukumo:~/c/stdcompiler/src/test % cat stdio.hb extern void printf(char *fmt, ...); extern void puts(char *str); extern void putc(int c); extern int getc(void); tukumo:~/c/stdcompiler/src/test % ./cbc test1.cb as finished; status = 0 tukumo:~/c/stdcompiler/src/test % ./a.out Hello, World!

あー、なんかめっちゃ苦労した……。

(06:41)


2007-07-23

何も思いつかないときに ls を打たないでいられる人がどれくらいいるだろうか (いやいない)

あーヤバい 3 時から ls しか打ってねぇー。 全然頭まわんないよ。

(05:51)

本日のツッコミ (全6件)

 [おいらは、ドッチかっていうと「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 [無意味にエディタの選択を繰り返すことがありますね.
注目していないし,コピーもしたくはないのに反転させてみる,とか.]


2007-07-26

OMRON ルータ MR504DV リストラ

もー、HTTP が突然止まる病がどうしてもなおらないので、 ルータをリストラしました。 今度は Corega にしてみた (安かった)。 これでしばらく運用してみよう。

(00:17)

SPI が信用できない

どうもファイアウォールってか SPI (Stateful PacketInspection) が信用できない。 ZyWall のときも pipelining SMTP が SPI ファイアウォールに止められたし、 DNS スレーブ接続もブロックされたし、 MR504DV で HTTP が止まるのもどうも SPI がらみのような気がするんだよな。 SPI がパケットをブロックした直後から HTTP が全部止まってんだもん。

つーかさー、もうファイアウォールいらなくね? 邪魔するばっかりで全然役に立ってねえよ。 ちゃんとルーティングだけしてくれればそれでいいじゃん。

(00:32)

半自動 ls

自分で 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)

半自動 ls (2)

ランダムで 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)


<前月 | 最新 | 次月>
2002|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|04|05|06|09|10|
2009|07|
2010|09|