タグ

goに関するmiguchiのブックマーク (84)

  • go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3

    https://gotalk.connpass.com/event/331992/

    go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
  • Go 言語の context を基礎から実践まで解説 - Qiita

    はじめに こんにちは、エンジニアの清水です。 私は業務で Go を書いているのですが、context についての理解が浅いことでエラーに遭遇したので、勉強のために記事を書いてみました。 この記事では、実際のコード例を交えながら Go 言語の context パッケージの基から実践的な使用方法まで解説していきます。 また実際に私が遭遇したエラーの例も交えて context の陥りやすい落とし穴についても解説します。 context の基 context とは何か contextは、Go の標準ライブラリに含まれるパッケージで、API やプロセス間でリクエストスコープの値、キャンセル信号、デッドラインなどを伝播するための仕組みを提供します。 なぜ context が必要なのか リソースの適切な管理:不要になった処理を適切にキャンセルし、メモリや CPU などのリソースを解放できます。 タイ

    Go 言語の context を基礎から実践まで解説 - Qiita
  • Rustの実用性が理解できる図を作成してみた 〜C/C++/Java/JS/Python/Go/TS/Elixirとの比較〜

    エディタ支援 言語の公式がエディタ支援(LSP等)を提供しているかを示しています。 自動テスト 言語の公式が自動テスト(ユニットテスト等)を備えているかを示しています。 リンタ 言語の公式がリンタを提供しているかを示しています。 ビルドシステム 言語の公式がビルドシステムを提供しているかを示しています。 パッケージマネージャ 言語の公式がパッケージマネージャを提供しているかを示しています。 フォーマッタ 言語の公式がフォーマッタを提供しているかを示しています。 手続き型 言語のプログラミングパラダイムが手続き型プログラミングを強くサポートしているかどうかを示しています。 オブジェクト指向 言語のプログラミングパラダイムがオブジェクト指向プログラミングを強くサポートしているかどうかを示しています。 関数型 言語のプログラミングパラダイムが関数型プログラミングを強くサポートしているかどうかを示

    Rustの実用性が理解できる図を作成してみた 〜C/C++/Java/JS/Python/Go/TS/Elixirとの比較〜
  • 【Go】公式ツール "eg" を使って効率的にGoのコードをリファクタリングする - Qiita

    はじめに こんにちは、ken です。お仕事では Go をよく書きます。 最近、Go の公式パッケージであるgolang.org/x/toolsを眺めていたら、なにやら有用そうなパッケージを見つけたので今回はそれについて書こうと思います。 それはegというリファクタリングツールです。 eg とは eg は、例ベースで Go コードをリファクタリングするためのツールです。このツールを使用することで、特定のコードパターンを別のコードに置き換えることができ、効率的にリファクタリングが行えます。 先ほど貼った公式ドキュメントに詳しい説明があるかと思いきや The eg command performs example-based refactoring. For documentation, run the command, or see Help in golang.org/x/tools/ref

    【Go】公式ツール "eg" を使って効率的にGoのコードをリファクタリングする - Qiita
    miguchi
    miguchi 2024/07/16
  • Lambda Web AdapterでGoのGinを動かすときに、DBコネクションの貼りすぎを防ぐ - シ〜らかんす

    概要 Lambda Web Adapterを使うと、それまで非サーバーレス環境下で動かしていたウェブAPILambda上で動かすことが可能になる。 コンテナイメージさえあれば、web APIをサーバーレス化できるし、コードの共通化も容易になって便利だ。 ただし、RDSと接続するのならば、コネクションが増えすぎないように工夫する必要がある。 対処方法として、RDS Proxyを使う方法はよく知られていて、導入はマストかと思う。 aws.amazon.com その上で、RDS Proxyを使ったとしても、コネクション数が圧迫されることがある。 アプリケーション内部で明示的にデータベースとの接続を切断しないと、接続がアイドル状態となってしまい、アイドルコネクションのタイムアウトを迎えるまでコネクション数を消費してしまうのだ。 今回は、Lambda Web Adapter & Go & Ginを

    Lambda Web AdapterでGoのGinを動かすときに、DBコネクションの貼りすぎを防ぐ - シ〜らかんす
    miguchi
    miguchi 2024/05/08
  • GO言語(golang)1.20:日本語を含むマルチバイト文字列操作 - SE_BOKUのまとめノート的ブログ

    目次 GO言語(golang)1.20:日語を含むマルチバイト文字列操作 マルチバイト文字を扱う注意点 rune rune:マルチバイト文字数カウント rune:マルチバイト文字列のスライス 上記以外なら、マルチバイト文字列は普通につかえる 補足情報:TrimSpaceは「全角空白」も削除できる 補足情報:文字列連結は「join」のほうが「+」演算子より速い 補足情報:文字列の出現位置を文字数で取得するには一工夫必要 補足情報:全角・半角変換は「golang.org/x/text/width」を使う 補足情報:文字列の比較の前に「Fold」するのはおすすめ 補足情報:strings.EqualFoldは全角・半角の考慮をしない GO言語(golang)1.20:日語を含むマルチバイト文字列操作 GO言語で、日語文字を含む文字列(マルチバイト文字列)を扱うには、若干注意が必要な点がある

    GO言語(golang)1.20:日本語を含むマルチバイト文字列操作 - SE_BOKUのまとめノート的ブログ
  • プログラミング言語Go完全入門

    プログラミング言語Go完全入門 @tenntenn プログラミング言語Go完全入門の資料を用いて、Gopher道場の講義を始めていきたいと思います。 スライドはこのURLから閲覧できます。 スライドURL: http://tenn.in/go

    プログラミング言語Go完全入門
  • Gophercises: 実践的な20種類のエクササイズで Go を学ぼう - kakakakakku blog

    もっと Go を学びたくて学習コンテンツを探しているぞー👀という人におすすめできる「Gophercises」を紹介する❗️計20種類あるエクササイズ(どれも楽しい🌸)をほぼ全て動画を観ながら写経して,とにかく楽しかったのでまとめることにした💡 動画を観ながらコードを写経できる エクササイズは計20種類もある どのエクササイズもすぐに使えそうなテーマで楽しい 無料で学べる A Tour of Go の次に取り組むのも良いし,構文を学ぶより実践的なテーマで実装しながら学びたいけどネタが思い付かないときに取り組むのも良いと思う👌 \( 'ω')/ Gophercises! Gophercises! gophercises.com エクササイズ一覧 Gophercises には「計20種類」のエクササイズがある❗️参考までに日語概要も載せておく. CLI 実装・API 実装・PDF 生成

    Gophercises: 実践的な20種類のエクササイズで Go を学ぼう - kakakakakku blog
  • 今からDockerを始める人へ!Docker Initがアツい!

    package main import ( "net/http" "github.com/labstack/echo/v4" ) func main() { e := echo.New() e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }) e.Logger.Fatal(e.Start(":1323")) } # syntax=docker/dockerfile:1 # Comments are provided throughout this file to help you get started. # If you need more help, visit the Dockerfile reference guide at # https://docs.

    今からDockerを始める人へ!Docker Initがアツい!
  • MoT TechTalk #14 タクシーアプリ『GO』の施策検証、因果推論が解決します

    ■ 内容 ・分析グループの紹介(島田) ・傾向スコアによるタクシーアプリ『GO』利用影響の分析(佐竹) ・Causal Forestによるタクシーアプリ『GO』のCATE推定(秋月) ■ YouTube https://youtu.be/fvgBK8hc9mY?t=232 ■ connpass https://jtx.connpass.com/event/263378/

    MoT TechTalk #14 タクシーアプリ『GO』の施策検証、因果推論が解決します
  • Rust なのか Go なのか | 民主主義に乾杯

    # Rust なのか Go なのか ひとりごと。色々、漁ってると、こんな雰囲気。 並列処理で もっと高速に書きたい → Go Go で大事なのは → goroutine ガシガシ書き込んで もっと高速に書きたい → Rust Rust で大事なのは → 所有権 # 1. 概観 Go と Rsut は全く用途が違うそうです。なので、 自分の用途に合わせて選ぶことになるかなと思いますが... Indeed! — Go (@golang) July 25, 2019 Go は文法がとてもシンプルです。 誰が書いても同じようなコードになるようなことを意識しているのかなと思われます。 それが元でよく Go を貶す記事が見受けられます。 Rust はコードが複雑になっても、ガシガシ書き込むような感じらしいです。その分だけ Go よりも高速に動作します。 Rustと競合? - Goへの誤解について (o

  • Goならわかるシステムプログラミング第2版が出たので書評しますね - moriyoshiの日記

    少し前になりますが、3月23日に、渋川よしきさんの著された「Goならわかるシステムプログラミング 第2版 」が発売されました。初版と比べてかなり加筆されておりパワーアップしているので、初版をすでにお持ちの方でもさらに興味深く読むことのできる内容に仕上がっている、というのが第一印象です。 残念ながら初版発売時に記事にする機会がなかったのですが、あらためて今回書評したいなと思いましたので、徒然書いていきたいと思います。 このは実はシステムプログラミングのではないかもしれない 「システムプログラミング」とは何でしょう。正直私にもわかりません。その語をはじめに思い浮かべた人は、プログラミングという概念のその中にあえて「システムプログラミング」という分類を作ろうと思い至ったということですから、きっと「非システムプログラミング」というものもあるということでしょう。知らんけど。しかし、これは書の位

    Goならわかるシステムプログラミング第2版が出たので書評しますね - moriyoshiの日記
    miguchi
    miguchi 2022/05/19
  • GoとRust - 並行処理編

    GoRustの変更処理を比較することで両者を深く理解する試みです。 詳しい内容やスライドでは省いたところをブログに書きました https://zenn.dev/nasa/articles/compare_rust_go_concurrency

    GoとRust - 並行処理編
    miguchi
    miguchi 2022/04/28
  • Go のGCのオーバーヘッドが高くなるケースと、その回避策 - Qiita

    Go のGCのオーバーヘッドについて GoのGarbage Collector (GC)の性能は非常に優秀で、オーバーヘッドが問題となることはあまりありません。ただヒープを非常に多く使っている場合、GCが多くのCPU時間を消費するケースがあります。 記事では、まずGoのGCの概要に触れ、その後GCオーバーヘッドが高くなるケース、そして回避策を検討します。 記事は下記記事を大きく参考にしています。素晴らしい記事に感謝いたします。 Avoiding high GC overhead with large heaps 注意点 単に pprof を取得し、GCが多くCPU時間を消費していた場合、必ずしも記事が扱う、ヒープの多さ依存の問題が原因とは限りません。 GoのGCは、直近のGCを行った結果生き残ったデータ量に対して、新たにアロケートしたデータの量が一定値を超えると実行されます。 1 こ

    Go のGCのオーバーヘッドが高くなるケースと、その回避策 - Qiita
    miguchi
    miguchi 2022/04/17
  • GoはいつGCするのか?

    TL;DR Go(のランタイム)は以下のタイミングで自動的にGCを実行する 前回のGC後に占有していたメモリと同量を新たに確保したとき 前回のGCから2分後 cgroupなどでメモリ制限しているときは、メモリ使用量が制限の50%以上になったらruntime.GC()を呼び手動でGCすべきである 前置き: GoとOOMのこれまで 以下はGo 1.16での調査結果です。Goのバージョンが異なった場合は事情が異なる可能性があります。 Goでプログラムを書く際に、使用メモリ量を気にしなければならないシーンはGCのおかげでそう多くはありません。実際それは間違いではないのですが、運用まで視野に入れるとそうは言ってられないことがあるのもまた現実です。昨今はコンテナの利用が当たり前になったことに伴い、OOMによりプロセスが強制的に終了させられることもあり、それを避けるために一定量以下のメモリで動くことが重

    GoはいつGCするのか?
  • Goのリリースプロセスとブランチ戦略 - YAMAGUCHI::weblog

    はじめに こんにちは!Google Cloudでオブザーバビリティの担当をしているものです。CVE-2021-44228のおかげでバタバタしていますがみなさんはお元気ですか? このエントリーはpyspa Advent Calendar 2021の15日目の記事です。昨日は @moriyoshit さんの「Goのロギングライブラリ 2021年冬」でした。めちゃめちゃ調べてあって良い記事でした。Goでログライブラリの選定をする際にはこちらをまず読むと良さそうです。 2021.12.21 追記: 穴が空いていたのでGo Advent Calendar 2021 その1の14日目の記事にもしました。 さて、今日は当は「Goならわかる確定申告第三表」という記事を書こうと思ったのですが、まだ確定申告の時期ではないのでそれは辞めにします。そのかわり、今日はGo 1.18がめでたくベータ版リリースとなっ

    Goのリリースプロセスとブランチ戦略 - YAMAGUCHI::weblog
  • Goとマルチコアスケール実装

    マルチコア化の未来予測 半世紀前にSF映画「2001年宇宙の旅」に登場するコンピューターHAL-9000が並列コンピューティングの未来を示しました。マルチコアで構成されたコンピューターの物理コアを取り除いてもすぐにクラッシュせずに性能ダウンして処理が継続するという演出がありました。 当時ですらシングルコアコンピューティングの限界が予想されていて、現状のコンピューティングがマルチコア化しているという未来をしっかり予測できていたことがわかります。 演出はコア数に応じてコンピューティング性能がスケールしていることを表現しています。これはマルチコアスケールするソフトウェア実装の未来を示していたと思います。 シングルコア性能向上の頭打ち 2003年以降あたりはCPUの動作周波数が伸び悩み出したところ。 https://queue.acm.org/detail.cfm?id=2181798 より その

    Goとマルチコアスケール実装
  • スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜

    21/11/13 Go Conference 2021 Autumnにて発表 https://gocon.jp/2021autumn/ https://gocon.connpass.com/event/213865/

    スケジューラから学ぶGoランタイム 〜code reading of runtime pkg〜
    miguchi
    miguchi 2021/11/17
  • 今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ

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

    今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ
  • Go言語+gRPCの解説 [ハンズオン] - Qiita

    はじめに この記事は、海外サイトhttps://tutorialedge.net/golang/go-grpc-beginners-tutorial/ の内容をベースに一部修正を加えたものです。この記事を読み進めることでGoでシンプルなgRPCクライアントとサーバーを構築することができるようになります。 ※gRPC公式より抜粋(また、以下の説明でも一部参考にしています。) gRPCとは? gRPCGoogleによって開発されたRPCフレームワークです。 RPCはRemote Procedure Callの略で、逐語的に訳すと「遠隔手続呼び出し」となります。これはすなわち、「あるプログラムがネットワーク上の異なる場所に配置されたプログラムを呼び出して実行すること」と読み取れます。 公式による定義 サービス定義 多くのRPCシステムと同様に、gRPCはサービスを定義するという考えに基づいてお

    Go言語+gRPCの解説 [ハンズオン] - Qiita