ネコと和解せよ

技術的なあれこれの備忘録のつもり

「良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方」を読んだ

読んだのは嘘言ってないんですが、読んだの半年ぐらい前でうろ覚えなので正しくないかもしれない

買い方としては色々あって、最近は電子書籍でしかもPDFとかEPUBで売ってくれるとこもあって、 自分も技術評論社さんのとこでPDFで買いました。 gihyo.jp

結論から書くとITエンジニアになって2~5年ぐらいのコード書きで、
なんかこの書き方気に入らない、もっといい書き方あるんじゃないか
みたいなことを頻繁に思い出したら読んでみるのおすすめです。

特に値オブジェクト(Value Object)は知らなかったので勉強になりました。
というかDDDに興味出てきて最近はこれパラパラ読んでます

www.shoeisha.co.jp

最後に書いておくと結構Twitterではこの本批判されてたりしますが、
個人的には読んで良かった本でした。批判があっているのあまり動向をチェックしてなかったのでわかりませんが、
誰にとっても完璧な本なんて存在しないので仕方ないねというお気持ちで文を締めておきます。おわり

PyMySQLで取得したレコードのカラムにドットアクセスしたい

tl;dr

  • record["column_name"]でなく、record.column_nameでアクセスしたい
  • DictCursorを参考にDataclassCursorを作る
  • DataclassCursorでdictではなくdataclassを動的に作成する
  • 動的に定義したdataclassのインスタンスをレコードとして返す

DataclassCursor実装例

github.com

続きを読む

M1 MacでLaravelのDocker環境を立ち上げようとするとコケる

以下のリンク先の手順でdocker-compose.ymlを用意し
https://laravel.com/docs/8.x#getting-started-on-macos

docker-compose buildを叩くと以下のようなエラーが出る

続きを読む

Javaでラムダ式を使ってtry-catchの共通化を試みる

tl;dr

  • 次のような処理のtry-catch節の共通化を試みる
class Main {
    public static void main(String[] args) {
        try {
            // 処理1
        } catch (MyException e) {
            // 共通処理
        }

        try {
            // 処理2
        } catch (MyException e) {
            // 共通処理
        }
    }
}
  • Exceptionをthrowできる Function Interfaceを定義する
  • 実効する処理のFunctionとエラーハンドラ-を受け取る関数でtry-catchする
続きを読む

ProphetをDockerのPythonコンテナにインストールしようとしてハマった話

tl; dr

  • DockerのPythonコンテナにProphetをインストールしようとしたが失敗した
  • インストール時にメモリ4GB必要
  • Dockerの設定でリソース割宛を4GB以上にしたらインストールできた
続きを読む