| Subcribe via RSS

PHPで2-legged OAuth( GDD Devquiz )

8月 26th, 2010 | No Comments | Posted in Diary, programming, web | このエントリをはてなブックマークに登録

Google Developer Day 2010 は、参加するためにDevquizっていう問題がいくつか出て、それを解いた点数の高い人から参加できるっていう仕組みなのです。

いくつか問題があって、

・簡単なgoogleのサービスに関する問題

・html5の文法間違い探し

・2-legged OAuthをやる

・Google Map APIを使ってTSP

・しりとりで相手に勝つ

・PACMAN

なんかがあったような気がします。

それぞれ

  • 簡単なgoogleのサービスに関する問題
  • 普通にググって考える。

  • html5の文法間違い探し
  • 自分で見ても間違いが分からなかったからHTML5の文法チェックツールが早くも登場 ? Publickey を使った。

  • 2-legged OAuth
  • ググって近いプログラムを見つけて、それを元にプログラム書いた(後述)。
    しかし、OAuthの仕様について 〜署名?それっておいしいの?〜 (Yahoo! JAPAN Tech Blog) の最後にある確認ツールを使えば簡単にできるらしい。

  • Google Map API
  • javascript書いてレベル2まで普通に解けたのに、レベル3でうまく行かず、面倒だったのでやめた。

  • しりとり
  • 辞書の解析だけプログラムでやって、手動で解いた。レベル3は何度か負けたけど、相手の戦術を逆に使う方法を考えてできた。

  • PACMAN
  • 時間がなくてやってない。

これじゃ合格点に行かないような気もする。


以下はPHPで2-legged OAuth。
PHPを選んだ理由は、書ける言語の中で一番最初に、よさそうな参照できるコードが見つかったから。

指定されたのは、CONSUMER KEY、 CONSUMER SECRET、POSTするメッセージボディ、realmとターゲットURLで、あとHMAC_SHA1を使うことも指定されたような。



<?php
require_once 'OAuth.php';
define('CONSUMER_KEY', 'your consumer key');
define('CONSUMER_SECRET', ''your consumer secret);

function OAuthConsumerRequest($method, $url, $data=NULL) {
    $consumer = new OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
    $signature_method = new OAuthSignatureMethod_HMAC_SHA1();

    //与えられたメッセージボディ
    $params = array("hello" => "world");
    // access protected resources
    $oauth_request = OAuthRequest::from_consumer_and_token($consumer,
                                       NULL,
                                       $method,
                                       $url,
                                       $params);

    $oauth_request->sign_request($signature_method,
                                 $consumer, '');

//与えられたrealmはここで使う
    $headers = $oauth_request->to_header('devquiz');
    $prequest = "hello=world";

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array($headers));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $prequest);
    curl_setopt($curl, CURLOPT_POST, TRUE);

    $result = curl_exec($curl);
      if ($result === FALSE) {
         return curl_error($curl);
    }
    curl_close($curl);
    return $result;
}

//与えられたURLはここで使う
$ret = OAuthconsumerRequest('POST', 'target url';);
print($ret);
?>

を参考にしました。


このエントリをはてなブックマークに登録

Tags: ,

AndroidのMy Tracksで自転車ログ

7月 21st, 2010 | 2 Comments | Posted in Diary, android | このエントリをはてなブックマークに登録

最近健康のために、自宅から研究室まで自転車で通い始めました。
片道約15km。

で、せっかくだからいろいろ記録できたらいいなと思い、Androidのアプリを探してみたらMy Tracksというアプリが見つかりました。

googleが作ったアプリです。
自転車に限らずジョギングとかでも使えます。

GPSを使って、通ったルートやかかった時間、平均速度、最高速度などいろいろなデータがとれます。
あとたぶん加速度情報も使ってる。

で、取ったデータをそのままGoogle DocsとGoogle Mapに送れます。

Androidはスクリーンショットを撮るのがiPhoneと違って面倒なのでないですが、アップロードしたものをPCで見るとこんな感じ

Google Docsには各種の情報が。
My Tracks in google docs

Mapにはルートが。
My Tracks: route

