2009年03月30日
PerlでCSV
PerlでCSVを読む必要が出てきて、解決したのでそれのメモ。
Text::CSV_XSの扱い方と、Root権限が無い環境での一般ユーザ環境へのCPANを使用したライブラリのインスコ。
まずText::CSV_XS
perl - CSVはText::CSV(_XS)?で
Text::CSV_XSがインスコされていれば良いんだけど、無い場合はインスコする。
Root権限が無いので一般ユーザ環境へインスコする。
$perl -MCPAN -e shell
install Text::CSV_XS
してソースコードにインスコしたライブラリを参照するよう設定を記述する。
use lib '/home/USER/perl/lib/perl5';
use lib '/home/USER/perl/lib/perl5/site_perl';
use Text::CSV_XS;
みたいな感じで。
日本語を扱う場合は以下のように{binary=>1}が必要とのこと。
my $csv = Text::CSV_XS->new({binary=>1});
CPANのライブラリはPerlのバージョン毎にインストールされるようなので、自分でPerlをインストールし、そのバージョンのライブラリを入れたい場合は以下のようにする。
$/home/USER/bin/perl -MCPAN -e shell
みたいな感じで。
2009年03月28日
賀茂御祖神社
最近妙に疲れが取れなくしんどいので、癒されに神社に行ってきた。
賀茂御祖神社、通称下鴨神社。賀茂御祖神社なんて呼んでる人見たこと無いけど。

やっぱ神社は良いねぇ。お寺と違い、心が静まる気がする。
お寺が俗世界に密接に関係しているのに対し、神社が自然崇拝、俗世界とは違う階層に向けての信仰を具現化したものだからだろうか。鳥居をくぐればそこは異世界。

良い感じに朽ちた木の屋根。

下鴨神社には散策コースがあるのだけれど、これがまた最高だった。
参道からちょっと入るだけなのに、人の気配がまったく届かず聞こえるのは水の流れる音と鳥の鳴き声だけ。観光客も入ってこなくてまったく人がいなかった。しばらくぼーっと突っ立っているだけで心が落ち着く。

桜が咲いているのに葉が紅い。なんだか変わった桜。

帰りに加茂みたらし茶屋でみたらし団子を食べて帰る。
みたらし団子発祥の地だ。
甘すぎず、香ばしいみたらし団子は最高っ。

