kaeruspoon

ようやく落ち着いてきた今日このごろ

89
 日曜日に行った、代々木公園の桜。ぼくの携帯のデジカメだときれいに撮れないけど、実際は気持ちのいい色でした。

 仕事が変わったりして落ち着かない日々だったけど、二日間が過ぎたところでようやく落ち着いてきました。だいたい担当する箇所のソースコードも理解できてきたし。ひさしぶりのC言語であります。対象のソースの関数がとても大きくて、最大のものでは2000ステップ以上もあったりしてびっくりしました。作った人に聞いたら、気づいたときには大きくなっていたそうな。ぼくはもうリファクタリングしたくて仕方ないのだけど、関数が増えるといろいろな仕様書を作ったり書き直したりしなくちゃいけないし、今うまく動いているものに手を加えることを納得してもらえそうもないです。
 こういうのを経験すると、サンデープログラマのなんと身軽なことか、と実感します。改善も思い立ったら五秒でできちゃうし。たぶん、アジャイルな開発をしているところもスマートにやれているのでしょう。

pushdを教えてもらう

 考えてみると、普通にまわりにプログラマがいる環境というのはずいぶんとひさしぶりです。今日は同じ職場のperl使いの人に、pushdというコマンドを教えてもらいました。

[tsukasa@] $ pushd /tmp                                                     
/tmp ~
[tsukasa@] $ pwd                                                         
/tmp
[tsukasa@] $ pushd /var                                                  
/var /tmp ~
[tsukasa@] $ pwd                                                         
/var
[tsukasa@] $ dirs                                                        
/var /tmp ~
[tsukasa@] $ pushd +2                                                    
~ /var /tmp
[tsukasa@] $ pwd                                                            
/home/tsukasa
[tsukasa@] $ pushd devel                                                    
~/devel ~ /var /tmp
[tsukasa@] $ pushd kaeruspoon                                         
~/devel/kaeruspoon ~/devel ~ /var /tmp
[tsukasa@] $ pwd                                           
/home/tsukasa/devel/kaeruspoon
[tsukasa@] $ dirs                                          
~/devel/kaeruspoon ~/devel ~ /var /tmp
[tsukasa@] $ pushd -2                                      
~ /var /tmp ~/devel/kaeruspoon ~/devel
[tsukasa@] $ pwd                                                            
/home/tsukasa
[tsukasa@] $ dirs                                                           
~ /var /tmp ~/devel/kaeruspoon ~/devel
[tsukasa@] $ popd                                                           
/var /tmp ~/devel/kaeruspoon ~/devel
[tsukasa@] $ popd                                                        
/tmp ~/devel/kaeruspoon ~/devel
[tsukasa@] $ popd                                                        
~/devel/kaeruspoon ~/devel

 見ただけで使いかたはわかると思うけど、ようはスタックに、移動したディレクトリの情報がプッシュされていくのです。ちなみにpushdしただけでディレクトリも移動します。popdはもちろんスタックの一番上から取り出されるし、dirsはスタックの一覧表示をします。
 "pushd +2"みたいな使いかたもできて、+だとスタックの上からカウントしたディレクトリへ、-だと下からカウントしたディレクトリへ移動できちゃいます。おー、すげー。

わくわくにこにこうずうずいらいらの日々

フェルマーの最終定理 (新潮文庫)

 「「フェルマーの最終定理 (新潮文庫)」」を買いました。楽しみ。

 プログラマの仕事をしていると、改めてこれが好きなんだなあと毎日楽しくて仕方ありません。しかしやっぱり、長すぎる関数、 関数にするべき繰り返される同じ処理、プロトタイプ宣言がされていない、古いソースがコメントアウトされて大量に残っている、などなどの惨状を目にするとリファクタリングしたくてうずうずするし、そんなソースコードを毎日目にするだけでいらいらしてきます。うおー、 直したいよー。やるなら今しかない気がする。

 まつもとゆきひろさんの日記で紹介されていた「ある「ハッカー」の顛末」という記事。めちゃおもしろい。

選挙の日

 今日は都知事選挙の投票日です。まだ誰に投票するかは決めていません……。

