トップ «前の日(08-23) 最新 次の日(08-25)» 追記   RSS 1.0 FEED  

Journal InTime


2001-08-24 (Fri)

_

最近車の鍵をなくして妊娠中の奥さんに会社におくってもらっている どこにやったんだろう…。


2004-08-24 (Tue)

_ X-Ruby-CVS-SHA256Info

commitメールにSHA256を使うように変更。

X-Ruby-CVS-SHA256Info: ruby/ChangeLog, 1.2673.2.453, 0696c873fe9a961d45ff508d961e358cea0325de0ddc03100dba443dd31d62f0

長いよ。

Tags: Ruby

_ ピザ

ピザ

これも手作りである。宅配のピザって原価率低そうだよなあ。

Tags:

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の方で書こうかと思ったけど、 あんまりインパクトないかなあ。

Tags: Ruby

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とかについて予習しておいてください。

Tags: Ruby

*1  「南部訛りをなくすために授業を受けるべきだと思うかい?」なんて歌詞が出てくるくらい。

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

_ ささだ [1.9.3 で,iseq->klass とかは消したいなぁ,と思っています.]

_ shugo [たぶん、ささださんが期待する方向じゃないと思うんですが、iseq->klassは使わないようにしました]

_ さく [たぶんそうなんだろうなぁと思ったら、「授業」はやっぱり class なんですね。]

_ shugo [Do you think I should take a class?ですね。「レッスン」くらいの方がよかったかな。]

_ さく [もとが class だと分かると、ダブルミーニングっぽくて面白いなー、と思いました。]

_ shugo [なるほど、スライドに入れときます]


2017-08-24 (Thu)

_ シフトアーム交換

photo

前回、250 DUKEの純正シフトアームに折れたボルトが残ってしまったので、CRAFTMANのクイックシフトアームに交換してショートストローク化した。

スモールDUKEはAprilia RS4の純正シフトアームに交換するのが定番のようだが、ただでさえニュートラル出しづらいのがさらに出しづらくなるようなので、そのあたりを考慮してあるCRAFTMANの製品を採用することに。

交換前:

photo

交換後:

photo

交換後はロッドエンド交換の効果もあって小気味よいシフトフィールになったけど、やっぱりちょっとニュートラル出しづらくなったような気も。 まあなるべく停止前に2→Nに戻すようにするということで。

Tags: 250DUKE