Rubyを用いてバイナリファイルを読み込む/数値変換

Rubyにバイナリファイルを読み込ませて数値(テキスト)変換する方法はないものかと調べていた。
結論としてはどうやらバイト単位で読み込んで、unpackメソッドを使えば良いとのこと。

以下、サンプル

io = File.open("hoge.dat", "rb")  # バイナリファイルの読み込み

sampn = io.read(400)               # 400バイト読み込む
m = sampn.unpack("i*")             # unpackメソッドで数値変換

p m

Rubyを用いた数値計算・描画(インストール編)

RubyFFTなどの数値計算や描画を行うために色々と環境設定やインストールを行った。
インストールしたしかし各種ライブラリ・ラッパーのインストールがなかなか個人的に骨の折れる作業だっため、後から困らないようにメモ程度に書き残しておく。インストール環境はUbuntu10.04、Ruby 1.8.7。gemでもインストールできないことはないみたいだが、俺の場合は各種ライブラリのインストールに手こずりまくったので結局使わなかった(gemは普段1.3.5を使用)

ライブラリーをインストールする前に

まずはruby-devをインストールする。これがないとNArrayのインストール時にコケる。(mkmfがないとか言われる)

$ sudo apt-get install ruby1.8-dev

NArray

大規模多次元数値配列を高速に処理するライブラリ。まずはこれがないと始まらないので真っ先にインストールする。ソースはここで公開されているのでダウンロード。俺は0.5.9p9.tar.gzをダウンロードした。そして解凍、コンパイル、インストール

$ tar xvzf narray-0.5.9p9.tar.gz
$ cd narray-*
$ ruby extconf.rb
$ make
$ sudo make install
$ cd ..

NArrayがインストールできたら次は拡張ライブラリーであるlibnarrayをインストールする。

$ sudo apt-get install libnarray-ruby1.8

次にNArrayがインストールされたか確認

$ irb

irbを起動し(irbを入れてない場合は事前にインストールする)

irb(main):001:0> require "narray"
=> true

このようにtrueが返されたらインストール成功。

Ruby/GSL

次にRuby数値計算ラッパーであるRuby/GSLをインストールする。その下準備として数値計算ライブラリーであるGSLと付属の描画ライブラリであるplotutilsをインストールする。

plotutils

まずはplotutilsからインストール。ソースはftp://ftp.gnu.org/gnu/plotutils/。最新のバージョンは2.6だが、Ruby1.8にこれを入れるとインストール時に不具合が起こるので、バージョンは2.4.1を入れたほうが無難かもしれない。ちなみに2.4.1を入れる時点でflexがないと

configure: error: cannot find output from lex; giving up

というエラーが出てconfigureに叩かれるので、あらかじめ入れておく。

$ sudo apt-get install flex
$ wget ftp://ftp.gnu.org/gnu/plotutils/plotutils-2.4.1.tar.gz
$ tar xvzf plotutils-2.4.1.tar.gz
$ cd plotutils-*
$ ./configure
$ make
$ sudo make install
$ cd ..
GSL

次はGSL。apt-getの場合は

$ sudo apt-get install gsl-bin

上手くいかない場合はNArrayと同じくソースからコンパイルする。というかソースからコンパイルしたほうが確実。今回はバージョン1.9をインストールしたが、不具合が出たら1.7をインストールする。

$ wget http://core.ring.gr.jp/pub/GNU/gsl/gsl-1.9.tar.gz
$ tar xvzf gsl-1.9.tar.gz
$ cd gsl-*
$ ./configure
$ make
$ sudo make install
$ cd ..
Ruby/GSL

いよいよRuby/GSLをインストールする。インストールしたバージョンは1.14.4

$ wget http://rubyforge.org/frs/download.php/72647/rb-gsl-1.14.4.tar.gz
$ tar xvzf rb-gsl-1.14.4.tar.gz
$ cd rb-gsl-*
$ ruby setup.rb config
$ ruby setup.rb setup
$ sudo ruby setup.rb install
$ cd ..

