コアクラフト株式会社のスタッフによる技術ブログです。プログラムに関する記事等を投稿していこうと思っています。

2012年2月28日火曜日

RIA Services で T4 Template を使って Entity の継承を差し替える

RIA Services を素のままで使うと、クライアントに生成されるモデルクラスは System.ServiceModel.DomainServices.Clien.Entity を継承したものになります。
この場合、モデルクラスに共通のコードを書くようなことができません。
そんな時、RIA Services T4 Template の機能を使って、自分で生成されるコードを制御しましょうというお話です。
今回は Entity クラスの継承をやめて 独自の EntityBase というクラスに差し替えてみたいと思います。

サーバーサイドのコード

クライアントサイドのコード

ポイントは MyClientCodeGenerator に DomainServiceClientCodeGenerator という カスタム属性をくっつけてるところです。これは System.ComponentModel.Composition.ExportAttribute を継承したクラスで DomainSetvice クラスからクライアントコードが生成される時に MEF が勝手にこちらの Generator を 使うようにしてくれるみたいです。

サンプルなので、簡単な実装ですが、CSharpEntityGenerator の方は Refrector で見ると結構細かいことやってます。どこまで実装するかはめんどくささとの兼ね合いで判断してください。 また、今回は Entity の差し替えでしたが、RIA Services で生成されるコードはすべて差し替え可能なので、いろいろ見てみるといいかもしれません。

Djangoの管理画面でインライン編集でのバリデーション

Djangoの管理画面はとても便利ですよね。

リレーション先のモデルをインラインで編集することも簡単にできます。

とても便利なインライン編集機能ですが、インライン上でバリデーションを追加する場合
あまり情報が無かったので覚書として載せておきます。


インラインで編集できるように inlines に指定します。

Inline フォームの formset にバリデーションを記載したフォームセットを設定します。

BaseInlineFormSet の clean メソッドにバリデーションを記載します。
cleaned_data にはフォームで入力された値が入ってきます。

2012年2月22日水曜日

MYSQLでストアドファンクション

SQLServerでよくストアドファンクションを使用していたので、MYSQLでも関数を作成してみました。
書き方もほとんど変わらなかったのですが意外に情報が少ないので覚書。

テスト用関数(testfunc)を作成します。
無駄にカーソルを使ってみました。 SELECTの結果を変数に入れる場合、SQLServerとは異なりSETを使わずに と書きます。

2012年2月18日土曜日

LinuxでPPTPクライアントを使い接続を維持させる

LinuxをPPTPクライアントとして常に接続するように設定する必要があったので
スクリプトを作成したので覚書として掲載しました。
ponで接続できる環境になっている事が前提です。
下記スクリプトを rc.local で起動するように設定すれば終了です。

技術ブログはじめました

技術ブログはじめました!
プログラムに関する記事等を投稿していこうと思っています。