トップ 最新 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
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|09|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|11|
2011|05|
2012|01|

2007-09-01 [長年日記]

% [Python] プロパティ

何気なく書いたグチから派生して、アクセサ談義とかが他所で始まってたりして、ブログや日記を書くことのおもしろさを実感していたりする今日この頃。

…で、まあそれはともかく、そういえば使ったことないけど Python には property という仕組みがあったんだっけと思い出したので、ちょっといじってみる。

まず前提として、Python におけるインスタンス変数…… Python 的には属性 (attribute) と呼ぶものには基本的にアクセス制限のようなものは無くて、厳密な意味で属性を隠蔽する手段は無い。 ただ、さすがにあまりにオープンすぎると、「ついうっかりいじっちゃった」みたいなトラブルが怖いので、先頭にアンダースコア二個を付けた名前の属性を定義すると、それが自動的に難読化された名前に変換されて、クラスの外側からは定義したままの名前では触れなくなるようにする仕組みが存在している。

In [1]: class Hoge:
   ...:     def __init__(s):
   ...:         s.__x = 'hoge'
   ...: 
In [2]: h = Hoge()
In [3]: h.__x
---------------------------------------------------------------------------
<type 'exceptions.AttributeError'>: Hoge instance has no attribute '__x'

このように。 ただし、これは上に書いたとおり「自動的に難読化」しているだけなので、そのパターンを見切ってしまえばアクセスできないわけではない。

In [4]: h.__dict__
Out[4]: {'_Hoge__x': 'hoge'}
In [5]: h._Hoge__x
Out[5]: 'hoge'

ね。

で、それを踏まえて。

Python では関数あるいはメソッドの呼び出しには常にカッコが必要だ。 逆に属性を扱う場合はカッコは使わない。 というか、属性とメソッドに実際はほとんど区別なんて無くて、メソッド名の属性に関数が格納されていて、その関数を実行するだけみたいなものなので、とにかくまあ、そういうこと。

さて、そういう状態のときに、arton さんの言ってたみたいな「後でフックをかけたくなるかも知れないからアクセサを使いたい」とかそういうシチュエーションがあったとしよう。

In [6]: class Fuga:
   ...:     def __init__(s):
   ...:         s.__x = 'fuga'
   ...:     def getx(s):
   ...:         return s.__x
   ...:     def setx(s,v):
   ...:         s.__x = v

単純にはこんな↑クラス。 でも、こんなのダサすぎるでしょ。 普通の属性なら、obj.x とかでアクセスできるのに、いちいち obj.getx() とか書かなきゃならないなんて面倒だし、そもそも統一性が無くて美しくない。 そういうときに使うのが property というやつ。

In [7]: class Fuga:
   ...:     def __init__(s):
   ...:         s.__x = 'fuga'
   ...:     def getx(s):
   ...:         return s.__x
   ...:     def setx(s,v):
   ...:         s.__x = v
   ...:     x = property(getx,setx)

クラスの定義をこうすると…

In [8]: o = Fuga()
In [9]: o.x
Out[9]: 'fuga'
In [10]: o.x = 'piyo'
In [11]: o.x
Out[11]: 'piyo'

このように、x がまるで通常の属性であるかのように使うことができる。 これがあれば、それまで普通に属性をそのまま扱っていたユーザ側のソースを変更させることなく、ライブラリ側でフックを仕込んだりできる。 定義するときにちょっと冗長だけど、外側から見たときのキレイさは Ruby より上じゃないかな。

まあ、依然として、

In [12]: o._Fuga__x
Out[12]: 'fuga'

みたいな直アクセスはできちゃうわけだけど、そこら辺は使う人の良心にまかせるのが Python 流ということみたいだね。 厳密なアクセス制限の仕組みは導入しないと Guido 氏は明言してるみたいだし (ソース失念)。

% [雑談] ふと思ったんだけど、Ruby みたいに無引数の関数呼び出しでカッコを省略できる言語って少数派じゃないだろうか?

引数がある関数呼び出しにカッコが必要無い言語はそれなりにある。 OCaml とかそうだし。 でも無引数のときまでとなると、なかなか思い付かない。 例えば、OCaml の場合は無引数の関数は『unit 型の値を受けとる関数』として表現されるので、それを呼び出すには常に unit 型の値 ( '()' と書く) を与える必要がある。

とりあえず思い付くのは Haskell か。 でもあれの場合、(IO 関係を除けば) 無引数の関数ってのは定数とほぼ同義だから、何か違う気がする。

一番 Ruby っぽいのはやっぱ Scala か。 まあ、あれは静的型付け言語の Ruby になろうとしてる感じがするし、そういう仕様になっているのはある意味必然なのかも。 Ruby とちょっと事情が違うのは、変数には宣言が必要なんで、例えばローカル変数か関数呼び出しかわからない hoge という表記があったとしても、val hoge とか var hoge があるか調べればすぐわかるし、そうするのは容易い。 Ruby だと、明確な変数の宣言が存在しないので、ローカル変数かどうかを調べるのはちょっと面倒。

あ、そう言えば Perl もカッコ無しで行けるっけ。 でも Perl だとカッコ無しで書いたとしても、ローカル変数と見間違えることって無いしなあ。

こう考えると、Ruby が一番悩ましい気がする。

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

Before...

% YT [Delphiにはpropertyもありますが、素のPascalも引数の無い関数呼び出しは括弧要らないですよ。leth..]

% きむら(K) [Turbo Pascalの拡張からしか知らないのですが、ObjectPascalとDelphiの関係は http:/..]

% YT [AppleなんかのObjectPascalのobject構文を、TurboPascalが取り入れたのがTurboPa..]


2007-09-04 [長年日記]

% [雑談] 最近のこととか、もろもろ

Python 3.0a1 をいじる暇が無くてちょっとさみしい。 まあ、reduce がモジュールに追いやられてショボーンとか、そういうのはいまさら書くまでもない話だろうし良いや。 つか、インストールすらしてないよ。

ほげほげが一段落したら、もう少しまったりしたいなあ……と独り言。

で、全然関係無い話に変わって。

6 日発売の ACE3 は 2 がわりと微妙だったからノーチェックだったんだけど、つい PV を見てしまって買う気まんまんに心変わりした。 サテライトキャノン撃てるだけで、ご飯三杯くらい行けそーよね。 問題は、買ってもやってる暇が……ということだが。

