サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
postcard.blog.ocn.ne.jp
Amazon APIに必要なOpenIDライブラリー(ruby-openid)のHMACモジュールが、Ruby1.9での仕様変更で使えなくなってしまった(*1)。そこでRuby1.9.2で使えるようにHMACモジュールのXOR演算部分を修正した。でもベスト・プラクティスは、OpenSSLライブラーを使うこと。 Rubyの1.8系と1.9系では、いろいろな違いがけっこうあります。便利なった点も多数ですが、仕様変更で「ムッキー!」となることもしばしば。特に良く使うStringクラスは、文字のエンコードを文字が知っているので、正規表現でマッチさせようとするとエンコードが違うためにマッチできないエラーになったりします。 Amazon APIはHMAC/SHA256署名が必要 AmazonのProduct Advertising APIは、色々な商品情報を取得できる便利なAPIです。しかし利用ガイド
これまでUbuntu 9.10なんていう1年半前の古いLinuxを使っていました。理由は、バージョンアップしてテレビが見られなくなると困るから。しかし、先日Ubuntu 11.04が公開されたことに触発されやっと最新版のUbuntuにバージョンアップしました。 バージョンアップ自体は簡単に終了したのですが、やっぱりテレビを見られなくなってしまいました。しかし既に多くの方がUbuntu 10.04LTSや最新版の11.04で地デジを見られるようにする方法を公開されています。これは、それらを参考にしてテレビを見られるようにした記録です。 スタート時のシステム OS:Ubuntu Server(64bit)版 10.04LTS テレビチューナー:PT2 スマートカードリーダー:SCR3310-NTTCom これまでテレビを見られていたので、画像を復号化するb25など必要なライブラリーとパッケージ
Web(HTTP)ベースでデータの受け渡しには、簡素な構造と送られてきたデータの解析のしやすさからJSONが良く使われます。 実際、JavaScriptやRubyでは、送られてきたデータを直接evalことで変数に取り込むことが出来ます。その他の言語でも、JSONを扱うためライブラリーが多数公開されています。 C#ならば C#でJSONを扱うライブラリーとしては、JSON.NETが有名だと思います。しかしC#は基本的に静的言語なためデータを取り込むためには、データの形を定義したクラスを定義しておく必要があります。また、プレーンなJSONではなく、連想配列の中に連想配列が入っているような入れ子状になったJSONを扱うことは可能なのだろうけど、簡単ではありません。 もっと手軽にJSONを扱えるライブラリーが無いかと探していたら、dynamic JSONを見つけました。ライブラリーは、CodePl
Twitterの写真投稿先として一番使われているサイトは、TwitPicです。ここはTwitterのユーザであれば、TwitPicにユーザ登録すること無く写真を投稿できます。これは、Twitterのユーザ名とパスワードを本人確認をしているためです。 しかしどんなに魅力的なサービスであったとしても、ユーザにとってパスワードを登録することに躊躇します。そこで、Twitterを中心にパスワードがなくても本人確認できるOAuthという認証方式が策定されました。 外部サービスで本人確認をする方法 ユーザ確認で一番単純な方法は、パスワードです。パスワードが正しいければ、サービスを使おうとしている人が本人である認めます。OAuthは、パスワードの代わりにTwitterとサービスを提供するアプリだけが知っている秘密の鍵を使って確認します。では、外部サービスであるTwitPicは、どのようにユーザ確認をする
KVMホストに、ホストと同じUbuntuをインストールしたゲストを作成する。ただしゲストは、サーバ用途なので最小限のパッケージのみの軽量版で、JeOS(ジュースと発音する)と呼ばれる。もちろんパッケージを追加すればデスクトップ版と同等になります。JeOSのインストールは、CD-ROMいらずで、時間も数分で完了する。最後に、仮想マシンの起動と停止方法を解説する。 KVMによって完全仮想化されたゲストOSは、普通の物理マシンにインストールするようにCD-ROMを使ってインストールできます。しかしサーバ用途のJeOS(ジュースと発音する)と呼ばれる軽量版Ubuntuは、もっと簡単にインストールすることができます。インストールには、ホストと同じOSなのでCD-ROMが必要無く、コマンド一発でインストールできます。インストールに必要な時間も、必要なパッケージがキャッシュされていれば数分です。 ゲスト
Ubuntu ServerをLVMで仮想化したドライブにインストールするのは非常に簡単。インストーラのメニューを選択していくだけでインストール完了。このやり方は、Desktop版のaltanativeインストーラーでも同じ。 LVMとは LVMは、Logical Volume Managerの略で、Linux上のハードディスクドライブ(LVMでは、ボリュームと呼ぶ)を仮想化する仕組みです。実際のディスクドライブを仮想化します。 その結果、ディスクの容量が実際のディスクの容量に縛られることが無く、複数のディスクを結合して大容量のディスクにしたり、容量を後から動的に変更できます。インストールするときにパーティションの大きさで悩む必要がないと言うことです。 最近はUbuntuが人気らしい LVMを試すには、LinuxをカーネルとしたOSをインストールする必要があります。しかし、FreeBSDなら
メールからTwitterに書き込むサービスTwilをバージョンアップしました。もうパスワードを登録する必要はありません。さらに位置情報の付いた写真を送ると、その情報も写真公開サイトとTwitterに反映されます。ちなみにTwilは、TWItter maILの略です。 携帯電話などからメールを送ってTwitterを更新するサービスTwil(そのブログ記事)を先日公開しました。公開早々多くの方に利用していただき、ありがとうございます。 ただし、このサービスを使うには、Twitterに書き込むためにパスワードを登録してもらう必要がありました。でも、パスワードが漏れたりしないか不安ですよね。それに、パスワードを変更する度に登録し直すのも面倒です。そこでパスワードを登録しなくても同じようにメールからTwitterに書き込み更新できるようにTwilを改良しました。 携帯電話のWebページを使ったサービ
携帯電話などから専用アドレスにメールを送ると、Twitterに「つぶやく」サービス(Twil)を作成しました。メールに添付の画像を回転させてから更新できます。 Twitterの良いところは、ほとんど24時間365日「つぶやける」ことなんだと思います。そのためには、携帯電話などのモバイル機器との連携が欠かせません。そのためモバイル機器からTwitterを更新するサービスは何種類もあります。 携帯電話から更新するには、「MovaTwitter」が使い勝手や機能などからも非常に良さそうです。しかし、これらのWebサービスは、毎回Webページを開く必要があり、使うまでにワンテンポ間が空いてしまうためにどうも馴染めません。 携帯電話のメールは、専用ボタンで起動できるので非常に使い勝手が良い。そこでメールからTwitterに「つぶやく」サービスを探しました。Twitterをメールで更新する時に欲しい機
パスワードを教えることなくユーザーの権限を与えられるOAuth認証は、便利だけど結構複雑なプロトコール。しかしライブラリーが公開されているので、それを使って簡単にOAuth認証機能をアプリケーションに組み込むことができた。ここでは、その例を示す。 OAuth認証とは ユーザー毎のWebサービスを提供するには、アクセスしてきたユーザーが本人であるか、他の人であるかを識別する必要があります。そのためには、ユーザー名とパスワードの組み合わせが広く使われています。しかし、この方法は、ユーザーにとってはサービス毎にユーザー名とパスワードを考えなければならず、面倒なの色々な所で同じパスワードを使いまわしてしまうと言う危険性を招きます。また、Webサービス提供側も、パスワードの管理に特別な注意が必要となります。 このユーザー管理を便利にするためのプロトコールが、OpenID認証です。このプロトコールを使
UbuntuにVT-xなどの仮想化機構を使って完全仮想化するKVMをインストールする方法。必要なパッケージをインストールするだけで、仮想環境を構築できる。 仮想化の種類と特徴 PCの仮想化には、大きく分けて準仮想化と完全仮想化の二種類があります。 準仮想化は、完全に物理的なマシンを仮想化するのではなく、ゲストのソフトと協力しつつ仮想化する方法です。そのため効率が高くなり速く動くことができます。ただし、ゲストのソフトとの協力が必要なためwindowsなどの自分で手を入れることのできなソフトは動かすことができません。この準仮想化の代表的なソフトが、Xenです(*1)。 完全仮想化は、名前のように物理的なマシンを丸ごと完全に仮想化する方法です。そのため仮想化されるゲストと仮想環境を提供するゲストの間でアーキテクチャは全く異なっていても問題ありません。極端な話、CPU自体も仮想化するのでインテルの
認証の必要なAmazonのProduct Advertising APIにRubyでアクセスできました。 アマゾンからのメールでAmazon Web Service(AWS)が、Product Advertising APIと名前が変わるという連絡がありました。そしてこの新しいAPIにアクセスするときに認証が必要になるとのことでした。(Amazonアソシエイト・プログラムの公式ブログにもこの件に関する書き込みあり。) そこで、さっそくRubyでサンプルコードを書いてアクセスできるか試してみました。 もっとも基本的なパラメーターなどは、今までのAWSと同じです。ただし認証のためにmessage digestを作成して付け加えるだけ。このmessage digestの作成方法は、Product Advertising APIのRequest Authenticationを参照しました。 問題は
OpenIDでユーザー認証するプログラムは、便利なOpenID用のライブラリーと、先人のサンプルがあるので簡単でした。 認証プログラムのサンプルは、「Ruby OpenID 2.0でYahooのOpenIDを試してみる」と「認証APIいろいろをRubyで使う - taslamの日記」を参照させてもらいました。 他のプログラムからもライブラリーを再利用できるようにクラスを作っておく。 require 'openid' require 'openid/store/filesystem' class OpenidClient @store_dir = "/tmp/session" def self.begin(id_url, site_url, called_url, uid) session = {} # keep current umask tmp_umask = File.umask Fi
JavaScriptを使うと、現在表示しているページのURLを取得することができる。 現在表示しているページのURLを表示させるには、document.locationとdocument.URLの二つが使える。どちらも document.write(document.location) document.write(document.URL) とすると現在表示しているページのURLが表示される。 そのためどちらもまったく同じだと考えていました。 しかし、得られたURLの長さを調べようとlengthメソッドを使うと、document.locationのほうは、エラーになってしまいました。 なぜかとtypeof()でそれぞれのクラスを調べてみると、document.URLは予想通りStringであるのに対して、document.locationはObjectでした。 JavaScript
Alexa Site Thumbnailでサムネイルを作ってみたメモ。 Alexa Site Thumbnailを使うためのAPIは、シンプル。URLにパラメーターを埋め込んでリクエストを送るだけ。SOAPでのリクエストも可能です。結果は、サムネイル画像のあるURLを含んだXMLが帰ってきます。一度のリクエストで複数ページのサムネイル画像を取得することも可能です。 このメモでは、URLにパラメーターを埋め込むQUERYタイプのリクエストで1ページ分のサムネイル画像を取得する方法について書きます。Alexa Site Thumbnailの正確なAPIの仕様は、Developer Guideを参照してください(*1)。 リクエストの作成 QUERYのパラメーターで必須なものは、6つ(AWSAccessKeyId, Timestamp, Signature, Action, Url, Size)
サムネイル画像作成方法のまとめと実践メモ。「超整理法ソーシャルブックマーク」に、登録されたWebページのサムネイル(thumbnail)画像を表示するため。 Webページのサムネイルは、Web Thumbnailを略してwebnailとも呼ばれているらしい。 サムネイルを作成するWebサービス AlexaのWebサービスでサムネイルを作れるが、Site Thumbnailのため個々のページをURLで指定しても全てトップページのサムネイル画像になってしまう。サムネイルをページごとに作成したかったので、Alexaは却下。それに非常に安いとは言っても有料。 Simple APIとサムネイルAPIは、どちらも簡単で使いやすい。しかも無料。ただしSimple APIは、なぜかサムネイル画像を一向に作成してくれなかったので却下。サムネイルAPIは、一度にどのくらいのサムネイルをリクエストしても良いか書
Yahoo! JapanにGeocoderサービスがあるらしい。 日本の住所を位置情報に変換するには、Google Mapsのページから抜き出すとか、使い方の良く分からないGoogleのAjaxを使うとか、独自の方法を使う必要がありました。 そんな中「はてなブックマーク」を見ていたら、「非公式だが使えるYahoo! Japan Geocoder API」(*1)という記事を見つけました。さっそく記事を参考に試してみたところ、確かに指定した住所を緯度と経度に変換できました。 このAPIの面白いところは、一ヶ所の位置だけでなく、何ヶ所か候補を帰すところ。まったく別のところに同じ地名があったり、「神戸市」を指定すると「中央区」や「兵庫区」などの場所をまとめて帰ってくる。候補の中から選択できるので、Ajaxとかに便利そう。 使い方は、参考にした記事(*1)を読んでください。実際に使ってみるとすぐ分
Baiduspiderというクローラーを拒否するApacheの設定。一緒にUbiCrawlerも。 毎日すごい頻度でBaiduspiderというクローラーがやってきます。これは、「百度」という検索サイトのクローラーです。GoogleやYahoo!などのクローラーからのリクエストは、最低数秒間隔です。しかしこのBaiduspiderからは毎秒と言って良いくらい。これではさすがに負荷が高すぎになってしまいます。 そこでこのクローラーは、出入り禁止にすることにしました。まずは紳士的に。 クローラーは、/(ルートディレクトリー)のrobots.txtというファイルを読んで、そのサイト内のデータを取り込んでよいか確認することになっています。と言ってもこれは紳士協定。ちゃんと守るクローラーもいれば、守らないクローラーもいます。 Baiduspiderは、自身のヘルプにはrobots.txtのことが触れ
「あまぷち」とは、アマゾンの商品価格が登録した値段よりも安くなったらRSSを通して連絡するサービスです。商品登録ページには、Ajax(*1)をちょっとだけ使ってみました。 Amazonの価格は、日々変動しています。この変化を教えてくれるサービスとして「あまとも」や「AmazonPrice」という非常に便利なサービスがあります。特に「あまとも」は、価格が安くなったり高くなったときにRSSで連絡してもらえるので便利に使っていました。 しかし登録商品が多くなると、本気で買おうと思っていた物の価格が下がった連絡を見落とす「へま」をするようになりました。また自分の購買行動を見ると、日々の変動よりも決まった値段より安くなったかどうかが知りたいところです。例えば、「Google誕生」が1200円になったら買おうとか。 決まった値段でユーズド商品を買いたいときには、マーケットプレイスで予約注文をすることが
IEやFirefoxをはじめとするブラウザーには、「お気に入り」は無くてはならない機能です。 しかし、今ひとつ使いにくいと思いませんか。新しいページを「お気に入り」に追加するたびにリストは長くなり、どこにあるかわからなくなったり、つい最近加えたページを開くためにリストの最後までたどったり。また、複数のパソコンやブラウザーを使っていると、「お気に入り」に入っているページや位置が異なったりするのも面倒です。 そこで野口悠紀雄さんの「超」整理法で有名な時間軸にそって「お気に入り」を並べるオンラインブックマーク「BookmarkNet」を作成しました。最近アクセスしたページが、自動的にリストの先頭に位置し、使わないリンクはだんだんリストの最後に押し出されていきます(登録ユーザー以外のアクセスでは並び順は変わりません)。 BookmarkNetのサンプル ただ超整理法だけでなく、カテゴリーによる分類
Google Maps API Blogによると、Google Maps APIにgeocoder機能が追加されました。 geocoderとは、住所を緯度経度に変換する機能のことです。この日本の住所に関するgeocoder機能はすでにいくつか公開されていましたが、ついにGoogle謹製のgeocoderの公開です。さらに対応している国の住所は、日本のほかアメリカ合衆国、カナダ、イタリア、ドイツ、スペインの6ヶ国です。他国の住所に対応しているのもGoogle製geocoderのいいところです。 geocoderには、JavaScriptを使ってWebページ上からと、HTTPを使ってアクセスできます。 JavaScriptを使う方法は、APIのドキュメントにあるサンプルのまま使うことができるようです。 ただHTTPを使ってgeocoderを使う方法で困ってしまいました。 アメリカの住所は、サン
新しいGoogle Maps APIのβテストが開始されました。 Google Maps APIは、元々β版なので、ある意味Ver. 2の正式リリースと理解してもいいのでしょうか? 現在のGoogle Maps APIを使ったアプリケーションからVer. 2への移行は非常に簡単です。基本的に互換性があるので、 Google MapsのJavaScriptを読み込むhttp://maps.google.com/mapsというリンクのパラメータ(v=1)をv=2と書き換えるだけです。これでほとんどのアプリケーションは、今日からAPI Ver. 2を使用していることになります。 Google Maps APIのブログを読むとVer. 2では、 JavaScriptのコードが小さくなったので、動作が軽くなる。 メモリーリークの問題を改善。 デバッグのためにGLogクラスを新設。 GLatLngクラ
最近Ajaxの参考書が次々に刊行されています。ごく普通のJavaScript解説書でさえAjaxを取り上げています。 そんな中楽しみにしていたAjaxの参考書「Ajax 実装のための基礎テクニック」が先週発売されました。当初は2月の刊行予定だったものが、ずっと延期されていました。 しかし立ち読みしてガッカリ。思っていた内容と全然違っていました。これだったら今までに刊行されているAjax本と内容に大差なしでした。ただDOMの解説が詳しくてよかった程度です。 それより偶然見つけた「Ajax逆引きクイックリファレンス」がすごく気に入りました。WEB2.0対応と書いてあるのが何じゃそりゃでしたけど。 名前のとおりこういう事をしたいときにはどうしたらいいのかという感じに書かれているので、すでに多少プログラムの経験がある人で、すでに作りたいものがある人にはまさにおすすめです。 Ajaxの概念をとうとう
ブログの記事を登録できる地図は、ブログ人の「ブログ人マップ」のほかにもいくつかあります。一つのトラックバックで、それらの「トラックバック地図」全てに同時登録してしまおうという話。 ブログをつらつら読むのって、とってもいい暇つぶしになります。新発見があったり、感心したり。新着やカテゴリーで新しいブログを探すのもいいですが、地図サービスと結びついた「トラックバック地図」から近所の記事を読むのが最近のお気に入りです。 地図から記事を読みに行くのが楽しいので、自分の記事もできるだけ登録するようにしています。トラックバックを送ることで記事を地図上に登録できるサービスは、自分の作っている「どこだログ」のほかにも「ブログ人マップ」「はてなマップ」「Livedoor地図」があります(*1)。 これら全てに登録しようとすると、それぞれの地図をグリグリして目的地を探し、それぞれ異なったトラックバック先にトラッ
Google MapsのAPIに関するディスカッショングループ「Google-Maps-API」を久しぶりに読んでみたら、これから公開されるだろう新しいバージョンのAPIに関する話題がいくつか出ていました。Maps APIの公式ブログに「JavaScript temporarily forked」という記事があったのですが、分かれた先はVer. 2だったのですね。 新しいバージョンのAPIで大きく変わる点については、MapkiのAPI V2に関するページに簡単にまとまられています。また、Google Maps API Ver. 2のチュートリアルとしては、Google Maps API Version 2 Tutorialが非常に良くまとまっています。サンプルが表示されないのがかなりありますが、ソースコードを見て自分でためすとたいてい動きました。 一番大きな変更は、GPointの変更。地理
Google Maps APIで使う位置を示すマーカーは、アメフトで使われるようなGoogleオリジナルアイコンの他にも多数公開されています。どのようなアイコンが公開されているかは、Google Maps APIのポータルサイトであるMapkiのFAQ->Markersを参照してください。 また、公開されているマーカー用のアイコンだけでなく、自分で作成したオリジナルなアイコンもマーカーとして使えます。 久しぶりに新しいマーカー用アイコンを作ろうとしたらちょっと戸惑ったので、メモを書いておきます。 1. マーカーに使うアイコンを作成 GIMPやPhotoShopなどのピクセル単位で色をつけられるペイント系お絵かきソフトでアイコンを作成します。アイコンの作成には、「ドット絵」の技術(センス)が必要。ドロー系のお絵かきソフトで絵を作り、ペイント系ソフトで縮小と修正するのが簡単。 アイコンの大きさ
トラックバックすることで地図上にマークする「どこログ+カテログ」を、Google Maps APIが公開されてから作ってきましたが、似たコンセプトの「ハコパンダ☆map」というのが公開されました(*1)。「先を越された」って感じです。 「どこログ+カテログ」も少しずつ機能を向上させています。 吹き出しの内容の変更。噴出しの中に、写真だけでなく記事の概要も表示するようにしました。 地図を変更。日本全体を表示させようとすると、どうしても縮尺が大きくなってしまい、マークが重なりすぎてしまう。そこで縮尺を小さくするとともに、面積を大きくしました。また、衛星写真(サテライト)がデフォルトでしたが、「マップ」をデフォルトにしました。「マップ」ならば、日本中どこでも最小縮尺で表示できるので正確に場所を指定できるようになります。 ちょっと地図が大きすぎと思いますか? トラックバックする場所の指定方法。今ま
URLには、いくつか使ってはいけない文字がある。そのような文字を含んだキーワードなどをURLに含めたいときには、後で戻せるような統一のルールにのっとってそれらの文字を置き換える必要がある。 そのためのルールが、RFC 1738で規定されているURL encodeと呼ばれるエンコード方法。 JavaScriptには、危険な文字をエンコードするにはescape()という関数があります。しかし、この関数でエンコードするのはどうも良くないらしい(*1)。 ということで、Internet上にあるソースを改造した自作の関数(URLencode)を使っていました。 しかし、最近encodeURIComponent()という関数が使えるようになったそうです(*2)。また似た関数にencodeURI()もあります。こちらは、エスケープしない文字がいくつかあるので、あまり用がないかな。 ただこれらの関数は、最
先日作った「Google Mapsにブログをマーキング」を改良して、わかりやすくなりました。 ブログ記事に関連する場所をGoogle Maps上にマークします。マークする場所は、場所ごとに異なるアドレスにトラックバックを送るか、ブログ記事のタイトルなどを登録フォームに入力することで指定します。 前のバージョンでは、Yahoo!地図などで位置を確認して、ブックマークレットを起動することでトラックバック先のアドレスを決定指定ました。これでは、せっかくGoogle Mapsがあるのにもったいないし、日本以外の国にマークすることができません。 そこで、Google Maps上で直接マークする場所を指定してトラックバック先のアドレスを決めるようにしました。さらに登録フォームからもブログ記事をマークできるようにしました。もちろん今までのブックマークレットを使う方法も有効です。 マークする手順は、次のよ
バージョンアップしました。詳しくは、「Google Mapsにブログをマーキング Ver. 2」を参照してください。 タイトルを「Google Mapsにトラックバックを表示」から「Google Mapsにブログをマーキング」に変えました。 先日Google MapsのAPIが公開され、簡単に地図上にマークを表示できるようになりました。 そこでトラックバックを送るとGoogle Mapsの衛星写真上にマークを表示するプログラムを作ってみました。表示されたマークをクリックすると、記事のタイトルなどと合わせて記事に含まれる写真も表示します。Google Maps上にどのように表示されるかは、次のアドレスにアクセスしてください。 Google Mapsにトラックバック(http://www.platypus.st/exec/show-tb4gmap.rb) マークを表示する位置は、トラックバッ
次のページ
このページを最初にブックマークしてみませんか?
『postcard.blog.ocn.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く