おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2003年12月20日(Sat) 駐禁とられるところでした

ちょっとだけ自動車を停めて待っていると向こうから駐禁のキップをきるおじさんが…。夕方は友だちが来て派遣の話とか通訳の話とか。おもしろかった。


2004年12月20日(Mon) 月曜日はおしごと

あたりまえー。っていうか出張の準備はまにあうのだろーか?

Windows XP SP2だとftpが使えない

コマンドプロンプトからftpするとConnected to ...の後にダンマリになる。ファイヤーウォールが効いてるような気もするんだけど面倒なのでLinuxマシンで取りにいく。

免許証のバーコード

こちらの運転免許証には二次元のバーコードが印刷されてます。ちょっと免許証をコピーしなくちゃいけなくなったのだけれど、このバーコードにどんな情報が入っているのかわからないので、このバーコード部分を黒塗りにするべきかどうか判断できません。少なくともGoogle先生から答を聞きだすことはできなかった。

ついでがあったら警察に聞いてみたいところだけど、聞くだけで目をつけられたりするのでしょうか?電波タグではないだけマシなのですが、それにしても嫌な世の中になってきたものですよね。

ひどいbotもいたもんだ

ログを見ていると、Commerobo/1.0.1 (http://www.dcn.to/~comment/on/)というのが時々、5つ程度同時にこの日誌を読みに来ているのがわかりました。リファラから辿ると、メタ検索エンジンのようなのですが、検索結果を表示するたびにメタ検索エンジンからこの日誌に要約を作るための情報を読みに来ているみたい。

.htaccessで禁止にすると、次の検索では403になっていることがすぐわかりました。すばやい反応ありがとうございます。せめてそちらでキャシュしといてください。もう来なくていいですよ。さようなら。


2005年12月20日(Tue) メインマシンがSMPカーネルで起動しなくなりました

昨日、一度突然リブートがかかったので掃除してあげたのだけれど…。SMPカーネルだとkernelが走りだした直後にリブートがかかる。UPカーネルだとNvidiaのドライバが文句をいう。とりあえずmemtestしてるけど、メモリの問題じゃなさそうだよねぇ…。忙しいのになあ。

memtestは2回パス。むーむむうん。

試しに再起動してみたらXまで上がっちゃったよ。やっぱ暖気が必要ということで。冬だしね。

ポータブル放射率測定装置の共同開発について | JAXA

Space Fighter Nowより。

black_nightさんは「誰が使うんだ?」と書いておられるけど、これは楽しいよー。真空中でいちばん熱を伝えるのは光なので、熱設計をする時には放射率がぜひとも必要なんだけど(そして僕がやったりすると適当に仮定しちゃうんだけど)、それをちゃんと簡単に測れるというのはけっこうよいと思う。

身近で考えると望遠鏡の鏡の放射率はぜひとも測りたいよね。んー、やっぱ専門家向けかな…。んー。そうか、自動車の塗装の放射率を測ると涼しくて暖かい自動車がわかる、とか屋根の放射率を測って省エネ!とか(なんだかむりやりか。)

NASAのNew Horizons計画。某望遠鏡もけっこう協力したのにぜんぜん報道されないよね。だめじゃんねえ。あ、いやどういう成果があったのかは知らないのだけど。

沢山メールを書いて沢山添付した…のだけれど毎回添付するのを忘れるんだよな。


2006年12月20日(Wed) ジョギング無しだと遅寝早起きができるな

クッキーが衝突する

自分のGMailを検索しながら共有のGoogleカレンダーを確認する、という作業をしたいのだけれど、自分のアカウントか共有のアカウントかどちらかでしかログインできない。例えばWWWブラウザの別のWindowではクッキーの名前空間が分れる、なんて機能はけっこう便利だと思うのだけれどどこかにないかな。

このホストからtDiaryをcommitするのにssh-agentを動かしておいた。commitした後に止めるのを忘れてログアウトしてしまった。複数の端末からsshしてる場合もあるので、単純にログアウトするときに自動的に止めるようにしておけばいいってもんでもない。えーと、他に自分がログインしてない時に限ってログアウト時に止めるようにすればいいのかな。

ログアウトする時に他に自分がログインしていなければssh-agentを止める

そういうわけで、.bash_logoutに下記を書いてみた。

3行目はpsコマンドの出力フォーマットに強く依存している。

NetBSD 2.1.0_STABLEwコマンドは、w -h zundaの結果に「zu」さんが含まれることがわかった。不思議。一行目のsedは結果からzuさんなどを除くための処理。

[run] 最短コース 25分31秒 3.14マイル 8.1分/マイル

やっと少しだけ体が軽くなってきた。

そういえば本番のときは往きのカハラのあたりで、ふと足が無くなったように感じたのだった。なんというか意識しなくてもすーっと自分が進んでいくの。おぉ!これは気持ち良いな、と思ったのだけど案の定その感じは長くは続かなかった。そのうちまた、あの感覚を味わえるだろうか。


2009年12月20日(Sun) なんだか涼しいよ

[Ruby][RubyAdventJP] Rubyでデータを解析する

この記事はRuby Advent Calendar jp: 2009の12月20日分です。 この日誌が不調のためtumblrに掲載していましたが、復活したのでこちらにも転載します。 昨日はAaronさんによる 初めてのC extensionの書き方でした。 明日はtakano32さんによるRubyを256倍わかりやすくデバッグする方法です。


ホノルルマラソン走ってきました。 今年は脈拍計を導入したりして 自分の体がどこでへたったか記録したりして楽しんでました。 今年は、全員分のデータが公開されているのをみつけたので、 皆さんのタイムも見てみることにしました。

全員分のデータは下記のような形式で公開されています。 Chip Timeというのはスタートを過ぎてからゴールまでの正味の時間です。 号砲が鳴ってからゴールまでのGun Timeと違って、 号砲が鳴ってから走者がスタートまで辿りつくまでの時間が省かれています。 たくさんの走者が走る大会だとこの時間がバカにならないみたいですね。

----- -------- ----- --------- ----- --------------------------...
      Chip     Pace  Gun
Place Time     /mi   Time        #   Name
----- -------- ----- --------- ----- --------------------------...
    1 02:12:14  5:03 02:12:14      1 Ivuti, Patrick
    2 02:13:10  5:05 02:13:10      3 Chelimo Kipkorir, Nicholas
    :

今日はこれをつかって、完走した人の所要時間がどう分布してるか見てみます。

まずデータを読み込み、 ある所要時間の範囲に入る走者の数を数えて、テキストファイルとして出力します。

データを読むためにはhonolulu.rbというライブラリを作りました。 ハイフンの並び具合から各カラムの位置と幅を想像して(get_column_positions)、 カラムの名前を得て(get_column_names)、 それぞれの走者のデータをHashとして読みこんでいきます(get_datum)。 「%H:%M:%S」という形式の文字列から秒数を得たり、 逆の操作をすることも多いので、これらのメソッドもついでに定義しておきます。

distribution.rbというスクリプトで、 読んだデータを集計します。

$ ruby distribution.rb honolulu.htm > distribution2009.dat

下記のようなファイルが得られました。

#middle-chip-time(sec) count(/sec)
02:10:00.0 0.00416666666666667
02:30:00.0 0.0116666666666667
02:50:00.0 0.0466666666666667
03:10:00.0 0.1475
  :

集計したデータの表示は、…Rubyでやれるとかっこいいのですが お手軽にgnuplotでやってしまいましょう。

じゃん。こういうスクリプトでプロットができました→JALホノルルマラソン2009の完走者の所要時間分布

ちなみに単純に計算した所要時間の平均は5時間54分57秒、標準偏差は1時間29分49秒でした。 実際の分布は、正規分布よりも、 所要時間の長い側に分布が広いように見えますね。


こういうわけでRubtは日々のデータ解析にも使われてます。 こういう用途に使うときは実際のデータを食べさせながらコードを書いていって、 欲しい結果が得られたときにコード書きも終わってしまいます。 自動テストの無いレガシーコードがどんどーんできちゃうのが問題ですね。 テストがあっても、 honolulu.rb の80-82行目のような、ハイフンの並び具合と一部のデータの不整合をみつけるのは難しいのですが。 それはそれとして、今年もマラソンを楽しませていただきました。 地元の皆さん、同僚と家族のみんな、ありがとう。 皆さんもよい休日をお過しください :)


