GAEのproxy対応
うーん。まだ不十分だった。
URL Fetchというかwebappでurllib2使う場合、dev_appserver.pyが、
Proxy対応していない。
http://code.google.com/p/googleappengine/issues/detail?id=544
この辺のパッチを参考に適当に。
TwitterのOAuth認証させるとか外部URLにアクセスする場合は必要かと。
って思ったら今度はSnowLeopardでurllibが動かなかったりorz
Pythonが2.6に成ってるのが原因ぽいけどこっちはもうちょっとちゃんと見よう。
golang::発展途上
ちょっと気になってたsliceとかをコピーするbuilt-in関数copy.
流量が多そうだからGo Nuts mailing listに入ってなかったから知らなかったのもあるんだけど、release.2009-12-09で入った模様。WebSocketで必要になるまでは全然defaultを追いかけてなかったから気にもしてなかった。
2009-12-22と2010-01-05にreleaseタグが更新されてて現在の最新releaseは2010-01-05。
変更点とかはrelease.2010-01-05だと、http://go.googlecode.com/hg/doc/devel/release.htmlに書かれている。っていうか1/5までここじゃなくて/にあった様な。
と、日々進化しています。(が、上げたissueは放置プレイw)
ま、ちょびっとづづ期待という事で。
android/chrome osにしてもgoogleブランドとしての統一感が希薄だから、googleのサービスを使って(
組み合わせて)google以上のサービスを作れる可能性は有るなぁと思いつつ。
app engine::proxy環境でDeploy
proxy環境って既にもう特殊なのか知らん。golangにしてもapp engine launcherにしても、
あんまりproxy対応って重要視されてなさげ。そこそこの規模の会社だとproxyが普通だとおもうんだけどなぁ。間違ってる?!
と、app engineとかサブタイトルに入れてながら何にも書いてなかったのでエントリ。
結局の所、App Engine SDKっていうかLauncherはPythonのurllib2に依存してて、
urllib2のhttpsトンネル対応がPython 2.5でも2.6でも3.0でもリリースに乗ってなかったりして、
混乱してる風。2.6と3.0はリリースに含まれそうだけど、App Engine SDK推奨のPython2.5系だとリリースもへったくれもない。
解決策は
urllib/urllib2: HTTPS over (Squid) Proxy fails
に有るパッチを当てて、環境変数 http_proxy, https_proxyを適切に設定する。
OSX, Windowsで確認済み。
Android/eclairのBeagleBoardで無線LAN
まぁ、その3w
initがuevent見てFirmwareのロードしてくれるはずなんだけど、initにデバック入れてみて見てもuevent拾ってなさげ。
kernelにFirm抱き合わせにして回避。
基本、有線LANでnsfrootしてるので無線LANは必要ないんだけど、
ConnectionManager?がネットにつながってるとみなしてくれず。
ブラウザはOKだけどダウンロードが動かん。
OpenWnnも動かなかったり Eclairは色々まだまだ前途多難ぽい
Android/eclairのWebSocketsは未完
未完ねた2本目。
というか、年末からの色々2本目。
beagle-board有るから動かして試せば良いやぁって思ってたけど、
動かない動かない(WebSockets以外が)ってことでソースを追う。
現状、Chromeでしか動かないんだけどその実装は以下っぽい。
http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/
ってWebKitじゃないのか・・・と思いつつもwebkitのwebcoreのsvnにコードはある
http://trac.webkit.org/browser/trunk/WebCore/websockets
一方、eclairのwebkitはというとこれ。
http://android.git.kernel.org/?p=platform/external/webkit.git;a=tree;f=WebCore/websockets
79 bool WebSocket::send(const String&, ExceptionCode& ec)
80 {
81 if (m_state != OPEN) {
82 ec = INVALID_STATE_ERR;
83 return false;
84 }
85 // FIXME: send message on WebSocketChannel.
86 return false;
87 }orz
使える分けね~。r47029辺りでsyncしてそれっきりぽい。
v8入ってコードもあるから動くかと思った…。コードの中見なかったのが敗因。
強引にWebKit入れ替えようかとも思ったものの、Nexsus OneちゅうかAndroid 2.1が公開されてサポート状況見てからにしよう。
Nexsus OneもブラウザのUserAgent見てるとAppleWebKit/530.17ベース(Safari 4.0ぐらい?)で変わってないぽくって期待は出来ないのだが…