並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 107 件 / 107件

新着順 人気順

golangの検索結果81 - 107 件 / 107件

  • Go 言語の context を基礎から実践まで解説 - Qiita

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

      Go 言語の context を基礎から実践まで解説 - Qiita
    • 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秒待つとどうなるか - ベースマキナ エンジニアブログ
      • DuckDB as the New jq

        Recently, I’ve been interested in the DuckDB project (like a SQLite geared towards data applications). And one of the amazing features is that it has many data importers included without requiring extra dependencies. This means it can natively read and parse JSON as a database table, among many other formats. I work extensively with JSON day to day, and I often reach for jq when exploring document

        • 【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.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3

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

              go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
            • 脱データ不整合!? Workflow Engine「Temporal」の魅力

              はじめに 分散システムを扱う際、エラーやクラッシュによる処理の中断はよくあるものかと思います。特に、EC サイトの支払い処理など、複数のステップを経て完了する重要なプロセスでは、障害が発生した場合にその進行状態を適切に管理しないと、取引の二重処理やデータの不整合といった問題が発生する危険性があります。復旧作業に骨を折った方も多いのではないでしょうか。 Temporal は、こういった課題を解決するために、処理の進行状況を自動的に追跡し、障害が発生してもその地点から再開できる仕組みを提供しています。複雑な復旧コードの実装や、手作業による復旧作業がなくなるのであれば、これは非常に魅力的ですね。 ここでは、Temporal が一体どういうものかについて解説していきたいと思います。 Temporal とは Temporal は、分散システムでのワークフローを管理するためのオープンソースのワークフロ

                脱データ不整合!? Workflow Engine「Temporal」の魅力
              • 【Go × DDD】Goで値オブジェクトを実装しようとしたら意外と考えることが多かった | CyberAgent Developers Blog

                目次 はじめに 対象読者 値オブジェクトパターンとは Goでドメインオブジェクトを実装する時の注意点 具体的な課題 試したこと 最終的な意思決定 終わりに はじめに AmebaLIFE事業本部でバックエンドエンジニアをしています、23新卒のみねしんです。 最近のニュースはAmebaLIFE事業本部とCAのCyberOwlからなるライフスタイル管轄が株式会社AmebaLIFEとして子会社化することが発表されたことです。 この規模の経営統合はCA全体でも初めてのことなのだとか。驚き…! 本記事の内容 私の所属するチームでは、Goを使用し「DDD(ドメイン駆動開発)」の考え方に則ったアプリケーション開発をしています。 後述しますが、GoでDDDを実践する場合には言語仕様の問題で実装方法に幾つかの選択肢が存在します。 本記事では、DDDにおける「値オブジェクト」をGoで実装する際に直面した課題につ

                  【Go × DDD】Goで値オブジェクトを実装しようとしたら意外と考えることが多かった | CyberAgent Developers Blog
                • Go 1.23のイテレータについて知っておくべきこと

                  はじめに 2024年8月13日、Go 1.23がリリースされ、ついにイテレータが利用可能となりました。 この記事では、Goのイテレータについて、 どうやって使うのか どこまで知っておく必要があるのか を理解することをゴールとします。 基本的な知識 基本的な知識としては、以下の内容を知っていれば問題ないです。 for文のrangeループの仕様が変わった 関数を対象にrangeループを回せるようになる rangeループの対象にできる種類の関数をイテレータと呼ぶ イテレータには3種類ある for文のrangeループの仕様が変わった Go 1.22までは、for文によるrangeループの対象にできたのは、配列, slice, 文字列, map, channel, 整数だけでした。 Go 1.23で、ここに関数(ただし、特定の形式に限る)が加わりました。 ここで、rangeループの対象にできる形式の

                    Go 1.23のイテレータについて知っておくべきこと
                  • 感動した Go のテクいコード - ドキドキするとき無敵でしょ

                    この前上司の PR を読んでいたら「理解できるけどどうすればこんなこと思いつくんだ」と思ったコードがあり、聞いたら出典を教えてくれたので紹介する。 というわけでこちら。 strechr/testify のコードにそれはある。 github.com 私が感動したコードはこの getLen() 関数。 // getLen tries to get the length of an object. // It returns (0, false) if impossible. func getLen(x interface{}) (length int, ok bool) { v := reflect.ValueOf(x) defer func() { ok = recover() == nil }() return v.Len(), true } Named return values まずこ

                      感動した Go のテクいコード - ドキドキするとき無敵でしょ
                    • 爆伸び中のGoライブラリhuma

                      はじめに 2024年に入り、Go言語の世界で急速に注目を集めているWebフレームワーク「huma」をご存知でしょうか?humaはGoでのAPI開発を革新する新しいライブラリで、そのスター数は驚異的なスピードで増加しています。本記事では、humaの魅力とその使い方、そしてサンプルコードを通じてその実力を探っていきます。 huma公式リポジトリ 公式ドキュメント humaの良さ GoからOpenAPI 3.1を生成可能 humaはPythonのFastAPIに強く影響を受けて開発されたライブラリです。FastAPI同様、YAMLファイルを書くことなく、Goのコードから直接OpenAPIのYAMLを生成できます。これにより、APIの設計と実装がシームレスに統合され、開発効率が大幅に向上します。(スキーマファストかコードファストかの議論は別問題) GoでコードからOpenAPIを生成するライブラリ

                        爆伸び中のGoライブラリhuma
                      • Databases in 2024: A Year in Review

                        Like a shot to your dome piece, I'm back to hit you with my annual roundup of what happened in the rumble-tumble game of databases. Yes, I used to write this article on the OtterTune blog, but the company is dead (RIP). I'm doing this joint on my professor blog. There is much to cover from the past year, from 10-figure acquisitions, vendors running wild in the streets with license changes, and the

                          Databases in 2024: A Year in Review
                        • GoConference2024の資料が集まるスレ #gocon

                          これはサマリ(ここを更新していきます)情報提供(コメント)歓迎!! イテレータによってGoはどう変わるのか Dive into gomock Data Race Detection In Go From Beginners Eye Go1.21から導入されたGo Toolchainの仕組みをまるっと解説 Cleanup handling in Go Custom logging with slog: Making Logging Fun Again! Goにconst型修飾を期待しなくてよい理由 GoのLanguage Server Protocol実装、「gopls」の自動補完の仕組みを学ぶ バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する Mapのパ

                            GoConference2024の資料が集まるスレ #gocon
                          • Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

                            こんにちは羽山です。 現代の Webシステム界隈は昔よりもはるかに洗練され、初心者からでも簡単に開発方法を学び作れる時代になっています。その反面で例えば Python なら WSGI や gunicorn、Waitress、uWSGI などが何のために存在しているのかが分かりにくいと思ったことはありませんか?Ruby の Rack、unicorn、puma だったり FastCGI など、いずれも Webシステムの構成要素として重要な一方で役割を理解しにくいのは事実です。 そこで今回は Webシステムが現代の形にたどり着くまでの先人達の葛藤の歴史を解説します。歴史を知ればこれらの仕様やプロダクトが何の役になっているかが分かるはずです。 前提 動的な Webサイト(=Webシステム)を作りたいニーズはインターネット黎明期からありますが、ブラウザからのアクセスを適切に処理するには HTTPサー

                              Webシステムにおける HTTPサーバ機能をどう用意するか?という問題に対して先人達の葛藤の歴史 | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
                            • 【Golang】fe3dback/go-arch-lintでアーキテクチャの破壊を防ぐ

                              【Golang】fe3dback/go-arch-lintでアーキテクチャの破壊を防ぐ by nao · 公開済み 2025年2月13日 · 更新済み 2025年2月13日 前書き:アーキテクチャは容易に壊される アーキテクチャリンターであるfe3dback/go-arch-lintをnao1215/sqlyに導入したので、使用方法のメモを記事として残します。結論としては、初期設定が面倒ですが、期待通りの効果が得られました。なお、既存コードがカオスなアーキテクチャの場合、go-arch-lintを採用できないと思われます。 まず、アーキテクチャをリンターでチェックする発想に至った理由から、説明します。以前、ペアプロ中にドライバ側(実装する人)がアーキテクチャルールに反しているのを偶然目撃しました。違反内容は、「外部サービス操作用パッケージ内でのみ使用できる構造体をユースケースレイヤーから呼

                                【Golang】fe3dback/go-arch-lintでアーキテクチャの破壊を防ぐ
                              • Go 1.24 で map が30%以上高速化!Swiss Tableとは? - カンム テックブログ

                                Go1.24 がついに公開されましたね。その中でとても興味深い改善内容がありました。 1/14 Go's new map implementation in 1.24 is powered by Swiss Tables, a cutting-edge hash table design that significantly boosts performance. Let's break down why this matters and how @CockroachDB's implementation played a key role. 🧐🚀— Peter Mattis (@petermattis) 2025年2月10日 9/14 Performance gains? Benchmarks show Go's new maps are 30%+ faster in many wo

                                  Go 1.24 で map が30%以上高速化!Swiss Tableとは? - カンム テックブログ
                                • GitHub - 1buran/rHttp: REPL for HTTP

                                  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 - 1buran/rHttp: REPL for HTTP
                                  • PHPエンジニア視点で見るGolangの魅力とPHPとの違い

                                    昨年の9月、私はPHPエンジニアからGolangエンジニアへと転向しました。 それから1年が経ち、技術的な視点はもちろんのこと、開発プロセスへのアプローチにも変化が生まれました。 この記事では、Golangに触れ、得た経験や気づきを振り返ります。 PHPエンジニアの皆さんが、これからGolangを学びたいと思った際の参考になれば幸いです。 循環インポート PHPでは、循環依存に対する強制的な制約がないため、柔軟にクラスやファイル間で参照し合うことができます。 ただし、この柔軟さは設計が複雑になった場合に依存関係がスパゲッティ状になるリスクもはらんでいます。 そのため、PHPでも設計の段階で依存関係に気を配ることが求められます。 また、状況によってはPHPでも循環参照に起因するエラーが発生する場合があります。 一方、Golangでは循環インポートが明確に禁止されており、具体的には以下のような

                                      PHPエンジニア視点で見るGolangの魅力とPHPとの違い
                                    • Goのプラクティスまとめ: error handling

                                      Goのプラクティスまとめ: error handling 筆者がGoを使い始めた時に分からなくて困ったこととか最初から知りたかったようなことを色々まとめる一連の記事です。 以前書いた記事のrevisited版です。話の粒度を細かくしてあとから記事を差し込みやすくします。 他の記事へのリンク集 (まだ)今はこうやる集 (まだ)プロジェクトを始める (まだ)dockerによるビルド error handling: ここ (まだ)fileとio (まだ)jsonやxmlを読み書きする (まだ)cli (まだ)environment variable (まだ)concurrent Go (まだ)context.Context: long running taskとcancellation (まだ)http client / server (まだ)structured logging (まだ)tes

                                        Goのプラクティスまとめ: error handling
                                      • ARMアーキテクチャとlibvipsへの変更で画像変換のコストが40%ダウン - Pepabo Tech Portal

                                        こんにちは、最近は旅行しているか、コードを書いているかの2極化が進みつつあります、P山です。直近の業務において、私が支援している国内最大級のハンドメイドマーケットサービス minne において画像変換サーバの実装を変更し、大幅にコストダウンできたので、その事例を紹介します。 minneについて minneはハンドメイド作家が創作したハンドメイド作品を販売することができるハンドメイド作家支援サービスです。技術スタックとしてはRuby on Railsを軸に、実行環境はOpenStackとAWSを用いたデュアルスタックのKubernetesを利用しており、スマートフォンアプリもiOS、Androidともに提供しています。 幅広い技術を、モダンな構成で扱うことができるので、もし採用にご興味があれば採用ページ をご確認ください。ペパボ社内を見渡しても若いメンバーが比較的多く、日々活気のある開発がさ

                                          ARMアーキテクチャとlibvipsへの変更で画像変換のコストが40%ダウン - Pepabo Tech Portal
                                        • GoとGCSで100GBの巨大zipファイルを展開する | Re:Earth Engineering

                                          はじめに ファイルをアップロードすることができる機能を持ったWebアプリケーションやクラウドサービスは世の中に多数あります。しかし、アップロードしたzipファイルを自動で展開(解凍)してくれて、中身のファイルが閲覧できる機能を持ったサービスは、あまり多くはないかもしれません。 もし、Google Cloud上で、zipファイルをアップロードし自動的に展開してGCSに配置するシステムを作るとしたら、どうやって実現すればよいでしょうか。たとえ100GBのzipファイルでも問題なく展開できるようにするには? そんな難題に挑み、GCSにアップロードされた100GB級のzip/7zファイルを自動的に展開することができるシステムをGoで実装し、プロダクションレベルで実現しました。その技術について解説します。 背景 PLATEAU VIEWの画面 Eukaryaでは、国土交通省が主導しているProjec

                                            GoとGCSで100GBの巨大zipファイルを展開する | Re:Earth Engineering
                                          • DMMのGo言語5daysインターンが最高すぎた! - Qiita

                                            Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 初めて企業のインターンに参加しました。DMMさんのGo言語5daysのインターンです。今回はこのインターンの内容、またGo言語でのAPI開発で学んだTipsを中心に記事を書きます。 温かい目で見てくださると嬉しいです。記事の内容に誤りがあった場合は、いつでもご指摘ください 🙇‍♂️ インターン概要 今回のインターンは8月5日から8月9日の5日間にわたって行われました。最終日はオフィス開催で、4日間はオンライン開催でした。 初日と2日目は主にライブラリの使い方を学び、残りの3日間はハンズオンでAPIのエンドポイントを実装しました。このイ

                                              DMMのGo言語5daysインターンが最高すぎた! - Qiita
                                            • Go でデバッガを自作する

                                              普段開発しているときにデバッガを使用する人は多いと思いますが、その仕組みを理解している方は多くないのではないでしょうか。本書では、Go で簡単なデバッガを自作する方法を解説しています。読者がデバッガの仕組みを理解し、意欲のある方は自作できることを目的としています。

                                                Go でデバッガを自作する
                                              • Go言語での実践を通じてクリーンアーキテクチャの理念と実装を学べる解説書が発売/『Go言語で構築するクリーンアーキテクチャ設計』【Book Watch/ニュース】

                                                  Go言語での実践を通じてクリーンアーキテクチャの理念と実装を学べる解説書が発売/『Go言語で構築するクリーンアーキテクチャ設計』【Book Watch/ニュース】
                                                • 自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる

                                                  はじめに 自動化やツール開発において、通常時に上手くいくのは当たり前です。大切なのは失敗を想定することです。自動化したツールがエラーも出さずに実行結果的にも成功してるので動いていると思っていたら、実は問題が発生していて泣いた経験は、多くの人にあるのではないでしょうか。エラーを出力し、適切に失敗させて、ログに記録することで、問題の早期発見と迅速な対応が可能になります。また、エラーが発生する可能性のある箇所を事前に想定し、適切に処理することで、ツールの信頼性と安定性が向上します。 しかし、エラーハンドリングができていても、それだけでは不十分です。優れた自動化ツールは、環境の変化に柔軟に対応できるようにコードが設計されているべきです。 また、自動化ツールの完成度を高めるには、エラーハンドリングだけでなく、保守性、拡張性、ユーザビリティなども考慮する必要があります。 自動化ツールを開発する際は、常

                                                    自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
                                                  • bpftraceによるGoアプリケーションのトレース|hayajo

                                                    はじめにシステムの状態を的確に捉え、運用に必要なインサイトを継続的に得るための特性は「オブザーバビリティ」と呼ばれます。オブザーバビリティを実現することで、パフォーマンスのモニタリングやトラブルシューティングを効果的に行い、システムの信頼性を高めることができます。 この重要な特性を実現する上で、eBPFやbpftraceは強力なツールとなります。 本記事では、Goアプリケーションにおけるオブザーバビリティを実現するための一つの方法として、bpftraceを用いたトレースの手法を紹介します。 内容が多いため、目次を活用して段階的に読み進めることをお勧めします。 eBPFとbpftraceはじめに、eBPFとbpftraceについて簡単に説明します。 eBPFとはeBPF(Extended Berkeley Packet Filter)はLinuxカーネル内で動作する柔軟なプログラミングフレー

                                                      bpftraceによるGoアプリケーションのトレース|hayajo
                                                    • ECS上にE2Eテスト基盤としてPlaywrightによる実行環境を構築した

                                                      こんにちは、QAの木下です。 この記事では、E2E自動テスト環境の改善に成功した話について、紹介します。 E2E自動テストツール導入時からの変化 現行のE2E自動テストツールの課題 ウェルスナビで実施しているリグレッションテストは、企業が提供するE2E自動テストツールを利用する前提で、テストケースやテストシナリオを作成していました。 そのためテストケースやテストシナリオが、ベンダーロックイン状態となっていて、企業でサービスに対して大きな変更が行われた場合、ウェルスナビでのテスト実施に大きな影響がありました。 もしE2E自動テストツールの利用ができなくなった場合、手動でリグレッションテストを実施する必要があります。 しかし、現在のウェルスナビでのリグレッションテストは、E2E自動テストツールを導入する前と比較して、対象のWebサイトが提携企業の増加とともに大きく増えているため、テスト対象の範

                                                        ECS上にE2Eテスト基盤としてPlaywrightによる実行環境を構築した
                                                      • UbieにおけるGo言語のエラーハンドリング

                                                        背景 Ubieでは以下の記事にあるように、一昨年から新しく始めるプロジェクトにはGoとTypeScriptを積極的に採用しています。私は本来プロダクトセキュリティが主な専門領域なのですが、公私ともに普段からGoでツールやサービスの開発をしているため、社内のGo言語の普及をサポートしたりプロダクト開発に参加したりしています。 Go言語で開発したことがある方はご存知かと思いますが、Goは標準パッケージで提供されているエラーハンドリングは最低限の機能しか提供されていません。これは、CLIツールなどではエラーの内容が簡潔に表せてよいのですが、サーバサイドアプリケーションのようにエラーにまつわる情報を詳細に残してあとから調査に利用する、という場面では不向きです。特に本番環境でしか再現しないようなエラーの場合は、いかに関連情報を残せているかが、問題の解決に大きく影響します。 先日も話題になっていました

                                                          UbieにおけるGo言語のエラーハンドリング