2009/11/13 金曜日

Google GOのライブラリ(http)

カテゴリー: 未分類 — ryu @ 23:14:32

ライブラリっていうか標準パッケージね。
Google GO Package Directory

現状にしては結構充実かも。

結局のところサーバサイドでいくらNativeバイナリ作ったところで、
apacheからプロセス生成して実行じゃオーバーヘッドが・・・、
プロセス内で実行されるapxとかのプラグインでスクリプトのほうがって
思ったけど、標準でhttpサーバが入ってます。

HTTP/1.1対応、マルチスレッドでそこそこ使える感じ。

package main

import (
“http”;
“io”;
)

// hello world, the web server
func HelloServer(c *http.Conn, req *http.Request) {
io.WriteString(c, “hello, world!\n”);
}

func main() {
http.Handle(”/hello”, http.HandlerFunc(HelloServer));
err := http.ListenAndServe(”:12345″, nil);
if err != nil {
panic(”ListenAndServe: “, err.String())
}
}

Google GOでクロージャ

カテゴリー: 未分類 — ryu @ 23:07:54

ま、やってるでしょうってことで。

package main

import "fmt"

func getCounter() (func() int) {

var value int;
value = 0;

return func() int { value = value + 1; return value;};
}

func main() {

var f func() int;

f = getCounter();

fmt.Printf("hello, world %d\n", f() );
fmt.Printf("hello, world %d\n", f() );
fmt.Printf("hello, world %d\n", f() );
fmt.Printf("hello, world %d\n", f() );
fmt.Printf("hello, world %d\n", f() );
fmt.Printf("hello, world %d\n", f() );

}

スクリプト言語触っててCで出来れば・・・と思ってたことが出来る感じ。

とりあえず、最近中島さんのところでよく出るクロージャw
Python Hack : 噛めば噛むほどおいしくなるクロージャの話

実行環境が必要ないってことでバイナリ生成は有利なんだけど、
Cとかしか無かったし、
GCJとかだととっても巨大なバイナリに成ってたことを考えるといい感じ。

とはいえ、Cで生成したオブジェクトよりかは大きいんだけど。

# ほとんどの人は6gじゃなくて8gなので注意をw

31 queries. HTML convert time: 0.264 sec. Powered by WordPress 2.8