やる気がストロングZERO

やる気のストロングスタイル

プログラマー的厨二病の症状と処方箋

僕がそうだったのだが、プログラマーって厨二病を患っている時期があると思う。
厨二病の怖い所は、厨二病に侵されていると自分では気がつけない所だ。
だから、もしかしたら今も僕は厨二病なのかもしれないが、自分の過去を振り返って厨二病の症状とそうならないための対策を書く。

  • 発生時期
  • 症状
    • より新しい技術を善とし、古い技術を悪とする
    • 周りの意見(主にネット)を自分の意見とする
  • 原因
    • 周りが見えてない
    • 自分で考えた意見を持ってない
  • 対策
    • 常に自分が厨二病である可能性を疑う
    • 自分で考える

発生時期

いわゆる「完全に理解した」時期に発症しやすい。

続きを読む

【Golang】sql.Open(), Close()を呼ぶタイミング・場所について考えた

GoでDBアクセスする為のサンプルコードを探すとどこもこんな感じ

func main() {
    # dbコネクション(pool)を取得
    pool, err = sql.Open("driver-name", *dsn)
    if err != nil {
        // This will not be a connection error, but a DSN parse error or
        // another initialization error.
        log.Fatal("unable to use data source name", err)
    }
    defer pool.Close()

    # poolを使ってDBアクセスするコード
    ......
}

Openしたコネクションはアプリ終了時にdefer によってClose()処理されて終わる。理解した。

すべてmain()に処理があったり、数個の関数で構成されているアプリケーションだったら上記で良いけど、 クリーンアーキテクチャ的なレイヤー構造を持ったアプリケーションだったらどうすれば良いのか悩んだ。

続きを読む

アプリケーション要件に関わらずテーブルには事実を記録する

「このアプリケーションのこの機能は【年月日】までしか意識しない。【時分秒】はデータとして不要なのでテーブルにはdate型で【年月日】だけ持たせれば良い。」
と言われた事があったが例えアプリケーションにとって不要でもDBテーブルにはdatetimeとかtimestampで【時分秒】まで保持しておくべきだと思ったので書く。

  • DBはアプリケーション要件を意識しないほうがいい
  • 状況例
    • 【時分秒】を持たなかった場合
    • 【時分秒】を持っていた場合
  • まとめ
  • (補足)実際に【年月日】しかないデータはどう扱うか?

DBはアプリケーション要件を意識しないほうがいい

アプリケーションを意識しまくったテーブル設計はアプリケーション要件に依存してしまう。
だからアプリケーション要件が変わるとテーブル設計を変更しないといけなくなる。
この時、既存データとの整合性をとる必要性まで出てきて大変になる。

続きを読む

扱いやすいテーブル・扱いにくいテーブル

システムのDBには様々なテーブルが定義されている。
色々作業していると「扱いやすいテーブル」「扱いづらいテーブル」がある事に気がつく。

なんとなく見えてきたパターンについて書いてみる。

※もしかしたら当たり前の知識なのかもしれないが、自分の観測範囲ではあまり話題にならないし、前提知識として認識されているようには感じていない。もし体系化されたわかりやすいものがあるなら知りたい。

参考)

続きを読む

バッチ処理のベストプラクティスについて考える

みずほ銀行の本を読んでいて、バッチ処理は鬼門だなと感じた。

個人的な経験でもバッチ処理で悩まされた事は多いので俺的バッチ処理ベストプラクティスを考える。
考慮不足もあるかもしれないので、もしなんかあればツッコミがほしい感じ。

続きを読む

windows wsl2側でGUIアプリケーションを起動し日本語入力ができるようにする

やりたいこと:windows wsl2側でGUIアプリケーションを起動し日本語入力ができるようにする

wslを導入してGolandで開発作業をしようとしたらGolandの設定がうまくいかない。
GoのSDKがどこか聞かれて、wsl側のそれっぽいものを指定しても拒否。
Ubuntuで使ってた頃はこのあたり自動的に設定されてた。

Ubuntu側で用意した実行環境をWindows側のIDEで認識するのは色々と問題があるのかもしれん。。

というわけで、ubuntu側でGolandを実行し、Windows側から触って開発したいと思った。

続きを読む