seaside - web development as you like it

84
Web development, as you it

Upload: lukas-renggli

Post on 08-May-2015

4.562 views

Category:

Technology


0 download

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

Web development,

as you it

Page 2: Seaside - Web Development As You Like It

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

Agenda

Natural Flow

Reusable Components

Secure by Default

Web 2.0

Applications

Page 4: Seaside - Web Development As You Like It

1Natural Flow

Page 5: Seaside - Web Development As You Like It

Demo

Page 6: Seaside - Web Development As You Like It

<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>

Page 7: Seaside - Web Development As You Like It

<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

<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

<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

<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

<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

<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

<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

Web Browser

Page 15: Seaside - Web Development As You Like It

Web Browser

Page 16: Seaside - Web Development As You Like It

/first

parsing

processing

formatting

Web Browser

Page 17: Seaside - Web Development As You Like It

valu

e1

/first

parsing

processing

formatting

Web Browser

Page 18: Seaside - Web Development As You Like It

valu

e1

/second

parsing

processing

formatting

valu

e1

/first

parsing

processing

formatting

Web Browser

Page 19: Seaside - Web Development As You Like It

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

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

Who cares about

HTTP anyway?

Page 22: Seaside - Web Development As You Like It
Page 23: Seaside - Web Development As You Like It
Page 24: Seaside - Web Development As You Like It

is different

Page 25: Seaside - Web Development As You Like It

Concentrate on

your application ...

Page 26: Seaside - Web Development As You Like It

... no manual

request parsing

Page 27: Seaside - Web Development As You Like It

... no XML

configuration files

Page 28: Seaside - Web Development As You Like It

3 user interactions

Page 29: Seaside - Web Development As You Like It

3 lines of code

Page 30: Seaside - Web Development As You Like It
Page 31: Seaside - Web Development As You Like It

value1 := self request: ‘First Number’.

Page 32: Seaside - Web Development As You Like It

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

Page 33: Seaside - Web Development As You Like It

value1 := self request: ‘First Number’.

value2 := self request: ‘Second Number’.

self inform: value1 + value2.

Page 34: Seaside - Web Development As You Like It

Demo

Page 35: Seaside - Web Development As You Like It

2Reusable

Components

Page 36: Seaside - Web Development As You Like It

We don’t think in

pages ...

Page 37: Seaside - Web Development As You Like It

..., but in stateful

components

Page 38: Seaside - Web Development As You Like It

Demo

Page 39: Seaside - Web Development As You Like It

Demo

Page 40: Seaside - Web Development As You Like It

Components

are c!!l

Page 41: Seaside - Web Development As You Like It

Reuseable

Page 42: Seaside - Web Development As You Like It

Model, View, Controller

Model

View Controller

Page 43: Seaside - Web Development As You Like It

Persistent

Page 44: Seaside - Web Development As You Like It

Valid

Sou

rce:

sto

ck.x

chn

g, A

l N

akib

Page 45: Seaside - Web Development As You Like It

CSSDesigner

Page 46: Seaside - Web Development As You Like It

XHTMLDeveloper & Seaside

Page 47: Seaside - Web Development As You Like It

DRYDon't Repeat Yourself

Page 48: Seaside - Web Development As You Like It

Domain Specific

Language

Page 49: Seaside - Web Development As You Like It

html div id: ‘title’; with: ‘Title’

<div id=”title”>Title</div>

Page 50: Seaside - Web Development As You Like It

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

Demo

Page 52: Seaside - Web Development As You Like It

3Secure by

Default

Page 53: Seaside - Web Development As You Like It

Cross Site Scripting

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Page 54: Seaside - Web Development As You Like It

Output is encoded

by default

Page 55: Seaside - Web Development As You Like It

html text: '<script>alert(''xss'')</script>'

&lt;script&gt;alert('xss');&lt;/script&gt;

Page 56: Seaside - Web Development As You Like It

Replay Attacks

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Page 57: Seaside - Web Development As You Like It

Session

_s=Ru8ZKgqjy0uDX3kf

96-bit

Page 58: Seaside - Web Development As You Like It

Page

_k=K5EQyqKE

48-bit

Page 59: Seaside - Web Development As You Like It

Parameter Tampering

Sou

rce:

sto

ck.x

chn

g, A

fon

so L

ima

Page 60: Seaside - Web Development As You Like It

Names are generated

automatically

Page 61: Seaside - Web Development As You Like It

Names are bound

to functions

Page 62: Seaside - Web Development As You Like It

No manual

request parsing

Page 63: Seaside - Web Development As You Like It

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

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
Page 66: Seaside - Web Development As You Like It

4Web 2.0

Page 67: Seaside - Web Development As You Like It

Sou

rce:

Flic

kr, B

enja

min

Jac

kso

n

Page 68: Seaside - Web Development As You Like It

AJAX

Sou

rce:

Flic

kr, B

enja

min

Jac

kso

n

Page 69: Seaside - Web Development As You Like It

Tight, but optional

integration

Page 70: Seaside - Web Development As You Like It

Feature complete

and up-to-date

Page 71: Seaside - Web Development As You Like It

Say it in Smalltalk

Page 72: Seaside - Web Development As You Like It

Sou

rce:

Flic

kr, p

srm

an's

Page 73: Seaside - Web Development As You Like It

Comet

Sou

rce:

Flic

kr, p

srm

an's

Page 74: Seaside - Web Development As You Like It

Demoscriptaculous.seasidehosting.st

Page 75: Seaside - Web Development As You Like It

5Applications

Page 76: Seaside - Web Development As You Like It

In productive use

since 2002

Page 77: Seaside - Web Development As You Like It
Page 79: Seaside - Web Development As You Like It

Demo

Page 80: Seaside - Web Development As You Like It
Page 81: Seaside - Web Development As You Like It

Seaside

Page 82: Seaside - Web Development As You Like It

MIT License

Page 83: Seaside - Web Development As You Like It