Open8

ちいかわPGの個人開発メモ

ピン留めされたアイテム
horino_ahorino_a

わい「個人開発始めようと思ってんねんけど、やっぱPaaSとかPostgres少ないなあ・・Herokuかあやっぱ」
友人Nくん(インフラ)「そんなんVPSにすれば好き放題やぁぁぁんんけぇぇぇぇ!!」
わい「ふぇぇぇサーバーとかたてれないよう(´;ω;`)」
ここにサーバー立てれない、アラフィフおばちゃんの被り物を被ったちいかわプログラマが爆誕した。そんなちいかわPGの奮闘を記録するのが目的

horino_ahorino_a

要件定義編

ちいかわ個人開発でも簡単なドキュメントはあったほうがいいかなとは思う。忘れるし

  • 要件定義書
    • 概要
    • 目的
    • 簡単なユーザーターゲット
    • 簡易業務フロー
    • 要件リスト
      アプリ内で使う日本語もここで書き出し整理しておく。校正はサクッと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'という猛烈にダサいカラーテーマが大のお気に入り。まじ痺れるダサさ。
https://marketplace.visualstudio.com/items?itemName=RobbOwen.synthwave-vscode
なにがダサいって、ひ か る!
https://youtu.be/UUSg75ksTXI

・・いや、普通のベーシックなテーマでいいんですよ、こちらがvscodeのカラーテーマで良かったです。
https://baapuro.com/VScode/one/
色んなカラーテーマが選べるよん
https://vscodethemes.com/

ターミナルとかは下記参考に多少配色変えて背景半透明な中2テイストで使ってるだけ。
https://qiita.com/ucan-lab/items/b3132efb4f3907899a60
若い人は専用ソフトとか入れて凝ってるなあ。なんせ最初に使ったOSがMS-DOSとかなんで全然気にならないやwさすがにWinはWindows Tarminal使えた方がいいけど。

horino_ahorino_a

brew updateがこける(´;ω;`)ブワッ

おばちゃん今年初め親の介護始まっちゃって5ヶ月ほどまともにPC触れなかったので、久々にbrew updateかけると全く!終わらなく!なっちまったんですよ。Homebrewは開発が活発で1回のupdate結構なDL量とのこと。まあ、あるあるなんやろうなあ。まずbrew docterでちゃんと原因調べてからやけど。
gitは最新の履歴だけcloneするshallow cloneがあるらしくこいつを試してみる。
https://qiita.com/usamik26/items/7bfa61b31344206077fb
https://qiita.com/jintz/items/b2a80590531c373bae39

これでもダメだったので結局gitのpostバッファを大きくして対応。
https://qiita.com/HeRo/items/c5e10a820fad6a7a0f30#:~:text=core.quotepath false-,Post,-バッファを大きく
https://stackoverflow.com/questions/24952683/git-push-error-rpc-failed-result-56-http-code-200-fatal-the-remote-end-hun/36843260#36843260

みんなまめにbrew updateしような・・

horino_ahorino_a

VSCodeでJavaのプロジェクト開発中いっぱいエラー出ちゃったよぅ

(´;ω;`)ブワッ
・・・まああるあるなんですが、開発中に依存関係こけちゃってでエラー出ちゃったよとかの対応っす。たまにしかないんで忘れんるんで覚えてる間にメモ。

F1->Java: Clean Java Language Server Workspace
https://github.com/microsoft/vscode-java-debug/issues/1059#issuecomment-939246774

プロジェクトの管理周りの公式ドキュメント
https://code.visualstudio.com/docs/java/java-project#:~:text=In some rare cases%2C you,language server rebuild your dependencies.

horino_ahorino_a

DBのプライマリーキーなんにしよ。

まあな〜んも考えなかったらUUIDでいっか〜になるんですよ。衝突回避できるしセキュリティ的にもね。ただ乱数はインデックスの計算コストが大きくなっちゃう。普通DBのインデックスってB -Tree、きほん木構造なんだよな。そうなるとキーをUUID(乱数)にするとインデックス全体にI/O発生するんで、めっちゃ計算コストが高くなる。下記のページで凄く勉強になります。
https://techblog.raccoon.ne.jp/archives/1627262796.html
以下のページから辿り着いたけどこちらも詳しい。
https://jp.quora.com/データベースでユニークキーにUUIDを使うメリットは何

ちゃんと解説あるけど、この辺り基本的なアルゴリズムの勉強してれば木構造だと乱数は計算コストかかりそうだな〜ってのはうっすらでも把握できる、やったや〜ん、行きがけ!通りがけ!帰りがけ!

で、このデメリットを回避すべく、ある程度連番性を保った整番体系が各種あって有名なのがsnowflake、もはや古いらしいけど個人開発ならこれでいいんじゃね?って思う。英語だけどInstagramのエンジニアさんがめっちゃ丁寧な解説してくれてる。PostgresのPL/pgSQLやけどね。DBのキーをサーバー側で生成するかクライアント側で生成するかの判断は難しいところやけど、とりまテスト用にキー作成する場合に便利なんでDB側で準備しててもええと思う。
https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c
gistにもあったで
https://gist.github.com/beginor/9d9f90bc58e1313f6aecd107f8296732

ID生成って小っセ〜社内システムぐらいでも悩むんで、大型システム関わるような人ならなおさら。snowflakeはじめいろんなIDの生成方法解説してくれている。勉強なった。
https://qiita.com/kawasima/items/6b0f47a60c9cb5ffb5c4

horino_ahorino_a

サーバー立てれないちいかわの味方Docker

VMwaerあんま得意じゃなかったなあ・・仮想DBサーバーとかコンテナのおかげでだいぶ楽になった。コマンドペロッ!やでぺろ。

大好きわかりみ
https://tech-lab.sios.jp/archives/18811

コマンド忘れた時便利
https://www.tohoho-web.com/docker/

超実践的。助かる
https://www.kimullaa.com/posts/201806141500/#ロケール設定

インフラのコマンドとかはちまちまメモ取ってる。素人だからすぐ忘れるんよね・・

おまけのDB周りメモ

君はコマンド忘れるか、わいは忘れるぞ!
https://dev.classmethod.jp/articles/postgresql-organize-command/
https://postd.cc/postgresql-unknown-features/#14
https://qiita.com/gologo13/items/7e4e404af80377b48fd5

horino_ahorino_a

SpringSecurityのロール名プリフィックス

意外と技術記事で書いてない。認可情報のクラスGrantedAuthorityから認可情報とってくるメソッドString getAuthority();にはプリフィックスつけなあかんて・・

デフォルトでは、ロールベースの認可ルールにはプレフィックスとして ROLE_ が含まれます。これは、セキュリティコンテキストに "USER" のロールを持たせることを要求する認可ルールがある場合、Spring Security はデフォルトで "ROLE_USER" を返す GrantedAuthority#getAuthority を検索することを意味します。
次のように、GrantedAuthorityDefaults Bean を公開することにより、異なるプレフィックスを使用するように認可ルールを構成できます。

@Bean
static GrantedAuthorityDefaults grantedAuthorityDefaults() {
	return new GrantedAuthorityDefaults("MYPREFIX_");
}

https://spring.pleiades.io/spring-security/reference/servlet/authorization/architecture.html

horino_ahorino_a

ぼーっとbrew updateかけたおかげでJava複数バージョンインストールしてしまいgradleとのバージョンあってなくてビルドこけるというアホみたいなミスして
(´・ω・`)
真面目にエラーメッセージ読まないとね