みたらし祭りの頃にまた来よう。
1日1神社。京都人にしかできない贅沢な神社の楽しみ方だなぁ。
2009年03月27日
「間近に落ちた方が国民に緊張感」=北朝鮮ミサイルで−石原都知事
「間近に落ちた方が国民に緊張感」=北朝鮮ミサイルで−石原都知事
石原「今のお前に足りないものがある。」
石原「危機感だ。」
石原「お前もしかして、日本は二度と被爆しないとでも思ってるんじゃないか?」
ネタ古いっすか。さーせんw
2009年03月16日
SlimBlade Trackball来た!
1月にkensingtonから新作トラックボールが発表された事を書いた。
そして当然のように即予約したわけだが、ようやく届いた。
![]()
SlimBlade Trackball本体が102ドル、送料に35ドルかかった。
運送会社はいつものようにUPS。
海外通販もだいぶ慣れてきた。
印象はまず薄く小さいこと!
以前はExpert Mouse 7を使っていたんだけど、これにパームレストを付けていたため、かなり大きかった。SlimBlade Trackballはかなり薄く、パームレストを付ける必要が無いため、結果コンパクトに。
薄さを追求するため、なんとカップの底に穴が空いている。
![]()
光学センサー1個でXYを検知しようとすると、必ずカップの底にセンサーが必要になるわけだけど、ひねり動作を検知するため、光学センサーを横に2個搭載することで可能になった離れ業だ。穴が空いているため、カップの底にゴミがたまらないという効果も期待できる。見えている支持球は当然ルビーだ。
ちなみにセンサー1個の場合は底にセンサーを付けないと、サンワサプライ Streamのような糞トラックボールができあがる。
センサーが横についているため、まっすぐボールを転がしてもよろよろとよろけてしまい、まっすぐに進んでくれない恐ろしい糞トラックボールだ。
で、SlimBlade Trackballの一番のポイントである、ひねり動作でのスクロール。
思ったよりは良い感じに動いている。ひねると言うより、左手薬指でボールの横をなでると良い感じにスクロールしてくれる。
ひねり動作をすると、SlimBlade Trackball本体からキチキチキチと音が聞こえ、マウスホイールのスクロールのクリック感を演出してくれる。
また、ひねり動作をするとXY方向の移動がロックされ、スクロール中にマウスカーソルがよろけることを防いでくれる。
Expert Mouse 7のスクロールリングは強くまわすことで、慣性でスクロールしてくれるのが便利だったが、SlimBlade Trackballではそれはできない。
ソースコードのスクロールはちょっと不便になってしまったが、ブラウザ程度なら十分にスクロール可能だ。
コーディング中はキーボードのみ使えと言うことかもしれない。
一応キーボードのみで操作できるようキーバインドを変更したのだけれど、ついついトラックボールに手を伸ばしてしまう。
そして次にダメな点を。
まずボタンが4つあるのにそのうちの二つがMedia ModeとView Modeと言う全く使い道のないモードのために占有されていること。つまり2ボタンマウスと同じ機能しかない。しかも専用ドライバではカスタマイズ不可能。Expert Mouseではカスタマイズできていたのに退化してしまうとは何事だ。
ちなみにすでにカスタマイズできるようにした改造版制御アプリが2chで公開されている。
SlimBlade Trackballユーザには必須だろう。
つかそれぐらいカスタマイズできるようにしろよKensington・・・。
また、スクロール量が少ないと感じたらWindowsのコントロールパネルのマウスの設定からスクロール量を10ぐらいに上げると快適になる。
まだ使い始めて少ししかたってないが、これはなかなか期待できる一品の予感。
2009年03月08日
神社最強伝説
ねんがんのAi AF Nikkor 50mm F1.4Dをてにいれたぞ!
と言ってもレンズにしては安いわけだが。
このレンズは50mmの単焦点レンズで、特徴はF値1.4と明るいレンズと言うことだ。
何が嬉しいかというと、背景を思いっきりぼかすことができるのだ。そう、今や世界で通じるボケ(Bokeh)である。
と言うことで早速神社に行ってきたよ!!
早速ぼかすよ!!・・・って、ぼかしすぎた・・・orz
背景に何写ってるのかわかんね・・・・。背景は舞殿の舞台である。
![]()
良い感じのボケだ。
舞殿の手すりの装飾が綺麗。
上から菊紋と八坂神社の神紋が飾られていた。菊紋も八坂神社の神紋の一つなのかな?
![]()
緑がまぶしい苔。会心の一枚!
縮小してJPEG圧縮するとわからなくなってしまったけど、苔のつぶつぶ感、泡と水面の透明感がとても綺麗。
被写界深度はもう少し深くても良かったかもしれない。
![]()
祇園さんもほどほどに、清水寺に向かう、
途中大谷祖廟とやらを見つけた。
松ってこの細い葉でよく光合成できるなと思う。針状の葉は効率良いようには思えないが。
![]()
清水寺に着いたが、これと言って面白いものはなかった。
とてもとてもありふれた、何の面白みも無い写真。
![]()
50mm、F1.4のレンズのすばらしさを思い知った一日だった。
でも単焦点のレンズだから、ズームはできず。
この絵を撮りたい!と思ってもその位置からは撮れなかったりするのでちょっと難しい。
それはそれで面白いけどね。
帰り道、友達に会う。
「最近写真始めて神社行ってきてん」と話すと「おっさんくさい趣味始めたな」と言われた。
2009年03月05日
gdbメモ segmentation fault編
Linux上でC++でプログラムを作成すると、segmentation faultで落ちてしまうことがある。
Javaと違い、スタックトレースをデフォルトで表示しないため、どこで落ちたのかわかりにくい。
で、そんなときはgdbの出番というわけだ。
gdbは取っつきにくく、デバッグするたびにgdbに関する情報を検索するのでは効率が悪いのでメモに残しておく。
まず実行ファイルにデバッグ情報を付与するためコンパイルオプションを設定。
最適化はO2ぐらいにしとくのが良いらしい。
-O2 -ggdb
そしてgdbから実行。
$ gdb ./exefile
デバッグ対象ファイルの実行はrコマンドで実行。
引数を与える場合は以下のような感じで。
(gdb) r arg1 arg2
こけたらソースコードの位置を教えてくれる。
いちいちgdbから実行するのはめんどくさいよ!と言う人はcoreファイルを使う。
segmentation fault時にcoreを吐かない場合はcoreファイルサイズの最大値に達している可能性がある。
まずcoreファイルサイズの設定。以下みたいな感じでサイズ無制限に。
$ limit coredumpsize unlimited
coreが無事に吐かれたらそれをgdbに食わせる。
$ gdb ./exefile core.1234
するとどのファイルの何行目で落ちたかが表示される。
スタックトレースを表示させる場合はwhereコマンドを使用する。
(gdb) where
するとスタックトレースが表示される。
行番号とか表示されない場合はデバッグ情報が実行ファイルに存在しない可能性がある。
gdbマニュアル日本語版
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-5.0/gdb-ja_toc.html
それのPDF版
http://www.asahi-net.or.jp/~wg5k-ickw/pdf/gdb/gdb-5.0-pdf-020110.tar.gz
PDF版のマニュアル300ページもありやがるぜ・・・。