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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Indrajit Raychaudhuri
April 18, 2012
Technology
1
79
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
Tweet
Share
More Decks by Indrajit Raychaudhuri
See All by Indrajit Raychaudhuri
Lift evolved: New in 2.4 and the road ahead
indrajitr
1
230
Lift Introduction
indrajitr
1
140
Simple Build Tool Introduction
indrajitr
3
200
Other Decks in Technology
See All in Technology
[2026-03-07]あの日諦めたスクラムの答えを僕達はまだ探している。〜守ることと、諦めることと、それでも前に進むチームの話〜
tosite
0
190
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
190
猫でもわかるKiro CLI(AI 駆動開発への道編)
kentapapa
0
140
聲の形にみるアクセシビリティ
tomokusaba
0
170
「ストレッチゾーンに挑戦し続ける」ことって難しくないですか? メンバーの持続的成長を支えるEMの環境設計
sansantech
PRO
3
660
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.7k
事例に見るスマートファクトリーへの道筋〜工場データをAI Readyにする実践ステップ〜
hamadakoji
1
300
When an innocent-looking ListOffsets Call Took Down Our Kafka Cluster
lycorptech_jp
PRO
0
120
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
860
脳内メモリ、思ったより揮発性だった
koutorino
0
260
スクリプトの先へ!AIエージェントと組み合わせる モバイルE2Eテスト
error96num
0
160
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
3
820
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
220
Ruling the World: When Life Gets Gamed
codingconduct
0
170
Test your architecture with Archunit
thirion
1
2.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
150
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Amusing Abliteration
ianozsvald
0
130
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
160
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
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!