MinIO on Docker

Docker Compose で MinIO を動作させたい。 動作させた MinIO コンテナに対して S3 API を使って何らかの操作をしたい。 MinIO 起動 server コマンドに console-address オプションを指定してコンソール画面に 9001 番ポートを割り当てている。 ルートのユー…

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 を満たすための無意味なメソッド実装が不要になる。 初回実装、メンテナン…

MySQL の整数型の括弧

エンジニアになりたての頃に、同僚がMySQL のテーブルのカラムの型を TINYINT(1) にしていたところ、(1) は意味ないからヤメロとレビューを受けていた。その時に理由を調査したのか、そういうものなんだなとスルーしたのかどうかは定かではないが、記憶に定…

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

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

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…

Goのruneの最低限知っておいた方が良いかもしれない知識

自分が現時点で思うGoのruneの最低限の知識です。(なお、業務ではrune使ったことない) いつか必要になった時にこれだけは知っておいた方が良いかなーと思って自分用にまとめました。 Unicodeコードポイントを表す Unicodeは、文字コードの規格 文字コードは…

データレイク、データウェアハウス、データマート

数年前に一度調べたが、完全に頭から消えているので再度調べてみた。 データマート 小規模 あるスコープに限定された情報 部門とか データマートの種類 従属型 データウェアハウスのサブセットを保存 データウェアハウスからクエリしたデータを保存するので…

go-sql-driver/mysql の Scan の挙動にハマる

Go の MySQL ドライバーとして go-sql-driver/mysql を使用した際の挙動にハマったので、解決策を記しておきます。 クエリを発行し、取得した整数型の値をany型の値で受け取る際に予期しない結果となることがあります。 package main import ( "database/sql…

MySQL5.7でJSONを行に変換する

val {"Bob": {"A": 10, "B": 5}, "Alice": {"A": 10, "C": 5}} {"Bob": {"D": 10, "E": 5}, "Mike": {"A": 5, "F": 5}} 上記のようなJSON型の値を持った行から下記のような結果を得たいが、MySQL 5.7には JSON_TABLE が実装されていない。 name type val Bob…

MySQL5.7 でも順位を付けたい

MySQL をDBMSとして使用している環境において、取得結果をカラムの値で順位付けしたいことがあると思います。 バージョンが 8.0 であればウインドウ関数 RANK() を使用すれば実現できますが、5.7 を使用している場合は別の方法を取る必要があります。 動作確…

週報(08/28~09/03)

QuickSight Analysis から Template を作って Template から Dashboard を作っている場合、Analysis を更新しても Template は自動更新されないし、Template を更新しても Dashboard は自動更新されない。 Template、Dashboard はバージョンを保持しているた…

週報(08/21~08/27)

QuickSight フィルター、コントロールの選択値の挙動を確認した。カスタムSQLを使っている場合、データセットパラメータがデフォルト値の状態で選択値の検索をするためのクエリが走るようだ。カスケードフィルターを使っていても、デフォルト値の埋まった SQ…

週報(08/14~08/20)

Go 1.21でリリースされた新しいパッケージである maps パッケージと、sync パッケージの変更点を押さえた。 maps パッケージの Clone メソッドのコメントにある shallow clone の意味が理解できなかったので go-nuts で質問して把握した。 生成される map は…

週報(2023-08-07 ~ 2023-08-13)

Go 1.21.0 がリリースされたので、mapsパッケージをしっかり目に読んだ。 Clone()のコメントにあるshallow cloneの意味が分からなかったが、コピーされる値はシャローコピーなので、再起的に Clone() が行われることがないということらしい。 pkg.go.dev Ter…

週報(2023-07-31~2023-08-06)

gonew モジュールをローカルにコピーする?gonewコマンドをインストールしてみた。 コマンド引数でモジュールパスを任意のパスにすることもできるみたい。 git cloneしなくても良くなる以外のメリットは何なんだろうか。 github.com pkg.go.dev sqlx sqlxパ…

週報(2023-07-24~2023-07-30)

学んだことや感じたことを振り返るために週報を始めることにした。 もちろん毎週更新が目標ではあるが、どうしても忙しくて書けない時もあるだろうし、ゆるく続けていければと思う。 QuickSight Terraform で DataSet の DatasetParameter を使いたいが対応…

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何も分からないマンだったので、やらな…

「竜とそばかすの姫」を観た

久しぶりにケンタッキーを夕食に食べようとなって奥さんがケンタッキー見ながら映画を食べたいと仰ったのが縁で「竜とそばかすの姫」を観た。 Prive Videoは有名どころほとんど見られるような。 感想だが、そこそこ面白かった。 目を離すことはなかったけど…

Yelp の GraphQL Schema Design を読んだ

結婚に伴う引越しや、結婚式の準備などに思っていたより時間が取られ、以前に比べて最近はインプットもアウトプットもかなり減っています。 アウトプットする感覚を少しでも取り戻す為に、Yelp の GraphQL Schema Design を読んだ感想をまとめます。 yelp.gi…

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…