トップ 最新 追記

誰も褒めてくれないから自画自賛する日記

nu-chon.org  「ぬ」あんてな  「ぬ」wiki  RSS
2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|
Sapporo RubyKaigi 02
Sapporo RubyKaigi 03
RubyKaigi
Sapporo RubyKaigi 2012
RubyKaigi 2013
2008年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

2008-05-01 [長年日記]

アメリカ人はいつ働いてるんだ?

今日、Los Angelesのデータセンターから帰社する際、酷い渋滞に巻き込まれた。まぁ、予想はできていたのだが。

ただ、15時30分の時点で明らかに帰宅する人々の車でフリーウェイが溢れかえっている。

なんでそんな時間に帰れるんだ?

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

masuidrive [ESTで働いている人は6時とか7時始業だからじゃない?]

 [確かにESTで働いている人は3時間ほど早く時間がまわっているんですが、それにしても混み過ぎじゃないかなー、と。朝6時..]


2008-05-02 [長年日記]

How To Use Conditional RJS

http://blog.s21g.com/articles/299

たしかにすでに存在しても良い機能だと思う。


2008-05-03 [長年日記]

RJSの page.redirect_to をテストするためのRSpecコード

RJSの page.redirect_to をテストするために、rspecではどのように書けばよいのかわからん。

昨日からRSpecのrdocを見ているのだが見付からない。(これは僕の目がザルだから?)

どなたかご存知でしたら、教えてください。

ARTS Pluginで誤魔化した