以上でインストールができたはず。以下、確認

$ irb
irb(main):001:0> require "gsl"
=> true

インストール完了。

Ruby/DCL

次は描画ラッパーであるDCLをインストールする。

DCL

例のごとく本家である描画ライブラリーのDCLをまずインストールする。しかしながらGTK+とNArrayMissが入っていないとDCLのインストール時にエラー出るので事前にいれておく。
GTK+のインストールは

$ sudo apt-get install libgtk2.0-dev

NArrayMissのインストールは

$ wget http://ruby.gfd-dennou.org/products/narray_miss/narray_miss-1.2.1.tar.gz
$ tar xvzf narray_miss-1.2.1.tar.gz
$ cd narray_miss-*
$ ruby setup.rb config
$ sudo
$ ruby setup.rb install
$ cd ..

GTK+が入ったらDCLのインストールを開始

$ wget http://www.gfd-dennou.org/arch/dcl/dcl-5.3.4.2-C.tar.gz
$ tar xvzf dcl-5.3.4.2-C.tar.gz
$ cd dcl-*-C
$ ./configure
$ make
$ sudo make install
$ cd ..
Ruby/DCL

DCLが入ったらラッパーであるRuby/DCLのインストール。

$ wget http://ruby.gfd-dennou.org/products/ruby-dcl/ruby-dcl-1.6.2.tar.gz
$ cd ruby-dcl-*
$ cd lib

ruby-dcl-*の中にlibというディレクトリがある。そこを開くとdcl.rbというファイルがあるのでエディタで開き、冒頭に

require "gtk2"

を追加し保存。その後ruby-dcl-*ディレクトリに戻る。そして

$ ./configure
$ ruby extconf.rb
$ make
$ sudo make install
$ cd ..

これでエラーが出なければインストール完了。
以下、確認。

$ irb
irb(main):001:0> require "numru/dcl"
=> true

追記

Ruby/DCLのインストールに関してはrequire "gtk2"と書かなくてもインストールできる場合もあるっぽい。なぜだかわからんが適材適所で。

追記2

ruby1.8.7の場合、GSLが1.7、Ruby/GSLが1.10.3でないとエラーが出る模様。俺の環境の問題かもしれないが、最新バージョンを入れるとRuby/GSLのインストールの際にmatrix_complex.cでエラーが出る・・・。ruby1.9だったらいけるのかな

参考サイト

Rubyはじめた

院での研究で必要になりそうということでRubyの勉強を始めた。というわけで購入。

たのしいRuby 第3版

たのしいRuby 第3版

そのうちFORTRANとかもやるかもね。

2010年私的ベストアルバム10

去年は2000年代私的ベストアルバム10という誰得ランキングを書いたが、今年も似たテイストな感じで2010年代最初の年、2010年の私的ベストアルバム10な誰得ランキングを書き連ねていこうと思う。

第10位 The Drums
The Drums
[Moshi Moshi]

The Drums

The Drums

ストパンク・リバイバル系のジャンルに位置するであろうアルバム。でも個人的にこれは2000年代のポストパンク・リバイバルではなく、かと言って全体が本家80年代のポストパンクに乗っかってるという印象もない。2010年代の新しいポストパンクと言いましょうか、1曲目の空間系サウンドに包まれる感じの「Best Friends」からそんな気がした。3曲目の「Let's Go Surfring」ではそれが顕著。けど2曲目の「Me and the Moon」などはしっかりポストパンクしてて個人的に満足。9曲目の「We Tried」とかマジ泣ける。最初はしっくり来なかったけどじわじわと体に伝わる秀作。しかし近年のブルックリン出身のバンドはいいものばっかですね。
The Drums - Let's Go Surfing



第9位 Caribou
Swim
[Merge]

Swim

Swim

