WindowsプログラマのWebアプリへの挑戦日記。あとパンとか。

Archive for 7月, 2008

Ruby on Rails 2.1.0 インストールしてみた

日曜日, 7月 20th, 2008 Posted in ruby, Ruby on Rails | 3 Comments »

いつかはやらんといかんなぁと思っていたRuby on Railsですが、AGAGローンチ後やる気がなくなっていたワタクシの頭に気合を入れる意味で、ローカルマシンに環境を作ってみましたよ。

今回は全面的に不真面目SEの生活さんを参考にさせていただきました。

Windows VistaにRubyのインストール

すでにローカルマシンにはXAMPPが入っているので、apacheとかMySQLとかのインストールは必要なくて、とりあえずRubyを入れてみました。

Rubyを入れるにはいろいろな方法があるみたいですが、ここはカンタンにOne-Click Ruby Installerを入れました。インストールは普通にカンタン。Rubyと関連モジュールなんか入れてくれるみたい。

ここでRubyのインストールができたか確認。コマンドプロンプトでRubyのバージョンを確認。

  1. >ruby -v
  2. ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

ちゃんと入ってるっぽい。

Ruby on Railsのインストール

One-Click Ruby InstallerでRubyGemsも入るので、次はRuby on Railsを入れる。

コマンドプロンプトで次を実行。

  1. >gem install rails --include-dependencies

[--include-dependencies]というオプションは依存パッケージを含めてインストールする指定みたいです。

しばらく待ってるとなにやら聞かれましたが、すべて[Y]で答えました。なにを聞かれたのかはよく覚えてません・・・。すみません。

終了してRailsのインストールができたか確認。

  1. >rails -v
  2. 'rails' は、内部コマンドまたは外部コマンド、
  3. 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

あれ?失敗してます。

原因がわからずもう一度RubyGemsからRailsをインストール。

  1. >gem install rails --include-dependencies

今回はさっきみたいに何か聞かれることはありませんでした。終了してRailsの確認。

  1. >rails -v
  2. Rails 2.1.0

おー、なんかよくわからんけど入りました。version2.1.0ですね。

サンプルを作ってみたっ

不真面目SEの生活さんのWindowsでRuby on Rails その2 Ruby・Ruby on RailsのインストールのWebrickを使って動かすサンプルを作ってみると、ちゃんと動きました。

次に、同じく不真面目SEの生活さんのWindowsでRuby on Rails その3 Ruby on RailsをCGIで動かすのapacheでcgiで動かしてみました。んが、Railsアプリフォルダ以下のpublicに.htaccessがない!とりあえず.htaccessを作成して、

  1. RewriteBase /adbook/

とだけ書いて保存。

  1. http://localhost/adbook/adbooks

にアクセスしてみたらエラー。

.htaccessを自分で作ったのが原因かと思って調べると、Rails2.1.0からpublic/.htaccessがなくなったらしい。その代わり.htaccessの書き方のサンプルが、Railsアプリフォルダ以下のREADMEに書いてありましたヨ!!わかんないって。.htaccessの内容は次のようにしました。コメントは削除してます。

  1. #AddHandler fastcgi-script .fcgi
  2. #AddHandler cgi-script .cgi
  3. #Options +FollowSymLinks +ExecCGI
  4.  
  5. RewriteEngine On
  6. RewriteBase /adbook/
  7. RewriteRule ^$ index.html [QSA]
  8. RewriteRule ^([^.]+)$ $1.html [QSA]
  9. RewriteCond %{REQUEST_FILENAME} !-f
  10. RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
  11.  
  12. ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
  1. http://localhost/adbook/adbooks

にアクセスするとちゃんと動いてる!

でもやっぱりRuby on Railsをcgiで動かすと遅いです。それはもうびっくりするくらい遅いです。

男のパン作り – 成功編

木曜日, 7月 17th, 2008 Posted in ライフ | No Comments »

前回、1年前のイースト菌を使ってパンを作って大失敗しました。今回はリベンジですよ。

今回は、水の代わりにちょっとミルクを入れました。これでたぶんマイルドな感じになるはずです。まあ前回大失敗してるので比べれないんですけどね。

