トップ «前の日(09-19) 最新 次の日(09-21)» 追記

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|

2003-09-20

_ PHP+NuSOAPでGoogle Web API (13:50)

>>PHP+NuSOAPで日本語したいと思って、こちらのページを参考にNuSOAPのSOAPリクエストを送信する部分のContent-Typeを書き換えてみたのですが、うまく行きません。Content-Lengthは削ってしまうとエラーが出てしまいます。

というコメントがあったんで、試しに新しいNuSOAP(Revision 1.59)で試してみたら、Conntent-TypeとContent-Lengthを削ってもうまく動かない。

で、真面目に中身を見てみたら、現在のGoogle Web APIは普通に日本語が通るようになっているみたいだ。SOAPレベルではUTF-8でやりとり出来ている。ただ、NuSOAPがISO-8859-1以外のことを考えていないため、せっかくUTF-8で返ってきた結果を強引にISO-8859-1に変換(utf8_decode)しようとしてデータを壊してしまっていた。

というわけで、NuSOAP Revision 1.59をベースに日本語でGoogle Web APIを利用できるようにした修正版nusoap.phpと元ファイルとの差分(nusoap1.59_jp.patch)、Google Web API操作ライブラリ(GoogleSearch.php)、それを使ったサンプル(sample.php)を作ってみた。

GoogleSearch.phpのGoogle Web APIs license keyを自分で取得したものにするだけで動くかな。


  • GoogleRecordSet.phpに、取得した結果セットの1行目を読み飛ばすバグがありました。現在のアーカイブに収録されているバージョン(1.2)では修正されています。
  • 2003/10/15 queryに対して行っていた余計な変換処理を省きました。
本日のツッコミ(全15件) [ツッコミを入れる]

Before...

