やる気がストロングZERO

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

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

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

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

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

参考)

続きを読む

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

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

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

続きを読む

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

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

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

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

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

続きを読む

Go echoでPOST複数パラメータをsliceで受け取る方法

postでidを以下の様に複数送った時、

id = 1
id = 2

Go echoでスライスで取得するには以下のようにすると取れた

func (cont *Controller) Create(c echo.Context) error {
        .....
    params, err := c.FormParams()
    if err != nil {
        //パラメータ取得に失敗
        c.Error(err)
        return err
    }
    ids := params["id"] // []string{"1", "2"}
        .......

FormValue("id")だと"1"しかとれない。

重複Insertを防ぐ(postgreSQL)

例えばユーザー名の重複登録をNGとする場合、こんな感じでバリデーションと登録処理を書くことが多い。

※疑似コードです

begin
name = "山田太郎"

// dbからデータを取ってみて存在しないことを確認する
user = getUserByName(name)
if user != null {
    return false 
}

createUser(name)
commit

return true

でもこれだと名前が重複したユーザーが登録されてしまう可能性がある。

理由はこちら:

yaruki-strong-zero.hatenablog.jp

続きを読む

OSSコードリーディングをスムーズに進めるためのメモ

OSSのコードリーディングをしてみる中で、内容を把握するためにして良かったと思った事をメモっておく。

リーディング対象にしたもの: github.com ※主にはfilebeat

続きを読む