トップ 最新 追記

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

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-10-01 [長年日記]

% [雑談] トラックバックを止めてみた

真っ当なトラックバックが来るのが非常に稀なわりに、スパムの量がハンパじゃないので。 過去に届いたトラックバックを表示しつつ、トラックバックリンクを非表示にする方法がわからんので、当面全部表示されないでしょう。

% [Rails] Rails 2.0 の Preview Release が出たので、使ってみたい気マンマンなんだが…

現在のバージョン (1.2) に対するスキルも、まだちゃんと自分のものになってない感じの状態で、手を出すのは混乱の元かなーという気もする。

うーん。

% [Erlang] メソッド名一覧の表示 (DouKaku?)

cooldaemon さんとこ経由で。

たまには Erlang のコードも書かないと忘れてまうわ〜ということで、ちょっくらやってみた。 お題目は『一覧の表示』となってるけど、問題文では『すべて呼びだす』となってるんで、apply するところまでが遠足ですよね? ……少なくとも遠足ではないな。

lists:prefix 使っちゃうとあまりに cooldaemon さんと同じなんで、あえて別の方法で。 ちなみに module_info/1 にキーを与えるとそれに対応する値が得られるんで、proplists とか使う必要無いです。 apply のためにインチキ引数リスト作ってるところがダサすぎる気がするんだけど、短くキレイに書く方法が思いつかんかった。

% cat test_apply.erl
-module(test_apply).
-compile(export_all).

get_list(Mod) ->
   [Pair || {FName,_Arity} = Pair <- Mod:module_info(exports),
            string:str(atom_to_list(FName),"test_") == 1 ].

apply_all(Mod) ->
   lists:foreach(fun({F,A}) ->
                    apply(Mod,F,tl(lists:seq(0,A)))
                 end,
                 get_list(Mod)).

test_hoge()    -> io:format('hoge~n').
test_fuga(A)   -> io:format('fuga ~p~n',[A]).
test_piyo(B,C) -> io:format('piyo ~p ~p~n',[B,C]).
Eshell V5.5.5  (abort with ^G)
1> c(test_apply).
{ok,test_apply}
2> test_apply:apply_all(test_apply).
hoge
fuga 1
piyo 1 2
ok

引数の型の不一致とかまで対処するとなると、結構楽しく(笑)なってくるんだけど、そこまでやるのはちょっとめんどいので止めとく。

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

% cooldaemon [module_info/1 ってのがあるんですね!マニュアルは良く読もうっと。]

% cooldaemon [DouKaku? に投稿しませんかー?]

