2/22
これ省略しすぎで何が何だかわからない。
"List all Open Files using Internet port 8081, output in Terse mode. Pass these IDs to eXtended ARGumentS and Kill them with Signal 9. Sleep for 1 second. Set Environment variable to Development and Run the Go language Main file."2/17
INSERT INTO table名(カラムA カラムB ...) VALUES (値A 値B ...)
これは指定したテーブルの**指定したカラムに指定した値を入れる記法
INSERT INTO information (title, created_at, updated_at) VALUES ($1, CURRENT_TIMESTAMP CURRENT_TIMESTAMP)
2/15
delete/api/admin/information/:id
webサーバー(api)に特定のデータを削除するための受付窓口を新規作成
1. DELETE
2./api/admin/information
3./:id パスパラメーター
```pgsql
constraint:OnUpdate:CASCADE,OnDelete:SET NULL;
```
constraintは制約を設定する
OnUpdate: CASCADEは親テーブルの主キーが更新されたら子テーブル側も自動で更新する。
OnDelete:SET NULLは親レコードが削除されたら子テーブルの外部キーをNULLにする
```sql
FOREIGN KEY (user_id)
REFERENCES users(id)
ON UPDATE CASCADE
ON DELETE SET NULL;
```
こういった設計の前提になっているのは、子テーブルの外部キーが親テーブルの主キーを参照しているということ
DB接続をしたい場合はinit関数を定義する。
設定情報からDSNを構築し、PostgresSQLへの接続を確立
DB変数にグローバルな*sql.DBインスタンスを保持する。
close()関数 : DB接続のクローズ処理
func inti(cfg *config.Config)
cfgはパラメーター名にすぎない。
*config.Config型とはこの場合はconfig dirにあるConfig構造体へのポインタ
データベース接続に必要な設定情報が格納されたConfig構造体へのポインタを渡す。
initにcfgを渡して、DBに接続をする。
この世界のあらゆる設計の中でDB接続の設計は必ずすでに初期化されたdatabase.DBをそのまま使ってクエリを実行している。
main.goでdatabase.init(cfg)を実行してDB接続を完了する。
adminsでもinit関数を使っているみたいだけどなんでかな。
host / port / user / password / dbname
(+ sslmode などのオプション)
Data Source Name
DB接続先をまとめて表す文字列のこと
host=localhost port=5432 user=postgres password=secret dbname=app_db
DSNは、fmt.sprintでdsn変数に入れるのはいい。
dev/prodなどの環境変数モードは、ログレベルやDBなどの設定を分岐させるために使用する。
開発向けは便利さで、本番向けは顧客用に見せたり、実際に運用するときに切り替えるということ。
envファイルが読み込めなかった時には、panicかfatallどっちが適切かな
エラーメッセージを返すときは、fmt.errorfで返すのはかなりいいね。
logfatalをコード中には使わないようにしたい。
main関数でload関数を呼び出してenvファイルを読み込んで引数を渡しているね。
load関数に書いたほうがいいけど、まあ誤差かな。
main関数には極力コードが少ないほうがいいからね。
DB,err = sql.Opne("postgres",dsn)
sql.Open
これはデータベースを開く準備をしてくれという意味です。
2/14 docker-commnad
superuser do user modify — append to supplementary group docker — username
sudo usermod -aG docker username
superuser do change owner to root:docker for /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock
superuser do change mode 660 for /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
docker compose up -detach
docker compose up -d
2/13
パッケージ管理snap
stable は「安定版チャネル」の意味。
-
十分にテスト済み
-
本番利用向け
-
バグ修正中心で大きな変更は少ない
beta / edge より信頼性が高いリリース。
安定版チャネル即ち自動更新があっても常に安心安全なパッケージにのみ移行するという仕組みです。後方互換性がしっかりしているということですね。
1.25/stable を追っていれば、1.25.x の新しい修正版に自動更新されます。
FIPSとは?
Federal Information Prpcessing Standards(米国政府の情報処理標準)
stable/candidate/edgeなどと違ってトラックと呼ばれるものにfipsが付く。
例:1.25fips
go mod initでgo module作っていきます。
go mod edit -module module名でmodule名変更できたりします。使うことはあるのかね
go mod edit -require github.com/gin-gonic/gin@v1.9.0
tidyしてくれ
ymlふぁいるにはversionを昔は記載する必要があって使える機能が変わったんだけど、
今は事実上廃止されcompose specに統合されているみたい
dockercomposeのcomposeの意味は、組み立てるという意味。
コンテナをまとめて起動する・組み立てるという意味
servicesは起動するコンテナ名のこと
サービス名は任意に設定できる。
imageは使用するdockerイメージ
pstgres15-alphineと指定すると軽量なalphine linuxをベースにしたpostgersを指定できるけど、まあいいかな。
network とは
コンテナ同士を通信させるための仮想ネットワークです。
http://postgres:5432のようにサービス名で通信できるようになる。
healthcheckは、コンテナが正常に動作するか定期的に確認する仕組み
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-postgres}"]
Postgresが接続を受け付ける準備ができているか確認するために必要です。
パーツごとの意味としては、CMD-SHELL (/bin/sh)を使ってコマンドを実行せよという意味です。
pg_isreadyはPostgresSQLに最初から入っている生存確認用の専用ツールです。DBの応答確認します。
-U ${OSTGRES_USER: -postgres}:
どのユーザーとして確認するか。
困った
唯一の相談相手にして、仕事相手なのにかなり忙しそう
善悪抜きにして人に軽視される特才がある。
人に軽んじられるのは生まれ持ったものなので、ある程度諦めるしかない。
だが、人に好かれないと仕事は回ってこない。
そして、嫌われれば人は孤立する。
だから仕事がないことも仕方ない。
それで毎日お金がもらえるならば何の不満もない。
俺の仕事は人に好かれることだな。
上長からするとおれが暇かどうかなんて心底どうでもいいことで
単に仕事が進めば機嫌がよくなるし、悪ければ関係が悪くなる。