ScalatraでJSONをrequest/responseで扱いたい場合にはscalatra-jsonを使うのが便利。
導入方法
build.sbtに以下のように追加します。
※バージョンは適宜変えてください。
libraryDependencies ++= Seq(
"org.scalatra" % "scalatra" % "2.1.1",
"org.scalatra" % "scalatra-lift-json" % "2.1.1"
)
ScalatraでJSONをrequest/responseで扱いたい場合にはscalatra-jsonを使うのが便利。
build.sbtに以下のように追加します。
※バージョンは適宜変えてください。
libraryDependencies ++= Seq(
"org.scalatra" % "scalatra" % "2.1.1",
"org.scalatra" % "scalatra-lift-json" % "2.1.1"
)
TODO 本文は後で書く
id:cimadai (@cimadai)さんにお誘いを受けまして執筆のお手伝いをさせていただきました。
JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技
Webアプリケーションを作るときの杖(not 魔法の杖) or 冒険の地図というのがコンセプトの一部です。
JavaScriptの知識はWebを検索すればすぐに見つかるようになりました。
しかし、見つかるものはすでに古くなっていたり、いい記事にたどり着くまでに時間がかかる事も多く、
こういうのをなんとかしたいというのがこの本の目的です。
O'Reilly Japan - Head First JavaScriptを読み終えた初心者から中上級者まで広く楽しんでいただけるような材料を取り揃えさせていただきました。
特にデバッグ&テストに多くのページを用意しております。
id:cimadaiさん、id:rokujyouhitoma(@rokujyouhitoma) をはじめ, id:kiris60(@kiris)さん、浜辺 将太 さん、藤木 祐介 さんら著者達が
選りすぐった読んですぐに役に立つ知識、イベントのような押さえておくべき知識やHTML5,
最新のライブラリの話など盛りだくさんの一冊になっております。
アプリを開発するときに傍らにおいて使う事を想定しています。
是非他のJavaScriptの良著ともに開発を行っていただけると良いなと思っております。
本書中でも何冊か詳解したうちの何冊化を紹介しておきます。
Secrets of the Javascript Ninja
初めて読み通した技術書であるサイ本の日本語版の第6版が出る時期に本書を出せたのは、感慨深いものがあります。
本書は8月31日に発売予定です。是非一度手に取って読んでいただけると幸いです。
翻訳周りの話をLTしてきました。続きはあとでかく
前から出る出るっていう話だけ出ていたPlay!framework2.0本が出ましたね。
Java/Scalaで別々の本になっています。
Manning: Play for Scala
Manning: Play for Java
作者は、Scala版はドキュメントの責任者をやってる Peter Hilton、Java版は1.2.X系のリーダーNicolas leroux
とりあえず両方買って現状のものを斜め読みしたので現状(4/27)の感想を書いときます。
#play_ja 速く"Advanced topics "の章でないかな。Play2.0初心者は買ってもいいけど、中級者以上はもう少しまってから買ってもいいと思う。あとPlay2.0はAsync周りが強みなんだから、その辺をもっと書いてくれんかのう。
#play_ja この書評は個人の感想ですので、すべてのPlay2.0ユーザーがこう思うことを主張しているわけではありません。
まだ全体が書かれてないので何とも言えないのですが、一般的なWebシステムの作り方+テスト+Deployが
中心になりそうです。Tutorial++って感じですね。
上でも書いたけど、どちらかというと初心者〜中級者向けがターゲットみたいです。
これから始めたいって方は買ってもいいとおもいます。
あとJavaの方が若干技術よりな話題が多い気がする。
Play2.0の目玉機能である非同期なところとか、Comet/Websocket周りとかの話はなさそう。
個人的には速いところPart III: Advanced techniques が読みたいですね。
あと現状MEAPなので、これ読んでみたいとかはOpen Forumで言えるといいなー
http://www.manning-sandbox.com/forum.jspa?forumID=810
Play2.0ではプラグインの書き方の資料はありません。MLを見てる感じだとsbtのsubprojectとして
プラグインを書くのが一般的のようです。他のモジュールを参考にして、github上に
現状のModuleはフォルダ構成がまちまちなのですが、今後を考えるとsbtの構成で書くようにした方が良さそう
. ├── build.sbt ├── project │   ├── plugins.sbt ├── src │   └── main │   └── scala │   └── com │   └── github │   └── masahitojp │   └── play2 │   └── sample │   └── SamplePlugin.scala └── version.sbt
Scalaでの書き方を説明します。play.api.Pluginを継承します。
Play!1.Xではたくさんのフックイベントが存在するのですが、2.Xではいまのところ
onStart/onStop/enabledのみ使えます。
package com.github.masahitojp.play2.sample import play.api._ class SamplePlugin(val app: Application) extends Plugin { val name = "sample" // 起動時に実行される override def onStart() { Logger.info("sample on start") } // アプリケーション終了時に実行 override def onStop() { Logger.info("sample on end") } // アプリケーションの有効フラグ override def enabled() = !app.configuration.getString("SamplePlugin") .filter(_ == "disabled").isDefined }
他のモジュールではSonatypeを使ってmaven projectを使うのが一般的みたい。
公開の仕方はこちらを参考にすると良いです。
なおpgp用のキーの作成が必要です。
また、sonatypeを使う場合はbuild.sbtに以下の行を加えておくと良い用です。
// Configuration required for deploying to sonatype publishMavenStyle := true publishTo <<= version { (v: String) => val nexus = "https://oss.sonatype.org/" if (v.trim.endsWith("SNAPSHOT")) Some("snapshots" at nexus + "content/repositories/snapshots") else Some("releases" at nexus + "service/local/staging/deploy/maven2") } pomIncludeRepository := { _ => false } publishArtifact in Test := false pomExtra := ( <url>http://github.com/masahitojp/play2-sample-module</url> <inceptionYear>2012</inceptionYear> <licenses> <license> <name>Apache 2</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> <comments>A business-friendly OSS license</comments> </license> </licenses> <scm> <url>git@github.com:masahitojp/play2-sample-module.git</url> <connection>scm:git:git@github.com:masahitojp/play2-sample-module.git</connection> </scm> <developers> <developer> <name>Nakamura Masato</name> <email>randomstep@gmail.com</email> <url>http://masahito.me/</url> <roles> <role>Author</role> </roles> <organization>Nakamura Masato</organization> </developer> </developers>)
val appDependencies = Seq( // Add your project dependencies here, "com.github.masahitojp" %% "play2-sample-module" % "1.0.0-SNAPSHOT" ) val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings( // Add your own project settings here resolvers += "Sonatype OSS Snapshots Repository" at "http://oss.sonatype.org/content/groups/public" )
優先度:使いたいplginのクラス
優先度は小さいほど先に実行されるようです。
10000:com.github.masahitojp.play2.sample.SamplePlugin
まだsbtについてはちゃんと理解できていませんが、pluginの書き方は理解できました。
本当は こちら の用にgithubから直接
取得する方法を調べたのですが、うまく行きませんでした。こちらは後で追加調査する予定です。
先人に感謝。
Play Framework 2.0 ソースコードリーディングの会 - [PARTAKE]で発表してきました。
これでPlay2.0での発表は3度目になりました。
ソースコードの読み方の話もしたんですが、また今度記事にします。