Goに関するyoshi_kyのブックマーク (12)

  • データベースへの接続を伴うGoの並列テスト | Money Forward Kessai TECH BLOG

    こんにちは、MF KESSAIでバックエンドのエンジニアのgarsueです。 2019年もあっという間すぎて戦慄しています。 今回はMF KESSAIでのGoのテストについて、ちょっと工夫してる点を書いてみようと思います。 並列テストによる問題 Go標準のテスト実行コマンドgo testはデフォルトでパッケージごとにテストを並列実行します。 通常は何もしなくてもテストが並列実行されてうれしいのですが、たまに困るケースがあります。 ファイルやDBなどの外部のリソースを触るテストが並列実行されて競合してしまうケースです。 MF KESSAIでは、テスト用のMySQLに接続して実際に読み書きを行うテストを多数書いています。 それらが並列実行されることで、各テストのテストデータ同士が競合してしまうという問題がありました。 開発初期はとりあえずgo test -p 1として並列実行を諦め、問題を回避

    データベースへの接続を伴うGoの並列テスト | Money Forward Kessai TECH BLOG
  • 図解 Go Slice Tricks | Folioscope

    この記事はGo7 Advent Calendar 2019の記事です。 Go には JavaRuby などのモダン言語のような slice を操作する関数は用意されていません。 Go では built-in 関数のappend()やcopy() と for 構文を組み合わせることで、他の言語にあるような slice 操作を実装できます。 この記事ではそれぞれの slice 操作を図解で解説します。 元ネタは Go 公式 Wiki にあるGo SliceTricks - golang/go Wikiです。 Slice の連結 a = append(a, b...) コピー先 a にコピー元の b の全ての要素をコピーします。 連結後の長さが cap(a) を超える場合は、新たな slice が作成されて a、bともにコピーします。 以降はappend()のコピー先には十分なcapがある

    図解 Go Slice Tricks | Folioscope
  • Goとクリーンアーキテクチャとトランザクションと - Qiita

    はじめに アドベントカレンダー16日目、aptpodのしがないサーバーサイドエンジニアがお届けします。 弊社ではサーバーサイドのプログラミング言語としてGoを利用しています。 Goでアプリケーションを実装していく中で特に頭を悩ませた、Go x クリーンアーキテクチャ x トランザクションについて、学んだこと、どうやって対処したかを書きたいと思います。 題材について 解説するにあたり、クリーンアーキテクチャ1を意識したサンプルアプリケーションを作りました。 機能自体はしょうもない、CRD(Update無し!)です。 意識はしていますが、クリーンアーキテクチャの厳密さを言われるとそうでもないです。 しかし、その部分の議論は題とずれますので特に触れません。 まず全体の絵を。 ざっくりクラス関連図 ざっくりシーケンス図 ユースケースのアクティベートの部分はトランザクションを意味しています。そこだ

    Goとクリーンアーキテクチャとトランザクションと - Qiita
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。 メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに7回開催し100人以上の方に参加していただきました。 自社でもGoを基幹技術として使っている背景があり、今後もGoコミュニティへの貢献は継続していきます。しかしながら、新型コロナウイルス感染症の状況を踏まえて直近のGopher道場開催を見合わせています。 Goを学ぶ場を提供することでGoに触れる方を増やしたいと考えている筆者にとっては、 開催できないことが非常に残念です。そこでエキスパートチームでは違う形で学ぶ場を提供できないかと考え、Gopher道場で使用している資料のベースになっている「プログラミング言語Go完全入門」を期間限定で公開することにしました。 bit.ly bit.ly 追記 3/18:PDF

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
  • Goのinterfaceの使いかた 基礎編 - エムスリーテックブログ

    エムスリーエンジニアリンググループ/BIRの滝安(@juntaki)です。 BIRはビジネスインテリジェンス&リサーチの略で、そこでは医療従事者の会員向けアンケートをベースに、製薬会社へのマーケティング支援を提供する事業を行っています。BIRではエムスリーではじめてGoを導入し、今ではほとんどの新規システムをGoで立ち上げています。(一部でKotlinもつかっています) Goでは、interfaceの使い方を知ることで、依存関係、コンポーネントの責務を整理した設計を考えることができます。 この記事ではGo導入当初にメンバに説明した、interfaceの基的な使い方やTipsを整理していきます(すでに、Goをよく知っている人には当たり前すぎるかもしれません)。 また、この記事の後にBIRのメンバーがGo関連記事をいろいろ書く予定となっています! interfaceの使い方 interfac

    Goのinterfaceの使いかた 基礎編 - エムスリーテックブログ
  • Goの標準ライブラリのコードリーディングのすすめ | フューチャー技術ブログ

    パッケージの選定そもそも、どのパッケージを読んだらいいんだろう?という疑問があると思います。上記のパッケージを選定した方法を紹介したいと思います。 読むパッケージの選定は有志のメンバ数名で一緒に決めました。 まずパッケージのステップ数を見てスクリーニングしています。gocloc というツールを使うと以下のフォーマットで簡単にステップ数を確認することができます。 $ gocloc archive ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Go 21 7

    Goの標準ライブラリのコードリーディングのすすめ | フューチャー技術ブログ
  • Goをもっと多くの人に広めるために我々ができること 最新版

    Goをもっと多くの人に広めるために我々ができること Go Conference 2019 Fukuoka 2019/07/13 フューチャー(株)渋川よしき

    Goをもっと多くの人に広めるために我々ができること 最新版
  • Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ

    他の言語になれた人が、初めてGoを書いた時にわかりにくいな、と思った部分はどういうところがあるのか、難しいポイントはどこか、という情報を自分の経験や、会社の内外の人に聞いたりしてまとめてみました。まだまだたくさんあるのですが、多すぎるのでまずはこんなところで。コンテナで開発することがこれからますます増えていくと思われますし、その時にコンテナとの相性が抜群なGoをこれから使い始める人もどんどん増えていくと思います。 Goは特に言語のコアをシンプルに、何かを実現するときはそのシンプルな機能を組み合わせて実現しよう、というコンセプトです。つまり、他の言語で実現したいこと・できていることに比べて、Goは組み合わせ(イディオム)でカバーする領域が広くなります。そのあたりのとっかかりになる情報を提供することが、これからGoを触る人にとってつまずきを減らすことになると思います。 Go Conferenc

    Goを学ぶときにつまずきやすいポイントFAQ | フューチャー技術ブログ
  • Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ

    この記事はJX通信社 Advent Calendar 2019 2日目の記事です。 昨日は、たっちさんの「Kubernetes Admission Webhookでリソース作成を自在にコントロールする」でした。 こんにちは、サーバーサイドエンジニアの @kimihiro_n です。 今回は長年動かしてた Scala のマイクロサービスのリビルドを行った話をしようと思います。 TL;DR 新しい言語を投入するのにマイクロサービスは便利 Scala で感じていた問題点を解消しつつ Go へ移行できた 消費メモリが大きく減って安定稼働できるようになった 予防線を貼っておきますと、Scala より Go のほうがいいよね、といった旨ではありません。 Scala で書いたマイクロサービス 弊社のマイクロサービスの一つにカテゴリ分類専用のサービスが存在します。 カテゴリやキーワードを登録しておくとル

    Scala で書いたマイクロサービスを Go で書き直した話 - JX通信社エンジニアブログ
    yoshi_ky
    yoshi_ky 2019/12/02
    メモリ消費量のグラフに驚きを隠せない
  • PHPer がはじめて Tour of Go を学んだときのポイント24選 - aoma blog

    Goって興味はあったけど全然触ってこなかったaomaです。 Goには A Tour of Go という、これをやればGoマスターになれるステキサイトがあります。 A Tour of Go 普段PHPに慣れている中で、ムムッ!?っとなった点を目次別にメモしました。 PHPerでこれからGoを学ぶよって人の助けになれば幸いです。 Packages, variables, and functions. 変数名の 後ろ に型名を書く https://go-tour-jp.appspot.com/basics/4 戻り値となる変数に名前をつけることができる https://go-tour-jp.appspot.com/basics/7 関数の中では、var 宣言の代わりに := の代入文で暗黙的な型宣言が可能 関数の外では、キーワードではじまる宣言( var, func, など)が必要 https:

    PHPer がはじめて Tour of Go を学んだときのポイント24選 - aoma blog
  • 継続的にベンチマークを取るための GitHub Action をつくった - はやくプログラムになりたい

    今年9月に GitHub Action v2 がリリースされました.GitHub Action は GitHub が提供する CI/CD サービスです. 既存のサービスと大きく違う点は,処理を汎用的に Action として切り出して再利用できることです. 例えば,GitHub からのリポジトリのクローン actions/fetch や Node.js のセットアップ actions/setup-node などの基的な実行ステップも Action として実装されています. 今回はこの GitHub Action を利用して,前々からあると良いなと思っていたベンチマークを継続的に取るための Action をつくりました. github.com github-action-benchmark はベンチマークの実行の出力からベンチマーク結果を抽出し,GitHub pages のブランチに JSO

    継続的にベンチマークを取るための GitHub Action をつくった - はやくプログラムになりたい
  • Go言語 - 無名関数とクロージャ - hakeの日記

    ある関数foo内で定義された無名関数は、foo内のローカル変数にアクセスできる。 package main import "fmt" func foo() { var s string = "hello foo" f := func(){ fmt.Println(s) } f() } func main() { foo() //-> hello foo } 関数fooの戻り値として返された無名関数も同様にローカル変数にアクセスできる。 package main import "fmt" func foo() func(){ var s string = "hello foo" f := func(){ fmt.Println(s) } return f } func main() { a := foo() a() //-> hello foo そして、その関数foo内のローカル変数の値は無

    Go言語 - 無名関数とクロージャ - hakeの日記
    yoshi_ky
    yoshi_ky 2019/09/20
  • 1