マンガと図解で入門!貿易書類のことが全部わかる本―輸出・輸入に関する全書類の流れと作成のしかた この1冊ですべてOK!

THE L/C―信用状の実務手続き

 これらの本を読みました。

 ずっと背中が痛い日々が続いています。肩こりがひどくなって、首から腰にかけての背中一帯が素敵なことになっているのです。アンメルツヨコヨコも内服薬も効きません。ユルさんに揉んでもらうときだけが至福のときなのです。このひどい背中の痛み、どうしたらとれるのでしょうか。

Rails勉強会とか言語とか肩こりとか

 Rails勉強会@東京第17回に参加しようかどうしようか迷っています。さて。

 C言語をひさしぶりに使いはじめて感じたのだけど、以前より全然Cを理解できている自分に驚いた。C言語しか知らなかったころに比べると雲泥の差です。あのころと何が違うのかといえば、PHPやRubyやJavaやJavascriptを知っているというところ。プログラマはいろいろな言語を知っているかどうかで、その力が全然違ってくるのだと思います。今度はHaskellでも勉強してみようかな。
 そういえば、「作家になりたいのなら英語を勉強するべきだ」なんていう言葉も聞いたことがあります。英語を理解することで、日本語の文章を書く力があがるということなのでしょう。

 ユルさんのアドバイスにしたがって、枕をちょっとアレンジしてみたら、肩こりがすっかりよくなりました。背中の痛みもどこへやら。枕が悪かったんだ。すばらしい。

数学の楽しさ

 「「フェルマーの最終定理 (新潮文庫)」」を読んだけど、数学のお話の本で泣いたのは初めてでした。ワイルズが解へのアプローチをひらめいた瞬間の感動がよく伝わってくるすばらしい本です。おもしろかった。

 Rails勉強会への参加は今月は見送ることにしました。最近、Rubyにもあまり触っていないしね。仕事も落ち着いてきたので、そろそろkaeruspoonのリファクタリングの続きでもしましょう。ていうか、そろそろkaeruspoon以外のものも作ろうかと思います。

「no image」と表示するimageデータが存在する

 ユルさんに、Amazon用のイメージなし商品用イメージを作ってもらいました。さらってこんなのを作っちゃうのだからすごい。さっそくkaeruspoonで使うことにしました。

 ユルさんから聞いたのですが、寝言で「アフロ軍曹」と何度も口走っていたそうです。ユルさんが、じゃなくてぼくがですよ。アフロ軍曹を知らないかたはこちらを見てみてください。

アフロ軍曹
  • アフロ軍曹
  • 出版社/メーカー: ビクターエンタテインメント
  • メディア: CD
  • 発売日: 2004-05-08

 すばらしい。

Ruby on Rails入門―優しいRailsの育て方

 いまさらながら読んでいます。

ORACLEを使ってみる

 今の仕事ではDBにORACLEを使っているのだけど、いきなりこれでつまづいた。

SELECT
  col1
, col2
FROM
  table1
LIMIT
  10
;

 MySQLでは何も考えずに使っていたlimit句がORACLEでは使えなかった……。レコード数を制限するにはwhere句でrownumを使うのです。

SELECT
  col1
, col2
FROM
  table1
WHERE
  rownum <= 10
;

 ORACLEにはちょろちょろと方言がありそうです(MySQLの方が方言?)。

Software RAID1 を centOS で正しく使う

 centOSではインストール時にSoftwareRAIDを構築できます。以前、kaeruspoonでも使っていて、これでハードディスクが壊れても大丈夫だと思っていました。この前、停電のときに片方のHDDのMBRが飛んだときも、もうひとつのHDDを使って起動すればいいやと考えたのですが、それができませんでした。
 なぜって、インストール時のSoftwareRAID構築では、/dev/md0にブートローダをインストールする設定にしていたとしても、実際には/dev/hdaのMBRだけにGRUBがインストールされるからです。だから、/dev/hdaが死んでしまうと/dev/hdbは起動できなくなってしまいます。つまり、あまりRAIDの意味がないという恐ろしい事態に……(参考)。
 というわけで、この前の復帰作業のときにはメンドくさくてRAIDを組まなかったんだけど、今朝、こちらのサイトを参考にしてRAID構築をやってみました。スムーズに完了して、GRUBを/dev/hdbのMBRにもインストール。これで一安心かな。