_ panda [ありがとうございます! とても助かりました。 #私のコメントも引き合いに出されていましたね(汗) 修正してみたと..]

_ ishinao [>まみおさん ライセンスはLGPLなんで、LGPLに基づいて改変&再配布等好きにしてもらって結構です。 というか、..]

_ まみお [了解です。ありがとうございます。 ライセンス、難しいですね(^^ゞ 仕様変更はたぶん、前向きな理由だと思います。 ..]


2004-09-20

_ ブクログ -WEB本棚サービス- (15:55)

blogmapに載っていたんで見に行ったところ、また新しい本棚ツールが出てきたらしい。でも、今のところ(今後追加される予定の機能まで考えても)、本棚の表示方法以外には、あんまり参考にするところはなさそうだなー。試しにMMに登録している本を600冊くらい登録してみたんだけど、本棚に表示できるのは100冊までっぽいんで、あんまり意味がなかったかも。

今後追加されるらしい、JavaScript Includeで書影付き表示を可能にする機能ってのは、ユーザーフレンドリーな感じで一般受けしそうだ。MMの場合は、RSSを配信するから、その手の加工は利用者サイドで勝手にやってくれというスタンスだから、あんまりユーザーフレンドリーな機能を提供する気はないんだよなー。配信データフォーマットはRSS一種類に統一しておきたい。

imageで、一番のポイントであろう、本棚の表示方法はなかなかうまいこと考えたなー。あれだけ変形させても、結構雰囲気は保てるのね。書影画像の加工って規約的にはまずそう(ブクログは画像加工しているんではなく、ブラウザ上の表示サイズを変えているだけなんで大丈夫だと思う)だけど、書影を立体感のある形に変形させて(→のような感じね)、重ね合わせて表示させる表示形式にして、JavaScriptで本棚から引っ張り出しているような動きにすると結構いいかもなー。MM上ではやらないだろうけど、RSSを食わせるとそういう出力をするスクリプトとかは作ってみてもいいかな。

Tags: MM

_ 期間指定を追加 (20:21)

UIは作っていないけれども、引数にfrom=YYYYMM(DD)、to=YYYYMM(DD)と指定すると、その期間の日付のメモのみを抽出する機能を追加。これを使うことで、たとえば、

<%=rss_recent url="http://mm.ishinao.net/index.rdf/1?from=200409&to=200410&sort=date&order=asc&kind=thought&trackback=1&size=100", 100, 36000 %>

なんて感じのRSSを指定すると、以下のようにユーザーID:1(私)が2004年9月に登録した感想URL一覧が表示されるようになります。まあふつうは自分のユーザーIDを指定して、自分の感想一覧を作ったりするのに使う感じかな。

rss_recentプラグインは、出力をカスタマイズできないんだっけ? こういう用途では、各項目にdc:dateの日付情報を出力してくれた方がうれしいんだけど。

2004年9月の読書感想一覧

%Y-%m-%d

  • [想](3) 早川書房 小川 一水 『復活の地 2』
  • [想](3) 角川書店 滝本 竜彦 『NHKにようこそ!』
  • [想](3) 光文社 西澤 保彦 『方舟は冬の国へ』
  • [想](4) 早川書房 テッド チャン,Ted Chiang,浅倉 久志 『あなたの人生の物語』
  • [想](5) 集英社 大場 つぐみ,小畑 健 『DEATH NOTE (3)』
  • [想](3) 祥伝社 上遠野 浩平 『ソウルドロップの幽体研究』
  • [想](3) エンターブレイン 鈴木 みそ 『コミック 銭 2巻』
  • [想](3) 集英社 中島 らも 『お父さんのバックドロップ』
  • [想](3) 講談社 森 博嗣 『探偵伯爵と僕』
  • [想](3) 河出書房新社 鷺沢 萠 『少年たちの終わらない夜』
  • [想](3) 早川書房 田中 啓文 『蹴りたい田中』
  • [想](4) メディアワークス 成田 良悟 『バッカーノ!―The Rolling Bootlegs』
  • [想](5) 新潮社 池波 正太郎 『剣客商売』
  • [想](3) 新潮社 池波 正太郎 『辻斬り』
  • [想](3) メディアワークス 谷川 流,蒼魚 真青 『学校を出よう!―Escape from The School』
  • [想](3) 講談社 森 博嗣 『Φは壊れたね』
  • [想](4) メディアワークス 成田 良悟 『バッカーノ!1931 鈍行編―The Grand Punk Railroad』
  • [想](5) メディアワークス 成田 良悟 『バッカーノ!1931 特急編―The Grand Punk Railroad』
  • [想](3) 幻冬舎 上大岡 トメ 『キッパリ!―たった5分間で自分を変える方法』
  • [想](4) メディアファクトリー 小栗 左多里 『ダーリンは外国人―外国人の彼と結婚したら、どーなるの?ルポ。』
  • [想](5) 講談社 二ノ宮 知子 『のだめカンタービレ (10)』
  • Tags: MM

    _ 欲しけりゃ作ろう (20:38)

    rss_recentプラグインで、各項目に日付を出力するパッチ。rss_recentに第4引数を追加し、そこで出力したい日付フォーマットを指定する。上記では'%Y-%m-%d'を指定している。

    *** rss-recent.rb.org   2004-09-20 20:29:01.000000000 +0900
    --- rss-recent.rb     2004-09-20 20:36:04.000000000 +0900
    ***************
    *** 21,27 ****
        "Using RSS parser version is #{::RSS::VERSION}.",
      }
    
    ! def rss_recent(url, max=5, cache_time=3600)
        url.untaint
    
        cache_file = "#{@cache_path}/rss-recent.#{CGI.escape(url)}"
    --- 21,27 ----
        "Using RSS parser version is #{::RSS::VERSION}.",
      }
    
    ! def rss_recent(url, max=5, cache_time=3600, dateformat = '')
        url.untaint
    
        cache_file = "#{@cache_path}/rss-recent.#{CGI.escape(url)}"
    ***************
    *** 39,44 ****
    --- 39,47 ----
        rv << '<li>'
        rv << %Q[<span class="#{rss_recent_modified_class(time)}">]
        unless url.nil?
    +       if dateformat != ''
    +         rv << %Q[#{CGI.escapeHTML(time.strftime(dateformat))} ]
    +       end
          rv << %Q[<a href="#{CGI.escapeHTML(url)}" title="#{CGI.escapeHTML(title)}]
          rv << %Q[ (#{CGI.escapeHTML(time.localtime.to_s)})] unless time.nil?
          rv << %Q[">]
    
    Tags: tDiary MM
    本日のツッコミ(全1件) [ツッコミを入れる]

    _ リリ [Web本棚より一歩進んだ??物々交換サイトも面白いですよ。 リユーザー http://reuser.jp/ 自分..]


    2005-09-20


    2006-09-20

    _ だらだら来ても1時間40分程度らしい

    かかった時間1:40
    自転車に乗っていた時間1:17
    走行距離25.50km
    平均時速19.7km/h
    最高時速44.9km/h
    総走行距離357.2km

    また明治通りルート。2日連続はまだ体が慣れていないんで、今日は寄り道しながらのんびり行く方向で。といいつつも、蕨のSOXであっさりDJEBELのスパークプラグが手に入ってしまったんで、それ以外は特に寄り道もしなかったけど。

    昨日より1時間ほど遅く出発したところ、昨日よりもだいぶ道が空いていた。朝の混雑が一段落したタイミングだったのかな? というわけで、基本的に急がずだらだらこいでいたつもりだったんだけど、結果的に昨日よりも平均時速的には速かったらしい。

    体の方は、やっぱり2日連続はまだ体がついていかず、足全体の筋肉がふとした拍子に軽く痙攣しそうになるくらい疲れている。といっても、自転車をこいでいるときは別に大したことはなく、信号とかで停まっているときやこぎ始めるときに気になる感じ。あと右手の親指の付け根が痛い。右手はまめにグリップシフトを回すんで、そのせいだと思う。自転車の基本性能的には今のでも十分片道25kmに耐えられるんだけど、グリップシフト以外に切り替えたいとなったら、結局自転車ごと買い換えることになるんだろうなー。今の自転車に金かけるのはあほらしいし。

    _ 帰りは1:30

    かかった時間1:30
    自転車に乗っていた時間1:17
    走行距離25.53km
    平均時速19.9km/h
    最高時速45.1km/h
    総走行距離382.7km

    右足の太ももの裏側の筋肉がつりそうなんで、帰りは足に少しも負担をかけないように気をつけて帰ってきたんだけど、それでも1時間半で帰り着けた。夜遅めの時間帯だったら、どんなにゆっくりめに走っても1時間半見ておけば十分ってことか。これ、それなりの自転車に乗り換えたらどれくらいに短縮されるのかなー。エンジンはこのままでも10分とかの単位で短縮できるんだったら、乗り換える価値があるんだけど。


    2007-09-20

    _ 無効なルーティングでIndex/Indexを呼ばせない

    Zend Framework(trunk)でRewriteRouterを使っていて、無効な(設定したルートいずれにもマッチしない)ルーティングの場合はエラーが出てほしいんだけど、なぜかIndex/Indexにルーティングされてしまう。

    フロントコントローラ(もしくはディスパッチャ)のuseDefaultControllerAlways設定の問題かなーと思ったんだけど、それもデフォルトのままでOKのはずだし、おかしいなーと思いつつも、あまり重要度が高くない問題だったんでしばらく放置していた。

    けど、やっぱり気色悪いなーとソースを追いかけてみたところ、なんだかZend_Controller_Dispatcher_Standard::isDispatchable()の、

             if (!$className) {
                return true;
             }
    

             if (!$className) {
                return false;
             }
    

    なんじゃないかという気がしてきたんだけど、まさかバージョン1.0.0が発表されてずいぶん経つし(もう1.0.1も発表されてるし)、こんなところにこんなバグが残っているはずがない気もするし、Zend FrameworkのJIRA(バグ管理ツール)もまた落ちているみたいだし(っつーか、最近Zend FrameworkのWikiにつながったことないんだけど、その辺のサーバーって生きてるの?)、ひとまずここでさらしてみる。

    直った

    やっぱりバグだったのか。1.0.2(ZF-1727)で修正されていた。っつーか、1.0.2が出るまでずっとJIRAが死んでなかった? そんなにまめにチェックしていたわけじゃないけど、もしかしてZFの開発はすでに収束に向かっているのかと疑ってしまったよ。