SlideShare ist ein Scribd-Unternehmen logo
1 von 67
Downloaden Sie, um offline zu lesen
for
myeesan@gmail.com
라 스칼라 코딩단
최정열
Play 는 모르셔도 되지만 ,
스칼라는 조금 아셔야 합니다 .
Scala for Play
프레임워크를 찾아서 ...

●

모바일 테스트 서버가 필요해 ...

●

웹 프론트 개발을 위한 베이스 ...

●

무엇보다 만들고 싶은게 많았음 ...
프레임워크 선택 기준 ...
●
●

Quick and Dirty
확장 가능성

●

Testablity & TDD able

●

뚜렷한 지향점

●

JAVA

●
●

JVM
투명성
웹 프레임워크 ...
History - Play 1.x
History - Play 1.x
History - Play 1.x
SBT

Akka

Template
History - Play 2
고민

스칼라를 배워야 하나 ?
결정 !

목숨걸고 한 3 개월 하면 되겠지 ?
잃어버린 2013
Play framework

Simple

Great Testing Support

URL Routing

JPA/Ebean Support (Java only)

Class Reloading

NIO Server(Netty)

Share-Nothing

Asset Compiler

Java & Scala Support

i18n

Compile time checking

Instant deply on Heroku, Cloud bees
Simple
Servlet

Play
Simple > All in One
Simple > Code
Restful Routes
GET

/index

controllers.App.index

Straitforward Controllers
Action { Request → Response }
Easy Template
<h1> @name </h1>
Simple > Web Spec
HTTP/1.1(rfc2616)

HTML5 / CSS
Simple > Http Result
Result.scala
def SeeOther(url: String): SimpleResult = Redirect(url, 303)
val BadRequest = new Status(400)
val NotFound = new Status(404)
val InternalServerError = new Status(500)
val NoContent = SimpleResult(
header = ResponseHeader(204),
body = Enumerator.empty,
connection = HttpConnection.KeepAlive)

}

응답코드에 따른
행동은 플레이가 알아서 ~
Simple > Test
Integration

Test

browser.goTo("http://localhost:" + port)
browser.pageSource must contain("Hello")

Unit

Test

val home = route(FakeRequest(GET, "/")).get
status(home) must equalTo(OK)
contentType(home) must beSome.which("text/html")
contentAsString(home) must contain ("Hello")
Simple > Deploy on Heroku
Procfile
개발 / 배포 설정도 플레이가 알아서 !

web: target/start
-Dhttp.port=${PORT}
-DapplyEvolutions.default=true
-Ddb.default.url=${DATABASE_URL}
-Ddb.default.driver=org.postgresql.Driver

Deploy!
$ git push heroku master
Simple > Deploy on CloudBees
Simple > I18n
conf/messages
error.notfound = Post not found
error.required = Mandatory field is empty
user.confirmPassword = Confirm Password
validation.duplicated = Already exists!
validation.required = Required!

conf/messages.ko
error.notfound = 페이지를 찾을 수 없습니다 .
error.required = 필수로 입력 되어야 합니다 .
user.confirmPassword = 패스워드를 확인해주세요 .
validation.duplicated = 이미 존재합니다 !
validation.required = 필수입니다 .
Simple > Too Simple
하위 호환성은 기대하지 않는게 좋습니다 .
Case Study
Play inside
Project
1

프로젝트 생성

$ play new myApp
2

콘솔 진입

$ play
3

실행

> run

IDE 프로젝트 생성시 소스를 포함하여 빌드
> Idea with-source = true
> eclipse with-source=true
Structure
app
└ assets
└ controllers
└ models
└ views
conf
└ application.conf
└ routes
public
project
test

LESS CSS, CoffeeScript
Application controllers
Application business layer
Templates
Configurations files
Main configuration file
Routes definition
Image, CSS, JavaScript
Build, Plugins Setting
Unit and Integration Test
Play framework
Routes
Routes
...
...
...
...

request
request

Client

dispatch

Controller 1 2
Controller
Controller 1 2
Controller

response
response

View
View

Model
Routes
Http method

Uri

Body (scala code)

GET

/

controllers.App.index

GET

/add

controllers.App.blank

POST

/article

controllers.App.insert

GET

