kumama go言語とかgolangとかGAEとかネットサービスとかその他色々・・・

13Jan/10Off

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以上のサービスを作れる可能性は有るなぁと思いつつ。

Filed under: golang Comments Off
28Dec/09Off

golang: 小ネタ集

・templateパッケージのデフォルトデリミタは"{","}"でJavascriptと相性が悪い
→さっさとSetDelims("{{", "}}");とかして変えた方がいい
(JavaScript外出しにしなさいって話もあるけど、それはそれでFileServerのハンドラが必要)
・htmlEscapeはtemplate.HTMLEscapeで
・Formの値は、req.FormValueで簡単に取得できる

goじゃなくてchromeだけど、
・ChromeのWebSocketはProxy環境下だと GET じゃなく、CONNECTで接続。
→ポート443(つまりhttpsのポート)使えばほとんどの環境で接続可能(なはず)

Filed under: golang Comments Off
27Dec/09Off

golang: ARM用バイナリのクロスコンパイルに挑戦

cgoは試してない(クロスコンパイラの設定が面倒w)けど、ごく普通に動きましたよ。環境変数を、

export GOARCH=arm

にしてgoをコンパイル。5a 5c 5g 5lができたのを確認して、
$ 5g hello.go
$ 5l -o hello hello.5
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped

をを。

BeagleBoardに持っていて実行。
# ./hello
hello, world
# cat /proc/version
Linux version 2.6.29-omap1-00007-gdebf08f-dirty (ku....@kumama) (gcc version 4.4.1 (0xlab) ) #8 Wed Dec 23 04:06:34 PST 2009

をを。

当たり前と言えば当たり前だけどなんか凄いw

Filed under: golang Comments Off
25Dec/09Off

WebSocket:golang chat

メーリークリスマス!

と、言う事で(笑)WebSocketのchatを色々と実装。
って言っても切り貼りでベースは、WebSocketでChatを作ってみた

http://kumama.org/chat/
で実際に動かしています。
メッセージをDBに書いてたりWSサポートしてないブラウザでも一応掲示板として動いたりといった実装を追加。
# 止めました

HTML5の規格ではあるもののWebSocketは、
現状Chrome β(release 4.0.249.0から)でしかサポートされていないので、
βを入れるかChromiumのdaily buildを突っ込まないとWebSocketのお試しには成りません。
ブラウザを2つ立ち上げて片方で書き込んだメッセージがもう片方に届くさまを見てください。

メッセンジャーとかも作れそうな感じ有ってFlashとかAdobe Air使うよりは全然まともな気がします。

コードは以下に。

template使ったりsqlite使ったり色々やってみるとgo言語の理解が進む感じ。

書いていて「をを!」って思った事は小ネタ集として明日にでもまた書きます。
あー、sqliteは微妙に下記の方がいい感じだったので前に紹介したのは使ってなかったりw

http://github.com/phf/go-sqlite3
http://github.com/phf/go-db

cgo経由でのCライブラリの呼び出しは色々疑問も有るものの、現状DBが無いので仕方なし。っていうか、presistent storegeが欲しいって事かなぁ。

嗚呼、golangもreleaseブランチじゃなくてdefaultブランチじゃないとだめですよ。

Filed under: golang Continue reading
15Dec/09Off

golangでスライスには代入出来ない…

多分、参照だからって理由だと思うけど、
スライスの要素には代入できるけど、スライスのコピーができないのは…。

確かに要素数違い場合とか元配列の方の残り要素で移動が必要になるけど、
要素数が同じ場合ぐらいは代入させて欲しい。

多分、いろんなところで copySlice って関数が出来てる気がする。

# defaultブランチ追いかけてる人の間では WebSocket っていうのが話題に

Add WebSocket server framework hooked into http.

WebSocketでChatを作ってみた

今はclient側のコードでProxy対応は入ってないけど…。
httpだけじゃなく https で CONNECT して、Proxyのタイムアウトごまかすために noop して…とかそのうち進化していくんだろうなぁ。

Filed under: golang Comments Off