amazon-auth-proxy このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

2009-07-23追記: たださんのスクリプトが302リダイレクトするようになりましたので、そちらをそのまま使っています。

参加してみました。手順はhsbtさんのを元に、コードはたださんのをベースにして302対応しました。

diff --git a/amazon-auth-proxy.cgi b/amazon-auth-proxy.cgi
index 8c12e06..3f8ddd3 100755
--- a/amazon-auth-proxy.cgi
+++ b/amazon-auth-proxy.cgi
@@ -63,11 +63,7 @@ def paapi( conf, params )
      end
      qs << "Signature=#{u [hash].pack( "m" ).chomp}"
 
-      url = uri.to_s + '?' + qs * '&'
-
-      timeout( 10 ) do
-              open( url, &:read )
-      end
+   uri.to_s + '?' + qs * '&'
 end
 
 if __FILE__ == $0 then
@@ -78,13 +74,8 @@ if __FILE__ == $0 then
      conf = YAML::load_file( 'amazon-auth-proxy.yaml' )
 
      begin
-              header = cgi.header(
-                      'status' => '200',
-                      'type' => 'text/xml;charset="UTF-8"'
-              )
-              body = paapi( conf, cgi.params )
-              print header
-              print body
+           url = paapi(conf, cgi.params)
+           print cgi.header({'status' => '302', 'Location' => url})
      rescue
              print "Status: 500\nContent-Type: text/plain\n\n"
              print $!.message

一応プロキシの登録認証を通ったのでうまく動いているんだと思いますが、変なところがあったらごめんなさい。

Posted by iwadon ( 2009-07-21 16:34:00 GMT ) | カテゴリ , | タグ , , | トラックバックなし | コメントなし

Ruby版Text::HatenaのリポジトリをGitHubへ移しました このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

以前ユーザ登録しただけで全く活用していませんでしたが、ふと使ってみようと思いたちまして、手始めにRuby版Text::HatenaのリポジトリをGithubへ移しました。

コード自体は自宅サーバのリポジトリと同じです。GitHubでのgemの配布に対応しましたので、以前よりは使い始めやすくなったのではないかと思います。BTSなどの機能も一通り揃っているのも嬉しいです。

まだリポジトリ移しただけで特に何って訳ではありませんが、以前よりはパッチなどを受け取りやすくなったり、バグ追跡もわかりやすい形で行っていけるのではないかと思います。実は自宅サーバの調子が悪くても問題が無いというのが一番の利点だったりして。

Posted by iwadon ( 2009-07-11 11:33:00 GMT ) | カテゴリ | タグ , , | トラックバックなし | コメントなし

Rubyで名前修飾 このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

こんな感じ?

module NameMangling
  def method_added(name)
    name = name.to_s
    @__method_added_stack__ ||= []
    if /\A__/ =~ name and not @__method_added_stack__.include?(name)
      new_name = "__#{self.name}" << name
      @__method_added_stack__ << new_name
      alias_method new_name, name
      @__method_added_stack__.pop
      remove_method name
    end
    super
  end
end

class A
  extend NameMangling
  attr_accessor :__foo
  def foo=(value)
    @__foo = value
  end
end

a = A.new
#p a.__foo    # undefined method `__foo'
#p a.__foo = 1    # undefined method `__foo='
p a.__A__foo # => nil
p a.__A__foo = 1 # => 1
p a.__A__foo # => 1
p a.foo = 2
p a.__A__foo # => 2

Posted by iwadon ( 2008-09-19 03:49:00 GMT ) | カテゴリ , | タグ , , | トラックバックなし | コメントなし

TypoのiPhone対応 このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

http://moonrock.jp:23000/?format=iphone

iUIを使ってこのTypoをiPhoneっぽく見えるようにしてみた。一応それなりに見えるようになったが、問題はURLがpermalinkではなくなってしまうことかな。これはiUIを使う限りはしょうがない感じ。

Posted by iwadon ( 2008-09-14 09:36:00 GMT ) | カテゴリ | タグ , , | トラックバックなし | コメントなし

このTypoでコメントが書けなくなっていた件(修正済) このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

2008-07-21追記: 対応していただきました(r1763)。ありがとうございます!!

Typo - Bug #1239: Failed to comment: the cache and InvalidAuthenticityToken - Typo bug tracker

最近TypoにもCSRF対策として、Rails 2.0から導入された機能が使われ始めました。その影響なのか定かではありませんが、ここ最近このTypoへコメントを投稿すると必ず失敗していました。Railsのキャッシュ機能をOFFにすることで一時的に対処しましたが、このままではまずいのでTypoのRedmineへ報告しました。

Posted by iwadon ( 2008-07-20 16:17:00 GMT ) | カテゴリ | タグ , , , | トラックバックなし | コメントなし

Ruby版Text::Hatena 0.12.200080627.0 このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

http://moonrock.jp/~don/ruby/text-hatena/

Ruby版Text::Hatenaを更新しました。上記リンク先のページからダウンロードできますので、興味のある方はお試しください。主な変更点はasin機能の実装です。

http://raa.ruby-lang.org/project/ruby-aws/

まず、asin記法を使う際にアマゾンから情報を引っ張ってくるライブラリをruby-amazonからruby-awsに変更しました。RAAや作者のサイトからダウンロードしてインストールしてください。最新版(0.3.3)からはgemでの配布も始まったようです。