夏の真夜中に住宅街を突っ走りながら聴きたい感じ。ここ数年のCaribouは個人的にアレな印象だったのであんまり今作も期待してなかったけどこれは良かったです。エレクトロニカとインディーダンスロックを突き詰めた、これぞダンスミュージックという一作。全く知らなくてもクラブで2曲目の「Sun」や4曲目の「Found Out」が流れれば多くの人たちが大フィーバーできそうな感じです。そんなわけで同じフォークトロニカ系で同年に発売されたFour Tetのアルバムも良かったけど、僅差でこっちでしょうか。とりあえず8曲目の「Lalibela」を聞きながら疾走しよう。
Caribou - Lalibela



第8位 My Chemical Romance
Danger Days: The True Lives of the Fabulous Killjoys
[Reprise]

Danger Days: the True Lives of

Danger Days: the True Lives of

「イカんのか?」「イカんでしょ」。それはさておき入れるか入れまいか迷ったけど、やっぱ個人的になんだかんだでマイケミは外せません。プロデューサーは前作と同じくRob Cavalloなのでどんな感じになるんだろうと思いながら、先行シングルである「Na Na Na」を聴いて「えっ」とかは確かに思いました。でも全体通して聴くと作りこまれたメロディも聴かせたりと幅広さを実感させられます。「SIGN」や「The Only Hope for Me Is You」はマイケミのソングライティングが際立ってます。ただ「Party Position」冒頭の日本語はいらなかったのではないか・・・。
My Chemical Romance - Na Na Na (Na Na Na Na Na Na Na Na Na)



第7位 Arcade Fire
The Suburbs
[Merge]

The Suburbs

The Suburbs

タイトル通り聴くと「郊外」といった感じの景色が目に浮かぶアルバム。1stの「Funeral」や2ndの「Neon Bible」ほどの衝撃度や重厚さはないけれど、16曲もあり力を入れずにかつがっつり聴ける感じです。サーフかつカントリー調のイントロからダイナミックな展開に持っていく1曲目の「The Suburbs」や、シューゲイズムを全面に押し出した疾走ナンバーの5曲目、まさにレジーナのためのレジーナアコースティック曲である7曲目「Half Light I」などなど盛りだくさん。この人たちが相変わらず頭一つ抜けてるバンドだと思わせられるのは、曲の冒頭からこちらを掴んで離さないことができるところだと思います。
Arcade Fire - Empty Room



第6位 Flying Lotus
Cosmogramma
[Warp Records]

Cosmogramma (WARPCD195)

Cosmogramma (WARPCD195)

2008年に発売された「Los Angeles」がなかなかに良かったので今回も購入。結論から言うと今作もさすがの一言です。SF的な展開で45分があっという間に感じられました。ジャンルから言えばエレクトロニカ・ダンスとかその周辺だと思うけれど、ロータスが「自分はヒップホップに多大な影響を受けた」と言ってる通りブレイクビーツサウンドがあったり、そうかと思えばエレクトロニックジャズをやってたりと本当に色々あります。個人的に終盤にかけてエレクトロニカ・ビートやジャジーなサウンドが押し寄せる展開がツボです。買いましょう、マジで。個人的には「Galaxy in Janaki」が好きです。タイトル通り銀河。余談だけど1997年のプッシャーっぽかった。
Flying Lotus - Galaxy in Janaki



第5位 Local Natives
Gorilla Manor
[Infectious]

Gorilla Manor

Gorilla Manor

ロサンゼルス周辺を中心に活動するバンド、Local Nativeのデビューアルバムです。全体的に満ちたリヴァーヴ感、ささやくような優しいボーカル、3人の特徴あるコーラス、力強く鳴り響くパーカッションが印象的。このアルバムと出会ったのは確かレコード屋の「新世代Fleet Foxes」なるポップに引かれたのがきっかけです。最初はジャケを見て「ウッ」と思ったけど、1曲目の「Wild Eyes」を聴いて購入を決心。確かにFleet Foxesっぽいけど、オリジナリティもしっかり持ってるバンドだなと思いました。今ではFleet Foxesよりも断然こちらのほうが好きです。そういえばアジカンの後藤もTwitterで絶賛してましたね。
Local Natives - Wide Eyes



第4位 Vampire Weekend
Contra
[XL]

