理系学生日記

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

有効期限のあるPostgreSQLユーザを動的に作成する効率的な方法を考える

データベースは機密情報が格納される場所であり、その重要性からできるだけ限定されたユーザだけがアクセスできるようにしたいと考えるのは当然です。一歩進めて、理想的にはデータベースへのアクセスに必要なユーザを静的に設定するのではなく、都度必要に…

統計学:相関係数と線形回帰

平均でだけ議論されるロジックを目にして違和感を感じていたものの、自分の知識がそれ以上に達せず、もやもやした思いをずっと抱えていました。今こそ統計学をやり直す時期です。 と言うわけで、基本的なところから学び直していきます。 とりあえず直近の目…

OpenAI(GPT)のEmbeddingsを利用して原始的なChatBotを作る

会社の中の雑談で、Embeddings APIを使ってChatBot作れるよね、という話をしていました。 僕はこのあたり初心者なのですが、まずは動かすもの作ったらイメージが沸くだろうと、とりあえず実装してみます。 Embeddingsとは何か Embeddings API コスト 入力ト…

初めてのGPTのAPI(OpenAI API):コストの理解とTypeScriptでの呼び出し

TL;DR 初めてOpenAI APIを使ってみました。 まず、OpenAIのHTTP APIとNode.jsライブラリopenai-nodeの使用方法について学び、その上でTypeScriptを使ってAPIを実際に呼び出してみました。その過程でAPIの使用料金と、それがどのようにモデルや入出力トークン…

GeoToolsを使って地図上に座標点・連結線を表示する

GeoToolsで扱う地図上の要素 今日はGeoToolsを使って地図上に点や線を引いてみます。 最初に結果を示しておくと、以下のようになります。 これは、札幌時計台、大通公園、さっぽろテレビ塔を順に直線で結んだものですね。 GeoToolsで扱う地図上の要素 基礎知…

GISを学びながらOpenStreetMapの地図をJavaで描画してみる

最近は地図と向き合う業務も出てきており、色々と学ばないといけません。 基礎知識 GIS 測地系 ITRF系 JGD2011 WGS系 OpenStreetMap OpenStreetMapのデータを使って地図をJavaで描画してみる タイルサーバの利用 地図の描画 地図の絞り込み まとめ 基礎知識 …

PostgreSQLにおけるCOLLATIONとソート

PostgreSQLを使っているとき、日本語がうまくソートできない。これはいわゆるCOLLATION (照合順序)の設定によります。 色々とこの順番を設定できるため、今回その設定を試してみました。 基礎知識 Postgresqlでは、それぞれのデータタイプはcollationを持っ…

ノートPCスタンドの導入による肩こりの解消

ぼくは元々相当な肩こり持ちだったのですが、2月にノートPCスタンドを導入してから、肩こりに悩まされる頻度が相当減りました。 ぼくが使っているのはBoYataのこちらです。 BoYata タブレットスタンド ipad スタンド ipad proスタンド ipad air スタンド ノ…

なぜプライバシーポリシーを公開しなければならないのか

law

事業を立ち上げる上で、プライバシーポリシーを公開しろという話を聞きます。 この根拠が何なのか、不勉強にして知らなかったので、その辺りを調べてみました。 ちなみに、私は専門家ではないし、一時間くらいググっただけです。 「プライバシーポリシー」公…

機密情報を参照させないPostgreSQLのカラムレベル権限設定

本番環境のシステム運用を考えたとき、データベースの中身を参照せざるを得ないことは多くあります。 データは貴重な情報資産であるため、運用者に対してすら、そのデータ参照を厳しく制限せねばなりません。 例えば要配慮個人情報を運用者に対して簡単に参…

JMeterまわりの設定について

このゴールディンウィークに何をしていたのかというと、ずっとJMeterを勉強しています。 自分が参画しているプロジェクトにおいて性能テストを計画した際、もともとはabを使ってシステムをいじめてしまえば良いと考えていました。一方で、計画作業をしている…

Route 53で取得したドメインを別のAWSアカウントに移管する

Route 53で登録した自分のドメインを、別のAWSアカウントへ移管する必要が生じました。 この方法については、異なる AWS アカウントへのドメインの移管で紹介されています。 今回は、AWS CLIを利用して移管を実施しました。マネジメントコンソールからは実行…

トラックボールをMX ERGOに変えた

MX570は名機として有名なトラックボールです。 僕自身も初めて使ったトラックボールで最初こそはボール操作に戸惑ったものの、2-3日で手に馴染み、手を移動させないで良いということの素晴らしさに気づかせてくれました。 そういうわけで、業務・プライベー…

タイムマネジメントによって人生をコントロールする試みは必然的に失敗する/「限りある時間の使い方」を読みました

「限りある時間の使い方」を読みました。 限りある時間の使い方作者:オリバー・バークマンかんき出版Amazon タイムマネジメントによって人生をコントロールしようとする試みは必然的に失敗する 「今」を大事にする 読んでから この本を知ったのは、生産性を…

標準出力と標準エラー出力を同時にパイプに送る時のTips

標準エラー出力と標準出力を同時にパイプに送るとき、2>&1 | と記述することが多いでしょう。 $ ls /etc/hosts /notexist 2>&1 | cat > ls.dat $ cat -n ls.dat 1 ls: cannot access '/notexist': No such file or directory 2 /etc/hosts Bash Reference Ma…

WEB+DB PRESS Vol.133にシェルスクリプトの記事を書きました

なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記を見て頂いた技術評論社の方からお声がけ頂き、WEB+DB PRESS Vol.133にシェルスクリプトの記事を書きました。 タイトルは「ツールを自由につないでWeb開発を効率化! 今こそシェル…

『SIerで「新規事業」を作るということ、SEが「価値」を作るということ』というタイトルでDevelopers Summit 2023へ登壇しました

Developers Summit 2023で、表題のタイトルで佐藤さんと一緒に発表してきました。資料はこちらにあります。 前回登壇したのが2020/02でしたので、まるまる3年ぶりになりました。 今回の登壇で大事にしたこと 以下、個人的な話です。いろんな考え方の人がいる…

宣伝メールを送信するための法規制とそれに対するシステム対応

メールを配信するニーズは未だなお高く、僕自身も様々なメールを日常的に受け取っています。 一方でそのニーズの高さを逆手に取り、迷惑メールを配信する業者も少なくありません。結果として、「メール配信業務」には法的に様々なルールが課せられています。…

明けましておめでとうございます

あけましておめでとうございます。 もう1月もほぼ終わっている中でおめでたい雰囲気は最早ございませんが、 こうでもしないとなかなか他のエントリも書きづらく、こうやって無意味なエントリを書くに至りました。 昨年もいつもの通り忙しかったのですが、特…

「技術者の知的生産性向上―技術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…