投稿

[Go] static fileを返すだけのweb serverを作ってみた

静的なファイルを返すだけのSimpleなWeb Serverを、Go言語で作ってみた。 テスト用のHTMLとして、 c:/webroot/webフォルダにhoge.htmlを適当に作ってくれ。 go run webserver.go で実行。 ブラウザを立ち上げて、下記のURLを表示してみてくれ! http://localhost:8085/web/hoge.html hoge.htmlが表示されるはずだ。 今回のポイントは・・・ http.HandleFuncってpathの最後に"/"つけると、ディレクトリ指定になるんだね Goでファイルを読み込む方法 WriteでbufをSliceして渡すのがGoっぽくてイイネ!Javaだとlength指定が必要だもんね defer、ちょっ、コレ、ラクちんだわ~。もうtry..finallyとかタイプしたくない。 ラベル付きbreakも地味にいいわ~。これがあってswitchが生きる。 結論。 やればやるほどGo言語。

[Go] http HandleFunc Tips

/hogeにアクセスされた時、fを呼ぶ http.HandleFunc("/hoge",f) /hogeディレクトリにアクセスされた場合、fを呼ぶ http.HandleFunc("/hoge/",f) /hoge/aaaでも、/hoge/aa/bbでもヒットする。 正規表現でルーティングしたい場合、工夫が必要。 一旦、ディレクトリ指定で受け取り、自前でルーティングするのだ。 うむむ、なるほど~。

[Go] mapのソート

配列のソートは強力だけど、 mapのソートは、JavaのTreeSetみたいには行かないようだね。

[Go] Push配信サーバーを作ってみた

GoでPush配信サーバーを作ってみた。 go run gopush.go で実行すると8085ポートで待ち受け開始。 別のターミナルとかで、 curl -v http://localhost:8085/con?key=hoge ってやると配信を受けられる。 ブラウザとかで、 http://localhost:8085/api/push?key=hoge&mes=hello にアクセスすると、ターミナルにhelloが通知されるよ! このkeyで通知先を変更するのだ。 こんなの簡単に作れちゃうGo言語、すごいね! goroutine(go/channel/select)が強力すぎて、Javaのwait/notifyとか戻れないよ!

[Go] http、chunked、切断検知、TimeOut、channelのclose

Push配信するhttpサーバーを目指すサンプル。 盛り込んだ要素は下記の通り。 httpサーバー →普通です。すみません。 Transfer-Encoding: chunked →しょっぱなにw.WriteHeader(http.StatusOK)、  そして、w.(http.Flusher).Flush() goroutine&channel time.Sleep →渡す値は、単位を掛ける。 channelのcloseとその検知方法 →close()は組み込み関数。  そしてchannel受信には2番目の戻り値があることを知れ timeoutを仕掛ける方法 time.Afterでchannelゲットだぜ 通信切断の検知方法 →w.(http.CloseNotifier).CloseNotify()でchannelゲットだぜ 複数channelの同時受信 →selectをforで無限ループだぜ。あとラベル付きbreak。 ロギング →log.Println()だぜ。 盛りだくさんだぜ~

[Go] Chunked Transferで返すHTTPサーバー

HTTPのストリーミングサーバーのいわゆるLong Pollingってヤツ。 net/httpを使う普通のやり方に加えて、 ポイントは WriteHeaderを先に呼ぶ http.ResponseWriterをFlushする ってこと。 Transfer-Encodingヘッダをchunkedにするとか、 Content-Lengthヘッダをセットしてはいけないとか、 は、勝手にやってくれる。 これを起動したならば、curlコマンドで試してみませう。 curl -v http://localhost:8085/ ヘッダが表示され、 < HTTP/1.1 200 OK < Date: Fri, 24 Oct 2014 05:14:14 GMT < Content-Type: text/plain; charset=utf-8 < Transfer-Encoding: chunked その5秒後に one その5秒後に two が表示される!

[Angular.dart] 試してみた

バージョンが1.0.0になったし、 Angular.Dartを試してみた。 まずは、 Angular.Dartサイトのチュートリアル からサンプルをダウンロード。 なるほどなるほど。 っていうか、{{name}}って見えてますけど。 ng-cloakを設定しなければイカン? してもダメですけど。 Dart版では、自力でdisplay:noneを設定しなければいけないと...