2007-05-01から1ヶ月間の記事一覧

rep.scm

((カッコつけてる)30分プログラム)、(その23)。Schemeで実装したScheme風言語。SICPの超言語抽象(meta laungage abstraction)。 $ gosh rep.scm >(set! a 10) #<undef> >(+ a 5) 15 >(set! b (* a 2)) #<undef> >b 20(define (my-eval exp env) (cond ;; set! ((and (pair?</undef></undef>…

rawk.rb

30分プログラム、その22。RubyによるAWKっぽいプログラム。次のようなls.rawkを用意する。 BEGIN{ $sum = 0 $count = 0 puts "BYTES\tFILE" } rule {|*vals| unless vals[0] == 'total' $sum += vals[4].to_i $count += 1 print vals[4],"\t",vals[8],"\n" e…

hash.py

30分プログラム、その21。 Hashの自前実装。Python風に言うならディクショナリ。 >>> import myhash >>> myhash = myhash.MyHash() >>> myhash['spam'] = 1 >>> myhash['egg'] = 2 >>> myhash['ham'] = 0 >>> myhash['spam'] 1 >>> myhash['egg'] 2 >>> myha…

busybox.pl

30分プログラム、その20。記念すべき20回目なのに、結構手抜き。head+tail+grep+cat+echoなプログラム。BusyBox風味。 $ ln -s busybox.pl head $ ln -s busybox.pl tail $ ln -s busybox.pl grep $ ln -s busybox.pl cat $ ln -s busybox.pl echo $ perl he…

wc_avg.scm

30分プログラム、その19。 ファイルの平均行数を計算するプログラム。 $ gosh wc_avg.scm msort.rb 32.0 $ gosh wc_avg.scm sieve.rb 75.0 $ gosh wc_avg.scm msort.rb sieve.rb 53.5ちなみに、これでいままでの30分プログラムの平均行数を調べたところ、次…

my_struct.rb

30分シリーズ、18。 Sturctクラスっぽいものを自前で作ってみよう。このマニュアルから使い方を引用すると、 Dog = Struct.new(:name, :age) fred = Dog.new("fred", 5) fred.age=6 printf "name:%s age:%d\n", fred.name, fred.age とすると、"name:fred ag…

RPCインターフェース

曰くmisc/xmlrpc/READMEに説明があるらしいが、そんなファイルは見つからなかったのでコードを読んだ。エントリポイントはhiki.cgi。要するに、Wiki本体と同じ。 wiki.getPage(page) 指定したページの内容を取得。 wiki.getPageInfo(page) タイトル(title)、…

hiki_fortune.py

30分シリーズ、その17。 手前味噌ながら、Hikiのfortuneプラグインのデータを本当のfortuneの形式に変換するためのプログラム。 $ python hiki_fortune.py http://mzp.sakura.ne.jp/wiki/hiki.cgi fortune この頃(西暦37年)、マクロの勢力が絶頂にあった。(…

oop.pl

30分シリーズ、16。Perlでオブジェクト指向をやってみよう。Perlは立派なオブジェクト指向言語(OOPL)です。でも、クラスを作ったことはなかったのでやってみました。 お題は、Counterクラス、Personクラスと同じくらい有名なAccountクラス(銀行口座)です。 $…

ルール説明

30分で何かを作ろうシリーズのルール説明。いまさらだけど。 30分で何かを作る。短すぎてもダメ。ドキュメントを調べる時間も含める 毎日ちゃんとやる 実用性の有無にはこだわらない xxxライブラリを使ってみました、とかいうのもOK 困ったときはSICPの演習…

flist.scm

30分シリーズ、15。ファイルリスト生成プログラム。 常にネタ切れ感に苛まれているのですが・・・。今回は、今で書いたプログラムの一覧を生成するプログラム。作ってから思ったけど、はてな記法で生成するべきだったかも。 $ gosh flist.scm *.{pl,py,rb,sc…

xgrep.rb

30分シリーズ、その14。XML用grep、xgrep.rb。 TypingManiaの歌詞ダウンロードに使おうと思ったら、XMLがvalidじゃなかったので使えなかった可哀想な子。 <musicinformation> <musicinfo id="0" xmlpath="XML/Memorability.xml" musicpath="mp3/Memorability.mp3"> <musicname>Memorability</musicname> <artist>緋火流</artist></musicinfo></musicinformation>