Gotanda.pm #7 vs Yokohama.pm #13
![Perl + Go実運用の話](https://cdn-ak-scissors.b.st-hatena.com/image/square/f8f637dff35706552af9a50188b548d4b62feb77/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F43530383a92e41e7a68efa6a561417b1%2Fslide_0.jpg%3F5718438)
Go言語にはいろいろなWebフレームワークが存在して、はっきりとしたデファクトスタンダードが決まっていません。 しいて言えば標準パッケージの net/http がデファクトですが、世の中ではそこに機能不足を感じた人たちが多くのフレームワークを開発しています。 そこで、いくつかのフレームワークを取り上げて、簡単なベンチマークと、それぞれのフレームワークでのいわゆるHello Worldの書き方をまとめておきます。 これによって、フレームワーク選びの参考になればと思います。 対象 Bone Echo Gin Gocraft Goji Gorilla Kami Martini Revel、Beego、Kochaなど、見かけたが入れていないものがいくつかあります。コマンドでスケルトンを作るもの、net/http の Handler interface を満たさないものは除外しました。 追加してくれ
import ( "io" "golang.org/x/net/websocket" ) func EchoHandler(ws *websocket.Conn) { io.Copy(ws, ws) } *websocket.Connはio.ReadWriteCloserが実装されており、クライアントから来たWebSocketのメッセージは*websocket.Conn.Readで読むことができ、また*websocket.Conn.Writeで送ることができます。なので、io.Copyで逐次読みだして同じ内容をまた書き込むことで簡単にecho serverを書くことができます。 これをサーバに組み込むのも簡単です。 import ( "net/http" ) func main() { http.Handle("/echo", websocket.Handler(EchoHandler))
はじめに この記事は、2015年のGo Advent Calendarの1日目の記事です。 GoのAdvent Calendarは他にも2つあり、他の本日担当の方は以下のとおりです。 Go その2:iktakahiroさんのdbr – Go 言語 O/R Mapper の紹介 Go その3:awakiaさんのGoのChannelを使いこなせるようになるための手引 この記事は2015年12月1日時点の情報を基に書いています。また、情報が少ない中、shinyのプロポーザルとソースコードを基に筆者なりに解釈した結果を書いていますので、間違いや勘違いを含んでいるかもしれません。間違いや勘違いを見つけた方は、ぜひコメントか編集リクエストを頂ければと思います。 なお、使用しているリビジョンは48f611b013d6f6fbecb58f8212b1152abb23b928です。 shinyはまだ始まった
埋め込み(embedded)に要注意というお話です。あるいは、GolangもC++のようなゼロオーバーヘッドを目指していると考えれば腑に落ちるよね、的な。 Goはオブジェクト指向言語っぽく使うことができます。次のような機能を提供しています。 interfaceを使ったコーディング 埋め込み(embedded)を使った実装継承 インタフェースは次のような感じです。 // ポニーは歩ける type Pony interface { Walk() } // アースポニーも歩けるので、Ponyインタフェースに渡せる type EarthPony struct { } func (ep *EarthPony) Walk() { fmt.Println("歩くよ") } インタフェースはメソッド宣言しかかけません。実装は書けません。でも、定義されたメソッドを持てば、それはすべて「これの仲間だ」という感
Go言語のライブラリが依存しているパッケージの管理ツールとして、 godepというものを見つけた。 試しに使ってみたところ良さそうなのでメモ。 自分の手元では自作のゴミライブラリであるsimple-irc-bot-goで確認した。 godepを使った形に自己ライブラリを改める 以下の手順を踏む。 godepのインストール go get github.com/kr/godep で終わり。 依存パッケージの保存 カレントディレクトリを自分が作成しているライブラリに切り替えて、 godep saveを実行する。するとカレントディレクトリ以下にGodepsディレクトリが作成される。 Godeps/Godeps.json ファイルに依存しているライブラリの情報が登録される。 { "ImportPath": "github.com/futoase/simple-irc-bot-go", "GoVers
少し前にStarletにGraceful Restartが時たま上手く動かない問題を修正するpullreqを投げました。 原因は割り込みハンドラ内でexitを呼んでいたからでした。 「割り込みハンドラ内ではフラグを建てるだけ」 「メインのプログラム内でそのフラグを見て分岐する」という原則があるのですが、それを守るのは難しいということですね。 (しかし新たな問題を産んでしまいrevertされてしまいましたが・・・ まあ修正後のコードも考え方は一緒です。割り込みホント難しい・・・) このpullreqを取り込んでもらうときに再現実験をやってみたのですが、 Goでもちゃんと動くのかな?と気になったので Go言語でGraceful Restartをするで紹介した プログラムに同じテストをやってみました。 2017-01-22追記: Go1.8以降でGraceful Shutdownがbuild-i
さて、このタイトル、かなり挑発的ですよね。それは認めます。もう少し説明すると、私は大胆なタイトルが好きなのです。人の注意を引くことができますからね。とにかく、この記事では、Goがひどい設計の言語(実際、本当に全て台無しになります)だということを証明していこうと思います。私は既に数カ月間Goで遊んでいますし、たしか6月のいつだったかに初めてHello, Worldを走らせてもみました。私は数学がそんなに得意ではありませんが、あれから既に4カ月経っていますし、 Github 上のパッケージもいくつか手に入れました。言うまでもありませんが、私は仕事でGoを使ったことは全くないので、”コードサポート”や”デプロイ”やそのあたりに関する私の意見は話半分で読んでくださいね。 私はGoが大好きです。使ってみて大好きになりました。慣用表現を理解したり、ジェネリクスがないことや、おかしなエラーハンドリングや
Go のプロジェクトのディレクトリ構成などについて プロジェクト構成 プロジェクトディレクトリをgo_workとする。 go_work ├── bin -> go install 時にバイナリが格納される ├── pkg -> 依存パッケージのオブジェクトファイル格納場所 └── src -> ソースコード格納場所 上記3つのディレクトリがあることが前提。 環境変数$GOPATHにプロジェクトディレクトリを指定することで、依存パッケージの解決が自動的に行われる。 % cd go_work % export GOPATH=`pwd` パッケージについて Go のパッケージは、Ruby で言うところの gem にあたる。 パッケージは自分で作ったり、Git などでリポジトリが公開されていれば、それをgo get コマンドでコピーして利用できる。 パッケージの作成 gosample というパッケ
http://gocon.connpass.com/event/21550/ の導入の資料です。Read less
こんにちは。斎藤です。 ここ1〜2年、私は仕事でGolangを書くことが増えています。きっかけは、ITインフラをお預かりする中で、お客様のサーバにツールを置く場合でも1つのバイナリさえ置けば良いという手軽さからだったのですが、最近はScalaと並び手軽に並列処理が書けるプログラミング言語として重宝しています。 さて、今回はGolangで作ったhttpdの接続数をLimitListenerを利用して接続数の制限をしてみようというお話です。以下に紹介するお話は、Githubのリポジトリ "github.com/koemu/go-http-max-connections-demo" にデモプログラムを保存しています。Golangのビルド環境がある方は、実際にビルドしながらお試しいただければと思います。 ※Golang 1.5.1でビルドする前提で説明しています モティベーション 仕事でとあるAP
Goオールスターズ!で発表した資料です。 http://eventdots.jp/event/571126Read less
Google I/O 2017 わいわい報告会 @ Mercari で発表した資料です。 https://connpass.com/event/57158/
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
少し高度な自動化/テストツールの開発や、簡単にRESTサーバの開発に利用できないか、と思って、Goを少し学び始めました。 Goを学び始めるときに、自分なりに役に立ったサイトをまとめておきます。 公式サイト/日本語訳サイト The Go Programming Language Goの本家サイト。Go自体のダウンロードなどはこちらから。 golang-jp 公式サイトの日本語訳のサイト。 プログラミング言語 Go ドキュメント 公式サイトのドキュメント(https://golang.org/doc/) の日本語訳。golang-jp では翻訳されていないものを参照するときに便利。 リファレンス Effective Go GoらしいプログラミングをするためのTips集。 日本語訳は、こちらを参照すると良い。 Go Code Review Comments Goで書かれたコードをレビューする際の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く