こんばんみ。起きて時計に目をやったら13時を過ぎていて、おかしいなと思って別の時計を見たらそれも13時を過ぎていて、今日って平日だっけ?としばし考えた結果、その状態で準備をして会社に行く気がおきなかったので会社を休んで二度寝に走ったkwです。
ま、昨日会社を出たのが朝の3時で、寝たのは確か朝の5時だったので許してください。
さて久しぶりにYahoo! Widgetの開発を再開しました。前回更新が4月だったので半年近く放置してました。なんかいろいろ英語のメールが来てたのですが全部無視してたらいつの間にか自分のWidgetがダウンロードできなくなってました。
Yahoo! Widgetのglobal functionにはopenURLという関数があり、引数にurlを渡してあげるとデフォルトブラウザで開いてくれます。はてなTrendsでははてなのRSSを読み込んでキーワードごとにリンクを張っていたのですが、リンクをクリックされたときにこのopenURLを呼び出していました。
外部のサイトのurlを開くということは攻撃対象になるおそれがあり外部から取得したurlはサニタイズすべしというおふれが出ていました。というわけでサニタイズしました。
tracにプロジェクトページを作成したのでリンクをはっときますhttp://makotokw.com/ja/portfolio/yahoowidget/hatenatrends
Yahoo! Widget Gallaryにも投稿済みなので近日中にアップされるでしょう。
ちなみに追加機能はないのですでにご利用な方が無理にバージョンをあげる必要はありません。はてなから変なurlを含んだRSSが配信されるとは思えませんし・・・はてなを偽装してわざわざはてなTrendsを攻撃してくるような特異な人もいないかと・・・ですが今回下回りのライブラリを全部書き直したので個人的には試していただきたいです。
今後Vista GadgetやGoogle Gadget、あるいはAIR、Silverlightに展開できるようにWidget Engineに依存しないで開発するためのWidget Abstact Layerという階層をでっちあげていたのですが、名ばかりで実際にはこの上の階層でも普通にYahoo! Widgetの関数を直接読んでいました。。。
今回Yahoo! Widgetに機能があるのにわざわざprototype.jsを導入して全く同じ関数をwapperとして作成したりしています。一応UI部分だけ作り替えれば他のWidgetにも展開可能になった・・・と思っています。まだやってないので何ともいえませんが。。。とりあえずVista GadgetのはてなTrendsも作ろうかと思っています。
その前にMy OUtlook TodayとSongWidgetの開発再開が先ですが。。。