configの下も出したかったので調べた。
rails-2.3.5/lib/source_annotation_extractor.rb
48 # Returns a hash that maps filenames under +dirs+ (recursively) to arrays
49 # with their annotations. Only files with annotations are included, and only
50 # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
51 # are taken into account.
52 def find(dirs=%w(app lib test))
53 dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
54 end
ここね。
サイキョウライン » RubyKaigi2008に行ってきました。
明日は諸事情で行けないのですが、来年は皆勤、というよりATTENDEEではないネームプレートで参加できるといいなー。
去年はこんなこと言ってたのですが、今年は皆勤できました。(名札はATTENDEEのままだけど><)
書きたいことがうまく文字にならず、書いては消してをくり返してのこの文章。開き直って最終日のkakutaniさんの言葉を借りると、「えも言われぬいい感じ」があそこにありました。文字通り、うまく言えないのですが、ありました。
・・・そして唐突に自分の話を。
自分、もっと前に出て行こうと意識が変わった時期(いまだPerlは書けませんが><)があって、自分ではそれ以前の意識を「テレビを見ている感覚」と呼んでいます。
旅行をしたり、歌を歌ったり、自分でもすることなのだけれど、テレビを見ている時ってあくまでもブラウン管の中で、自分がやるのとは別で、関係ないところの出来事という気持ち。(実際そうなことも多々ありますが。)
Webの記事なりブログなり、雑誌や本を読んでもそうだった。書く人はちがう世界の人で、それを読んでいる自分とはちがうところにいる人。
しかしあのイベントで数m先にいるnaoyaさんやmiyagawaさんを見て、「あー実物はふつうの人なんだ、そしてすごいことを話しているけれど、自分のやっていることも、遠いけれど同じ線上にあることで、あそことここはつながっているんだ。」と、同年代という勝手な親近感と物理的な距離の近さが相まって、そんな事を考えたのでした。
そんなことを思い出して周りを見回してみたら、ジュンク堂RubyKaigi支店で売られていた本の半分くらい(言い過ぎ?)を書いた人たちや、いつも見ているあのブログの中の人が、参加者としてとなりの椅子に座っていたり、少し先の壇上で話していたり、トイレに行くときに目の前を横切ったり、懇親会で酔っぱらったりしていたわけです。
見た目はそうかもしれないけど、普段やってることはおまえ、て意見はあると思います。でも、そんなちょっとした勘違い、軽度の自信過剰、そういうのって、一歩を踏み出すときの推進力になると思うんです。エンジンのセルモーターだとか、セルが回らなかった時に手で引くロープだとか。コンピュータのファンも電源投入時はブーンってなるじゃないですか、あれです、あれ。
そんな「テレビを見ている感覚」をひっくり返す「きっかけ」がゴロゴロ転がっていて、しかも、楽しそうにワイワイやってるところがあちこちにある。そしてちょっと踏み出すとその中に入れちゃう。(つぎの○○勉強会に来てくださいよ、みたいな。)そんな「きっかけ」とその勢いで「行動できる場所」が共存してるのが魅力のひとつなんだろうな、と、そう思ったのでした。
途中から文章が飛散した気がしますが、言いたいことは「そこに境界はあるのかい?」ということです。昔テレビで江口洋介も似たようなこと言ってました。あと、来年のために少しずつ自然石を集めていきたいと思います。以上
昨日17日から開催しているRubyKaigi 2009の会場内で開催されたRejectKaigi 2009(記事では19日のみですが、18日もありました)で、Rubyで作ったATOKダイレクトプラグインについて話しました。
途中でパワポが止まって焦った上に時間におさまりきらなかったのですが、Macユーザが多いRubyistの前で、ATOKプラグインがMacでも(Rubyで!)作れるようになったということは言えました。
作りかけの資料と話につき合っていただいたLT勉強会参加者のみなさん、本当にありがとうございました!
また、準備が8割本番2割という言葉をしっかり体感しました。(つまり、準備がまだまだ足りない!がんばります。)
以下、プレゼンで紹介しているプラグインです。
そして、APIの説明はこちら。
概要|ATOKダイレクト API|ATOK.com
「ATOK 2008」から導入された、新たな機能拡張の仕組みである「ATOKダイレクト」のプラグインを、PerlやRubyを用いて作成するための技術情報です。「ATOK2009」からは、新たにPythonにも対応いたしました。
ATOK 2009は↓から買えます。(アサマシ!)
akuma: Embeddable daemonization library -
This is a Java library you can use in your application to support Unix daemonization.
Java(というかJRuby)でどうやってデーモン書いたらいいかわからずつぶやいたら、Koichiroさんにglassfishはakuma使っている(ソース読むにはアカウントが必要です。)ヨ、と教えていただいたので、ドキュメントとソース読みつつ使ってみたらあっさりデーモンできました。すばらしー。
・・・あとは運用知識だな。(えぇー!
いつも使うときにどっち使うべきか調べてる気がするのでメモ。
CGI.escape(string)
cgi – Rubyリファレンスマニュアル
エンコード対象となるのは、英数字, ‘_’, ‘.’, ‘-’ 以外の文字です。また、スペースは ‘+’ に変換されます。
URI.escape(str[, unsafe])
URI – Rubyリファレンスマニュアル
URI 文字列をエンコードした文字列を返します。unsafe には、URI として指定できない文字を正規表現か文字列で指定します(デフォルトは、 定数 URI::UNSAFE
で、どっち使っても一発では↓のルール通りにはならんのですなぁ。
Product Advertising API
URL encode the parameter name and values according to the following rules:
昨日くじけた件ですが、他にもRubyで試された方がいて、やっぱりドキュメントのほうが間違っているみたいです。
Amazon Product Advertising APIの認証の件 – zorioの日記
#=> Nace+U3Az4OhN7tISqgs1vdLBHBEijWcBeCqL5xN9xg=
わーこの値みたことあるー!(オレなんという後出しジャンケン)
アマゾンのProduct Advertising APIにRubyでアクセス: ふと思う–ちょっと考える (いたずら編)
問題は、message digestの関数SHA256をどうするかですが、RubyにはOpenIDのライブラリーがありこの中にSHA256が含まれています。そこでgemを使ってこのライブラリーをインストール。
そして、どうやらOpenIDのライブラリでもできるようですよ。
よく考えたら自分で常用してるやつってPHPだった。こっちも調べなきゃ。
[ref.] AmazonのAPIが変わる件。
メールでも通知が来ていたのですが
Amazon Web Services Developer Community : Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
さて、このたび、Amazon アソシエイト Web サービスの名称を、「Product Advertising API」と変更しましたことをお知らせいたします。
だそうで、しかも
Amazon Web Services Developer Community : Amazon アソシエイト Web サービスの名称変更および署名認証についてのお知らせ
名称変更にともない、Product Advertising API にリクエストを送信いただく都度、認証のための電子署名を含めていただくことが必要になります。
だそうです。これ、いまAPIを使っているところすべてにこの対応をする必要があるってことですね。(ってさらっと言ったけど、でかいわコレ。)
さっそくRubyで署名を含めたリクエストを作ってみようと、まずはサンプルを再現しようとやっていたら
Product Advertising API
Calculate an RFC 2104-compliant HMAC with the SHA256 hash algorithm
のところで見事にハマりました。「なにを使ってこのHMAC-SHAを作ればいいの?」から始まって、ググってたどり着いた
Amazon SimpleDB を試してみた
ここで、最後のシグネチャは、以下のようにして作る。
を参考に、改行コードいじったりSHA256.newしてみたのだけれど、どうしてもサンプルの結果にならない。URLエンコードのところでもなにやら細工する必要がある(RFC3986?)みたいだし、ここでもなにかあるんじゃないかといろいろ試行錯誤・・・
・・・っというのをすでにたつをさんがやられていて、ここについてるはてブコメント経由で、どうやらサンプルが間違っているという議論にたどり着きました。ハマり疲れた頭ではしっかり読めないのですが、どうも日本語をエンコードするとかしないとかいう問題もあとに控えていた模様。んー・・・、出直すか。
DRb.__drburi – 8時40分が超えられない – subtech
ああやっと解った。Ring の仕組みでは UDP で受け取ったらそのメッセージの DRbObject を実行する。んで DRbObject の uri は broadcast 投げてきたマシンのホスト名な訳で、その名前解決ができないとダメと。ナルホドナァー。
別ネットワークのサーバにRingServerを立てて、開発用クライアントからつなぎにいこうとしたらまんまとこの症状にハマりました。UDPは届いてるけど返ってこない。
ホスト名 – I like Ruby too.
ホスト名からアドレスが引けずにはまることが昔っから多いので、ドット表記のアドレスにしてあげたら幸せな人が多い気がする。
そして、こちらで対応について考えられているのですが、サーバのネットワークとクライアントのネットワークの間でNAPTされてるのでそもそもサーバ側から返事が出来ないってことが判明(なんてこった)。
結局、開発時はってことでURI指定で直繋ぎにしました。今回は残念だけど、過程でRingServerのソース読んだりして構造を理解できた気がするのでよしとしたい。
この辺の話は201ページにあります。
Thread – Rubyリファレンスマニュアル
あるスレッドで例外が発生し、そのスレッド内で rescue で捕捉されなかっ た場合、通常はそのスレッドだけがなにも警告なしに終了されます。
つまり、書き捨てコードでもしっかりrescueしないとハマるよってことだ。