並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 27 件 / 27件

新着順 人気順

Golangの検索結果1 - 27 件 / 27件

  • 自社サービスのバックエンドを 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 へ切り替えるための整理
    • 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)

      TOPフォーカス趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア。己の欲求に従い続けてきた「Ebitengine」開発者に迫る 2024年5月15日 Odencat株式会社 CTO 星 一(ほし・はじめ) ソフトウェアエンジニア。2009年にドワンゴでキャリアをスタートし、ドワンゴの関連会社やGoogle Japanなどを経て、2023年より現職。趣味では大学時代から2Dゲームエンジン開発に注力し、Google時代の2013年にEbitengineに着手し始める。2015年にVer1.0をリリース。カクヨムで「オレオ」と3文字だけ書かれた小説を手がけ、週間総合ランキング1位を獲得したことがある。 X GitHub Ebitengine公式サイト Odencat

        趣味でつくった2Dゲームエンジンが導いた「幸」あるキャリア 己の欲求に従い続けた「Ebitengine」開発者に迫る レバテックラボ(レバテックLAB)
      • awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店

        最初に3行でまとめ AWS CLIは便利です。しかし起動が遅いので、Goで実装された高速な(ただし機能は少ない)代替品を作りました。awslim といいます リリースバイナリは無駄に大きいので、必要な機能だけを組み込んだビルドを簡単にできるようにしてあります。ビルドして使うのがお勧めです どうぞご利用下さい github.com 以下はこれに至るまでの経緯とか、実装や使い方の話とかです。長いです。 作成の経緯 AWSの各種サービスにアクセスするための AWS CLI は、スクリプトやコマンドラインから処理を自動化するために大変便利なツールです。AWSでサーバーサイドの開発、運用している人であれば、ほぼ全員がお世話になっているんじゃないかと思います。 しかし、AWS CLI (コマンド名aws) には「起動が重い」という問題があるなとずっと思っていました。具体的には、aws --versio

          awslim - Goで実装された高速なAWS CLIの代替品を作った - 酒日記 はてな支店
        • AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6

          kamakura.go #6 でのLT資料です https://kamakurago.connpass.com/event/316438/ https://github.com/fujiwara/aws-sdk-client-go

            AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
          • Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50

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

              Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
            • Domain Event

              目次 概要 この記事の内容 対象読者 注意事項 前提知識 定義 用途 モデリング 不変性 独立性 汎用情報 個別の情報 Versioning 実装 前提 フレームワーク Domain Eventの処理 型定義 interface DomainEventEnvelope Enum Domain Eventの内部通知 staticなEvent Publisherを用意してAggregateがPublisherを呼び出す 実装例 AggregateのCommandの返り値としてDomain Eventを返す 実装例 Aggregateで保持してGetterで取り出す 実装例 永続化と外部通知 要件 永続化 外部通知 まとめ 参考文献 概要 この記事の内容 Domain Eventは非常にシンプルな概念かつ強力なモデリングパターンです。 モデリングにおいては直感的に扱うことが可能ですが、実装をする

                Domain Event
              • GitHub Actions 上での Go の Docker ビルドを高速化する

                どうも GitHub Actions 上で Docker ビルドを行うと時間がかかるなぁと感じていました。 かなり軽量の Go の Web アプリケーションを Docker イメージにしてプッシュするプロセスなのですが、全体で 3 分ほどかかっています。 今回はその速度改善を行ったので、得た知見を記事にしたいと思います。 最終的に、ケース次第では以下のような結果を出すことができました。 ※ケース = go のソースコードのほんの一部を変更してワークフローを実行する。 go.mod など依存関係に変化はない。 go build: 60秒 → 1秒 docker/build-push-action ステップ: 2分30秒 → 30秒 ワークフロー: 3分 → 1分 前提 go build は Dockerfile のステップで行っており、イメージとして以下のような内容になっています。 FROM

                  GitHub Actions 上での Go の Docker ビルドを高速化する
                • 自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる

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

                    自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
                  • マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog

                    この記事では モノタロウがGoとprotobufで進める爆速マイクロサービス開発とそれを支えるプロセス - MonotaRO Tech Blog のうち、主にアーキテクチャにおける詳細について紹介します。 自己紹介 マイクロサービス化について 課題を認識する スコープと技術選定 ゴールイメージを共有する 既存コードから分かった問題点 曖昧なデータ構造 処理フローの混在 アドホックなデータ取得 効果的な改善を行う 処理フローを分割する N+1問題とロジックの独立性を考慮した設計 安全に移行する 実行時のデータを取る 新旧比較による検証 まとめ 自己紹介 藤本 洋一 プラットフォームエンジニアリング部門 CTO-Officeグループ AVLチーム 楽天、SaaSベンチャーを経て、モノタロウに入社してマイクロサービス化にとりくむエンジニアの話 2019年5月入社。商品検索基盤のマイクロサービスと

                      マイクロサービス化するならリビルドで!ビジネスロジックをGoで書き直してわかったこと - MonotaRO Tech Blog
                    • 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
                      • 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の標準の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プロジェクトへのOpenTelemetry計装でeBPF自動計装を採用しなかった話

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

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

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

                                リトライ処理を追加するとバッチが安定することがあることもそこそこあるので「avast/retry-go」を使ってみる - じゃあ、おうちで学べる
                              • スタックトレース始めてみた

                                社内のLT会で使用した資料です。 URL p.8 比較・検討 https://pkg.go.dev/github.com/pkg/errors https://pkg.go.dev/golang.org/x/xerrors https://github.com/juju/errors https://github.com/go-errors/errors https://github.com/morikuni/failure https://github.com/hashicorp/go-multierror https://github.com/rotisserie/eris https://github.com/cockroachdb/errors p.17 参考 https://www.datadoghq.com/ja/product/error-tracking/ https://

                                  スタックトレース始めてみた
                                • Borgo Programming Language

                                  Borgo is a new programming language that compiles to Go. For a high-level overview of the features and instructions on running the compiler locally, check the README. This playground runs the compiler as a wasm binary and then sends the transpiled go output to the official Go playground for execution. use fmt enum NetworkState<T> { Loading, Failed(int), Success(T), } struct Response { title: strin

                                  • GitHub - glanceapp/glance: A self-hosted dashboard that puts all your feeds in one place

                                    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 - glanceapp/glance: A self-hosted dashboard that puts all your feeds in one place
                                    • 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
                                      • 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.
                                        • GoでParserを書く

                                          kamakura.go #6 https://pkg.go.dev/golang.org/x/tools/cmd/goyacc https://github.com/alecthomas/participle https://github.com/karupanerura/gqlparser https://github.com/karupanerura/runetrie

                                            GoでParserを書く
                                          • PGOによるコンパイラ最適化 / Compiler Optimization with PGO

                                            Go1.13以後のエラーハンドリングについて語ろう / Let's talk about error handling after Go 1 13

                                              PGOによるコンパイラ最適化 / Compiler Optimization with PGO
                                            • ピュアP2P分散マイクロブログシステム NostrP2Pを作ってみた - Qiita

                                              こんにちは。 ryo_grid です。 今回はピュアP2P分散マイクロブログシステム NostrP2Pというものを作ってみたのでそれについて書いてみます。 ひとまず開発物のGitHubリポジトリはこちら ryogrid/nostrp2p ryogrid/flustr-for-nosp2p アイキャッチ画像です。 前提知識 Nostr プロトコルについてのざっくりとした理解 こちらの記事などに目を通しておいていただければ十分かと 開発しようと思った経緯 元々NAT透過なオーバレイ上で動作するピュアP2Pなアプリケーションを作ってみたかった DHTベースの分散KVSを作ったことがあったが、NATの壁を超えることはできなかった 上の思いから、ひとまずgossipプロトコルなどで雑にNAT透過なオーバレイを実装できないか考えていた => そのものずばり、どころかよりインテリジェントな実装であるwe

                                                ピュアP2P分散マイクロブログシステム NostrP2Pを作ってみた - Qiita
                                              • 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
                                                • Don’t return err in Go — akavel's digital garden

                                                  Instead, add missing details relevant for debugging. Some people like to complain that Go requires writing tons of “if err != nil { return err }” blocks. Those people don’t understand Go errors. The thing is, what they complain about is actually a completely wrong way of handling errors in Go: return err is an antipattern. Let me show what I mean on some sample code: a helper library for configuri

                                                  • Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ

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

                                                      Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ
                                                    • Abusing Go's infrastructure

                                                      I apologize if this information is already known, but I couldn’t find any references about it and I wanted to understand what was going on and share with you because I think there is some value doing it. In case this wasn’t known, I apologize to the Go team for not talking to them first and jumping the full disclosure gun (I don’t think it’s that severe). I really like Go! Thanks for all your grea

                                                      • Goのライブラリのバグを見つけてから直すまで layerx.go#0

                                                        layerx.go #0 概要 LayerXでは、バクラク事業部で開発・運用しているバクラクをはじめ、ほか事業部が開発しているほとんどのサービスでGo言語を利用しています。また、2023年の夏頃からは「Go 読書会」を社内の有志にて開催しており、組織横断的にGoの知見を交換しています。 本イベント「layerx.go」では、LayerXのGo言語の"実践的な"活用事例を共有するだけでなく、社外の方からの知見も積極的に取り入れる場として位置付けています。LayerXの行動指針"Bet Technology"と"徳"の観点から、本イベントを継続的に開催することでGo言語の裾野を広げていきたいと考えています。 初回のテーマは「Goの情報収集や知見の共有活動 / Goのプロダクトコードのキャッチアップ」です! https://layerx.connpass.com/event/317228/

                                                          Goのライブラリのバグを見つけてから直すまで layerx.go#0
                                                        1