並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 317 件 / 317件

新着順 人気順

Goの検索結果281 - 317 件 / 317件

  • failureでお手軽エラーハンドリング

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

      failureでお手軽エラーハンドリング
    • Enablement Bootcamp for Gopherizing 〜 業務で使えるGoを学ぼう 〜|Knowledge Work Developers blog

      はじめにナレッジワーク Enablement Groupの上田(@tenntenn)です。 私が所属するEnablement Groupでは、「エンジニア職にできる喜びを届ける」というミッションを掲げて、エンジニアイネーブルメント事業を行っています。 具体的には、Goエンジニア向けの_YOUR WORK for Gophers(β)の開発、Enablement WorkshopやEnablement Internshipなどのイベントの企画・運営などを行っています。 本記事ではエンジニアイネーブルメント事業の1つとして行なう予定の「Enablement Bootcamp for Gopherizing 〜業務で使えるGoを学ぼう〜」について、開催に向けて思いを述べます。 なお、エンジニアと表記した場合、ソフトウェアエンジニアを表しています。 エンジニア採用におけるジレンマ企業の事業やミッシ

        Enablement Bootcamp for Gopherizing 〜 業務で使えるGoを学ぼう 〜|Knowledge Work Developers blog
      • 【2024】Go言語おすすめライブラリ15選 - Qiita

        Go言語ライブラリ15選 Golangのおすすめのライブラリを15個(+おまけ1個)紹介します。ライブラリの特徴、インストール方法、使い方を徹底解説していきます。 cmp テストで等価性を調べるために使うライブラリ。reflect.DeepEqualははオブジェクトが完全一致していないと false になるが、cmp を使うとスライスの順番を無視できたり、一部のフィールドを比較対象から除外したり、様々なオプションを追加することができる。また、diffで差分を出すこともできる。 package main import ( "fmt" "reflect" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" ) func main() { slice1 := []int{1, 2, 3} slice2 :=

          【2024】Go言語おすすめライブラリ15選 - Qiita
        • Go言語でdata raceが起きるときに起きる(かもしれない)こと

          はじめに この記事は、プログラミングにおいて特に難しいことの1つである「並行処理」に関する記事です。特に、「並行処理」を行うときに意図せず発生させてしまいやすい「data race」について書きます。data raceがどのような驚くべき問題を引き起こすかを、簡単に動かせるサンプルコードで具体的に見ていきます。 すべてのサンプルコードにplaygroundがついていますから、とりあえず気軽に動かしてみるだけみたいな読み方もできます。むしろそれがおすすめかもしれません。 プログラム言語としてGoを使いますが、内容的にはGoに限らず当てはまると思います。ただし、data raceに関してはプログラム言語ごとに微妙なアプローチの違いがあるので、それについては最後に少しだけ補足します。 ところで、ソフトウェア開発では、data raceを一切発生させない状態を目指すべきだと筆者は考えています。Da

            Go言語でdata raceが起きるときに起きる(かもしれない)こと
          • Go 1.22で追加予定のrange over intと、GOEXPERIMENT入り予定のrange over funcを触ってみる - every Tech Blog

            目次 はじめに range over int range over intとは range over intをGo Playgroundで触ってみる range over intを用いる利点 よくあるfor文が簡潔になる リーディングコストが軽減される range over func range over funcとは range over funcをGo Playgroundで触ってみる func(func()bool) func(func(V)bool) func(func(K, V)bool) range over funcを用いる利点 シンプルで標準的なイテレータを実装できる おわりに Appendix: range over funcを理解するコツ はじめに 株式会社エブリーでDELISH KITCHEN事業のバックエンドエンジニアをしている、GopherのYuki(@YukiB

              Go 1.22で追加予定のrange over intと、GOEXPERIMENT入り予定のrange over funcを触ってみる - every Tech Blog
            • GitHub - mercari/grpc-federation: gRPC Federation generates a gRPC server by writing a custom option in Protocol Buffers

              Imagine a system with a backend of multiple microservices. Instead of the client directly communicating with each microservice, it's more efficient to use a dedicated service (BFF - Backend for Frontend) to aggregate information and send it back to the client. However, as the system grows, determining which team should handle the BFF service becomes unclear. This is where Federated Architecture, l

                GitHub - mercari/grpc-federation: gRPC Federation generates a gRPC server by writing a custom option in Protocol Buffers
              • Supply chain security for Go, Part 3: Shifting left

                The latest news and insights from Google on security and safety on the Internet

                  Supply chain security for Go, Part 3: Shifting left
                • What’s New in Go 1.22: reflect.TypeFor

                  The first release candidate for Go 1.22 is out, which means it’s almost time for the final release and it is time for me to blog about what I worked on this cycle. As usual, my contributions were small, but they were mine, so I’m going to talk about them from a behind-the-scenes perspective. First up is reflect.TypeFor. Here is the entire function: // TypeFor returns the [Type] that represents the

                    What’s New in Go 1.22: reflect.TypeFor
                  • Go Conference mini 2023 Winter in KYOTOに参加しました

                    はじめに 株式会社ナレッジワーク Enablement Groupの上田(tenntenn)です。 2023年12月2日(土)に京都で開催されたGo Conference mini 2023 Winter in KYOTOに参加してきました。 本記事では、登壇および運営のお手伝いをさせて頂いたため、そのレポートを書きます。 また、当日のオフライン参加者のみに出題したクイズの解説も行います。 なお、この活動はナレッジワークのナレッジスポンサー制度を活用して行っているものです。 生成AIによる静的解析ツールの自動生成 筆者は「生成AIによる静的解析ツールの自動生成」というタイトルで20分のセッションを行いました。 このセッションでは、筆者がOSSで開発している静的解析のスケルトンコード生成ツールのskeletonに生成AIを導入してみた話をしました。 Goの静的解析ツールは、analysisパ

                      Go Conference mini 2023 Winter in KYOTOに参加しました
                    • はてな東京オフィスでGo言語の勉強会「hatena.go」を開催します - Hatena Developer Blog

                      Webアプリケーションエンジニアの id:maku693 です。 このたび 2024年1月31日(水)に、はてな東京オフィスにて hatena.go というGoの勉強会を開催します! はてなではMackerelやはてなブログをはじめ、さまざまなサービスでGo言語を利用しています。また、Goサブ会というチーム横断組織で定期的にGoにまつわる知見を交換しています*1。しかし、これまではその知見があまり外部に公開されてきませんでした。 このイベントでは、実際にはてなでGoをプロダクションで運用して得た知見や、サブ会で話題になったトピックをお話しします。Goにまつわる技術的な情報だけでなく、それをどのように社内展開しているかといった情報もお伝えします。 Go言語を普段から使っているエンジニア Webアプリケーションを開発しているエンジニア といった方におすすめです。お気軽にご参加ください! 開催概

                        はてな東京オフィスでGo言語の勉強会「hatena.go」を開催します - Hatena Developer Blog
                      • ローカルでGoのHTTP/3サーバーを立てて接続テストを行う | フューチャー技術ブログ

                        Go 1.21ではcrypto/tlsパッケージでQUIC関連の更新が少しありましたが、QUICそのものは入りませんでした。QUICとかHTTP/3周りをどうするかはいろいろ議論があり、次のことが決定しています。 最終的にはnet/quicが作られる ただし、APIの安定化のために、まずは準標準パッケージとして golang.org/x/net/quicを作っていく github.com/quic-go/quic-goという実装はあるが、それをそのまま取り込むことはしない ということで、もう少ししばらくかかりそうです。 といっても、HTTP/3のリクエストをエンドのアプリケーションサーバーが直接受けることはおそらく稀で、CDNとか、最前面にたつエンドポイントがHTTP/2やHTTP/3をしゃべって、その裏はHTTP/1.1(非TLS)が多いと思いますし、より固くしようとしてもmTLSでHT

                          ローカルでGoのHTTP/3サーバーを立てて接続テストを行う | フューチャー技術ブログ
                        • Goで複雑めなmockをいい感じにする - Nature Engineering Blog

                          Nature エンジニアの的場です。これは第2回 Nature Engineering Blog 祭14日目のエントリです。 表題の通り、外部へのAPIリクエストをそれなりにする機能をテストするときにそのmockをどうやるのがいいかなと自分なりに試行錯誤した結果、今はこうやってますと言う内容を共有しようと思います。 TL;DR テストケース単位で必要十分なレスポンスを返す小さなmockを都度作っていくのが調子が良い。 packageはgockを経て自作のものを使うように。 mockについて mockと言う用語、本エントリでは都合の良い値を返す仮想API、またその設定をすること くらいの意味合いで捉えていただければと思います。 背景 外部APIのmockが必要になるのはバックエンド開発をしていればそれなりに遭遇するケースですが、自分の経験上ではテストスイートの頭などでちょっとしたmockを作

                            Goで複雑めなmockをいい感じにする - Nature Engineering Blog
                          • Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025 | Amazon Web Services

                            AWS Developer Tools Blog Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025 In alignment with our SDKs and Tools Maintenance Policy, AWS SDK for Go (v1) will enter maintenance mode on July 31, 2024 and reach end-of-support on July 31, 2025. Existing applications that use AWS SDK for Go (v1) will continue to function as intended, unless there is a fundamental change to how an

                              Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025 | Amazon Web Services
                            • GoでOpenTelemetryのMetricの計装をしたらメモリが破滅した | ten-snapon.com

                              おわかりだろうか? 追加した実装は下記のようなものだった。 metricExporter, err := otlpmetrichttp.New( ctx, otlpmetrichttp.WithEndpoint(otelAgentAddr), otlpmetrichttp.WithInsecure(), ) if err != nil { return nil, err } meterProvider := metric.NewMeterProvider( metric.WithResource(resource), metric.WithReader( metric.NewPeriodicReader( metricExporter, metric.WithInterval(time.Minute), ), ), ) あとはリクエストのカウントしたりとかそういうシンプルなものです。 co

                                GoでOpenTelemetryのMetricの計装をしたらメモリが破滅した | ten-snapon.com
                              • Go言語で始めるCloudflare Workers

                                https://github.com/syumai/workers の紹介です。

                                  Go言語で始めるCloudflare Workers
                                • GitHub - Code-Hex/synchro: 🕰️ Synchro: Timezone-typesafe date and time framework for Go. 🌟 Star to support our work!

                                  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 - Code-Hex/synchro: 🕰️ Synchro: Timezone-typesafe date and time framework for Go. 🌟 Star to support our work!
                                  • go-redisのtimeoutで気をつけること - Carpe Diem

                                    概要 Go言語でRedisを使う際に選択肢に挙がるのがgo-redisです。 今回はgo-redisでTimeoutを設定する際に注意すべきことをまとめました。 手前味噌ですがBlast Radius of Failureを最小にするためにTimeoutを短くすることを1つのテクニックとしても紹介しています。 W杯全64試合無料生中継で「落ちない」を実現。「小さく壊れる」ために行った負荷・障害・セキュリティ対策とは?【ABEMA DEVELOPER CONFERENCE 2023#3】 | レバテックラボ(レバテックLAB) しかし短すぎるとそれはそれで問題が発生することになるので、その理由を説明します。 環境 redis/go-redis v9.0.5 go-redisのTimeoutの種類 go-redisではtimeoutとして以下があります。 種類 説明 デフォルト値 DialTi

                                      go-redisのtimeoutで気をつけること - Carpe Diem
                                    • Go言語のORMであるGORMをv1からv2へのマイグレーションした話 #LayerXテックアドカレ - LayerX エンジニアブログ

                                      こんにちは。バクラク請求書チームでエンジニアをしている赤羽です。 昨年の12月のLayerXにJOINしたので、今月でちょうど1年経ちました。 この記事は  LayerXテックアドカレ2023  25日目の記事です。 前回はsh_komine が「相互理解の重要性と、促進するためのワークショップのご紹介」を書いてくれました。次回は@yoheiよりポストされる予定なのでご期待ください。 GORMとは GORMはGo言語の人気のあるORM(Object Relational Mapping)ライブラリです。 データベース(テーブル)とGoの構造体のマッピングを簡単に行うことができます。シンプルな構文、多様なデータベースサポート、マイグレーション、トランザクション管理など、豊富な機能が提供されています。 柔軟なクエリビルダーも提供され、開発者に使いやすいORMライブラリとなっています GORMに

                                        Go言語のORMであるGORMをv1からv2へのマイグレーションした話 #LayerXテックアドカレ - LayerX エンジニアブログ
                                      • CQRS/Event Sourcingシステム実装入門

                                        CQRS/Event Sourcingは、非機能要件の側面で注目されがちですが、本来はDDDのための設計パターンの一つです。 今回は言語非依存に実装する方法を共有しつつ、一緒に手を動かして理解できるようするハンズオン用セッションです。 想定条件 コードを書きたい人はPCをご持参ください 事前にソースコードとセットアップ手順を共有します。あかじめセットアップし動作確認可能な状態でご参加ください。 対象言語でFizzBuzz以上のプログラムが書ける開発者向け ※難しいコードは書きません。手本のコードは共有します。 参加者はプログラミング言語としてGoもしくはRustの好きな方を選択できます ※このセッションを受けると他の言語でも実装できるようになります 想定データベースとしてはコマンド側がDynamoDB、クエリ側はMySQL(RDS) 実装ではREST API,GraphQLを使うのでその経

                                          CQRS/Event Sourcingシステム実装入門
                                        • 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
                                          • 【Go】型が特定のinterfaceを満たしているかをコンパイル時に確認させる方法 - Qiita

                                            はじめに こんにちは、kenです。お仕事ではGoを使っています。 先日、Effective Go(Goの公式が出している慣用的なコーディングスタイルと実践を記したドキュメント)を読んでいたら興味深いことが書かれていたので今日はそれについて書こうと思います。 内容は「型が特定のinterfaceを満たしているかをコンパイル時に確認させる方法について」です。 Goのinterfaceについておさらい 本題に入る前にGoのinterfaceについてざっくり説明しておきます。interfaceについてもう知っているよという方はスキップしてください。 Go言語ではinterfaceをメソッドシグネチャの集合として定義します。 そして型がinterfaceを実装する際には、interfaceの定義に使ったメソッドを型に実装するだけでよく、「その型がどのinterfaceを実装しているか」については明示

                                              【Go】型が特定のinterfaceを満たしているかをコンパイル時に確認させる方法 - Qiita
                                            • GoでORMを自作してみる

                                              第56回情報科学若手の会で発表したスライドです 自作したGoのORMのその仕組みについて話します

                                                GoでORMを自作してみる
                                              • Forward Compatibility and Toolchain Management in Go 1.21 - The Go Programming Language

                                                Russ Cox 14 August 2023 Beyond Go 1.21’s expanded commitment to backward compatibility, Go 1.21 also introduces better forward compatibility for Go code, meaning that Go 1.21 and later will take better care not to miscompile code that requires an even newer version of Go. Specifically, the go line in go.mod now specifies a minimum required Go toolchain version, while in previous releases it was a

                                                  Forward Compatibility and Toolchain Management in Go 1.21 - The Go Programming Language
                                                • GoでBOMを考慮したio.Readerを扱う - Qiita

                                                  GoでBOM付きのUTF-8ファイルを扱う必要があったので、その時に知ったテクニックを共有したいと思います。 具体的に言えば、Excelでファイル形式を「CSV UTF-8 (コンマ区切り) (.csv)」として保存した際のCSVファイルを扱った時の話です。 (Excelや少し前のメモ帳などでUTF-8としてファイルを保存すると、BOM付きのUTF-8ファイルになります。1) BOM(Byte Order Mark)とは BOM(Byte Order Mark)というのは、Unicode系の符号化方式(UTF-8やUTF-16など)の場合に、どの符号化方式であるかが分かるように先頭に付ける数バイトのデータのことです。 より詳しい説明についてはWikipediaのバイト順マークのページなどに譲ります。 このBOMというのはテキストデータの一部ではないので、プログラムで処理する時には、BOMと

                                                    GoでBOMを考慮したio.Readerを扱う - Qiita
                                                  • mockgenのコード生成を1回にまとめて高速化するツールbulkmockgenを作った - 私が歌川です

                                                    tl;dr 表題のようなツールを作りました。go install コマンドでただちにインストールできます。 $ go install github.com/utgwkk/bulkmockgen/cmd/bulkmockgen@latest 従来の //go:generate コメントから移行するツールもあります。 $ go install github.com/utgwkk/bulkmockgen/cmd/mockgen-to-bulkmockgen@latest tl;dr 課題感 モックを使った開発と問題 mockgenのコード生成に時間がかかる //go:generate コマンドを1行で書くと人間に優しくない bulkmockgen mockgenから移行する ベンチマーク before (1つずつ生成する) after (まとめて生成する) bulkmockgenの制約 他の方針

                                                      mockgenのコード生成を1回にまとめて高速化するツールbulkmockgenを作った - 私が歌川です
                                                    • DockerでGo言語の開発環境を作る方法 - Qiita

                                                      はじめに バックエンドにGoを使いたいと思ったときに作ったものです。 とりあえず動作する開発環境を作りたいという方におすすめです。 私自身、Dockerを用いたGoの開発環境の構築に苦労しましたので、同じく苦労している方の参考になれば幸いです。 フォルダ構成 フォルダ構成は以下のとおりです。 project ├backend │ └Dockerfile │ └cmd/ │  └─api/ │   └─main.go └docker-compose.yml 具体的な手順 まず、Dockerfileを以下のとおり作成します。 FROM golang:1.19.1-alpine3.16 WORKDIR /app # 最初は以下の部分はコメントアウトする # COPY backend/go.mod . # COPY backend/go.sum . # RUN go mod download #

                                                        DockerでGo言語の開発環境を作る方法 - Qiita
                                                      • ログから学ぶgo build

                                                        https://golangtokyo.connpass.com/event/293636/

                                                          ログから学ぶgo build
                                                        • OpenTelemetry Collectorのメトリクスのレシーバーを自作してみる

                                                          はじめに こんにちは!Google Cloudでオブザーバビリティを担当しているものです!この記事はOpenTelemetry Advent Calender 2023の25日目の記事です。いよいよアドベントカレンダーも最終日!今年も勢いでOpenTelemetry Advent Calendarを立ち上げましたが、去年と違って割と早く全日程予約が埋まって、やはりOpenTelemetryの勢いを感じました! 【宣伝】来年2月にOpenTelemetry meetupの第2回が企画されていますので、今から興味ある人はぜひDiscordサーバーへどうぞ!(#otel-meetup-2024-02 というチャンネルでイベントの話をしています。) で、アドベントカレンダーを立ち上げたときに、とりあえず需要がありそうなコレクターに関する記事を書こうかなとなんとなくで宣言したのですが、何も考えないま

                                                            OpenTelemetry Collectorのメトリクスのレシーバーを自作してみる
                                                          • Go1.22で追加される新しい乱数パッケージmath/rand/v2の紹介

                                                            Goは2009年にリリースされて以来、これまで数多くの標準パッケージが実装されてきましたが、リリースから時間が経つにつれて様々な問題が発見されてきました。それらの問題はプログラムの外部から見える振る舞いを変えないようであれば修正が行われてきましたが、振る舞いを変える場合、後方互換性を維持するために非推奨にして使用しないように勧告したり、既存の実装を残したまま拡張したりしながら問題を回避してきました。 最近では、既存のパッケージを残しつつ、新しくv2パッケージとして提供しようという動きが出てきており、例えば既存の標準パッケージであるencoding/jsonの様々な問題点を解消するために、そのv2パッケージencoding/json/v2が提案されていることをご存じの方も多いと思います。実はGo1.22ではencoding/json/v2よりも一足先に、パッケージmath/randにv2パッ

                                                              Go1.22で追加される新しい乱数パッケージmath/rand/v2の紹介
                                                            • APIの自動テストとモックAPIを駆使してTDD風に開発する

                                                              こんにちは、バックエンドを中心に開発をしている野島と申します。 最近下記の流れで開発をしており、とても開発しやすいと感じているので共有します。 APIの自動テストの作成 モックAPIの作成 APIの処理の実装 TDDは下記の順序で行いますが、それを拡張してAPI開発にあてはめたようなスタイルです。 レッド:動作しない、おそらく最初のうちはコンパイルも通らないテストを1つ書く。 グリーン:そのテストを迅速に動作させる。このステップでは罪を犯してもよい。 リファクタリング:テストを通すために発生した重複をすべて除去する。 テスト駆動開発 p.ⅹより引用。 それでは、内容に入っていきます。 0. 前提 Go言語でAPI開発し、テストツールにはscenarigoを利用するとします。 scenarigo は YAML でテストシナリオを記述するAPIテストツールです。簡潔に記載できるので、どのような

                                                                APIの自動テストとモックAPIを駆使してTDD風に開発する
                                                              • Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ

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

                                                                  Goで実装するAppStoreの返金検知システム | QualiArtsエンジニアブログ
                                                                • Goのテンプレートを静的型チェックする - 詩と創作・思索のひろば

                                                                  Goでちょっとしたウェブアプリケーションを書く際、依存を減らしたい気持ちでGoのhtml/templateを使う場面もないわけではない。とはいえ、HTMLを組み立てるのも最近はReact/TypeScriptに慣れきってしまっているので、実行してみるまでテンプレートが正しいかどうかわからない、なんてのは不安を誘う状況だ。 しかし、テンプレートの解析時に {{template ...}} で呼び出されるテンプレートを指定しないとエラーとなることからもわかるとおり、Goのテンプレートは事前にしっかり解析されているらしい。そしてありがたいことに、Goのテンプレートはそのパーザを別パッケージとして公開してくれている(text/template/parse)。これを使って、Goのテンプレートを静的型チェックするツールを書いた。 GitHub - motemen/go-template-statict

                                                                    Goのテンプレートを静的型チェックする - 詩と創作・思索のひろば
                                                                  • タクシーアプリGO、ドライバー求人サイト「GOジョブ」開始

                                                                      タクシーアプリGO、ドライバー求人サイト「GOジョブ」開始
                                                                    • GoとgRPCを用いたサービスベースアーキテクチャへの移行|ONE CAREER Tech Blog

                                                                      導入こんにちは。ワンキャリアでバックエンドエンジニアをしている田中(@kakke18_perry)です。業務では、ONE CAREER CLOUDの開発に携わっており、リアーキテクチャの一環で、一部の機能をGo+gRPCでリプレイスしています。 本記事では、そのリプレイスにおけるアーキテクチャや技術の選定理由と振り返りについてお話します。 背景現在のワンキャリアではプロダクトごとのモノリシックなアーキテクチャを採用しており、メインとしてRuby on RailsとVue、AWSを使用しています。社内にもナレッジが多く、優れたフレームワークであることから、開発生産性の向上に大きく寄与してきました。 一方で、複数プロダクトを開発運用する中で「認知負荷の増大」という課題が顕在化しつつあります。ONE CAREERはリリースから9年、ONE CAREER CLOUDはリリースから3年経過しており、

                                                                        GoとgRPCを用いたサービスベースアーキテクチャへの移行|ONE CAREER Tech Blog
                                                                      • GitHub Actions上で安定したベンチマーク環境を得る(ただし、相対比較専用) - Copy/Cut/Paste/Hatena

                                                                        現在、実験的にですが少しパフォーマンスを気にしたいパッケージを書いています。 ちなみに、その1つはリバースプロキシです。 github.com 「気にしたいパフォーマンス」というのは以下の2つです。 現在のGoの実装がNGINX(のリバースプロキシ機能)と比べてリクエストあたりの処理時間が小さいか 現在の実装が以前の実装(Pull Requestであればmainブランチ)と比べてリクエストあたりの処理時間が極端に大きくなっていないか GitHubにリポジトリがあるのでCI環境としてはGitHub Actionsがあります。 そこで、上記2点をGitHub Actions上で継続的に計測したいと考えました。 まず、1つ目の「NGINXとの比較」ですが、これはただNGINXを使ったベンチマークと自分の実装を使ったベンチマークをそれぞれ実行することにしました。 NGINXを使ったベンチマークの結

                                                                          GitHub Actions上で安定したベンチマーク環境を得る(ただし、相対比較専用) - Copy/Cut/Paste/Hatena
                                                                        • Go TemplateでCコンパイラを実装する【ELVM】 - Qiita

                                                                          TL; DR ELVM のバックエンドにGo text/template(以下「Go Template」、処理系はGomplate)を追加 C言語(8cc) -> ELVM IR -> Go Template にコンパイル 8ccの8cc実装をコンパイルすればGo Templateで8ccコンパイラがつくれる!(セルフホスト) はじめに ご存じの通り Go Templateはチューリング完全1なので、任意の処理を実装可能です。 といっても brainf*ck だけでは華が無いので、今回は C言語のソースコードをGo Template上で実行します。 過去の ネタ 記事 Go Templateでプログラミングをする方法については過去の記事をご覧ください。 ELVMとは? ELVMは、以下の仕組みで言語を別言語に変換するコンパイラ(トランスパイラ?)2です。名前の通り、Esolang版のLLV

                                                                            Go TemplateでCコンパイラを実装する【ELVM】 - Qiita
                                                                          • Goのテスト結果をtparseで整形する・GitHub ActionsのJob Summaryと組み合わせる - 私が歌川です

                                                                            あらすじ go test が出力するログはシンプルです。シンプルなのはいいんですがテストサマリ的な情報が乏しくて、ログを全部見返さないとどのテストが落ちたのか分からなくなりがちという問題があります。 tparseというツールを使うと、go test を使いつつテストサマリが見れるようになるので紹介します。 tparseについて tparseは、go test の出力をパースして人間に分かりやすいサマリを生成してくれるツールです。 github.com 最も簡単な使い方としては、READMEにあるように go test の出力をそのままパイプする (あるいは一時ファイルを経由する) ことで動作します。 % set -o pipefail && go test ./... -json | tparse -all # あるいは % go test ./... -json > fmt.out %

                                                                              Goのテスト結果をtparseで整形する・GitHub ActionsのJob Summaryと組み合わせる - 私が歌川です