22:07:26 # Life ocamlで関数を使ってみる。 letで関数が定義できて、functionというのはmatchをするための略記構文だというのが 新鮮だった。loop 関数の第二引数は明示的に宣言しなくても matchに利用される。 再帰するためには rec で宣言する、というのに違和感。 練習用に再帰してリストの項目を全部掛け算する関数を書いてみた。
# let listmul l = let rec loop s = function [] -> s | hd :: rest -> loop (s * hd) rest in loop 1 l;; # listmul [2; 3; 4];; - : int = 24
21:37:06 # Life ocaml をとりあえず使えるようにする。 開発環境をそろえてみようと思い立ったので、いろいろと調査。 ocaml 用の Debian パッケージは ocaml あたりをいれれば入りそう。 emacs 用の開発環境は tuareg-mode と ocaml-mode の二つのパッケージがあるようだ。 どちらを使ったらよいのかはわからないのだけれども、tuareg-modeを優先するようなことがREADME.Debianにかいてあるので、 tuareg-modeを使うことにする。 M-x tuareg-run-caml で起動する tuareg-interactive-mode というのがあり、トップレベルを利用した インタラクティブな評価も可能なようだ。 しかし、ocamlでは型毎に加算演算のオペレータが違うそうだ。 強力な型が特徴な言語らしい。 どういう考え方なのか、すこしづつみていこうとおもう。
# "ABC"^"DEF";; - : string = "ABCDEF" # 1+2;; - : int = 3 # 1.2 +. 3.4 ;; - : float = 4.6 # 1 :: [2; 3; 4] ;; - : int list = [1; 2; 3; 4] # [1; 2] @ [2; 3; 4] ;; - : int list = [1; 2; 2; 3; 4]
15:10:13 # Life Tinny sound in macbook. MacBook 4,1 のサウンドカードのsubwoofer が Linux ALSA からうまくうごかないという件があるのだが それでカスカスな音がでることを tinny というらしい。 Google で検索すると tinny で検索しても tiny で検索されてしまうので +tinny で検索しなおしてみた。
16:32:07 # Life debootstrapでunpackが失敗したというエラーが出た。 unpack でもpreinstは実行され、preinstが失敗するとエラーになるのか。 とおもったが、結局ファイルの上書きがあったというしょぼい結果だった。 エラーメッセージが全然表示されないのだが、 /debootstrap/debootstrap.logにログが書き込まれるらしい。 それをみたら何がおきているのかがやっと分かった。521545
10:06:01 # Life 東京エリアDebian勉強会報告。 2009年3月21日土曜日に 東京エリアDebian勉強会の 第50回 を東京大学にて開催しました。 今回の参加者は 岩松, あけど, 前田,キタハラ,たかはし,キタムラ,じつかた,やまだたくま, 日比野,藤澤とおる,よしの,虎,こたに,matsuu,かい, たなか,ささき(uwabami), まとはら,こう,John,よしだ@板橋,藤澤りそう,上川x2 の24名でした。
11:56:42 # Life sshで接続先のサーバのユーザ名が違う場合。 たとえば、aliothをつかっていると ユーザ名-guestとい うユーザ名が割り当てられるのですが、そんなユーザ名で手元のマ シンを使っている人はほぼいないのでsshで接続する際に何も指定しないと現在利用中のユーザ名を使ってログインしようとして Permission Denied エラーがかえってきてなんでだろうと考え込むことになります。 つまり、ユーザ名をssh の -l オプション(もしくは@表記)で指定する必要があるわけです。 ただ、毎回 -l オプションを指定するのもなんなのでデフォルトで接続してくれるようにしたい、 そういう場合には.ssh/config の Host alioth.debian.org 項目に User xxx-guestと記述しておくとそのユーザ名を使ってくれます。 こんなことを書くと「なんだよいままで ssh -l xxx-guest alioth.debian.org ってしてたのかよ、ぷふ」、と笑われてしまいそうですが、恥をしのんでここに記します。
08:12:50 # Life rsync の速度。 ネットワーク経由で大量のファイルをコピーするのに rsync をつかっているのですが、 ssh を使うと compression を使っていたり、強い cipher を使っていたりします。 すると計算速度が遅いので、glantank とかだとネットワーク転送の速度が CPU bound になってしまいます。 いろいろ小技があるようなので調べてみました。 まず、~/.ssh/config にて Compression off にしてデフォルトで圧縮をオフにすることができます。 個別に必要なホストに対して Compression をオンにしてやればよいかなとおもうので、変更してみました。 あと、rsyncのコマンドラインオプションで rsync -avr -e 'ssh -c blowfish' として、ssh の -c オプションで暗号化方法を指定してあげます。 blowfish が一番軽いという噂。 いろいろな暗号化方法の処理速度を確認するためには、 openssl speedが便利なようです。 で、確認してみると、どうも手元のマシン(MacBook core2duo)では aes128-cbc のほうが blowfish より速い。 念のため ARM のマシンで実行してみると、blowfish のほうがダントツで速かった。 さらにいうとrc4 のほうが速い。ssh -c arcfourっぽい。 試してみたら blowfishは 340k/s程度。arcfour は 360k/s 程度。どちらにしても遅い。 通信速度はjnettopで確認してみた。
built on: Thu May 8 02:13:22 UTC 2008 options:bn(64,32) md2(int) rc4(ptr,int) des(idx,risc1,4,long) aes(partial) blowfish(idx) compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O2 -g -Wall available timing options: TIMES TIMEB HZ=100 [sysconf value] timing function used: times The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 179.90k 387.11k 531.37k 592.55k 613.04k mdc2 0.00 0.00 0.00 0.00 0.00 md4 1626.91k 5676.33k 16639.66k 32200.02k 44318.72k md5 1386.17k 4755.50k 13272.92k 24179.37k 31817.73k hmac(md5) 1963.55k 6359.54k 16093.87k 26304.51k 32281.94k sha1 1248.23k 3718.87k 8435.54k 12314.80k 14145.27k rmd160 1179.36k 3486.89k 7842.47k 11431.25k 13145.43k rc4 13691.70k 15984.60k 16667.14k 16835.24k 16891.90k des cbc 2878.75k 3039.02k 3080.02k 3095.21k 3091.11k des ede3 1084.21k 1114.71k 1119.91k 1120.26k 1125.03k idea cbc 0.00 0.00 0.00 0.00 0.00 rc2 cbc 2659.59k 2783.06k 2814.81k 2822.14k 2823.51k rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 blowfish cbc 6495.24k 7270.44k 7491.93k 7549.61k 7547.56k cast cbc 5831.41k 6464.43k 6638.93k 6699.01k 6717.44k aes-128 cbc 3116.70k 3301.80k 3363.33k 3373.74k 3375.10k aes-192 cbc 2698.55k 2847.19k 2882.39k 2895.19k 2899.97k aes-256 cbc 2380.73k 2494.63k 2528.77k 2533.38k 2539.52k camellia-128 cbc 0.00 0.00 0.00 0.00 0.00 camellia-192 cbc 0.00 0.00 0.00 0.00 0.00 camellia-256 cbc 0.00 0.00 0.00 0.00 0.00 sha256 897.73k 2178.18k 3999.91k 5056.51k 5477.72k sha512 173.14k 685.53k 1014.78k 1409.71k 1589.25k
08:37:13 # Life 確定申告。 毎年確定申告は 国税庁の自宅で作成できて書面提出できる PDFを生成するサイトでやっていた。 昨年まではできたのだが、 今年はなぜかブラウザチェックがかかってLinux の Firefoxでは作成できなくなってしまった。 しかたがないので窓口までいって、税務署に設置されている Windows PC で作業した。
20:34:39 # Life 今日はカーネル読書会。 カーネル読書会の会場でコードをいじってqemubuilderのinitrdがなんとなくそれっぽく動くようになるところまでやった。 しかし、まだ一般化できていないなぁ。
11:52:29 # Life 任意のファイルを読み込めるオプションを追加。 pbuilder(git版) に --inputfileオプションを追加してみた。 適当にファイルを追加してchroot内部で扱えるようになります。 /tmp/buildd/以下にファイルはコピーされます。 現在サポートしているのは、pbuilder, cowbuilder、作業中なのはqemubuilder.
12:06:32 # Life gitosis いいな。 tutorial。 シェルのアクセス権限がなくてもコミットできるようにしているのがよい。
$Id: 200903.html.ja,v 1.20 2009/03/31 13:10:50 dancer Exp $