Seaside - Web Development As You Like It
-
Upload
lukas-renggli -
Category
Technology
-
view
4.562 -
download
0
description
Transcript of Seaside - Web Development As You Like It
![Page 1: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/1.jpg)
Web development,
as you it
![Page 2: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/4.jpg)
1Natural Flow
![Page 5: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/5.jpg)
Demo
![Page 6: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/14.jpg)
Web Browser
![Page 15: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/15.jpg)
Web Browser
![Page 16: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/21.jpg)
Who cares about
HTTP anyway?
![Page 22: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/22.jpg)
![Page 23: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/23.jpg)
![Page 24: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/24.jpg)
is different
![Page 25: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/25.jpg)
Concentrate on
your application ...
![Page 26: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/26.jpg)
... no manual
request parsing
![Page 27: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/27.jpg)
... no XML
configuration files
![Page 28: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/28.jpg)
3 user interactions
![Page 29: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/29.jpg)
3 lines of code
![Page 30: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/30.jpg)
![Page 31: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/31.jpg)
value1 := self request: ‘First Number’.
![Page 32: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/34.jpg)
Demo
![Page 35: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/35.jpg)
2Reusable
Components
![Page 36: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/37.jpg)
..., but in stateful
components
![Page 38: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/38.jpg)
Demo
![Page 39: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/39.jpg)
Demo
![Page 40: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/40.jpg)
Components
are c!!l
![Page 41: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/41.jpg)
Reuseable
![Page 42: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/43.jpg)
Persistent
![Page 44: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/45.jpg)
CSSDesigner
![Page 46: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/46.jpg)
XHTMLDeveloper & Seaside
![Page 47: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/47.jpg)
DRYDon't Repeat Yourself
![Page 48: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/48.jpg)
Domain Specific
Language
![Page 49: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/51.jpg)
Demo
![Page 52: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/52.jpg)
3Secure by
Default
![Page 53: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/54.jpg)
Output is encoded
by default
![Page 55: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/57.jpg)
Session
_s=Ru8ZKgqjy0uDX3kf
96-bit
![Page 58: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/58.jpg)
Page
_k=K5EQyqKE
48-bit
![Page 59: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/60.jpg)
Names are generated
automatically
![Page 61: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/61.jpg)
Names are bound
to functions
![Page 62: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/62.jpg)
No manual
request parsing
![Page 63: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/65.jpg)
![Page 66: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/66.jpg)
4Web 2.0
![Page 67: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/69.jpg)
Tight, but optional
integration
![Page 70: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/71.jpg)
Say it in Smalltalk
![Page 72: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/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.fdocuments.us/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.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/74.jpg)
Demoscriptaculous.seasidehosting.st
![Page 75: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/75.jpg)
5Applications
![Page 76: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/76.jpg)
In productive use
since 2002
![Page 77: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/77.jpg)
![Page 79: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/79.jpg)
Demo
![Page 80: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/80.jpg)
![Page 81: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/81.jpg)
Seaside
![Page 82: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/82.jpg)
MIT License
![Page 83: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/83.jpg)
![Page 84: Seaside - Web Development As You Like It](https://reader037.fdocuments.us/reader037/viewer/2022110306/554ba5dcb4c905b3618b4edc/html5/thumbnails/84.jpg)
www.seaside.st
www.lukas-renggli.ch