2009-01-01から1年間の記事一覧

git blog: gitレポジトリからブログ記事のテンプレートを生成するコマンドを作りました

何ができるの? gitのコミットログから、こんな感じのブログ記事を生成します。 生成される記事の内容は「今日の作業の要約」と「今日のコミット一覧(githubへのリンク付き)」です。 ダウンロード/インストール git blog: generate blog template from git re…

リストのシャッフル

30分プログラム、その676。リストのシャッフルをやってみました。 簡単に書けると思いきや、意外と落とし穴にはまりました。 乱数が生成できない! FAQによると、Randomというアンドキュメントなstructureがあるらしい。 List.sortがない。 自分で書いた。 fs…

簡易HTTPサーバ

30分プログラム、その675。簡易HTTPサーバ。 Helloとしか返さない簡単なWebサーバです。Javadocとにらめっこしてたら30分なんてあっという間です。 使い方 $ fsc server.scala $ scala Main ソースコード import java.net.ServerSocket import java.io.Print…

リストの上で集合っぽい演算

30分プログラム、その674。リストの上で集合っぽい演算を定義してみました。 みなさん、知ってます? Rubyって配列を集合みたいに扱えるんです。 >> [1,2,3] - [3,4,5] => [1, 2] [1,2,3] & [3,4,5] => [3] >> [1,2,3] | [3,4,5] => [1, 2, 3, 4, 5] ホントの…

Twitterの流量を計算してみよう

30分プログラム、その673。Twitterの流量を計算してみました。 Twitterには"流量"という概念があるらしいです。よく分かんないんですが、「自分のTLで、1時間あたり何回発言が行なわれたか」というニュアンスみたいです。 わりとおもしろそうなネタなので、…

コマンドラインでストップウォッチ

30分プログラム、その672。コマンドラインで動作するストップウォッチを作ってみた。 perl stopwatch.plで起動すると、経過時間を延々と表示してくれます。 操作方法は、Enterを押せばラップタイム、C-cで終了、C-zで一時停止、ということにしといてください…

並列ダウンローダっぽい何か

30分プログラム、その672。サーバごとにスレッドを立ち上げて、並列でダウンロードするダウンローダを目指してみた。実際は、スレッドを立ち上げるとこまでしかやっていない。 Webからファイルをダウンロードするときは、なるべく並列化して効率をあげたい。…

Scalaでls

30分プログラム、その671。Scalaでファイル一覧の取得をやってみました。 最初は、ScalaのAPIドキュメントを読んでいたんだけれども、どこにもファイル一覧を取得する関数が載ってない。 どうすんだよー、としばらく悩んでいたけど、JavaのAPIを使えばいいこ…

Writerモナドを試してみた

30分プログラム、その670。Writerモナドを試してみました。 前回がReaderモナドだったので、今回はWriterモナドを試してみました。 The Writer monadには、Writerモナドは裏でログをとったりするのに便利だと書いてあったので、関数の呼び出しを記録してみま…

四則演算しかできないeval

30分プログラム、その669。四則演算しかできないevalを作ってみました。 今日、輪講資料を作るためにSICPを読んでました。かの有名な"超言語抽象"の章です。で、そこを読んでたら、evalを書きたくなったので書いてみました。 ちゃんとLispを実行できるevalは…

自分で遅延リストを作って、素数計算

30分プログラム、その668。自分で遅延リストを作って、素数計算をしてみました。 明日、研究室で発表をしなければいけないことを考えてると憂鬱になるので、素数を数えるコードを書いてみました。こういう無心で書けるコードは心が落ちつくので、わりとあり…

各要素に平等なconcat