素晴らしい。こうやって可視化するだけでも結構うれしい。

これを研究室の人に見せたら、「ユビキタスしてるね」と言われた。

他にいいところは、これがフリーのアプリっていうところと、SIMなしでも使えるとこ。(もちろんデータのアップロードとかMap見るのとかはwifiが必要です)

あと、オープンソースになってるみたい
たぶんiPhoneでも探せば似たようなアプリがあると思う。


このエントリをはてなブックマークに登録

Tags: ,

Android雑感

7月 21st, 2010 | No Comments | Posted in Diary, android | このエントリをはてなブックマークに登録

なんか最近、Androidがこれから流行るんじゃないか、と今さら考えています。

iPhone3GSユーザでしたが、しばらくAndroid(Nexus one)にSIMカードを移して設定して使ってみました。
なかなかいいです。
(料金が心配なので今は元に戻しました)


あのiPhoneアプリがAndroidにはない、みたいな不便さは少しあるけど、それはそのうち解決されるとして、

Androidのいいところ
・自由度が高い

iPhoneだとAppleの作った庭で遊んでいるような感じがするのが最近いやになってきました。
やりたいと思ったことが実現できる可能性が、Androidの方が高いことが多いです。

反面、iPhoneは制約をかけることで一貫したインターフェースだとか操作性を実現しているので、やはり操作感はiPhoneの方がいいです。


あとはiPhoneは最近持ってる人が多すぎて個性がなくなってしまうのと、Appleが最近調子に乗りすぎな感じがしている、っていうのもあります。
Androidはまだまだインターフェースとか(個人的にはwifi周りの実装がよくない気がするのとか)改善の余地があると思うので、今後に期待。

そして、


これ気になります。
しょうもないアプリが量産されるだけかもしれないけど。


落ち着いたらアプリを作ってみたいです。


このエントリをはてなブックマークに登録

Tags: ,

ワイヤレスジャパン2010

7月 19th, 2010 | No Comments | Posted in Diary | このエントリをはてなブックマークに登録

ワイヤレスジャパンに行きました。
3年連続、3回目。

ワイアレスジャパン

センサを使ったアプリケーションでは、めざましテレビでもやってた自転車のいろいろな情報を取るやつとか、手足を動かすだけでドラムの演奏ができるやつとか、しっかり作っていて面白かった。

センサー自転車@ワイアレスジャパン

大手は3DやARが人気集めていたが、それワイヤレス関係ないじゃんという感じもした。

全体的に少し規模が小さくなったと思う。


自分の所属する研究室も少し出しています。
森川研究室

でも、小難しそうなポスターとか、英語のポスターとか、奥の方にあるデモとか、あまり「見て貰おう」「アピールしよう」「知って貰おう」という感じがないのが残念。研究室の人にあまり余裕がないのが原因な気がします。何のために出しているんだっけ・・・


このエントリをはてなブックマークに登録

Tags:

千里眼

7月 10th, 2010 | No Comments | Posted in Diary, food | このエントリをはてなブックマークに登録

研究室から近いこともあって、月に何度かいくラーメン屋。




ラーメン千里眼

いわゆる次郎系で、こってり、太麺、大盛り、なラーメン。

野菜マシマシ、みたいな呪文が使えます。
次郎にはない「辛揚げ」っていう呪文がある。

残念ながら自分は胃がそんなに大きい方でないので、普通でもかなりおなかいっぱいになります。


写真は、麺少なめ、にんにく辛揚げ。

千里眼


このエントリをはてなブックマークに登録

Tags:

WordPressのアップデートと古いblogの記事移転

7月 9th, 2010 | No Comments | Posted in Diary, wordpress | このエントリをはてなブックマークに登録

Wordpress3.0導入 と 古いブログのマージ。
古いブログのRSSをsubscribeしている人もこれからのfeedが届くのかもしれない。

移行めも。

Wordpress3.0にしたかったんだけど、使っているレンタルサーバのMySQLのバージョンが4.xだったからできずにいた。
でも実はレンタルサーバでMySQL5.1も利用可能だったので、MySQLのバージョン変えるところからやりました。

