IT

Prisma の Seeding 機能を使ってみた

Prisma には DB への Seeding の機能が搭載されています。 この機能を用いて、Docker コンテナで動作する MySQL に初期データの投入作業を行ってみたので、備忘録としてブログに残します。 環境 node 20.11.1 prisma 5.10.2 @prisma/client 5.10.2 docker co…

ts-jest-mocker のメモ

https://github.com/dariosn85/ts-jest-mocker interface や class のモックを簡単にできるようにしてくれるライブラリである、ts-jest-mocker についてのメモ 嬉しいこと interface を満たすための無意味なメソッド実装が不要になる。 初回実装、メンテナン…

ユースケースレイヤーの実装はユースケースを洗い出してから

何を当たり前のことを、みたいなタイトルだが最近実感していることなので。 レイヤードアーキテクチャ、ヘキサゴナルアーキテクチャ、オニオンアーキテクチャはアプリケーション固有のルールを実装するレイヤーを持つ。このレイヤーはアーキテクチャによって…

Go の errors.Join の挙動を調べた

IT Go

Go 1.20 で追加された errors.Join の挙動を調べてみたので、備忘録としてポストしておく。 errors.Join の概要 Go doc と実装をベースに概要を簡単にまとめる。 errors.Join は error を返す。返された error は内部的に引数に渡された可変数の error を保…

「Amazon DynamoDB におけるシングルテーブル vs マルチテーブル設計」を読んだメモ

DynamoDB のテーブル設計は、RDB のそれとは異なる。 テーブル数はなるべく少なくして、非正規化したモデルを設計するべきである。 その背景を深く知るべく、「Amazon DynamoDB におけるシングルテーブル vs マルチテーブル設計」を読んで学んだ内容をまとめ…

Route53 でドメインを取得する

