並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 244件

新着順 人気順

fmtの検索結果41 - 80 件 / 244件

  • TerraformとGitHub Actionsで複数のCloud RunをまとめてDevOpsした結果, 開発者体験がいい感じになった話. - Lean Baseball

    ざっくり言うと「TerraformとGitHub ActionsでGoogle Cloudなマイクロサービスを丸っとDeployする」という話です. Infrastructure as Code(IaC)は個人開発(趣味開発)でもやっておけ 開発〜テスト〜デプロイまで一貫性を持たせるCI/CDを設計しよう 個人開発(もしくは小規模システム)でどこまでIaCとCI/CDを作り込むかはあなた次第 なお, それなりに長いブログです&専門用語やクラウドサービスの解説は必要最小限なのでそこはご了承ください. あらすじ 突然ですが, 皆さんはどのリポジトリパターンが好きですか? 「ポリレポ(Polyrepo)」パターン - マイクロサービスを構成するアプリケーションやインフラ資材を意味がある単位*1で分割してリポジトリ化する. 「モノレポ(Monorepo)」パターン - アプリケーションもインフラも

      TerraformとGitHub Actionsで複数のCloud RunをまとめてDevOpsした結果, 開発者体験がいい感じになった話. - Lean Baseball
    • 実践OpenTelemetry - Classi開発者ブログ

      こんにちは・こんばんは・おはようございます、エンジニアのid:aerealです。 この記事では筆者が開発に参加しているサービスの監視フレームワークをOpenTelemetryへ移行した際の体験を紹介します。 OpenTelemetryとは OpenTelemetry is an Observability framework and toolkit designed to create and manage telemetry data such as traces, metrics, and logs. What is OpenTelemetry? サイトの説明にある通り分散トレースやメトリクス、ログなどの指標を扱う監視フレームワークです。 OpenTracingやOpenCensusなどを継承・統合したプロジェクトと言うと合点がいく方も多いのではないでしょうか。 OpenTelemet

        実践OpenTelemetry - Classi開発者ブログ
      • bpftraceによるGoアプリケーションのトレース|hayajo

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

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

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

            自動化するならちゃんとエラーを出せ。想定しろ。不安になれ。 - じゃあ、おうちで学べる
          • サーバレスにおけるRustについて - NTT Communications Engineers' Blog

            この記事は、 NTT Communications Advent Calendar 2023 22日目の記事です。 はじめに こんにちは、イノベーションセンターの鈴ヶ嶺です。普段は、クラウド・ハイブリッドクラウド・エッジデバイスなどを利用したAI/MLシステムに関する業務に従事しています。 本記事は、各クラウドベンダーのサーバレスにおけるプログラミング言語Rustについて調査・比較した結果を紹介します。 まず初めにサーバレスでRustを利用するメリットをエネルギー効率の観点から説明し、次に各クラウドベンダーの関連記事をピックアップします。 さらに、それぞれのクラウドでRustを使ったサーバレスアプリの代表的な作成方法を紹介して比較します。 Rustのエネルギー効率 Rustは、次の公式ページでも宣伝している通りパフォーマンスを強くアピールしています。 Rustは非常に高速でメモリ効率が高く

              サーバレスにおけるRustについて - NTT Communications Engineers' Blog
            • Amazon Connectでお問い合わせ内容をWhisper APIで文字起こしし、ChatGPTで要約して音声出力してみた(一次対応の無人化) | DevelopersIO

              Amazon Connectでお問い合わせ内容をWhisper APIで文字起こしし、ChatGPTで要約して音声出力してみた(一次対応の無人化) はじめに Amazon Connectを使用して、お問い合わせ内容をOpenAIのWhisper APIで文字起こしとChatGPTで要約し、通話中に音声出力する方法をまとめました。 Connectで無人対応の場合、顧客からの発話を聞き取る方法としては、チャットボットサービスであるAmazon Lexもしくは、Kinesis Video Stream(KVS)で音声のストリーミングなどがあります。 Amazon Lexを利用する場合は、1度に15秒以上は聞き取ることができない点や文字起こしにはAmazon Transcribeを利用する制約があります。 今回は、文字起こしにWhisper APIを利用し、ChatGPTで要約した内容をConne

                Amazon Connectでお問い合わせ内容をWhisper APIで文字起こしし、ChatGPTで要約して音声出力してみた(一次対応の無人化) | DevelopersIO
              • 第793回 自作のカーネルモジュールをRustで作る | gihyo.jp

                第791回では基本的なカーネルモジュールの作り方とそれをDKMSに対応させる方法を紹介しました。今回はカーネルの新しい機能のひとつである「Rustでカーネルモジュールを作る方法」を紹介しましょう。 UbuntuカーネルにおけるRustの対応 Linuxカーネルでは、Kernel 6.1からプログラミング言語である「Rust」の機能が取り込まれました。これは「Rust for Linux」の成果で、カーネルの機能をC言語やアセンブラだけでなく、Rustでも書けるようにするというものです。メモリー安全性や強い静的型付けなどの特徴を取り込むことで、カーネルのセキュリティ問題の原因の多くを占めるメモリー関連の不具合に対して、一種の対策になることが期待されます。 あらゆるケースにおいてRustに置き換えられるというわけではありませんが、今後カーネルのコードを読み書きする上でC言語やアセンブラだけでな

                  第793回 自作のカーネルモジュールをRustで作る | gihyo.jp
                • 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
                  • Rust Vs Go: A Hands-On Comparison

                    Matthias Endler - Consultant at Corrode.dev  • 27 September 2023 Oh no, not another 'Is Rust better than Go?' article. Seriously, haven't we all had our fill of these comparisons by now? But before you sigh in exasperation, hear us out! Many comparisons between Go and Rust emphasize their differences in syntax and the initial learning curve. However, ultimately, what matters is the ease of use for

                      Rust Vs Go: A Hands-On Comparison
                    • 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs

                      50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 50 Shades of Go in Other Languages Chinese Translation: blog post, segmentfault (by wuYin) - needs updates Another Chinese Translation: blog post (by Shadowwind LEY) - needs updates Russian Translation: blog post (by Ilia Ozhereliev, Mail.Ru Group Blog) - needs updates Overview Go is a simple and fun language, but, like any o

                      • Amazon Connect + GPT-4 Turboで、予約内容を復唱後、顧客の色々な返答を正しくヒアリングできるか検証 – Amazon Connect アドベントカレンダー 2023 | DevelopersIO

                        Amazon Connect アドベントカレンダー 2023、1日目の記事です! クラスメソッドとギークフィードさん、スカイアーチHRソリューションズ さんの有志が募ってチャレンジしている企画になります。 (アドベントカレンダーのカレンダー一覧はこちら↓) はじめに Amazon Connect + GPT-4 Turbo JSONモードで、予約内容を復唱して確認後、顧客の色々な返答を正しくヒアリングできるか検証しました。 前回、Amazon Connect + GPT-4 Turbo JSONモードで、1回の発話から下記の5つの予約情報をヒアリングするチャットボットを構築しました。 名前 電話番号 予約日 予約時間 人数 予約情報をヒアリング後、Connect側で予約内容を復唱するところまでを前回行いました。 今回、予約内容を復唱後、顧客の返答をヒアリングするチャットボットを構築しました

                          Amazon Connect + GPT-4 Turboで、予約内容を復唱後、顧客の色々な返答を正しくヒアリングできるか検証 – Amazon Connect アドベントカレンダー 2023 | DevelopersIO
                        • Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog

                          Amazon Verified Permissions とは 従来の認可処理 Cedar 言語の使い方 基本的な記述方法 RBAC の例 ABAC の例 golang で動かしてみる 1. ポリシーストアを AWS コンソールから作成する 3. サンプルアプリケーションの実装 最後に こんにちは、2023年5月にバックエンドエンジニアとしてジョインした yamanoi です。 最近は Cloudflare スタックに注目しており、新機能を触ったりアップデートを眺めたりしています。 今回は先日 GA (一般利用可能)になった AWS のサービス Amazon Verified Permissions を、 golang で実装した簡単なサンプルを交えて紹介したいと思います。 Amazon Verified Permissions とは Amazon Verified Permissions

                            Amazon Verified Permissionsとgolangで認可処理を実装してみた - Techtouch Developers Blog
                          • Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割を調べて実装してみた - RAKUS Developers Blog | ラクス エンジニアブログ

                            はじめに Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割 リトライ サーキットブレーカー レートリミット レートリミット、サーキットブレーカー、リトライの実装 サンプルアプリケーションの実装 リトライ、サーキットブレーカー、レートリミットを追加 まとめ 年に1度の技術イベント「RAKUS Tech Conference」を開催します!! はじめに こんにちは!エンジニア2年目のTKDSです。 今回は、レートリミット・サーキットブレーカー・リトライについて調べた内容を紹介し、ライブラリを使ってGoで実装してみます。 Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割 リトライ リクエストが失敗した場合に再試行します。 リトライは、一時的な障害に対して効果を発揮します。 ネットワークの瞬断やサービスの一時的な過負荷など、やり直

                              Webアプリケーションにおけるレートリミット、サーキットブレーカー、リトライの役割を調べて実装してみた - RAKUS Developers Blog | ラクス エンジニアブログ
                            • Go製CLIツールGatling Commanderによる負荷試験実施の自動化 - ZOZO TECH BLOG

                              はじめに こんにちは、ML・データ部MLOpsブロックの岡本です。 MLOpsブロックでは機械学習モデルの実験基盤の作成、機械学習モデルを組み込んだAPI・Batchの開発・運用・保守を行なっています。APIを開発する際には負荷試験を実施し、本番環境で運用する際に求められるスループット・レイテンシを達成できるか確認します。 MLOpsブロックでの従来の負荷試験実施には人手を要する定型的な作業が複数ありました。また頻繁に行う作業でもありトイルとなっていました。 本記事ではMLOpsブロックで抱えていた負荷試験実施の課題と、解決のために開発したOSSのCLIツール、Gatling Commanderについて紹介します。Gatling Commanderが負荷試験の実施におけるトイル削減の一助になれば幸いです。 github.com 目次 はじめに 目次 背景・課題 従来の負荷試験実施の方法 分

                                Go製CLIツールGatling Commanderによる負荷試験実施の自動化 - ZOZO TECH BLOG
                              • Goで実践 アクターモデル vol.1 Hello Actor - ytake blog

                                Hello Actor 細かい機能の解説はあとの回として、 まずはアクターシステムを使ったプログラミングを体験してみましょう。 Goではアクターシステムが商用でも十分利用できるものは、 下記のProto Actorとergoがあります。 github.com github.com Proto.Actorは、Akka.NET のオリジナル作成者 Roger Johansson によって開発されているもので、 Akka/Pekko と基本の部分がある程度似た形になっています。 あくまで似ている程度で、現在のAkka/Pekkoほど強力なツールが揃っているわけではありませんが、 Proto Actorで概念や作り方を覚えると、少ない労力でAkk/Pekkoにも移行などもができるようになります。 細部は異なりますが、概念などはかなり似ていますのですんなり理解できるはずです。 ergoは Erlan

                                  Goで実践 アクターモデル vol.1 Hello Actor - ytake blog
                                • デジタル復調の学習を目的として、ワンセグチューナーで地デジのフルセグTSを抜く - Qiita

                                  お詫びと訂正 タイトルにて「ワンセグチューナー」と表記しておりますが、正しくは「ワンセグチューナーの技術を応用したSDR受信機」となります。お詫びして訂正いたします。 本題 さて、茶番はこのあたりにして(今回は使わなかったと言うだけで、本物の「ワンセグチューナー」でもフルセグを受信できるはずなので、あながちタイトが誤っているというわけではないのですが、茶番をやりたいための茶番でした)。 今回はデジタル変調の復調を学習することを目的としているので、それ以外の部分(例えば受信機のハードウェアや、リードソロモン誤り訂正のような情報理論的分野)には触れません。また、限定受信を目的としたスクランブルの解除や映像の復号にも一切触れません。一方で、海外の人が作ったGNU Radioのソースコードをコピペして「受信したよ!」と言っても学習という意味では全く意味がありませんから、ISDB-Tの復調に関しては

                                    デジタル復調の学習を目的として、ワンセグチューナーで地デジのフルセグTSを抜く - Qiita
                                  • 自作protocプラグインで実現するスキーマベースの認可処理 - enechain Tech Blog

                                    はじめに なぜprotobufに認可設定を組み込もうと思ったのか? 前提知識 protobufのプラグインの仕組み protocコマンドのインターフェース 実装 今回のお題 プラグインの開発 拡張プラグインの実行 生成したmapを使った認可処理 最後に はじめに こんにちは、enechainのApplication Platform Deskでエンジニアをしているendoです。 Application Platform Deskは、全プロダクトが横断で抱える課題を解決するチームです。 ※「開発者体験の向上を目指す」という意味ではPlatform Engineeringチームと近い位置づけですが、もう少しアプリケーション開発寄りの領域を担当しています。 私達のチームでは、protobufで自動生成したGolangコードを使ってAPI Endpoint毎にロール単位の認可処理ができる仕組みを構

                                      自作protocプラグインで実現するスキーマベースの認可処理 - enechain Tech Blog
                                    • Why stdout is faster than stderr? - Orhun's Blog

                                      I recently realized stdout is much faster than stderr for Rust. Here are my findings after diving deep into this rabbit hole. I have been using the terminal (i.e. command-line) for most of my day-to-day things for a while now. I was always fascinated by the fact that how quick and convenient the command-line might be and that's why I'm a proponent of using CLI (command-line) or TUI (terminal user

                                        Why stdout is faster than stderr? - Orhun's 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
                                        • つくってまなぶ静的解析のすすめ - LayerX エンジニアブログ

                                          はじめに こんにちは、LayerXの id:convto です。 そしてこれは LayerX アドベントカレンダー (概念) の1日目の記事です。 アドベントカレンダー盛り上げていくぞ〜ということで11月から始まるらしいです。だいぶフライングしてるけど枠もかなり埋まっててすごい。 せっかくなのでお祭り参加したいぞ〜ということで一発目です。よろしくお願いします。 静的解析つくろうとしたきっかけ ちょうどつい最近記事になった下記の輪読会がきっかけでした。 tech.layerx.co.jp このなかで、mapのrange accesssについて、元mapのcopyを取らないから破壊するとループ挙動が壊れる可能性がある旨が言及されていました。 そのときは雑談で「range accessしてるmapに再代入してたら怒る!みたいな考え方で整理したら静的解析できそうっすよね〜」みたいな話をしたんですが

                                            つくってまなぶ静的解析のすすめ - LayerX エンジニアブログ
                                          • Goで関数の引数に、union型っぽくstruct Aもしくはstruct Bのどちらかを受け取れるようにしたい - $shibayu36->blog;

                                            Goで関数の引数に、struct Aという型もしくはstruct Bのどちらかを受け取るということをしたかった。interfaceをちゃんと切ってそれに必要なメソッドをAとBに実装することで実現できることを知った上で、あまり丁寧にそういうことをせずにやりたい。 色々調べると、genericsを使うとできるようだ。 package main import "fmt" type A struct { Field1 int } type B struct { Field2 string } type AorB interface { A | B } func PrintAorB[T AorB](s T) { // Tで受け取ったものをそのままs.(type)とは出来ないので、一旦anyへキャスト switch v := any(s).(type) { case A: fmt.Println(v.

                                              Goで関数の引数に、union型っぽくstruct Aもしくはstruct Bのどちらかを受け取れるようにしたい - $shibayu36->blog;
                                            • 【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog

                                              こんにちは、バックエンドエンジニアの藤井脩紀です。 今回の記事では日付計算に潜む罠についてお話しさせていただきます。 なお今回はGoでの事例をご紹介しますが、原理的には他の言語やライブラリでも同様の事象が発生する可能性があります点にご注意ください。 time.Time.AddDateの注意点 突然ですがここでクイズです。 来月が何月か知りたいので以下のようなコードを書きました。 このコードを実行したのは10月だとします。 結果は何になるでしょう? // AddDateの引数は順に年、月、日でそれらの値を加算したtime.Timeを返してくれます fmt.Printf("%d月\n", time.Now().AddDate(0, 1, 0).Month()) 「え、11月でしょ?」と思う方もいらっしゃるかもしれませんが正確には異なります。 焦らさずに書きますが答えは「11月か12月のどちらか

                                                【Go】time.Time.AddDateの注意点と対策 - Mirrativ Tech Blog
                                              • RustとDDDでAPIサーバーを構築する

                                                はじめに Rust と フレームワーク axum を使って、API サーバーを実装してみました。 対象読者 Rust で API サーバーを実装したい人 Rust で DDD を実装したい人 説明しないこと Rust の基本的な文法 DDD の基本的な考え方 使用クレートの使い方 依存の方向 今回の作成する、アーキテクチャの依存関係は、上記のようになります。 上記の依存関係を頭の片隅に置いて、記事を読み進めていただけると、理解が深まると思います。 インフラストラクチャレイヤーは、アプリケーションレイヤーと依存しないことが重要です。 いざ、実装 仕様を決める 今回は、大学が、サークルを管理するシステムを作ることにしました。 メンバーを追加できる 4 年生は、追加できない メンバーを削除できる オーナーは削除できない 4 年生は、卒業する サークルは最低 3 人以上でないと、活動できない サー

                                                  RustとDDDでAPIサーバーを構築する
                                                • Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog

                                                  SRE チームの市川恭佑です。 先日、CloudNative Days Tokyo 2023 のプロポーザルを提出したのですが、残念ながら採択に至らなかったので、今回は宇宙最速の(?)供養エントリになります。 シェア・投票など、ご応援をくださった皆様にはこの場でお礼を申し上げます。ありがとうございました。 event.cloudnativedays.jp 背景とか、経緯とか 筆者は、カヤックの SRE チームにちょうど2年ほど在籍しています。とは言っても半年ぐらいは学生アルバイトだったので、正社員としては1年半ほどです。カヤックに入る前も、いくつかの会社で IT エンジニアとしてインターンやアルバイトをしていました。 という訳で、何だかんだ仕事で使うプログラムを書き始めてトータル4年半ほどになりますが、そのうち3年半ほどは全て Amazon Web Services(AWS)でホストされる

                                                    Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog
                                                  • freeeカードチームの開発(Go)から得た学びベスト5 - freee Developers Hub

                                                    この記事はfreeeアドベントカレンダー2023の19日目の記事です。 こんにちは!freeeカードチームのmattsunです。freeeカードUnlimitedの開発運用をしています。私は1年前にfreeeに入社しfreeeカードチームに所属しています。これまでの自分のエンジニアとしてのキャリア(10年強)を通してみても、今のチームではPRレビューやリファクタなどからの学びが多いなぁと感じます。個人的に学びがあったことやチームとしての知見が深まったもののうち、ベスト5(私の主観)をまとめます。 freeeカードシステムは、フロントエンド(TS,React)・BFF(RoR)・Backend(Go)で構成されており、Goでの開発比率が多いことから、本記事はGoのコードに関する言及が多いです。freee社全体をみるとRailsで開発されたシステムも多いですが、Goで開発しているサービスもある

                                                      freeeカードチームの開発(Go)から得た学びベスト5 - freee Developers Hub
                                                    • 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
                                                      • Go1.22 リリース連載 HTTPルーティングの強化 | フューチャー技術ブログ

                                                        はじめにGo1.22リリース連載 の5本目です。 本記事ではGoの標準ライブラリである net/http の ServeMux におけるルーティング周りの強化について取り上げます。 関連する Release Note と Issue はこちらを参照してください。 https://tip.golang.org/doc/go1.22#enhanced_routing_patterns https://github.com/golang/go/issues/61410 変更点HTTPメソッドの指定が可能にServeMux.Handle や ServeMux.HandleFunc を使用してハンドラを登録する際に GET /xxx のようにHTTPメソッド指定して、ハンドラを呼び分けることができるようになりました。 mux := http.NewServeMux() // GETを指定したハンドラ

                                                          Go1.22 リリース連載 HTTPルーティングの強化 | フューチャー技術ブログ
                                                        • Fixing For Loops in Go 1.22 - The Go Programming Language

                                                          David Chase and Russ Cox 19 September 2023 Go 1.21 includes a preview of a change to for loop scoping that we plan to ship in Go 1.22, removing one of the most common Go mistakes. The Problem If you’ve written any amount of Go code, you’ve probably made the mistake of keeping a reference to a loop variable past the end of its iteration, at which point it takes on a new value that you didn’t want.

                                                            Fixing For Loops in Go 1.22 - The Go Programming Language
                                                          • Goで複数の引数を取る関数やメソッドをどう書くのがいいのか - ぱいぱいにっき

                                                            普段Go書いているときにそこまで気にしてなかったが、ふと気になったので色々パターンを挙げてみる。なおこの記事には「答え」が書かれてないので、みなさんの意見を聞かせてください。 複数の引数を取るパターン一覧 そのまま引数を羅列する 複数の引数をまとめたstructを取る Functional Options Pattern そのまま引数を羅列する 例えばHTTPリクエストを行うような関数があったとして、 func Request(ctx context.Context, method http.Method, _url string, query url.Values, formValues url.Values) error { // do something } というシグネチャが考えられる。 実際にnet/http.NewRequsetWithContext は func NewReq

                                                              Goで複数の引数を取る関数やメソッドをどう書くのがいいのか - ぱいぱいにっき
                                                            • 『ソニックアドベンチャーDX』『ソニックアドベンチャー2』Steam版の“おま国”解除へ。日本向け配信開放が2024年の早い時期を目処に進行中 - AUTOMATON

                                                              セガは12月16日、『ソニックアドベンチャーDX』と『ソニックアドベンチャー2』のPC(Steam)版について、2024年の早い時期に日本国内向けに開放し、配信開始する予定であることを明らかにした。現在両作品は、日本からは購入できないいわゆる“おま国(「ゲーム自体は販売中であるが、お前の国(リージョン)向けには売らない」という旨の意味をもつネットスラング)”の状態にある。 ❗️#ソニックFMT in大阪にて新情報発表②❗️ 日本国内におけるSteam版 『ソニックアドベンチャーDX』 『ソニックアドベンチャー2』 上記タイトルの配信開放を進行中🎮 2024年の早い時期の開放を目指しております。 どうか今しばらくお待ち下さい🙇‍♂️🙇‍♀️#ソニック #ソニかつ pic.twitter.com/1AESMUDPyh — ソニック・ザ・ヘッジホッグ【公式】 (@SonicOfficial

                                                                『ソニックアドベンチャーDX』『ソニックアドベンチャー2』Steam版の“おま国”解除へ。日本向け配信開放が2024年の早い時期を目処に進行中 - AUTOMATON
                                                              • AWS Systems Manager Parameter Storeを便利に使うツール "ssmwrap" がv2になりました - KAYAC engineers' blog

                                                                SREチームの長田です。 今回はssmwrapという拙作CLIツールのはなしです。 ssmwrapとは ssmwrapは、AWS Systems Manager Parameter Store(以下SSM Params)から値を取得し、 環境変数またはファイルに出力した上でコマンドを実行するツールです。 secret類をSSM Paramsに保存している場合、アプリケーション実行時にSSM Paramsから必要な値を取得することになります。 AWSのサービスにアクセスするという操作は、それなりに手間がかかるものですが、 ssmwrapを使えば環境変数とファイルというより簡便な入出力インターフェイスを通してSSM Paramsの値を参照できます。 実装が簡潔になるだけでなく、アプリケーションからのAWS APIへの依存を排除することにもなります。 # SSM Paramsにこんな値が保存され

                                                                  AWS Systems Manager Parameter Storeを便利に使うツール "ssmwrap" がv2になりました - KAYAC engineers' blog
                                                                • Synchro - タイムゾーン型安全な Go ライブラリを開発している

                                                                  synchro と呼ばれる Go でもタイムゾーンを含めて型比較できるようになるライブラリを開発し始めました。スターください。 こんな感じで使えます。 package main import ( "fmt" "time" "github.com/Code-Hex/synchro" "github.com/Code-Hex/synchro/tz" ) func main() { utcNow := synchro.Now[tz.UTC]() jstNow := synchro.Now[tz.AsiaTokyo]() fmt.Println(utcNow) fmt.Println(jstNow) // Output: // 2023-09-02 14:00:00 +0000 UTC // 2023-09-02 23:00:00 +0900 JST fmt.Println("------") d

                                                                    Synchro - タイムゾーン型安全な Go ライブラリを開発している
                                                                  • 【Go 1.21】ループ変数が共有される問題への対策(プレビュー)が公開されました - Money Forward Developers Blog

                                                                    こんにちは、マネーフォワードエックスカンパニー サービス開発部 バンキングアプリ開発グループの仲川です。 先日Go 1.21がリリースされましたが、以前から多くのGoエンジニアを悩ませてきた「ループ変数が共有される問題」への対策が実験的に盛り込まれたので、今回はそちらについて紹介したいと思います。 Go 1.21 is released! - The Go Programming Language ※本記事で紹介するコードの実行結果は全てGo 1.21での挙動です ※本記事は主に以下ドキュメントの情報を基に作成しています(8月15日時点) golang/go/wiki/LoopvarExperiment golang/go/issues/60078 go.dev/doc/faq#closures_and_goroutines TL;DR Goのfor文で宣言されるループ変数は、ループ(イテ

                                                                      【Go 1.21】ループ変数が共有される問題への対策(プレビュー)が公開されました - Money Forward Developers Blog
                                                                    • Style Guide - Configuration Language | Terraform | HashiCorp Developer

                                                                      The flexibility of Terraform's configuration language gives you many options to choose from as you write your code, structure your directories, and test your configuration. While some design decisions depend on your organization's needs or preferences, there are some common patterns that we suggest you adopt. Adopting and adhering to a style guide keeps your Terraform code legible, scalable, and m

                                                                        Style Guide - Configuration Language | Terraform | HashiCorp Developer
                                                                      • シャドーイングの注意点 - RAKUS Developers Blog | ラクス エンジニアブログ

                                                                        はじめに 変数のシャドーイングとは? エラーハンドリングの例 シャドーイングとエラーハンドリングの例 問題点と対策 まとめ 年に1度の技術イベント「RAKUS Tech Conference」を開催します!! はじめに エンジニア2年目のTKDSです! 今回は変数のシャドーイングについて調べました。 Goを用いて、シャドーイングに関する例を2つほど示します。 変数のシャドーイングとは? シャドーイングは、内部スコープで宣言された変数が外部スコープの同名変数を内部スコープ内では上書きしてしまうことです。 サンプルコードを以下に示します。 Go Python JavaScript いずれの言語でも変数が再宣言されて上書きされていることがわかります。 今回は、Goについて扱っていきます。 シャドーイングが関わるケースの一例として、エラーハンドリングの例を示します。 エラーハンドリングの例 Goの

                                                                          シャドーイングの注意点 - RAKUS Developers Blog | ラクス エンジニアブログ
                                                                        • zeno.zsh を活用して Node.js パッケージマネージャの違いを吸収する - エムスリーテックブログ

                                                                          永山です。 神話の時代、天を衝く巨塔を築こうとした高慢な人類の Node.js パッケージマネージャは様々に引き裂かれたと言われています。 現代においてよく使用されているものだけでも npm, Yarn, pnpm などがあり、エムスリー社内でもプロジェクトによってどのパッケージマネージャが採用されているかはバラバラです。 それぞれのパッケージマネージャは異なるコマンドラインインタフェース (npm / yarn / pnpm) によって操作する必要があるため、作業するプロジェクトによって適切なコマンドを呼び分けなければなりません。めんどくさ。 本記事では Zsh プラグインである zeno.zsh を用いてこれらパッケージマネージャの差異を吸収することで快適な開発体験を実現する方法、およびその過程で模索した zeno.zsh の設定ファイルの TypeScript 化の試みについて紹介し

                                                                            zeno.zsh を活用して Node.js パッケージマネージャの違いを吸収する - エムスリーテックブログ
                                                                          • Backward Compatibility, Go 1.21, and Go 2 - The Go Programming Language

                                                                            Russ Cox 14 August 2023 Go 1.21 includes new features to improve compatibility. Before you stop reading, I know that sounds boring. But boring can be good. Back in the early days of Go 1, Go was exciting and full of surprises. Each week we cut a new snapshot release and everyone got to roll the dice to see what we’d changed and how their programs would break. We released Go 1 and its compatibility

                                                                              Backward Compatibility, Go 1.21, and Go 2 - The Go Programming Language
                                                                            • ZLogger v2の新ストラクチャードロギング体験 - hadashiA

                                                                              ゆで卵を食べるときは塩をかけるのと同じように、サーバを書くときはストラクチャードロギングをするのが当たり前といった状況になった昨今。世界のロガーたちはキー/バリュー形式の構造化データを出力すべく、その用途に特化したインターフェイスを獲得するに至っている。 一方、プログラミング言語やフレームワークによってはこの辺のサポートはけっこうまちまちで、人によってストラクチャードロギングに対しての理解度やロガーへの要求水準はけっこう違っているようである。 私がサーバを書く仕事を始めた頃なんかは、使っていたウェッブフレームワークワークはさも当然のように人間にとって読みやすく整形された文字列をログに吐いた。ほかにオプションはなかった。「ふーん。そんなもんかな」と思いながら、ログを上から下に読んでいたが、しかしこれは一件のログレコードが改行されまくっていたので、キーワードでgrepするだけで当然のようにぶっ

                                                                                ZLogger v2の新ストラクチャードロギング体験 - hadashiA
                                                                              • アプリケーションの動作を担保するテストをどう書くか - JX通信社エンジニアブログ

                                                                                こんにちは。kimihiro_nです。 今回はアプリケーションの動作を保証するために不可欠なテストコードの書き方についてです。 特に外部依存要素のテストに焦点を当ててみていきたいと思います。 外部に依存するテストコード 皆さんはアプリケーションのテストコードを書いていますか? 内部的な状態を持たず、入力と出力が常に変化しない関数であれば、テストコードを書くのは比較的容易です。実際に関数を呼び出ししてその出力と期待値が一致しているかをみればテストすることができます。 しかし実際にアプリケーションを開発する場合、データベースへの接続だったり外部へのAPI呼び出しだったりといった外部の状態に依存した処理が含まれることが多いです。このような場合、素直にテストを書くのが難しいです。 多くの場合モックを利用して実際のデータベース呼び出しを置き換えたり、テスト用のリソースをdockerなどで構築してダミ

                                                                                  アプリケーションの動作を担保するテストをどう書くか - JX通信社エンジニアブログ
                                                                                • Go言語ビギナーのCREが、Mackerelの途切れ監視プラグインを開発して正式リリースした話 - Hatena Developer Blog

                                                                                  こんにちは、Mackerel CREの id:kmuto です。 9月25日に、Mackerelのエージェント用チェックプラグイン「check-mackerel-metric」をリリースしました。 github.com このプラグインは、クラウドインテグレーションを利用した場合など一部標準の機能ではできない、ホストメトリックの途切れ監視を実現するものです。たとえばcheck-mackerel-metric -H <hostId> -n "custom.ecs.running_task.batch-cluster.count -w 30 -c 60という指定をしておくと、ホストID <hostId>のメトリックcustom.ecs.running_task.batch-cluster.countについて、現在から30分前までの間に何も投稿されていなければWARNING、60分前までの間に何も

                                                                                    Go言語ビギナーのCREが、Mackerelの途切れ監視プラグインを開発して正式リリースした話 - Hatena Developer Blog