2006年12月


目次


2006年12月29日

Rakeからのユニットテストで属性getterが変な件

RakeでRailsのユニットテストを走らせたら不可解な現象が。

ActiveRecordの属性を取得するところで何故かArgumentError("wrong number of arguments")が。

ARの属性メソッドはmethod_missingで実現されてて、で、Rakeを走らせるとRakeがFileUtilsとかいろんなものをObjectにincludeしてくれるせいらしい。それで、属性のgetterを呼んだつもりがそのモジュールのほうへ行ってしまった。

ここ数日、普段と違うRailsの使い方をしてたら色々初歩的なところではまるなぁ。


途中でコミットできるトランザクション

今まで何回かContinuationネタで使ったことがあるActiveRecord用の「途中でコミットできるトランザクション」をrailsプラグインにしてみた。なんか、意外と自分で実用することが判明してきたので。

ActiveRecord::Base.transactionを拡張して、途中で「ここまで保存」する機能を提供する。



2006年12月26日

Rails + SQLServerでクエリがシンタックスエラーな件

$KCODE = 'u'でrailsを動かすとSQLServerへのクエリがエラーを起こすんだが。 前にメーリングリストでも見かけたことがあったような。で、$KCODE = 's'で我慢しるってことだったような。

ちょっと試してみた。



2006年12月24日

不快に基づく排除

自分が不快であるというだけの理由で他人の人権を制限し、尊厳を剥奪したり自己存続をやめさせようとする輩がいる。

私は彼らを甚だ不快に思うのだけれども、彼らは私のために自己存続をやめてくれるのかね。自己は存在すべきでないと考えるのかね。

まぁ、私は彼らには存在する権利があると思うし、私が不快であるというだけの理由で自己存続をやめて欲しくはない。生きてほしい。けれども、彼らが自身の思想に殉じてくれたとしても、それはそれでひとつの問題解決ではあるので構わない。


2006年12月22日

MS SQLServerで結果セットのシャッフル

SQLServerのrand()は同一のクエリ内においては常に一定の値を返すのね。

だから、order byにランダムな値を与えてシャッフルしようと思ったら、一工夫必要。Black Rainさんという方が書いてらっしゃるのを見つけた。 こんなの

結果セットの行ごとに異なる値で、かつ時間に依存して毎度変化する値がほしいわけだから、行のidか何か(行依存成分)+RANDの値(時間依存成分)を使う。ただし、このままだと行のidに対して単調増加で意味がないから、それでタンジェントに掛けてから変動の激しい下位桁を使ってる。なるほど。

さしあたってはこれでいいかな。


2006年12月15日

Rubyのcatch, throwの作法

rubyのcatch throwは安心して利用できるのか?」が面白かった。今まで使い込んだことがないから深く考えてなかった。いわれてみると、確かにブロック付きメソッドが勝手にthrowを握りつぶすと問題があるな。

でも、どこだったか忘れたけれども標準ライブラリか何かで「このシンボルをthrowします」「catchします」ってドキュメント化されてるのを見た記憶がある。そのドキュメントの意味は上の記事を読んで初めて気づいたわけだけれども。

それに、ドキュメント化しないままに勝手に握りつぶしたり翻訳したりすると問題があるのは例外も同じだしな。Rubyと限らず、C#のdelegateやJavaの匿名クラスをコールバックに用いている場面でその中から例外が発生したのを握りつぶしても同じだしな。

だとすると、結論は「catch, throwは問題がある」ではなくて、「例外やRubyのKernel#throwの使用に当たってはきちんとドキュメント化しましょう」だな。とりあえず、上の記事で例示しているFind.find, Optparse#order!, PStore#transactionは現在ドキュメントに何も書いていないので問題だな。

私はJavaがドキュメント化の習慣をChecked exceptionsとして言語仕様にきっちり組み込んでるのが好きなんだけど。だから、SQLExceptionがうざったいのはよくよく分かるけれども、それでもRuntimeExceptionの乱用は好きじゃない。Spring Frameworkはその辺勝手に例外翻訳しすぎだと思ってる。

とにかく、Rubyのライブラリ作者は、catch, throwするときにはドキュメントに書きましょう。もちろん、例外も。


TDDのogijunメソッド

要件の大枠は決まってるけど詳細な仕様は未定のときとか。要件を満たすために実現しなければならない仕様に気づいたけど今は他の項目をGreenにしようとしてる最中で仕様を詰めることに頭を使いたくないときとか。

