Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lift evolved: New in 2.4 and the road ahead
Search
Indrajit Raychaudhuri
April 18, 2012
Technology
230
1
Share
Lift evolved: New in 2.4 and the road ahead
Lift presentation at Scala Days 2012 (18/04/2012 @ London)
Indrajit Raychaudhuri
April 18, 2012
More Decks by Indrajit Raychaudhuri
See All by Indrajit Raychaudhuri
Lift evolved: New in 2.4 and the road ahead
indrajitr
1
79
Lift Introduction
indrajitr
1
140
Simple Build Tool Introduction
indrajitr
3
200
Other Decks in Technology
See All in Technology
AI時代にデータ基盤が持つべきCapabilityを考える + Snowflake Data Superheroやっていき宣言 / Considering the Capabilities Data Platforms Should Have in the AI Era + Declaration of Commitment as a Snowflake Data Superhero
civitaspo
0
110
Code Interpreter で、AIに安全に コードを書かせる。
yokomachi
0
6.7k
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
5k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.2k
幾億の壁を超えて/Beyond Countless Walls(JP)
ikuodanaka
0
130
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
8.5k
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
200
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
Azure Speech で音声対応してみよう
kosmosebi
0
140
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
300
ARIA Notifyについて
ryokatsuse
1
100
みんなの「データ活用」を支えるストレージ担当から持ち込むAWS活用/コミュニティー設計TIPS 10選~「作れる」より、「続けられる」設計へ~
yoshiki0705
0
210
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
The agentic SEO stack - context over prompts
schlessera
0
740
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
97
Test your architecture with Archunit
thirion
1
2.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Rails Girls Zürich Keynote
gr2m
96
14k
Paper Plane (Part 1)
katiecoart
PRO
0
6.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Transcript
Indrajit Raychaudhuri @indrajitr
Full stack Scala Web application Framework
Full stack Scala Web application Framework Secure Scalable Designer friendly
Interactive
Lift: The Scala Companion
Retaining NodeSeq helps in secure type-safe transformation Page generation is
functional and type-safe Simple transformation as NodeSeq => NodeSeq And not, say, just () => String Lift: The Scala Companion
But dive deeper and deal with HTTP and HTML Higher
Level Abstraction Page compositions UI behaviors Helpers Lift: The Scala Companion
Simple ≠ Easy after all, ‘tis about correctness Steeper Learning
Curve (compared to MVC based frameworks) But you cruise once you hit the plateau Lift: The Scala Companion
Lift: The Core Tenets
Grab the readily available ones, or build your own Lift:
The Core Tenets Lift's Abstraction are generalized With sane readily usable defaults
Lift: The Core Tenets Lift's Responses are XSS Safe ".name
*" #> "<script>alert('hi');</script>"
Lift: The Core Tenets Elegant Comet support Requests multiplexed through
single request Requests are versioned Auto-detects containers for best fit
Lift: The Core Tenets Secure and maintainable REST support object
MyRestHelper extends RestHelper { serve { case "api" :: "user" :: AsLong(id) :: _ XmlGet _ => <b>ID:{id}</b> case "api" :: "user" :: AsLong(id) :: _ JsonGet _ => JInt(id) case "api" :: "user" :: AsLong(id) :: _ XmlGet _ => RestContinuation.async { reply => for { i <- lengthyCompute(id) } reply(<x>{i}</x>) } }
Lift: The Core Tenets Secure and maintainable REST support //
Stateful LiftRules.dispatch.append(MyRestHandler) // Stateless (choose one!) LiftRules.statelessDispatch.append(MyRestHandler)
Lift: The Core Tenets Designer friendly Templates <!DOCTYPE html> <html>
<head><title>Home</title></head> <body> <div class="lift:surround?with=default;at=content"> <h2>Welcome to Awesome website!</h2> <div class="lift:helloWorld.howdy"> Current time: <span id="time">Time goes here</span> </div> </div> </body> </html>
Lift: The Core Tenets Designer friendly Templates class HelloWorld {
def howdy = "#time" #> Helpers.formattedTimeNow }
Lift: Evolved in 2.4
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event" #> "Scaladays 2012" <span>Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event *" #> "Scala Days 2012" <span><span id="event">Scala Days 2012</span></span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<a href="#" id="event">Scala Days 2012</a> "#event [href]" #> "http://days2012.scala-lang.org" <a href="http://days2012.scala-lang.org" id="event">Scala Days 2012</a>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span class="cool" id="event">Scala Days 2012</span> "#event [class+]" #> "fancy" <span class="cool fancy" id="event">Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<span><span id="event"/></span> "#event" #> List("Scala ", "Days ", "2012") <span>Scala Days 2012</span>
Lift: Evolved in 2.4 CSS Selector Transforms got better syntax
<table><tr class="r"><td class="c">???</td></tr></table> ".r *" #> (".c *" #> "Scala") <table><tr class="r"><td class="c">Scala</td></tr></table>
Lift: Evolved in 2.4 Exclusive XHTML to HTML5 preferred
Lift: Evolved in 2.4 Stateless or Stateful – you decide
trait StatelessBehavior { def statelessDispatch: PartialFunction[String, NodeSeq => NodeSeq] }
Lift: Evolved in 2.4 Better Mock support, ability to test
better
Lift: Evolved in 2.4 Utilities and Helper updates JSON Serializer
improvements Mailer improvements BsonDSL additions to JsonDSL Build system on SBT
Lift: The Upcoming
Lift: The Upcoming Refinements Netty support giter8, lifty templates Explore
Scala 2.10 support Likely have to drop 2.8 support
Lift: The Upcoming Moar Refinements Modules’ owned and supported by
community Comply with upstream libraries Long deprecation for bolted-in JS libraries H5BP, Bootstrap support
Lift: Resource Code: https://github.com/lift Wiki: http://assembla.com/spaces/liftweb/wiki Cookbook: http://cookbook.liftweb.net Books: http://simply.liftweb.net
http://www.manning.com/perrett
Thank you!