並び順

ブックマーク数

期間指定

  • から
  • まで

961 - 1000 件 / 2445件

新着順 人気順

goの検索結果961 - 1000 件 / 2445件

  • Flat Application Structure in Go - Calhoun.io

    Flat Application Structure in Go Rather than spending time trying to figure out how to break code into packages, an app with a flat structure would just place all of the .go files in a single package. A flat application structure is what almost everyone begins with when diving into Go. Every program in the Go tour, most exercises in Gophercises, and many others early Go programs don’t get broken i

      Flat Application Structure in Go - Calhoun.io
    • GitHub - create-go-app/cli: ✨ A complete and self-contained solution for developers of any qualification to create a production-ready project with backend (Go), frontend (JavaScript, TypeScript) and deploy automation (Ansible, Docker) by running only one

      You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

        GitHub - create-go-app/cli: ✨ A complete and self-contained solution for developers of any qualification to create a production-ready project with backend (Go), frontend (JavaScript, TypeScript) and deploy automation (Ansible, Docker) by running only one
      • Go で SSH 超しに PostgreSQL に接続できる database/sql ドライバを作った。

        はじめに データベースを扱う際に、データベースサーバがローカルネットワーク内に存在すれば直接接続できるのですが、時にはデータベースサーバが遠隔にあり ssh を介してしか接続できないケースもあります。そういった場合、ポートフォワーディング等を使って接続するなどしないといけません。 しかしながら、その為には事前に ssh コマンドでトンネルを掘る必要があり、バッチ的に遠隔のデータベースを操作するのは幾分手間が掛かります。 SSH を超えてデータベースに接続する database/sql にはドライバを自分で作る機能があります。そしてデータベースに接続する際のコネクタを自作する事ができる様になっています。crypto/ssh でサーバにログインし、その先で Dial を実行する事で、あたかもローカルのデータベースに接続しているかの様なコネクションを PostgreSQL のコネクションとして渡

          Go で SSH 超しに PostgreSQL に接続できる database/sql ドライバを作った。
        • Go はどのようにしてサプライチェーン攻撃を低減しているか

          Go 本家ブログが面白い記事を出してたので,かいつまんで紹介してみる。 サプライチェーン攻撃とは 知らない方もいるかもしれないので一応説明すると,もともと「サプライチェーン」というのは原料調達から製造,物流,販売を経て顧客に渡るまでの事業の一連の流れ(chain)を指す言葉で,この流れを最適化することで生産性の向上やコストの低減を目指すというのが,いわゆる SCM (Supply Chain Management) と呼ばれるやつである。 これをソフトウェア開発に当てはめて,製品の企画・設計から製造して顧客に渡し,さらにその後の保守・運用を含めた流れもサプライチェーンと呼ぶことがある。さらにさらにソフトウェアのサプライチェーンの場合は複数のソフトウェアを組み合わせた新たなシステムを作って運用することも含まれる。XaaS 全盛の現代ではソフトウェア・サプライチェーンの管理はとても重要である。

            Go はどのようにしてサプライチェーン攻撃を低減しているか
          • vim-goを使わず、LSP(gopls)を使ってVimのGo開発環境を構築する - My External Storage

            2020年にもなったので、vim-goを卒業して、vim-lsp(gopls)を使ったVimの開発環境を構築する。 TL;DR vim-goを卒業してgoplsとvim-lspを使った開発環境を構築する VimでLSP(とその他プラグイン)を使えば以下のことができる リアルタイムで静的解析の結果をエディタ上に反映する ポップアップで静的解析のエラーを表示する ポップアップで関数定義などのコメントを表示する 定義元へジャンプができる。 package名.などを入力IDEのような補完候補が表示さえる funcと入力してタブを押下するとスニペットが展開される。 &http.Client{}と書いたあと:LspCodeActionで構造体のフィールドをゼロ値で初期化する importをよしなに解決する(goimport) :wによる自動ソースコード整形、およびそのエラー表示 Vim上からテストを実

              vim-goを使わず、LSP(gopls)を使ってVimのGo開発環境を構築する - My External Storage
            • Goのテスト安定性向上のためにFlakyなテストを再試行する機能を導入する提案 - tomato3713’s blog

              Go言語にFlakyなテストへのサポートを追加する提案が面白かったので紹介します。 概要 Flakyなテストとは、コードに変更がないにもかかわらずテストが成功したり失敗したりと不安定な実行結果になるテストのことです。 テスト結果は本来なら全て成功ならリリース可能、1つでも失敗すればバグがあるのでリリース不可のようにリリースの可否を判断するための情報です。 そのため、不安定なテストは書かないようにすることが大前提です。 しかし、実際にはflakyであるとわかっていても修正が難しかったり、修正するための時間がないのでそのまま残すという判断をすることもあります。 Flakyなテストは削除するというのも手ではありますが不安定であってもテストが無いよりはマシとして残すこともあると思います。 github.com この提案では、Flakyなテストを扱うための機能を追加するものです。 初めの提案内容は、

                Goのテスト安定性向上のためにFlakyなテストを再試行する機能を導入する提案 - tomato3713’s blog
              • More powerful Go execution traces - The Go Programming Language

                The Go Blog More powerful Go execution traces Michael Knyszek 14 March 2024 The runtime/trace package contains a powerful tool for understanding and troubleshooting Go programs. The functionality within allows one to produce a trace of each goroutine’s execution over some time period. With the go tool trace command (or the excellent open source gotraceui tool), one may then visualize and explore t

                  More powerful Go execution traces - The Go Programming Language
                • Go で --version の出力を実装する - はやくプログラムになりたい

                  Go でコマンドラインツールを実装した時に $ some-tool -version のようにバージョンを出力するフラグを実装することが多いと思います.本記事はこれをどう実装するかのメモです. 手動でバージョン情報を管理 素朴にはバージョン情報を定数で持って手動で管理する方法があります. package main import ( "flag" "fmt" ) const version = "1.2.3" func main() { var v bool flag.BoolVar(&v, "version", false, "Show version") flag.Parse() if v { fmt.Println(version) } } 新しいリリースを行うときは version 定数の値を手で書き換えてコミットしてからリリース用のタグを打つという方法でやっていたのですが,間をおい

                    Go で --version の出力を実装する - はやくプログラムになりたい
                  • AWS SDK の裏側を見てみよう ! ~AWS SDK for Go (v1) のコードとともに (前編) - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

                    皆さん、こんにちは ! ソリューションアーキテクト (SA) の王 (@elecho1_t) です。 普段みなさんどのような方法で AWS サービスを利用していますでしょうか ? ブラウザ上でマネジメントコンソール経由で操作したり、コマンドラインから AWS CLI 経由で使ったり、開発しているアプリケーションでライブラリ経由で使ったりと、様々な使い方をされていると思います。 このうち、3 つ目の、様々な開発言語やプラットフォームのアプリケーションから AWS サービスを利用するためのツール群は AWS SDK と呼ばれています。 現在 (2022 年 1 月 15 日時点) では、右図のように Python, Java, C++, Go などの主要な開発言語向けの AWS SDK が提供されています。 またこれらの言語に加えて、昨年末の AWS re:Invent 2021 では Swi

                      AWS SDK の裏側を見てみよう ! ~AWS SDK for Go (v1) のコードとともに (前編) - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
                    • Goの準々標準ライブラリの探索 - Qiita

                      フューチャーアドベントカレンダー21日目のエントリーです。全25話中、神回が25回あったウルトラマンZが終わってしまいましたね。全日本人のうちの1億2000万人ほどがウルトラマンZロスでうちひしがれているころかと思います。 Goでは、Goをインストールしたときに一緒にインストールされるライブラリを「標準ライブラリ」と呼びます。また、golang.org/xなパッケージ群は準標準ライブラリと呼ばれます。準標準ライブラリには多彩なライブラリが含まれます。今ではもう本家に入ってしまって、後方互換性のためだけに残っているパッケージも一部ありますが・・・ これ以外にも https://github.com/golang/ にはたくさんパッケージがあります。一部はgolang/xのものも入っているのですが、それ以外のものをここでは仮に準々標準ライブラリと呼ぶことにします。 golang.org/xのも

                        Goの準々標準ライブラリの探索 - Qiita
                      • Goで書いたツールの依存管理をdepからGo Modulesに移行した - $shibayu36->blog;

                        昔作った notify-issues-to-slackの依存モジュールはdepのままで管理していたが、勉強がてらGo Modulesに移行することにした。 参考にした資料 Go 1.13 に向けて知っておきたい Go Modules とそれを取り巻くエコシステム - blog.syfm Go Modulesについてざっくり知ることができてよかった Modules · golang/go Wiki · GitHub ざっくり知った上でちゃんと理解するために公式ドキュメントを読む depからgo modulesへの移行と、移行時にTravis CI & GoReleaserでハマる(かもしれない)ポイント · horizoon 移行手順で参考にした Goモジュールでツールもバージョン管理する - Plan 9とGo言語のブログ ツールも含めてgo.modに入れていく手順で参考にした やったこと

                          Goで書いたツールの依存管理をdepからGo Modulesに移行した - $shibayu36->blog;
                        • gocycloを使ってgo言語のプロダクトをシンプルに維持する|moli9ma

                          1. 対象者 - go言語を使用している方 - 対象のプロダクトの可読性が悪いと感じている場合 2. 概要 ソフトウェアの品質を一定の水準に維持する方法には大きく、テストケースの網羅率を測定する方法とソフトウェアメトリクス(モジュールの依存度、ソースコードの行数、ネストの深さ、循環的複雑度.. etc)を測定する方法があります。今回は、これらソフトウェアメトリクスの内、循環的複雑度に着目してgo言語で実践する方法を紹介していきます。(go言語を取り扱いますが、概念自体は技術を制限するものでは無いので、他のプロダクトでも応用可能です。) 3. 循環的複雑度 循環的複雑度は、対象の関数やメソッドがどれだけ複雑さを持っているかを表す数値です。この循環的複雑度が高ければ高いほど、可読性が低く保守性が悪いコードである可能性が高くなります。 使用する技術によって、目安は変わってきますが、おおよそ20~

                            gocycloを使ってgo言語のプロダクトをシンプルに維持する|moli9ma
                          • The Zen of Go | Dave Cheney

                            This article was derived from my GopherCon Israel 2020 presentation. It’s also quite long. If you’d prefer a shorter version, head over to the-zen-of-go.netlify.com. A recording of the presentation is available on YouTube. How should I write good code? Something that I’ve been thinking about a lot recently, when reflecting on the body of my own work, is a common subtitle, how should I write good c

                            • GORM で出力されるログの SQL と実行される SQL が違った話 - カミナシ エンジニアブログ

                              7月に株式会社カミナシに入社したくらさわです! カミナシでは、現場DXプラットフォーム「カミナシ」の開発をしています! よろしくお願いします!!! きっかけ 検証バージョン 結論 コード書いて確認してみた ドキュメント読んでみた コード読んでみた go-sql-driver/mysql のコード GORM のコード まとめ きっかけ 現在、カミナシの開発では、サーバサイドの言語は Go 、ORマッパーとして 「GORM」 を使い、DB には Amazon Aurora MySQL を使っています。 ある日、開発中に GORM が吐いてくれるログで query を調べていると、アプリケーションの実行中は結果が取れていないのに、その query をコピーして、手動で MySQL に投げると結果が取得できるということがありました。 パッとわからなかったので、それについて調べたことを記事にしてみま

                                GORM で出力されるログの SQL と実行される SQL が違った話 - カミナシ エンジニアブログ
                              • Go を Wasm にビルドして Google Apps Script で動かす

                                Go のコードで文字列の変換をする関数があり、これが Google スプレッドシート上の関数としても利用できれば検証[1]に便利かもしれないと思いました。 Google スプレッドシートでは Apps Script の関数をセル上で実行できるので、Go のコードを Wasm にビルドして JavaScript から呼び出すことができれば良いのではないかと考え、実際に試してみることにしました。 動作環境 Go 1.22.2 Apps Script の設定 Chrome V8 ランタイムを有効にする その他 macOS の pbcopy コマンド[2]を利用した手順を記載していますが、Linux 環境でも pbcopy を他の手段に置き換えることで同様に動作しました。 事前調査 Go を Wasm にビルドして GAS で動かす事例は見当たりませんでしたが、Rust を Wasm にビルドして

                                  Go を Wasm にビルドして Google Apps Script で動かす
                                • Goの自動テスト高速化のための調査と改善手法 - Cluster Tech Blog

                                  はじめに こんにちは、クラスター株式会社でソフトウェアエンジニアをやっているid:shiba_yu36です。 クラスターではGoの自動テストをCircleCIで実行しています。入社して以降、この自動テストの実行時間が少し長いと感じたため、調査と改善を進めてきました。結果として速度を改善できたので、この記事でGoの自動テスト高速化のための調査と改善手法について共有したいと思います。 はじめに Goの自動テストで課題だったこと 最終的な結果 自動テスト高速化の流れ テスト実行時間のボトルネックを調査する CircleCIのTIMINGタブで大まかなボトルネックを調査する make testのボトルネックを調査する 高速化でやるべきことを決定する 1つずつ改善し結果を計測する go generateの成果物をレポジトリにcommitし自動テスト上では実行しない: 2分短縮 ビルドキャッシュを用い

                                    Goの自動テスト高速化のための調査と改善手法 - Cluster Tech Blog
                                  • HTTP/2をゼロからの実装したときに感じた“難しさ” 僕がGoで仕様準拠テストツール「protospec」を開発した理由

                                    Go Conferenceは半年に1回行われるプログラミング言語Goに関するカンファレンスです。 石澤氏は、Goを使ったインターネットプロトコルのテストツール「protospec」の作成について発表しました。全2回。前半は、テストツール「protospec」の仕組みについて。 HTTP/2のサーバーをゼロから実装した時に感じたこと 石澤基氏:今日は、GoとOCI Artifactsを使ってインターネットプロトコルのテストケースを共有可能にするという話をしていきたいと思います。 私はカンムという会社でソフトウェアエンジニアをしています、石澤基と申します。カンムでは主にサービスのバックエンドやインフラ領域を担当していて、Goは個人的に書いているのも含めて、5年ぐらい前から書いたり読んだりしています。 私が所属するカンムでは、VISAのプリペイドカードをアプリですぐに発行して使える、「バンドルカ

                                      HTTP/2をゼロからの実装したときに感じた“難しさ” 僕がGoで仕様準拠テストツール「protospec」を開発した理由
                                    • Big Sky :: Go 言語で変数のシャドウイングを避けたいなら shadow を使おう。

                                      var hoge *Hoge if condition != nil { hoge, err := https://t.co/3dOQ15DCmc(ctx, hoge_key) if err != nil { return nil, err } fmt.Printf("%v", *hoge) } else { hoge = nil } こんな感じのコードで死んでたんですが、うっかりhogeがnil担っちゃうの防ぐにはどうしたら・・・(文字数 — chidakiyo (@chidakiyo) February 26, 2020 こういった場合に便利なのがオフィシャルが提供している解析コマンド shadow です。(相変わらずググらび...) インストールは以下を実行します。 $ go get golang.org/x/tools/go/analysis/passes/shadow/cmd/s

                                        Big Sky :: Go 言語で変数のシャドウイングを避けたいなら shadow を使おう。
                                      • skeletonで始めるGoの静的解析 | メルカリエンジニアリング

                                        はじめに メルペイのエキスパートチームの@tenntennです。Merpay Tech Openness Month 2022の4日目の記事です。本記事ではGoの静的解析ツールの開発を補助するskeletonというツールについて解説します。また、静的解析ツールの学習方法やGo Conferenceのメルカリブースで行うハンズオンについても触れます。 静的解析ツールとskeleton Goにおける静的解析 Goが開発された目的の1つに開発ツールの作りやすさがあります(参考1、参考2)。開発で使用するツールはソースコードを対象とした処理が必要になります。Goはソースコードを実行せずに解析する静的解析の機能を提供するgoパッケージが標準ライブラリとして用意されています。そのため、静的解析を用いたコードフォーマッタやLinterなどが作りやすい言語です。 標準ライブラリだけで構文解析をして抽象構文

                                          skeletonで始めるGoの静的解析 | メルカリエンジニアリング
                                        • Big Sky :: Go言語で Lisp 処理系を作った。

                                          1週間ほど前の深夜、ふと Go で連結リスト構造を書いていたら次第に car/cdr 形式になってしまい、気付いたら手が滑って Lisp 処理系を作り始めてしまいました。 なぜかこんな時間から突然 lisp を書き始めてしまった。 — mattn (@mattn_jp) March 26, 2020 初日は深夜だったのでパーサを書いた所で終了。次の日の夕方には四則演算と FizzBuzz が動きました。実は Lisp 処理系を書くのは人生でたぶん4回目くらいで、前回はC言語で書きました。 GitHub - mattn/cisp: Minimal Lisp Interpreter https://github.com/mattn/cisp 今回のルールとして「過去の自分の実装や他の実装は見ない」というオレオレルールを作ってしまったので幾分時間が掛かってしまった様に思います。テストコードはさす

                                            Big Sky :: Go言語で Lisp 処理系を作った。
                                          • ISUCON10予選を3位で通過しました (vs descending index) - Lを探す日常

                                            2020年9月12日に行われたISUCON10予選にチーム FetchDecodeExecWrite で参加し、3804点、3位で通過しました!やったことを書いていきます。 要点 Descending Index が効いていると思い込み、その誤りに最後まで気付かなかった。 椅子に似合う物件検索を色々分割して頑張った。大きい変更で苦労したがそこそこ役に立った。 追記 2020/9/14 過去のISUCONの参加記 cookies.hatenablog.jp cookies.hatenablog.jp akouryy.hatenablog.jp ISUCON9本戦は書いてない 12:20 競技開始 この記事を見てマニュアルを印刷しようと思ったため、競技開始時はコンビニにいた。 印刷後部屋に戻り、サーバーからの initial commit が終わるまでマニュアルを読んだ。今回は簡潔で嬉しかった

                                              ISUCON10予選を3位で通過しました (vs descending index) - Lを探す日常
                                            • Three bugs in the Go MySQL Driver

                                              EngineeringThree bugs in the Go MySQL DriverCheck out what we learned from shipping our busiest Go service in production—we found 3 bugs in the Go MySQL driver. Although GitHub.com is still a Rails monolith, over the past few years we’ve begun the process of extracting critical functionality from our main application, by rewriting some of the code in Go—mostly addressing the pieces that need to ru

                                                Three bugs in the Go MySQL Driver
                                              • Google発のプログラミング言語「Go」の利用状況を調査した結果が公開中、どこでどのように使われているのか?

                                                2009年にGoogleで設計されたプログラミング言語「Go」の2019年における利用状況について、Googleのユーザーエクスペリエンス調査員であるトッド・クレッサ氏が調査を実施し、その結果を調査年ごとに比較して公開しています。 Go Developer Survey 2019 Results - The Go Blog https://blog.golang.org/survey2019-results 回答者が在籍する企業の従業員数の分布はこんな感じで、「100人から999人」の従業員が働いている企業が最多となっています。 回答者が仕事でプログラミング言語を使用している年数では、「3年から5年」と「6年から10年」という回答が同じくらい集まっています。これらの人口統計はStack Overflowでのアンケートと同じような傾向であり、調査結果の妥当性を保証しているとクレッサ氏は語って

                                                  Google発のプログラミング言語「Go」の利用状況を調査した結果が公開中、どこでどのように使われているのか?
                                                • proto - A multi-language version manager | moonrepo

                                                  A version manager for all your favorite languages and tools. A unified toolchain. Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more.

                                                  • GoのORMを作った - keroxpのScrapbox

                                                    Gormがとんでもなくヤバい核地雷だと発覚したその後の数日で自前でORMを作ることを決断して実際に作った by keroxp.icon

                                                      GoのORMを作った - keroxpのScrapbox
                                                    • OAuth2 のよくあるフローを何回も書きたくない #Go - 詩と創作・思索のひろば

                                                      よくあるフローってのは Google の API ドキュメントを読んでたらよくでてくるやつ(Calendar API の例)。つまり: 前回のアクセストークンが保存されていたらそれを使い、なかったら localhost にサーバを立て、redirect_uri をそこに設定した認可のための URL をユーザに提示し、 code を受け取ったらアクセストークンと交換し、 トークンを保存する。 みたいな一連の流れ。これまでどの部分を抽象化したらいいのかあまり感覚がわからなくて手を出してなかったんだけど、いいかげん面倒なので書いてみた次第。 oauth2util package - github.com/motemen/go-nuts/oauth2util - pkg.go.dev 使い方は簡単で import "github.com/motemen/go-nuts/oauth2util" ..

                                                        OAuth2 のよくあるフローを何回も書きたくない #Go - 詩と創作・思索のひろば
                                                      • Go 1.16 is released - The Go Programming Language

                                                        Matt Pearring and Dmitri Shuralyov 16 February 2021 Today the Go team is very happy to announce the release of Go 1.16. You can get it from the download page. The new embed package provides access to files embedded at compile time using the new //go:embed directive. Now it is easy to bundle supporting data files into your Go programs, making developing with Go even smoother. You can get started us

                                                          Go 1.16 is released - The Go Programming Language
                                                        • Amazon Goの技術が小売店向けに「Just Walk Out」として提供開始。リテール事業者はいま、何をすべきか? | DevelopersIO

                                                          Amazon Goの技術が小売店向けに「Just Walk Out」として提供開始。リテール事業者はいま、何をすべきか? 「Just Walk Out」テクノロジーは、仮想カートを実現するAPI群と、カメラやセンサー機器の提供、導入や運用を支援するサービス。リテール事業者の既存システムとAPIで連携する自由度がかなりある(認証、決済、アプリなど)はず。横断的で良質な顧客体験の提供をする準備を今すぐ始めよう。 まとめ 「Just Walk Out」テクノロジーは、 仮想カートを実現するAPI群と、カメラやセンサー機器の提供、導入や運用を支援するサービスとなっていると予想。 リテール事業者の既存システムとAPIで連携する自由度がかなりある(認証、決済、アプリなど)と予想。 認定コンサル、認定インテグレーター、認定MSPなどのパートナーエコシステムは必須になると予想。 この仕組みを導入するだけで

                                                            Amazon Goの技術が小売店向けに「Just Walk Out」として提供開始。リテール事業者はいま、何をすべきか? | DevelopersIO
                                                          • Goの標準のutf8.RuneStart関数がエレガントすぎる

                                                            先日以下の記事を書きました。 ここでUTF-8の最初の文字かどうかの判定を以下の自作した関数で実装していました。 const ( t1 = 0b00000000 tx = 0b10000000 t2 = 0b00000110 t3 = 0b00001110 t4 = 0b00011110 ) func isUTF8LeadByte(tmp byte) bool { if tmp&tx == t1 { return true } tmp >>= 3 if tmp == t4 { return true } tmp >>= 1 if tmp == t3 { return true } tmp >>= 1 if tmp == t2 { return true } return false }

                                                              Goの標準のutf8.RuneStart関数がエレガントすぎる
                                                            • クリーンアーキテクチャをパン工場で説明する【Go】

                                                              はじめに 本記事は技術書典16(2024)で一部執筆させていただいた「CA Tech Lounge note #2」のクリーンアーキテクチャとパン工場を元に、一部抜粋&変更したものです。 本記事の対象読者 本記事では、クリーンアーキテクチャを全くわかっていない筆者が、一度個人開発したものをクリーンアーキテクチャにリファクタリングしていく過程で学んだことをまとめていきます。そのため、以下のような読者を想定しています。 クリーンアーキテクチャを聞いたことがあるけどわからない人 コードは書くけれどアーキテクチャを意識したことはない人 アーキテクチャを意識して開発したい人 クリーンアーキテクチャを一度学んでもピンと来なかった人 Goが好きな人! リファクタリング前の筆者の状況 バックエンド歴は半年弱ほどで、実務経験としてはPythonで簡単なAPIを実装するアルバイトのみになります。アーキテクチャ

                                                                クリーンアーキテクチャをパン工場で説明する【Go】
                                                              • 初めてのGo言語

                                                                イディオマティックなGo言語の解説書。構文がシンプル、静的型付け、タイプセーフでメモリセーフ、バグが入り込みにくい、並行処理が得意、実行速度が速い……これらの魅力的な特徴を生かすためには、Go言語らしい書き方を可能にする「イディオム」を学ぶ必要があります。Go言語のイディオムをマスターすれば、効率的で読みやすいコードを書けます。本書では、Go言語の基本機能を明快かつ簡潔に説明しつつ、イディオマティックなGoコードの書き方やGoプロジェクトの設計方法を解説します。読者はベテランのGo開発者のように考える術を学べます。 関連ファイル サンプルコード 翻訳者による日本語版のサポートページ 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合

                                                                  初めてのGo言語
                                                                • GitHub - samber/lo: 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)

                                                                  ✨ samber/lo is a Lodash-style Go library based on Go 1.18+ Generics. This project started as an experiment with the new generics implementation. It may look like Lodash in some aspects. I used to code with the fantastic "go-funk" package, but "go-funk" uses reflection and therefore is not typesafe. As expected, benchmarks demonstrate that generics are much faster than implementations based on the

                                                                    GitHub - samber/lo: 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find...)
                                                                  • Go Modules and Proxy Walkthrough

                                                                    #godo_miniconf

                                                                      Go Modules and Proxy Walkthrough
                                                                    • Go言語製のCUIツールを1行でWeb GUI化するライブラリを作った - Qiita

                                                                      はじめに 皆さん、CUI/CLIツールを使ってますか? Qiitaを読んでるような人はみんな使ってるでしょうね。 しかし世間一般に視野を広げると、必ずしもそうではないかと思います。 『黒い画面はなんか敷居が高い』 『一応使えるけど面倒』 『信仰している宗教の戒律で固く禁じられている』 『黒い画面に故郷の村を焼かれた』 などなど理由は様々です。 flagstone 使う側にとっては敷居の高いCUIツール。 とはいえGUIのツールを作るのは、我らがGo言語ではなかなかに面倒です。 そこで、Go言語製のCUIツールを1行でWeb GUI化するライブラリを作ってみました。 flagstone https://github.com/kurehajime/flagstone これです。 flagstoneは、日本語に訳すと『敷石』です。 舗装して歩きやすくしますよ〜みたいなネーミングです。 使い方はと

                                                                        Go言語製のCUIツールを1行でWeb GUI化するライブラリを作った - Qiita
                                                                      • jsondiff: JSONの構造の一部を無視して差分をとれるGoのライブラリを書いた - Sexually Knowing

                                                                        github.com 背景 仕事でお世話になっているkayac/ecspressoの機能の中にローカルのタスク・サービス定義と現在使われている定義を比較して差分を出力してくれるものがある。 github.com これから加えようとしている差分をプレビューできるだけではなく、たとえばデプロイしようとしているわけでもないのに差分があればローカルの定義が古びていることがわかるのでCIに組み込めると便利。 しかし実際に使おうとすると困る点が見つかった。 たとえばタスク定義にイメージタグを書く際に {{ must_env 'IMAGE_TAG' }} のように環境変数を参照している時に「イメージタグ 以外 に差分がない」ことを確認するのが難しいということ。 理想的には image を無視したJSONの構造を比較して差分が出せると良い。あるいは出力されるdiffをパースして image の差分は無視す

                                                                          jsondiff: JSONの構造の一部を無視して差分をとれるGoのライブラリを書いた - Sexually Knowing
                                                                        • Introducing Caddy 2 - The Ultimate Server with Automatic HTTPS

                                                                          v2 new Download Documentation Forum GitHub Account For business A new kind of extensible platform for server apps. Still the only web server to use TLS automatically and by default. Deploy and scale HTTPS effortlessly with Caddy 2.

                                                                            Introducing Caddy 2 - The Ultimate Server with Automatic HTTPS
                                                                          • Golangでバイナリを配布するとき、go-licensesとgoxzを使って利用モジュールのLICENSE、NOTICEを同梱する - 理系学生日記

                                                                            Golangで作ったプロダクトを公開・配布するとき、課題となるのが利用するモジュールのライセンスです。 MITライセンスであれ、MPLライセンスであれ、利用するモジュールのLICENSEやNOTICEファイルを同梱することになるでしょう。 goxzとgo-licensesを使うと、クロスビルドした実行バイナリと利用モジュールのLICENSE等を含め頒布物を作成できるようになります。 最終イメージ 同梱されていることの確認 go-licenses ハマりポイント goxz まとめ 最終イメージ 最終イメージですが、以下のようなMakefileを用意しました。 プロダクトに設定したライセンスで利用できないモジュールがあるかどうかをlicense-checkで確認した後、cross-build.shを呼び出します。 .PHONY: license-check license-check: go-

                                                                              Golangでバイナリを配布するとき、go-licensesとgoxzを使って利用モジュールのLICENSE、NOTICEを同梱する - 理系学生日記
                                                                            • 最近よく書く HTTP サーバ基礎部分 - あれ

                                                                              この記事は Go3 Advent Calendar 2019 13日目の記事です qiita.com TL;DR x/sync/errgroup はいいぞ 本編 最近よく書くサーバの起動部分のコードを紹介します 分かる人には見るのが一番早いと思うので、早速コード全体を載せます やりたいことは localhost:8888 で HTTP サーバを起動 SIGINT を受けると HTTP サーバを graceful shutdown 各所での ctx.Done() のハンドリング これらを混乱しないように記述したかったのが最初のモチベーションです package main import ( "context" "fmt" "net/http" "os" "x/sync/errgroup" ) func main() { os.Exit(run(context.Background())) }

                                                                                最近よく書く HTTP サーバ基礎部分 - あれ
                                                                              • tcコマンドとDockerコンテナを用いて遅いネットワークをシミュレートする - kkty’s blog

                                                                                「手元で、できるだけ実際の環境に近い環境でプログラムの挙動を確認したい」ということがあるかと思います。そこで今回は、遅い(レイテンシの高い)ネットワークをDockerコンテナを用いてシミュレートする具体的な方法を紹介します。 準備 以下のファイルを作成していきます。 docker-compose.yml client/Dockerfile server/Dockerfile server/main.go docker-compose.yml ネットワーク周りをいじるため、cap_addでNET_ADMINを指定する必要があります。 version: "3.0" services: client: container_name: client build: ./client tty: true cap_add: - NET_ADMIN server: container_name: serv

                                                                                  tcコマンドとDockerコンテナを用いて遅いネットワークをシミュレートする - kkty’s blog
                                                                                • 気軽に始めるGraviton2マネージドサービスによるコスト最適化 / Amazon Game Tech Night #23

                                                                                  https://gamingtechnight.connpass.com/event/230933/

                                                                                    気軽に始めるGraviton2マネージドサービスによるコスト最適化 / Amazon Game Tech Night #23