タグ

goに関するosamu0329のブックマーク (15)

  • 今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ

    こんにちは、m3 エンジニアリンググループ CTO 矢崎(id:Saiya)です。 過去に Go 言語の仕様を一通り見た経験があったのですが、久しぶりに Go のコードを最近読み書きした際に、ここ数年の Go 言語やエコシステムの進化による変化もあり、発見やハマりが多々ありました。 Go 言語公式のロゴもスピード感ありますね。 同じような迷い・回り道をしてしまう方ももしかしたらおられるのではないかと思いますゆえ、 エムスリー Advent Calendar 2020 6 日目の記事として、筆者が実際に「最初から知っていれば時間を無駄にしなかったのに...!」と感じた知見をざっくばらんにシェアいたします。 記事がどなたかの一助になりますと幸いです。 なお記事の内容は筆者個人の理解・自身で直接読み書きしたユースケースの範囲での知見であり、全ての Go 利用事例に当てはまらない点も含みうりま

    今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ
    osamu0329
    osamu0329 2020/12/07
  • そのstruct、実は不要になるかもしれません - podhmo's diary

    これはGo Advent Calendar 2020の3日目の記事です。 とりあえずで登録してしまったので、特に肩に力の入った力作などは用意してないです。この記事は、来のアドベントカレンダーの趣旨に沿った(?)ちょっとした内容の記事にしようと思います。 はじめに断っておくと、あんまり役に立つ内容ではありません。へー、そういうのもあるんだー程度の軽い気持ちで読むことをおすすめします。 goでのweb API用のクライアントライブラリ goでweb API用のライブラリを実装するとき、とくにREST API用のクライアントライブラリを実装してみるときに、パスのネスト構造をそのままstructとして定義する実装をよく見ます。これはstructを一種の名前空間として使うことで名前の衝突を避ける機能、そして実装をちょうど良い粒度で分割するためのアイデアと言えるかもしれません。 例えば、以下のような

    そのstruct、実は不要になるかもしれません - podhmo's diary
    osamu0329
    osamu0329 2020/12/03
  • GoLang Desktop App with webview/Lorca, WASM and Bazel

    On my quest towards building a GoLang Desktop application I found some useful frameworks, Lorca and Webview (which I wrote about in my previous post). These frameworks create a window which GoLang can inject HTML, CSS, and JavaScript to build the UI. But I don’t want to write JavaScript(!) and deal with all the complexities that comes with it like npm, webpack, typescript… Fortunately, I can just

    GoLang Desktop App with webview/Lorca, WASM and Bazel
  • Big Sky :: WSL2 でクリップボード使いたい。

    WSL2 がリリースされ Windows 10 Home Edition でも使える様になったので色々遊んでるのだけど、Windows 側とテキストを交換したい時に面倒で、クリップボードを共有する方法を模索した。 最悪 /dev/clipboard を実装するまで考えたけど、面倒過ぎたし exe の実行厳しい(何か常駐させてユーザランドから起動する為にサーバがいる)だろうから別の方法を考えた。WSL2 は binfmt (たぶん違うけど良く似た奴だろう) で Windows の exe が起動できるので、コマンド経由で stdin/stdout を read/write できる物を起動する方法を考えた。 で自分で書くかと Windows Terminal 起動した時点で「Windows Terminal からコピペできるやん、いらなくね?」となり、来の目的を忘れかけていたので、おとなしく

    Big Sky :: WSL2 でクリップボード使いたい。
  • 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
  • Goのアーキテクチャとフレームワークについて - pospomeのプログラミング日記

    社内slackGoについて質問されて、それなりに長文で回答したのでその内容を加筆修正したものをブログに残しておく。 質問内容としては以下のイメージ。 RubyだとRailsがあり、MVCを利用することになるが、Goだとそこらへんはどうなるのか? Go初心者なのでGoのモダンなアーキテクチャとフレームワークについて教えて欲しい。 これ系の質問はGo経験者であれば「あーこれなー」と思うだろーし、 Go初心者のときに一度は悩んだことがあるだろう。 なので、個人的な意見を残しておく。 自分の意見が正しいかどうかは自己判断して欲しい。 結論 アプリケーションアーキテクチャの複雑化とMVCフレームワーク システムアーキテクチャの複雑化とフルスタックなフレームワーク マイクロフレームワーク 改めて質問内容を振り返る pospomeが考えるGoのフレームワーク選定 pospomeが考えるGoのアーキテク

    Goのアーキテクチャとフレームワークについて - pospomeのプログラミング日記
    osamu0329
    osamu0329 2020/04/27
  • go Git repositories - Git at Google

    Git repositories on goNameDescriptionAll-ProjectsAccess inherited by all other projects.archbenchmarksBenchmarks for the perf dashboardblogThe Go BlogbuildContinuous build and release infrastructurecbro-scratchNothing to see here.cryptoGo supplementary cryptography librariesdebugDebugging toolsdlgo get golang.org/dl/go1.NexampleGo example codeexpExperimental and deprecated packagesgddogodoc.org so

  • テストのためだけに`interface`を書きたくないでござる — KaoriYa

    golangでテストのためだけにinterfaceを書くのが死ぬほど嫌だったので編み出した技を紹介します。 TL;DR テスト(=mock)のためだけにinterfaceは切りたくない 型エイリアスとビルドタグを組み合わせるとinterfaceがなくてもモックが作れる この手法に必要なモックを自動生成するプログラムを作った interfaceは当に必要なシーンで使うべき Background 現在モックを使った単体テストは一般的です。 Javaでの例を挙げると、モックしたいコンポーネントについて予めinterfaceを定義しておき、モックではそのインターフェースを実装するのが定石です。 しかしgolangのinterfaceはJavaなどのそれとは若干性質が異なるため、テスト=モックのためだけにinterfaceを書くのはオーバーワーク気味です。 そうテストのためだけにinterface

  • Go 言語 には data race が存在する

    Go 言語 には data race が存在する “Gomium Browser” writeup from Google CTF 2019 Finals @hama7230

    Go 言語 には data race が存在する
  • Go言語で扱えるデータフレーム厳選4つ - Qiita

    はじめに データサイエンティストでなかったとしても、数値データを使って様々な解析をする際には CSV ファイル等ファイルを読み込み、数値の配列としてメモリに保持して、それらをループ等で利用して解析を行っておられると思います。 その際、配列は1次元目に行、2次元目に列、を格納するのが一般的です。多くのケースではこの方法で事足りるのですが、解析を行ううちに「列としてデータの固まりを扱いたい」「ラベル付けされた列を扱いたい」と感じる事が出てくると思います。 これを簡単にしてくれるのが「データフレーム」です。 データフレーム4種 記事では Go 言語から扱えるデータフレームを4つご紹介します。 QFrame https://github.com/tobgu/qframe QFrame は、フィルタリング、集計、およびデータ操作をサポートするイミュータブルなデータフレームです。 QFrame での

    Go言語で扱えるデータフレーム厳選4つ - Qiita
    osamu0329
    osamu0329 2019/12/18
  • chan chan は意外と美味しい - Qiita

    すっかり寒くなってきてチャンチャン焼きが美味しい今日この頃ですね(^_^) ところで、Go言語でchannelをchannelで受け渡し出来ること、ご存知でしょうか。 自分の周囲では使っている人少なそうですが、意外と便利なので使用例をいくつか紹介したいと思います。 使用例 1: Request/Response channelは通常片方向の受け渡しですが、channelを二重にすることでレスポンスを受け取ることができます。 例えば処理結果のerrorを受け取りたい場合は chan chan error を使用します。

    chan chan は意外と美味しい - Qiita
  • golang.org/x/tools/go/analysis を使ってコードを自動修正する - tchsskのブログ

    これは Go3 Advent Calendar 2019 の 3 日目の記事です。 今年 2 月にリリースされた Go 1.12 において、 公式の静的解析ツールである go vet が golang.org/x/tools/go/analysis を使う形に書き直されました。 Analyzer golang.org/x/tools/go/analysis は Analyzer (静的解析モジュール) を作るためのパッケージで、 go vet が行う様々な処理は個別の Analyzer として分離されこのパッケージ配下に格納されています。これらは外部からも参照できるようになっており、サードパーティの Analyzer から参照することもできます。 Diagnostic Analyzer は、解析して見つかった問題を Diagnostic (診断) として報告します。 Diagnostic

    golang.org/x/tools/go/analysis を使ってコードを自動修正する - tchsskのブログ
  • ぼくのかんがえたさいきょうのシングルバイナリ生成ツール - Qiita

    皆さん、シングルバイナリ サイコーですかー!(挨拶) この記事は Go4 Advent Calendar 2019 の3日目の記事です。 今日は「ぼくのかんがえたさいきょうのシングルバイナリ生成ツール」を紹介したいと思います。 ことの発端 毎回言ってるのでもうご存知かもしれませんが、自分はシングルバイナリ大好きな人です。そして、コマンドをパイプでつなげるのが大好きな人でもあります。 そんな私が、あいも変わらずアクセスログの分析をしていました。 全体の処理はこの↓シェルスクリプトのようなかんじです: #!/usr/bin/env bash xz -cd "$@" \ | jsonize \ | jq -c 'select(.method == "GET") | select(.user_agent != "-")' \ | paw-ua \ | insert-db 圧縮されたログを受け取って

    ぼくのかんがえたさいきょうのシングルバイナリ生成ツール - Qiita
    osamu0329
    osamu0329 2019/12/03
  • Big Sky :: Go 言語の Language Server「gopls」が completeUnimported に対応した。

    先日、Gopls の v0.2.0 がリリースされました。 v0.2.0 https://github.com/golang/go/issues/33030#issuecomment-549629508 リリースノートに書かれていますが、このバージョンから completeUnimported に対応しています。fmt が import されていなくても fmt.Println が補完できる様になります。ただしデフォルトでは無効になっています。Visual Studio Code であれば以下を settings.json に含める事で使える様になります。 "gopls": { "completeUnimported": true }, また vim-lsp をお使いであれば以下の様に設定する事で使える様になります。 if executable('gopls') augroup LspGo

    Big Sky :: Go 言語の Language Server「gopls」が completeUnimported に対応した。
  • guide/style.md at master · uber-go/guide

    Styles are the conventions that govern our code. The term style is a bit of a misnomer, since these conventions cover far more than just source file formatting—gofmt handles that for us. The goal of this guide is to manage this complexity by describing in detail the Dos and Don'ts of writing Go code at Uber. These rules exist to keep the code base manageable while still allowing engineers to use G

    guide/style.md at master · uber-go/guide
  • 1