並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 2522件

新着順 人気順

golangの検索結果1 - 40 件 / 2522件

  • Go製バイナリを配布するためのGitHubワークフロー - Plan 9とGo言語のブログ

    前置き 以前、BuildInfoからバージョンを取得する方法を紹介しました。 blog.lufia.org go installで正規の公開されたバージョンをインストールした場合は、以下の出力においてmodの行が示すように、sum.golang.orgでチェックサム等が検証されてバイナリのメタデータに埋め込まれます。 $ go version -m dotsync dotsync: go1.22.2 path github.com/lufia/dotsync mod github.com/lufia/dotsync v0.0.2 h1:JWm92Aw8pSKJ4eHiQZIsE/4rgwk3h5CjEbJ/S30wiOU= build -buildmode=exe build -compiler=gc build -trimpath=true build DefaultGODEBUG=ht

      Go製バイナリを配布するためのGitHubワークフロー - Plan 9とGo言語のブログ
    • 自社サービスのバックエンドを Go から TypeScript へ切り替えるための整理

      切り替える理由 自社の主力製品で利用している技術(WebRTC / WebTransport)がブラウザベースのため TypeScript を利用する Go を採用したのは sqlc が使いたかったという理由 sqlc-gen-typescript が出てきたのでもう Go を使う理由がなくなった 自社サービスチーム全員が Go にまったく興味が無い sqlc 自体は便利 そもそも自社に Go への興味がある人がいない 自社サービスの規模ではボトルネックになるのはデータベースであって言語ではない もしアプリでスケールが必要なときは Rust や Erlang/OTP に切り替えれば良い コネクションプールは PgBouncer を利用すればいい TypeScript からは 1 コネクション 1 接続で問題無い どうせフロントエンドでは TypeScript を書く 自社では React

        自社サービスのバックエンドを Go から TypeScript へ切り替えるための整理
      • Secure Randomness in Go 1.22 - The Go Programming Language

        The Go Blog Secure Randomness in Go 1.22 Russ Cox and Filippo Valsorda 2 May 2024 Computers aren’t random. On the contrary, hardware designers work very hard to make sure computers run every program the same way every time. So when a program does need random numbers, that requires extra effort. Traditionally, computer scientists and programming languages have distinguished between two different ki

          Secure Randomness in Go 1.22 - The Go Programming Language
        • リトライ処理を追加するとバッチが安定することがあることもそこそこあるので「avast/retry-go」を使ってみる - じゃあ、おうちで学べる

          はじめに インフラエンジニアは日々の業務でプログラムを書く機会が多く、その中で処理の実行やHTTPの通信などでリトライ処理を実装する必要があることが少なくありません。リトライ処理を実装する必要は必ずしもなくても、実装することでバッチが安定することがあります。もっと言っておくとリトライ処理を実装することで、一時的なエラーによる処理の失敗を回避し、バッチ処理の安定性が向上する可能性があります。実行基盤によってジョブの再試行の自動化、最大再試行回数を設定するやPod失敗のバックオフポリシーなどとの兼ね合いを考える必要もあると思います。あとはマジでガー不のバグを引き寄せることもあるので注意が必要です。 はじめに シンプルな例 最大リトライ回数の指定 次のリトライまでの待ち時間の設定 特定の例外のみリトライするケース さいごに 今回はGolangには「retry-go」というリトライ処理を簡潔に実装

            リトライ処理を追加するとバッチが安定することがあることもそこそこあるので「avast/retry-go」を使ってみる - じゃあ、おうちで学べる
          • GoプロジェクトへのOpenTelemetry計装でeBPF自動計装を採用しなかった話

            既存GoプロジェクトにOpenTelemetryを計装する機会がありました。eBPFによる自動計装ではなく、手動計装を選んだ理由を説明します。 GoアプリケーションへのOpenTelemetry計装手段 Goにおいては、OpenTelemetryの自動計装が公式で用意されていません。公式サイトにAutomaticの章がないことからわかります。おそらく、ランタイムの制約で実行時にアプリケーションの挙動を変えることが難しいのでしょう。 トレースに十分なスパンを含めるために、現状では以下の2つの計装手段があります。既存のGoアプリケーションに導入する手間や影響範囲をイメージいただくために、概要に絞って解説します。 手動計装 eBPFによる自動計装(Work In Progres) 1. 手動計装 まず、OpenTelemetryのSDKをインストールし、セットアップをします。 func main

              GoプロジェクトへのOpenTelemetry計装でeBPF自動計装を採用しなかった話
            • GoでgRPCのAPIテスト環境を構築する - enechain Tech Blog

              はじめに JCEXで実践しているAPIテストについて 単体テスト 負荷テスト なぜAPIの単体テストを行っているのか API単体テストで使用するパッケージ 実例によるAPI単体テストの環境構築 前提 ステップ1: テストしたいAPIの定義 ステップ2: テストの作成 ステップ3: APIの実装 ステップ4: DBを使ったテスト ステップ5: ヘルパー関数化 ステップ6: テーブル駆動テストに変える ステップ7: フィクスチャを使ったテスト まとめ おわりに はじめに こんにちは、enechainのGXデスクでエンジニアをしている@ejiです。 GXデスクは、『日本気候取引所 - Japan Climate Exchange』 (以下 JCEX) のサービス開発を担当しており、 私は主にBFFとバックエンドのAPIをGoで開発しています。バックエンドのAPIは gRPC を使用しています。

                GoでgRPCのAPIテスト環境を構築する - enechain Tech Blog
              • GitHub - borgo-lang/borgo: Borgo is a statically typed language that compiles to Go.

                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 - borgo-lang/borgo: Borgo is a statically typed language that compiles to Go.
                • GitHub - microsoft/go: The Microsoft build of the Go toolset

                  Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. This repository, microsoft/go, contains the infrastructure Microsoft uses to build Go. The submodule named go contains the Go source code. By default, the submodule's remote URL is the official GitHub mirror of Go, golang/go. The canonical Git repository for Go source code is located at

                    GitHub - microsoft/go: The Microsoft build of the Go toolset
                  • Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ

                    はじめに 株式会社QualiArtsで「IDOLY PRIDE(以降、アイプラ)」のバックエンドエンジニアチームのリーダーをしている末吉です。 主にゲームAPIの開発やインフラの運用、チームメンバーの進捗管理や開発スケジュールの策定等を担当しています。 課金アイテムを取り扱ってるiOSアプリの場合、返金が発生することがあります。こちらはユーザー側でAppStoreに返金の申請を行うなど、様々な要因で発生します。 こちらの返金を検知をするためには、AppStoreでの仕様に合わせたシステムをプロダクト側で構築する必要があります。 そこで、本記事ではタイトルの通りGoを使用したAppStoreの返金検知システムについて紹介します。 前提として、本記事は2024年4月現在の仕様に基づいているため、今後プラットフォーム側の仕様が変更になる可能性がある点については注意してください。 全体の流れ まず

                      Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ
                    • Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50

                      Kyoto.go #50 LT https://kyotogo.connpass.com/event/313309/

                        Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
                      • PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog

                        こんにちは ハタ です。 Mirrativ では 2020年頃から サーバサイドの技術をPerlからGoへのシステム移行 を行っており、2024年現在でもサグラダファミリアのように移行作業は継続しています PerlとGoという2つの環境を同時に運用していますが、 基本的には 新機能は Go で実装 し、 Perlでは積極的に新規実装を行わない というスタイルで進めていました しかし、既存の機能の一部に手を加えたいとなった場合、まだまだ Perl の実装に手を加えることが一定あり、Perl から Go の機能を呼び出したいというニーズが出てきました (配信やギフトといったビジネスの根幹を支えるレガシーな実装においては顕著) そこで PerlXS を利用することで Perl から Go を直接呼び出せるようにできないかと考え検証を進めることにしました Goの -buildmode=c-shar

                          PerlからGoへのシステム移行のアシスト 〜Perl XSとUnix Domain Socketを活用〜 - Mirrativ Tech Blog
                        • Go、Rust、Pythonで実装したAPIサーバーの負荷試験比較 - Qiita

                          はじめに みなさん様々な言語でAPIサーバーを立てて負荷試験を実施したことはありますか。 私自身、業務でPythonのアプリケーションに対して負荷試験を実施した経験があります。 その際にPythonの速度観点の不安定さを目の当たりにしたと同時に、別の言語ではどのような違いが生まれるのだろうか、という疑問を持ちました。 そこで今回は、簡単ではありますがGoとRustとPythonでそれぞれAPIサーバーを立てて負荷試験をしてみます。 負荷試験対象のAPIサーバー 今回は(1) Hello, World!を返すAPI(2) ファイル読み込みAPI(3)1秒待ってから応答するAPIの3つを実装します。 (1)はAPIサーバー自体の応答速度の計測、(2)はメモリを消費する処理が生じた場合のAPIの応答速度の計測、(3)は待ち時間発生している時のAPIの応答速度の計測することが目的です。 (2)につ

                            Go、Rust、Pythonで実装したAPIサーバーの負荷試験比較 - Qiita
                          • 管理画面にWasm入れてみた | CyberAgent Developers Blog

                            こんにちは、CyberFight DX 事業本部で web フロントエンドエンジニアをしている久保です。CyberFight DX 事業本部は複数のエンタメサービスを開発、運用するFANTECH本部に所属しています。今回は、管理画面を対象に WebAssembly ( Wasm ) を導入した事例をご紹介します。 FANTECH 本部では技術ブログでの発信を強化しており、最近では下記のような記事を投稿しています。ぜひご一読ください。 Cloud Run サイドカーで Fastly の Prometheus Metrics を収集して Grafana で可視化する reminder-lintでFeature Flagsの削除漏れを防ぐ マルチリージョンで稼働する内製Feature Flagsの実装 私たちのプロダクト WRESTLE UNIVERSE では、ユーザー対象のキャンペーンを実施す

                              管理画面にWasm入れてみた | CyberAgent Developers Blog
                            • failureでお手軽エラーハンドリング

                              failureでお手軽エラーハンドリング 2024/04/23 Goのエラーハンドリング 最新事情Lunch LT morikuni

                                failureでお手軽エラーハンドリング
                              • GitHub - MHNightCat/superfile: Pretty fancy and modern terminal file manager

                                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 - MHNightCat/superfile: Pretty fancy and modern terminal file manager
                                • ぼくのかんがえたさいきょうのGo HTTPサーバー起動方法

                                  これまで何度か HTTP Server の Graceful Shutdown について記事を書きました。 Go 言語で Graceful Restart をする Go 言語で Graceful Restart をするときに取りこぼしを少なくする Go1.8 の Graceful Shutdown と go-gracedown の対応 最終的に Go 1.8 で Server.Shutdown が導入され、この件は解決を見ました。 しかし、最近「あれ?本当に正しく Server.Shutdown 使えている?」と疑問に思い、少し考えてみました。 というか ↑ の記事もまだ考慮が足りない気がする。 ぼくのかんがえたさいきょうの Go HTTP サーバー起動方法 とりあえず完成形のコード。 package main import ( "context" "log" "net/http" "os

                                  • 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 で動かす
                                    • 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
                                      • Goの構文解析に入門してみる - Qiita

                                        Goのソースコードを処理するツール(コードチェックやデータ生成など)を作ってみたいと思ったので、Goの構文解析に入門してみました。 まえがき ソースコードを何らかのツールにかけて処理したいことはよくあるかと思います。 例えばコードのルールチェックやフォーマットを行うとか、特定のフォーマットで書かれたコード(やコメント)から何らかのデータ(APIドキュメントなど)を自動生成するなどです。 昨今ではこのような処理を行うためのツールが多数提供されており、多くのプロジェクトで利用されています。 しかし、プロジェクトに固有なルールであるとか、独自のデータファイルを生成したいとなったとき、それら既存のツールでは対応できないこともあります。 そのような場合は「自分たちでツールを作る」ということが考えられますが、その際にはどのようにしてソースコードを処理すればよいのでしょうか? 簡単なツールであればちょっ

                                          Goの構文解析に入門してみる - Qiita
                                        • Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ

                                          春の入門祭り2024の1記事目です。 はじめにTIG真野です。 Testcontainers を用いて、単体テスト実行前に docker compose up -d 無しで、PostgreSQLにアクセスする単体テストを行う、入門記事です。 恩恵は次のような開発者体感の向上が個人的にあります。 テストを実行するうえで、別プロセスのサービスを起動しておく必要があるといった前提条件を考えなくても済むため、テストを行うビジネスロジックに集中できるdocker compose up -d 打たないだけだが、テストに必要なコンテナを考慮しなくても済む停止し忘れて、別のリポジトリの開発するときに混乱しなくても済む並列テストしやすくなるので、テストの実行速度が向上するGoにおいて、複数のパッケージを同時にテストするとき、 -p 1 で絞らずに済むTestcontainers とはhttps://test

                                            Testcontainersを用いてテスト実行前の docker compose up を無くし、Goで並列テストする | フューチャー技術ブログ
                                          • UbieにおけるGo言語のエラーハンドリング

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

                                              UbieにおけるGo言語のエラーハンドリング
                                            • Beginners hands-on Guide to Golang | DevelopersIO

                                              Hi, this is Charu from Classmethod. In this blog we will cover the basics, including setting up your Go environment, writing simple programs, understanding Go's type system, and exploring Go routines for concurrency. Let's get started! Setting Up Your Environment The Go programming language can be installed from the official Go website. Follow the installation instructions for your operating syste

                                                Beginners hands-on Guide to Golang | DevelopersIO
                                              • Goのerrorがスタックトレースを含まない理由 - methaneのブログ

                                                Twitterでこんな記事を見かけたので。 zenn.dev ジェネリクスの件もそうですが、Goの言語設計は現実主義なのになにか特別なポリシーによるものだと宗教化されてしまって、ファンには勝手に崇拝されてアンチにはディスられがちだなーと感じます。 Goのエラー処理を改善する実験プロジェクトxerrorsがGo本体のerrorsにマージされた時、 errors.New() はスタックトレースを取得していました。しかしGo 1.13がリリースされる前に削除されました。 削除された理由の1つは、今までの errors.New() のパフォーマンスに依存していたコードの速度が低下しアロケーションが増えることです。 github.com しかし、これが理由だと今まで思ってたのですが、実際にはもう1つより重要な理由がありました。エラーのフォーマットです。エラーに複数のフォーマットを持たせようという提案

                                                  Goのerrorがスタックトレースを含まない理由 - methaneのブログ
                                                • Learning Go in 2024; From Beginner to Senior

                                                  We all learn differently and at different paces. Finding content that is right for us is challenging. Below is my attempt to curate all the great content I have come across over the years into one place to hopefully help folks advance their Golang journey to the next step.

                                                    Learning Go in 2024; From Beginner to Senior
                                                  • Building an interactive shell in Golang

                                                    Go is great for building command-line applications. We built one: Dolt, the world's first version-controlled SQL database. We wrote our own command line parser for handling all of Dolt's subcommands and arguments, but maybe we shouldn't have. There are lots of great ones out there that if we might have used instead if we were starting the project today: spf13/cobra has great support for code gener

                                                      Building an interactive shell in Golang
                                                    • ネットスーパーアプリ GraphQL から REST へ移行始めました - every Tech Blog

                                                      はじめに こんにちは、retail HUBで Software Engineer をしているほんだです。 今回は私が現在着手している事業譲渡されたアプリを社内で持続的なプロダクト開発を行える状態にするリプレイスプロジェクトをどのように行っているか紹介しようと思います。 この記事ではリプレイスを行うにあたってどのようなことを課題に感じてその課題に対してどのような解決策をとったか主にサーバーの実装について説明しています。 ネットスーパーアプリとは 現在弊社ではネットスーパーアプリとして Web アプリとスマホアプリの二つのシステムを提供しています。 Web アプリは販促コンテンツの設定や売り上げの管理・集計を行うことが可能な管理システムと受け取り方法に応じた価格変更や送料変更にも対応し、消費者の柔軟な買い物を実現するお客様向けアプリを 17 の小売り様に、スマホアプリでは Web アプリのお客

                                                        ネットスーパーアプリ GraphQL から REST へ移行始めました - every Tech Blog
                                                      • bpftraceによるGoアプリケーションのトレース|hayajo

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

                                                          bpftraceによるGoアプリケーションのトレース|hayajo
                                                        • 鍵生成には暗号論的に安全な乱数を使おう

                                                          SSHの鍵生成には暗号論的に安全な疑似乱数を使おうという話。 暗号論的に安全ではない疑似乱数がどれだけ危険かというのを、簡単なCTFを解くことで検証してみました。 背景 SSH公開鍵に自分の好きな文字列を入れる、という記事を読みました。 かっこいいSSH鍵が欲しい 例えばこのSSH公開鍵、末尾に私の名前(akiym)が入っています。 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFC90x6FIu8iKzJzvGOYOn2WIrCPTbUYOE+eGi/akiym そんなかっこいいssh鍵が欲しいと思いませんか? かっこいい!真似してみたい! そこまではいいんですが、問題は実装です。 秘密鍵を生成する際の乱数生成には高速化のために Goのmath/randを使っていますが、乱数が用いられるのは公開しない秘密鍵自体であり、このアルゴリズム自体はLagged Fib

                                                          • PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信

                                                            はじめに 本記事では、PostgreSQLのLISTEN/NOTIFY機能とGoを組み合わせた、メッセージをリアルタイム配信するための仕組み・実装を紹介します。 私たちが開発しているMiROHA eConsentでは本記事で紹介する仕組みを利用して、ユーザが見ている文書のページをリアルタイムに知らせる機能をリリースしました。 MiROHA eConsentは、治験業務支援サービス MiROHAのシステムの一部で 、治験の同意取得プロセスをオンラインのみで完結させることができるプロダクトです。医師とCRC[1]・被験者が同じルームに入室し、ビデオ通話を繋ぎながら治験に関する説明から同意署名、署名した文書のダウンロードまで一気通貫で行うことができます。 MiROHAシステムの全体図。医師/CRCと被験者の間で同意取得ができる機能を提供しているのがMiROHA eConsentになります。 プロ

                                                              PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信
                                                            • 内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察

                                                              TL;DR Goのerrorは外部エラーを表現するもので、利用者(ライブラリならアプリケーション開発者、アプリケーションならユーザー)に入力値や環境の不備を伝える目的で存在している 一方で、開発中のソフトウェアが思っていたのと違う挙動を示した場合、その調査にはソフトウェアの特性によって異なるツールを使い分ける必要があり、一筋縄では行かない 両者を分けて考えることで、よりよいエラーハンドリングへの議論が初めて進められると考える 背景 Goのerrorがスタックトレースを含まないことは度々Goの欠点として挙げられます。たしかに、一度作ってどこかにデプロイしたソフトウェアがバグっており、スタックトレースがないせいでその原因調査に手間取ったことは筆者も一度のみならず体験しています。 一方で、(しばしばベテランのプログラマから)エラーはノイズを含むべきではないと主張されることも少なくありません。 2

                                                                内部エラーと外部エラー、それからGoのerrorがスタックトレースを含まない理由の考察
                                                              • Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)

                                                                TL;DR 本記事は Nand to Tetris のアセンブラ実装についての解説です。Nand to Tetrisをやったことがない人でも概要とアセンブラの実装内容を理解できるように記述しています。アセンブラの実装は以下に配置しています。 Nand to Tetris とは Nand to Tetrisとは日本語では『コンピュータシステムの理論と実装』というタイトルの書籍で出版されているコンピュータサイエンスの教材です(原題: Build a Modern Computer from First Principles: From Nand to Tetris)。イスラエルにあるヘブライ大学のコンピュータサイエンス学部の教授であるNoam Nisan氏とShimon Schocken氏によって作成され、CSの教材として世界で高い評価を受けています。Courseraでも著者による動画のコース

                                                                  Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)
                                                                • GitHub - failsafe-go/failsafe-go: Fault tolerance and resilience patterns for Go

                                                                  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 - failsafe-go/failsafe-go: Fault tolerance and resilience patterns for Go
                                                                  • go.modのgoディレクティブにパッチバージョンを含めないと「toolchain not available」と怒られる

                                                                    ※ 後述しますがtoolchainディレクティブはパッチバージョンが省略できないことに注意 問題の深堀り 前提 Go 1.21以降、goコマンドはgo/toolchainディレクティブのバージョン指定を考慮して、よしなにGoツールチェイン[1]をダウンロードし選択するようになりました。 例えば、go 1.22という行はGo 1.21.Pを許しませんし、toolchain go1.22.1という行は、Go 1.22.0というツールチェインでビルドすることを許しません。 ここで以下に注意してください。 goとtoolchainディレクティブの違い goディレクティブはGoバージョンを指定する。例: 1.22.0,1.22,1.22rc1 toolchainディレクティブはGoツールチェイン名を指定する。例: go1.22.0 toolchainが省略された場合、goディレクティブで指定したGo

                                                                      go.modのgoディレクティブにパッチバージョンを含めないと「toolchain not available」と怒られる
                                                                    • One Billion Row Challenge in Golang - From 95s to 1.96s

                                                                      One Billion Row Challenge in Golang - From 95s to 1.96s Renato Pereira Mar 18, 2024 Introduction The One Billion Row Challenge (1BRC) is quite simple: the task is developing a program capable of read a file with 1 billion lines, aggregating the information contained in each line, and print a report with the result. Each line within the file contains a weather station name and a temperature reading

                                                                      • multipart/form-dataの省メモリかつ高速なパーサー「FormStream」

                                                                        ファイルのアップロード時などにmultipart/form-data形式を使用することが多いと思います。 Go言語では標準ライブラリのmime/multipartパッケージを使ってパースができます。 しかし、実はmime/multipartパッケージには落とし穴があり、気を付けないと速度低下やメモリ使用量増加につながります。 この記事では、traPでのサービスでのファイルアップロード速度の改善のためにFormStreamというライブラリを作り、multipart/form-dataを高速かつ省メモリなパースを簡単に実現した話をします。 traP Collection traP CollectionはtraPでサークル内で開発されたゲームの販売・展示を行うゲームランチャーです。 知っている方はSteamをイメージするとわかりやすいのですが、部員が開発したゲームをアップロードするとランチャーを

                                                                          multipart/form-dataの省メモリかつ高速なパーサー「FormStream」
                                                                        • GitHub - panjf2000/gnet: 🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。

                                                                          gnet is an event-driven networking framework that is ultra-fast and lightweight. It is built from scratch by exploiting epoll and kqueue and it can achieve much higher performance with lower memory consumption than Go net in many specific scenarios. gnet and net don't share the same philosophy about network programming. Thus, building network applications with gnet can be significantly different f

                                                                            GitHub - panjf2000/gnet: 🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet 是一个高性能、轻量级、非阻塞的事件驱动 Go 网络框架。
                                                                          • 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
                                                                            • goqite

                                                                              goqite (pronounced Go-queue-ite) is a persistent message queue Go library built on SQLite and inspired by AWS SQS (but much simpler). $ go get github.com/maragudk/goqite See goqite on Github Don't like queues? Get the Skip function to skip the queue for your messages! Example package main import ( "context" "database/sql" "fmt" "log" "time" _ "github.com/mattn/go-sqlite3" "github.com/maragudk/goqi

                                                                              • BigQuery Emulator をアップデートしました - Route54

                                                                                BigQuery Emulator の v0.6.0 をリリースしました。 今回のリリースでは、Recidiviz社 の @ohaibbq さんが多大な貢献をしてくださいました。Recidiviz社ではかなり前から BigQuery Emulator を使ってくれているようで、以前から Issue や DM などでそのことを伝えてくれていましたが、@ohaibbq さんが今Qエミュレータの改善にコミットできるということで、 Recidiviz社側で fork して使っていたものに加えていた patch をたくさん送ってくれました。 かなり多くの改善が入っているので、以前エミュレータを試して動かなかったクエリを再度試す良い機会かなと思っています。 @ohaibbq さんからは、嬉しいことに今後も貢献してくださると言っていただけているので、今後の改善も速いペースで進んでいくと思います。素晴らし

                                                                                  BigQuery Emulator をアップデートしました - Route54
                                                                                • Go 言語だって minify されたい!「mingo」の紹介

                                                                                  HTML/CSS や JavaScript など、 Web フロントエンドにおいては配信時にファイルを minify することが一般的です。 ファイルを minify する = ファイルサイズを小さくすることでネットワークの通信量を削減し、結果として Web ページの読み込み速度を向上させることができます。 <!-- 例えばこれが --> <!DOCTYPE html> <html> <head> <title>Hello World Sample</title> </head> <body> <h1>Hello, World!</h1> <button id="button">Click</button> </body> <script> const button = document.getElementById("button"); button.addEventListener("

                                                                                    Go 言語だって minify されたい!「mingo」の紹介