理系学生日記

おまえはいつまで学生気分なのか

「技術者の知的生産性向上―技術KI計画」を読んだ

僕自身は、「他の人に任せる」というところが決定的に苦手であることを自覚しています。 これは10年近く自覚している自分の課題であって、緩やかに改善はしてきているんですが、それでもまだ足りない。 そんな悩みを1 on 1で相談した時に紹介いただいたのが…

PostgreSQLの接続文字列のフォーマット

いつも感覚&Google検索でやっていたのですが、公式の情報源はこちら。 PostgreSQL: Documentation: 15: 34.1. Database Connection Control Functions 基本的なフォーマットは以下のようになります。 postgresql://[user]:[password]@[host]:[port]/[databas…

Docker ComposeでPostgresqlを立ち上げるとき、任意のデータベース・スキーマ上にテーブルを自動で作成したい

本エントリでは、Docker ComposeでPostgreSQLを立ち上げるとき、特定のデータベース・スキーマ配下にテーブルを作成する方法を紹介します。 前提としてのpostgresイメージの持つ自動SQL実行機能 データベースをもつシステムをローカルで開発するにあたり、Do…

Serverless Frameworkで残り続けるLambdaのバージョン数を制限する

AWS Lambdaにおけるストレージのクォータ AWS Lambdaにはバージョンという概念が存在しており、Lambda上で過去のバージョンを管理できます。 また、管理されるバージョンに対して、エイリアスも定義できます。 Lambda関数のバージョン Lambda関数のエイリア…

Serverless FrameworkでLambda関数を個別にパッケージングする

最近、Lambda関数はServerless Frameworkで管理することが多くなってきました。 Serverless Frameworkでは、一般に「Service」という単位で複数のLambda関数を管理します。 Serverless Framework Services デプロイ自体も、このService単位で行います。 # Se…

MacでA5:SQL MK-2を起動する

諸事情でWindowsを前提とした開発において、自宅のMacを使う(使える)ことになりました。 課題になったのは、これまでA5:SQL MK-2で記述していたER図をMacで編集したくなるということ。 A5:SQL MK-2の良さについては以下のエントリに詳しいです。 私個人とし…

Amazon PinpointでiPhoneにPush通知を送信する

最近関わっている案件で、モバイルアプリへのPUSH通知を必要とする気配があります。このPUSH通知は、特定タイミングで、特定の条件を満たすユーザに対して通知しなければなりません。 モバイルアプリや通知に関しては赤子のような知識しかなかったので、色々…

マルチテナントデータを安全に扱うための Row Level Security、そして1ユーザーが複数のテナントに所属するときの対応について

このエントリでは、マルチテナントアプリケーションを構築する場合に、テナントに紐づくデータをどう安全に扱うかという点でRLSについて記載します。 特に、1ユーザが複数テナントに関する権限を持つ場合にRLSをどう適用すべきか、頭を悩ませました。 マルチ…

Postgresqlに対するアプリケーション用DBユーザーの作成と権限

データストアにPostgresqlを採用し、アプリケーションから当該DBに対してDB接続する。そういうユースケースは枚挙に暇がありません。 データベース・スキーマの作成 アプリケーション用ユーザーの作成 ユーザーのデフォルトスキーマ切り替え ユーザーへの権…

「インサイドセールス 訪問に頼らず、売上を伸ばす営業組織の強化ガイド」を読んだ

昨年度から「インサイドセールス」という部分に少し関わっていたのですが、なんとなく業界の概況がわずかに分かったかなというところから、なかなか進歩がありませんでした。 最近常々感じているのは、サービスをシステムから支える人間として、業務知識を持…

Unicodeの正規化について

トラブルシュートの中で、これUnicodeの正規化関連のトラブルではないか、と思える事象がありました。 最終的には違ったようなのですが、改めてUnicodeの正規化について理解を深めたく、調べてみました。 Unicodeにおける結合文字列 Combining Character Seq…

クライアントサイドJavaScriptとOSSライセンスの関係、及び、その自動チェック

多くのライブラリにはライセンスが付属しています。 利用する側は、当然このライセンスに定められた条件を満たさねば、当該ライブラリを使うことができません。 多くのライセンスでは「頒布」(distribution) 行為に対して条件を課しています。そして、この「…

ISUCONにJavaでチャレンジし予選敗退してきました

ISUCON 12とっても楽しかったですね。 今年はISUCON 6以降で久しぶりの登場となったJavaで参加してきました。 ISUCON6 オンライン予選の利用言語比率 : ISUCON公式Blog ISUCON12 オンライン予選の利用言語比率 : ISUCON公式Blog ISUCON 12における698チーム…

送信ドメイン認証としてのSPFとDKIM

最近はなりすましメール周りについて調べていまして、いままでまったくタッチしてこなかったメール周辺知識を必死で吸収するようにしています。 メールにおける送信者情報 エンベロープFrom ヘッダFrom 送信ドメイン認証 SPF (Sender Policy Framework) 参考…

Serverless Frameworkのコマンド実行時にフックして他のコマンドを実行するserverless-scriptable-plugin

Serverless Frameworkの各種コマンド実行をフックし、任意の処理を挟み込む方法を紹介します。 背景 大量のLambda関数を管理するためにServerless Frameworkを利用しています。 ここで、問題が発生しました。 Prismaを利用したLambda関数をWindowsからデプロ…