前回は一次発酵のときにまったく膨らまなかったんですけど、今回はびっくりするくらい膨らみました。びっくりしすぎて写真撮るの忘れてました。1次発酵した後、テキトウに切り分けて15分ほど休ませた後成型したのが↓です。もうすっごいフワフワ。きもちー!大きさとか形がそろってないのは見逃します。
dsc03562.jpg

これを二次発酵したのが↓。ちゃんと膨らみましたヨー!
dsc03564.jpg

これをオーブンで焼いたのが↓。なんかすげーでかくなってる!あふれてるヨ!!
dsc03576.jpg

もうね、焼きたてのパンってすげーいいにおいで柔らかくてウマイのさ!!
dsc03579.jpg

前回のアレはなんだったんでしょね??新鮮なイーストを使えばパンなんて超カンタンじゃん!

パン作り、まじハマりそう。次はなに作ろうかなー。

関連記事

男のパン作り
男のパン作り – メロンパン
男のパン作り – シナモンロールパン
男のパン作り – ベーグル

男のパン作り

火曜日, 7月 8th, 2008 Posted in ライフ | No Comments »

ガソリンが高すぎてどこもいけないですよ。なもんで、家でパンでも焼いてみようと思って、高騰する小麦粉とバターを買いにいきました。

ボクはパン焼きバージンだったので、とりあえずネットで調べました。
↓ここが写真がたくさんあって、わかりやすいです。
SKYの簡単パンレシピ SKY’S CAFE@BREAD

さて、今回挑戦してみたのは「手ごねロールパン」。手順は、手ごねで基本のパン生地*レシピをそのままやります。

材料をこねてこねてこねまくっている様子。親指は短いほうです。
dsc03541.jpg

こね終わった状態。
dsc03542.jpg

ここから1次発酵のため、40分ほど放置します。放置した状態です。
dsc03545.jpg

あれ?1次発酵したら生地が2~3倍になるはずなのに、ほとんど変わってない・・・。おかしいな。こういうときはgoogle先生です。どうやらイーストには賞味期限があるようで、あんまり期限を過ぎると菌が死んで発酵しないらしい!!
おもむろにイースト菌の箱を確認すると賞味期限2007年5月!!って1年前じゃん。しかも使ったイースト菌の袋開いてたし!そういえばなんか変な匂いしてた。「こ・・・こいつ・・・死んでいる・・・!」 by Dio

無駄だとは思いつつ、賞味期限は切れてるけど開けてない袋のイーストをちょろっと混ぜて、プラス40分発酵させてみました。無駄でした。

それでもめげずにクルクル巻きました。
dsc03548.jpg

これに卵を塗って焼きます。なんか色が変わってるのは、このあたりで夜になって室内の照明になったからです。
dsc03550.jpg

焼き上がり。
dsc03557.jpg

お?なんか気持ち膨らんでいるような?

とにかく食べてみました。

結論

堅い、くさい、まずい。

もうあれですね。決定的にイースト菌が古いのが敗因ですね。死臭が漂ってますね。

また近いうちにリベンジするです。たぶん。

【追記】
リベンジしました。
its55 lab » Blog Archive » 男のパン作り – 成功編

関連記事

男のパン作り – 成功編
男のパン作り – メロンパン
男のパン作り – シナモンロールパン
男のパン作り – ベーグル

ソフトウェアを開発するときに仕様書を書くべき3つの理由

土曜日, 7月 5th, 2008 Posted in C++, PHP | No Comments »

Joel on Softwere」で、機能仕様書を書く重要性が延々と述べられているので、ちょっとまとめてみます。いきなりコーディング始めていませんか?

プログラムをデザインする

仕様書の最も重要な役割はプログラムをデザインすることだ。
仕様書を書くという行為自体によって-プログラムがどう機能するか詳細に記述するということによって-プログラムを実際にデザインするように強いられるのだ。

ここでいう仕様書とは機能仕様書のことで、内部仕様書(技術仕様書)のことではないです。機能仕様書とは、ユーザの観点から製品がどのように動くかを記述したドキュメントです。ダイアログとかメニューとかの仕様を書くアレです。

機能仕様書を書くことによって、プログラムがどのように動くかを深く考えることになります。これから作ろうとしているソフトウェアの動きを文章で書き、簡単な絵を添付した場合、上司や顧客からダメだしをされてもすぐに書き換えることができます。一方、2週間掛けて書いたプログラムをダメだしされた場合は・・・!?

