並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 17 件 / 17件

新着順 人気順

golangの検索結果1 - 17 件 / 17件

  • 2024年版のDockerfileの考え方&書き方 | フューチャー技術ブログ

    最近はお客さんとの勉強会でDockerのドキュメントをつまみ食いして読むというのをやっていますが、改めて最新版を読んでみて、いろいろ思考が整理されました。2020年の20.10のマルチステージビルドの導入で大きく変わったのですが、それ以前の資料もweb上には多数あり「マルチステージビルドがよくわからない」という人も見かけるので過去の情報のアンラーニングに使っていただけるように改めて整理していきます。 仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で触れた内容もありますが改めてそちらに含む内容も含めて書き直しています。 本エントリーの執筆には@tk0miya氏から多大なフィードバックをいただきました。ありがとうございます。 基本的なメンタルモデル現代的な使い方を見ていくために「Dockerを使ってビルドする」というのはどのようなものか考えを整

      2024年版のDockerfileの考え方&書き方 | フューチャー技術ブログ
    • MarkdownベースのGo製タスクランナー「xc」のススメ

      Goにおけるタスクランナーの歴史 npmならnpm run、denoならdeno taskなど言語ツールにタスクランナー機能が付属していることがありますが、Goではそのような機能は提供されていません。 そこでGoのプロジェクトではMakefileがタスクランナーとして用いられることがしばしばありますが、独自の文法、.PHONYを大量に書く必要がある、Makefile警察が飛んでくる、などの問題があります。 Makefile警察「ぐぬぬぬ…」 #taskfile - Qiita タスクランナーとしてMakefileを使うことから脱却すべく、巷ではYAMLベースの「Task」やGoベースの「Mage」が用いられている印象です。 どちらも多少試したことはありますが、主に以下の点が気になりました。 Taskfile.ymlやmagefile.goといったツール独自のファイルを置く必要がある これは

        MarkdownベースのGo製タスクランナー「xc」のススメ
      • 資料公開:「Golangを使ったバックエンドの実装入門」で DevelopersIO 2024に登壇しました #devio2024 | DevelopersIO

        ども、もこ(札幌オフィス)です。 本日開催のClassmethod Odyssey (DevelopersIO 2024) で登壇いたしましたので、資料とソースコードを公開します。 資料 ソースコード DEMOでお見せしたコードは下記にて公開しております。 https://github.com/mokocm/go-task-backend 所感 gRPC、なんとなく難易度が高そうなイメージがありますが、Protocol Bufferとの親和性も高く、非常に洗礼されたエコシステムとなっているため、是非これきっかけで興味を持っていただけると幸いです!

          資料公開:「Golangを使ったバックエンドの実装入門」で DevelopersIO 2024に登壇しました #devio2024 | DevelopersIO
        • goのエラーをスタックトレースも含めて構造化ログで残したい - エムスリーテックブログ

          こんにちは、エムスリーエンジニアリンググループの福林 (@fukubaya) です。 golangでずっと課題に思っていたエラーの処理について試行錯誤してみました。 イオンモール センソックシティは、カンボジアにある商業施設。本文には関係ありません。 エラー処理のベストプラクティスは? ぼくがかんがえるエラー処理の要件 検討したパッケージ 構造化ログ パッケージの検討 pkg/errors cockroachdb/errors goark/errs go-errors/errors go-errors/errors がよさそう? pkg/errors や cockroachdb/errors は使えないのか ラップして使う errors.WithStack(err) と呼びたい slogで使う errors.Join() に対応したい まとめ We are hiring! エラー処理のベス

            goのエラーをスタックトレースも含めて構造化ログで残したい - エムスリーテックブログ
          • Goで0秒待つとどうなるか - ベースマキナ エンジニアブログ

            こんにちは。yebis0942です。GoとTypeScriptを書いています。夏祭りのおみくじで「待ち人来る」を引いたので、最近のちょっとした待ち事例についてご紹介します。 Goでタイムアウト時間を指定する関数を呼び出したとき、待機時間を0秒にすると何が起きるのか?という点が社内のレビューで少し話題になりました。 気になって調べてみたところ、同じ0秒のタイムアウト処理でも、内部の実装によって振る舞いが異なるケースがあることが分かりました。 よく見るタイムアウト処理 Go言語では、一定時間だけあるchannelを待つというタイムアウト処理は以下のように time.After() を使って書くことができます。 func timeAfter(c chan int, duration time.Duration) { select { case <-time.After(duration): //

              Goで0秒待つとどうなるか - ベースマキナ エンジニアブログ
            • 【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
              • Go言語での実践を通じてクリーンアーキテクチャの理念と実装を学べる解説書が発売/『Go言語で構築するクリーンアーキテクチャ設計』【Book Watch/ニュース】

                  Go言語での実践を通じてクリーンアーキテクチャの理念と実装を学べる解説書が発売/『Go言語で構築するクリーンアーキテクチャ設計』【Book Watch/ニュース】
                • Vercel に Go サーバーを無料でデプロイできるんです!

                  はじめに 個人開発で使っていたのですが Gopher の集いにて Vercel で Go の開発ができることを話したら意外と知られていなかったのでご紹介します。 (貧乏エンジニアリングだと言って似たような記事を以前お見かけしていた場合、それはきっと私の残像が書いたものです。) Vercel とは いわゆる PaaS ( Platform as a Service ) です。 Vercel 社が Next.js を開発していることもあり、静的サイトや SPA ホスティングを簡単にできるサービスの印象が強いですが、 Functions や Postgres などを備えているのでサーバーの構築もできちゃいます。 Next.js のイメージから TypeScript と思われますが Go もデプロイできます。 準備 & version Vercel アカウントを作成します。 無料で使いたいので H

                    Vercel に Go サーバーを無料でデプロイできるんです!
                  • Go で実 DB を使ったテストをしてみた - Repro Tech Blog

                    はじめに こんにちは。Repro で新規事業の開発をしている冨永です。 我々のチームでは主に、ユーザーのイベント集計を定期的にバッチ処理するフローで Go を採用しています。 Go で RDB など外部依存のあるコンポーネントを扱うテストをする際 interface などで抽象化しモックすることが多かったのですが、実際にその部分の挙動が確かめられないという不安がありました。 そこで今回は testfixtures というライブラリを使って実際に DB アクセスするテストを書いてみたのでその紹介です。 きっかけ まずはチーム内でテストに関する共通認識を作るためワークショップを実施しました。 各々の『知りたいこと』『教えたいこと』『議論したいこと』を話し合った結果、以下のような話題が上がりました。 今回は特に『外部依存のあるコンポーネントでテストが書き辛い』というトピックが盛り上がり、その中で

                      Go で実 DB を使ったテストをしてみた - Repro Tech Blog
                    • Goroutines in Go (Golang) - Welcome To Golang By Example

                      This is the  chapter 23 of the golang comprehensive tutorial series. Refer to this link for other chapters of the series – Golang Comprehensive Tutorial Series Next Tutorial – Channel Previous Tutorial – Iota Now let’s check out the current tutorial. Below is the table of contents for current tutorial. Overview Goroutines can be thought of as a lightweight thread that has a separate independent ex

                        Goroutines in Go (Golang) - Welcome To Golang By Example
                      • 【Go言語】はじめてのEbitengine【ゲームエンジン】 - 虎の穴開発室ブログ

                        こんにちは! 虎の穴ラボのA.Mです。 この記事は夏の連載企画の15日目の記事です。 前回はm.mさんによる「画像ファイルをまとめてWebPに変換しよう!」が投稿されました。 次回は原さんによる「もしも転生してWebアプリエンジニアになったら?インフラエンジニアの新たな挑戦」が投稿されます。こちらもぜひご覧ください。 本記事では、Go言語で実装されている2DゲームエンジンであるEbitengineを使用して、何か作ってみたいと思います。 はじめに 以前の記事で、Go言語で作ったゲームを紹介しました。 toranoana-lab.hatenablog.com toranoana-lab.hatenablog.com このゲームに対して、以下の2つを実現したいと考えていました。 BGMやSEなどの音を追加したい 手軽に遊べるようにしたい(フォントやターミナルのサイズに依存しているのを解消したい

                          【Go言語】はじめてのEbitengine【ゲームエンジン】 - 虎の穴開発室ブログ
                        • go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ

                          はじめにTIG真野です。 バックエンドのアプリケーションの上で、メール送信するコードがある場合の単体テストをどう実現するか悩みました。 メールには、タイトル・本文・From・TO・CC・BCCなど複数の設定値がありますし、SMTPサーバの接続情報もあります。これらを表現する構造体のモデルだけに絞った検証に留めることは、気が進みませんでした。時代はインフラレベルでダミーサーバを動かしモックする方向で動いています。SMTPでメール送信し、その送信結果をテストコード上で取得&検証する一連の流れを行って動作を確かめたいと思いました。 方法として、澁川さんのMailSlurperを使って6桁のコードの送信コードのテストをするで紹介されたMailSlurperを使うか迷いましたが、以下の点で牛刀だなと感じました。 メール送信するのはごく一部の機能(私の場合は1機能。今後増える見込みは現時点で見えなかっ

                            go-smtp-mockをSMTPのモックサーバにして単体テストする | フューチャー技術ブログ
                          • 【Go】h2c で TLS なしの HTTP/2 サーバーをつくる

                            * Trying 127.0.0.1:8000... * Connected to localhost (127.0.0.1) port 8000 (#0) * h2h3 [:method: GET] * h2h3 [:path: /] * h2h3 [:scheme: http] * h2h3 [:authority: localhost:8000] * h2h3 [user-agent: curl/7.88.1] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x561bf2f5dce0) > GET / HTTP/2 > Host: localhost:8000 > user-agent: curl/7.88.1 > accept: */* > < HTTP/2 200 < content-type: text/plai

                              【Go】h2c で TLS なしの HTTP/2 サーバーをつくる
                            • devio-2024-Introduction-golang-backend

                              I Don’t Have Time: Getting Over the Fear to Launch Your Podcast

                                devio-2024-Introduction-golang-backend
                              • passing torches to Austin and Cherry

                                Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message Hi all, Starting September 1, Austin Clements will be taking over as the tech lead of Go: both the Go team at Google and the overall Go project. Austin is currently the tech lead for what we sometimes call the “Go core”, which encompasses compiler toolchain, runti

                                • GolangのDesignPatternをコード付きで簡単に紹介!

                                  はじめに 今回この記事を書こうと思った背景として、とある技術記事でLoggerの実装方法について盛り上がってるものを見つけて、その部分の知見が弱い事を再認識させられた一件がありました。 また、一年弱ほど長期インターンでGo言語を沢山書いてきた中で、シンプルな文法で様々なDesignPatternを表現できるGo言語も面白さを皆さんに知っていただきたいなという想いも込めました。 それではGopher君の世界に踏み入れていきましょう。 Dependecy Injection Dependency Injection(DI)は、依存関係の逆転(Dependency Inversion)の原則を実現するためのデザインパターンです。DIを使用すると、高レベルのモジュールが低レベルのモジュールに直接依存するのではなく、抽象化を介して間接的に依存するようになります。これにより、モジュール間の結合度を低く

                                    GolangのDesignPatternをコード付きで簡単に紹介!
                                  • Resetting timers in Go

                                    If you use Timer.Reset() in Go 1.22 or earlier, you may be doing it wrong. Even the book 100 Go Mistakes (which is usually right about Go nuances) got it wrong. Let's see what the problem might be and how to work around it. time.AfterIncorrect solutionReset problem1.23 fixPre-1.23 solutionPost-1.23 solutiontime.AfterFuncFinal thoughtstime.AfterUsing time.After() in a loop in Go ≤1.22 can lead to s

                                      Resetting timers in Go
                                    1