/article/$num<d{9}>

controllers.App.details(num: Long)

POST

/article/:id

controllers.App.update(id: Long)

POST

/article/:id/delete

controllers.App.delete(id: Long)

GET

/assets/*file

controllers.Assets.at(path="/public", file)
Routes
Http method

Uri

Body (scala code)

GET

/

controllers.App.index

GET

/add

controllers.App.blank

POST

/article

controllers.App.insert

GET

/article/$num<d{9}>

controllers.App.details(num: Long)

POST

/article/:id

controllers.App.update(id: Long)

POST

/article/:id/delete

controllers.App.delete(id: Long)

GET

/assets/*file

controllers.Assets.at(path="/public", file)
Controller
POST

/article/:id

controllers.App.detail(id: Long)

object App extends Controller {
def detail(num: Long) = Action{ OK(Item.find(num)...) }
def join = WebSocket{ ... }
}
Actions
def r: Result = Action { Ok("Hello World!") }

Action { Ok("Hello World!").withHeaders(
CACHE_CONTROL -> "max-age=3600", ETAG -> "xx" )}
Action.Async {
future.map(i => Ok("Hello World!" + i))}
Action (parse.json) { implicit request: =>
Ok("Request: " + request)
}
WebSocket.using[String] { request: =>
val in = Iteratee.foreach[String]
val out = Enumerator("Hello!")
(in, out)
}
Request

def i = Action { implicit req =>
Ok("Request: [" + req + "]")
}
Request

def i = Action { implicit req: [
Ok("Request: [" + req + "]")
}

] =>
Request

def i = Action { implicit req: AnyContent =>
Ok("Request: [" + req + "]")
}
Request

def j = Action(parse.json) { implicit req =>
Ok("Request: [" + req + "]")
}
Request

def j = Action(parse.json) { implicit req: [
Ok("Request: [" + req + "]")
}

] =>
Request

def j = Action(parse.json) { implicit req: JsValue =>
Ok("Request: [" + req + "]")
}
Scala for Play
플레이를 공부하면서 가장 많이 나온 주제를 정
리했습니다 .
Template
implicit keyword
Form
Option[T] type
Scala for Play
Tem
plate
Template
어느날 제자가 스승에게 물었다 .
스승님 바람에 나뭇가지가 흔들리는 것은 나뭇가지가
흔들리는 것입니까 바람이 흔들리는 것 입니까 ?
그러자 스승이 답했다 .
흔들리는 것은 나뭇가지도 아니고 바람도 아니다 .
바로 너의 마음이다 .
Template
Header.scala.html
@(title: String)
<h1>@title</h1>
convert
Header.template.scala

def apply(title: String) = { format.raw(
"<h1>" + title + "</h1>" )
}
Template

@(title: String, articles: List[article])
@import helper._
<table>
@main(title){
@articles.map{ article =>
<li> @article.title </li>}}
</table>
Template composition

Header

main (header) (side)(content)

side

Content
Implicit Parameter
Implicit

val db: DB = application.getDatabase()
def query(str: String)(db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
Implicit

val db: DB = application.getDatabase()
def query(str: String)(db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
Implicit

implicit val db: DB = application.getDatabase()
def query(str: String)(implicit db: DB): List[User]
val users = query("""SELECT * FROM USER""")(db)
val posts = query("""SELECT * FROM POST WHERE ...""")(db)
val pets = getPost("""SELECT * FROM PET""")(db)
Implicit

implicit val db: DB = application.getDatabase()
def query(str: String)(implicit db: DB): List[User]
val users = query("""SELECT * FROM USER""")
val posts = query("""SELECT * FROM POST WHERE ...""")
val pets = getPost("""SELECT * FROM PET""")
Implicit
import play.api.Play.current
def getAll: List[Product] = DB.withConnection {
implicit connection =>
sql().map ( row =>
Product(row[Long]("id"), row[String]("name")
).toList}
Implicit
import play.api.Play.current
def getAll: List[Product] = DB.withConnection {
implicit connection =>
sql().map ( row =>
Product(row[Long]("id"), row[String]("name")
).toList}

Play.api.Play.scala

implicit def current: Application = maybeApplication...
Option Type
List 와 함께 가장 중요한 타입입니다 . 처음부터 잘 살펴 보세요 >_<

스칼라 코드에서 여러분이 null 을 보실 일은 거의 없습니다 .
가능한 null 체크를 사용하지 않도록 노력 해보세요 ~ (null object pattern)
Scala.Option.scala
def apply[A](x: A): Option[A] = if (x == null) None else Some(x)
// mothods
flatMap, Flatten, map, foreach, idDefined, isEmpty...
Form (hide nothing)
1 Client
GET /signup

2 Signup.html

3 Validate
Fail
su

/index

5 Redirect

cc

es

s

4 Create
마무리

Pros & Cons ( 순전히 개인적인 )
Pros
단점 빼고 다 좋습니다 !
Pros
단점 빼고 다 좋습니다 ! 라고 하면 ...
Pros

●

Simple

●

Type Safe everywhere

●

Java ↔ Scala
Cons

●

SBT

●

Type Safe

●

불완전한 IDE

●

적은 유저
2.3 Roadmap
●
●
●
●
●

브라우저 내에서의 개발환경 구성
WebJar - Jquery, require.js, ecc
JSUnit test
Bootstrap 탬플릿 향상
JSON API → Form 매핑

Java
● JDK8 Compat Library
● Java 8 – template
질문

여러분은 무엇을 만들고 싶으세요 ?
이렇게 시작해서 ...
이렇게 시작해서 ...
언젠가는 ...

발표에 사용된 예제 코드 : https://github.com/organizations/ScalaPlayers
감사합니다 !

라 스칼라 코딩단
GoogleGroups/ScalaKorea
https://groups.google.com/forum/#!forum/scala-korea

발표에 사용된 샘플 코드 (2013-11-01 이후 업로드 )
github.com/ScalaPlayers/SpringCampWithScala2013

최정열
SNS: facebook.com/choijeongyeol
Email: myeesan@gmail.com
Scala

"Scala is deep where other languages are broad."

Weitere ähnliche Inhalte

Was ist angesagt?

#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍NAVER D2
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수NAVER D2
 
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration수홍 이
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례Daehwan Lee
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationHyuncheol Jeon
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storageJinKyoungHeo
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brickyongwoo Jeon
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Was ist angesagt? (20)

#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
 
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
 
Jdk 7 3-nio2
Jdk 7 3-nio2Jdk 7 3-nio2
Jdk 7 3-nio2
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storage
 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
Scala
ScalaScala
Scala
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
 
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#19.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#20.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 

Andere mochten auch

Spring Scala : 스프링이 스칼라를 만났을 때
Spring Scala : 스프링이 스칼라를 만났을 때Spring Scala : 스프링이 스칼라를 만났을 때
Spring Scala : 스프링이 스칼라를 만났을 때JeongHun Byeon
 
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)DoHyun Jung
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 jbugkorea
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streamsmattpodwysocki
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift선협 이
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJSstefanmayer13
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015NAVER / MusicPlatform
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기Jong Wook Kim
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015Ben Lesh
 

Andere mochten auch (12)

Akka & Actor model
Akka & Actor modelAkka & Actor model
Akka & Actor model
 
Spring Scala : 스프링이 스칼라를 만났을 때
Spring Scala : 스프링이 스칼라를 만났을 때Spring Scala : 스프링이 스칼라를 만났을 때
Spring Scala : 스프링이 스칼라를 만났을 때
 
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)
Akka라이브러리를 이용해 구현하는 결함 내성 (발렌타인 발표자료)
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
 
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
 
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
 
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015
 

Ähnlich wie Scala for play

Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합NAVER D2
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJung Han
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flaskJiho Lee
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
Python on Android
Python on AndroidPython on Android
Python on Android용 최
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기Jeado Ko
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2도현 김
 
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive Elasticsearch
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8Sangmin Lee
 

Ähnlich wie Scala for play (20)

Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Django와 flask
Django와 flaskDjango와 flask
Django와 flask
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
 
Java mentoring of samsung scsc 2
Java mentoring of samsung scsc   2Java mentoring of samsung scsc   2
Java mentoring of samsung scsc 2
 
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive
Partner Story(Megazone): 금융사 실전 프로젝트 DeepDive
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
 

Scala for play