2011-07-16 (Sat) [長年日記]
_ RubyKaigi2011 1日目
1日目が終わった。面白かったけど、疲れた。以下メモ。
- はじめてスタッフ用の名札をもらった。SpeakerとCommitterとSponsorのシールを貰ったので、Individual Sponsorにもなっておけばよかったと後悔した。全部揃った人っているのかな。
- スーツ来てる人の後ろ姿を見てごとけんさんかと思ったらアーロンさんだった。
- 後ろで中学生みたいにはしゃいでる奴等がいるなと思ったら、ほんとに中学生だった。
- RubyでRailsと同じやり方をしたらカオスになる気がするけど、どうだろう。
- Next version of Ruby 1.8 and 1.9のグダグダ感はたぶんみんなの予想どおりだったのではないか。
- NaHiさんによるとwycatsが質問の時にrefinementsがどうこうと言っていたらしいが、よく聞き取れなかった。
- akrさんがip6tablesとかあまり知らないというのは意外だった。akrさんも人の子ということか。
- sora君のセッションを見て恐くなったので、自分のスライドの枚数を追加した。
- 須永さんのセッションでruby-profをdisられた。RubyKaigiでは毎回何かしら自分のプロダクトをdisられている気がするので、RubyKaigiがなくなったら平穏な日々を暮らせそうな気がする。
- Riteの発表の時にちょっとどきっとしたけど、きっと気のせい。
- nariのdequeについての発表は勉強になった。
- 笹田さんの夢が色々叶ってよかった。
- スイスから来たyweseeのzenoさんに寿司をおごってもらった。Passengerよりmod_rubyの方が速いから、Ruby 1.9対応してくれと言われたけど、ベンチマークの取り方に問題がある気がする。
- 闇…
明日は自分の出番だけど、トラブルがないといいなあ。
2011-07-17 (Sun) [長年日記]
_ RubyKaigi2011 2日目
2日目も引続き参加。以下メモ。
- ログのエスケープの話は、どっちかというと端末が悪い気がする。
- Dripかっこいい。削除がないところが。
- @drbrainが作ったgem、90コってすごいな。
- @yharaは万歳しすぎ。よかったけど。
- sandboxは欲しいんだけど、安易に導入すると$SAFEの二の舞になる気がする。Refinementsとかは別にsandboxを提供するのが目的ではないので、議論がごっちゃになると泥沼化しそう。
- クイズでほとんどのコミッタがワナに引っかかってくれてうれしかった。p {:a=>1,:b=>2}なんてみんな書きそうなものだけど、たぶん括弧付けたら動くからすぐ忘れちゃうんだよね。
- まつもとさんのNaCl離れが深刻という話はジョークですからね。
- Method Sheltersの話は、Refinementsをもっとちゃんとdisってほしかった。講演前に挨拶したのがまずかったか。後でakrさんと話したけど、やっぱりlocal rebindingは危険な匂いがするんだよな…mathnの例とか考えると。hideを上手く使えばいいと思うんだけど、みんな使いこなせるかねえ。
- interfaceをincludeするのはちょっと気持ち悪い。Ruby的にincludeは実装の共有のためのものだから。
- 最初@takaokoujiのスライドの「自分を幸せにしてください」「家族を幸せにしてください」を、「給料上げろ」「扶養手当出せ」と読んでしまった。
- catch/throwの話は、あの対策で穴はないのかな。
- こさきさんの話はわかりやすくて素晴らしかったけど、RubyWorldだとちょっと難しすぎるかなあ。
- 懇親会でもっと外国人と話せばよかった。ちゃんと会話したのは、@drbrain、@wycats、@tenderloveの三人くらいか。
自分の発表も終わったし、明日はのんびり楽しめるかな。
2011-07-18 (Mon) [長年日記]
_ RubyKaigi2011 3日目
最後のRubyKaigiの最終日。これまでずっと小ホールのテクニカルなセッションを中心に見てきたのだけど、parse.yの話を聞きたいところをぐっと堪えて、日本Rubyの会のセッションとAll About RubyKaigi Ecosystemを聞いた。やはりこの二つは聞かないと。
他のセッションの中では、柴田さんのセッションの「機能の追加は慎重に削除は大胆に」という話が印象に残った。咳さんの「カスタマイズは誘惑する」話の続きだけど、erubyに限らず色々前科があるだけに耳が痛い(今日はdisられないだろうと思ったんだけどなあ)。
まつもとさんの基調講演は、最後のRubyKaigiでもいつもどおりで安心した。soraメソッドが使われるとは思ってなかったけど。
クロージングではスタッフが壇上に上がって(自分も一応スタッフ用の名札をもらっていたけど空気を読んで遠慮した)会場総立ちの拍手喝采だったけど、やっぱりRubyKaigiの一番の主役はスタッフなんだなと思う。
いったんこれでRubyKaigiは終わり、ということだけど、どうせまたやるんでしょ? ねえ、みなさん
_ スコープ付き定数参照
石塚さんのDeepConnectの発表を聞いて、スコープ付き定数参照の意味を変えてはどうかと思った。
peer = dc.open_deepspace foo = peer::Foo.new
のようなコードを実現するためには、Rubyの仕様的にはpeerはModuleである必要がある(そうではない場合、TypeErrorが発生する)。しかし、それだけの理由ならpeerをModuleにするのはちょっと気持ち悪い。
そこで、x::Yをx.const_get(:Y)という意味をもつ構文糖にすれば、Moduleである必要はなくなると考えた。xがModuleの場合は特別扱いして最適化すればいい。
しかし、実はx::Yはconst_getとは異なる動作をする。 x::Yの場合はObjectの定数は参照できない(xがクラスの場合は警告が出るだけ)が、x.const_get(:Y)では参照できる。x::Yでは、Object以外のスーパークラス・インクルードしているモジュールの定数は参照できるので、x.const_get(:Y, false)の動作とも異なる。
改めて、Rubyの定数周りの挙動は複雑だと思った。
2011-07-19 (Tue) [長年日記]
_ RubyKaigi2011 4日目
台風で飛行機が欠航になってしまったので、期せずしてRubyKaigi 4日目のAsakusa.rbに参加することになった。実はAsakusa.rbに参加するのははじめてなんだけど、いつもこんな感じなのかしら。
笹田さん、NaHiさん、artonさん、吉川さんのお話を聞いたけど、吉川さんのインパクトが強すぎて他の人の話をあんまり覚えてない。 しかも、吉川さんの話も(英語=日本語間じゃなくて吉川語=英語/日本語間の)言語障壁のせいでよく理解できなかった。
GREEではプログラマが稼いだ金額をARPUとUUから計算しているという話があって、興味深かった。最初の説明だと行単位とかで計ってるのかと思ったけど、そういうわけではなさそう。
Rubyでも他の指標で同じようなことをやったら面白いかもしれない。 nagachikaさんがやってくれるかな。
_ thread-safe autoload
NaHiさんのthread-safe autoloadの話だけど、Railsだとconst_missingとかも使ってるけどthread-safeになってるのかなあ。 const_missingでも処理が終るまで他のスレッドがその定数にアクセスする のをブロックしておく必要があるんじゃないだろうか。
まあ、我々CRubyユーザにとってはあんまり問題ないか。
2011-07-20 (Wed) [長年日記]
_ 3.0.2にアップデート
ずっとアップデートしてなかったんだけど、ようやく3.0.2にアップデートした。
Gemfileやconfig.ru、Capfileが同梱されていて驚いた。たださんみたいなオールドタイプ(失礼)がBundlerとかRackとかCapistrano使っている姿はイメージできないんですけど。テストもRSpecで書いてあるし。
2011-07-21 (Thu) [長年日記]
_ 鰻
土用の丑の日ということで、NaClシステム開発第1Gのクルー11人で大はか屋に鰻丼を食べに行った。
記憶より大分高いんですけど…前は並の金額で特上を食べられたような。
行きそびれた人が二人いるので、別の店を開拓しようかなあ。
2011-07-23 (Sat) [長年日記]
_ 海水浴
久しぶりに海水浴に行って来た。今回はずっと次女のお守りをしていたが、意外と涼しくて過ごしやすかった。行ったのは島根町の桂島(一応島だけど歩いて渡れる)というところだが、いつもあまり人がいなくておすすめ。水もきれいなんだけど、難点はゴミがよく落ちているところ。あと野良犬をよく見かける。
2011-07-27 (Wed) [長年日記]
_ クラッチスイッチが折れた
KLX125にバーパッドを付けたらメーター下部が見えなくなったので、ハンドルバーの角度を調整した。その結果クラッチ側のケーブルがぎりぎりになってしまったので、クラッチワイヤーの取り回しを変更したのだが、その時にクラッチスイッチがぽっきり折れてしまった。前からよく存在を忘れてレバーを引っかけてしまっていたのだが。
クラッチを切らなくてもセルが回るようになってしまって、これはこれでいいかという気もしたのだが、KLX125はインジェクションなので燃調に悪影響があるようだ。 しかたなくクラッチスイッチを交換することに。バイク屋に電話したら、部品自体は1200円くらいだけど、カワサキは取り寄せに送料がかかるとのこと。うーん、そのお金でチェーンローラーを社外品に交換できたな。
_ 一般財団法人Rubyアソシエーション
というものを本日設立しました。詳細は以下を。
- <URL:http://www.ruby-assn.org/ja/releases/20110727_foundation.pdf>
- <URL:http://www.ruby-assn.org/ja/releases/20110727_endorsement.pdf>
一応副理事長という肩書らしいです。
財団では個人・法人から広く協賛金・寄付金を集めてウハウハ…じゃなかったグラントとか色々したいと思っています。 将来的にはRuby開発者を雇用したいとか大きなことを言っていましたが、Herokuさんに先を越されてしまいました。でもいいことですね。
2011-07-28 (Thu) [長年日記]
_ KLX125購入
今更だが、4月に買ったKLX125の報告をしておく。上は購入時に撮った写真で、下は現在のもの。ぱっと見では違いがわからないな。
もともとSV400Sを探していたのだがあまりいいタマがなく、たまたま何かでKLX125が目についた。今までオフ車はぜんぜん乗ったことがなく興味もなかったのだが、新車でも何とか買える値段で近場でも楽しめそうだということで購入。
最高出力は10psだし、スペック的にはあまり見るべきところはないけど、街乗りでも林道でも楽しく走れる。最近のバイクメーカーは中免しかない貧乏人に厳しいけど、このKLX125といい、Ninja250Rといい、カワサキはえらい。グループのお荷物と言われる二輪事業だが、何とかがんばってほしい。
高速乗れなかったりシートが硬かったりで長距離移動はちょっとしんどいけど、そもそもなかなか遠出ができるチャンスがないので十分な感じ。 大事に乗って、長く楽しみたい。
以下、カスタムの記録。
_ タンデムステップ・ベルトの取り外し
どうせタンデムはしないだろうということで、タンデムステップとタンデムベルトは取り外した。タンデムステップ用のボルト穴が錆びてきたので、ホームセンターで買ってきたステンレスボルトを締めておいたのだが、フレームの塗装をワッシャーで傷つけてしまった:(
_ ハンドル周り
ハンドル周りは以下のパーツを交換・取付した。
- ZETA COMPハンドルバー ミニトレール
- ZETA バーライズキット (19mm)
- ZETA テフロンスロットルチューブ
- DRC プログリップ
- ZETA バーエンドプラグ (35mm)
バーライズキットはスタンディング時にハンドルが低く感じたので取り付けたけど、他は見た目のため。そのままだとワイヤーがパッツンパッツンになってしまうので、ガイドの外を通すように取り回しを変更した。
後でハンドガードとか付けるかなと思ってオープンエンドのグリップにしたけど、ない方が軽そうだしこのままでいいかなという気分。
_ フェンダーレスキット
リバーサイドのフェンダーレスキットを装着。 ナンバーの角度がちょっとヤンチャなのでほんとは違うのがよかったのだが、安かったので。
リフレクターはデイトナのスリムリフレクターキット 50~125cc専用(ブラック)にした。
取り付けの手順で、純正のフェンダーに付いてたカラーを付けるところがあるんだけど、カラーの長さが短くてボルトを締めてもクルクル回ってしまう。付け方が間違ってるんだろうか。
_ アンダーガード
アンガーガードはZETAのと迷ったがデイトナのやつにした。安かったのと、オイル交換がしやすそうだったので。ガード力はZETAのやつの方が高そうだけど、たぶん自分には必要ないだろう(そもそもアンダーガード自体必要ないかも)。
フレームを傷付けそうなので、フックの内側とアンダーガードの上側にはホームセンターで買った1mm厚のゴムシートを両面テープで貼っておいた。 装着している状態で取れることはないと思うけど、接着剤の方がよかったかも。
2011-07-29 (Fri) [長年日記]
_ Rubyの聖地でHaskellを語る
オープンソースサロンで山本和彦さんの「Rubyの聖地でHaskellを語る」という講演を聴いた。
Haskellはずっと気になっているのだけど、何となくプログラムを書いてみるところまで至っていない。何か敷居が高いんだよね。
静的型付けの利点には共感するところが多いんだけど、本格的な関数型言語なところが自分にとってはネックなのだ。mapとかは使うけど、普通にループで書けるところを再帰で書くのはちょっと、というレベルなので。木構造を探索するときとかは再帰で気持ち良く書けるんだけど。ちゃんと取り組んだら逆にRubyが中途半端に思えるのかな。
ということで質問では、「静的型付言語は好きなんですが、関数型言語よりオブジェクト指向言語がいい人はどうするべきなんでしょうね」という質問をして、「そういう人にはScalaをお薦めします」という回答を得た。 たしかにScalaくらいだったらちょっと触ってみようかなという気がするのだが、オブジェクト指向言語で型推論をするのは難しいらしく、山本さんもおっしゃっていたがScalaの型推論は不完全(というか、Hindley/Milnerの型推論システムではない?)らしい。
結局、オブジェクト指向にはRubyのような動的型付言語の方が合っているということになってしまうのかなあ。
追記:
講演資料が公開されたので興味のある方はどうぞ。
関数型言語の定義が素敵。
2011-07-30 (Sat) [長年日記]
_ 自治会のバーベキュー
自治会のバーベキューに参加した。
気を遣ってなかなか肉を取りづらいので、子どもに取りに行かせる作戦に出たが、一枚だけもらって返って来たりして今一つ成功しなかった。 自治会のバーベキューで腹一杯肉を食べようというのがそもそもの間違いか。
2011-07-31 (Sun) [長年日記]
_ 3.1.0へのアップデート
3.1.0にアップデートした。
ついでにテーマをDefaultベースで書き直して、スマートフォンでサイドバーが表示されないようにした。 ただ、それでもFacebookプラグインのせいで画面からはみ出してしまう。 スマートフォンの時はFacebookプラグインを表示しないようにするのがいいかな。
あと、写真のアップロードが面倒なので、Picasaプラグインを入れてみた。 画像をリンクしてPicasaに飛ぶようにはできないのかな。 大き目の画像を貼るようにしとけば別にいいかという気もするけど。
追記:
Facebookプラグインについては、とりあえずスマートフォンだったらwidthを300にすることにした。
diff --git a/jit/misc/plugin/facebook_comments.rb b/jit/misc/plugin/facebook_comments.rb index 43bb30a..602d4c6 100644 --- a/jit/misc/plugin/facebook_comments.rb +++ b/jit/misc/plugin/facebook_comments.rb @@ -11,7 +11,7 @@ end def facebook_comments(href = '') <<-HTML -<div id="fb-root"></div><script src="http://connect.facebook.net/ja_JP/all.js#appId=#{h @conf['facebook_comments.YOUR_APPLICATION_ID']}&xfbml=1"></script><fb:comments href="#{h href}" num_posts="#{h @conf['facebook_comments.num_posts']}" width="#{h @conf['facebook_comments.width']}"></fb:comments> +<div id="fb-root"></div><script src="http://connect.facebook.net/ja_JP/all.js#appId=#{h @conf['facebook_comments.YOUR_APPLICATION_ID']}&xfbml=1"></script><fb:comments href="#{h href}" num_posts="#{h @conf['facebook_comments.num_posts']}" width="#{h @conf.smartphone? ? 300 : @conf['facebook_comments.width']}"></fb:comments> HTML end
_ クラッチスイッチの交換
正確にはスタータロックアウトスイッチと言うべきなのかな。
しばらくは折れたところを接着剤でくっつけて凌いでいたが、バイク屋から部品が届いたとの連絡があったので、取りに行ってきた。 たったこれだけで1250円だよ。でも送料を取られなかったのでよかった。
帰ってから自分で交換したけど、今度は折らないように注意して作業した。
あと、KLX125はクラッチ切ってもニュートラルじゃないとセルが回らないんだと思っていたけど、クラッチレバーがグリップに付くくらい握り込むとニュートラル以外でもセルが回ることを発見した。 セル付きのバイクははじめてなので、このあたりの勝手が今一よくわかってない。
とりあえずは便利なんだけど、中身がよくわかんなくてちょっとイライラするのは、外部のWebサービスを使ったりする時とちょっと似ている。
_ なひ [別モジュールに読んでおいて最後にtoplevelに定義、というのはできそうですね。実際にどうしてるのかは見てませんが..]
_ なひ [Rails内部クラスを遅延ローディングするだけじゃなくて、ユーザ定義のクラスもやるんですね。だとやはり、同じことです..]
_ shugo [そうですね > ユーザ定義クラス 内部クラスだとロードされる側のファイルで対応してもいいと思いますが、ユーザ定義ク..]