また、情報を引っ張る際にこれまでは公開されていたはてなのトークンやアフィリエイトIDを使っていましたが、今回から私個人のものに置き換えてあります。これは新しいAWS用のはてなのトークンがわからなかったためです。今後はてなのものを見つけられ次第置き換えます。

Posted by iwadon ( 2008-06-26 19:09:00 GMT ) | カテゴリ | タグ , , , | トラックバックなし | コメントなし

RubyKaigi2008 このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

日本 Ruby 会議 2008 - FrontPage

去年と同様納期間際であるため参加出来なかったが、今回はUstream+IRCで(擬似的な?)参加を行えた。スタッフの皆さんに感謝。とても楽しかった。来年は直接参加できるといいなあ。

タグ検索 RubyKaigi2008‐ニコニコ動画(SP1)

レポート:RubyKaigi2008 スペシャル★レポート|gihyo.jp … 技術評論社

今後はまだ見ていない発表をニコニコ動画で見たり、gihyo.jpの記事を読んだりする予定。

Posted by iwadon ( 2008-06-22 23:31:00 GMT ) | カテゴリ | タグ , , , | トラックバックなし | コメントなし

Praggerのプラグイン このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

Yet Another Praggerを見て思い出したことを書いてみる。

Praggerのプラグインは、個人的にはプラグイン間のデータの取り決めなどが定まると安心して作れるようになるのではないかと考えている。

現在はひとつ前に呼ばれたプラグインによって、次のプラグインに渡されるデータの内容が決まるので、プラグイン同士の前後関係などが決め打ちっぽくなっている印象を持っている。以前custom_feedプラグイン(現在のFeed::custom_feedプラグイン)が返すデータについて書いたことがあった。内容は、工夫しないと簡単に情報を削ってしまうので、受け取ったデータの扱いには気をつける必要があることがあるというもの。

A mere typo : custom_feedプラグインの戻り値

プラグインが自由に独自構造のデータを後続に渡すことができる仕組みのままでは、設定ファイルの前段に置かれるプラグインが後続するプラグインの仕様を決めてしまう。しかも(これはなんとなーく思うことなので事実と反する可能性が高いが)Praggerはこれを意図して行っていないように見える(天然?)。たとえばFeed::custom_feedプラグインの次はRSS::saveくらいしか安心して置けない(置けなくても構わない用途しかない)、というあたりとか。

いやまあ、でも今のままでもPraggerらしいかなあ、と思ってたりするところが自分の弱いところ。プラグイン間のデータの仕様を取り決めることが改善といえるかどうかも自信無い。このあたりはもっとPraggerのヘビーユーザの意見を聞きたいところ。

Posted by iwadon ( 2008-06-12 21:20:00 GMT ) | カテゴリ , | タグ , , | トラックバックなし | コメントなし

Yet Another Pragger このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

Yet Another Pragger – BONNOH FRACTION 13

Pragger実行環境の別実装、という感じかな。ぱっとソースを読んだだけだが、結構凝った作りのコードになってた。こういう動きは面白いなのでぜひ頑張っていただきたい。

はてなブックマークには「自前の実行環境を用意したくなる気持ちはわかるなあ。」などとコメントを残したが、実はかくいう自分も簡単な別実装を書いたことがあるんだよね(http://moonrock.jp/~don/svn/pragger/trunk/)。だいぶ前に書いたものなので詳細は忘れてしまったが、たしか、もとのpragger.rbを使うと必ず実行してしまうためプラグイン毎のテストをし辛かったので、プラグイン周りを自分で用意したらpragger.rbを再実装することになった、という感じ。結局日々の実行も自前のものを使うようになりましたとさ。

Praggerの仕組み自体はシンプルなので、こうした実行環境の再実装は結構簡単にできるのではないかなあと思う。Praggerの肝はプラグインと設定ファイルにあるわけだし、結局実行して結果が同じならpragger.rbの種類がいくつもあってもいいよね、ってことで。Yet Another Praggerの方も後日試してみたい。

Posted by iwadon ( 2008-06-12 20:54:00 GMT ) | カテゴリ | タグ , , | トラックバックなし | コメントなし

grep このエントリーを含むはてなブックマーク このエントリーをブックマークした人数

仕事で使うためにUTF-16のテキストファイルを扱えるgrepを探していたが、ちょうど目的に合ったものを見つけられなかったので、以下のようなスクリプトを書いた。

#!/usr/local/bin/ruby
require 'nkf'
pattern = Regexp.new(NKF.nkf('-w', ARGV.shift), 'u')
ARGV.each do |arg|
  File.open(arg, 'rb') do |f|
    text = NKF.nkf('-w', f.read)
    text.each_with_index do |line, lineno|
      if pattern =~ line
     print("#{arg}: #{lineno + 1}: #{NKF.nkf('-s', line.chomp)}")
      end
    end
  end
end

検索したい単語と検索対象のファイルの文字コードをUTF-8に変換している。あと都合により出力結果はシフトJISで出している。

exerbで実行ファイルにして、MeadowのM-x grepから起動している。

Posted by iwadon ( 2008-06-07 13:11:00 GMT ) | カテゴリ | タグ , | トラックバックなし | コメントなし