追記
debianでも同様でした。
「software RAID1 を debianでちゃんと使う」

朝の散歩、そしてRubyKaigiのチケットゲット

92
I got up at about six and went for a stroll. With Yuru. The place where we live is the heart of a mountain whose picture you can look at. Various birds of a lot of kinds was chirping and I was feeling good at the fresh air. It was interesting. To get up early in holiday is good.

 ひさしぶりに写真をアップしました。こちらこちら

 日本Ruby会議2007のチケットが取れました! 去年の人気ぶりを知っていたので取れるとは思ってなかったよ。すげー楽しみ。

RAIDの監視設定

 RAIDを組んでもハードディスクが故障したときにそれに気づかなければ意味がありません。というわけで、こちらのサイトを参考に、mdadmのMonitorモードを使ってみることにしました。メールの送信先には携帯アドレスを設定。ハードディスクが壊れたときは、サーバ君がぼくにメールで助けを求めるわけです。これで一安心ですね。

携帯用のデザイン

 携帯でアクセスしたとき用に、ちょっとデザインを変更しました。メニューは執筆状況とブックマークだけ表示させて、サイドバーのタグクラウドなども表示しないようにしました。アクセス数のほとんどないkaeruspoonで携帯からのアクセスなんて皆無といっていいほど需要はないのですが、単にぼくがやってみたかっただけなのです。後日、もうちょっとデザインをなんとかしましょう。
 ちなみに携帯か否かは、USER_AGENTで判断しています。判断の元材料はこちらのサイトを参考にしました。

なにもとくにない

 今日は特に何も書くことがありません。眠いです。ORACLEでset linesizeを大きくしたときに不思議なレコードが追加で登場するという不具合に出会ったりしました。寒いです。バイクに乗りたいなあ。トロットビークルにさえ最近は乗っていないです。ロックを聞いたりドラえもんを見てバギーちゃん(海底鬼岩城)で泣いた小学生の日を思い出したりしています。スノボー、もう一回くらい行きたかったな。

映画ドラえもん のび太の海底鬼岩城 6ビデオ

翻訳してみる

The Long Good-bye
  • The Long Good-bye
  • 作者/アーティスト: Raymond Chandler
  • 出版社/メーカー: Penguin
  • メディア: ペーパーバック
  • 発売日: 2005-07-07

 今のところ半分くらいは読んでいます。いつも通勤の電車の中で読んでいるのですが、まったくわからないこともなく、なんとかお話が理解できているという状況です。一番のネックは語彙。ぼくは単語を全然覚えていないのです。せめて動詞と助動詞くらいはだいたい把握しておかないとね。
 読んでいるときは、わからない単語は前後の単語やお話の流れから推測したりしてどんどん進めています。でもこれだけじゃ物足りないし単語の勉強にもならないので、翻訳したものをブログに書いていくことにしました。三日坊主になるかもですけど。

RSpecのpluginのinstallがうまくいかないときのオプション指定

 今さらだけどRSpecを使ってみました。
 まずはインストール。

sudo gem install rspec

 "spec -v"でRSpecのバージョンが確認できたらOK。
 さらにRailsで使う場合はpluginが用意されています。

ruby script/plugin install svn://rubyforge.org/var/svn/rspec/tags/REL_0_8_2/vendor/rspec_on_rails/vendor/plugins/rspec

 そして

ruby script/generate rspec

 これでいけるはずだったのですが、

Couldn't find 'rspec' generator

 というメッセージが。おかしいな。pluginのinstallでエクスポート完了のメッセージは確認したのに。ところがRAILS_ROOT/vendor/plugin/を見ても何も入っていません。うーん、どうもpluginのinstallに失敗しているみたい。
 いろいろネットを探しても原因がよくわからずに、もうRSpecをあきらめかけていたときに救いのサイトが見つかりました。Problem Installing Rails Pluginsという記事に、pluginのinstall時に-xオプションをつけてごらんと書いてあります。-xオプションってなんだろう。ヘルプによると、svn:externals属性の指定だと書いてある。さらに調べてみると、作業コピーの上に別のリポジトリからcheckoutしたときに、そいつも一緒に管理できるようになるみたい。という理解でいいのかな? とりあえずやってみよう。