AWS SDK for JavaScript v3のGetObjectCommand、TypeScriptで使いにくくないか?

S3上にあるオブジェクトの内容をTypeScriptで読み込みたい、こういうユースケースは多数あります。 自身としては今回初めて、AWS SDK for JavaScript v3の@aws-sdk/client-s3を使って実装してみました。 そこで感じたのは、GetObjectCommandまわりのインタフ…

GraphQL SchemaのLintと、GitHub ActionsでのLint実装

GraphQLに本格的に触れ出しました。新しい技術に触れるとき、やはり優先して取り組むのがLintや静的解析回りです。 GraphQLのスキーマにもLintをかけたい、GitHub Actionsでチェックしたいなと考え始めました。 graphql-schema-linterがそのものズバリのライ…

Lambda関数の共通処理のためにTypeScriptでmiddyのミドルウェアを書く

最近ようやく重い腰を上げてTypeScriptでプログラムを書き始めました。 一方で、Lambda関数を多く書く必要も生じてきていて、その結果としてLambda関数で使い回す処理は共通化したくなってきます。 これを目的として、Lambda関数用のミドルウェアエンジンで…

Lambda関数でPrismaを利用するときのTips

Lambda関数からRDSを利用する必要が生じ、次世代のO/Rマッパと称されるPrismaを利用することにしました。 Lambda関数自体は、Serverless Frameworkで管理しています。 本エントリでは、Serverless Framework + Prisma + Lambdaの構成におけるノウハウを記述…

TerraformでMultiAZ構成のAmazon Aurora Serverless v2を構築する

Amazon Aurora Serverless v2 Amazon Auroraはコンピューティングとストレージを分離した構成をとるデータベースです。 そして先月に、そのServerless版の新しいバージョンである、Amazon Aurora Serverless v2がGAになりました。 ここで言う「Serverless」…

CognitoのHosted UIを独自ドメインでホストするところまでをTerraformで構築する

かなり沼にハマりましたが、TerraformでAmazon CognitoのHosted UIを独自ドメインでサーブするところまでを構築できました。 実装はこちら。 構築のハマりどころ Hosted UIに割り当てる証明書はバージニアで作成する Hosted UIに割り当てる独自ドメインの1つ…

GraphQL Code Generatorを使ってTypeScript型定義を自動生成することでGraphQLの開発が楽になる

型のない言語でJSONのような構造を扱おうとすると、このオブジェクトのフィールドには何が入っていたっけ、というのを IDEとドキュメントを行ったり来たりしながら確認する羽目になります。 これはGraphQLでも同様でした。TypeScriptで開発をしていたとして…

GraphQLでMerge Request上のコメントを抽出する

モチベーション 品質管理の負荷を下げたい TypeScript/GraphQLを使ってみたい GraphQL+TypeScriptの組み合わせがとてもよかった 開発プロジェクトでGitLabを使っている場合、 Merge Requestを使って開発を進めていくことが多いでしょう。 このときMerge Requ…

AWSのVPC Reachability Analyzerで疎通性を確認する

課題 解決に向けて 構成 感想 課題 プライベートサブネットに対し、SSM Agentを インストールしたEC2を配置しました。セッションマネージャー経由で接続を試みたところ、どうも疎通ができません。 解決に向けて そこで思いあたったのがReachability Analyzer…

最近見ているおすすめYouTubeチャンネル

なんだか疲れ切って何もやる気ないなぁというとき、最近はYouTubeを見ることが多くなってきました。 限られた可処分時間をYouTubeに捧げるのも良し悪しはあるのですが、 自分の興味がある分野を集中して学べるプラットフォームは魅力があります。 ぼくは100…

なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips

会社の中でシェルスクリプトについての話をすることにしたので、このエントリはそのためのものです。 個人的な好みとかもいろいろ入ってしまっているので、そのあたりは取捨選択してください。 なぜ今シェルスクリプトを学ぶのか 公開されているSRE本をマル…

「はじめてのGraphQL」を読んだ

仕事でGraphQLに関わる予兆があるのですが、なかなかGraphQLに馴染みがなかったので、まずは「はじめてのGraphQL」を読みました。 感想を一言でいうと、本当に読んで良かったという読後感です。 ぼくの悪い癖として、新しい技術を学ぶときはRFCや公式仕様/ド…

デュアルモニター用のモニターアーム

昨年12月に、デュアルモニタ用のモニターアームを使い始めました。 ぼくにとっては初のモニターアームだったのですが、かなり良いです。良い。 購入したもの 購入したのは、Amazonベーシックのこちらのアームです。 Amazonベーシック デスクマウント デュア…

Javaにおける依存関係を可視化できるjarvizを試してみる

モノリス的なJavaアプリケーションにおいて、各クラス・メソッドがどのように依存し合っているのかを見極めたいというのは しばしば生じるニーズです。 アプリケーションが巨大になれば分割したいと考えるのは自然の摂理でもあり、 分割面がどこなのかを見極…

Puppetterを使ったアプリをコンテナ化してLambdaにデプロイする

ChromeやChromiumをNode.jsから操作できるライブラリとしてPuppetterがあります。 これを使うと、Chromeでできるさまざまな事柄が自動化できます。 一方で、PuppetterはChromeを内蔵しており、Lambda関数化したとしてもそのサイズは非常に大きくなります。 L…