現在の課題

日時型のマッピング

model.MappedDatetimeのformat/parseは、object LiftRulesのdateConverter(うろ覚え)を経由して、JavaのSimpleDateFormatで処理してるわけだが、date.toStringのような「日本人的には馴染みのない」形式なので、切り替えたい。
が、それが難しい。
dateConverterは値(val)であり、初期値はファクトリから受け取っているが、そのファクトリはそこでnewされている。調べる前はbootstrap.scalaの中で指定すりゃ大丈夫かなとも思ったが、ちょっと想像できない。なんかやり方はあるのかも知れないが…。
ということで、model.MappedStringをベースに、validate/format/parceを追加して自作してしまおうと計画中。簡単なものはtraitを使ってプラグイン的に追加することは出来たので、それほど困難ではない。
…って、ここまで書いてようやく気づいた。traitでoverride defして、mix-inすればいいのか。「MyMappedDatetime extends MappedDatetimeとかしなきゃいけないかな」と思い込んでいた。Java脳だ。最終的にはクラスとしてまとめたほうがいいのかも知れないが、取りあえずとしてはmix-inで行けばいいや。

外部キー参照のマッピング

ActiveRecordみたいに、Mapper同士のリレーションを定義できる。らしい。が、どこまで出来るのかまだよく調べていない。
とりあえず外部キー参照のみ定義してみたmodelに対してCRUDifyでCreateさせようと思ったが、外部キー参照の項目は編集できない形になってしまった。何かあるんだろうか、何かあるのかな。
調査が追いつかなければ(もしくは飽きたら)、ここも取りあえず適当に自作しておいて、必要であれば切り替えるようにしようと計画中。
この辺りの「よく分かんないけど自作しちゃえ」的部分は、それなりに集約させるように気をつければ、あとで方針を変えるときの労力が少ない。traitを使って段階的に構造化できるようで、とてもいい。

toForm

modelの入力フォームをベタベタで描いているので、toFormに集約。自作マッピングも。

DatePickerがchromeで動かない?

http://jqueryui.com/demos/datepicker/を取りあえず埋め込んでみたが、上手く動いていない様子。なんでだろう。優先度は低いけど、ちょっと気になる部分。Liftとは直接関係はないかもしれないが。

リクエストパラメータの扱い

取りあえずJavaServlet的な扱いしか出来ていないので、より良いやり方がないか調査。

User Role

Liftには標準でログイン機構をサポートしているわけだけど、Roleの設定もできるようなコードをどこかで見たかも知れない。そういうクラスがあったような気がするので調べる。

Quartz Scheduler

定時実行してくれるservletもあり、軽負荷サーバなので、取りあえずそれを使う方針。ただ、Scalaなんだし、Actorでもっとかっこいいことできそうで面白そうだなと思う分野。これは課題ではない。

sbt ~jetty-run

リソースのリークがあるらしく、コンパイル&再配置を繰り返すと、OutOfMemoryで落ちる。対処できると助かる。

地味なところで、::と:::

"hoge" :: List("a","b","c")
List("hoge") ::: List("a","b","c")

listへの要素追加は::、list同士の連結は:::。
CRUDifyのmenusをメニューに追加するときに、10分位悩んでしまった部分。いや、正確には、途中のツイートをいれれば30分くらいだわ。

まとめ

仕事で使うと本気度が上がるから、勉強になるね。