Open8

気になった記事: 2024年8月

かずかず

15

https://pnpm.io/ja/docker
https://pnpm.io/ja/cli/install#--prod--p

  • pnpmをDockerで扱う際には、installする内容をcacheできそう
  • pnpmのinstallオプションでprodを指定すると、devDependenciesの項目を無視できる
  • Dockerでは本番用のbuildを用意するときには、install --prodオプションで依存関係のみinstallして、ほかのステージでbuildを行い、それらを最終ステージでコピーするとイメージサイズを下げられる
かずかず

20

https://qiita.com/nucomiya/items/54d716729ffa47312f0d

  • 条件などでネストが深くなる時は、早期リターンなどのガード節を利用して、ネストを浅くして可読性を上げる
  • 一貫性のある書き方を意識する
    • 関数・変数名の付け方の統一
    • 条件式の統一
  • コードドキュメントの作成するのもあり
  • 不要なコメントを削る
かずかず

21

https://zenn.dev/demouth/articles/440924923293cb

  • Goで物理演算を行うライブラリとして、Chipmunk2DというC言語製のライブラリをGoに移植したものがある
  • Chipmunk2Dの要素として以下の3つの要素を抑えると良さげ
    • Body: 質量・位置・回転・速度を持つ
    • Shape: 形状を設定する・オブジェクトの表面特性など(摩擦・弾力性)
    • Space: Body・Shapeを配置する場所
  • Ebitenと組み合わせて利用することで、さっくりと物理エンジンを利用したゲームを作りやすいかも
かずかず

24

https://zenn.dev/shunjuio/articles/538238aa7f1d02

  • MySQLのトランザクションに4つの性質がある
    • A: 全部実行されるか、全部実行されないか
    • C: トランザクションの前後で整合性が保たれている
    • I: トランザクション実行中に、ほかのトランザクションの影響を受けない性質
    • D: トランザクション実行後には、そのデータは永続化されて、うちなわれない
  • I(独立性・隔離性)は、レベルを設定できる
    • READ UNCOMMITED: 他のトランザクションがコミットしていない変更が読み取れる
    • READ COMMITED: 他のトランザクションのコミットされた変更のみみれる
    • REPETABLE READ: トランザクション開始時点のデータを読み込む: ほかのトランザクションのコミットされていても読めない
    • SERILIZABLE: トランザクションの実行が直列
  • 複数トランザクションの並列実行時の問題
    • ダーティーリード: ほかのトランザクションで、自分の未コミットの変更を読み取れる
    • ファジーリード: 同じトランザクション内で同じ行を複数回読んだときに、異なる結果を得られる(Updateのケース)
    • ファントムリード: 同じトランザクション内で同じクエリを再実行する際に新しい行が追加される(Insertのケース)
    • ロストアップデート: 複数トランザクションで同じデータに変更を加えてコミットじに一方の変更が失われること
  • ロストアップデートを失せぐためのロック(InnoDB)
    • 共有ロック : 複数ユーザー同時に同じデータ読み込み可能&変更不可
    • 排他ロック: データの読み取り・書き込みの両方を一度に一つのトランザクションしか許可しない

UPDATE・DELETEは排他ロックが確保されるっぽいけど、トランザクションの分離レベルが高いと取れないのか?
=>あってそう: https://qiita.com/shohei1913/items/52f50ae1f75ffec2696b#repeatable-readで注意しなければならない点
次これ見る
https://qiita.com/p2sk/items/38fd95b142b07acf7700

かずかず

27

https://zenn.dev/koya_iwamura/articles/7e7482c7222e37

  • Compilerが改善したっぽい
  • 以下のシグネチャがrangeで利用できるように
    • func(func() bool)
    • func(func(k) bool)
    • func(func(k,v) bool)
  • イテレータ関数のためのパッケージもある
  • uniqueパッケージやstructsパッケージの追加