Category ruby.

parameters= に渡す値はすべて自分でクオートしとこう。

libxslt はもともとパラメータの値に XPath そのまんま書けるんだけど、なぜか ruby-xslt の parameters= ではクオートして必ず文字列で渡す。しかしながら、なんかこのクオートの実装が狂ってて、自分でクオート付け足してる癖に Invalid expression とか言い出してくれちゃう。やれやれだぜ!

正確に言うとクオートを付与する段階で、与えた文字列を中途半端に破壊的に変更するらしく、クオーテーションがかたっぽだけ付く。セッションとかで保存させながらのコードでもうハマったハマった。dup してどうにかしたけど、自分でクオートして明示的に文字列にしたほうがよさげ。

ソースは読んでないので間違っているかも。あくまで挙動からの推測

  1. トップ
  2. xslt
  3. ruby-xslt の parameters=
  1. トップ
  2. ruby
  3. ruby-xslt の parameters=

Ruby の each 系メソッドで一つ気に入らないというか、仕方ないんだけど面倒くさいことがある。なにかっていうと index を使いたければ自分で変数作ってインクリメントしないといけないこと。each だけに関しては each_with_index があるけど、他の Enumerable なメソッドにはない。そんなに必要なわけじゃないし、だいたいは他のもっといい書き方が存在するんだけど、prototype.jseach 系を見てから、ちょっと不便だなぁって思うようになった。

prototype.jseach 系は全て indexitem が両方渡される。でも、受け取る側の関数は仮引数を常に2個書かなくてもいい。ECMAScript は引数の数に無頓着だ。いくら渡しても怒られない。仮引数を書かなくても arguments で参照できる。

対して Ruby の yield はエラーこそ出さない (call は出す) ものの、こういうことすると警告してくれちゃう。別にそれが悪いわけじゃなくて、むしろいいんだけど、っていうか block.arity で場合わけすればいいんだけど。

なにがいいたいかわからんことに。

arity の数で場合わけしたらだめか。[[:a, :b]].each {|a, b|} みたいに使えないもんなぁ。

  1. トップ
  2. ruby
  3. Ruby.each
  1. トップ
  2. js
  3. Ruby.each

そういえば、日経ソフトウェアの 2001-03 (ふるい) のスクリプト特集に Ruby が載ってるんだけど、今さっき読んだら当時さっぱり何言ってるのかわからんことも結構わかるようになったりしてて、なかなか面白い。Perl の記事はわからんけど :(。で、その記事のコラムで、Matz さんが実行速度でPerlを抜きたいって言ってるのが妙に印象に残ってた。そして今日その部分を YARV の記事を読んでて思い出したからこんなことを書いてるわけです。

日経ソフトウェアは2000-06 から 2001-06 までなんとなく買っていた雑誌で、結構お世話になった。扱いが荒いせいかボロボロだったり、コーラ溢して裏表紙が破けていたり、いやそんなのどうでもいい。XSLTDOM もよくよく考えるとこの雑誌で記事を読んだのが最初の出会いであるし、上で書いた Ruby もそうだったりする。

入門書として、いろんな言語がいっぱい載ってるこういう雑誌って結構いい感じ。なんとなくもういいかなって思ったらちょうど一年分だったりして。これ買うのやめてからは一冊もプログラミング関連の本を買ってない (大学の教科書は別として) 。なんかぐーぐる先生とこの雑誌一年分で十分な感じ。そんな感じで今さっき意外と雑誌の情報って死なないんだなぁと思った。

当たり前だけど、雑誌を読んでプログラミングをどうこうしていたのは楽しかったからに他ならず、それから VB をやったり Javascript をやったりして最近やっと形になるようなスクリプトを書けるようになった。今考えれば結構長かったけど、あんまり長いことやってる自覚はない (し、別に実際長いわけではない)。だから俺はプログラミングにおいて何か努力したとかそういうことがない。これから、そういう努力をするハメになるのか、それとも楽しいままプログラミングと付き合って行けるかがよくわからないけど、願わくば楽しいままやっていきたいと思う。言い換えれば、努力なんて一瞬たりともしたくない。

  1. トップ
  2. ruby
  3. Ruby と雑誌と俺