2013年12月20日(Fri) 朝は晴れていたのだが

B木の勉強をしたい

B木の勉強と一緒に言語の勉強もしたいことにした。

今度こそプログラミングの基礎を身につけたくて、 「定本 Cプログラマのためのアルゴリズムとデータ構造」 を読み始めた。 B木の実装のリストまで辿りついたのだけれどぜんぜん頭に入ってこない。 どうしようかな。 B木のべんきょーやっぱりC++でやってみっかねえ?それともGoかねえ?体力欲しいやねえ と悩んでいたら、@finalfusionさんから

両方やって比較記事を書く

と素晴しい提案が。 ひとつぶで3度おいしい!というわけでやってみることにしますよ。

3倍大変なのにはまだ気づいていない。

GoとC++を試してみる環境の整備

Pentium Mのマシンを使いますよ、というわけで ミラーサイトからdebian-7.3.0-i386-netinst.isoをいただいて来ました。 そこからか。

とりあえず追加でインストールしたのは下記。 build-essential firmware.zip fonts-inconsolata git gnome-terminal ibus-skk mercurial vim-nox xfce4

このマシンはCPUもディスクも遅いので、 firefoxでgtk-gnashをdisableしました。 普通のページを閲覧してるだけでCPU持ってかれることがある。 あと、下記の作業中にふと気づいてスワップも使わないことにしました。 /etc/fstabswapの行をコメントストして、とりあえず、