Contra (Ocrd)

Contra (Ocrd)

Vampire Weekendはデビューアルバムで高評価を得たことだし2ndではどういう風にしてくるのかなと気になってましたが、個人的にはデビューアルバムを余裕で超えたのではないのかと思います。1曲目の「Horchata」からバラエティに富んだ曲構成を見せつけられる感じ。3曲目の「Holiday」とか本当聴いてて楽しい。5曲目の「Taxi Cab」のようなアコースティックかつアンビエイトな感じのナンバーも好印象です。そしてラストの「I Think UR a Contra」でハイライトを迎えるという展開が大変いい。天然かつ作りこまれた10曲35分の彩りあふれる世界でした。
Vampire Weekend - Holiday



第3位 Sufjan Stevens
The Age of Adz
[Asthmatic Kitty]

Age Of Adz

Age Of Adz

スフィアン・スティーブンのアルバムを聴くのは実は2005年に発表された「Illinoise」以来だったりします。だから「Illinoise」と比較して聴いた感じでしょうか。感想としては「すごい変わったなあ」といった印象。「Illinoise」で目立っていたフォークロック調の曲は抑えられ、エレクトロニカ・サウンドを取り入れたナンバーが多いですね。とはいえ完全に様変わりというわけではなく3曲目の「Age of Adz」のようなエレクトロニカ+従来のフォーク+オーケストラといったキチガイ度満点の曲ありと中期スフィアンファンも安心の展開です。バラエティに満ちた快作だと思います。
Sufjan Stevens - Age of Adz



第2位 Wild Nothing
Gemini
[Captured Tracks]

Gemini

Gemini

全体的に言うなればネオアコ、シンセポップに分類されるのだろうけど、このアルバムの前ではそんなジャンル分けさえ野暮に思えてしまいます。全編通して漂うドリームポップサウンドがたまりません。それは1曲目の「Live In Dreams」からタイトルにまで表されている通りです。その雰囲気のままアコースティックシンセ感で満たされる2曲目の「Summer Holiday」へと流れる展開は最高。「Chinatown」のシンセの使い方とかなかなか他のインディー系ミュージシャンにはできないものではないのかと。ちなみにWild Nothingのことはシングルが評価されてる程度のことしか知らず、丁度よくデビューアルバムも発売されるから買おうかなというノリだったのですがこれが大ハマリでした。春の深夜にずっと聴いていたアルバムです。
Wild Nothing - Summer Holiday



第1位 The National
High Violet
[4AD]

High Violet

High Violet

僕としては2010年のハイライト的なアルバムです。今年はこれ聴いてたらいつの間にか2010年が終わってた。壮厳なオープニングナンバーである「Terrible Love」から鳥肌、「Sorrow」ではアコースティックな冒頭から重厚なコーラスを聴かせてくれ、「Little Faith 」はシンセサウンドと従来の彼らが持つフォーキーなテイストが上手く融合してます。シングルカットされた「Bloodbuzz Ohio」の壮大さは言わずもがな。前半が良すぎて後半どんな感じよと思ったのですけど、心地良さを保ったまま最後まで聴けました。とりあえず「Runaway」を聴きながら2010年を終えたいと思う。
The National- Bloodbuzz Ohio



こんな感じで2010年で聴いた、個人的に良かったものをつらつらと書いてきました。別に俺は「No music, No Life」とか言うつもりはないです。音楽なくたって人間生きていけますしね。でも、音楽があれば人生はすごく豊かになることは間違いでしょう。2011年も素晴らしい音楽に出会って、人生が豊かなものになれば良いと思います。良いお年を。

C言語とか

卒研のために最近Cを書く機会が多いので、この際だからちょっと体系的に勉強し直してみようと思った。
使っている本はおなじみのこれ

C実践プログラミング 第3版

C実践プログラミング 第3版

最初のほうは流し読みしつつ、演習でコードを書いてみるといった感じ。
書いてあることは今まで読んできたC関連の本とちょっと言ってることが違っていたりと新鮮。
しかしこちらのほうが効率的なやり方が多く載っているように感じた。
とりあえずはマイペースながらも進めていきたい。