% jijixi [> DouKaku? に〜 登録必要なのがかったり〜って感じでいまだに投稿したことないんですよね(苦笑 まあ、気が..]


2007-10-04 [長年日記]

% [雑談] 片道きゃっちぼーるのカップリング曲に変なハマり方をしている件

この何とも言えない電波っぷりが脳を良い感じに揺らしてくださいます。

昔のゲームっぽいというかテクノっぽいというか、そんな感じの効果音がピコピコ鳴ってる中に意味不明な歌詞が乗ってて、最初聴いたときは「なんじゃこりゃwww」と思ったんだけど、何度か聴いてるうちになんか止められなくなってきた……病気かも(苦笑

もしかして、セラニポージ亡き今、わしが次にハマるべきなのは MOSAIC.WAV なのだろうか?


2007-10-05 [長年日記]

% [雑談] 変な時間に起きてしまってなんか色々変

昨夜、10 時くらいに異様に眠くなったので寝たんだが、なぜか 2 時に目が覚めてしまって、そのまま眠れずに朝までスパロボとか。

なんか異様に頭がスッキリしてて、でも身体はボンヤリしてたりして、なんだかよくわからん状態だが……

% [game] スパロボ OGs 日記、もうすぐ OG1 クリア編

追加要素が少なすぎて、ちょっとつまんない。 敵の配置なんかの細かい違いを除けば、OG1 の追加要素は、OVA 版のストーリー (2.5 のストーリー?) を暗示させるデモと、アーマリオンくらいなもんじゃなかろうか。

とっととクリアして OG2 に進みたいなあ。 ちょろっとフライングでお試ししてみたところ、いきなりエクサランスが出てきたり、向こう側のストーリーが入ってたりで、2 の方はかなり追加要素が期待できるので楽しみ。 つーか、1 の方の追加要素がこんなにショボいって知ってたら、最初っから 2 を始めてたのになー。 まあ、ツインユニットのおかげで、それなりに新鮮なプレイはできてるけど、ストーリーが今さらすぎて……

エクサランスは最終フレームがどっちになるのかと思ってたんだけど、なぜか主人公が双子になってて両方出てくるんで、きっとフレームも両方出るんだろう。

% [雑談] 仕事を思ったように進められたときの爽快感

わしは仕事をするときには、いつもそういう感じのものを追い求めている気がする。

わしは大抵、前の日の寝床で「明日はこんな作業をやろう」とおおまかに決めるのがパターンなんだけど、 それを次の朝にもう少し具体的な予定に書き換えて (頭の中でだけど)、そのとおりにこなせたときには、なんかこう心の中でガッツポーズが出る。 その程度のことで喜ぶなよ…って人もいるかもしれないが(苦笑)、わしは自分の計画性の無さをイヤというほど自覚しているので、この程度の「計画通り」でも達成できると嬉しいのよ。

というか、ロングスパンでの計画を立てるのが非常に苦手なので、例えば納期までに仕事を仕上げる…みたいなシチュエーションでは、とにかく一日ずつ確実にできるかぎりの作業をこなしていく必要があるのね。 要するに、どの程度手を抜いて良いかがなかなか想像できないから、とにかくできるかぎりやっておかないと不安でしょうがないわけ。

んで、ここ二三日の間、いろんな理由で思ったように仕事を進められずにいて、それがかなりストレスになってたんだけど、今日はわりと思ったような作業ができてご機嫌なのであった。 まあ、その勢いで、こんな駄文を書き上げるくらいにはご機嫌(謎

結局何が言いたかったのかは、自分でもよくわからんです。 ノリだけで生きてるなー。つーか、そんなんで良いのか、良い歳して(苦笑


2007-10-08 [長年日記]

% [game] スパロボ OGs 日記、エクサランスはいつ出るんだ編

今週末はたんまりとスパロボを堪能しましたとさ。 おかげで眠いから今日はもう寝る。

まあ、そんな感じで三日間どっぷりやってたおかげで OG2 の 25 話辺りまで進んだんだけど、最初の顔見せ以来エクサランスが出てこないのが大変不満。 実は思いっきり過去に飛んでて、OG2 をクリアした後に OG1 をやると出てくるとかって話だったら泣けるな……

アクセルのキョウスケに対するスタンスが GBA 版とちょっと違ってたりして、その編の話はちょっとおもしろいんだけど (仲間になる可能性もあるのか?)、最初のエクサランス以外は新ユニットなんかも全然出てこないので、微妙につまらん。 まあ、敵側には濃いおっさんどもが出てきててちょっぴり楽しげだけど、そっちもまだ本格的には話が始まってないしなあ。


2007-10-10 [長年日記]

% [Ruby][Python][雑談] Ruby に比べて Python の面倒なところ

日記の CGI を止められたり、それに関係してリファラの表示をやめたりとかしたせいで気付いてなかったんだけど、なんか言及されてたようなので、今さらだけど書いてみる。

といっても、当時の自分が何を考えていたか、はっきりとは思い出せないんだけども。 まあ、文脈から考えるに、「Python は Ruby に比べると面倒なこと多すぎる。」という言質は「ちょっとした日々のツールをでっちあげたりする」というシチュエーションにおいての話であるのは間違いない。 で、わしにとってのそういう「ちょっとしたツール」というのは要するにテキストの処理とか、そういうものなわけだ。 そんな感じで考えると、この場合の「面倒なこと」とはおそらく以下のようなものだろうと思われる。

  • self 地獄
    • メソッドの引数にいちいち self を書くのがめんどい……というか書き忘れてエラーになるのがうざい
    • インスタンス変数を触るときに、いちいち self が必要なのがめんどい
  • return 地獄
    • 関数から値を返すときに常に return が必要なのがめんどい
  • 式地獄
    • 代入が値を返さない、制御構造が値を返さない、などが影響して余計な変数が必要になったり
    • print が文なくせに、lambda に文が使えなかったり、微妙にかゆいところに手が届かない
  • import 地獄
    • コマンドライン引数に触るだけなのに、いちいち import sys とか、どんだけ?
    • exit するだけなのに、いちいち以下略
  • 正規表現地獄
    • 正規表現リテラルが無いなんてめんどい
    • いちいち import re とか以下略
  • インデックス地獄
    • IndexError とか KeyError とかうざい
  • 文字列地獄
    • 変数展開が使えないなんてめんどい
    • とはいえ Perl のは、やりすぎだと思うんで Ruby くらいのをくれ

念の為エチケットペーパーを敷いとくと、上記はあくまでも「ちょっとしたものをさっと書き上げる」場合の話であって、全てのシチュエーションにおいてこれらが問題になると思っているわけではない。 大きめのものをきっちり作るなら、逆に有利に働くものも多い。

あとまあ、小さいものを書くシチュエーションであっても、Python の方が好みの部分とかもそれなりにある。 optparse モジュールなんかは、Ruby のものより Python のものの方が作りが好みだし。 引数を解析した結果を辞書として取れるのとか良いよね。 Ruby だと解析結果のハッシュが欲しいときは、あらかじめ用意したハッシュをコールバックで破壊的に変更したりとかしなきゃないから、なんか美しくない。

他にはキーワード引数なんかは、どんなシチュエーションでも嬉しい要素じゃないかと思う。 Rails ではハッシュをキーワード引数代わりに使ってたりするけど、あれって使う方は良いけど、同じようなメソッド書こうとすると面倒なんだよな。 Ruby にも是非キーワード引数を。

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

Before...

% jijixi [あー、それはご存知じゃなかったっす。 って言うか、locals は知ってましたけど、その組み合わせは思いつかんかった..]

% opapi [>print が式文なくせに、 これはpython側でもおかしく思ってる人も多いみたいで、 3.0で修正されるらしい..]

% shinh [ちなみに私も最近どっかで見て知ったんで自分で考えたわけではないです。]


2007-10-11 [長年日記]

% [Python][Ruby][雑談] Python に比べて Ruby のちょっとなんとかしてほしいところ

基本的にわしが普段使ってるのは Python じゃなく Ruby なので、どうしても視点が Ruby から見たものになってしまうんだが、まあ、逆パターンもあって良いだろうと。 ほとんどは、今までにも何度か書いたことがある Ruby に対するグチの焼き直しだが。

  • call ウザい
    • メソッド (関数) 呼び出しにカッコ必須でも良いから、Python のように普通の関数と関数オブジェクトが区別無く使えるのが好き
    • だから LISP 1 vs 2 戦争 (謎) でも CommonLisp より Scheme 派
  • 関数内ローカルな関数が定義できなくて死んだ
    • ネストした関数定義は、単に呼び出された時点で self.class.class_eval してるのと同じだという事実
    • そゆことやりたいときは Proc で……でも call ウザいって言ってるじゃんね
  • 既存のメソッドから Proc が欲しくなったときに死ねる
    • hoge.method(:fuga) とか、わけわかんねー (Python なら hoge.fuga で良いのに。しかも結局やっぱり call がいるし)
    • だからって ActiveSupport の Symbol#to_proc も勘弁な
  • 文字コードに関する問題がグローバル変数によって制御されてるのって死ねる
    • Python なら unicode 文字列使っときゃ、文字コードは実質ファイルローカルになるから、プログラム内ではあまり気にする必要無い
    • Ruby で、使われてる文字コードがバラバラなソースを require したり load したりするときの地獄はもうなんというか……
      • 地獄はイヤだから $KCODE は 'none' に設定しといて後は正規表現で何とかしようぜ…とか思うと、今度は Shift_JIS で '表' とか書かれたソースを require したときに死ねるんすよ
      • っていうか、これマジで何とかする方法無いっすかね?
      • あと 2 バイト目以降に ASCII な範囲の値が入るような文字コードは滅びるべき
    • 早く m17n が形になって欲しいと願う、わしがいる
  • ペア (要素二つの配列) の配列からハッシュを作らせてください
    • Hash[*hoge.flatten] とかは救いようがないのが判明している
    • どうして Hash#to_a はあるのに Array#to_hash が無いのか
      • ところで Hash#to_hash って何のためにあるの?誰とダックタイピングすんの?
    • ちなみに Python はペアのリストを dict 関数に渡すと一発
  • 内包表記はたまに欲しい気がするときがある
    • まあ、メソッドチェーンで間に合うのがほとんどだけど、なんとなく不経済っぽく感じるのも事実
    • ところで Python3000 で reduce が組み込みから外されたのは、大変遺憾であります
  • 名前空間の分離に神経使うのが死にそう
    • やっぱクラス定義と全く同じ書き方でクラスが拡張されちゃうのは、何とかした方が良いと思うよ
    • class Hoge::Fuga::Piyo とか書いたときに Hoge や Hoge::Fuga が未定義でも uninitialized constant じゃなく自動的に定義してくれると嬉しいのに

なんか Python との対比とかじゃなく、単に Ruby へのグチになってる部分もあるけど、こんなもんかしら。 あとまあ、昨日も書いたけど、キーワード引数については導入されることを切望しとります。 特に Python のように、仮引数名が自動的にキーワードになってるようなのが楽で良い。

% [雑談] またかぜひいた〜

なんかこの前よりひどいみたいな……

つーかね、寒いんすよ。 寒くなったり暖かくなったりはっきりしない日が続いたし、あっしの自律神経はもうグダグダですわ。

この調子だと、あと一週間くらいはすっきりしない状態が続きそうな予感。 季節の変わり目は大抵こうだとは言え、自分のダメさ加減には毎度嫌気がさすなぁ(苦笑

ともあれ、寝込むほどになっちゃうと仕事ができなくなるので、これ以上悪くならないように気をつけねば。


2007-10-12 [長年日記]

% [clip] ホワイトボードマーカーが本当にどこでも書けるのかやってみた (eXtreme Gadget)

via ja.reddit.

フローリングの床に書いてみたりとかチャレンジャーだな(笑

消せなかったら嫁さんに殺されるのは確実だろう。

逃げてー!!

跡形も無く消えてくれたので命拾いをした。

ほっ……


2007-10-15 [長年日記]

% [雑談] 日本ハムの固め打ち能力は異常

おとといといい、今日といい、波が来たときの打線の繋がり方が尋常じゃないね。 チーム打率がリーグ最下位とか嘘だろと思う。 まあ、とにもかくにも見てて楽しいね。 なんか変な笑いがこみ上げてくる(笑

どうせだから明日決めてしまえ〜と思うけど、成瀬が相手だとツラいかな。 スウィーニーもうまくハマれば 1 点勝負できるけど、結構ムラがあるしなあ。


2007-10-16 [長年日記]

% [雑談] 今晩のプロ野球

うーん、成瀬じゃなく小野を持ってきたか。 今日勝っても、最終戦でダルビッシュに勝てなきゃしょうがない、っていう判断なんだろうなあ。

日本ハムとしては、こうなると今日決めてしまうのが一番良いに違いないので、がんばってほしいものだ。 まあ、ファン心理としてはダルと成瀬の投げ合いが見たい気はするけどね(苦笑

% [clip] 絶対やってはいけないこと (ニュー速クオリティ)

>>55 がマジ鬼畜w

% [雑談] 今日のプロ野球

あ〜イヤな負け方したな〜

せめて 1-2 のまま終わってくれりゃ良かったのに、マイケルがあんな風に打たれるなんてショボーン。 なんか今シリーズは里崎一人にやられてる感じだよなー。 ほんと、相手のリードを読んでヤマ張って振り回すキャッチャーは手に負えないな。 そのくせ最後のセンター前みたいにしぶといバッティングもできやがるの。 全盛期の古田みたい。 球威で押せない武田勝みたいなピッチャーの天敵。

ともあれ、最終戦はパリーグで有数の好投手同士の対決だから、純粋に楽しみではある。

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

% drkazu [これは怖い!www]

% jijixi [ぼんやりしてると気付かなそうなところが、特に怖いっすよね(苦笑]


2007-10-17 [長年日記]

% [Python][Ruby][Rails][clip] Pythonで関数名を安全に変更する (西尾泰和のブログ @ Cybozu Labs)

Python に限らず、動的型付けな言語では有効そうな手段。

deprecated 指定というと、ついつい思い込みで「ゆるやかに死を向かえさせるための手段」だと考えちゃうけど、見方を変えると「すみやかに、かつ安全に死を向かえさせるための手段」にもなりうるってことだね。 ちゃんとテストを書いてれば、deprecated 指定したあとに一回テストを回せば、大体のところは潰せるだろうし。

うん、参考にさせてもらおう。 関数名書き換えたあと grep で虱潰しとか、そういう力技は格好悪いよね(苦笑

Rails というか ActiveSupport を使えるなら、Module のクラスメソッドとして deprecate というのがあるので、それがそのまま使えそう。

% irb
irb(main):001:0> $KCODE='u'
=> "u"
irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'active_support'
=> true
irb(main):004:0> class Hoge
irb(main):005:1>   def foo
irb(main):006:2>     p 'foo'
irb(main):007:2>   end
irb(main):008:1> end
=> nil
irb(main):009:0> Hoge.new.foo
"foo"
=> nil
irb(main):010:0> class Hoge
irb(main):011:1>   deprecate :foo
irb(main):012:1> end
=> [:foo]
irb(main):013:0> Hoge.new.foo
DEPRECATION WARNING: foo is deprecated and will be removed from Rails 2.0
See http://www.rubyonrails.org/deprecation for details. (called from irb_binding at (irb):13)
"foo"
=> nil

メッセージがちょっとアレだが(苦笑)、間に合わせで使うには十分だ。 ちなみにメソッドごとの警告メッセージも指定できるんだけど、Rails 2.0 云々は必ず出ちゃうんで、あんまり意味無かったり。

irb(main):014:0> class Hoge
irb(main):015:1>   deprecate :foo => 'hogefuga'
irb(main):016:1> end
=> [:foo]
irb(main):017:0> Hoge.new.foo
DEPRECATION WARNING: foo is deprecated and will be removed from Rails 2.0 (hogefuga)
See http://www.rubyonrails.org/deprecation for details. (called from irb_binding at (irb):17)
"foo"
=> nil

ActiveSupport::Deprecation::ClassMethods のソースを見ると、結構怪しげなことをやっていて、こういう関数 (メソッド) のラッパーを書くようなシチュだと Python の方がすっきりしてるよなーと思ったりする。 まあ、要するに alias を作って警告出してから本来のメソッドを呼ぶってことをやってるんだけど、alias_method_chain っていうこれまた怪しげな仕組みを使ってやってるから、なんかやたら怪しげなことこの上ない(苦笑

とりあえず、怪しげではあるけども、この alias_method_chain は Rails では結構重要な要素だと思うんで (いたるところで使われてる)、興味のある人はソースを読んでみることをおすすめする。 ごく短いメソッドだし、大した手間ではないと思うんで。 ソースは activesupport-x.x.x/lib/active_support/core_ext/module/aliasing.rb にある。

なんか話が脱線しはじめたんで、この辺で終わり。

% [Python][Django][Rails] Django 入門

どうにも仕事がはかどらないので、気分転換に Django をちょっぴり触ってみた。 ここのチュートリアルに従って淡々と。

Python でできていることに起因する面倒さを別にすれば、良い感じっぽいね。 認証システムや管理ツールが始めから用意されてるので、そういうのが絡む場合は Rails よりもてっとり早いかも。

モデルの設定なんかは Rails (というか ActiveRecord) よりクールな感じがする。 まあ、使う段で多少冗長なのは、Python だから仕方がないという感じだけど。

コントローラ (Django 的にはビューと呼ぶ) は、ルーティングの設定 (urls.py) なんかも含めて Rails の方が楽かな。 アクションに対応する関数定義で、毎度 request とかの仮引数を用意してやらなきゃないのが self 地獄と同じでかったるい。

んで、やっぱり Rails とある意味大きく違うのはビュー (Django 的にはテンプレート) かね。 というか、Django がどうのこうのというより、Rails が特殊だというか、Rails のデフォルトテンプレートである rhtml って実際のところ記法がちょっと違うだけの Ruby スクリプトなんだよね。 rhtml って良くも悪くも Rails の特徴の一つじゃないかと思うんだけど、ぶっちゃけ Ruby でできることは何でもできてしまうわけで、ものすごく柔軟性がある反面、MVC の分離を余裕でぶっち切ってしまえるどろどろな部分を持ってたりもする。 極端な話、コントローラには空のアクション一個だけ書いて、他は全部ビューでやっちゃうとかできちゃうしね(苦笑

プログラマが全部一人でやっちゃうような場合は、いろいろごまかしが効く分、rhtml の存在って結構ありがたいと思うんだけど、ちゃんと分業ができるような環境できちんと MVC の分離がなされるのを期待するなら、rhtml はオーバースペックなのかなと思う。 そういう意味で、Django のテンプレートは良い意味でテンプレートらしいというか、普通にテンプレートだなという感じ。 文法が Python のようで Python ではない何かという感じで、ちょっと違和感を感じる部分もあるけど。

ともあれ、結構良い感じなので、暇を見ながらもう少しいじってみたいところ。


2007-10-18 [長年日記]

% [Mac][clip] Missile Command

危険。こんなの Dashboard に入れといたら、色んな意味で危険。

% [雑談] ままならん

調子が良くて仕事がはかどる日にかぎって、見逃せない野球中継がぁ!

せっかく調子が良くても気になって身が入らなくなるのは目に見えてるので、断腸の思いで切り上げざるを得ない。 そんで、明日になったらこの調子の良さが終了しててショボーンてなるんだよ、きっと...orz

なにはともあれ、下手すると日本シリーズよりもおもしろいかもしれない今日の試合はがっつり衛星放送で見るよ。

% [雑談] ファイターズ日本シリーズ進出おめでとう

いやー、誰もが予想しなかった展開だったね。 でも地元民にとっては文句なく楽しい試合だった。

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

% きむら(K) [おめでとうございまする。 成瀬はちょっと意外な出来でしたね。プレッシャー?]

% jijixi [球場の雰囲気に飲まれたんですかね。 なんだかんだ言って、地元で全試合できるのってちゃんとアドバンテージになってるのか..]


2007-10-19 [長年日記]

% [雑談] 予想に反して今朝も好調持続中

でも、昨日ノリノリで書いてた部分に設計的な不備を見付けてしまい、結局ほとんど revert するハメになってちょっとヘコんだ。

なんだかなー……いや、調子の良いときって、何やってもうまく行くような気がするんだよね。 んで、「よし、これでうまく行くだろう」と思ってガガーっと書いて、最後のところで「あ、これじゃダメじゃん」と(苦笑

調子が良いからといって、考えをよく吟味せずにガンガン突撃するのは二十代までで止めておいた方が良いですな。 丸一日分の作業を無駄にしたときの徒労感は、オッサンにはツラいですわい...orz

まあ、かと言って、慎重になりすぎると何も始められないまま時間だけが過ぎちゃうので、その辺のバランスはうまいこと取らないといけないわけだけども……


2007-10-21 [長年日記]

% [雑談] 中日が上がってきたか

なんとなく予想はしてたけど、プレーオフ導入直後のパリーグと同じ状態だね。 プレーオフに向けての調整法のノウハウが無いから、結局試合間隔が短かい下から上がってきたチームがそのまま勢いで決めてしまったって感じ。

まあ、一勝のアドバンテージ無しを主張したのは巨人なんだから、自業自得というかなんというか。

% [game] スパロボ OGs 日記、2.5 に突入編

ようやく OG2 をクリアして OG2.5 へ。

正直、コンパクト3の話が絡んでくるとは予想してなかった。 こんなマイナーなの、存在自体知らない人の方が多いんじゃないのか?(苦笑

まあ、キョウスケ&エクセレンはコンパクト2出身だけど、一応その後インパクトでリメイクされてるしなあ。 っていうか、マイナー作を…って話なら 64 のキャラを出してくれって感じだよ。 でも、A の機体が出てしまった後じゃ、色々かぶりすぎててダメか……

ところでデュナミスはもう出てこないのか?

% [game] スパロボ OGs 日記、ガキンチョ三人衆登場編

どうやらデュナミス編は 2.5 でやってくれるらしい。 外伝なんてものの存在を考えると最後まで終わるのかは不明だが。

とりあえずコンパクト3の主人公はまだ敵側にいるんで、そっちの話はちょっとだけで、本格的なのは外伝で…って感じなのかな。 つーか、2.5 がどれくらいのボリュームなのかわからんから、あんまり今後の展開が想像しにくい。 まあ、さすがに OVA 版の話はちゃんと決着つくとは思うが。


2007-10-22 [長年日記]

% [Haskell][Python][Erlang][雑談] Haskell がわけわかんないんじゃなくて、そのコードを書いた人の頭が切れすぎてるという気が

重複する要素を取り除く (DouKaku?) への Haskell での回答 via きむら(K)さんとこ

uniqOnly xs = [x | [x]<-[[z | z<-xs, z==y] | y<-xs]]

頭の柔らかさに恐れいるなあ。 この式を理解することはできるけど、自分で思い付くのは無理な気がする。 とりあえず、何が起きてるかわからないという人は、細かい要素に分解してみるのが良いですよ。 Haskell に限らず。

まず一番外側のリスト (内包表記) はこんな形↓。

[x | [x] <- ?]

? の部分は何らかのリスト。 これはパターンマッチが使える言語ならではという感じで、[x] の部分で要素がこのパターンにマッチするものだけに限定される。 つまり、

Hugs> [ x | [x] <- [[1,2],[3],[4,5],[]] ]
[3]

こういう動作。 Python で書くなら、

In [1]: [ x[0] for x in [[1,2],[3],[4,5],[]] if len(x) == 1 ]
Out[1]: [3]

こんな感じ? 冗長だね。 ちなみにリスト内包表記でパターンマッチが使える言語というと Erlang なんかもそう。

Eshell V5.5.5  (abort with ^G)
1> [ X || [X] <- [[1,2],[3],[4,5],[]] ].
[3]

ともあれ。 外側の動作がわかれば、あとは普通にわかると思うけど、? の部分を抜き出してみると、

[ [z | z <- xs, z == y] | y <- xs ]

こう。 もう少しわかりやすくするために分解すると、

[ ? | y <- xs ]

xs の各要素を使って ? を作るという形。 xs というのは大元のリストだね。 で、y を使って何らかのリストを作る式が以下。

[z | z <- xs, z == y]

xs の各要素 (z) の内、y と同じものだけを取り出す。 これは y の数の分だけ (つまり xs の長さ分だけ) 繰り返されるので、結果として重複した要素がある場合には [y, y, ...] 、無い場合には [y] という要素でできたリストができあがる。

Hugs> let xs = [3, 1, 4, 1, 5, 9, 2, 6, 5] in [ [ z | z <- xs, y == z] | y <- xs ]
[[3],[1,1],[4],[1,1],[5,5],[9],[2],[6],[5,5]]

あとは、このリストから [x] というパターンにマッチするものだけ抜き出せば完了。

Hugs> [ x | [x] <- [[3],[1,1],[4],[1,1],[5,5],[9],[2],[6],[5,5]] ]
[3,4,9,2,6]

xs の要素数の二乗回計算するから、効率が良いとはお世辞にも言えないけど、DouKaku? の楽しみ方からすれば間違いなく最高の部類の答だよね。 こういうの思い付く人はゴルフも得意なのかな。


2007-10-23 [長年日記]

% [Rails][Ruby][ActiveSupport] Inflector のデフォルト設定が存外にショボくて絶望した

Inflector というのは、主に単語の単数形と複数形の変換を行なうための仕組みで、Rails ではモデルクラスとテーブル名の関係だとか、そういう暗黙の命名規則の裏方として多用されている。 要するに、こういう↓ことをするもの。

irb(main):002:0> 'thing'.pluralize
=> "things"
irb(main):003:0> 'things'.singularize
=> "thing"
irb(main):004:0> 'class_names'.classify
=> "ClassName"

ここで使った classify メソッドはファイル名 (もしくはテーブル名) からクラス名を得るために使われている (ちなみに逆の変換は tableize メソッド)。 で、Rails で例えば ./script/generator model hoge_cache とかやって新しいモデルを作ったとしよう。 このときできるクラスは HogeCache で、作られるテーブル名は hoge_caches になるわけだが、同時に test/fixtures には hoge_caches.yml というファイルができる。 そしてさっそくユニットテストを書いて実行すると……

FixtureClassNotFound: The class "HogeCach" was not found.

なんつーエラーが出て止まるわけだ。 一瞬何事かと思うよね。 HogeCach ってどっから出てきたんだと。 まあ、要するにこれは、Inflector が思ったように動いてくれてないということで…

irb(main):006:0> 'cache'.pluralize
=> "caches"
irb(main):007:0> 'caches'.singularize
=> "cach"
irb(main):008:0> 'hoge_caches'.classify
=> "HogeCach"

こういう感じで、一対一の対応が取れてないのが原因なわけだ。 cache なんて、わりと使われそうな名前なのに、なんでやねん……と思わなくもないが (まあ、大抵は cache の後ろに何か付くから問題無いんだろう)、ともあれこれを回避するためには Inflector.inflections を使う。

irb(main):009:0> Inflector.inflections do |inflect|
irb(main):010:1*   inflect.irregular 'cache', 'caches'
irb(main):011:1> end
=> [[/(c)aches$/i, "\\1ache"], ...(略)]
irb(main):012:0> 'caches'.singularize
=> "cache"
irb(main):013:0> 'hoge_caches'.classify
=> "HogeCache"

Rails の場合は config/environment.rb にこれを書いてやればよろしい。 他にも、単複の汎用的な変換ルールや、複数形が存在しない単語なんかを登録したりもできるみたいだけど、その辺はマニュアル参照ということで。


2007-10-25 [長年日記]

% [雑談] ままならない一日

考えていた行動予定のことごとくを出鼻で潰された一日であった。

こんな日は何もかも放り出して遊び呆けてしまいたくなるが、いろいろそうもいかない事情があるのでがんばる。 でもモチベーションは下がりっぱなしなので、効率は上がらない。 結果、いろいろ空回る。 なんかもう、ぐったりだ...orz

駄目な日はとことん駄目だ、ってやつなんだろうけど、自分にまったく落ち度が無い状況でここまで不幸が重なると鬱だよ……

明日は良い日になりますように。

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

% drkazu [事情にもよりますが、あまりにモチベーション上がらないときは、いったん放り出して、気分転換した方がいいですよーー♪]

% jijixi [ですねー(苦笑 機嫌悪いまま無理に作業すると、無駄な失敗したりしますし。]


2007-10-26 [長年日記]

% [game] アルトネリコ2

どうしようかーと思いつつも、結局買ってしまった。 とりあえず、今どうしてもやりたいってもんでもないんだが (スパロボ OGs もあるしなぁ)、いざ欲しくなったときに品薄だと面倒なので。 前作にはかなり遊ばせてもらったんで、それなりに楽しめるとは思うが、説明書をチラ見したかぎりだと戦闘システムがガラっと変わって、リアルタイムな要素なんかも入ってるみたいなのがちょっと不安要素かも。(リアルタイム戦闘は好きじゃない)

まったく前情報を仕入れてなかったんだけど、なんか前作とは別の塔の話みたいだね。 って言うか、オリジンが世界に 3 体いるって書いてあるのにビビったんだが(苦笑)。 今回また一体出てきたとして、もう一作作れるね…みたいな? 世界の状態にしても、周り全部が滅びたと思ってるのは、それぞれの大陸にいる本人たちだけで、実際には同じように孤立状態の大陸が散在してるのかも知れず。 そもそも塔は何本あるんだろう。

とりあえず、ガストのゲームはリーズのアトリエがガッカリ品質らしくて手を出さなかったんで、グランファンタズム以来だし、じっくりまったり遊ぼう。 まあ、PS2 での開発は慣れたものだろうから、作り込みでガッカリすることは無さそうだけど。 あとは、前作ですら多少食傷気味だったギャルゲー的要素が無駄にパワーアップしすぎてないことを祈るよ。 いや、他の部分もちゃんとパワーアップしてるなら、それでも良いんだけどさ……


2007-10-27 [長年日記]

% [game] アルトネリコ2日記、レプレキア発動編

なんだかんだ言いつつ始めてしまったら、ついつい 10 時間ほどプレイしているわしがいるよ(苦笑

んで、おそらく今回のウリのシステムであろう内の一つレプレキアが使えるようになった。 ぶっちゃけて言うと保護した雑魚レーヴァテイルの力を使って、詩魔法を増幅するシステム。 最初にお試しで一回マックス威力で使わせてもらえるんだけど、これまでに与えた最大ダメージが 10,000 弱というレベルなのに、いきなり 330,000 ダメージとかはじき出して鳥肌立った。 レーヴァテイルの数が多いほど強力になるんだけど、今のところは 4 人しかいないので威力はショボい。 最大は 100 人らしいので、ものすごく先は長いが集める楽しみはできたなあ。

今回出てくるオリジンの名前はフレリアのようだ。で、今はどこかで寝てるっぽい。 クローシェルートを通ったので詳細は不明だけど、ルカがハイバネーションを歌おうとしたところを見ると、寝てるのは間違いあるまい。 よく考えたらハイバネーションは眠らせる詩だな。 あれはクローシェを止めようとしてたのか。

戦闘システムはやはりリアルタイム要素のせいでちょっと忙しい。 ようやく慣れてきて、ステータスを確認しながら操作できるようになってきたところ。 まあ忙しいのは好みじゃないが、慣れればそれなりにおもしろい感じではある。

ストーリーも何だか異様に盛り上がってきて、なんかやめられなくなっちゃったな(苦笑

% [雑談] ちょwwwいきなりスリーランとかwww

家族でテレビ見てたんだけど、セギノールが打った瞬間全員「あっ」って言ったよ。 たぶん、全国でものすごい数の人が同じタイミングで「あっ」って言った瞬間じゃなかろうか(笑

% [雑談] 日本ハム一勝目

いやあ、見応えのある良い投手戦だった。 9 回にダルビッシュがウッズから三振取ったところなんて、鳥肌もんだったよ。

しかし、相変わらずこのカードはきわどい試合ばっかりだなあ。 チームカラーが似てるせいなのかも知れないけど、見てて気が抜けない。 なんか見終わる頃には、なぜかぐったり疲れてるんだよね(苦笑

% [game] アルトネリコ2日記、コスモスフィア編

どうも今回は分岐で選ばなかった方のレベル 5 以降には潜れないみたいだね。 まあ、むしろ前作で両方あそこまで深く潜れたこと自体が無茶だった気はするけど。 どうみても二股です、ほんとうにありがとうございました、って感じだったし(苦笑

それはそれとして、今回もコスモスフィアはかなりカオス。 「先手必勝、タカビーム!」でウーロン茶吹いたじゃないか。 あんたなんでそんなノリノリなんすか(笑


2007-10-28 [長年日記]

% [雑談] 日本シリーズ第二戦

ちょっとイヤ〜な負け方したなー。 なんか去年と逆パターン。 敵地で三連敗して終了ってのだけは勘弁してほしいが……

% [game] アルトネリコ2日記、三人目編

てっきりフレリア様とやらが仲間になると思ってたんだけど、ちょっと意外な人物が仲間に。 しかもこの人、もしかするとアノ人かも…というような感じがしなくもなかったり。 だとして、なぜこんなひねくれてるのか、とか、いろいろ気になるところもあり。

なんかもう、気になりすぎて止められん(苦笑


2007-10-30 [長年日記]

% [雑談] やめて!!日本ハムの体力はもうゼロよ!!

まだ一回なのに……一回なのに……

% [game] アルトネリコ2日記、PHASE4

寝る間を惜しんでやってるわけだが(苦笑

前作と違って、今回は PHASE ごとの区切りがあまり明確ではないんだけど、ともあれおそらく PHASE4 で終わりだろうと思われる。 で、ここでわりとありがちではあるけど結構グッとくる秘密が明かされて「おおー」という感じ。 まあ、それなりに伏線も張られてたから、気付く人は気付いてたかもしれないが。 ストーリー関係はネタバレだらけなので、この辺で。

今回、バーストゲージがインフレをおこしてて、特にレプレキアを使ったときなんかものすごい。 平気で 1,000,000 % 越えちゃうし。 前作だと 100,000 越すのも結構大変だったはず。 まあ、とにかくゲージがものすごい勢いで上がってくんで、なんか妙に高揚感がある。 その辺の感覚は前作以上。

前回はある程度強くなっちゃうとラスボスすらザコ扱いで、まともに相手になるのは光の御子くらいしかいなかったんだけど、今回はその辺何とかしてくれてると良いなあ。 さすがにアトラスのゲームみたいなのはいらんけど、それなりに苦戦する相手が複数いてくれると戦闘を極める楽しみが増える。


2007-10-31 [長年日記]

% [Mac] Leopard の日本語表記はレオパルドですよね?

とかいう話はどうでも良くて。

10.5 へのアップグレードは、いつやろうかなーと考え中。 とりあえず発売直後のインストール祭には乗り遅れてしまったし、焦ってやる必要もないかな…という気分。 つーか、まだ買ってないし。

一緒にタイムマシン用に外付けのハードディスク買おうと思ってたんだよね。 でも、できれば FireWire 接続なのが良いんだけど (Mac で使うならどう考えてもこっちの方が便利だと思う) 高いんだよなー。

% [雑談] さっき書留が届いたのだが

「日本郵便ですが〜」と言われて一瞬「ん?どこの謎組織だ?」と考えてしまったよ。 なんかまだ慣れないなー。

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

Before...

% きむら(K) [英語読みだと“レパード”。ドイツ語読みだと“レオパルト”、日本語読みで“レオパルド”でどうでしょう? :)]

% takkanm [appleストアではレパードって言ってた気がしますね。個人的にはレオパルドンですけど]

% かめぞう [聖下のご発言を聞いてもレパードのようですね。 http://jp.youtube.com/watch?v=gtSDl..]


トップ 最新 追記

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

RSS はこちら

jijixi at azito.com