[Test]
public void ○○のとき××は△△であること()
{
    Assert.Fail("について、あとで書く");
}

ogijunさんには足を向けて寝られない。


2006年12月14日

S2Container.Netの罠

property injectionでは、インスタンス変数だけ宣言してもプロパティを作らないとInjectされないよー、と。されないよー、と。

3回同じミスではまったから書いておく。

つーか、C#はだいぶ改善はされてるけどやっぱりRubyに比べるとプロパティの宣言が面倒すぎ。VS2003だとコードの自動生成もしてくれないし。VS2005ならしてくれるのかな。コードを畳めるのは素敵なんだけど。


2006年12月10日

Second Life

Second Lifeを始めた。

あれ? 基底現実で服を買いに行く予定が、Second Lifeで服を探して一日終わってしまった。


Procの暗黙の呼び出しとselector namespace

RubyにおいてProcやMethodをできるだけ普通のメソッドに近い構文で呼び出すために、まつもとさんもずいぶんと試行錯誤しているというのは呼び出し可能シリーズ初回で見たとおり。



2006年12月09日

急性中耳炎

朝起きたら左耳が痛いのでお医者にいきました。急性中耳炎だそうです。左耳がよく聞こえない。


2006年12月07日

Railsのできる職場?

Rubyの本読書会で、今度の会社では.NETやってると言ったらささださんに「Railsをやれる会社に行こうとは思わなかったの?」と訊かれた。

その発想はなかったな。言われてみれば確かにそういう選びかたも理屈の上では存在する訳だ。

でも、私にとっては開発する内容が一番問題で、あとは開発態勢や体質が問題で、言語やフレームワークはあまり拘らない。というか、私が付けてる開発内容の条件を出した時点で他の条件を付けるだけの選択の余地があまりないというか。まぁ、もし選べるならRubyかSchemeがいいけどRailsである必要はないし、そもそもWebアプリでなくていい。私の知識じゃ組込みやゲームや汎用機は無理そうだけどさ。

Railsをゴールデンハンマーにはしたくないやな。やりたい開発をやるかたわらで、Railsが適してる部分にはRailsを使っていけばいい。というわけで、今日、これから社内向けの業務支援機能はRailsでチョロッと作ることに決まった。


2006年12月04日

ABD飲み会

昨日はABD飲み会でした。羽生さん、貴重なお話をお聞かせくださってありがとうございます。至らない幹事0.9でしたが、みなさん参加してくれてありがとうございます。

会場の酔壱やも、店内は良い雰囲気で、味もなかなかよかったですね。暑かったですけど。それにしても席に付くなりみんなでプリントを真剣に読みはじめて、店員さんも何かと思ったかもしれません。



2006年12月02日

ノベルゲーム

テレビゲーム、PCゲームの類はまったくと言っていいほどやらないのだが、なんか買ってしまった。なんであれ文章を読むのは好きだから、実はノベルゲームとは相性がいいのかもしれない。

そう、あたしたちはこんなにも理不尽な世界に生きているのだらよ
そう、あたしたちはこんなにも理不尽な世界に生きているのだらよ

ASIN:
B000GBPML0
出版社・メーカー:
自転車創業
出版社・メーカー:
自転車創業
出版社・メーカー:
自転車創業
発売(予定)日:
2006-07-28
プラットフォーム:
Windows
定価:
¥ 3,780
Amazon内売上順位:
245
評価:
4.5

たまたま広告リンクのところで「そう、あたしたちはこんなにも理不尽な世界に生きているのだらよ」というタイトルに「だらよ?」と興味をひかれて見てみたら、以前読んだ何かのレビューでこのシリーズの「ANOSシステム」を絶賛しているのを思い出して、引き込まれた。ギャルゲー風に見えるけれども違うらしい。ギャルゲーじゃないなら、楽しめそうだ。で、思わず買ってしまった。

分岐する物語を行き来することで、物語世界の時間軸とは別の、読者にとっての時間軸をもたらすとともに、交錯する時間を表現の中に織り込んでいくという発想は興味深い。「多層的立体的に積み重なっていく累積的シナリオを構築するシステム」ということなのだそうだ。ふーん。


2006年12月01日

転職 

12月1日で、転職しました。

Blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com

© Yugui

Powered by Movable Type 3.2-ja-2