これまでfunctional testを書いていたときに利用していたARTS Plugin ( http://glu.ttono.us/articles/2006/05/29/guide-test-driven-rjs-with-arts ) をrspecのテストコード内でも使って誤魔化した。

しっかりテストできているみたい。

  it "rjsで一覧にRedirectすること" do
     assert_rjs(:redirect_to, :action => :list)
  end

ちょっとRSpecのコードを追っかけて確認してみた。

Object#should matcher *arg がfailしたとき、

  • Spec::Expectations#fail_withが呼び出され、
  • fail_with内で、例外 Spec::Expectations::ExpectationNotMetError がraiseされる
  • Spec::Expectations::ExpectationNotMetErrorの親クラスは、Test::Unit::AssertionFailedError もしくは、::StandardError

となっており、結局のところ、itのブロック内では通常のAssertion処理と同じAssertionFailedErrorがraiseされれば良いというわけで、このブロック内に元来のUnitテストのassertやassert_rjsを書いても、ちゃんとテスト結果に反映される、ということっぽい。

ま、これを乱用すると、RSpecのせっかくのDSLの利便性を台無しにしてしまうわけだが、テストしないよりはマシだ。

RSpec on Rails の RJS Matcherを拡張するスクリプト

RSpec on Rails の RJS Matcherである「have_rjs」はassert_select_rjsのwrapperであり、これだと一部のRJSの機能のテストしかできず、page.visual_effectやpage.redirect_toのテストは、ARTS (http://glu.ttono.us/articles/2006/05/29/guide-test-driven-rjs-with-arts ) 等のプラグインを使うことになってしまいます。

そこで、ARTSのRSpecのMatcher用Wrapperを作り、RSpecの文法で記述できるようにしてしまえば良い、と思いたち、折角なので、have_rjsを呼ぶだけで、assert_select_rjsにもARTSのassert_rjsにもに対応するようにしてみました。

assert_rjs.rb.gz

設置方法はソースコードにも書いてありますが、

  • RSpec Plugin, RSpec on Rails Plugin, ARTS PluginをRailsプロジェクトに加える (ARTSのインストールは ./script/plugin install http://thar.be/svn/projects/plugins/arts/ )
  • ${RAILS_ROOT}/spec/assert_rjs.rb というファイル名で先ほどダウンロードして展開したファイルを保存
  • ${RAILS_ROOT}/spec/spec_helper.rb の「require'spec/rails'」の次の行に次の一行を追加
 require File.expand_path(File.dirname(__FILE__) + "/assert_rjs")

これだけ。

オリジナルの機能はそのまま生かしてあるので、すでにRSpecを使って開発していても、上記の作業をしてもらえれば、visual_effect等のRSpecによるテストができます。

 response.should have_rjs(:replace_html, :foo)
 response.should have_rjs(:redirect_to, :action => :list)

という感じで、上のほうは旧来のhave_rjsの機能でassert_select_rjsを利用し、下のほうはARTSのassert_rjsを利用しています。

っていうか、本当にvisual_effectやpage.redirect_toをテストする方法って、オリジナルRSpec on Railsには無いのかな?

もしあるなら、そっちを使いたいんだけど。


2008-05-04 [長年日記]

昼寝

久しぶりにしっかり昼寝をしたような気がする。

気持ちが良いが、時間を無駄にしてしまった罪悪感もある。


2008-05-05 [長年日記]

Railsでどっぷりアプリケーションを書く日

先週割り当てていた5日分の仕事は、(予想通り)大量の雑用や他の業務のため当然のごとく処理しきれず、実質2日しか作業できなかったので、今日は終日、先週やり残した作業にあてた。

というわけで、今日一日で2日分の作業ができた。

ということは、工数見積もりには2倍もの誤差があったことになる。

まぁ、気にしない気にしない。


2008-05-06 [長年日記]

平穏な日々

アプリケーションの製造に集中できてよかった。


2008-05-07 [長年日記]

ドキュメントを作成したりRailsでアプリを作成したりする日

なんだか、同じようなソフトウェアばかり作っているなぁ。


2008-05-08 [長年日記]

サーバのセットアップ

これまでのプロセスとはちょっと違う方法でサーバを調達、セットアップした。

今回取り入れた方法のほうが、リスクもコストも低く、サービスの質も高い、という結果になった。

最初からなぜこうしなかったのか、我ながら疑問である。


2008-05-09 [長年日記]

フィッシング対策のためのHTTP相互認証プロトコル

https://www.rcis.aist.go.jp/special/MutualAuth/index-ja.html

あとでちゃんと読む

Aptana Jaxerで解決するAjaxのSEO対策とは?

http://www.atmarkit.co.jp/fwcr/rensai/ajaxrecipe06/ajaxrecipe06_1.html

最近、物事が複雑になってきた気がする。


2008-05-10 [長年日記]

なにやったか覚えてねぇ

そういう日もあるさ。


2008-05-11 [長年日記]

映画鑑賞

1.50ドルの映画館で映画鑑賞。

Definitly, Maybe.という映画。理解度は50%程度。

悲しいもんだな。映画の内容ではなくて僕の英語力。

fastercsv

http://rubyforge.org/projects/fastercsv/

とても簡単に使用できる。

gem install fastercsv

でインストールした後、インストールされたドキュメントのサンプルどおりのコードを書くだけ。

ピザを作って食べた

今日はうちの大統領と二人でピザを作って食べた。昨日バジルの鉢植えを買ってきたので、新鮮なバジルをふりかけながら。

味はまぁまぁ。


2008-05-12 [長年日記]

もっと技術系の情報を書きたいのだが・・・

もっと技術よりな情報を書きたいのだが、特にネタはない(笑)

ドキュメントの作成などサクサクと。

自分で仕様を決めることができる案件は楽しい。


2008-05-13 [長年日記]

今日もドキュメントを書く日

まぁ、ドキュメントを作成するのは嫌いではない。


2008-05-14 [長年日記]

最近、TDDが身についてきたかな。

テストを書かないと、不安を感ずるようになった。


2008-05-15 [長年日記]

朝6時にたたき起こされた

日本に設置してあるサーバのMySQLが刺さり、管理機能にアクセスできなくなったため、朝5時台に電話がかかってきた。

しょうがないんだけど、イライラ。

XOOPS認定を作ってくれ。

XOOPS認定を作ってほしい(すでにあるかな?)

そして、このXOOPS認定を受けなければ、XOOPSの設置・改修はできない、という厳密な資格制度にしてほしい。

そうすれば、XOOPSの案件がきても、

「あ、すみません。うち、XOOPS認定技術者がいないんです。
だから別のCMSを使いましょう。」

と言うことができるではないか、諸君。

XOOPSについて俄か知識を持っているお客さんが一番厄介。設定は厄介だし改造はさらに厄介だし、しかもXOOPSの代替になるものが無いのでXOOPSを断るのが非常に困難。

重み付き乱数

http://yowaken.dip.jp/tdiary/20060831.html#p02

メモメモ。

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

TJ [最近注目してるのは ExpressionEngine だな。 ttp://expressionengine.com/..]

 [ExpressionEngineって、評判はどうなんでしょうね。また、困ったときに情報が見つからないとツライですよね..]

TJ [日本語化してる人はいるけど、思ったより盛り上がらないし、情報は少ないよな。 > ExpressionEngine た..]

 [> Xoopsについては...未来が感じられなくて、ほかのCMSへ舵を切りたいのだよ。 そこなんですよね。XOOPS..]


2008-05-16 [長年日記]

日々是勉強

Rubyをマスターしたわけではないが飽きてきたので、今年は新しい言語を勉強しようと正月に決心していたのだが、なかなか着手できないでいる。

って、もう5月中旬なんですが。

  • Python
  • 関数型言語の何か

のどちらかにしたいと思っている。

ちなみにどちらも今のところ業務で使う予定はない。

関数型言語は今後も業務で使うことは無いだろうが、Pythonは業務で利用する可能性がある。でも、ちょっと違う世界にも触れたいというのもある。

でも、その前に現在抱えている技術書2冊を一通り読んでしまいたいなぁ。

と、グダグダと悩んでいる(というか、言い訳している)。

こういうときは、少々尻を叩かれないといけませんね。

誰か一緒に勉強しませんかね。


2008-05-17 [長年日記]

買い物等をする日

給料日直後、ということもあり買い物をする日。

そして給料日前に地獄を見るのが毎月の定例行事。


2008-05-18 [長年日記]

La Jolla と Point Loma

遠くまで出かけようとうちの大統領と話をして、San Diegoのほうに出かけた。

途中でOriginal Pancake Houseに立ち寄り朝食を食べた。朝から甘いものだが、米国人にとっては別に大したことではないのかな。

La JollaとPoint Lomaで景色や展示物を見て帰宅

うむ。ガソリンが高い。


2008-05-19 [長年日記]

なんだか毎日やっていることが変わらないな。

今日もRailsでアプリケーションを作成したり、打ち合わせをしたり。

Rails最高ー!


2008-05-20 [長年日記]

改造に勤しむ日

某アプリケーションの改造。すべてRails。

Rails以外触れなくなりそうだ。


2008-05-21 [長年日記]

アプリケーションの作成をする日

この日記を読み返すと、毎日同じことしているな。

結構雑用も多くて忙しいのだが。


2008-05-22 [長年日記]

RailsでRSSを出力

RailsのWEBアプリでRSSを出力するのは初めてやったのだが、あまりの簡単さに唖然とした。

たまたま元のアプリケーションのRailsのバージョンが1.1.6だったのでroutesで:formatを指定する方法ではできなかったのだが、まぁ、actionを一つ書いて、rxmlファイルを作成すれば良いだけだったので、ラクであることには変わりない。

さらに、2.xでは、しっかりRESTfulを意識したメソッド名をつけていれば、hoge.rss.builder(rxmlと同じ)を書くだけでWEBアプリで使っている既存のリソース名で自然な形で出力できてしまうのが美しすぎる。


2008-05-23 [長年日記]

嘘のような、本当の話

http://www.lizard-tail.com/isana/diary/?date=20080523

とても夢のある話。感動した。

innodb_file_per_table

MySQLのInnoDBのデータファイル ibdata1 が少し大きくなっていたので、試しにMySQLの[mysqld]セクションのオプションの

innodb_file_per_table

をつけて

ALTER TABLE tablename TYPE=InnoDB

を実行することで、innodbのデータファイル(.ibd)がテーブルごとに作成しデフラグメントもしたのだが、パフォーマンスが低下したようだったのですぐにやめた。まぁ、本当はテーブルごとに別々のHDDにデータを置くようにすればよいのかもしれないが、レンタルサーバなのでそういうわけにもいかず。

元に戻すためには、innodb_file_per_tableオプションを消し、上記のALTER文を再度実行するだけ。

元に戻せて良かった(汗)。innodb_file_per_tableの効用を体験しただけに終わった。

下記のテストではURLではパフォーマンスの低下はそれほど無い、とのことだが、まぁ、いろいろあるよな。

http://www.mysqlperformanceblog.com/2008/03/21/mysql-file-system-fragmentation-benchmarks/

サーバの様子を見ていると、どうもDisk I/Oのwaitでパフォーマンスが低下しているっぽい。

DB専用サーバなのだが、Swapを結構使っているようなので、Cacheにメモリを割り当てすぎかな。

DBのチューニングは難しい。


2008-05-24 [長年日記]

何もしない一日

読書に励んだ一日。

他には、野菜を買って、サウスコースとプラザでぶらぶらして一日が終わった。

お酒も飲まなかったなぁ。


2008-05-25 [長年日記]

Oreillyの RESTful Web Services は結構お勧め本だな

Restful Web Services(Leonard Richardson/Sam Ruby)

読了。原書を読んだのだが、読み始めてから約1ヵ月半かかった。週末や夜に余裕がある日だけしか読めなかったので、まぁ、しょうがないかな。

これまで7年以上GETとPOSTだけを使いURLで動作を指定するRPCスタイルに疑問を持たず漠然とWEBアプリを作ってきた僕にとっては、勉強になる点が多く非常に良い本だったと思う。古くからWebアプリを作成している人たちにも同じような人達が多いんじゃないかな。

うちの会社の日本の開発メンバーにも是非読んでもらいたい。

決してリファレンス本ではないので、一通り読んで、後ほど実際にそのようなケースに遭遇した場合には本の該当箇所を読み返してみる、という使い方が良いかな、と。

すでに日本語の翻訳本が出ているし、日本でも結構有名な本みたいなので是非是非。

(ただ、僕は翻訳版を読んでいないので、翻訳精度や意訳がどこまでしっかりしているかわからないけど)

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

こいわかもしれない人 [RESTful Web Servicesは、日本語訳版は結構、評判良いですよ まだ、社内では見かけたことないなぁ 僕..]

 [社員の自腹で強制的に買わせるにはちょっとお値段が、という感じ。会社に1冊あっても良いだろうけど、そうすると読まないだ..]

こいわかもしれない人 [4000円なら、強制的に買わせてもいいんじゃないかしら。 つか、技術書は自腹で買わないと読まないしなぁ 読書会は運用..]

TJ [4000円なら必要性さえ感じれば自分で買うでしょ。必要性がわからなければ1000円だって買わない。 自分のキャリアに..]

 [社内の技術者数が増えてきて、これまでのように自発的な自己研鑽だけをあてにしていると、気が付いたときには優秀な人材はす..]

こいわかもしれない人 [社内のtech-mlに書評を流して、様子を見てみるとか。]

 [まぁ、まずそれで様子みましょうかねー。何だ、この日記、業務連絡かw]


2008-05-26 [長年日記]

久しぶりの祝日にO'ReillyのLearning Pythonを座り読み

米国の数少ないNational Holiday(国が定めた祝日)であるメモリアルデー(戦没者に感謝する日)だったので、久しぶりに祝日を味わった。

朝の10時に外出したところ、通りはガラガラで、車が全然走っていなかった。平和だ。

食料等の買い物をした後、サウスコーストプラザをぶらつき、その後、書店内にあるStarbucksでコーヒーを飲みながら Learning Pythonを読んだ(買っていない)。

まずPythonの概念から学ぼうと、最初のページから斜め読みしていたのだが、moduleの読み込みの部分を読み終え、数値型、文字列型の説明のところで大統領から呼び出しがかかり終了。

クラス、メソッドの定義や制御構造の部分に到達しなかった。一番抑えておきたい部分だったのだが。

まぁ、買えってことなんだが。また立ち読みしようと思う(ぉ

Learning Python(Mark Lutz)

ちなみに、LA近郊のスタバは、AT&TのDSLユーザであれば無料でWifiを利用できるのでiPhoneで使ってみたが、ユーザアカウントを入力するのが面倒で、しかも数分接続がない状態にすると認証がリセットされてしまうので、途中からはEDGEネットワークを使った。なんだかなぁ。


2008-05-27 [長年日記]

幻聴

最近、深夜寝ていると、電話の音で目が覚めることが頻繁にある。

実際には電話は鳴っておらず、ただの幻聴。その音というのも、先日携帯電話を一つ解約したT-Mobileの電話の音で、今では鳴らないはずの音。朝の4時ごろにサーバ障害の知らせで頻繁に鳴っていた電話の音。

さらに、T-MobileのテレビCMでも使われている音なので、そのCMを目にするたびに気分が悪くなる。

それに加えて、日本との時差のため、メールで要件がやってくるのも深夜帯。メールなので見なければよいだけなのだが、「何か面倒な内容のメールが来ているのではないか」と妙に不安になって目が覚める(メールは見ないのだが)

そんな毎日で、寝た気がしないのだ。

この業界に身を置いて言うことではないが、情報化社会って、なんだかねぇ。


2008-05-28 [長年日記]

vimの使い方

http://hatena.g.hatena.ne.jp/hatenatech/20060508/1147073721

はてな勉強会より。

vim以外のviでも使える技。

regional selection, regional comment、物理的行移動等、知っていると便利な技がいっぱい。


2008-05-29 [長年日記]

EmacsのRubyモード

これまで実はRubyモードしか使っていなかったのだが、一念発起してDebian sidからのbackportのEmacs22をインストールし、Ruby-modeの設定をして使ってみた。

まだ全然使いこなしていないが、非常によくできている。

それよりも、Xemacs21でできなかったSubversionの作業ファイルの操作がEmacs22ではできることのほうがメリットが大きいかもしれない。

久しぶりPHPに触れた日

PHPで書かれたソフトウェアの簡単なカスタマイズが必要だったため、久しぶりPHPのソースコードに触れた。

VIEWの部分を変更するだけだったので、実際にはPHPのコードは書いていない。

特に面白いとも思わなかったし、感想もない。

つまり日記に書くほどの話でもない。


2008-05-30 [長年日記]

daemontoolsのrunファイル

仮想CD/DVDのDaemon Toolsではなく、DJBのdaemontools。

DJBのツールは嫌いなのだが、しょうがないから今回使ってみる。プロセス監視してもらう。アプリケーションのプロセスが死んだら、立ち上げなおしてくれる。

今回はmongrelで利用。

最初、mongrel_cluster用に書こうとしたが、今回のケースではclusterではなく単独のmongrelプロセスを多数立ち上げたほうが管理しやすくないか? ということで。

/service/mongrel-4000/run の中身はこんな感じ。(同様に4001, 4002,...と作った)

リクエストをPort 4000で受け付ける

#!/bin/sh
exec \
       setuidgid hogehoge \
       env - PATH=/opt/gems/bin:/opt/gems/rubygems/bin:$PATH \
       RUBYLIB=/opt/gems/lib \
       GEM_HOME=/opt/gems/rubygems \
       mongrel_rails start \
               -e production \
               -p 4000 \
               -n 5 \
               -c /www/hogehoge/current

ここまで書いたところで Monitというものを教えてもらった。こっちのほうが良いかしらね。

Capistranoの設定はどうしようか。意見求む。

そしてmonitに鞍替えする

DJB先生を切り捨てた。masuidriveさんからmonitを教えてもらったので早速つかってみた。

daemontoolsよりはるかにお行儀が良いのでこちらを利用することにした。ついでにmongrel_clusterも復活。

monitのドキュメント

http://www.tildeslash.com/monit/doc/

Exampleが非常に有用。

よくできている。


2008-05-31 [長年日記]

基本的に何もしない日

WEBで調べ物をして、読書して、RubyのSingletonクラスについて想いをめぐらせ、眠たくなったので昼寝して、4時間後目覚めて、カップラーメン食べて、読書して、ニコ動を見て、寝た。

翌日の朝

全身がバキバキしている。いたーい。


2000|01|02|03|04|05|06|07|08|09|10|11|12|
2001|01|02|03|04|05|06|07|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|06|07|
2012|01|03|05|06|08|09|
2013|01|08|09|
2014|01|03|05|08|12|
2015|01|04|09|10|
2016|01|

2008年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Copyright (C)2005-2015 nu-chon.org.