ruby script/plugin install -x svn://rubyforge.org/var/svn/rspec/tags/REL_0_8_2//vendor/rspec_on_rails/vendor/plugins/rspec

 お、今度はたくさんファイルがcheckoutされたぞ。

ruby script/generate rspec

 の結果も

      create  spec
      create  spec/spec_helper.rb
      create  spec/spec.opts
      create  script/rails_spec_server

となりました。よかったよかった。

 RSpecを使って初めてBDDにチャレンジしてみました。ちょうど新しいアプリを作ろうとしていたのでタイミングがよかったです。TDDは昔試したことがあったのだけど、結局のところ何をテストに書いていいのかがよくわからなくなってしまって投げ出していました。必要のないところのテストを書いていたりとか、コントローラがらみの部分をうまく書けなかったりなどなどで、イヤになってしまったのです。たぶん、TDDに対する理解が全然なかったのでしょう。
 だけどBDDは楽しい! Red->Green->Refactoringの流れも自然と身についてきて、どんどんRSpecにかけるのが病み付きになってきました。結果がGreenになったときの気持ちよさはいいですね。頭も今までプログラミングしていたときとはちょっと違う視点を持っているような印象があって、リファクタリングのアイデアがおもしろいように湧いてきます。すごいな、これ。
 ちょっとまだ理解できていないのがMock。どうしてこれが必要なのかよくわからない。Railsにはテスト用のDBが用意されているのだから、DBアクセスを仮想化する意味がないように思えるのだけど。

>自分メモ
specはオールグリーン。次は登録解除のモデルまわりの仕様から

ActionMailerとActive_Heart

 初めてActionMailerを使ってみました。これ、すごく簡単です。ところで、一般のメールはいいのですが携帯へのメールが文字化けします。そこでActive_Heartなるものを発見。ActionMailer::Baseからクラスを継承するのではなく、Iso2022jpMailerを使うだけの超簡単な方法でOKです。Iso2022jpMailerはActionMailer::Baseから継承して、日本語化対策をしています。ソースはとても短いです。でもこれって、サブジェクトとかFromの部分は何もやってないよね?当然、携帯に送るとそこだけまだ文字化けしています。
 で、そこはなんとか解決しました。今は会社に行く前なので続きはまた今度。

眠い一日

 ずっと眠い日が続いています。今日くらいは早く寝よう。

 ActionMailerは、Subject メソッドをオーバライドしただけ。でもなんだかDocomoへメールを送れずに困っているところ。

第二次対戦中にロボット兵器が存在したら……という動画。なかなかきれいでおもしろい。

Docomoのメール設定のせいで

 Docomo携帯にメールが届かなかったのは、ぼくのせいではありませんでした。Docomoはデフォルトで、PCからのメールを受信しない設定になっているのです。こちらのサイトを参考に、メール設定解除をしてみたところ、すんなりと受信するようになりました。やれやれです。

 眠くて眠くて仕方がない。今日は前の職場の人たちの飲み会に呼ばれています。楽しみ。

SBDふたたび

 昨日は飲み会だったのですが、結局終電で乗りすごしてしまい、またまた町田の漫画喫茶で朝まで過ごしてしまいました。二日酔いで気持ち悪い、素晴らしいゴールデンウイークのはじまりです。

WEB+DB PRESS Vol.38
  • WEB+DB PRESS Vol.38
  • 出版社/メーカー: 技術評論社
  • メディア: 大型本
  • 発売日: 2007-04-24

 「「WEB+DB PRESS Vol.38」」を買いました。今号はまたいつにも増して楽しそうな内容ばかりです。

携帯を新しくする

 携帯を機種変更しました。DRAPEというやつ。W47Tと性能はほぼ一緒なのに、値段が8000円くらい違います(安いのです)。デザインがちょっと変わってて人気がなさそうだもの。ぼくがこれを選んだのは、0円だったからです。割引サービス期間とかポイントとか使ったら。でもちょっと使ってみたけど、そんなに悪くないですね。気に入ってきました。