2004-08-24 (Tue)
_ X-Ruby-CVS-SHA256Info
commitメールにSHA256を使うように変更。
X-Ruby-CVS-SHA256Info: ruby/ChangeLog, 1.2673.2.453, 0696c873fe9a961d45ff508d961e358cea0325de0ddc03100dba443dd31d62f0
長いよ。
2005-08-24 (Wed)
_ DoubleDispatchable
Visitorパターンみたいなダブルディスパッチは好きなのだが、 acceptメソッドみたいなのを何回も書いてると面倒だと思う時がある。 そこでこんなモジュールを書いてみた。
module DoubleDispatchable def self.append_features(klass) super(klass) klass.class_eval do @@double_dispatch_methods = {} end def klass.double_dispatch(method, prefix) @@double_dispatch_methods[method.to_s] = prefix.to_s define_method(method) do raise SubclassResponsibilityError.new end end def klass.inherited(subclass) for method, prefix in @@double_dispatch_methods method2 = prefix + subclass.name.slice(/[A-Za-z]+\z/).gsub(/[A-Z]/) { |s| "_" + s.downcase } subclass.class_eval(<<-EOF) def #{method}(obj, *args) obj.#{method2}(self, *args) end EOF end end end end
これを、
class Query include DoubleDispatchable double_dispatch :accept, :visit end
のように使うと、
class AndQuery < Query end
のようにサブクラス化した時点で勝手に以下のようなメソッドを 作ってくれる。
def accpet(obj, *args) obj.visit_and_query(self, *args) end
もともとはVisitorパターン専用にAcceptableというモジュールを 書いていたのだが、汎用化して上記のような形にしてみた。
調べてみると、Ruby: VisitorPattern でほとんど同じ手法が紹介されてるではないか。 Blogの方で書こうかと思ったけど、 あんまりインパクトないかなあ。
2010-08-24 (Tue)
_ RubyKaigi2010発表
RubyKaigi2010でBest Imitation of Your Classという発表をする予定だが、裏番組が強力で誰も来ないのではないかという不安があるので宣伝しておく(ここで宣伝して意味あるのか?)。
タイトルはもちろんBen Folds Fiveのファーストアルバムに収録されているBest Imitation of Myselfのパクリである。 Best Imitation of Myselfは、女の子の好みに合わせて見せかけの自分を演じるという女々しい*1曲である。 Best Imitation of Your Classというのは、あなたの望むような見せかけのクラスを提供してあげようという趣旨であるが、要はclassboxを実装してみましたという話。
あんまり書いちゃうとネタバレになっちゃうけど、以下のような話。
- ついにclassboxを実装した。
- 文法の変更はなし。
- 影響はclassboxをimportした(一見)静的なスコープに限定される。
上記のために○○を実装したり、上記の応用で○○を実装したりしたので、それも紹介するつもり。
参加してくれる人は、できれば、T_ICLASSとかcrefとかiseq->klassとかについて予習しておいてください。
*1 「南部訛りをなくすために授業を受けるべきだと思うかい?」なんて歌詞が出てくるくらい。
2017-08-24 (Thu)
_ シフトアーム交換
前回、250 DUKEの純正シフトアームに折れたボルトが残ってしまったので、CRAFTMANのクイックシフトアームに交換してショートストローク化した。
スモールDUKEはAprilia RS4の純正シフトアームに交換するのが定番のようだが、ただでさえニュートラル出しづらいのがさらに出しづらくなるようなので、そのあたりを考慮してあるCRAFTMANの製品を採用することに。
交換前:
交換後:
交換後はロッドエンド交換の効果もあって小気味よいシフトフィールになったけど、やっぱりちょっとニュートラル出しづらくなったような気も。 まあなるべく停止前に2→Nに戻すようにするということで。
2024-08-24 (Sat)
_ 大阪Ruby会議04に参加した
大阪Ruby会議04に参加してきた。
金子さんのキーノートのred green treeの話が面白かった。具象構文木便利そう。
昼はジョーカーさん、ぺん!さんとうどん屋に行ったが、はじめて食べたかすうどんがおいしかった。
ぺん!さんの発表がcursesの再描画処理の自前実装みたいな話で、差分の検出手法を色々紹介されてて面白かった。
自分はstrscanなしで文字列をスキャンするという話をしたけど、実はSemVerつらくないですかという話の方がしたかった。
あと正規表現の \G
はRubyのドキュメントに書かれていないのであまり知られてないので、知っていると便利なことがあるかもしれない。
というわけでwillnetさんとかの発表(ActiveRecordすごい便利だけど時々そういうとこあってはまりますよね)ほどではないにせよ、いつもよりはちょっと役に立つ内容だったはず。
羽角さんのキーノートはいい話だったけど、最初は役に立たないトークでもいいんですよという論調だったのに最後で裏切られた。
ともあれ楽しかった。参加者、スピーカー、スタッフ、スポンサーのみなさん、ありがとうございました。
_ ささだ [1.9.3 で,iseq->klass とかは消したいなぁ,と思っています.]
_ shugo [たぶん、ささださんが期待する方向じゃないと思うんですが、iseq->klassは使わないようにしました]
_ さく [たぶんそうなんだろうなぁと思ったら、「授業」はやっぱり class なんですね。]
_ shugo [Do you think I should take a class?ですね。「レッスン」くらいの方がよかったかな。]
_ さく [もとが class だと分かると、ダブルミーニングっぽくて面白いなー、と思いました。]
_ shugo [なるほど、スライドに入れときます]