Go Conference 2014 Autumn、その他のセッションのまとめ 上田拓也 2015-01-09 3セッションについてのまとめ~「App Engine for Golang Performance」「Golang @ISUCON」「mackerel-agent徹底解説」~ 上田拓也 2014-12-25
キャリアを充実させる『カギ』に!PR TIMES CTO金子達哉から学ぶアウトプット術 / output_method
この記事ははてなエンジニアアドベントカレンダー2014の8日目です。 今回は、Go言語でサーバ管理ツール Mackerel のコマンドラインツールmkr を作るときに調べたこと、考えたこと、やったことについて紹介します。(mkr は現時点では開発版での提供になります。) コマンドラインツールについて コマンドラインツールを作るにあたって、@deeeet さんの YAPC Asia 2014 での発表資料が非常に参考になります。 書籍 UNIXという考え方ーその思想と哲学 の内容をベースに、コマンドラインツールはどうあるべきかということが丁寧に説明されています。 上記資料から引用させていただくと、コマンドラインツールにおいて重要なポイントは以下の7つであるとされています。 1つのことに集中している 直感的に使える 他のツールと連携できる 利用を助けてくれる 適切なデフォルト値を持ち設定もでき
こちらです。Perl でいうと Devel::KYTProf に性質がちかい。 motemen/go-loghttp · GitHub (GoDoc) 使用例 たとえばこういうコードに… package main import ( "io" "log" "net/http" "os" ) func main() { resp, err := http.Get(os.Args[1]) if err != nil { log.Fatal(err) } io.Copy(os.Stdout, resp.Body) } % go run main.go http://example.com/ <!doctype html> ... 一行追加すると: package main import ( "io" "log" "net/http" "os" _ "github.com/motemen/go-lo
APソリューショングループの相野谷(@ainoya)です.このたびATLと共同で,CIやCDにおけるビルドパイプラインの実行を手助けする小さなツールwalterを開発しました. 開発の動機: Jenkinsプラグインに強く依存するビルドパイプライン設定 Jenkinsを使ってCIを実現する場合,複数のジョブを繋げて一連の処理フロー(ビルドパイプライン)を作るのが一般的かと思います.Jenkinsには,ビルドパイプラインを構成するための便利なプラグインがあり,これを使って失敗時の実行制御や,ジョブの並列実行制御を簡単に設定できます. ところが,こうしたプラグインで実際にCIを運用してみると,ちょっと惜しい点がいくつか出てきました. パイプラインの全体実行フローをJenkins上でしか確認できない Jenkinsジョブを実際にキックするまで動作が確認できない 設定の移行がしづらい.GUI中心で
(Updated: 9/8/2013 Added “Stateful Iterators” thanks to ryszard.) I’ve been using Go to implement some performance-sensitive services recently and, so far, it’s been a very nice. When writing Go code, it often feels like a (slightly verbose) scripting language, but has nice type-safety and good performance. But I’ve realized that this feeling is really only true on a line-to-line basis. What I’ve
Googleで分散システムの開発をてがけ、現在はソーシャルメディア mttr.toを立上げ中のBen Sigelmanが、Goを分散システムの開発に利用する場合の、メリットおよびチャレンジについて講演しています。 分散システムのあるべき姿 分散システムの勘所は、最上位ビットをパフォーマンス的にも構造的にもうまく扱うことができるかというのがポイント。その効果が一番大きい。スループットの改善のような詳細は、自分もGoogleでそれに取組んだけれども、9ヶ月くらいたつとハードウェアの性能で解決される可能性が高い。また、構造的にというのは、なるべく小さなコンポーネントを組み合わせたシステムにできるかという意味。 Goのよいところは、 両方、とくに後者によい。Railsだとアプリを複数個用意して並列処理するのは大変だったけど、Goだとシンプルにできて、標準ライブラリも読みやすいとかなどなど。パフォー
ここ1年ぐらい収集した便利 Go 言語情報を並べただけです。 http://b.hatena.ne.jp/y_uuki/golang/ https://github.com/stars?language=go オフィシャル 言語機能解説を中心にピックアップ。 Effective Go - The Go Programming Language Go's Declaration Syntax - The Go Blog Share Memory By Communicating - The Go Blog Defer, Panic, and Recover - The Go Blog Go Concurrency Patterns: Timing out, moving on - The Go Blog Go Slices: usage and internals - The Go Blog
githubのWebhook、皆さん使ってますか。Webhookを受け取るサーバって何使ってますか、sinatraですか?このエントリは社内でserfのデモ用に書いた、github webhook用のHTTPサーバhoko in golangについてのエントリです。 TL;DR hokoというgithubのwebhookを受け取るためのHTTPサーバをつくった。 https://github.com/tmtk75/hoko x-github-eventヘッダを解釈するよ x-hub-signatureに対応してるからsecurityもケアしてるよ みんな大好きgolangで書いたよ serfと連携、というかserfの関数をそのまま呼び出すよ hokoが作るクラスタにjoinしておけば、webhookイベントを他のホストで受けることが比較的簡単にできるよ 背景 githubへのpushされた
Testify - Thou Shalt Write Tests [!NOTE] Testify is being maintained at v1, no breaking changes will be accepted in this repo. See discussion about v2. Go code (golang) set of packages that provide many tools for testifying that your code will behave as you intend. Features include: Easy assertions Mocking Testing suite interfaces and functions Get started: Install testify with one line of code, o
ふとtwitterをみていたら @ymotongpoo pythonjapan.comとかいうサイトがすごく下品なことをしてる。 「文字列操作の比較表」 http://bit.ly/ggAJ0k これは高林さんの記事の丸コピペな上に引用元書いてない。恥を知れ。 http://bit.ly/g9U5M http://twitter.com/ymotongpoo/status/40615506608128000 というのが目にはいった時に社内buzzに流したらpythonjapanうんぬんよりも言語比較の話がまた再燃。s.to_fはperlでは0+$sだとか、s.to_sは”$s"とか。 そういえばGo言語も比較したらどうなるかせっかくなのでまとめてみた。 問題のpythonjapanはあっという間に消えたようですね。 謎のpythonjapan
Go言語標準のtestingパッケージが個人的に使いづらかったのがきっかけ 個人的にカジュアルにTDDをしたかったので、PythonでいうassertEqualみたいなものが無いtestingパッケージが個人的に使いづらかったというだけです。(※筆者はPythonをよく使っています) 単なるユニットテストならgithub.com/stretchr/testify/assertパッケージが良いと思った これです。 https://github.com/stretchr/testify testifyパッケージの下にassert, http, mockパッケージがあって、それぞれ独立して使うことが出来ます。 importするときは、事前にgo get github.com/stretchr/testifyを行い、コード内部でこんな感じにimportすれば以下のように使えます。公式サイトの例のま
長いので結論だけ先に。 BDD風味に違和感が無いなら、Ginkgoがオススメ。 もっと軽くてシンプルなのが良いなら、Testifyがオススメ。 テスト対象となるコード 公式のHow to Write Go CodeからYour first libraryにあるコードを持ってきます。 package go_testing // Sqrt returns an approximation to the square root of x. func Sqrt(x float64) float64 { z := 1.0 for i := 0; i < 1000; i++ { z -= (z*z - x) / (2 * z) } return z } 標準で組込まれているテスト用ライブラリについて testing.* 実用性は確かにあって必要なものは揃ってる感あるのだけど、僕にはいくばくかの辛みがあ
(This was originally a talk at GopherCon 2014. Find the slides here, and the video here.) (This article has been updated for 2016.) At SoundCloud, we structure our product as an API with many clients. That is, our main website, mobile client, and mobile apps are all first-order clients of a single main API. Behind that API is a universe of services: SoundCloud operates basically as a Service-Orien
http://yapcasia.org/2014/talk/show/b49cc53a-027b-11e4-9357-07b16aeab6a4
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く