新しいドメインを取る必要があってどのサイトで取ろうかなーと悩んだ末、AWS で取ることにした。 AWS 自体はがっつり触ってきたが、ドメイン取得はやったことがなかったので公式ドキュメントを参考にしながら進めた。 手順 Route53 のコンソールにて、[登録…

SlackのBlock Kitでリッチなメッセージを構築しよう

Slack の Block Kit という機能の存在を知った。 この機能を活用することで、リッチで読みやすく理解しやすい Slack メッセージを構築することができるそうだ。 やってみる Formatting text for app surfaces | Slack を参考に block を組み合わせてメッセー…

Go ジェネリクスの基礎を学ぶ

Go IT

Go 1.18 でジェネリクスが導入されてからこれまで雰囲気でジェネリクスを使用してきました。 ここらでちゃんと仕様を体に覚え込ませたいと思い立ち、公式の文書を読みつつ手を動かした記録を記事として残すことにしました。 少しずつ理解を深めていく経緯を…

Amazon Aurora カスタムエンドポイント覚書

Amazon Aurora カスタムエンドポイントの仕様がかなり複雑であり、都度都度ドキュメントを参照するのが辛いので要点と気になる点を備忘録として記す。 概要 タイプ メンバー 参考 概要 カスタムエンドポイントは、任意の複数のDBインスタンスに接続するエン…

GitHub で自分が Contribute した PullRequest を探す

今年はいくつかのOSSにコントリビュートしたので、マージされた PullRequest を一覧で見たいなと思い検索方法を調査しました。 PRを一覧で見る https://github.com/pulls へアクセスすることで自分が作成したPRを一覧で取得できます。 OSSへのPRにのみ GitHu…

Go Conference mini 2023 Winter IN KYOTO レポート

Go IT

2023-12-02 に開催された「Go Conference mini 2023 Winter IN KYOTO」にオンライン参加しました。 今回は時間的に余裕があったので、ほとんど全てのセッションを聴くことができました。 本記事は、セッションの中でも特に興味深かったものについて簡単にま…

terraform-aws-providerへコントリビュートした

本記事はZennに投稿した記事の複製です。 先日、terraform-aws-providerにコントリビュートし、大規模?OSSへのコントリビュート経験をGETしました。 マージされた改修は、v5.26.0にて無事リリースされました。 https://github.com/hashicorp/terraform-prov…

Dirty Read を Go の sql パッケージを使って検証する

DB IT Go

Dirty Read の概念を学んだので、動作を試すのに Go の sql パッケージを使って検証スクリプトを書いてみる。 こういうのは手を動かしてみると記憶に残る。 検証はローカルで行う。 DBMSは MySQL を使う。 compose.yaml はこちら。 services: # MySQL mydb: …

SQLって思っていたよりも表現力が高い

IT DB

ひょんなことから、プログラミング言語で記述されたバックエンドの実装をSQLで書き直す取り組みをすることになった。ちなみにデータベースエンジンはMySQL 5.7である。 実務でまともに触ったDBはDynamoDBが初めてでRDB何も分からないマンだったので、やらな…

Amazon QuickSightに関する情報まとめ

タイトル通りです。 随時更新していく予定です。 入門 dev.classmethod.jp 埋め込み www.ryucom.co.jp tech.nri-net.com acro-engineer.hatenablog.com qiita.com tech.stmn.co.jp techblog.recochoku.jp データセット dev.classmethod.jp dev.classmethod.j…

【ChatGPTに聞いてみた】Go言語のmapをテーブル形式で出力する

Go IT

mapの中身を綺麗にデバッグしたいので、mapをテーブル形式でコンソール出力したいことがあった。 ChatGPTに聞きつつ、軽い修正したら完成しそうなのでやってみた。 今回使用するModelはGPT-4である。 あなたはGo言語のプロフェッショナルです。 map型の値を…

for文を書きたくないGoプログラマー達へ

Go IT

Go言語は書き振りが冗長であると言われることが多々ある。 例えば、int型のスライスから値が10の値だけを抽出したい場合には下記のように書く。 package main import "fmt" func main() { intSlice := []int{1, 10, 100} result := []int{} for _, v := rang…

Go 1.20.0 にて math/rand のグローバルな乱数生成器のタネが固定値では無くなった

IT Go

Go 1.20.0 が先日リリースされた。 気になる機能はいくつかあるが、職場にて math/rand パッケージが話題に上がっていたのでチェックしてみた。 ちなみに arena パッケージの実験的サポート、errors.Join 、context.Context の Cause あたりが気になる機能で…

HDDの基本

IT

HDDの基本的な用語や構成を全然覚えられず、都度検索しているので備忘録としてまとめます。 同じ内容を別のブログで以前公開していたのですが、ブログを閉じちゃったので再掲です。 プラッタ データを保存する円盤 プラッタは複数枚搭載 プラッタの片面また…

マネコンで作った S3 を Terraform 管理下に置く

IT

マネコンで作って terraform import して定義ファイルを作りたい。 とりあえずマネコンで全てデフォルト(チェックボックスの状態など変えず)で作った。 コマンドを実行する前に.tfファイルにリソース定義をしておく必要がある。 resource "aws_s3_bucket" "x…

Terraform プロジェクト初期化から EC2 デプロイまで

IT

Build Infrastructure | Terraform | HashiCorp Developer を参考に、Terraform のプロジェクト初期化から EC2 デプロイまでの手順を記す。 定義ファイルを作る。 touch main.tf 定義する。 version関連は先述のチュートリアルのコピペ。 AMI はCLIで2023.01…

gRPCチュートリアルをやってみた

IT

はじめに マイクロサービス間の通信に使われると話題(相当流行遅れ)のgRPCを触ってみた。 実践 protocol plugin をインストールする。 $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 $ go install google.golang.org/grpc/cmd/protoc-ge…

Neovim の設定ファイルを作る

IT

Neovim のインストールが済んだので設定ファイルを作りたい。 コテコテに拡張するつもりは今の所はないが、とりあえずファイルを作っておこうかなという考え。 作成 ~/.config/nvim以下にinit.luaを作る。 nvimディレクトリがまだ無かったのでAND演算子で先…

Neovim はじめました(macOS)

IT

プログラマーとしてお給料をいただくようになって2年が経った。 この2年間使ってきたエディタは VSCode だ。 独学時代は VSCode を使ったり Vim を使ったり Atom を使ったりいくつかのエディタを試していた。 現職に就く直前は確かVimを使っていた気がするが…