seaside - web development as you like it
DESCRIPTION
Seaside does different to what is considered as best practices for Web development. It breaks with common best practices for Web development, such as to share as little state as possible, use clean and carefully chosen URLs, and use templates to separate model and presentation.TRANSCRIPT
![Page 1: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/1.jpg)
Web development,
as you it
![Page 2: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/2.jpg)
Lukas Renggli
Academics
PhD Student, University of Bern
Industry
Independent Software Consultant
Communities
Core-developer of Seaside
Author of Magritte and Pier
![Page 3: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/3.jpg)
Agenda
Natural Flow
Reusable Components
Secure by Default
Web 2.0
Applications
![Page 4: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/4.jpg)
1Natural Flow
![Page 5: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/5.jpg)
Demo
![Page 6: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/6.jpg)
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
![Page 7: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/7.jpg)
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
![Page 8: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/8.jpg)
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
![Page 9: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/9.jpg)
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
![Page 10: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/10.jpg)
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
![Page 11: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/11.jpg)
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<form action="result.html"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
![Page 12: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/12.jpg)
<form action="result.html"> <input type="hidden" name="value1" value="<% value1 %>"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
![Page 13: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/13.jpg)
<form action="result.html"> <input type="hidden" name="value1" value="<% value1 %>"> <input type="text" name="value2"> <input type="submit" value="OK"></form>
<p> <% value1 + value2 %></p>
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
![Page 14: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/14.jpg)
Web Browser
![Page 15: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/15.jpg)
Web Browser
![Page 16: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/16.jpg)
/first
parsing
processing
formatting
Web Browser
![Page 17: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/17.jpg)
valu
e1
/first
parsing
processing
formatting
Web Browser
![Page 18: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/18.jpg)
valu
e1
/second
parsing
processing
formatting
valu
e1
/first
parsing
processing
formatting
Web Browser
![Page 19: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/19.jpg)
valu
e1, valu
e2
valu
e1
/second
parsing
processing
formatting
valu
e1
/first
parsing
processing
formatting
Web Browser
![Page 20: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/20.jpg)
valu
e1, valu
e2
/result
parsing
processing
formatting
result
valu
e1
/second
parsing
processing
formatting
valu
e1
/first
parsing
processing
formatting
Web Browser
![Page 21: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/21.jpg)
Who cares about
HTTP anyway?
![Page 22: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/22.jpg)
![Page 23: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/23.jpg)
![Page 24: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/24.jpg)
is different
![Page 25: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/25.jpg)
Concentrate on
your application ...
![Page 26: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/26.jpg)
... no manual
request parsing
![Page 27: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/27.jpg)
... no XML
configuration files
![Page 28: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/28.jpg)
3 user interactions
![Page 29: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/29.jpg)
3 lines of code
![Page 30: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/30.jpg)
![Page 31: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/31.jpg)
value1 := self request: ‘First Number’.
![Page 32: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/32.jpg)
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
![Page 33: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/33.jpg)
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
![Page 34: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/34.jpg)
Demo
![Page 35: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/35.jpg)
2Reusable
Components
![Page 36: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/36.jpg)
We don’t think in
pages ...
![Page 37: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/37.jpg)
..., but in stateful
components
![Page 38: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/38.jpg)
Demo
![Page 39: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/39.jpg)
Demo
![Page 40: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/40.jpg)
Components
are c!!l
![Page 41: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/41.jpg)
Reuseable
![Page 42: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/42.jpg)
Model, View, Controller
Model
View Controller
![Page 43: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/43.jpg)
Persistent
![Page 44: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/44.jpg)
Valid
Sou
rce:
sto
ck.x
chn
g, A
l N
akib
![Page 45: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/45.jpg)
CSSDesigner
![Page 46: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/46.jpg)
XHTMLDeveloper & Seaside
![Page 47: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/47.jpg)
DRYDon't Repeat Yourself
![Page 48: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/48.jpg)
Domain Specific
Language
![Page 49: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/49.jpg)
html div id: ‘title’; with: ‘Title’
<div id=”title”>Title</div>
![Page 50: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/50.jpg)
html div id: ‘list’; with: [ html span class: ‘item’; with: ‘Item 1’. html span class: ‘item’; with: ‘Item 2’ ]
<div id=”list”> <span class=”item”>Item 1</span> <span class=”item”>Item 2</span></div>
![Page 51: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/51.jpg)
Demo
![Page 52: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/52.jpg)
3Secure by
Default
![Page 53: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/53.jpg)
Cross Site Scripting
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
![Page 54: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/54.jpg)
Output is encoded
by default
![Page 55: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/55.jpg)
html text: '<script>alert(''xss'')</script>'
<script>alert('xss');</script>
![Page 56: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/56.jpg)
Replay Attacks
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
![Page 57: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/57.jpg)
Session
_s=Ru8ZKgqjy0uDX3kf
96-bit
![Page 58: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/58.jpg)
Page
_k=K5EQyqKE
48-bit
![Page 59: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/59.jpg)
Parameter Tampering
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
![Page 60: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/60.jpg)
Names are generated
automatically
![Page 61: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/61.jpg)
Names are bound
to functions
![Page 62: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/62.jpg)
No manual
request parsing
![Page 63: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/63.jpg)
Don’t call Seaside,
Seaside will call you
Sou
rce:
sto
ck.x
chn
g, P
awel
Zaw
isto
wsk
i
![Page 64: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/64.jpg)
html anchor! callback: [ self inform: ‘Hello World’ ];! with: ‘Show Message’
<a href=”/seaside/example1" ?_s=Ru8ZKgqjy0uDX3kf" &_k=K5EQyqKE! &32”>Show Message</a>
![Page 65: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/65.jpg)
![Page 66: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/66.jpg)
4Web 2.0
![Page 67: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/67.jpg)
Sou
rce:
Flic
kr, B
enja
min
Jac
kso
n
![Page 68: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/68.jpg)
AJAX
Sou
rce:
Flic
kr, B
enja
min
Jac
kso
n
![Page 69: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/69.jpg)
Tight, but optional
integration
![Page 70: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/70.jpg)
Feature complete
and up-to-date
![Page 71: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/71.jpg)
Say it in Smalltalk
![Page 72: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/72.jpg)
Sou
rce:
Flic
kr, p
srm
an's
![Page 73: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/73.jpg)
Comet
Sou
rce:
Flic
kr, p
srm
an's
![Page 74: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/74.jpg)
Demoscriptaculous.seasidehosting.st
![Page 75: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/75.jpg)
5Applications
![Page 76: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/76.jpg)
In productive use
since 2002
![Page 77: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/77.jpg)
![Page 79: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/79.jpg)
Demo
![Page 80: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/80.jpg)
![Page 81: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/81.jpg)
Seaside
![Page 82: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/82.jpg)
MIT License
![Page 83: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/83.jpg)
![Page 84: Seaside - Web Development As You Like It](https://reader037.vdocument.in/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/84.jpg)
www.seaside.st
www.lukas-renggli.ch