水曜日, 5月 09, 2007

Grails0.5.5-SNAPSHOT 検証...

Grails0.5.5-SNAPSHOT 検証...
T.Yamamotoのブログにあったgrails0.5の新機能をざっくりと検証してみました。(翻訳GoodJob!)


URLマッピング



conf フォルダにある [YourApplicationName]UrlMapping.groovy というファイルに設定する。
ただし、標準のままでは web.xml から読込んだサーブレットなどが動作しなくなってしまう。

以下の方法で回避可能
class LabeltestUrlMappings {
 static mappings = {
  "/ui/$controller/$action?/$id?"{     ← /ui を追加
   constraints {
    // apply constraints here
   }
  }
 }
}

これにより、自動生成されるURLが変更され、他のサーブレットに影響を与えなくなる。

http://localhost:8080/book/list
 ↓↓↓
http://localhost:8080/ui/book/list

createLink等で生成されるURLは自動的に /ui 付きに置き換わるので気にしないでOK
ただし index.gsp のコントローラーのリンクリストは違う方法でリンクしてるので注意
index.gsp内を以下のように修正すればモウマンタイ(何故か変換出来ない)


<div class="dialog" style="margin-left:20px;width:60%;">
 <ul>
  <g:each var="c" in="${grailsApplication.controllerClasses}">
   <li class="controller"><a href="ui/${c.logicalPropertyName}">${c.fullName}</a></li>   ← href 部分に ui/ 追加
  </g:each>
 </ul>
</div>

マッピングの定義は以下のようにする

class [YourApplicationName]UrlMappings {
 static mappings = {
  // /ui/book/show/1 -> /ktkr/nu-n/1
  "/ktkr/nu-n/$id?" {
   controller = "book"
   action = "show"
  }

  // /ui/book/edit/1 -> /ktkr/na-n/1
  "/ktkr/na-n/$id" {
   controller = "book"
   action = "edit"
  }

  // これを指定しておくと、指定されてないマッピングを今までどうりのルールでアクセスできる //
  "/ui/$controller/$action?/$id?"{
   constraints {
  }
 }
}
}

Controller部分のみを変更すると一部動作しなかった、、、Actionまでちゃんと区切った方がよさそう

CommandObject



フォームからのパラメーターにバリデーションがかけられる
src/groovy か controllers フォルダにファイルを作成する。(src/groovy はなんか挙動があやしいので controllers にいれてテスト)

class BookCommand {
 String title
 String mail

 static constraints = {
 title(blank:false,nullable:false,minSize:5,maxSize:10)
  mail(email:true)
 }
}

class BookController {
 def test = { BookCommand cmd ->
  if(cmd.hasErrors()) {
   println "error"
  } else {
   println "ok"
  }
 }
}

book/testへアクセスした時にBookCommandのバリデーションをかけられる。
上記の例だと以下の結果になる
/book/test? ×
/book/test?title= ×
/book/test?title=a ×
/book/test?title=hogehoge ○
/book/test?title=hogehoge&mail=noemail ×
/book/test?title=hogehoge&mail=email@address.jp ○

Plugin



インストール時、アップグレード時に自動実行してくれる Script が追加された。
プラグインの Scripts フォルダに _Install.groovy , _Upgrade.groovy を置くだけ。中身は GANT で記述
2007/5/9 Executing xxx plugin post-install script ... のメッセージは出たが実行されてないもよう

GORM - List Map



List

static hasMany = [books:Book]
List books

今まで hasMany だけだと Set できてたけど、List でかいてやると List で来る

Map

Map hoge

普通に hasMany っぽいテーブルが出来る
テーブルが出来るのはちょっとやだなぁ、、、

GORM - Embedded



one-to-one の関係をテーブル的に一つにまとめられる機能

class Book {
 static embedded = ['saleMaker','modMaker']

 String title
 String author

 Maker saleMaker
 Maker modMaker

 static constraints = {
  modMaker(nullable:true)
 }
}

2007/5/9 テーブルはちゃんと作られる バリデーション等も機能するが、保存時(実際にDBへ書き込みにいく時)に以下のエラーが出る
Could not execute JDBC batch update; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

Base64 エンコーディング



.encodeAsBase64() でエンコードされる
文字列、数値、日付、なんでもエンコード出来た


新機能はなかなかうまくいきませんね、早く安定版になってほしいです

火曜日, 1月 09, 2007

MacとAdiumとYahoo! Messanger

Mac買いますた

黒かったんで ^^

白だけだったら買わないですよね・・・でも性能的には同じなのに黒の方が高いってのはどうかと。

でYahoo!Messangerいれたんですが、こいつが激しくウンコだったので速攻消したわけですよ。

んでAdiumってのをみつけていれたんですが、こいつが激しく文字化けなんですよ。

なんでだろーと悩む事数日・・・

Yahoo!MessangerとYahoo!Japanは別設定でした orz

ブログにかくほどの事でもないですが、世の中のMacユーザーのあと2人ぐらいは同じ問題で悩んでるはずです。きっと。

・・・

というかいてほしい orz

月曜日, 12月 11, 2006

Layoutについて

yui-extの目玉(?)であるレイアウトについて

一言でいうとレイアウトを 上、下、左、右、真ん中 で切り分けて表示してくれるもの。
これらの各パーツをDIVにしておいといてyui-extを設定するだけで完了。
DIVの順番とかサイズでスタイルが崩れるとかIEがうんことかマカーのSafariとかなーんも気にする必要なし、わお!(゚д゚)

<div id="west">
menu
</div>

<div id="north">
header
</div>

<div id="south">
footer
</div>

<div id="center">
main contents
</div>

基本はこんだけ。
もちろんこれ以上に複雑なレイアウトにしたいだとか、そんな事も簡単に出来ちゃう。
レイアウトの中にレイアウトを入れられるので、真ん中を更に上下で区切ったり、更にその上を左右で区切ったり、更に(以下略

IEハック用に余分なスタイルを入れたり、ブラウザ間で調整したり、そんな事に時間を費やすのは開発もデザインも望まない事だお( ^ω^)

金曜日, 12月 08, 2006

始まりの時

というわけで始めます。

最近ハマったもの、yui-ext (http://www.yui-ext.com/deploy/yui-ext/docs/)
Yahoo!UIはあんまり好きじゃなかったんですが、このextはスゴイです。
何がスゴイって実装が簡単。

今までの経験からこの手のリッチなjsは

コピペ→エラー→ちょwwwww→じっくり読んで手直し→ktkr!

というパターンだったのですが、yui-extなら・・・

コピペ→krkt!

あらビックリ、こんなに簡単。
動きもとってもステキな感じがします。
日本語ドキュメントが無いことと、本体のサイズがでかい事が難点ですが・・・
(後者はダイエットしたりgzipすれば多少よいかもしれません、そこらへんはいずれ試してみたいです)
簡単なだけでなく濃い事もガンガン出来そうなので、メモがてら残していけたらいいなーという所で終わり。