golang
Go 1.20 crypto/ecdh導入の背景・目的を説明します。また、Go標準パッケージの楕円曲線パッケージcrypto/ellipticを使わずに、crypto/ecdhにするとなぜ安全になるか説明します。
Go言語で実装したAWS Lambda関数をVisual Studio Codeでデバッグ実行できるようになるまでの手順を説明します。一連の手順を踏むことで、SAMのデバッグがどう実現しているかも理解できます。
Go言語のfor-range内でポインタを使用すると同じ値になる場合があります。その問題の原因、対応方法に関して説明します。また、対処方法それぞれのメリット・デメリットに関しても説明します。
Go言語のTwilioライブラリであるtwilio-goをを用いて、Twilio VerifyのSMS送信、パスコード検証する方法を説明します。また、Programmable Messaging (SMS)とTwilio Verifyの違いに関しても説明します。
Go言語のlinter staticcheck をGoLandでも有効にする方方法を説明します。Go公式のlinterであるGolintが非推奨になったことを受けて、設定方法を調べました。
gorilla/cookieがCookieを認証・暗号化する仕組みを説明しています。仕組みを理解することで、Cookieの利用がどう安全になるか理解できます。
Slackのリクエスト書名の仕組みに関して説明しています。内部で使用されている暗号化技術を把握し、セキュリティ関の理解を深められます。また、よりセキュリティを高める方法も紹介しています。
Go言語のSlackサードパーティライブラリであるslack-goを使ってSlackのリクエスト書名を検証する方法を説明します。リクエスト書名の検証ロジックを実装することで、安全にSlack連携アプリを使用できるようになります。
Go言語のサードパーティライブラリであるgo-oidcを使用して、HS256で認証する方法に関して説明します。記事を通じてHS256はどのようなアルゴリズムなのか理解できます。
Auth0とOpenID Connect連携するGo言語アプリケーションの実装方法に関して説明します。また、Auth0側の設定方法も説明しています。
Go言語のサードパーティライブラリUniPDFを利用してPDFファイルにデジタル署名する方法に関して説明します。また、UniPDFの署名機能で実現できること、どのようなフローでデジタル署名をするにのかを理解できます。
共有された変数を平行的に安全にする方法を説明しています。単一のゴルーチンに閉じ込める、相互排他の2つの方法に関して説明しています。
Go言語のAPIテスティング用のライブラリの1つであるapitestを紹介しています。apitestの特徴・難点、APIのテストの書き方を説明しています。
GithubリポジトリでGithub actionsワークフローを設定し、 codecov にカバレッジを送る方法を紹介します。テストスイートを実行した時にソースコードの実行箇所を視覚的に示し、どこに新しいテストを書くべきか分かりやすくなります。
Gormを使ってデータベースにアクセスするアプリケーションをテストするコードを書いてみました。Go標準のdatabase/sql パッケージでSQLクエリを発行する場合でもDBを使わずにテストも行うことができます。
Golangのプログラムのテストを書く際、 testingパッケージ の関数 Error / Errorf と Fatal / Fatalf の違いが分からなくなる時があるので整理してみました。
本番環境にデプロイしたビルド済のバイナリのバージョンを確認したいことがあります。 また、開発環境で使うちょっとしたツールを作る場合、ほとんどの場合いくつかのコマンドラインオプションを受け取れるようにしたいです。
pdfcpu という golang で書かれたコマンドラインツールを使って、複数のPDFファイルを1つにまとめるという作業をたまに行っているのですが、ふとOSSだしPRを送ってみようかと思い立ったのでやってみました。
前回の記事で作った簡単なコマンドラインツールを元にフラグを追加していきます。spf13/pflagという cobra と同じ方が作られている別のライブラリを使ってフラグを追加します。
Go言語でコマンドラインツール(CLI)を作る際cobraというライブラリを使うと、ヘルプや設定ファイルの読み込みなど一般的な機能を持ったCLIを簡単に作れるようになっていて便利です。
先日、初めてGo Language Specification 輪読会 (#14) 2021/1/27開催に参加した感想と、型アサーションとスライス式に関して学んだことを書いてみたいと思います。 Go Language Specification 輪読会に参加した感想 The Go Programming Language Specificati…
前回のスライスと配列の特徴、違いについての記事に引き続き、今回はスライスの様々な操作の挙動に関して整理していきます。 simple-minds-think-alike.hatenablog.com 新しいメモリ領域の確保は比較的重い処理なので、できるだけ行われないように工夫してプ…
スライスはGo言語の中でもっとも利用されるデータ構造だと思いますが、挙動が複雑で仕様を把握するのが難しく、利用頻度が高いがゆえによく分からず使っているとパフォーマンスの低下を招き易い機能と言えるかと思います。 スライス及び配列の特徴を把握する…
Go言語で正規表現のコードを書く際に、どういう表現ができるんだっけ?と思う時がありますよね。 Ruby(Ruby on Rails)の正規表現のコードを書く際はRubularというツールを使う方は多いと思いますが、Golangでも同じようなRegoという正規表現チェックツールが…
Go言語で実装したWebアプリケーションサイトのDBマイグレーションツールとしてgolang-migrate/migrateを使っていて、そこそこ便利につかえているので紹介してみたいと思います。
以前Goで開発をしている時に、インタフェースと構造体の理解が曖昧でハマることがあったので、理解を深めるためのサンプルコードを書いてみました。 要件 サンプルコードは、掃除機の共通のインタフェース(操作) ①電源を入れる(TrunOn) ②電源を切る(TrunOf…
前々回、前回の記事でHerokuでGolangプロジェクトを動かすのと、Heroku Container RegistoryにDockerイメージをPushし、web dynoにリリースするというのをやりました。 今回は、Github Actionsを使ってHerokuに自動デプロイしてみます。 simple-minds-think-…
Golangでスクレイピングする時はとりあえずgoquery使っておけば良さそうーと思って、あまり別のライブラリを使おうとしてこなかった。けれど、高機能なスクレイピング用ライブラリでCollyというのがあって、スクレイピング処理の中でgoqueryのHTMLElementを…
前回の記事で、Herokuで動くようになったGolangプロジェクト(フレームワークはEcho)を今回Dockerコンテナで動くようにしてみました。 simple-minds-think-alike.hatenablog.com 前提 Dockerfileの作成 実行バイナリファイルを作るイメージ 変数ENV_CGO_ENABL…
Go modulesが入って、GolangのHerokuへのデプロイがだいぶ簡単になっていたので、備忘録のためプロジェクトの作成から確認までの手順を書いておきます。 環境 前提 ローカルで動くまで プロジェクトディレクトリ作成 簡単なリクエストを受け付けるGolangのコ…