2011年7月29日金曜日

Google Android WebAPIプログラミング入門(正誤表)

私が執筆したGoogle Android WebAPIプログラミング入門の正誤表を載せておきたいと思います。(ちなみに以下の本です)
このページは非公式のものとします。(2011/12/20:秀和システムさんに連絡して公式の正誤表となりました。)
また、発見、報告があり次第、追記したいと思います。



正誤表
P.272−9行目:
(誤)また、後述しますが最新版Twitter4j 2.2.1が…
(正)また、最新版Twitter4jが…

9章の9-4に関して書籍のサンプルが動作しなかったという報告をいただきました。
ありがとうございます。現象を確認したいのですが、すぐに時間が取れないので、
取り急ぎ、サイトへのリンクを掲載しておきます。
http://sarl-tokyo.com/wiki/index.php?Google%20Android%20WebAPI%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E3%82%92%E8%AA%AD%E3%82%93%E3%81%A7%E3%81%84%E3%81%A6

2011年7月25日月曜日

Google App Engine Go SDK 1.5.2での注意点

Google App Engine SDKのバージョンが1.5.2になりました。

リリース内容は以下のサイトを御覧ください。
http://googleappengine.blogspot.com/2011/07/app-engine-152-sdk-released.html


私もGoのSDKを更新してプログラムが動くかどうか確認していたのですが、
ローカルサーバで実行するとdev_appserver.pyのエラーが出て実行できなくなりました。

いろいろ調べているとapp.yamlのapi_versionを2にしないといけないことがわかりました。

ということで、ドキュメントサイトを確認してみたら、サンプルコードは2になっていましたが、説明には1と記述されていたので注意が必要です。

一応、Hello Worldのコードを掲載しておきます。

application: helloworld
version: 1
runtime: go
api_version: 2

handlers:
- url: /.*
  script: _go_app


package hello

import (
       "fmt"
       "http"
)

func init() {
     http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
     fmt.Fprint(w, "Hello World!")
}

大したコードではないですが、api_versionには注意してください。
これに気がつくのにかなりの時間を取られました。

ただ、クラウド上にデプロイして実行する分にはapi_versionが1でも動作します。
(※HelloWorldレベルで確認しただけです)
デプロイのコマンドは以下のコマンドです。
appcfg.py update [ソースコードがあるディレクトリ]

2011年7月9日土曜日

第10回OITEC勉強会に参加しました。

今日は岡山でMicrosoft関連の技術を主に扱っているOITEC勉強会に参加しました。

会場が県立図書館のデジタル情報シアターだったので、飲食禁止。
しかも、いい感じで無線LANスポットも使えず、色々と残念な状態でした。
(結局、Android端末でテザリングをしました。電源が使えたので良かった。)

午前の部はTDDBCのサテライトということで、Ust放送をしていました。
テスト駆動開発がテーマでしたが、良い点、悪い点はあるような気がしました。
Twitter上でのやりとりは以下にまとめられています。
http://togetter.com/li/159430

午後の部
Kinect開発、はじめの一歩
・結構スペックを要求される。

開発方法
・OpenNIを利用する
Macでは開発が不可能かと思ったら、詳細は以下のブログにまとめられていました。
http://switch.dip.jp/toro/blog/?p=266

・Microsoftが提供しているSDKを利用する。

価格に対して、いろいろ遊べるので良いそうです。
導入、開発も簡単。(Visual Studio 2010とKinect SDKがあれば良いのかな?)

教育、医療分野では導入実績もあるそうです。
服を買う時に、服を着た映像を表示するなどマーケティングにも利用される。

手話を声に変換するという使い方もできるようになるかもしれない。
一番の期待はアクセシビリティ

しかし、環境がWindows7限定になっているのが残念。

ASP.NET MVC 3
・Microsoft .NET Framework 4のみのサポート

・データを参照する(Model)
・ルーティングに従って、クラスが実行される(Controller)
・Razorビュー・エンジン
View内でもブレークポイントがおける。

Razorでは、@変数名でView内に値を表示させる事ができる。
@("<strong>")なんてことをすると、HTMLがエスケープされる。
@Html.Row()を使うと、HTMLがそのまま出力される。
@{ }で囲むと、View内でコードを書くことができる。
コードブロック内でもHTMLのタグはタグとして認識してくれる。
<text>タグで囲むと、プログラムと認識されずに、そのまま出力してくれる。

ASP.NET MVC 3 EF4.1 Code FirstとNuGet
・Ruby on RailsのようにModelからデータベースを生成してくれる。
・バリデーションも自動的に。

・SQL Server Compact Edition 4.0をWebサーバにデプロイすることができるようになった。
SQLiteのような利用が可能になる。
・ただし、利用可能なホスティング業者が少ないので、実運用するためには…?

NuGet
・Ruby Gemのようにプロジェクトに必要なライブラリを取り込むアプリケーション
GUI、CUIどちらでも利用可能。

0から始めるExpression Blend + Phone 7
・疲労困憊により、デモを眺めているだけになりました。
(やっぱり最近、目の疲労からくる疲れ(?)に悩まされます。)

2011/07/10 追記
プレゼント大会で、以下の書籍を頂きました。以前からSilverlightはやりたかったので
しっかり読んでみようと思います。

2011年7月8日金曜日

YouTubeAPIのコールバックonYouTubePlayerReady関数がコールされない

今日はYouTube APIを使ってみようと思い、サンプルコードを作ってみたのですが、
YouTubeの動画が表示されて、マニュアルだと再生されるようにもなりました。

しかし、JavaScriptのコールバック関数が呼ばれない状態に陥っています。
原因はなんだろう。

これをHEADタグの所に仕込んで、
 
  google.load("swfobject", "2.1");

  function onYouTubePlayerReady(playerId) {
    alert(playerId);
    console.log('onYouTubePlayerReady' + playerId);
  }

以下の処理をBODYの所に仕込んでみました。

var player;
  var swfUrl = 'http://www.youtube.com/v/u1zgFlCw8Aw?enablejsapi=1&playerapiid=ytplayer';

  var params = { allowScript: "always", bgcolor: "#cccccc" };

  var atts = {id: "myytplayer" };
  swfobject.embedSWF(swfUrl, "ytapiplayer", "640", "360", "9", null, null, params, atts);

仕様では、onYouTubePlayerReadyが呼び出されるはずなんだけど。。。
HTML5だと動かないとかかな…?
(HTML4.01の例ならあったし、表示したら動いていた)