タグ

golangに関するtom__boのブックマーク (67)

  • Golangのエラー処理とpkg/errors

    GoConでは毎回エラー処理について面白い知見が得られる.Go Conference 2014 autumn においては(実際のトークではないが)居酒屋にて@JxckさんがRob Pike氏から以下のようなテクニックを紹介してもらっていた. Errors are values - The Go Blog Golang Error Handling lesson by Rob Pike これはWrite(やRead)のエラー処理が複数続く場合にerrWriter を定義して複数のエラー処理を一箇所にまとめてコードをすっきりとさせるテクニックであった. そして今回の Go Conference 2016 spring のkeynoteにおいてもDave Cheney氏から(僕にとっては)新たなエラー処理テクニックが紹介された. Gocon Spring 2016 実際に使ってみて/コードを読ん

  • Go Traps

    (No output before you click the [Run] button) (No errors before you click the [Run] button) See also Golang resources The golang wiki has a page CommonMistakes about gotchas. The page 50 Shades of Go: Traps, Gotchas... on CloudImmunity. The command vet helps detecting potential errors in code. programming-idioms.org has over 120 Go idiomatic snippets (and other languages). gobyexample.com has over

  • ピクシブ社内広告サーバーに新機能を追加するためにボクがやったこと - pixiv inside [archive]

    この記事は ピクシブ株式会社 Advent Calendar 2015 15日目の記事です。 qiita.com インフラチームの @catatsuy です。 普段はインフラの仕事が中心ですが、広告サーバーの開発にも関わっています。今回は少し前にリリースされた広告サーバーの新機能について、私が実装した配信サーバーを中心に解説したいと思います。 広告サーバーの実装については何回か発表を行いました。以下のスライドをご覧ください。 ピクシブ広告サーバー開発・運用の軌跡 2015春インターン講義資料 // Speaker Deck ピクシブ社内広告サーバーでのGoの開発・運用 #gocon /p_ads_server_gocon2015 // Speaker Deck タグ指定で特定の広告を出したい ピクシブではユーザーの皆様に最適な広告をどうすれば出せるのか、日々テストをしています。その一環とし

    ピクシブ社内広告サーバーに新機能を追加するためにボクがやったこと - pixiv inside [archive]
  • Visualising concurrency in Go

    Visualizing Concurrency in Go GopherCon, July 11, 2016 Ivan Danyliuk, Typeform Number forms Visualizations How do you see concurrency? Introducing GoTrace tool Hello, world! package main func main() { ch := make(chan int) go func() { ch <- 42 }() <-ch } Hello, world! Timer func tick(d time.Duration) <-chan int { c := make(chan int) go func() { time.Sleep(d) c <- 1 }() return c } func main() { for

  • `ghg` で GitHub Releasesから適切な実行ファイルを統一的に取得する | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/ghg tl;dr % ghg get motemen/ghq とかやれば、GitHub Releasesに上がった最新の実行ファイルを取得できる。 % $(ghg bin)/ghq とかで実行可能。 $(ghg bin) を $PATH に追加してもよい。 % ghg get Songmu/ghch@v0.0.1 とかでバージョン指定も可能。 Goで書いたツールを提供する場合、クロスビルドしたものを GitHub Releasesに上げるのが定番となっています。 なぜ、 go get ではないのかというと go get の場合以下のような問題があるからです。 go get するにはGoの環境が必要 安定版ではなく、開発中の最新をビルドしてしまう ビルド情報などをバイナリに埋め込めない ただし、GitHub Releasesに上げる

    `ghg` で GitHub Releasesから適切な実行ファイルを統一的に取得する | おそらくはそれさえも平凡な日々
  • Goフレームワーク Echoを触る - D.O.D

    担当するプロジェクトGoAPIを実装予定で、 利用するフレームワークの検証した際のメモです。 以下候補ですが、APIなのでシンプルで高速なもの&開発も活発なEchoを試してみました。 フレームワーク 最終コミット日 Latest release スター その他メモ Martini 2016/2/15 2014/5/20 8,248 ・モジュール形式のウェブアプリケーション/サービスを作成するパッケージ ・パフォーマンスはあまり良くない ・今後の開発が怪しい? Revel 2015/9/12 2015/03/25 6,457 ・RailsやPlayのようなfull stack web framework Gin 2016/1/30 2015/5/23 5,842 ・Martiniライクでパフォーマンスが良い ・今後の開発が怪しい? Negroni 2015/3/20 2014/3/31

    Goフレームワーク Echoを触る - D.O.D
  • 6年間におけるGoのベストプラクティス | POSTD

    稿は、QCon London 2016で行った講演の内容に基づいています。スライドとビデオは近日中に掲載予定です) 2014年に開催された最初のGopherConで、私は「 Best Practices in Production Environments(番環境でのベストプラクティス) 」と題した講演を行いました。 SoundCloud の私たちはGoのアーリーアダプターで、その時点までに既に2年近く、番環境向けの様々なGoコードを書き、実行し、メンテナンスしていました。そして私たちはいくつかのことを学んだので、その教訓をまとめ、多くの人に伝えたいと思ったのです。 それ以来、私はフルタイムでGoを使う仕事を続けています。SoundCloudではその後の活動やインフラチームで、そして現在は Weaveworks で Weave Scope や Weave Mesh の開発に使ってい

    6年間におけるGoのベストプラクティス | POSTD