並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 30 件 / 30件

新着順 人気順

golangの検索結果1 - 30 件 / 30件

  • 「1億台の常時接続」を実現せよ! Nintendo Switchのプッシュ通知システム全面刷新の裏側 (1/3)

    アマゾン ウェブ サービス ジャパンは、2024年6月20日と21日、国内最大の年次イベントである「AWS Summit Japan」をハイブリッドで開催。150を超えるセッションが展開された。 本記事では、ニンテンドーシステムズによるセッション「Nintendo Switch向けプッシュ通知システムのリプレイス事例」をレポートする。登壇したのは、同社 システム開発部の林愛美氏と坂東聖博氏だ。 2017年のNintendo Switchの発売とあわせてリリースされた「プッシュ通知システム」。同社は、長期運用を見据えて、よりクラウドネイティブなシステムへのリプレイスを決定するが、大量のTCP接続を維持するための様々な課題が立ちふさがった。 本セッションでは、AWS FargateやNetwork Load Balancer(NLB)といったAWSのマネージドサービスを用いた、“最大1億台”級

      「1億台の常時接続」を実現せよ! Nintendo Switchのプッシュ通知システム全面刷新の裏側 (1/3)
    • VSCodeで生産性を上げる

      はじめに こんなツイートを見て執筆をしようと思いました。 実際に、VSCodeは機能の追加や拡張機能の開発が活発に行われており、かつUIもユーザーフレンドリーであるため人気のエディターだと思います。VSCodeを使いこなせるのとそうでないのではエンジニアリングの生産性に大きな差が出てしまうと思います。 パンくずの設定 '>' を入力します。 '>' preferences: Open User Settings (JSON)を入力します。 僕のsettings.jsonは以下です。 { "workbench.colorTheme": "GitHub Dark", "terminal.integrated.fontFamily": "MesloLGM Nerd Font", "terminal.integrated.profiles.osx": { "fish": { "path": "/o

        VSCodeで生産性を上げる
      • Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog

        お久しぶりです、ANDPADボードの tomtwinkle です。 この記事はGoの go:linkname 騒動は 6/18に行われた Go Bash で話した内容を要約したものです。 そもそも go:linkname とは何かといえば internal packageやprivate var/funcなど普通はアクセスできないオブジェクトシンボルをエイリアス出来るようCompilerに指示して、アクセス可能にするcompiler directiveです。 go:linkname はprivateな変数へアクセス可能な便利なものでしたが unsafe packageのimportを必須とする通り、せっかく互換性や安全を考慮して作られているGoプログラムを簡単に破壊できる諸刃の剣でした。 詳細は発表スライドを見てください。 go:linkname 禁止騒動 Go 1.23 のリリースまで2

          Go界隈で巻き起こった go:linkname 騒動について - ANDPAD Tech Blog
        • モノレポの開発環境でDocker ComposeをやめてTaskfileを導入した話

          こんにちは、Sally社 CTO の @aitaro です。 マーダーミステリーアプリ「ウズ」とマダミス制作ツール「ウズスタジオ」、マダミス情報サイト「マダミス.jp」を開発しています。 はじめに この記事ではウズの開発当初から利用していた Docker Compose をやめることにした背景についてご紹介します。 Docker Compose は各マシンの開発環境での差異を吸収するというメリットがあり、多くの開発現場で導入されていますが、Docker Composeの抱えているデメリットを勘案して、最終的に一部を残して辞める決断をしました。 Docker Composeの特徴 Docker Composeは、複数のコンテナを定義し、管理するためのツールです。ウズの開発環境では、バックエンド、フロントエンド、データベースなどをそれぞれコンテナ化して、Composeで一括管理していました。こ

            モノレポの開発環境でDocker ComposeをやめてTaskfileを導入した話
          • 【Go】HTTPサーバーは安全に終了させましょう

            はじめに こんにちは。都内でソフトウェアエンジニアをしているtomoriです。 突然ですが、Go言語でHTTPサーバーを実装する際、サーバーの終了処理を適切に実装できている自信はありますか? 自分が開発に携わっているプロダクトでは、ほんの最近まで下記のような不適切な終了処理を行なっていました(話を簡単にするためにここでは panic を使っています)。 err := http.ListenAndServe(":8080", handler) if err != nil { panic(err) } HTTPサーバー実装のサンプルとかでよく見るやつですね。 これだとアプリケーション側で、いわゆる Graceful Shutdown ができておらず、実行環境にて不具合を引き起こす恐れがあります。 というわけで、最近それを修正したのでアウトプットとして記事にします。 Go言語でHTTPサーバーを

              【Go】HTTPサーバーは安全に終了させましょう
            • Node.jsでTypeScriptのコードを実行できるようになるかも - hiroppy's site

              module: add --experimental-strip-types by marco-ippolito · Pull Request #53725 · nodejs/node It is possible to execute TypeScript files by setting the experimental flag --experimental-strip-typ... 💁‍♀️ まだマージされてない点に注意してください --experimental-strip-typesというフラグを実行時に付けることにより、Node.jsでTypeScriptのコードを実行できるようになるPRが出てきました。 背景 TC39でも型注釈の話題(議事録を読むとブラウザとの兼ね合いもあり道のりは長そう)が存在するほどJSのコードにおいて、型は当たり前となっています。 Node.jsと同

                Node.jsでTypeScriptのコードを実行できるようになるかも - hiroppy's site
              • Golang開発者のためのクリーンアーキテクチャ

                はじめに クリーンアーキテクチャは、ソフトウェア設計の分野で非常に重要な概念です。 しかし、その理解は容易ではなく、明確な正解が存在するわけではありません。 多くの人が異なる解釈を持ち、他の設計思想と混在していることもあります。 この記事では、自分なりの視点からクリーンアーキテクチャを解釈し、その整理した内容を共有します。 このアーキテクチャの目的は、システムの各層を独立させ、変更に強く、テストしやすい設計を実現することです。 この記事では、クリーンアーキテクチャの基本概念、Golangでの実装方法、およびディレクトリ構成について詳しく説明します。 なお、この記事では個人的な見解を述べており、必ずしも正解を書いているわけではありません。もし誤りがあれば、ぜひご指摘いただけると幸いです。 クリーンアーキテクチャの基本概念 クリーンアーキテクチャの元となったのは、ロバート・C・マーチン(通称「

                  Golang開発者のためのクリーンアーキテクチャ
                • ミニマムな React Web アプリケーションの技術スタックを大公開! - inSmartBank

                  はじめに こんにちは。サーバーサイドエンジニアの mokuo です。 最近、ミニマムな React アプリを実装する機会がありました。 社内のメンバーにアドバイスをもらいながら、今(2024年前半) React アプリをミニマムに作るならこんな感じかな、という構成になった気がするので、ご紹介したいと思います。 実例の1つとして参考にしていただけますと、幸いです。 はじめに 本文 📝 機能要件 ⚒️ 採用したツール (npm モジュール) 📁 ディレクトリ構成 👨‍💻 プロトタイピングの実施 🍩 おまけ コンポーネント設計について フロントエンドに DDD のエッセンスを取り入れてみたい おわりに 本文 📝 機能要件 社内の限られた CS メンバーのみが利用する、管理画面を開発しました。 バックエンドは Golang で実装される API サーバーで、認証機能以外だと、2つの機能

                    ミニマムな React Web アプリケーションの技術スタックを大公開! - inSmartBank
                  • OpenFeatureと自動生成を活用したフィーチャーフラグの宣言的集約管理

                    CloudNative Days Summer 2024 の登壇資料 https://event.cloudnativedays.jp/cnds2024/talks/2274 --- 近年、トランクベース開発やAB テスト、カナリアリリースへの利用などでフィーチャーフラグを活用するケースが…

                      OpenFeatureと自動生成を活用したフィーチャーフラグの宣言的集約管理
                    • 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
                      • Vercel に Go サーバーを無料でデプロイできるんです!

                        はじめに 個人開発で使っていたのですが Gopher の集いにて Vercel で Go の開発ができることを話したら意外と知られていなかったのでご紹介します。 (貧乏エンジニアリングだと言って似たような記事を以前お見かけしていた場合、それはきっと私の残像が書いたものです。) Vercel とは いわゆる PaaS ( Platform as a Service ) です。 Vercel 社が Next.js を開発していることもあり、静的サイトや SPA ホスティングを簡単にできるサービスの印象が強いですが、 Functions や Postgres などを備えているのでサーバーの構築もできちゃいます。 Next.js のイメージから TypeScript と思われますが Go もデプロイできます。 準備 & version Vercel アカウントを作成します。 無料で使いたいので H

                          Vercel に Go サーバーを無料でデプロイできるんです!
                        • Go1.23で導入予定のイテレータを完全理解する✌️

                          イテレータについて完全理解するぞ!!!! 皆さん、Go1.23で導入予定のイテレータすごい楽しみですよね? 筆者はすごい楽しみです。Go1.18でジェネリクスが導入されて書き方の幅が広がったように、今回のイテレータもGoの書き方の幅を広げる機能になるのではと予想しております! https://github.com/golang/go/issues/61405 を見ると分かるように「add range over int, range over func」の機能はGo1.23のマイルストーンに積まれています。 「range over int」の機能についてはGo1.22で既に実装されています[1] 。「range over func」は来たるGo1.23に実装予定だと思われます。このブログでは、導入予定の型/関数とその使い方を深ぼっていきたいと思います! このブログの中では「range ove

                            Go1.23で導入予定のイテレータを完全理解する✌️
                          • sqlcを新規サービスに採用してみた!

                            golang.tokyo #35 〜カンファレンス 後夜祭!〜 LT会登壇資料 https://golangtokyo.connpass.com/event/317973/

                              sqlcを新規サービスに採用してみた!
                            • gRPC Over HTTP/3

                              Introduction At the time of writing, HTTP/3 is supported by 30.4% of the top 10 million websites. This market penetration is astounding, but it seems like all of this progress has been possible almost exclusively by work on browsers, load balancers and CDN providers. What about the backend? How’s HTTP/3 doing there? The answer, sadly, is not as incredible. Because of this, I have been very interes

                                gRPC Over HTTP/3
                              • feed_squeezerを作った - くりにっき

                                これなに? モチベーション 使った技術 工夫ポイント 配布形式をどうするか GoでGoogleライクな検索クエリで文字列マッチするような関数を作った 取得したフィードを一瞬だけキャッシュする バイナリにviewを同梱する 最近のエコシステムに乗っかる 2024/06/14 13:28 追記:ブコメレス これなに? RSSフィードを任意のキーワードで絞り込んだ結果をさらに別のフィードとして返すためのproxy的なウェブアプリです。 github.com モチベーション 僕はSlackで色々なRSSフィードを購読しています。 YouTubeのチャンネルにもRSSフィードが存在しているのでSlackで購読しています。 例えば 東映アニメーション公式YouTubeチャンネル - YouTube にはプリキュアをはじめとして様々な動画が公開されています。その中でプリキュアに関係する動画だけをSlac

                                  feed_squeezerを作った - くりにっき
                                • 「Python」と「Go」を徹底比較 どちらのプログラミング言語を学ぶべき?

                                  ダウンロードはこちら 世の中には幾つものプログラミング言語が存在する。開発者がこれから学ぼうとするプログラミング言語を選ぶことは簡単ではない。そこで指標になるのが、近年の勢いだ。開発者の間で人気が高まっているプログラミング言語を選ぶことは、トレンドに追従したり、求人市場でより良い職を得たりする際に役立つ可能性がある。 「Python」と「Go」(「Golang」とも)は、どちらも近年人気のプログラミング言語だ。それぞれ独自の文法や仕組みを持っており、適する用途も異なる。本資料は、サンプルコードと共にPythonとGoの違いをさまざまな面から解説する。両者の違いを理解し、適切なプログラミング言語を選ぶための手掛かりを得よう。 中身を読むには、「中身を読む」ボタンを押して無料ブックレットをダウンロードしてください。 連載:「Python」と「Go」の違いを比較

                                    「Python」と「Go」を徹底比較 どちらのプログラミング言語を学ぶべき?
                                  • 【Go】h2c で TLS なしの HTTP/2 サーバーをつくる

                                    * Trying 127.0.0.1:8000... * Connected to localhost (127.0.0.1) port 8000 (#0) * h2h3 [:method: GET] * h2h3 [:path: /] * h2h3 [:scheme: http] * h2h3 [:authority: localhost:8000] * h2h3 [user-agent: curl/7.88.1] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x561bf2f5dce0) > GET / HTTP/2 > Host: localhost:8000 > user-agent: curl/7.88.1 > accept: */* > < HTTP/2 200 < content-type: text/plai

                                      【Go】h2c で TLS なしの HTTP/2 サーバーをつくる
                                    • GitHub - samber/oops: 🔥 Error handling library with context, assertion, stack trace and source fragments

                                      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 - samber/oops: 🔥 Error handling library with context, assertion, stack trace and source fragments
                                      • Why People are Angry over Go 1.23 Iterators

                                        NOTE: This is based on, but completely rewritten, from a Twitter post: https://x.com/TheGingerBill/status/1802645945642799423 TL;DR It makes Go feel too “functional” rather than being an unabashed imperative language. I recently saw a post on Twitter showing the upcoming Go iterator design for Go 1.23 (August 2024). From what I can gather, many people seem to dislike the design. I wanted to give m

                                        • Dockerコンテナを活用したテストツール【Testcontainers】 - RAKUS Developers Blog | ラクス エンジニアブログ

                                          はじめに Testcontainersとは Testcontainersのメリット ハンズオン 環境設定 goプロジェクトの作成 必要なパッケージのインストール テストコードの作成 コンテナリクエストの設定 コンテナの起動 コンテナのホストとポートの取得 結果の確認 まとめ はじめに こんにちは! エンジニア2年目のTKDSです! 前回はDaggerを紹介しました。 今回もコンテナ技術を活用して、テストを容易にするツールについて紹介します。 今回取り上げるのは、統合テストやエンドツーエンドテストのためにDockerコンテナを利用するライブラリ、Testcontainersです。 Testcontainersとは Testcontainersはさまざまなプログラミング言語(Java、Go、Python、Node.jsなど)向けに提供されており、Daggerと同様にテスト用のコンテナを簡単に作

                                            Dockerコンテナを活用したテストツール【Testcontainers】 - RAKUS Developers Blog | ラクス エンジニアブログ
                                          • データベースのER図を最新の状態に保ちつつ、いつでも閲覧できるようにした - SO Technologies 開発者ブログ

                                            こんにちは、CTO室の丸山です。相変わらず某CTOからの無茶振りを捌いております。 今回は、今開発しているSaaSサービスのER図を、なるべく手をかけずに最新状態に保ちながら、いつでも閲覧できるようにするために実践したことをご紹介できればと思います。 前提環境 今回ご紹介する方法は以下の環境下で実現しています。 インフラ: GCP データベース: PostgreSQL データベースのスキーマ管理: sql-migrate CI/CD: Github Actions モチベーション 開発・データ分析を行う上で、データベースのスキーマ構造を俯瞰的に把握するための手段としてER図を書いているのですが、これを最新の状態に保ち続けるのは割と面倒であると常々感じていました。 そこで、Schemaspyを使用してデータベースのスキーマ構造からER図を生成するようにしたものの、以下のような手順をスキーマ構

                                              データベースのER図を最新の状態に保ちつつ、いつでも閲覧できるようにした - SO Technologies 開発者ブログ
                                            • 誰でもMicrosoftの従業員になりすましてメールを送れるバグが発見される

                                              MicrosoftのメールクライアントであるOutlookに電子メールを送信する際に、誰でもMicrosoftの従業員になりすました電子メールを送信できるバグが発見されています。 I want to share my recent case: > I found a vulnerability that allows sending a message from any user@domain > We cannot reproduce it > I send a video with the exploitation, a full PoC > We cannot reproduce it At this point, I decided to stop the communication with Microsoft. pic.twitter.com/mJDoHTn9Xv— slons

                                                誰でもMicrosoftの従業員になりすましてメールを送れるバグが発見される
                                              • Go 関連の個人的おもしろCVE 5選 / my favorite go cve

                                                バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding

                                                  Go 関連の個人的おもしろCVE 5選 / my favorite go cve
                                                • Go言語の学習 その9 (複数の戻り値を返す関数) - Cou氏の徒然日記

                                                  Go言語(Golang)では、複数の戻り値を返すことができるようです。 CとはJavaだと戻り値は1つなので、結構新鮮です。 [calc/devide.go] package calc func Divide(a int, b int) int { return a / b } func Reminder(a int, b int) int { return a % b } func Divide2(a int, b int) (int, int) { return a / b, a % b } Devide2関数を新たに定義して、商と余りの2つのint型の値を返すようにします。 戻り値が複数ある場合は、カッコで囲って、その中に型を羅列すればいいようです。 そして、return文でも、カンマ区切りで羅列すればOK。 (順番は当然意識しないといけないですが…) [main/main.go]

                                                    Go言語の学習 その9 (複数の戻り値を返す関数) - Cou氏の徒然日記
                                                  • グーグル、AIで日本全国の課題を解決 松尾・岩澤研究室と協力

                                                    グーグルは6月19日、「AIで日本のさらなる可能性を~Google for Japan 2024~」と題したイベントを開催した。2027年までに全国47都道府県で生成AIモデルの実装、AI人材を育成し求人と求職のミスマッチによる人材不足の解決、地域社会が抱える課題解決を目指すなど、グーグルの新たな取り組みを発表した。 東京大学松尾・岩澤研究室とパートナーシップ 47都道府県の架台を生成AIで解決 同イベントには東京大学の松尾教授が登壇し、グーグルとのパートナーシップにいたった経緯を説明した。 2023年9月に大規模言語モデルを実際に開発できる人材育成を目的にLLMの講義を実施し、受講生2000人のうち660人が修了した。これはLLMを実際に作ることができる人材が660人誕生したということになる。しかし、実際に開発をするにはGPUが必要になり、そこでグーグルに相談に行ったことが縁となっている

                                                      グーグル、AIで日本全国の課題を解決 松尾・岩澤研究室と協力
                                                    • golangci-lintのModule Plugin Systemが良さそうなので使ってみた

                                                      はじめに この記事では、golangci-lintのv1.57.0でリリースされたModule Plugin Systemについて既存のPlugin機構を交えて解説します。 弊社サービスSNKRDUNKのバックエンドはGoで実装されておりLinterはgolangci-lintを使っています。 Pluginで動かしているLinterもあり、その影響でローカル環境でgolangci-lintを実行するのがやや手間になっており、何か良い方法がないかと調べていたらModule Plugin Systemというものがリリースされていたので、自分自身の理解のためにも今回の記事を書くに至りました。 golangci-lintのPlugin Systemについて まずはじめに、golangci-lintにlinterを追加する方法は以下の2通りあります。 1. public linterとしてgolan

                                                        golangci-lintのModule Plugin Systemが良さそうなので使ってみた
                                                      • go-readabilityをwasmにしてCloudflare Workersで本文抽出する - *iroi*

                                                        先日Cloudflare Workersでウェブページの本文を抽出したくなったことがありました。本文抽出といえば、@mozilla/readabilityが使えそうです。しかし依存に含まれるnwsapiにはFunctionコンストラクタが多用されており*1、Cloudflare Workersでは動作しません。これを修正するのも大変そうです。 そこで、TinyGoを使用してgo-readabilityをwasmにコンパイルしてみることにしました。 TinyGo のドキュメントUsing WASM | TinyGo のままではCloudflare Workersでは動かなかったので、TinyGoに含まれるwasm_exec.jsを少し修正したり*2、 import側もwasmファイルをfetchしているのを変更したり*3すると無事動きました。 動作するコードは https://github.

                                                          go-readabilityをwasmにしてCloudflare Workersで本文抽出する - *iroi*
                                                        • Go言語の学習 その10 (エラーハンドリング) - Cou氏の徒然日記

                                                          Go言語(Golang)では、複数の戻り値を返すことができるのですが、その代わり、Javaのような例外スローというものがないです。 といっても似たような機構はあり、Go言語では、エラーハンドリングの慣習としては、戻り値の最後に errorsパッケージで作ったエラーを返すというもの。 そして上位(呼び出し側)は、その戻り値をチェックするようです。 [calc/devide.go] package calc import "errors" func Divide2(a int, b int) (int, int, error) { if b == 0 { return 0, 0, errors.New("Do not divide by 0.") } return a / b, a % b, nil } 上記のように最後の戻り値として「error」オブジェクトを返すようにします。 その際、 エ

                                                            Go言語の学習 その10 (エラーハンドリング) - Cou氏の徒然日記
                                                          • Go開発者のための遊び場を用意する - Kindで始めるKubernetesの開発環境構築 - じゃあ、おうちで学べる

                                                            はじめに Kind (Kubernetes in Docker) は、ローカル環境でKubernetesクラスタを簡単に構築できるツールです。そう、「簡単に」と言いましたが、「簡単」の定義は人によって大きく異なりますから。ある人にとっては「簡単」でも、他の人には「アラート対応を猫に教えるくらい難しい」かもしれません。 「何回説明しても伝わらない」はなぜ起こるのか? 認知科学が教えるコミュニケーションの本質と解決策 作者:今井むつみ日経BPAmazon さあ、気軽に「簡単な」Kubernetes体験の世界へ飛び込みましょう。途中で迷子になっても、パニックにならないでください。結局のところ、私たちプログラマーは迷子になることが仕事なのですから。 サンプルコード 動いているものをおいておくと記事の安心感と信頼性に繋がるので置いておきます。 github.com Kind公式ドキュメント kind

                                                              Go開発者のための遊び場を用意する - Kindで始めるKubernetesの開発環境構築 - じゃあ、おうちで学べる
                                                            • making regex from scratch in GO

                                                              Making Regex From Scratch in GoThis series is a step by step guide to creating an (almost) fully fledged Regex engine using Go. It explores the basics of Finite State Automata, incrementally creates a parser and compiler for turning strings into state machines, walks through the setup of a visualizer for the FSM node graph. All of the development is structured as a TDD project, and uses modern Go

                                                              1