twittering-mode-1.0.0を使ってみた

ふと何となくtwittering-modeを使ってみようと考え、公式サイトへ。EmacsWiki: TwitteringMode-jaを参考にしながら設定を行った。
普段emacsVMware上のUbuntuで使っているので、twittering-mode-1.0.0.tar.gzをダウンロードして展開。自分の場合は~/.emacs.d/elisp/にload-pathを通しているので

(add-to-list 'load-path "~/.emacs.d/elisp/twittering-mode-1.0.0")

と設定。ものすごくシンプルだなーと思い、早速twittering-modeを起動させようとしたところ

Invalid format character: `%h'

というエラーが出て起動せず。
なんだこれ、と思いつつ何が悪いのか調べたところ、公式サイトで配布されているtwittering-mode-1.0.0.tar.gzの中のtwittering-mode.elが最新のものではないと分かりhayamizさんのGitHubレポジトリへ。ここのソース枠右上にあるrawからtwittering-mode.elとして保存。あとはtwittering-mode-1.0.0ディレクトリ内のtwittering-mode.elと入れ換えたら無事起動した。
自分好みの環境でTwitterができるのはやはり良いですね。好感が持てる設計だと思います。

みやわき心太郎氏、逝去(スティーブ・アルビニとSonic Youthに関する続編的なアレ)

漫画家のみやわき心太郎氏がお亡くなりになりました。ご冥福をお祈りしたいと思います。
実を言うと俺はそこまでみやわき心太郎氏の漫画に詳しいというわけではなく、知っているとすればレイプマンぐらいでした。そのレイプマンを知ったきっかけスティーブ・アルビニです。
D

Big Black時代

アルビニ前日の日記に書いたとおり80年代半ばにBig Blackというバンドを結成し活動していました。で、そのBig Blackのアルバム、Songs About Fuckingのジャケに使われていたのがレイプマンです。

Songs About Fucking

Songs About Fucking

このようにアルビニみやわき心太郎レイプマンをかなり愛読していたことがわかりますね。ちなみにこのアルバムにおけるオススメの曲はThe ModelとPavement Sawですね。The Modelはクラフトワークのカバーですがノイズアレンジがイカしてて最高です。Pavement Sawは歌詞の内容がお気に入りの女の子の何気ない仕草を気にしまくる男が、その子に軽くシカトされるというもので個人的なテーマソングにしています。

Rapeman結成

まあ、その後Big Blackはうやむやのうちに解散するわけですが、その後結成するのがRapemanというバンドです。もうみやわき心太郎まんまですね。アルビニ先生どんだけ好きなのかと。そしてRapemanはTwo Nuns and A Pack Muleというアルバムをリリースします。

TWO NUNS AND A PACK MULE (TG36CD)

TWO NUNS AND A PACK MULE (TG36CD)

このアルバムにKim Gordon's Pantiesという曲が収録されています。

キム・ゴードンというのは言わずもがなSonic Youthの紅一点ベーシストでありボーカルのサーストンの妻でもあるあのキムです。日本ではこの曲に関する噂として「RapemanSonic Youthとの対バン時にKim Gordon's Pantiesを演奏し、キレたサーストン・ムーアがアルビニをボコボコにした」というものがあるんですが、個人的にはこれはウソなんじゃないかなーと思います。なぜなら彼らの間にはそんなことで険悪にはならない友情があるから。Sonic YouthRapemanの地元であるシカゴでライブするとき、アルビニは彼らが演奏できる場所を提供したり、あるときはRapemanがツアーをできるようSonic Youth側が手配をしたりということもあったようです。歌詞の内容から察するにアルビニがキムから泥まみれのパンティーをもらったとかそんな感じですしね。
みやわき心太郎氏の逝去をうけて、それにまつわるアルビニSonic Youthの話を無理やりねじ込んだ日記ですが、興味があれば色々聴いてみてください。