並び順

ブックマーク数

期間指定

  • から
  • まで

601 - 640 件 / 2481件

新着順 人気順

goの検索結果601 - 640 件 / 2481件

  • 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で並列テストする | フューチャー技術ブログ
    • Goで作ったロジックにWebUIをつけてGitHubページに公開する | フューチャー技術ブログ

      ちょっとしたツールをGoで作ってみたのですが、わざわざインストールしなくてもいいようにWebのUIをつけてブラウザで使えるようにしてみました。作ってみたのは以下のツールで、Markdownのリスト形式でざっと下書きしたテーブルの設計をSQLとか、PlantUMLとかMermaid.js形式のERDの図にします。 https://shibukawa.github.io/md2sql/ ウェブフロントエンド部分はNext.jsの静的サイトで、GoはWASMにしてロードして実行しています。WASMを使うのは初めてなのであえて選んでみました。 GoをWASM化するもともとCLIツールは作っておりました。CLIのメインはcmd/md2sql/main.goで作っていました。この中でやっていることは kingpin.v2のオプションパース 指定されたファイルを読み込み(あるいは標準入力) パース 指定

      • フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで

        Magic Moment の @aqlwah です。 2021年10月に入社してから1年ほどの間は、フロントエンドエンジニアとして React や Redux を用いた SPA の開発に主に従事していました。 それが昨年10月に行われたチーム体制再編をきっかけとして、バックエンドの開発にも参画するようになりました。 この記事では、フルスタックエンジニア見習いとなった私が Go をキャッチアップしてバックエンド開発を始めるまでに取り組んだ学習の経緯(ほぼ書評)をご紹介します。 余談ですが、この記事は先日にチーム内で開催した LT 会での発表をブログ向けの文章として書き起こしたものです。 私たち Tech チームでは、不定期で自由参加の LT 会を実施しており、業務内外で得た様々な知見を共有しています。 LT 会についての詳細もいずれこのブログでご紹介できればと思っています。ご期待ください。

          フロントエンドエンジニアが3ヶ月で Go を覚えてバックエンド開発に参画するまで
        • Working with Errors in Go 1.13 - The Go Programming Language

          Damien Neil and Jonathan Amsterdam 17 October 2019 Introduction Go’s treatment of errors as values has served us well over the last decade. Although the standard library’s support for errors has been minimal—just the errors.New and fmt.Errorf functions, which produce errors that contain only a message—the built-in error interface allows Go programmers to add whatever information they desire. All i

            Working with Errors in Go 1.13 - The Go Programming Language
          • Goのtestを理解する in 2019 - My External Storage

            昨年Go1.10時点でのGoのテストについてまとめた。 Goのtestを理解する in 2018 #go まとめ記事を書いた後にリリースされたGo1.11からGo1.13に含まれるテスト関連の変更をまとめる。 TL;DR Go1.10までのテスト関連の機能、基本的な書き方は以下にまとめてある Goのtestを理解する in 2018 #go Goのtestingを理解する in 2018 - Examples編 #go Goのtestingを理解する in 2018 - quickサブパッケージ編 #go Goのtestingを理解する in 2018 - iotestサブパッケージ編 #go Go1.11に含まれるテスト関連の変更は以下の通り go test実行時のgo vetの挙動の修正 -memprofileオプションがデフォルトでアロケートしたメモリを記録するようになった Go1.

              Goのtestを理解する in 2019 - My External Storage
            • Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ

              こんにちは。カミナシ ソフトウェアエンジニアの @aoman です。 つい先日、Goで有名な@tenntennさんがConnpassで募集していたGopher塾#2に参加させていただきました。 tenntenn.connpass.com 大変勉強になりおすすめです!筆者が参加したのは第一回目ですが、二回目三回目と予定されているようなので、有料講義ではありますが気になる方はぜひ参加してみてください!学生さんであれば無料の抽選枠もあります。 その際に紹介されていたコードで、エラーのラップ関数があったのですが、これが「メッチャアタマイイ!!スタイリッシュ!!」と感動しました。そのコードは、Goの公式ページである https://go.dev/ のWebサイトを実装しているリポジトリ pkgsite 内の internal/derrors パッケージで実装されています(GitHubリポジトリはミラ

                Goでスタイリッシュにエラーをラップする方法を学んだ - カミナシ エンジニアブログ
              • 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 ビルドを高速化する
                • The VS Code Go extension joins the Go project - The Go Programming Language

                  The Go team 9 June 2020 When the Go project began, “an overarching goal was that Go do more to help the working programmer by enabling tooling, automating mundane tasks such as code formatting, and removing obstacles to working on large code bases” (Go FAQ). Today, more than a decade later, we continue to be guided by that same goal, especially as it pertains to the programmer’s most critical tool

                    The VS Code Go extension joins the Go project - The Go Programming Language
                  • AWS Lambda のミニマルなデプロイツール lambroll を書いた - 酒日記 はてな支店

                    3行で シンプル/ミニマルな Lambda のデプロイツール lambroll を書いてるよ Lambda API 以外は極力触らないやつです 既存 function の移行も簡単です 開発の経緯 AWS Lambda を管理、デプロイするのに数年来 Apex を使っていましたが、最近更新がないと思っていたら案の定というか、残念ながら No longer maintained となってしまいました。 で、代替を探したのですが… Lambda管理、Apexがお亡くなりになってServerlessかSAMになるんだけど、本当は関数だけdeployできればよくて(IAMとか関連リソースはTerraformでやるんで)、それなら裏でCloudFormationが動くようなのじゃないシンプルなのがいいなあ。作れば作れるけどデプロイツールばっかり書くことになるな…— fujiwara (@fujiwa

                      AWS Lambda のミニマルなデプロイツール lambroll を書いた - 酒日記 はてな支店
                    • 認知的複雑度から見るGo言語のイベントソーシング実装 / Event Sourcing with Go

                      Go Conference mini 2022 Autumn IN SENDAI の登壇資料です。

                        認知的複雑度から見るGo言語のイベントソーシング実装 / Event Sourcing with Go
                      • Git submoduleを使ってマルチリポジトリなMonorepoを管理する

                        LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog こんにちは、LINEフロントエンド開発センターの玉田です。新春を名乗るにはすこし遅いですが、昨年開催した「UIT新春Tech blog」を今年も開催します! 本日から5日間4日間、フロントエンド開発に携わるUITのエンジニアが毎日持ち回りで記事を公開します。ぜひ最後まで見に来てください。 Monorepo フロントエンドにおけるMonorepo toolは、大規模なフロントエンド開発を効率よく管理する手段として、ここ数年で普及が進みました。LernaやNx、npmやyarnのWorkspace機能など、すでに皆さんも使っている例があるかもしれません。 Monorepoを実現するツールはいくつかありますが、どのツールも共通して以

                          Git submoduleを使ってマルチリポジトリなMonorepoを管理する
                        • パスワード付きZIPファイルの有効性検証! Go言語を使ったマルチコア対応パスワードチャレンジプログラム

                          強いパスワードを作成するアプリを作りましたが、実際現代のパソコンでパスワードを突破するのにどの程度の時間がかかるか検証してみました。 手頃で高速でマルチコアに強そうという理由でGo言語を使ってみた結果、1秒間に18万パスワードをトライできる性能となりました。数字7桁のパスワードなら1分、8桁でも遅くとも10分で突破できます。 パスワードトライ中、全CPUフルに使い切ってます! goルーチンを使って、1,2,3,4,5・・・と増やしてみたところ、Core i5の2コア4ハイパースレッディングでは、3が最も速いという結果となりました。ただ、最速でも1スレッドの2倍弱にしかなりませんでした。 そもそも、今回のプログラムは無駄が多いので、パスワードトライに特化してメモリの動的確保を0にすれば、更に10倍くらい速くもできるはず。 GPUをうまく使えば、飛躍的な高速化ができるかも? アルファベット小文

                            パスワード付きZIPファイルの有効性検証! Go言語を使ったマルチコア対応パスワードチャレンジプログラム
                          • メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング

                            こんにちは。メルカリ ハロのSoftware Engineer (Engineering Head)の@napoliです。連載:Mercari Hallo, world! -メルカリ ハロ 開発の裏側-の2回目を担当させていただきます。 2024年3月上旬にメルカリ ハロという新しいサービスが公開されました。メルカリ ハロは好きな時間に最短1時間から働ける「空き時間おしごとアプリ」です。 この記事ではメルカリ ハロを作るにあたり、どういった技術スタックやアーキテクチャを選定したのか、さらにその背景と意思決定をご紹介したいと思います。 この記事で得られること メルカリ ハロで採用されている技術スタックやアーキテクチャの全体像 その意思決定の理由とプロセス これから新規サービスを立ち上げるうえでのヒント 主な技術スタック メルカリ ハロで利用されている主な技術スタックは以下のとおりです。 バッ

                              メルカリ ハロの技術スタックとその選定理由 | メルカリエンジニアリング
                            • 状態機械を合成してデッドロックを検出できる Go 言語パッケージを作ってみました - チェシャ猫の消滅定理

                              はじめに マルチスレッドで動作するプログラムの設計は難しい問題です。個々のスレッドの動作は単純に見えても、複数が並行して動作する場合の動作は組み合わせ論的に複雑になります。また、タイミングに依存する不具合は狙って再現することが難しく、通常の単体テストによる検出にも限界があります。 そんなとき、有効な手法がモデル検査です。システムの取りうる状態をあらかじめ網羅的に探索することで、「実際に動作させた際にごく低い確率で踏むバグ」であっても、動作させることなく設計段階で発見することが可能になります。 ところでちょうど先日、デッドロック発見器を自作するハンズオンに参加する機会がありました。内容は非常にシンプルなモデル検査器を実装するというもので、せっかくなのでそのときの成果物を Go のパッケージとしてまとめたものを以下に公開しました。 github.com 以下、このパッケージで何ができるのかを具

                                状態機械を合成してデッドロックを検出できる Go 言語パッケージを作ってみました - チェシャ猫の消滅定理
                              • Low-level Container Runtime:Runc Internals - 鳩小屋

                                参考 おさらい runc architecture file main.go and command process runc create setupSpec startContainer linuxContainer LinuxFactory createContainer CreateLibcontainerConfig loadFactory factory.Create runner.run newProcess linuxContainer.Start newParentProcess parentProcess.start() runc init nsenter nsexec runc init(After nsexec) linuxStandardInit.Init runc start 低レベルコンテナランタイムruncの内部処理のまとめです。 参考 2021/05現在:

                                  Low-level Container Runtime:Runc Internals - 鳩小屋
                                • Big Sky :: errors.Join が入った。

                                  errors, fmt: add support for wrapping multiple errors · golang/go@4a0a2b3 · GitHub An error which implements an "Unwrap() []error" method wraps all the non-nil errors in the returned ... https://github.com/golang/go/commit/4a0a2b33dfa3c99250efa222439f2c27d6780e4a Go でエラーを扱う際に、複数のエラーを束ねたい事があります。例えば複数のタスクを実行し、1つでもエラーになれば中断するのではなく、一通りタスクを実施し終えた結果を返したい様なニーズです。 package main import ( "errors" "log" "os"

                                    Big Sky :: errors.Join が入った。
                                  • Litestream - Streaming SQLite Replication

                                    Stop building slow, complex, fragile software systems. Safely run your application on a single server. Fully-replicated database with no pain and little cost. Get started Join our Slack No-worry backups Continuously stream SQLite changes to AWS S3, Azure Blob Storage, Google Cloud Storage, SFTP, or NFS. Quickly recover to the point of failure if your server goes down. Use existing apps Runs as a s

                                      Litestream - Streaming SQLite Replication
                                    • Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch

                                      Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch

                                        Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch
                                      • ChromeでHTTP/3サーバーをlocalhostに立てて自己証明書を信頼させてもHTTP/3通信できない + 解決策 - nwtgck / Ryo Ota

                                        HTTP/3をするにはhttpsをする必要があるため証明書を作る。だがそれを信頼させてもHTTP/3ではなくHTTP/1.1にフォールバックした。(HTTP/2にならないのは使ったライブラリの使い方の関係だと思う。)

                                          ChromeでHTTP/3サーバーをlocalhostに立てて自己証明書を信頼させてもHTTP/3通信できない + 解決策 - nwtgck / Ryo Ota
                                        • What you can do with Go

                                          TSKaigi 2024 - 新サービス Progate Path の演習で TypeScript を採用して見えた教材観点からの利点と課題

                                            What you can do with Go
                                          • go getだけでコマンドのバージョンを埋め込む - Plan 9とGo言語のブログ

                                            2022年8月、Go 1.18対応版にアップデートしました 久しぶりのGoネタです。Go 5 Advent Calendar 2020の18日目が空いていたので書きました。 Goで実装されたコマンドでは、ビルドした時点のバージョンを埋め込むため以下のようなMakefileを用意することがあると思います。 .PHONY: build build: go build -ldflags '-X main.Version=$(VERSION)' しかしこの方法では、go installなどMakefileを経由せずビルドしたバイナリには適切なバージョンが埋め込まれない問題があります。個人的な意見では、可能な限りgo getでインストールできる状態を維持した方が良いと思っていますが、バージョンを埋め込むためには他に方法がないので仕方がないと理解していました。しかしGo 1.19現在、runtime/

                                              go getだけでコマンドのバージョンを埋め込む - Plan 9とGo言語のブログ
                                            • Go言語でプログラマーが進化する過程 - Qiita

                                              はじめに 「The Evolution of a Go Programmer」こちらの解説がおもしろかったので、コードごとに解説しようと思います。 下記のコードは階乗計算の異なる実装方法を示しています。 Junior Go programmer 初心者のGoプログラマーが書くことが多い、繰り返し文を用いた階乗計算の実装です。forループを使って階乗を計算し、その結果を返します。 package fac func Factorial(n int) int { res := 1 for i := 1; i <= n; i++ { res *= i } return res }

                                                Go言語でプログラマーが進化する過程 - Qiita
                                              • Goのテーブル駆動テストではテストケースの定義位置を知りたいのでライブラリを書いた - 詩と創作・思索のひろば

                                                Go言語でテストを書く際のベストプラクティスとして、テーブル駆動テスト(Table dirven tests) というのが推奨されている。ようはデータとふるまいを分離しましょうという話で、正直わざわざ名前をつけるようなものでもなかろうという気持ちもないではないが、まあ話がはやくていいね。 けどみんなほんとにこれで満足してるの? と疑問に思うところはある。テストが落ちたときに表示される行番号がテストケースによらず一定で、どのテストが落ちたのかを探すのに一手間かかってしまう。 たとえば以下のコードをテストする際、 package eg import "testing" func TestExample(t *testing.T) { testcases := []struct { name string a, b int sum int }{ {"1+1", 1, 1, 99}, {"2+2"

                                                  Goのテーブル駆動テストではテストケースの定義位置を知りたいのでライブラリを書いた - 詩と創作・思索のひろば
                                                • エキスパートたちのGo言語 一流のコードから応用力を学ぶ

                                                  2022年1月7日紙版発売 2021年12月27日電子版発売 上田拓也,青木太郎,石山将来,伊藤雄貴,生沼一公,鎌田健史,上川慶,狩野達也,五嶋壮晃,杉田寿憲,田村弘,十枝内直樹,主森理,福岡秀一郎,三木英斗,森健太,森國泰平,森本望,山下慶将,渡辺雄也 著 B5変形判/400ページ 定価3,278円(本体2,980円+税10%) ISBN 978-4-297-12519-6 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 本書は,中級以上のGoプログラマーがツール開発・プロダクト開発で必要とされるプログラミングテクニックおよび周辺知識を学ぶための実践集です。 Go

                                                    エキスパートたちのGo言語 一流のコードから応用力を学ぶ
                                                  • 軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog

                                                    こんにちは。業務委託として SRE チームのお手伝いをしている @syucream です。 本記事では Repro にて開発した、 Go 製のカラムナフォーマットへのデータ変換ツール columnify について、開発背景や技術的な取り組みを紹介します。 なぜカラムナフォーマットか? ことのおこり 事業がスケールすると共に扱うログの量が増えることは、喜ばしい反面さまざまな悩みをもたらします。その中でも顕著なものの一つとしてコストの問題が挙げられます。 膨大なログデータはログに対するストレージ料金を増大させると共に、分析や可視化に際してクエリで求められるコンピュートのコストも無視できなくなっていきます。 近頃 Repro でもコンテナのログの管理においてこの問題が顕著になってきました。Repro のバックエンドシステムは ECS 上のコンテナで実現され、ログの閲覧・管理のため外部のログ収集サ

                                                      軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog
                                                    • Go1.14のcontextは何が変わるのか - Qiita

                                                      背景 Go1.14 で context パッケージが少し改善されるのは mattn さんの twitter を見て知った方も多いのではないでしょうか。このツイートされた時期と同じくらいにちょうど社内の勉強会で context パッケージをみんなで読んでおり、皆完全に context を理解したので ある程度実装も把握していました。勉強会では GoDoc と最新 master ブランチのコードが結構違うね、みたいな話もありました。ということで、個人的にとても興味深いツイートでした。Go.1.14のリリースノートには記載されていないのがミソです(2020/02/23現在)。 Go 1.4 のリリースノートにまだ含まれてないけど context の WithCancel と WithTimeout の伝搬がこのコミットで速くなってる。https://t.co/gJiT81uVyj — mattn

                                                        Go1.14のcontextは何が変わるのか - Qiita
                                                      • NHK番組表API叩いてSlackで通知する - Qiita

                                                        はじめに なんか面白そうなAPIとか探していたら、NHK番組表APIなるものを発見しました。 NHKっていったら、紅白、高校野球、朝ドラ、大河、天才テレビくんとか忍たま乱太郎とか、昔からそんなイメージ。 最近だと、キングダムとか進撃の巨人なんかも放送してたり、昔のイメージを覆しはじめてますねー。 ちなみに最近見つけた僕のイチオシは「香川照之の昆虫すごいぜ!」です。 ちなみに、NHKって不定期放送多くないですかね? LIFE!とか、見逃しちゃうんですよね〜。 ウッチャンのコント番組見ると、笑う犬思い出しちゃいますよね〜。ミル姉さんとか。 ということで、今回はLambda使ってサーバーレスな感じで、見たい番組・好きなタレントが出ている番組をSlackに通知する、お手軽アプリケーション作ろうかと思います。 言語はGo(勉強中)です。 環境など AWS Lambda Amazon CloudWat

                                                          NHK番組表API叩いてSlackで通知する - Qiita
                                                        • Why Generics? - The Go Programming Language

                                                          This article is about what it would mean to add generics to Go, and why I think we should do it. I’ll also touch on an update to a possible design for adding generics to Go. Go was released on November 10, 2009. Less than 24 hours later we saw the first comment about generics. (That comment also mentions exceptions, which we added to the language, in the form of panic and recover, in early 2010.)

                                                            Why Generics? - The Go Programming Language
                                                          • 実例に学ぶGoをテスタブルに書く基本 - Pepabo Tech Portal

                                                            技術部プラットフォームグループ SRE の akichan です。 ペパボでは Nyah と呼ばれる OpenStack のプライベートクラウドを運用しており、Load Balancer as a Service(LBaaS) の Octavia が利用可能です。 先日、このLBaaSに対する不正なアクセスからシステムを防御するために、特定のIPアドレス帯からの通信をブロックするソフトウエアをGoで実装しました。その際に、社内のGoの有識者にレビューしてもらいながら、どのようにリファクタリングを行なっていったかを通して、私と同じようなGoの初学者が押さえておくと良さそうなポイントについてお伝えできればと思います。 Amphora Protector 今回開発した Amphora Protector について簡単に解説します。 Octavia の LoadBalancer の実態は、HAPr

                                                              実例に学ぶGoをテスタブルに書く基本 - Pepabo Tech Portal
                                                            • Go製のREST APIにUnitテストを追加した話 - SMARTCAMP Engineer Blog

                                                              こんにちは!スマートキャンプ、エンジニアの中田です。 以前書いた記事の内容に引き続き今回も、現在業務で利用している Go のお話しです! 以前の記事 tech.smartcamp.co.jp 突然ですが、みなさんはテストを書かれてますか? 僕も「書いてます!」と声を張りたいところですが、4 月に新卒入社をしてから開発を始めた Go 製の API には何を隠そうテストがございません...。 開発初期は API へリクエストを手動で送りテストするような運用で特に事なかったのですが、開発が進むにつれコード差分による影響範囲が網羅できなくなったり、またそれにより大きな変更がしづらくなったり、とテストがないことによる悪影響が徐々に出現してきました。 そこで、テストを書こう。と思い立ってはみたものの、Go で API のテストってどう書くんだろう?と困ったのでその辺りを調査しながらサンプルアプリを実装

                                                                Go製のREST APIにUnitテストを追加した話 - SMARTCAMP Engineer Blog
                                                              • OpenTelemetry 良い感じ - 誰かの役に立てばいいブログ

                                                                最初に断っておきますと、OpenTelemetry を良く知っていたり真面目に調査しようという人が読むべき内容はここにはありません。 公式ドキュメントなりをご参照ください。これは最近 OpenTelemetry を使いだした一般人の感想記事です。 さて、いけてる Web 開発者、特にバックエンド開発者の方はオブザーバビリティという言葉は聞き及んでいるかと思います。 なかでもオブザーバビリティ三種の神器と言われている(?)ログ、メトリクス、分散トレーシングをどう実装するか頭を悩ませているかもしれません。 頭を悩ませてきた、あるいは頭を悩ませている理由の一つは、これらを実装するときに特定の実装向けになりがちであったためです。 メトリクスであれば最近は Prometheus 向けに /metrics エンドポイントとして提供する実装が多いといった話です。しかしながら、 あらゆる人が Promet

                                                                  OpenTelemetry 良い感じ - 誰かの役に立てばいいブログ
                                                                • コンテナで動くGoアプリをデバッグする方法

                                                                  初めに 最近開発環境を整備していて、コンテナでGoアプリケーションをリモートでデバッグするのにちょっと面倒だったので、自分のメモも兼ねてやり方を残しておきます。 要件 プロジェクトによりますが、今の現場では主要エディタがVSCodeです。 もちろんVimユーザー(うち一人はぼく)がいるので、ターミナルでもデバッグできるように対応する必要があります。 また、コード変更を反映させるために都度イメージをビルドしてコンテナを再作成するは開発スピードが落ちるため、コンテナ再起動だけで反映されるようにする必要があります。 デバッガのしくみ Goにはdelveというデバッガがあります。 delveはClient-Serverモデルになっていて、次の2つのプロトコルで通信が可能になります。 JSON-RPC DAP JSON-RPCはdelveのCLIに使われています。 DAPはMicrosoftが策定し

                                                                    コンテナで動くGoアプリをデバッグする方法
                                                                  • Let's Create a Simple Load Balancer With Go

                                                                    Load Balancers plays a key role in Web Architecture. They allow distributing load among a set of backends. This makes services more scalable. Also since there are multiple backends configured the service become highly available as load balancer can pick up a working server in case of a failure. After playing with professional Load Balancers like NGINX I tried creating a simple Load Balancer for fu

                                                                      Let's Create a Simple Load Balancer With Go
                                                                    • Python in Visual Studio Code – February 2021 Release - Python

                                                                      We are pleased to announce that the February 2021 release of the Python Extension for Visual Studio Code is now available. You can download the Python extension from the Marketplace, or install it directly from the extension gallery in Visual Studio Code. If you already have the Python extension installed, you can also get the latest update by restarting Visual Studio Code. You can learn more abou

                                                                        Python in Visual Studio Code – February 2021 Release - Python
                                                                      • Wantedly における Go 導入にまつわる技術背景 - Qiita

                                                                        (本記事は Go Conference 2019 Autumn にて無料配布した冊子『WANTEDLY TECHBOOK GoCon Edition vol.2』からの掲載です) 配布した冊子の前半では Go の導入にあたってどのような工夫をしてきたのかを紹介しました。そこに書かれていたように、新しいプログラミング言語を導入するにはそれなりの整備コストがかかります。それではなぜそこまでして Go を導入したのでしょうか。本記事では Go を導入した背景について説明していきたいと思います。 なぜ Go か 技術的・事業的背景 どのプログラミング言語を採用するかや、どのようなアーキテクチャを選定するかというようなことは非常に影響範囲の大きい決断になるため、会社全体の技術的・事業的なコンテキストと切り離しては語れません。そこでまずは Wantedly の技術的・事業的な背景について、この後の話を

                                                                          Wantedly における Go 導入にまつわる技術背景 - Qiita
                                                                        • ガチ調査版::2019年プログラミング言語 求人人気ランキング - Qiita

                                                                          背景 実求人をクロールし、どの言語がどれだけ求人を保有しているか実数を取得し、年収別の求人数から総合ランキングを作成してみました。個人の恣意的な価値観を反映しないよう、エンジニアとしての個人的な主観は可能な限り省いています。(解説のところで少し主観が入っているのでお気をつけください) 調査方法 Web上にある求人サービスから実求人をクローリングし、言語の頻出数から人気言語のランキングを調査しました。 クローリングとは何か クローラーとは、ザックリ言うと、web上でデータを集めてくれるロボットです。webにある色々なサイトを飛び周り、こちらの命令(求めているもの)に該当するページで、データを集めてくれます。集まったデータは、各項目ごとに分別され、それぞれ値が抽出されます。抽出されたものは、何かうまいことやってデータベースに格納するなどします。 初心者でも分かる説明 水泳帽をかぶったロボットが

                                                                            ガチ調査版::2019年プログラミング言語 求人人気ランキング - Qiita
                                                                          • OWASP/Go-SCPを読んでセキュアプログラミングとGoを学ぶ - My External Storage

                                                                            この記事はGo Advent Calendar 2019の4日目の記事になる。 3日目は@ikawahaさんの「Goa v3 のテストをシュッとする]」だった。 本記事ではOpen Web Application Security Project(OWASP)が公開しているGo-SCPリポジトリを紹介する。 Webアプリケーションにはクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)など、様々な脆弱性が潜む可能性がある。 脆弱性対策の書籍としては、体系的に学ぶ 安全なWebアプリケーションの作り方(徳丸本)などが有名だろう。 Go-SCPリポジトリにはWebアプリケーションを実装する際に必要な脆弱性の知識と、Goを使った脆弱性対策の実装方法が含まれている。 https://github.com/OWASP/Go-SCP TL;DR OWASPというWEB

                                                                              OWASP/Go-SCPを読んでセキュアプログラミングとGoを学ぶ - My External Storage
                                                                            • “Flutter”単体で完結できないモバイルアプリ開発 「Go」のエコシステムでiOS・Androidコードの肥大化は防げる

                                                                              Go Conferenceは半年に1回行われるプログラミング言語Goに関するカンファレンスです。永野氏は、クロスプラットフォームなモバイルアプリ開発でのgomobileの活用方法について、サンプルコードを用いて発表をしました。サンプルコードはこちら。 「Flutter」と「Go」を組み合わせようと思ったきっかけ 永野峻輔氏:はじめまして。永野と言います。永野を英語で言うとエターナルフィールドなので、そんなTwitter名でずっと投稿していたんですが、この場で初めて音で聞くと、やっぱり恥ずかしいなっていう気持ちです。よろしくお願いします。 今回は、趣味で触っているFlutterと仕事で触っているGoを組み合わせてみるとおもしろそうじゃないかというところで、発表します。よろしくお願いします。 最初に自己紹介です。私はネットショップ作成サービス「BASE(ベイス)」を運営するBASE株式会社のグ

                                                                                “Flutter”単体で完結できないモバイルアプリ開発 「Go」のエコシステムでiOS・Androidコードの肥大化は防げる
                                                                              • Go CDK

                                                                                The Go Cloud Development Kit The Go Cloud Development Kit (Go CDK) is an open source project building libraries and tools to improve the experience of developing for the cloud with Go. Go CDK provides commonly used, vendor-neutral generic APIs that you can deploy across cloud providers. The idea is to support hybrid cloud deployments while combining on-prem (local) and cloud tools. This project al

                                                                                • Goエンジニアがk8sクラスタでノイジーネイバー問題に遭遇し、解決するまでの記録

                                                                                  これは、とある僕のチームが運用しているWebアプリケーション (Go製) の、ヘルスチェック用エンドポイントの (リクエストハンドラーの) コードです。リクエストがきたら200 OKを返すだけの、シンプルな実装です。 func health(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusOK) } ところが、たったこれだけの処理しかしていないエンドポイントのレイテンシが、ある時からピーク時に著しく劣化するようになり、ひどい時には最大3.4秒もかかるようになってしまったのです。 なぜこのようなことになってしまっていたのか、またそれをどのように調査し、解決したのかについて解説します。 システム概要 今回問題となったWebアプリケーションはGoで書かれています。実行環境は Kubernetes (GKE) で

                                                                                    Goエンジニアがk8sクラスタでノイジーネイバー問題に遭遇し、解決するまでの記録