アジャイル開発におけるテストファーストも、関数をコーディングする前に関数のテストを書くことによって、その関数の入力と出力の組み合わせを細かく考えます。そうすることで、その関数の仕様を詳細に検討することになります。

作ろうとするものがどう動くかをまず考えることが、デザインにつながります。

コミュニケーションにかかる時間を節約できる

開発のテスト期間中に、どんどん報告されるバグを片っ端からかたづけているとき、スピーディーに改修をこなしているアナタの集中力はMAX!(この状態をフロー状態と言います。)

しかし、突然鳴り出す電話。相手は試験チームのアイツ。いつもくだらない質問で電話してくるアイツです。

試験チームのアイツ:
「音楽CDを再生しながらプロパティダイアログを開くと、CDが停止するんですけど、これ不具合ですか?」

はぁ?不具合なわけないじゃん。つか今頃そんな質問すんなYO!

アナタ:
「それは仕様です。」

試験チームのアイツ:
「では仕様書への記載お願いします。」

げ。書いてなかったっけ?

こんな経験たぶん誰にでもあるんじゃないですか?ボクだけですか?

さて、ここからまた改修作業に戻るわけですが、「ピープルウェア」によるとさっきのフロー状態まで戻るのに15分はかかります。あぁ、なんという無駄。

2分間の仕様書への追記をサボったために、電話対応+フロー状態への復帰で20分の貴重な時間が無駄になります。20分の無駄も問題ですが、仕事が中断したことによるイライラで仕事へのモチベーションが下がってしまうことのほうが大問題です。

仕様書を書いておけば、こんなことにはならないのです。

スケジュールが立てられない

製品を開発するには時間がかかり、そしてお金がかかります。スケジュールを立てられるだけの仕様書がないということは、製品を開発するのにどれくらい時間がかかり、どれくらいのお金がかかるか分からないということです。

あなたは値段を見ずにジーンズを買ったりしないだろう。

まとめ

Joel on Softwere」の仕様書を書く理由を自分なりに解釈してますが、ほかにも仕様書を書かないことによってこんな問題があるよってのがあれば教えて欲しいです。仕様書の書き方については「達人プログラマー」が参考になります。これはまたいつかまとめたいと思います。できれば。

参考資料




IDEA*IDEAの『データが自動で消えてくれる機能』の名前を考えてみた

木曜日, 7月 3rd, 2008 Posted in AGAG, web | No Comments »

CakePHPでWebアプリを作ろうってときにかなりお世話になったIDEA*IDEAで「『データが自動で消えてくれる機能』に名前をつけたい」というエントリーがあり、個人的にタイムリーなため反応してみます。

キーワードを登録すると、自動で最新のAmazonの商品リンクを表示してくれるAGAGというサービスを公開しています。先日アップデートしたAGAGですが、ユーザ登録しなくても使えるAGAGサーチシンプル版には、「30日間発行したコードからのアクセスがなかった場合、データを削除する」機能があります。

この機能はユーザのためというより、管理者の都合のために実装した機能ですが、IDEA*IDEAで出てくるのはまさにこの機能ですよね。たぶん。

さて、この機能に名前を付けるとしたら・・・・。

イメージ的には不要なメモリを解放するガベージコレクションのDB版かなぁという感じなので、そのまんまで「ガベージコレクション」?

あ、でもDBのガベージコレクションは、ディスク上にできた未使用領域を削除する機能だから違いますね。ガベージコレクションとは別物だけど、ちょっとそれっぽい感じで「ガベージフリー」?「ガベージリリース」?

これだとDBのデータを消すってのはわかりにくいですね。っていうかユーザから見た場合、消えるデータがDBのデータかどうかは関係なく、自分のデータが消えてくれるってのが分かるような名前がいいですね。だとすると、「オートクリアー」?

「30日アクセスがない場合に、データを自動で削除する「オートクリアー」機能を搭載しました。」

すでにありそうな名前ですねぇ。

やっぱり「ガベージダンプ」がかっこいいな。メモリっぽいけど。
センスないなぁ。

【関連記事】
AGAG – Amazonアソシエイトサポートツール リリース
AGAG – Amazonアソシエイトサポートツール アップデート