さて、B木のテストコードが走るところまで進めます。

[cpp] C++によるB木の実装例

cpp-btreeというのを見つけた。

してREADMEを読みつつ。 cmake、googletest、gflagsが必要とのこと。

cmakeはapt-get installできました。

googletestは、libgtest-devとしてapt-get installできました。Debianすごい。 The Big Blob » Getting started with Google Test (GTest) on Ubuntu によると、ビルドしておく必要があるようです。

gflagsはさすがに無いみたい。 https://code.google.com/p/gflagsから辿って、 schuhschuh/gflags をいただいてきておきます。

Errorとかいう文字がどっばーと表示されて絶望したけど最後には、 All 5 tests passedだって。

/usr/local以下に、例えば、 /usr/local/include/gflags/gflags.hなどが インストールできたようです。

さて。B木に戻る。

swapいっぱいになって大変に遅い。速いマシンが欲しいなあ。 なんとかバイナリができたようです。

なんかいろんな型の値でいろんな順番に挿入してメモリ効率とかかかった時間とか 測ってくれてるみたい。

これもだねー。

何も表示しないがCPUを85%くらい、メモリを13%くらい使っている。 メモ書きやめたらCPUは98%、メモリは20%に成長。うーん? と思ったら標準出力のバッファがやっとフラッシュされはじめた。

BM_btree_2048_multimap_string_fwditer 299 3463394BM_btree_256_multimap_string_fwditer 303 3448275BM_stl_multimap_string_fwditer 512 2072747BM_btree_2048_multimap_string_fifo 3173 319424BM_btree_256_multimap_string_fifo 1346 742731BM_stl_multimap_string_fifo 1312 850435BM_btree_2048_multimap_string_mixedaddrem 94078 10849BM_btree_256_multimap_string_mixedaddrem 21541 46634BM_stl_multimap_string_mixedaddrem 11150 98951BM_btree_2048_multimap_string_queueaddrem 87954 13398BM_btree_256_multimap_string_queueaddrem 19815 50847BM_stl_multimap_string_queueaddrem 9136 110738BM_btree_2048_multimap_string_delete 47878 21407BM_btree_256_multimap_string_delete 10585 94642BM_stl_multimap_string_delete 6461 155363BM_btree_2048_multimap_string_fulllookup 3771 272180BM_btree_256_multimap_string_fulllookup 3905 271137BM_stl_multimap_string_fulllookup 4675 221181BM_btree_2048_multimap_string_lookup 4024 272692BM_btree_256_multimap_string_lookup 4142 243902BM_stl_multimap_string_lookup 4054 269541BM_btree_2048_multimap_string_ins

なんか改行がうまくいっていない気がする(上記はブラウザにまかせて改行してもらってますが端末では改行がいっさいありませんでした)けれど、 真夜中すぎにたぶん無事に終了していた。

[golang] GolangによるB木の実装例

btreeというものを見つけた。 お初mercurialだ!

どーすんだこれ。mainないけど実行ファイルできるのかな?うろうろうろうろ…。 Go for Rubyists - SitePointによると、

For me, Go was the missing link between C++ and Ruby

お。 やっぱりC++とGo一度にべんきょすべきかw と思ったけれど、C++知りませんでした。 golangはじめました - アリ (rebuild.fm仲間だ!) によると、go testというのが使えそう。 golang golang-go golang-srcをapt-get installしておいて、

お。何か進んだ

実行ファイルが作られるというわけじゃないようですね。 もうちょっとGo自体の勉強が必要なようですね。

さて。これでとりあえずC++版とGo版の既存のB木は動いたということで、 Goのツールについても勉強しながら、 これからこれらのコードを眺めながら自分で書いていきたいと思います。 テストは共通のを使えるといいな。

本日のツッコミ(全1件) [ツッコミを入れる]

> vbk [gflagsはdebianにありますよ。apt-get install libgflags-dev で入ります。 h..]


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>