チラウラヤーン3号

その辺のプログラマーのチラ裏です。

ORM

Golang ORMs を読んで golang での ORM パッケージを選定、検討してた。この資料では ORM ライブラリとしての比較項目がリストアップされていて、また各ライブラリの特徴としてサンプルコードも添えてくれていて、とても助かるまとめになっていた。

その中から絞り込んだのが、

の2つ。開発がアクティブで機能的にも良さ気だった。

最終的に (twitter タイムラインでもよく言及されていた) gorm に決めた。


2014/08/05追加 → boolian の扱いがよく分からなくて gorp にするかも…


ちなみにスライド最後の 全体観 には、

Overall notes
     - No lazy loading

とありました。

マイグレーション

マイグレーション機能が付いているものもあったが、単独でもパッケージになっているものがあるもよう。

バリデーション

フォームなどでデータバリデーションはどうするんだという話題については、

[go-nuts] How do you handle data validation? - Grokbase

というページが見つかり、

I usually have a HTTP API serving JSON and I do validation through JSON Schemas.

とのレスがあった。

golangに限ったの話題ではないが、 JSON Schema について調べる。

少し調べて出てきた疑問が「パスワード入力フィールドで、確認用入力フィールドとのマッチングはどうやるのか」というものだった。

JSON Schema - Advanced Example

を読むと、

we use patternProperties to match other property names via a regular expression (note that it does not match /);

と書いてあって、

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "/": {}
    },
    "patternProperties": {
        "^(/[^/]+)+$": {}
    },
    "additionalProperties": false,
    "required": [ "/" ]
}

この中の、

    "patternProperties": {
        "^(/[^/]+)+$": {}
    },

上記部分がポイントなのかな。