Simple minds think alike

より多くの可能性を

【GitHub Actions】configuration variablesで機密性の無い変数を設定する

Configuration variables in workflowsは、非機密データをプレーンテキストとして格納し、GitHub Actionsワークフロー内から参照できる変数です。

【Rails】範囲オブジェクト(Range)を使ったActiveRecordのwhere比較、範囲検索のコードの書き方

ActiveRecordのwhere比較、範囲検索は、最近では範囲オブジェクト (Range (例: 10..30)) を使ってほとんど実装することができるようになっています。

Go 1.20 crypto/ecdh導入の理由

Go 1.20 crypto/ecdh導入の背景・目的を説明します。また、Go標準パッケージの楕円曲線パッケージcrypto/ellipticを使わずに、crypto/ecdhにするとなぜ安全になるか説明します。

【Golang】AWS LambdaをSAMでデバッグする方法

Go言語で実装したAWS Lambda関数をVisual Studio Codeでデバッグ実行できるようになるまでの手順を説明します。一連の手順を踏むことで、SAMのデバッグがどう実現しているかも理解できます。

【Golang】for-rangeでポインタを使うと同じ値になる理由

Go言語のfor-range内でポインタを使用すると同じ値になる場合があります。その問題の原因、対応方法に関して説明します。また、対処方法それぞれのメリット・デメリットに関しても説明します。

【Golang】Twilio VerifyでSMS送信、検証する方法

Go言語のTwilioライブラリであるtwilio-goをを用いて、Twilio VerifyのSMS送信、パスコード検証する方法を説明します。また、Programmable Messaging (SMS)とTwilio Verifyの違いに関しても説明します。

APDUプロトコルを通じてマイナンバーカードで電子署名する方法

OpenSCの内部で使われているAPDUプロトコルを使って電子署名する方法を説明します。また、一連の手順を通じて、ADPUプロトコルの仕組みを理解し、低レイヤーでマイナンバーカードをアクセスする仕組みを理解できます。

OpenSCを使ってマイナンバーカードで電子署名・検証する方法

スマートカード用のライブラリ・ユーティリティ郡であるOpenSCを使って、マイナンバーカードで電子署名・検証する方法を説明します。また、マイナンバーカードの特性やカード内部のデータ構造を把握することで、書名・検証をどう実現しているかを理解できま…

【Golang】GoLandにstaticcheckを設定する方法

Go言語のlinter staticcheck をGoLandでも有効にする方方法を説明します。Go公式のlinterであるGolintが非推奨になったことを受けて、設定方法を調べました。

【Golang】Cookieを認証・暗号化するライブラリ gorilla/cookie を試してみた

gorilla/cookieがCookieを認証・暗号化する仕組みを説明しています。仕組みを理解することで、Cookieの利用がどう安全になるか理解できます。

【Golang】slack-goを使ってSlackのリクエスト署名を検証する<解説篇>

Slackのリクエスト書名の仕組みに関して説明しています。内部で使用されている暗号化技術を把握し、セキュリティ関の理解を深められます。また、よりセキュリティを高める方法も紹介しています。

【Golang】slack-goを使ってSlackのリクエスト署名を検証する<実装編>

Go言語のSlackサードパーティライブラリであるslack-goを使ってSlackのリクエスト書名を検証する方法を説明します。リクエスト書名の検証ロジックを実装することで、安全にSlack連携アプリを使用できるようになります。

Slack APIを通じてメッセージ投稿する方法

Slack APIを通じてメッセージ投稿する方法を説明します。トークン、OAuthスコープの種類に関して理解を深め、Permissionsの設定を行うことでSlack APIが利用できるようになることを理解できます。

GitLab CI/CDのGitLab Runnerでジョブを動かす方法

GitLab CI/CDのGitLab Runnerを動かす方法に関して説明しています。また、.gitlab-ci.ymlの記載方法に関して説明し、用途に応じて様々なジョブ実行の設定をできるようになります。

【Golang】go-oidcでHS256に対応する方法

Go言語のサードパーティライブラリであるgo-oidcを使用して、HS256で認証する方法に関して説明します。記事を通じてHS256はどのようなアルゴリズムなのか理解できます。

