ちいかわPGの個人開発メモ
わい「個人開発始めようと思ってんねんけど、やっぱPaaSとかPostgres少ないなあ・・Herokuかあやっぱ」
友人Nくん(インフラ)「そんなんVPSにすれば好き放題やぁぁぁんんけぇぇぇぇ!!」
わい「ふぇぇぇサーバーとかたてれないよう(´;ω;`)」
ここにサーバー立てれない、アラフィフおばちゃんの被り物を被ったちいかわプログラマが爆誕した。そんなちいかわPGの奮闘を記録するのが目的
要件定義編
ちいかわ個人開発でも簡単なドキュメントはあったほうがいいかなとは思う。忘れるし
- 要件定義書
- 概要
- 目的
- 簡単なユーザーターゲット
- 簡易業務フロー
- 要件リスト
アプリ内で使う日本語もここで書き出し整理しておく。校正はサクッとChatGPTさんにお願い。簡単な校正なら3.5で十分
- RestAPIの設計メモ
もつけといた。普通にMarkdownでかく 。 - 画面遷移図
最近はFigumaとかあるのでちょっと確認してみたけどゴリっとデザイナーさん向けなので、Cacooで十分と思う。 - ER図
marmaidちょう便利。実施に書類として出す前のアイデア考えるメモとしてもいいと思う。vscode拡張でサクッとプレビュー。
https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid
A5:SQL Mk-2。WindowsのみだけどSQLクライアントとしてもER図ドロワーとしても使えるし、実行計画とか表示してくれるしDB周りはほぼフォローしてくれる。あんまWebの人は使わないだろうけど。
https://a5m2.mmatsubara.com/
VSCodeのカラーテーマ
実はSymthWave 84'という猛烈にダサいカラーテーマが大のお気に入り。まじ痺れるダサさ。
なにがダサいって、ひ か る!・・いや、普通のベーシックなテーマでいいんですよ、こちらがvscodeのカラーテーマで良かったです。
色んなカラーテーマが選べるよんターミナルとかは下記参考に多少配色変えて背景半透明な中2テイストで使ってるだけ。
若い人は専用ソフトとか入れて凝ってるなあ。なんせ最初に使ったOSがMS-DOSとかなんで全然気にならないやwさすがにWinはWindows Tarminal使えた方がいいけど。brew updateがこける(´;ω;`)ブワッ
おばちゃん今年初め親の介護始まっちゃって5ヶ月ほどまともにPC触れなかったので、久々にbrew updateかけると全く!終わらなく!なっちまったんですよ。Homebrewは開発が活発で1回のupdate結構なDL量とのこと。まあ、あるあるなんやろうなあ。まずbrew docterでちゃんと原因調べてからやけど。
gitは最新の履歴だけcloneするshallow cloneがあるらしくこいつを試してみる。
これでもダメだったので結局gitのpostバッファを大きくして対応。
みんなまめにbrew updateしような・・
VSCodeでJavaのプロジェクト開発中いっぱいエラー出ちゃったよぅ
(´;ω;`)ブワッ
・・・まああるあるなんですが、開発中に依存関係こけちゃってでエラー出ちゃったよとかの対応っす。たまにしかないんで忘れんるんで覚えてる間にメモ。
F1->Java: Clean Java Language Server Workspace
プロジェクトの管理周りの公式ドキュメント
https://code.visualstudio.com/docs/java/java-project#:~:text=In some rare cases%2C you,language server rebuild your dependencies.
DBのプライマリーキーなんにしよ。
まあな〜んも考えなかったらUUIDでいっか〜になるんですよ。衝突回避できるしセキュリティ的にもね。ただ乱数はインデックスの計算コストが大きくなっちゃう。普通DBのインデックスってB -Tree、きほん木構造なんだよな。そうなるとキーをUUID(乱数)にするとインデックス全体にI/O発生するんで、めっちゃ計算コストが高くなる。下記のページで凄く勉強になります。
以下のページから辿り着いたけどこちらも詳しい。ちゃんと解説あるけど、この辺り基本的なアルゴリズムの勉強してれば木構造だと乱数は計算コストかかりそうだな〜ってのはうっすらでも把握できる、やったや〜ん、行きがけ!通りがけ!帰りがけ!
で、このデメリットを回避すべく、ある程度連番性を保った整番体系が各種あって有名なのがsnowflake、もはや古いらしいけど個人開発ならこれでいいんじゃね?って思う。英語だけどInstagramのエンジニアさんがめっちゃ丁寧な解説してくれてる。PostgresのPL/pgSQLやけどね。DBのキーをサーバー側で生成するかクライアント側で生成するかの判断は難しいところやけど、とりまテスト用にキー作成する場合に便利なんでDB側で準備しててもええと思う。
gistにもあったでID生成って小っセ〜社内システムぐらいでも悩むんで、大型システム関わるような人ならなおさら。snowflakeはじめいろんなIDの生成方法解説してくれている。勉強なった。
サーバー立てれないちいかわの味方Docker
VMwaerあんま得意じゃなかったなあ・・仮想DBサーバーとかコンテナのおかげでだいぶ楽になった。コマンドペロッ!やでぺろ。
大好きわかりみ
コマンド忘れた時便利
超実践的。助かる
インフラのコマンドとかはちまちまメモ取ってる。素人だからすぐ忘れるんよね・・
おまけのDB周りメモ
君はコマンド忘れるか、わいは忘れるぞ!
SpringSecurityのロール名プリフィックス
意外と技術記事で書いてない。認可情報のクラスGrantedAuthorityから認可情報とってくるメソッドString getAuthority();にはプリフィックスつけなあかんて・・
デフォルトでは、ロールベースの認可ルールにはプレフィックスとして ROLE_ が含まれます。これは、セキュリティコンテキストに "USER" のロールを持たせることを要求する認可ルールがある場合、Spring Security はデフォルトで "ROLE_USER" を返す GrantedAuthority#getAuthority を検索することを意味します。
次のように、GrantedAuthorityDefaults Bean を公開することにより、異なるプレフィックスを使用するように認可ルールを構成できます。
@Bean
static GrantedAuthorityDefaults grantedAuthorityDefaults() {
return new GrantedAuthorityDefaults("MYPREFIX_");
}
ぼーっとbrew updateかけたおかげでJava複数バージョンインストールしてしまいgradleとのバージョンあってなくてビルドこけるというアホみたいなミスして
(´・ω・`)
真面目にエラーメッセージ読まないとね