30分プログラム、その667。各要素に平等なconcatを作ってみる。 リストの結合は(append xs ys zs)でできますけど、xsが全部登場したあとにysが始めて登場するので、ysやzsにはちょっと不公平です。具体的には、 ;; urlからファイルをダウンロードする関数 (d…

与えられた文字列を、#で囲むプログラム

30分プログラム、その666。与えられた文字列を、#で囲むプログラムを書いてみた。以下のような動作をするプログラムを書いてみた。 $ python border.py 1st "HELO WORLD" ############## # # # HELO WORLD # # # ##############特に目的は考えてないんですけ…

log(自然対数)の計算

30分プログラム、その665。log(自然対数)の計算をしてみる。 logの近似式について -log(常用対数)の近似式を教えて戴きたいです。- 数学 | 教えて!gooというページを見付けました。ようするに、『ボクの環境だとlogがないんだけど、なんかいい近似式しらな…

今日の証明: reverse (reverse xs) = xs

最近Coqが流行してるので、ボクも流れに乗ってみました。今回、ボクが証明したかったのは、2回reverseすると元に戻るという性質です。 Theorem RevReflect : forall {A : Type} {xs : list A}, reverse (reverse xs) = xs. そののために、appendを定義したり…

ErlangでファイルのMD5計算

30分プログラム、その664。ErlangでファイルのMD5計算をやってみました。 本当は、md5ベースで重複ファイルの削除をするぜ、みたいなことをやりたかったんです。でも、特定ファイルのmd5を計算するだけで時間が立ってしまいました。特にio_lib:formatに渡す…

Readerモナドを試してみる

30分プログラム、その663。Readerモナドを試してみました。 The Reader monadを読んでたら、環境がどうのこうの書いてあったので、簡単なプログラミング言語を作ってみました。環境が使いたかっただけなので、変数束縛と変数参照のほかには、整数リテラルと…

サイコロコマンド - コマンドライン引数からランダムに1つ返すコマンド

30分プログラム、その662。コマンドライン引数からランダムに1つ返すコマンドを作ってみた。イメージとしては、各面の文字を自由に決めれるサイコロ。そういえば最近、Scalaを触ってないことに気がついたので、リハビリがてら簡単なコマンドを作ってみた。 …

srfi-9のレコード型を試してみた

30分プログラム、その661。Gauche Users’ Reference: Topを試してみた。 今まで、Schemeで構造化されたデータが欲しいときはリストで表現してました。 (define (make-account name balance) (cons name balance)) (define account-name car) (define account…

Twitterで「〜なう」とかつぶやくボタンを作るWebサービス「ついったボタン」をリリースしました

http://tw-button.appspot.com/というWebサービスを作ってみました。みんな、試してみてください。 何コレ? クリックすると、Twitterに特定を発言が投稿されるボタンを作ります。 「自宅なう」のような定型文を投稿するボタンを作っておいて、iPhoneからクリ…

2人の相性度は? (EPOCH@まつやま - 本選3)

30分プログラム、その660。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_219より。 SMLはまだまだ不慣れなので、これくらいがちょうどいいです。 使い方 - friend "Alice" "Bob"; val it = 5 : int ソースコード fun toNum c = Char.ord (Char.t…

ファイルの先頭のコメントを除去するスクリプト

30分プログラム、その659。ファイルの先頭にテキストを追加するスクリプト - みずぴー日記の逆で、ファイルの先頭のコメントを除去するスクリプトを書いてみました。 前回までのあらすじ 昔々、とあるソフトウェアをリリースするにあたり、そのソースコード…

行数に応じてlessとcatを切替えてくれるスクリプト

30分プログラム、その658。行数に応じてlessとcatを切替えてくれるスクリプトを書いてみました。 ボクは、ファイルの中身を見るとき、画面に収まるならcat、収まらないならlessを使う派です。lessを使うとqを押さないといけないのが面倒なのです。 で、そう…

pa_field: {foo}を{foo=foo}にするCamlp4拡張

将来のOCamlで{foo = foo}のかわりに{foo}と書けるようになるかも、というウワサがあるらしいです。 ステキな機能ですね。ここ最近、 let f {foo=foo;bar=bar;baz=baz} = ... みたいなコードをずっと書いてて嫌になってきたので、Camlp4で実現してみました。…

ドント方式投票の計算

30分プログラム、その657。ドント方式投票の計算をやってみました。新聞を読んでいたら「ドント式投票は、より民意が反映される」という趣旨のことが書いてありました。"民意が反映される"の意味はよく分からないですが、とりあえずコードを書いてみましょう…

4uの画像を延々と表示するMUGEN 4uを作ってみた

id:zyxwvが、STRAIGHTLINE™の画像を溜め込んで、それを延々と表示するJavascriptを書いてました。変態ですね。それを内輪だけで使っているのはもったいないので、外部に公開可能な形に書き換えてみました。 http://howdyworld.org/4u/ SafariかChromeなどのW…

ln2を計算しよう

30分プログラム、その656。ln2を計算してみよう。 SICPによると、らしいです。本来は無限ストリームを使って解く問題ですが、今回は有限の長さのリストを使っています。そのせいで、第何項までで計算するかを指定しなければいけません。 無限ストリームを使…

オイラー定数を計算してみた

30分プログラム、その655。オイラー定数を計算してみました。 京都に旅行に行ってきました! 旅行中に、ふらふらっとジュンク堂に入ったらオイラー定数1000000桁表が置いてあったので、つい買ってしまいました。 で、せっかく買ったので、オイラー定数を計算…

月齢を計算してみる

30分プログラム、その654。http://gauc.no-ip.org/awk-users-jp/blis.cgi/DoukakuAWK_214をマネしました。 単純にマネするだけではおもしろくないので、月名を出すようにしてみました。でも、まあ、今日の月齢を出すだけなので、空を見上げたほうが早いと思…

サイコロを100回振って、各目の出る割り合いを求める

30分プログラム、その653。サイコロを100回振って、各目の出る割り合いを求めてみる。ソーシャル・ネットワーキング サービス [mixi(ミクシィ)]にインスパイアされました。 問題2.1〜6の目が出るサイコロを100回振って、1〜6の目が出る割合を求めるプログラ…