……なんか久々にいかにも日記っぽい日記を書いた気がする。 この読む人を完全に置いてけぼりにするグダグダ感が Web 日記ってもんですよね。 ここはブログじゃありませんよ(笑

% [Ruby] 時に大きなお世話な flatten

まーなんつーか、自分でそのように書こうとするとわりと面倒なんで、便利は便利だし良いとは思うんだけどもね。 Array#flatten ってネストした配列も全部真っ平らにしてくれるでしょ。 今日はこれで失敗したよ。

この前も書いたけど、わしは assoc array を作ってそれをハッシュに直すということを結構やるわけね。 そんで、そのときに Hash[*array.flatten] という書き方をするときがある。 で、今日、

[['hoge',[1,2]],
 ['fuga',[3,4]]]

こんな感じの配列 (もちろん例は適当だが) からハッシュを作ろうと思って上記のような flatten を使う書き方をしてハマった。 要するに、わしの頭の中では、

{'hoge' => [1,2],
 'fuga' => [3,4]}

こういうのが期待されてるわけだけど、実際には、

{'hoge' => 1,
 2      => 'fuga',
 3,     => 4}

こんなのができあがってるわけだ。 がっかりだ。

そんなこんなで、やっぱり Hash[*array.flatten] って書き方は封印した方が良いかも知れん。 っていうか、ハッシュの順番がどーのこーのなんてどーでもいーから、assoc array から一発でハッシュを作ってくれるメソッドを用意してくれと小一時間。

ちなみに関数型脳的に inject を使った場合にも落とし穴があって…

irb(main):001:0> [['hoge',1],['fuga',2]].inject({}) do |acc,pair|
irb(main):002:1*     key,val = pair
irb(main):003:1>     acc[key] = val
irb(main):004:1>   end
NoMethodError: undefined method `[]=' for 1:Fixnum
        from (irb):3
        from (irb):4:in `inject'
        from (irb):1:in `each'
        from (irb):1:in `inject'
        from (irb):1

ショボーン。 正しくはこう↓ね。

irb(main):008:0> [['hoge',1],['fuga',2]].inject({}) do |acc,pair|
irb(main):009:1*     key,val = pair
irb(main):010:1>     acc[key] = val
irb(main):011:1>     acc
irb(main):012:1>   end
=> {"fuga"=>2, "hoge"=>1}
本日のツッコミ(全3件) [ツッコミを入れる]

% ku-ma-me [僕も Hash[*ary.flatten] のイディオムは封印してます。この問題の真犯人は Hash[] の腐ったイ..]

% H.I. [もう連想リスト形式のassoc arrayはやめて属性リスト形式でデータを持つとか?]

% jijixi [属性リストってどんなのかピンと来なかったんですが、ちょっと調べてみた感じ、要するに Hash[] がちょうどうまく処..]


2007-09-05 [長年日記]

% [雑談] 電話が付いてない iPhone キタコレ

iPod touch.

厚さ 8mm で容量が 8GB とかだからフラッシュメモリなのかと思ったらハードディスクだって書いてあんね。 いったいどんなのが入ってんだ?

それはそれとして、マジ欲しい。 これは売れるでしょう。特に iPhone が普通じゃ手に入らない国ではメチャ売れそう。

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

% cooldaemon [各所の予想通りなのが発売されましたね! 10月に備えた MacBook Pro 貯金を崩して買いたい勢いです(w;]

% jijixi [8GB 版くらいなら手を出せなくもないですけど、お金貯めないとなー あー悩ましい(苦笑]


2007-09-06 [長年日記]

% [game] 思い切って ACE3 を買ってきたが…

電源入れてデモ垂れ流してるだけで、まったく手を付けてない...orz

今やってる作業が一段落したら、ちょっといじろう。

% [clip] 数学者が新型iPodで警告─「2個買うとマイナス1になる」 (bogusnews)

iPod で地球がヤバいw

「仮に一個しか買わなかったとしても、そもそも虚数であるiを注文したところで実体のある物質が届くのかどうか非常に疑問。反物質などが送りつけられる可能性があり、場合によっては宇宙の存亡にも関わる」

% [game] ACE3 日記

食休みを兼ねて 30 分ほどプレイ。

なんか 2 のストーリーを引き継いでるみたいだな。 2 の 3 年後とか、そんな感じみたい。 そのわりにナデシコ B が就航したばかりとか、なんか辻褄合ってないような気もするけど……

2 のストーリーなんてほとんど憶えてないけど、ブラックサレナとかエステカスタムとか出てたよね。 あれ?ストーリー的には出てなくて、おまけ扱いだったんだっけ? ストーリー的に出てたのは 1 の方だったか?

% [clip] Scala vs. Groovy: static typing is key to performance (coding, by derek young)

via programming reddit.

およそタイトルから予想されるままの流れだと思うんだけど (実はよく読んでない)、Results のとこを見て失笑してしまった。 Groovy が可哀想すぎる。

よほど不利な問題なのか、使われたソースがダメなだけなのか、それとも本当に Groovy がダメダメなのか。 Java 用のソースをそのまま移植したということみたいなんで、Groovy らしく書けばもう少しマシなんだと思いたいなあ。

% [game] ACE3 日記 LFO 楽しい編

ゲイナー君登場の面まで。

手に入れたばかりのニルヴァーシュを使ってみたが、リフボードで飛ぶ感じがすんごく気持ち良い。 感触的にはウェーブレース 64 とかそんな(謎

月はいつでも出てる様子で、いつでもサテライトキャノンは発射可能。 撃つには溜め時間が必要だし、一発撃つとしばらく使えないけど、本来の設定からすればかなり撃ちまくれる設定。 でもまあ、他の武器がパッとしないのが X ちゃんてやつなので、ディバイダーが付いてからが本番かな。

ゲイナー君は実のところ原作未見なので、よくわからん。

どうやら次の面はゲッターの話らしい。 って言うか、いきなり真ゲッターが編入されて使えるようになってしまった。 せっかくだから使おう。

ストーリーに絡まない任意編入機体は、今のところダンバイン、ビルバイン、ヒメブレン、ユウブレン。 2 のストーリーを引き継いてるってことで、話が終わってるこいつらは今回空気なのか。

% [game] ACE3 日記、もしかしたら分岐の選択肢が出るのって初めてなんじゃ?編

ストーリーも主人公機体も、今までで一番スパロボっぽいなーと思ってたんだけど、選択肢まであるとほんとスパロボみたいだな。

任意編入機体にゴッドガンダムとフリーダムが追加。 ゴッドは前作で活躍したからともかく、初登場のくせにいきなりおまけ扱いの SEED にワロタ。


2007-09-07 [長年日記]

% [雑談] 明日未明にかけて台風直撃の可能性

停電に備えてこまめにコミットしよう……

つか、ほんとはとっととコンピュータの電源切って、ほとぼりが冷めるまで寝ちまえば良いんだが(苦笑


2007-09-08 [長年日記]

% [雑談] 台風の目なんだろうか?

台風が直撃してるはずなのに、雨も風も全く無くて異様なほどの静けさ。

% [雑談] 結局この辺りには台風の被害はほとんどありませんでしたとさ

太平洋側では結構被害もあったみたいだけど、こっち側が全然。 進路的にはかなり近くを通っていったはずなのになー。 山の存在とかが関係あんのかね。

% [game] ACE3 日記、ミスマル提督の喋りがクドすぎる編

何がしたいんだ、あんた(苦笑

そんなこんなで昨日はまったくプレイしなかったので、まだまだ序盤だろうと思われる。 ステージ数でいくと、これから 15 という辺り。 前作は 60 以上あった気がするんで、もし同じ程度のボリュームだとすると、まだまだ先は長そうな。

前の面では初めてゴーストが登場して、ちょっとビビり気味だったけど、難易度イージーでやってるせいもあるかも知れないがマイクロミサイルがもりもり当たるので、それほど脅威でもなかった。 っていうか、原作並みの性能出されても困るんだが。

今のところ、新規参入作品でまだ出ていないのはターン A のみ。 リーンの翼も出てないけど、こいつらは前作でおまけ的に出てたから、まあ良いやという感じで。

あと、さりげなく前作の主人公機ガンアークも登場してたり。 でもパイロットが男の方じゃないのが色々と想像させるなー…とか。 それはそれとして、例のサテライトシステム (正式名称忘れたが、ガンダム X とは別のものね) はすでに解体されているようで、今となっては普通の機体なので、よほど思い入れが無いかぎりは使う価値無し。

ところで、今回レイズナーが出てないが、機体性能的にその位置を埋めてるのはニルヴァーシュみたい。 たぶん、セブンスウェルが V-MAX に相当するものだろうと思われる。 まだ見てないけど。 レイズナーは全体的な性能はパッとしないけど、V-MAX が発動したときの強さは異常だったなあ。

今回の主人公機イクスブラウは兵装換装型の機体。 今のところ、通常型、form-B (近接戦闘特化型)、form-G (強襲型)、form-H (支援砲撃型) …と、あと今手に入ったばかりの form-T が存在する。 form-T はタイプがどうこうというか、ぶっちゃけファンネル型らしい。 フィンファンネルと同じで撃墜されると減るらしい。

イージーでやってるせいなのかはわからんけど、今回エースポイント (機体の編入とか強化に使うお金みたいなもの) の溜まり方が早い気がする。 というか、1 のときの感じに戻ったというか。 2 の溜まりにくさは異常だったからなー。 こんなん、どんだけやれば全部の機体揃えられるんだよ……とか思って、早々にあきらめてしまったという記憶があるし。 その辺を反省しつつバランス調整がされてるのかも。

それにしても、1 のときみたいにバンプレオリジナル機体が出るみたいなお遊びはもう無いのかね。 ACE オリジナルも良いけど、ヒュッケバインでブラックホールキャノンが撃ちたいとか、アルトアイゼンでステーク撃ち込みたいとか、そういうニーズにも応えてほしいんだがなあ……

% [clip] officeのイルカはゲーオタだった (sm1005387)

これは歴史に残る迷作w

再生数 20 万越えてるとかアリエナイ。

% [game] ACE3 日記、ターン A もおまけ扱いだったワナ編

任意編入機体だったよ...orz

ギンガナム閣下の活躍とか楽しみにしてたのになー。 まあ、逆に考えると、キャンペーンモードで一周する前にターン X が使えるかも知れないということで、ちょっと期待しなくもないんだが。

あと、書くの忘れてたが、何のイベントも無く GX にディバイダーが搭載。 あれ?カリスは? とりあえず、ディバイダーは素の GX の 5 倍くらいは使いやすい。

オーバーマンが小っさいくせに異様に硬いんだが、そういうもんなのかね。 原作見た方が良いですか。


2007-09-09 [長年日記]

% [雑談] 思いがけずバッテリーが新品になってしまった件

今使ってる携帯 (Vodafone 702NK) のバッテリーがそろそろヘタってきたので、機種変でもしよーかなー…などと思っていたんだが、タイミングが良いのか悪いのか、「充電中に異常加熱する可能性がある」とかで新品のバッテリーが送られてきてしまったのであった。

今までだと充電中にジーっていうノイズ音がしてたり、ほんのり温かかったりしたんだけど、新しいバッテリーにしたらそれらが無くなった。

ともあれ、携帯なんて電話できりゃ良いや〜というノリになっている昨今では、バッテリーの劣化くらいしか機種変するタイミングなんて無い感じなので、つまるところ機種変する理由は無くなってしまったのだったとさ。

% [雑談] そうそう書くの忘れてた

手遅れ(笑

名指しの件は sm781204 辺りでかなり洗脳されてるので、買うかも…… DVD も一緒に。

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

% きむら(K) [手遅れっすかw MADは今見ました。再生時間が長いのはなぜだろうと思ったら ああいうことをしてくれますかっ(笑)]

% jijixi [あまりに自然すぎて、しばらくどこがおかしいのか気付かないっすよね(笑]


2007-09-10 [長年日記]

% [Erlang] ユニットテストフレームワーク

はてな市民じゃなくてコメントできないので、ここでつぶやいとく。→erlang でテストの自動化ってどうやるのだろうか?(cooldaemonの備忘録)

わしの知るかぎり、Erlang におけるユニットテストフレームワークには eunit と erunit というのがある。 eunit は cean で簡単に入る (cean:intlall(eunit).) けど、erunit はどこで手に入るのかよくわかんない (つまり使ったことない)。 とりあえず erunit の使い方はここら辺がとっかかりになりそう。

で、erunit はよく知らないけど eunit はマクロで構築されてるのでちょっとクセがある。 マクロの使い方をある程度知らないと、うまく動かせないかもしれない。 つーか、わしもまだ、ちょっとしかいじったことないんだけど……

ちなみに、試しに以前に書いた utf-8 ライブラリ用のテストをちょっとだけ書いたことがあって、それはこんな↓感じ。

% cat utf8_test.erl
-module(utf8_test).
-include("eunit.hrl").
-import(utf8).

check_test() ->
   ?assertMatch({utf8,_List} when is_list(_List),
                utf8:check("ほげ")),
   ?assertMatch({not_utf8,{SubStr,Str}}
                   when SubStr == "\377ふが" andalso Str == "ほげ\377ふが",
                utf8:check("ほげ\377ふが")).

assertMatch はマクロで、結構無茶なことしてるので引数の文法とかはメチャクチャ。 だからエディタのシンタックスハイライトが化けまくりでぐったり(苦笑)。 第一引数がマッチケースで、第二引数がテストする式。 第二引数を評価して第一引数のパターンにマッチすれば、テストに通過するというもの。 もちろん、こういう変てこな assert だけじゃなく、もっと普通の assert も用意されているのでご安心を。

eunit.hrl を include することによって、テストローダ (test/0) が自動的に定義されるので、そのローダを起動すれば *_test という名前の関数が自動的にテストされるようになっている。 ついでに言うと、コンパイル時に eunit.hrl のあるインクルードパスを指定してやらなきゃないので、適当に Makefile や Emakefile を用意してやる。 参考までにわしの間に合わせ版をさらしとこう。

% cat Makefile
LIBS = utf8
TEST_MOD = utf8_test
EUNIT_DIR = /opt/cean/erlang/lib/eunit-2007.0405

all:
        @(cd .. && make all)
        @erl -pa $(EUNIT_DIR)/ebin -make
        @erl -pa $(EUNIT_DIR)/ebin -pa ../ebin \
           $(LIBS) *.beam -s $(TEST_MOD) test -s init stop

clean:
        @rm -f *.beam
% cat Emakefile
{"*.erl",       [{i, "/opt/cean/erlang/lib/eunit-2007.0405/include"}]}.

eunit のちょっと変わった特徴としては、おそらくテスト対象のモジュールソースにテストをそのまま突っ込んでしまえることじゃないかと思う (上記の例ではやってないけど)。 NOTEST マクロが定義されていると、コンパイル時にテスト関数 (*_test) は自動的に削られるので、beam ファイルに余計なものが含まれないようにできる (はず……確かめてないけど、eunit_striptests.erl とか見るとそないな感じ)。

テスト対象と単体テストが同じファイルにあるのは悪くないと思う (というかむしろ好ましい気がする) んだけど、世間一般ではそういうのってどうなんだろう? Java なんかだと、コンパイルしたときにテスト部分を取り除けないから嫌われる…って気がするけど、eunit のように余分な部分は取り除いてコンパイルできるなら、一緒になってた方が良いんじゃないかな。

% [雑談][D] 契約プログラミング

匿名さんが言ってるのは、もしかしてこれのことなのかな。

だとすると、これは単体テストとはちょっと違う気がする。 これは何というか、関数に入ったところで引数をチェックしておかしい値ならそこで抜けるとか、関数から出る前に適切な後始末をするとか、そういうのを一環した形で書けるようにした仕組みなんじゃないのかな。 あるいは、逆に見れば、常にその関数に正しい引数が渡されているかを保証できる仕組みというか。

単体テストというのは、それこそ今書いたようなことがちゃんと機能しているかどうかを調べられないといけないはずなので、何ていうのかなあ、レイヤーが違う話というかそんな感じ?

まあ、この機能自体はすごく魅力的だなとは思う。 結局そういうのって定型的な書き方になる場合が多いし、その部分が言語的にサポートされてるのは地味に効果は大きいような気がする。

% [雑談] ほにほにネタ数点

アカウントが無いと見れないようなページへのリンクは貼らないようにしてますので、ご了承くださいませ。

  • sm670328
    • 黒の契約者の OP 曲差し換え版
    • 尋常じゃないシンクロ率。どう考えても間違ってるけどw
  • sm769244
    • 逆バージョン

多少はテンポをいじったりしてるんだろうけど、それほど大きな編集はしてないように見える。 なのにこのシンクロ率は異常。

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

Before...

% jijixi [おお、ありがとうございます。 それにしても、テストと main が両方実行されるのって何だか奇妙ですね。 テストと通..]

% takkanm [> テスト対象と単体テストが同じファイルにあるのは悪くないと思う (というかむしろ好ましい気がする) んだけど、世間..]

% jijixi [お、賛同者発見。 doctest 良いですよね。 いつか Python でマジメに何か書く時には使ってやろうと目論ん..]


2007-09-11 [長年日記]

% [Rails] render :template でプチハマリ

あるコントローラがあったと思いねえ。

そのコントローラの多くのアクションで、特定の条件に応じて表示するテンプレートを変更したくなったわけよ。 まあ、基本的には簡単なことで、その特定の条件に応じて表示すべきテンプレート (を指定する文字列) を返してくるメソッドを作って、その値を元に render :template すれば良いだけだ。 簡単簡単。

さて、そのテンプレートを返してくるメソッドを set_template という名前にしたとしよう。 ところがそのメソッドを使いたいアクションてのが 4 つも 5 つもある。 そうするとやっぱかったるいんで、before_filter でやりたくなるじゃない。 てことで、set_template をこんな↓実装にして、

def set_template
  ...(ごにょごにょ)
  @template = (ごにょごにょやった結果)
end

before_filter :set_template とやるわけ。

……ハマる。

チョーハマる。 そしてなぜハマってるのかが理解できない。 例えばここで @template の中身が 'hoge/index' だったとしよう。 すると、こんなエラーが出る。

NoMethodError (undefined method `assign_variables_from_controller' for "hoge/index":String):

全く意味がわからない。 マジで何事かと思った。 小一時間悩んだ。

そんでまあ、結局何が悪かったのかと言うと、何のこたぁない。 @template っていうインスタンス変数は ActionController::Base 内で思いっきり予約語的に使われてるので、これを書き換えてしまった結果、いざレンダリングしようとしたときにそこら辺の処理がグダグダになってるのである。

なんつーかさー、こういう簡単に書き換えてしまえるものは、内部では難読化した名前使うとか無いのかねぇ。 っていうか、request とか params みたいなのは ActiveSupport の attr_internal を使って @_request みたいな変数名が使われるようになってんだよね。 なんで template はまんまなんだよ...orz

そんなかんじで、ActionController 内でアリガチな名前のインスタンス変数を使おうとするときは、@__template とか頭にアンダースコア二つ付けたりするのが安全かもしれないよ。 アンダースコア一個だと attr_internal が自動で使うのにぶつかるかも知れないから二つ以上がお勧め。


2007-09-14 [長年日記]

% [雑談] ようやく一息つける

実は今月入ってからプチデスマっぽいナニカでした。 精神的には結構楽しかったけど、肉体的にはツラかった……もうかなりギリギリ。

ともあれ、今日で一応山を越えたので、週末は惰眠をむさぼりたいところ。 ……まあ何事も無ければ。

さすがに年中このペースじゃ死んでしまうので、年に一回か二回程度にしてほしいところ。 よろしくお願いします、関係各位様。

よし、明日は昼過ぎまで寝て、その後ゲームするぞ。ACE3 ほったらかしだよ。 この際スパロボ OG とか買って来たい気もするけど、それは待った方が良いかな。 スパロボやり始めると、ある意味ここ最近と同じような生活になりかねないし(苦笑

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

% drkazu [大変お疲れ様でございました〜〜。 ありがとうございます〜!]

% きむら(K) [書き込みが散発的なので何かあったのだろうかと心配しておりました。 とりあえずはゆっくりご静養くださいませ :)]


2007-09-15 [長年日記]

% [雑談] やばいよ、超やばい

久しぶりに爆睡して、3時ころようやく起きたんだけど、いつもなら自動的に電源が入っているはずの iMac がダンマリ。 そもそも起動に失敗したのか、停電でもあったのかは定かじゃないが、とにかくまずい。

何がまずいって、このマシン、最近電源ボタンの調子が悪くて電源入れられないのである。 自動起動で勝手に起きてくれるのを待ってるしかない。

そんなわけで、今この日記は別のマシンから書いてるんだけど、普段キーチェーンに頼りすぎてて、あらゆるもののパスワードが思い出せない。 メールもチェックできないし、その他連絡用に用いられるあらゆるツールが使えない。

ホームディレクトリのバックアップは取ってあるけど、キーチェーンのデータを Windows で見れるとは思えないし、古いほうの iMac は OS が 10.3 だから互換性が心配だ。 まあこれから試してみるけど。

iMac 君が明日の朝ちゃんと目を覚ましてくれるかは神のみぞ知るだけど、どっちにしろこんな状態じゃまずいよなあ。 新しいマシン買えっていうお告げなのか? でも、Mac 買う金なんて無いよ……

あー、参った……

% [私信] こんな状況なので…

緊急連絡などありましたら携帯に電話するか、nifty.com なメールアドレスに連絡するようにお願いします(こっちはずっと使ってるんで、かろうじて思い出せる)。

内容的に問題無いなら、ここにツッコミを入れてもらってもかまいません。

% [雑談] 結局平穏無事にはすごせないという

なんかこういうのって法則があるよね、絶対思い通りにならないみたいな(苦笑

まあ、仕事の方でトラブルが起こってるわけじゃないだけ良いけど、自分の身にトラブルが降りかかりまくりなのはセツネー

そんでまあ、ちょっと色気を見せてしまったがために追加の仕事を頼まれてしまったんだけど、それは自分がまいた種だから良いとして、メインマシンが使えないとほんとに仕事にならないんで、大急ぎでサブマシンに開発環境を整えた。 そんだけで3時間あまりは浪費しているという切なさ。

キーチェーンは普通に 10.3 のマシンでも読めたのは幸いだった。 これが読めなかったらえらいことになってたよ。

てことで、これからようやく本来やるべき作業開始。

明日こそはのんびりできると良いなあ。 っていうか、明日になっても iMac の電源入ってくれなかったらどうしよう。 本気で新しいマシン調達することも考えなきゃダメだろうか……


2007-09-16 [長年日記]

% [雑談][Mac] 今朝も iMac ちゃんの電源は入ってくれませんでしたとさ

とりあえず、仕事は今度こそ一段落したはずなので、ちょっと状況をちゃんと調べることに。

まずはやはり正規な手続きで調査すべきだろうということで Apple のサイトで情報を探す。

このページのとおりに調べる。 その結果……

ロジックボードを交換する必要があります。お近くの Apple Store 直営店またはアップル正規サービスプロバイダにお問い合わせください。

オワタ……

って、ここでようやく思い出したが、初代 iMac で電源の問題でなんか無かったか? ……えーと……

これだ!! 対象となるシリアル番号を調べる……逆転ホームランキター!!

対・象・内

やれやれ、これからの手続きがかったるいけど、これで何とか最小出費で抑えられそうだ。 とりあえず、ギリギリ仕事ができる環境は整えてあるし、最悪の事態にならなくて良かった。

% [雑談][Mac] 保証書はいずこ?

とりあえずとっくに保証期間は過ぎてるものの、例のリペアなんちゃらが「3年以内に登録」とか決まってるってことは、電話すれば絶対いつ買ったか聞かれるだろうってことで、保証書その他を探す。

箱の中を見る。 Apple 製品の箱って捨てられないよね、なんかもったいなくて。

……なんとそこには全く手付かずのキーボードとマウスが(笑

それはともかく保証書とか説明書とかは入ってない。 いったいどこにやったんだ、過去のわしよ。

で、あれこれ探すがなかなか見つからない。 この手のものを置いときそうな場所なんて限られてるんだが……

結局どこで見つかったかというと、積読の山の中だった。 一体何がしたかったんだ、過去のわしは。

% [雑談][Mac] しかしあれだね、なんだかんだ言って一番大変な時期を何とか乗り切ってから死んでくれたんだから良かったよ

今のサブ環境で、最後の時期のようなペースで仕事をこなす自信無いもんな。 まったく iMac のやつ、忠義者め。

わし、これまでに自分で買ったコンピュータやゲーム機なんかのデジタル機器で不良品の類に当たったのって、たぶんこれが初めてだと思う。 でも、わしは悪運の強さでは定評があるので、やはり今回もそれが発揮されたということか。 ほんと、変な時期にトラブってたらえらいことになってたよ。

% [雑談][Mac] さっそく Apple に電話した

多少微妙な話もあったものの、すんなり話は進んで火曜日には集荷に来て、一週間程度で戻せるだろうとのこと。 例の不具合に該当するかどうかの最終判断は、物を見てからになるということで、超運が悪かったりすると有償修理になったりする可能性も無くはないが、まあ大丈夫だと思いたい。

ちなみに「微妙な」というのは何かというと、いきなり「ログイン ID とパスワード教えれ」と言ってきたこと。 少々面喰らったんだけど、よくよく聞けば要するにハードディスクのデータが消える可能性があるから、その場合はバックアップ取っておいて書き戻して返すよ、そのために必要だよ、ってことらしい。

でも、見られると恥かしいデータとかはともかく、仕事に関係するパスワードとか満載だし、ちょっとそれを教えるのはいかがなものかと思って、結局お断わりした。 一応ちょっと古いけど大事な部分のバックアップはあるし (一ヶ月前だった。つーか、手が空いた今まさにやろうと思ってたのに…)、他は消えてもガマンかなと。 っていうか、ロジックボード取り替えになったとしても、ハードディスクの中身が消えるとは思えないんだが、どうなんだ。

しかし、一週間か、一週間……実質的には十日くらいになりそうだけど、とにかく長いなぁ。 そんな長い間、Windows マシンをメインにしてすごすのか。 やれやれだ…… もしハードディスクがまっさらになって帰ってきたら、さらに二日三日はかかりそうだし、非力だけど古い iMac をメインにした方がマシかなあ。


2007-09-17 [長年日記]

% [game] ACE3 日記、とりあえずまとめ編

完全にオフにはならなかったものの、それなりにヒマがあったのでちまちまとプレイしてた今週末であった。 で、一応ストーリーモードはクリアして、二周目をやってるところ。 分岐があるせいか、一周分のステージ数はわりと少なかったね。 そんな感じで感想とか。

  • ターン A
    • 種系と同じでおまけ扱いなのがせつない(前に書いたが)
      • そのくせ歌が入ってたりで、力の入れ方の度合いがわからん(これは種も同じだけど)
    • 「ミサイル」という名前の武器があって、もしや…と思ったらほんとに胸から出して放り投げるやつだった
      • 敵が目の前にいるときに投げたりすると、爆風でひどい目に(笑
      • つーかこれスパロボα外伝のときにもあったけど、原作見てないと意味不明だよね、ミサイルって言われても
    • 結局ターン A 以外の機体が出てきてないが、どういうこった?
      • さすがにボルジャーノンとかカプルを出せとは言わないが、お兄さんとかおすもうさんとかは必要だろう (これから使えるようになるのかは不明)
    • ビームドライブユニットのブイーンって音がステキすぎる
  • ガンダム X
    • 素の GX は、いらない子
      • DX のもそうだけど、期待してたサテライトキャノンの振り回しが無いので、サテライトキャノン以外能が無い GX は結局あんまり役に立たん
    • GX ディバイダーは使いやすい
      • サテライトキャノンの代わりにディバイダー、ハンドグレネードの代わりにバズーカが装備されていてバランスの良さが超アップ
    • DX は、まあ普通に強い
      • ツインサテライトキャノンは溜め時間がやたら長いし、やっぱり振り回したりはできないので、それほど魅力的じゃなかった (残念)
    • DX + G ファルコンはサギ
      • なんでサテライトキャノン撃てないんだよ、G ファルコンの意味無えー
      • 思いっきりサテライトキャノンが前向いた状態なのに、なのにー
      • 一発こっきりで良いから溜め無しでサテライトキャノンが撃てるとか、そういう燃え要素が欲しかった
    • なんかエアマスターとレオパルドがパワーアップしないんですけど
      • 青とか赤はー?
    • 二周目にはヴァサーゴとアシュタロンが使えます
      • 敵キャラも使えるようになるのは ACE のお約束だけど、こいつら使ってるとストーリーモードがカオス(笑
  • エウレカセブン
    • ジエンドがストーリー内で普通に使えるようになるのが微妙に謎
      • でもジエンド超強い
    • ニルヴァーシュは spec2 になるとライフルが無くなって戦艦とか落とすのが面倒
    • 303 の性能には不満がある
      • 909 と比べて大した違いが無いのはどうなんだ?

分岐のせいで、片方だけしかやらないと手に入らない機体が存在する。 分岐は二回あって、わしはどっちも向こう側を選んだんだけど、そしたら W とかナデシコとかリーンの翼とかの機体が全然手に入らなかった。

そんな感じで、とりあえず二周目まではクリアして、その後プレイし続けるかは気分によってって感じかな。 まあ、普通に遊べるゲームでしたという感じで締め。

% [game] ACE3 日記、おまけを楽しむ編

エクストラミッション1をクリアしたらファーストガンダムが手に入った。 で、能力値を見て愕然とする。

バーニア強化不可ってヒドすぎる!!

通常の機体は手に入った時点で攻撃力以外は 5 段階まで上げられるようになってるんだけど、こいつだけはなぜかバーニアの能力値が 1 より上がらなくなってる。 しかもその状態だとバーニアのゲージは 0 に近くて、ちょっとダッシュするだけで、あっと言う間にゲージ切れを起こす始末。

一応武器にはハンマーからジャベリンまで揃ってて気合入ってるんだけど、このバーニア値は厳しすぎやしないかと思ったよ。 ……思ったんだよ。うん思ったんだがね……

実は超強い。

何が強いって、まずビールライフルの威力が半端じゃない。 まさに戦艦を一撃で沈める威力。 さらに格闘攻撃の踏み込み距離と速度が尋常じゃなくて、ガンガン敵を斬れる。 他の武器もかなり性能が良くて、緊急回避の性能も良いし、弱点てほんとバーニアが切れやすいことだけ。

ビームライフルの弾数は 20 で、これを撃ち切ったあとのチャージ時間が異様に長いのがちょっと残念なんだけど、フル改造すると弾数リミットを解除できるので、そこまで行くとインチキくさい強さになりそうな予感。

ちなみにガンダムが楽しくていろいろ試してるうちに、パーフェクトガンダム(笑)とかフルアーマーガンダムとかも手に入ってたり。 もう何でもありだな(苦笑


2007-09-18 [長年日記]

% [雑談] iMac が動かなくなって 4 日目

Windows 上にちまちまと生活装備を整えていく毎日。 今朝ようやく skkime を入れたり (まあ vim では skk.vim を入れてあるので、Firefox + mozex があれば、大抵の場合困らないんだが)。 メーラは設定がかったるいので Web メーラに頼りっぱなし。

だいたいのところでは、ほぼ不便無く生活できるようになりつつあるけど (快適かはともかくね)、問題はモニタだなあ。 やっぱり CRT は目が疲れる。 この際、やっすい液晶モニタでも調達してくるかな。 よほど腐ったようなのじゃなきゃ CRT よりは目に楽だろう。 どうせ間に合わせだし、2 万くらいで買えるの無いかな。

% [雑談] 液晶モニタ調達

手が空いたら札幌に買い物に行きたいと思ってたので、そのついでにモニタを物色してやろうと思い立っていざ出発。 んで、わしの知る限り液晶モニタが一番安いと思われるツクモに行ってみたら、ACER の AL1916W という 19 インチワイド型で 1440x900 のやつが約 2 万 2 千円で置いてあったので、思わず即決してしまった。 こんな値段でこのサイズの液晶モニタが手に入るなんて、すごい時代になってたんだね。 一丁前に DVI 端子まで付いてて、これでうっかり Mac mini とか買っちゃっても安心だ(ぉぃ

そんなこんなで、帰ってきてさっそく接続。 むちゃくちゃ明るいな、安物のくせに。 コントラストと輝度を最低にしても、まだ明るすぎる。 個人的には大きなお世話。 まあ、iMac G5 もわしにとっては明るすぎるんだが。

最初、なんだか妙にチラつく感じがして、見にくいなあと思ったんだけど、なぜかリフレッシュレートが 75 Hz になってた。 液晶で 75 Hz とか無駄じゃねえ?つーか逆効果な気が。 速攻で 60 Hz に直して一安心。

いやあ、ともあれ良かった良かった。良い買い物したな。 …………あれ?そう言えば、本来の買い物忘れてねぇ?

わざわざ札幌まで行ったのに、ダメすぎる...orz

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

% あろは [僕もツクモで 2 万ぐらいで買った ACER の AL1914 を愛用してます. http://www.amazon..]


2007-09-19 [長年日記]

% [Rails][Windows] Windows で Rails 環境を構築する場合、何が一番てっとりばやいのか模索中

わしの場合、Rails の環境は FreeBSD マシンに存在してて、それを ssh 経由でいじってるだけなので、デスクトップが Mac だろうが Windows だろうが、Rails の環境自体にはあまり関係が無いんだが、もろもろの事情で Windows 上に環境を構築したい場合もあるはずで、そんなときどうすれば良いのかというのを調べているところ。 文が無駄に長い。

ざっと調べてみた結果、どうやら定番は Instant Rails + RadRails なのかねぇというところ?(疑問形)

最近の Instant Rails には RadRails が含まれてるようなので、あとは Eclipse を用意すれば良いってことだろうか。 他に RadRails 関係で、AptanaRadRails と RDT をパッケージしたものをリリースしている模様。 どっちにしろ Eclipse が必要なのはちと微妙だな。や、すごく個人的な好みの問題だけど(苦笑

……って言うかね、今、Instant Rails をインストールしてみながらこれを書いてるんだけど、「解凍するだけでインストール完了」ってのは良いとして、その「解凍」が異様に時間かかるのには泣ける。 いつ終るんだ、これ。

とりあえず、まとまらないので、ざっと参考になりそうなリンクを羅列して一旦終了 (まだちゃんと読んでないので、どれが役に立つのか不明)。

% [雑談] なんかよくわからんが、ツッコミができない

どこの何が悪いのかわかんないんだけど、少なくともウチの環境から自分の日記にツッコミができない。 できないというか、しても反映されない。なぜだ? そのくせ更新は普通にできるのが謎。

でも、原因を追求する元気が無いので、とりあえず放置だな。 一時的なものかもしれないし。

% [雑談] インストール後に再起動ボタンが付いたダイアログをポップアップするアプリとか死ねば良いのに

うっかり押しちゃって、ssh 経由でやってた作業がブッツリ切れたよ。 putty も何でそんなすんなり終了するんだよ、悪あがきしろよ。 そんなときに限って screen 起動すんの忘れてるんだよ。

つーか、何で単なるアプリのくせにシステムの再起動とか要求すんだよ。 おまいだおまい、TortoiseSVN。 いつの時代のソフトだ、95 かっての。 百歩譲って再起動がどうしても必要だって、「再起動してね」ってメッセージ出すだけで良いんだよ。 実際に再起動するボタンなんかイ・ラ・ネ。

はあ……なんかスンゴクやる気なくなったけど、中途半端なまんまほっとくわけにもいかんし、非常に努力して気を静めて作業を再開中。

……ほんと再起動ボタンとか滅びれば良いのに。

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

% nido [NetBeans 6.0 betaが好感触です。 JRubyとRailsが入るので、これをインストールするだけでOK..]

% jijixi [おりょ、そんな選択肢が。ノーチェックでした。 試してみようと思います。]

% jijixi [あ、ツッコミできた。]


2007-09-20 [長年日記]

% [雑談] やばい、スターテンビリオン欲しすぎる

クラブニンテンドーの新プレゼント

懐しい。 むちゃくちゃ欲しいので会員ページに突撃してポイント確認。

…… 570 ポイントしか無い...orz

650 ポイントまで、あと 80 ……

% [雑談] よく見たら今月一杯で消える分のポイントが 185 もある件

まずい。これが消えるとテンビリオンが果てしなく遠のく。 だが、80 は結構でかいぞ。 ソフト一本買ったくらいじゃ追い付かない。

…… wii 本体が 80 ポイントか……あー!!どーしたら!?

% [雑談] さらに…

ヴァーチャルコンソールに N64 の『罪と罰』が追加されるという追い風(?)が……

いや待て、焦るな、焦るなよ、わし。

% [game][clip] PS Store(PSP用PSソフトDL販売)、PS3不要になりPCから利用できるように (カジ速)

PS3 を買う意義が著しく減った。 そして PSP の存在価値が激増。


2007-09-21 [長年日記]

% [雑談][Mac] あっと言う間の修理

日記には書いてなかったが、18 日に Apple から委託された運送業者が iMac を引き取りに来て、持っていかれてたんである。 で、その後何も音沙汰が無いんで、どうなってるか調べるかなーと思っていた矢先の今日、ようやく「届いたのでこれから修理します」といった内容のメールが来た。 そのメールの受信時間が 14 時頃。

おいおい、今日ようやく届くって遅すぎねーか? いつになったら帰ってくるんだよ、iMac ちゃんは……

などと思ってたら、今まさに 18 時半頃、「修理が終わって発送しました」メールが来た。 どう見てもロジックボード取り替えただけです。ほんとうに(略

そんでまあ、「届くまで 2 営業日」と書いてあって、なんかすごく微妙なタイミングだなーと思ったり。 すでに発送したっていうなら、「運送会社の」営業日かなあ? それなら土曜はまず営業日だろ? 日曜はどうだ、日曜に配達に来る会社はあるけど、一般的なのかはわからんな。 そういや、今週末はまた 3 連休なんだよな。 祭日はさすがに営業日ではないだろ。

……とか考えると、いつ届くのか全く予想が付かん。

% [雑談] どうでもいいが、今日は暑すぎる

なんかこんなに遅い真夏日は観測史記録らしい。


2007-09-22 [長年日記]

% [雑談] ほにほに最終回

なんか予想の斜め上を行く終わり方したなあ。良い意味で。

やはり第二期支援のためにも DVD 買わないと。

% [雑談][Mac] おかえり iMac

なんか知らんが今日届いた。 2 営業日って丸一日のことだったのか、知らなかったよ :-p

つーか、むしろ例のメールの方が遅れて出されてたんだろうけども。

ともあれ、大したトラブルも無く帰ってきてくれて良かった良かった。 結局、ロジックボードではなく電源交換だけだったらしい。 まあ、どっちみち部品はアセンブリなんだろうから、交換なんて一瞬だろうけど。 ついでに CD が飛び出す問題も対処してくれたらしいのは良い。

…で、ここまでは良いんだけど、修理内容のただし書きの部分がどうにも……

検証の為「jijixi」のパスワードをリセット致しました。お客様の設定は改めてお願い致します。

……おいおい、「仕事で使ってるものだからパスワード教えるのはちょっと…」と断わったことは無視か? そこまでするつもりなら、最初っからパスワードとか聞くなよ。 まあ、この場合はパス教えるのとは違ってキーチェーンにはパスワードがかかったままになるから、多少はマシだとしても、このアカウントでログインしたのは間違いないんだろ? なんだかなあ……

PGP や外向けの ssh の秘密鍵にはパスフレーズ設定してあるし、キーチェーンに任せてないパスワードでログインしただけで見えちゃうのは、たしかこの日記のパスくらいなもんだから良いっちゃ良いけどさー。

ほんとは念の為あらゆるパスワードを変更して回りたい気分だけど、さすがにめんどくさすぎるからやめとこう。 信じてるよ、Apple さん。 なーんか、すっきりしない決着だなー……

% [雑談] GUINNESS FOREIGN EXTRA STOUT うめえ

いただきもの。

そこらで売ってる缶入りギネスも、あれはあれでうまいが、これはまた一味違う感じ。 黒ビールというと (缶入りギネスも含めて) 苦味は弱めというイメージがあるけど、これはしっかりとした苦味があって、かつギネスならではのコクもどっしりとあるって感じかね。

こんなの飲んだら、もう発泡酒なんて飲めないよ。 まあ、元々飲んでないけど(笑

発泡酒とか第三のビールとか飲むくらいだったら、おとなしく焼酎でも飲んで方がましだよなー。 でも、たまーに新作が出たときに試しに買ってみて、「おお、結構ビールっぽい」と驚かされてはいるが。 ビールメーカーさんもがんばってはいるよね。 せっかくがんばっても、税率上げられてショボン…っていうのがかわいそうだけど。

% [game] ニコ某のシェンムープレイ動画がおもしろすぎる

アカウント持ってる人は、『シェンムー』でタグ検索すべし。 こういう自由度が高すぎるゲームとニコ某の相性良すぎ。


2007-09-25 [長年日記]

% [雑談] 今日は朝から土砂降り

もう、超雨。そして超かみなり。 ちょっと停電が怖い。


2007-09-26 [長年日記]

% [雑談][OCaml][Scala] なんだかなー

某所にツッコミ入れようと思ったけど、ちゃんと書くのが面倒だから、ここでつぶやくだけにしとく。

% ocaml
        Objective Caml version 3.10.0

# let test f = print_endline f#getName;;
val test : < getName : string; .. > -> unit = <fun>
# class hoge = object
    method getName = "hoge"
  end;;
class hoge : object method getName : string end
# class fuga = object
    method getName = "fuga"
    method dummy = "dummy"
  end;;
class fuga : object method dummy : string method getName : string end
# test (new hoge);;
hoge
- : unit = ()
# test (new fuga);;
fuga
- : unit = ()

OCaml にできて Scala にできないのは何故かというのは、わしには説明できない。 たぶん、暗黙のアップキャストを許しているか否か、とか、その辺の型システムの違いが関係してると思うんだけど。

% [game] 旬を逃がした感はありつつも、スパロボ OGs をゲット

や、ニコ某のアカウント制限が厳しくなって夜の暇潰しができなくなっちゃったんで (という自分への言い訳)。 暇どころか睡眠時間まで潰しちゃう可能性があるのが危険なんだけど、今のところは自制が効いてますよ。 しかし、どうせ旬を逃がしたなら、思い切って外伝とやらが出るまで待てば安く買えたかもしれないのにね。

まあ、ともあれまったりと進行中。 プレイ動画を見てグルンガスト零式には絶望したので、迷わずリュウセイ編を選んだり。

プレイ日記は、おそらくよほどのことが無い限り書かない。 なんでかっつーと、日記に書くと変に勢いがついちゃうことがままあるから。 もう歳だし、睡眠は大切だよね(笑

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

% soutaro [{ getName : String }という型は、多分{ getName : ∀'a <: String . 'a..]

% jijixi [どひー、難しいなあ(汗 つまるところ、Scala でも OCaml と同様の型推論はできるかも知れないけど、あまり研..]


2007-09-27 [長年日記]

% [Rails] HTML::Document

ActionController には色々 functional test 用の assertion が追加してあって、その中の一つに assert_tag というのがある。 要はレスポンスボディを調べて、指定したタグが存在するかどうかチェックしてくれるものなんだけど、コントローラだけじゃなくヘルパーの単体テストとかにも使えると便利なのに…と思って中身を調べてて見つけたのが、タイトルに書いた HTML::Document。

で、これは何かと言うと XPath みたいなもんで、かつ XML だけじゃなく X が付かない HTML にも使えるという感じのもの。 多少のクセに慣れてしまえば、非常に簡単に使えて、なんというか……最初っからこれの存在を知ってれば、どれだけ楽ができたのだろうか?と鬱入るほどだったりするよ...orz

ファイルが actionpack-?.??.?/lib/action_controller/vender/html-scanner/html なんつー入り組んだ場所にあるんで、Rails 環境外で使いたいときの綺麗な方法がよくわからんのだけど、とりあえず Rails 内ではうまいこと自動で読み込まれてくれるので、普通に使える。

基本的な使い方はこう↓。

% ./script/console
Loading development environment.
>> HTML::Document
=> HTML::Document
>> doc = HTML::Document.new(<<EOS
<html>
<head></head>
<body>
<h1>hoge</h1>
<p>fuga</p>
<div class="piyo" id="moke">foo<br>bar<br>baz<br></div>
</body>
</html>
EOS
>>   )
=> #<HTML::Document:0x9a25db0 ...(略)

サンプルとして突っ込んだ HTML はすごくテキトー。 とりあえず、br タグが XHTML 形式じゃないので、REXML::Document だとエラーになる類のソースだというのはわかると思う。

>> body = doc.find :tag => 'body'
=> #<HTML::Tag:0x9a25680 ...
>> div = body.find :tag => 'div'
=> #<HTML::Tag:0x9a24938 ...
>> div['id']
=> "moke"
>> div['class']
=> "piyo"
=> "<div class=\"piyo\" id=\"moke\">foo<br>bar<br>baz<br></div>"
>> div.children.each {|ch| p ch.to_s}
"foo"
"<br>"
"bar"
"<br>"
"baz"
"<br>"

その他、細かい使い方はソースを読むべし。 find メソッドに渡すハッシュのフォーマットに関しては、ActionController::Assertions::TagAssertons のマニュアルが詳しい (assert_tag の引数は実質 find に丸投げされているのとほぼ同意)。


2007-09-28 [長年日記]

% [雑談] かぜひいた〜

つーか寒いよ〜 つい一週間前には 30 ℃越えたりしたくせに今日は 22 ℃とか、身体が付いていかないっす。 こじらせないように、週末はおとなしくしてよう。

……おそらく現実はこうだ。

こじらせないように、週末はおとなしくスパロボしてよう。

% [Rails][Ruby][雑談] 予約語もどきとの競合を恐れて、変数の頭にアンダースコアを付けまくってしまう病

なんつーか、変数の宣言が存在しない言語の呪いかねぇ。 いつ、うっかり何かとぶつかるかわかんないから、そこで変にハマるくらいなら汚なくても最初からアンダースコア付けといてあらかじめ回避だ〜とか思ってしまうわしがいるわけで。

変数の宣言が必要無いというのは、たしかに楽ではあるんだけども、例えば代入の式を書いたとして、それが上位スコープの変数を書き換えようとしてるのか、新たにローカル変数を作っているつもりなのか、コードを見ただけじゃ区別が付かないのは、時に問題だよなーという。 やっぱ、上位スコープに影響を与えずに確実にローカル変数を作る方法は必要じゃないかな。

なんか、1.9 にそんなようなものの導入予定があったような無かったような気がするけど、とにかくわしは欲しいと思ってる。

% [clip][Erlang] マルチコアでスケールしないErlangVM (みかログ)

うーん、たしか ring benchmark ってシーケンシャルにメッセージを送っていくものだから、スケールしないのはむしろ当たり前なんじゃないのかな。

並列性が期待できない処理を smp にやらせても、逆にオーバーヘッドが増えて遅くなるだけというのは納得の行く結果だけど……なんかわし、勘違いしてるだろうか。

% [clip][Erlang] マルチコアでスケールしないErlang その2 (みかログ)

トラックバックが来てたので。(例のエントリの追記を参照)

なるほど、あのベンチマークそのものでスケールしないと判断したんじゃなく、すでにそういう事例があったってことですな。 SMP での性能にはわしも興味があるんだけど、いかんせんそれを試すための環境が無いのが……

結局、現時点では SMP 環境だからと言って自動的にスケールしてくれるなんてのは夢ってことかなー。 一箇所でもジャイアントロックなところがあると、そこを起点に全てが詰まって遅くなるのは共有メモリ方式だろうがメッセージパッシング方式だろうが同じだね。 Erlang にはロックが存在しないと言っても、同期待ち合わせがあれば (扱いの簡便さはともかく) 処理がブロックするのは同じことだからね。

メモリの食い過ぎを気にしなければ、SMP モードで動かすより CPU の数だけ VM を起動してクラスタ化した方が速いんじゃないかと思うんだけど (ただし、各 CPU にうまく VM が一個ずつ割り振られることが前提)、やっぱり試す環境が無いので机上の空論。 まあ、その場合でもそう簡単に通常モードより速くなるとは思えないが。

前にも書いたけど、現在のコンピュータのアーキテクチャや OS の構造から考えて、重い処理をするプロセスが複数あるみたいなシチュエーションじゃないと SMP モードは性能が出ないと思う。 この辺、きちんと説明するだけの教養が無いのが残念だけど、わしのゴーストはそれで間違いないと囁いているよ(ぉぃぉぃ

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

% TrackBack [http://blog.mikage.to/mika/2007/09/erlangvm_fdaf.html みかログ..]


2007-09-30 [長年日記]

% [雑談] 負荷が大きすぎると、この日記が止められた件

負荷が…とかそんな話が自分に降りかかるとは思ってもみなかったよ。 ともかく、しかたないのでとりあえずリファラの表示を止めてみたりとか。

ちなみに止められてるのは index.rb だけなので、わし自身は設定変更したりとか、このように日記を更新したりとかできたりする。 そして、おそらく RSS で読んでる人は、復旧する前にすでにこの文章を読んでいることであろう。

% [雑談] ぽてまよ 1 (DVD) が届いた

なんかあんまり詳しく調べないで注文しちゃったんだけど、これって 2 話分しか入ってないのね。 あと 5 本も買わされる運命なのか……早まったか?(苦笑

とりあえず、初回特典のラバーキーチェーンをどう処理したものか悩み中。 いや、悩みようもないというか、とにかくどうにもしようがないので放置するしか……

% [雑談] グレンラガンは歴史に名を残したな

正直、最後までこんなに盛り上がって終わるなんて、誰が予想しただろうか。 絶対尻切れトンボになって、ぐだぐだに終わると思ってたよ(苦笑

それにしても、最初のうちはいかにもスパロボ登場を狙ってるなーと思ってたんだけど、最後の方は完全にスパロボは無理だよなー。 なんかもうイデが発動したイデオンとガチで殴りあって、しかも粉砕しちゃいそうな勢いってどうなのよ(笑

% [game] スパロボ OGs 日記、グルンガストシリーズの必殺技がカッコ良すぎで困る編

計都羅ごう剣 (なぜか変換できない…つか無理) 暗剣殺も計都瞬獄剣もカッコイイし強い。 GBA のときは零式だけが異様に強かった感じがするけど、今回は全部強いな。 地形適応が海以外 S なのが零式並。

あと戦闘 BGM の優先を機体に設定すると、弐式の戦闘時に初代αのときの音楽が流れるのが地味に感動。 キャラクターごとにわけのわからん BGM 増やすより、こういうのの方が嬉しいよ。

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

Before...

% jijixi [メールアドレスはこのページの下の方に書いてあるっす。 送料は着払いとかで良いのかと思ってましたけど、問題あります?..]

% きむら(K) [おお、気がつきませんでした >アドレス。 着払いでOKですよ。ただ、わたし以外の誰かが受け取るときに 問題なので、発..]

% jijixi [> 発送時に(発送したことを)知らせてもらえると 了解です。 どうせなら都合のいい曜日とか時間帯とかあれば、教えと..]


トップ 最新 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com