タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

goに関するsyossanのブックマーク (8)

  • Go の t.Cleanup がとてもべんり - blog.syfm

    Go 1.14 で testing パッケージに新しく t.Cleanup(func()) や b.Cleanup(func()) が導入されました。 最初は今まで defer を使っていたところを置き換えられるくらいしか良いところがないかな〜と思っていましたが、想像以上に柔軟な使い方ができるので今まで使用したパターンを書いておきます。 Cleanup の特徴 テストランナーは panic ハンドラがあるので、Cleanup は panic が起きたとしても常に呼び出されます。例えば、以下のコードではちゃんと called が出力されます。 func Test_main(t *testing.T) { t.Cleanup(func() { fmt.Println("called") }) panic("") } The Go Playground 別 goroutine で panic し

    Go の t.Cleanup がとてもべんり - blog.syfm
    syossan
    syossan 2020/05/17
  • Go 製ソフトウェアでメモリ使用量の多い関数を特定する - Cybozu Inside Out | サイボウズエンジニアのブログ

    みなさんこんにちは.SRE チームの内田(@uchan_nos)です. この記事では Go 製ソフトウェアのどの関数がどれだけメモリを消費しているかを調べる方法を説明します. Go 製ソフトウェアのヒープメモリの消費量を調べる方法はたくさん解説されているものの,スタックメモリの消費量について調べる方法を説明したサイトを見つけることはできませんでした. この記事では主にスタックメモリの消費量を調べる方法を説明します. 背景 SRE では Go 言語で自社データセンター向けのツール群をたくさん作っています. その中のソフトウェアの 1 つが,番運用中に予想外にたくさんのメモリを使用してしまうという問題がありました. どの関数が原因なのかを突き止めるために,関数単位でメモリ使用量を調べる必要があります. ソフトウェアが使っているメモリ量の概況は,Linux であれば top コマンドで調べるこ

    Go 製ソフトウェアでメモリ使用量の多い関数を特定する - Cybozu Inside Out | サイボウズエンジニアのブログ
    syossan
    syossan 2019/06/10
  • go-sql-driver/mysql でプレースホルダ置換をサポートしました : DSAS開発者の部屋

    前回の記事で少し触れましたが、 go-sql-driver/mysql にドライバ側でのプレースホルダ置換を実装するプルリクエストを出していました。 それがマージされたので、背景のおさらいと利用方法を紹介しておきます。 背景 Godatabase/sql の概要については前回の記事で解説しました。 そこで説明したとおり、 DB.Prepare() を使わずに直接 DB.Exec() や DB.Query() を使った場合、 ドライバ側でのプレースホルダ置換に対応していないドライバでは prepare, exec, close で3回のラウンドトリップが発生することになり、パフォーマンスが悪くなります。 基的には DB.Prepare() を使えばいいのですが、前回の記事で修正したスケーラビリティの問題は Go 1.5 になるまで直りませんし、 IN 句があるSQL文などで事前に P

    go-sql-driver/mysql でプレースホルダ置換をサポートしました : DSAS開発者の部屋
    syossan
    syossan 2019/06/10
  • Gocon 2019 spring 発表資料まとめ | mom0tomo

    GoのマスコットキャラクターGopherのデザインはRenee Frenchさんによるものです。 また、サムネイルのイラストはtenntennさんの作品です。 Licensed under the Creative Commons 3.0 Attributions license. KeynoteGo Module Proxy Life of QueryHallHacking Go Compiler InternalsSecurity Scan for golang Using Open Source標準パッケージのみで大量のPNG画像をいかに高速に処理するか煩雑な運用をGoを使って楽にするWriting Go Analyses with go/analysisDive into Buildkit LLB with GoWe want AWESOME CLI tool & developm

    Gocon 2019 spring 発表資料まとめ | mom0tomo
    syossan
    syossan 2019/05/21
  • An Overview of Go's Tooling - Alex Edwards

    Occasionally I get asked “why do you like using Go?” And one of the things I often mention is the thoughtful tooling that exists alongside the language as part of the go command. There are some tools that I use everyday — like go fmt and go build — and others like go tool pprof that I only use to help solve a specific issue. But in all cases I appreciate the fact that they make managing and mainta

    An Overview of Go's Tooling - Alex Edwards
    syossan
    syossan 2019/04/18
    Goの基礎的なツールの扱い方について書かれている
  • golang.tokyo #20 忘年LT大会!! 参加メモ #golangtokyo

    Dive panic & type @takochuu https://speakerdeck.com/takochuu/dive-panic-and-type runtimepkgのの中のコードを見るとGoの実行モデルがわかる 例えばpanic()の中身とか 当日は下で開始ぎりぎりまで受付のお手伝いをしていたのでほとんど聞けず。 labelerrとsuberrを作った話 @nametake https://speakerdeck.com/nametake/created-labelerr-and-suberr pkg/errorsだけではドメイン固有のエラーを作るちょっと良くない感じになるのでerrorのラッパーを作った https://github.com/nametake/labelerr https://github.com/nametake/suberr Wrap、Addでerr

    syossan
    syossan 2018/12/19
  • iOS(Swift)エンジニアがGoでAPI作って感じたこと - あぼぼノート

    普段Swiftを使ってiOSアプリを開発している私が、GoAPIを開発した際に感じたことを紹介します。 列挙型(Enum)がない! SwiftではEnumをめちゃめちゃ使います。ですがGoにはありません。が、Goではtypeを用いて擬似的にEnumっぽいことを実現できるようです。 Swift enum Edge: Int { case top, bottom, leading, trailing } Go type Edge int const ( Top Edge = iota Bottom Leading Trailing ) interfaceを実装することでEdgeを拡張することができます。たとえばStringerインタフェースを実装すると、文字列での出力ができるようになります。 type Edge int const ( Top Edge = iota Bottom Leadi

    iOS(Swift)エンジニアがGoでAPI作って感じたこと - あぼぼノート
    syossan
    syossan 2018/12/18
  • Go言語のGCについて - LINE ENGINEERING

    なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal

    Go言語のGCについて - LINE ENGINEERING
    syossan
    syossan 2018/08/09
  • 1