レンタルサーバーではphpmyadminのインターフェースがあったので、そこからdbをSQLでエクスポートして、WordPressの管理画面からデータもエクスポートして、データベースを削除して、新たにMySQL5.1でデータベース作って、さっきエクスポートしたSQLをインポート。

しかしここでsame database exitsのエラーが。
ということで、エクスポートしたSQLをエディタで開いて、”CREATE DATABASE ***“の部分をコメントアウト。
またインポートしようとすると今度は USE dbname の部分でsql構文エラーが。
エクスポートしたSQLのdb nameがbackquoteで囲まれていないのが原因で、 USE `dbname`に修正。

これでインポート成功。
あとはwp-config.phpのdb serverを書き換え。これで今まで通りになった。
あとはWordPressの管理画面からWordpress3.0-jaに自動アップデートを実行。これもうまくいった。


で、このブログの前にやっていたブログが少しアクセスがあるけど放置状態だったので、そこの記事をこのブログにマージすることに。

前のブログもwordpressで、記事へのurlのパーマリンク設定が同じだったからできました。

まず古いブログでWordpressから記事のエクスポートをして、このブログの管理画面からインポート。
で、古いブログからのリダイレクトのため、古いブログの.htaccessに

Redirect permanent / http://tjun.jp/blog/
を記述。
これで、古いブログへのアクセスが全て今のブログに飛ばされます。
URLの構造が違っているとだめなので、パーマリンク設定が同じである必要があるような気がします。

グーグルのインデックスとか、はてブとかがどうなるのかがよく分からん。
現状でも、古い記事に情報を探しに来た人が、ちゃんと目的の情報に行けるはずなのでとりあえずいいか。


このエントリをはてなブックマークに登録

Tags: , ,

googleの講演聞いた

7月 4th, 2010 | No Comments | Posted in Diary, cloud | このエントリをはてなブックマークに登録

大学で講演があったので、聞きに行ってみた。google_tech_talk

2010/07/02

“Practical and Simple Parallel Computation in the Cloud”

by Grzegorz Malewicz

内容は、まあタイトルの通りで、大量のデータにどう向かっていくか、という話。
基本的なところから話すので、知ってる内容も結構あった。Big tableとかMapReduceとかPageRankとか。あとはParallel computingの基本的な話とか。

よく分からなかったのが、
の話。英語力が足りなかったのかもしれない。
これを使うとPageRankの実装が15行でできるらしい。

まあまとめると、googleのアプローチとしては、
不安定なperformanceや failure は起きるものなので、それを考慮して設計。

scalable reliable software on unreliable hardware

これに尽きる。

あと面白かったのがベンチマークの話で、

1PBのデータ(10^13のレコード、それぞれが100bytes)を
- 4000台のマルチコアのマシン
- 48,000のハードドライブ
でソートするのに6h 2m

ベンチマークに使うデータが1PBっていうサイズなのはさすがです。

あとは質疑応答
  • map reduceにcast できない問題はあるのか?
  • 少し手を加えれば、多くの問題はcastできる。新たなモデルも考えている。
  • street viewなどでも同じデータストレージシステムを使っている?
  • 分からないが、たぶん違う。
    big tableはデータの変換などを行うことに特化したデータ構造で、street viewなどのように書き込んだらあとは参照するだけの情報の場合、違うデータアーキテクチャがベターだろう。
  • 処理が多少速くなっても、結局ネットワークがボトルネックになるのでは?
  • データをいかに集めておくかが重要で、またネットワークトポロジーなども工夫している。
  • pregelは利用可能な実装はある?
  • オープンソースで現在の実装はない。論文に説明がある。
合ってるか分かりません。

あとGoogleは飯がうまくて優秀な仲間がいていい環境だよ、と宣伝してました。


このエントリをはてなブックマークに登録

Tags: ,

Discussion about Internet of Things

7月 1st, 2010 | No Comments | Posted in Diary, web | このエントリをはてなブックマークに登録

Internet of Things (IoT)に関するとある会議?を聴きに行きました。