【Golang】Auth0とOpenID Connect連携する方法

Auth0とOpenID Connect連携するGo言語アプリケーションの実装方法に関して説明します。また、Auth0側の設定方法も説明しています。

テキストエディタとpdftkを使ってPDFファイルを作る方法

PDF

まず、PDFファイル構造の概要を説明します。その後、テキストエディタとpdftkというコマンドラインツールを使い、PDFファイルを作成する方法に関して説明します。

【Golang】UniPDFでPDFにデジタル署名する方法

Go言語のサードパーティライブラリUniPDFを利用してPDFファイルにデジタル署名する方法に関して説明します。また、UniPDFの署名機能で実現できること、どのようなフローでデジタル署名をするにのかを理解できます。

【Github actions】DependabotのPull RequestでSecretsが参照できずワークフローがFailになった場合の対処

`Dependabot` のPull Request(以下PR)が作られた際に開始したGithub Actionsワークフローが `Secrets` を参照できずに失敗していたので原因を調べてみました。

DockerイメージをAmazon ECRパブリックレジストリで公開する方法

2020年12月にリリースが発表されたAmazon ECRのパブリックレジストリを試したくて、 cawsay (牛(cow)に喋らせる(say)というジョークコマンド) を実行するだけのDockerファイルをビルドしてイメージを公開してみました。手順を共有しています。

【Golang】共有された変数を平行的に安全にする方法

共有された変数を平行的に安全にする方法を説明しています。単一のゴルーチンに閉じ込める、相互排他の2つの方法に関して説明しています。

【Golang】apitest でEchoを使ったREST APIのテストを書く

Go言語のAPIテスティング用のライブラリの1つであるapitestを紹介しています。apitestの特徴・難点、APIのテストの書き方を説明しています。

mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces が発生した時の対処

mysqldumpでAWS RDSインスタンス(aurora)に繋いでデータをdumpしようとしたら、見たことがないErrorが発生していたので調べました。MySQLバージョンのアップグレードの影響で `tablespace` の情報にアクセスするには `PROCESS` 権限が必要になったことが原因…

【Golang】Github actionsでカバレッジを取得しCodecovにアップロードする

GithubリポジトリでGithub actionsワークフローを設定し、 codecov にカバレッジを送る方法を紹介します。テストスイートを実行した時にソースコードの実行箇所を視覚的に示し、どこに新しいテストを書くべきか分かりやすくなります。

【Golang】go-sqlmockでGormのテストを書く

Gormを使ってデータベースにアクセスするアプリケーションをテストするコードを書いてみました。Go標準のdatabase/sql パッケージでSQLクエリを発行する場合でもDBを使わずにテストも行うことができます。

【Golang】testingパッケージのError/ErrorfとFatal/Fatalfの違い

Golangのプログラムのテストを書く際、 testingパッケージ の関数 Error / Errorf と Fatal / Fatalf の違いが分からなくなる時があるので整理してみました。

【Golang】ビルドしたバイナリのバージョン情報を表示、コマンドラインオプションを受け取るには

本番環境にデプロイしたビルド済のバイナリのバージョンを確認したいことがあります。 また、開発環境で使うちょっとしたツールを作る場合、ほとんどの場合いくつかのコマンドラインオプションを受け取れるようにしたいです。

【Golang】GitHubのOSSにPull Requestを送る

pdfcpu という golang で書かれたコマンドラインツールを使って、複数のPDFファイルを1つにまとめるという作業をたまに行っているのですが、ふとOSSだしPRを送ってみようかと思い立ったのでやってみました。

Linuxマシンでgit/githubのコミットにGPG署名する

コミットに署名が求められるOSSにPRを送りたくて、Linuxマシンのローカル環境で gpg 署名付きコミットできるようにしてみたので、手順を残しておきます。

【Golang】cobraで作ったコマンドラインツール(CLI)にフラグを追加する

前回の記事で作った簡単なコマンドラインツールを元にフラグを追加していきます。spf13/pflagという cobra と同じ方が作られている別のライブラリを使ってフラグを追加します。