xitrum howtos

30
Xitrum Web Framework HOWTOs Scala勉強会 2014/07/11 Ngoc Dao Takeharu Oshida With live coding demos

Upload: ngoc-dao

Post on 12-Nov-2014

3.226 views

Category:

Documents


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Xitrum HOWTOs

Xitrum Web Framework HOWTOs

Scala勉強会 2014/07/11Ngoc Dao

Takeharu Oshida

With live coding demos

Page 2: Xitrum HOWTOs

Self intro

http://mobilus.co.jp/archives/306

Page 3: Xitrum HOWTOs

Xitrum Guidebookhttp://xitrum-framework.github.io/guide/en/index.html http://xitrum-framework.github.io/guide/ja/index.html

Page 4: Xitrum HOWTOs

How to create a new Scala web project?

Page 5: Xitrum HOWTOs

xitrum-newhttps://github.com/xitrum-framework/xitrum-new

Download project skeleton and explain: • directory structure • build.sbt • plugins.sbt

Page 6: Xitrum HOWTOs

How to create Eclipse or IntelliJ

projects?

Page 7: Xitrum HOWTOs

sbt/sbt eclipse sbt/sbt gen-idea

• ~/.ivy2 • Scala plugin for Eclipse and IntelliJ

http://scala-ide.org/http://www.jetbrains.com/idea/features/scala.html

• Build Path

Page 8: Xitrum HOWTOs

How to create a route?

Page 9: Xitrum HOWTOs

def fib(n: Int): Int = if (n < 3) 1 else f(n - 1) + f(n - 2) !--------------------------------------------- !import xitrum.FutureAction import xitrum.annotation.GET !@GET("fib/:n") class FibAction extends FutureAction { def execute() { val n = param[Int]("n") val ret = fib(n) respondText(ret) } }

• Exploratory Coding: sbt/sbt console • Get param from path, URL query, form, header • Action, FutureAction, ActorAction, WebSocketAction, SockJSAciton • respondText, respondJson, respondView etc.

http://xitrum-framework.github.io/guide/en/action_view.html#respond-to-client

Page 10: Xitrum HOWTOs

How to run?

Page 11: Xitrum HOWTOs

• Run with SBT:sbt/sbt run

• Run with Eclipse • Run with IntelliJ

• routes.cache • log/xitrum.log • tmp

Page 12: Xitrum HOWTOs

How to autoreload classes and routes?

Page 13: Xitrum HOWTOs

• Run with SBT:sbt/sbt runsbt/sbt ~compile

• Run with Eclipse • Run with IntelliJ

• xitrum.DevClassLoader.ignorePattern • xitrum.Config.autoreloadInDevMode

Page 14: Xitrum HOWTOs

How to debug?

Page 15: Xitrum HOWTOs

• Debug with Eclipse • Debug with IntelliJ

Page 16: Xitrum HOWTOs

How to create reverse route?

Page 17: Xitrum HOWTOs

url[FibAction]("n" -> 3)

• publicUrl("foo.js") • publicUrl("dir", "foo.js", "foo.min.js") • webJarsUrl("underscorejs/1.6.0/underscore.js") • webJarsUrl("underscorejs/1.6.0", "underscore.js", "underscore-min.js") • http://xitrum-framework.github.io/guide/en/static.html

Page 18: Xitrum HOWTOs

How to run in production mode?

Page 19: Xitrum HOWTOs

sbt/sbt xitrum-package !

script/runner <main class>

• XitrumPackage.copy • Tune memory • script/start • http://xitrum-framework.github.io/guide/en/deploy.html

Page 20: Xitrum HOWTOs

How to debug in production mode?

Page 21: Xitrum HOWTOs

script/scalive

• Oracle JVM is required • Can't use OpenJDK

Page 22: Xitrum HOWTOs

How to autogenerate RESTful API client code?

Page 23: Xitrum HOWTOs

/xitrum/swagger

• http://xitrum-framework.github.io/guide/en/restful.html#documenting-api • http://107.167.187.67/xitrum/swagger • https://github.com/wordnik/swagger-codegen

Page 24: Xitrum HOWTOs

How to i18n?

Page 25: Xitrum HOWTOs

t("Hello World") !

touch i18n.pot sbt/sbt clean sbt/sbt compile

• http://xitrum-framework.github.io/guide/en/i18n.html • http://poedit.net/

Page 26: Xitrum HOWTOs

How to scale to multiple servers?

Page 27: Xitrum HOWTOs

Akka: clustering code !

Hazelcast: clustering data

• http://xitrum-framework.github.io/guide/en/cluster.html • https://github.com/xitrum-framework/xitrum-hazelcast

Page 28: Xitrum HOWTOs

How to monitor metrics?

Page 29: Xitrum HOWTOs

/xitrum/metrics/viewer?api_key=xxx

• http://xitrum-framework.github.io/guide/en/metrics.html • http://107.167.187.67/xitrum/metrics/viewer?api_key=kgreankbeplawfr7934jv2nr0bsbas0

Page 30: Xitrum HOWTOs

vs PlayPlay Xitrum

Netty 3.x 4.xHazelcast integration ☓ ○

DB integration ○ ☓Assets pipeline ○ △

Action types △ ○Route autocollection ☓ ○

SockJS ☓ ○HTML5 CORS ☓ ○

i18n △ ○Familiar (to Ruby, PHP, Python, Java

etc. programmers) △ ○

Others ○ ○• http://netty.io/wiki/new-and-noteworthy-in-4.0.html