やっぱりこの辺のInternetとReal Worldがつながる世界で何か面白いことをやりたいな、と感じた。
Real Worldというとアバウトだけど、それは人だったりモノだったり環境だったり。
Webに人間が作るコンテンツ(UGC)が増えたら少しずつ世界が変わっていったように、モノが作るコンテンツ(Things-generated content?)あるいはコンテキスト(Things-generated context)が増えたらまた世界が変わるんじゃないか。Web3.0みたいな。

Extend Internet to real world と言っていたが、Internetの視点から見るかreal worldの方から見るか、両方がありえて、Internetにはfacebookとかtwitterとかリッチなサービスというかプラットフォームがいろいろあるのにreal worldからの人の多くは可視化したりtwitterに繋げて満足して終わっていたりして、その先をもっと考えてもいい気がしている。


この間にくるのがたぶんarduinoだったりandroidだったりで、敷居が下がってきているというか環境が整ってきているんで、新しくて面白いことをやるチャンスかもしれない。
もちろん、みんながそんなようなことを考えている中で違ったことをやるのは難しい。

でも、arduinoもandroidもInternetの方の人がReal Worldの方に来るためのもの、つまりextend internet to real worldであって、extend real world to the Internetなプラットフォームがない、ような気がしている。

pachubeはReal WorldからInternetにつなぐよさそうなPlatformかもしれない。

他にも自分の身近にもこのあたりをいろいろ考えている人はいる。CastanetやTangram。
自分も何かやりたいけど、今の場所で研究していてもこの先ができない感じがしている。内定先の会社に入ってもできないし。


関連のありそうなWebサイトをいろいろ教えて貰ったのでまとめておきます

  • Web of Things | Architecting the Web of Things, for techies and thinkers!
  • Real worldとWebをつなげるアーキテクチャ

  • IPSO Alliance: Promoting the use of IP for Smart Objects
  • IPをSmart Objectsにも利用しようというalliance

  • pachube :: connecting environments, patching the planet
  • Store, share & discover realtime sensor, energy and environment data from objects, devices & buildings around the world.
    Pachube is a convenient, secure & scalable platform that helps you connect to & build the ‘internet of things’.
    世界中のセンサやアクチュエータをRESTfulなInterfaceでつないでやろう、というプラットフォーム。

  • touchatag
  • モノにタグをつけたりするソリューション?

  • MIRASENSE
  • ケータイからバーコードを読んで、商品の感想などを共有するサービス

  • my2cents.mobi
  • my2cents is a mobile app to share comments on products.
    上のやつと似てる。

  • AppAware.org Social Market for Android
  • Install / Uninstall したAndroidアプリケーションを共有するサービス

  • Augmented Reality Browser: Layar
  • たぶんセカイカメラのようなAR実空間タグ付けアプリ。たぶんいろいろなレイヤーにタグが分類されるから、レイヤーの切り替えとかをすると見たい情報だけ見ることができる。

  • I-LAB
  • アフリカでケータイを使った保険サービスをやってる?
    ドイツ語なので分かんない。
  • Amazon Mechanical Turk – Welcome
  • ソフトウェアが判定できない問題を、人間を使って解決する仕組み。


このエントリをはてなブックマークに登録

Tags: , , ,

つくばでワイン

6月 27th, 2010 | No Comments | Posted in Diary, food | このエントリをはてなブックマークに登録

筑波大の川島先生のもとに、データベースの研究と実装の相談に行ってきました。


夜はワインバーへ。
ルフランというお店。


ワインバー 「ルフラン」@筑波


中はこんな感じ。
ルフランの中


料理もワインもおいしかったです。
トマトとチーズとスパークリングワイン


このエントリをはてなブックマークに登録

Tags:

iPhoneケースにカードを

6月 10th, 2010 | No Comments | Posted in Diary, iphone | このエントリをはてなブックマークに登録

iPhoneのケースを変えました。



iPhoneユーザで電車通勤/通学の人は、SuicaやPASMOが入るケースを使うといいと思います。
ポケットにiPhoneさえ入れとけばすむから。

前のやつもカード入れられるやつだったけど、ぼろぼろになってきたから買い換えてみたところ、前のよりコンパクトでいい感じです。


このエントリをはてなブックマークに登録

Tags: