Seaside - The Revenge of Smalltalk
-
Upload
lukas-renggli -
Category
Technology
-
view
4.311 -
download
2
description
Transcript of Seaside - The Revenge of Smalltalk
The Revenge of Smalltalk
London Geek Nights
July 6, 2009
Lukas Renggli
Academics
PhD Student, University of Bern
Open-Source
Core-developer of Seaside
Author of Magritte and Pier
Industry
Independent Software Consultant
Agenda
Flow
Components
Security
Applications
Continuations
Objects
Closures
Debugger
1Natural Flow
So
urc
e: sto
ck.x
chng
, A
sif A
kb
ar
<form action="second.html"> <input type="text" name="value1"> <input type="submit" value="OK"></form>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
is different
3 user interactions
3 lines of code
value1 := self request: ‘First Number’.
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.It’s a DSL
value1 := self request: ‘First Number’.
value2 := self request: ‘Second Number’.
self inform: value1 + value2.
It’s justSmalltalk
No request parsing
No string fiddling
No state machines
Demo
2Reusable
Components
So
urc
e: sto
ck.x
chng
, Lynne L
ancaste
r
Reuseable
Persistent
Model, View, Controller
Model
View Controller
Valid
Sou
rce:
sto
ck.x
chn
g, A
l N
akib
CSSDesigner
XHTMLDeveloper & Seaside
DRY
DRYIt’s a DSL
DRYIt’s just
Smalltalk
Demo
3Secure by
Default
So
urc
e: sto
ck.x
chng
, C
olin
Bro
ug
h
Cross Site Scripting
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
Output is encoded
by default
Replay Attacks
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
Session
_s=Ru8ZKgqjy0uDX3kf
96-bit
Page
_k=K5EQyqKE
48-bit
Parameter Tampering
Sou
rce:
sto
ck.x
chn
g, A
fon
so L
ima
Names are generated
automatically
Names are bound
to functions
No manual
request parsing
html submitButton
! callback: [ self inform: ‘Hey’ ];
! with: ‘Click Here’
html submitButton
! callback: [ self inform: ‘Hey’ ];
! with: ‘Click Here’It’s a DSL
html submitButton
! callback: [ self inform: ‘Hey’ ];
! with: ‘Click Here’
It’s justSmalltalk
4Web 2.0
So
urc
e: F
lickr, B
enja
min
Jackso
n
So
urc
e: F
lickr, p
srm
an's
Comet
So
urc
e: F
lickr, p
srm
an's
It’s a DSL
It’s justSmalltalk
Demo
5Applications
So
urc
e: sto
ck.x
chng
, S
teve W
oo
ds
In productive use
since 2002
Seaside
MIT License
© Copyright 2007 Instantiations, Inc. VA Smalltalk, VA Assist, WidgetKit, and WindowBuilder are trademarks of Instantiations. All other trademarks mentioned are the property of their respective owners.
www.instantiations.com 1-800-808-3737Build Quality Software
Development ToolsA rich set of development tools includes a debugger, browsers, inspectors, application builders, and a performance monitor.Packager (Dev Tool) creates a runtime image including only necessary classes resulting in a smaller footprint.AsyncCallout, an extension of the platform function API, allows developers to make a platform function call in a separate virtual machine thread.Reports feature enables the creation of hardcopy and/or screen reports on any object that can be used in the VA Smalltalk environment, including parts provided in the Database and Communications features.
Custom Controls Popular WidgetKit technologyColumnar List boxes, table widgets and hierarchical listsCustomizable image buttons, toggles and value setsVertical, horizontal and circular gaugesData aware spin buttonsWindows 95/98/NT/2000 Notebook widgetSplitbar widget
!
!
!
!
!
!
!
Communications A set of parts supports communication with other computers using MQ series transactions.A set of parts supports communication with other computers using TCP/IP protocols.Socket Communications Interface is an API providing full support for TCP/IP protocols, as well as secure communications using SSL. The API uses OpenSSL, an implementation of SSL/TLS.
Database High-performance, robust support for DB2Support for Oracle through v10Support for any database which supports the ODBC interface.
Server SmalltalkServer Smalltalk (SST) provides a client/server framework flexible enough to accommodate various distributed architectures.Server Workbench is a cross-development envi-ronment used in developing distributed process-ing, web hosting, and other server applications. Target deployment environments include all VA Smalltalk platforms and z/OS using IBM’s VisualAge Smalltalk Server for OS/390 and z/OS.
Web ServicesA self-contained, modular framework, capable of creating, deploying and hosting web services.
External Interface SupportXML Support enables XML–Smalltalk object mapping, includes a server interface via XML request handlers and reading of remote resources via TCP sockets using HTTP requestsOLE Support enables an application to use OLE clients and custom control services.Domino Connection allows an application to retrieve and work with Domino documents as well as access Notes mail system.
!
!
!
100% VisualAge compatibleVA Smalltalk is a modern software development environment that is 100% VisualAge compatible. VA Smalltalk enables developers to quickly construct applications that are portable, highly scalable, simple to maintain, and fit easily into existing infrastructures.
Other Software RequirementsDatabase
DB2 Universal Database (Windows, AIX, Linux, Solaris)ORACLE 8i (8.1.6), 9i or 10
DominoLotus Notes (Windows only) [Not supported on Linux, AIX, Solaris]
VA Smalltalk’s HTML DocumentationTCP/IP protocolMicrosoft Internet Explorer 5.0 or later (Windows)Netscape 4.51 or later (Win, Linux, Solaris, AIX)Firefox 2.0 or later (Win, Linux)Opera 9.02 or later (Windows)
!
!
!
!
!
!
!
!
!
EMSRV 7.1a Library ManagerNetware 4.2 or 5.1OS/2 Warp 4.0 + FP11OS/2 Warp Server for e-BusinessWindows ME - EMADMIN onlyWindows 2000, 2000 Server, Advanced ServerWindows XP ProfessionalWindows Server 2003Windows Vista Business, Enterprise, or UltimateSun Solaris Version 8 or 9HP-UX Version 11.0 or 11iAIX Version 5.1, 5.2 or 5.3Red Hat Linux 9 and Advance Server 2.1SuSE Enterprise 10
!
!
!
!
!
!
!
!
!
!
!
!
!
Supported ConfigurationsOperating System Hardware PlatformWindows ME, 2000, XP, Server 2003, Vista . . . . . . . . . . . . . . . 300MHz PC, 256MB RAM, 400MB diskRedHat Linux 9, Enterprise AS 2.1, SuSE Linux . . . . . . . . . . . Pentium 300MHz PC, 128MB RAM, 400MB diskSun Solaris 8, 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPARC workstation or server, 64MB RAM, 200MB diskAIX 5.1, 5.2, 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RISC System/6000, POWERStation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . or POWERServer, 128MB RAM, 400MB disk
For detailed system requirements visit www.instantiations.com/VAST
Download a risk-free trial copy:www.instantiations.com/VAST/download
Award-winning VA Assist™ technologyUniversal Drag/DropPowerful change propagation toolsCustomizable ToolbarsColor Code Syntax (Windows only)Dynamic & Batch-Oriented Spell CheckingAuto-Spell CorrectionVersion RenamingClass History/FindVersion TemplatesString SearchApplication Filtering
!
!
!
!
!
!
!
!
!
!
!
!
Enhanced DebuggerEnhanced InspectorsCode SynchronizationLocate ApplicationsLocate DependentsRevision NotesRelease All LatestAbbreviation ExpansionPopup Sender/ImplementorsBrowse Changes Including Required MapsEmbedded mode for seamless integration with the Composition Editor
!
!
!
!
!
!
!
!
!
!
!
Ergonomic Enhancements
www.swa.hpi.uni-potsdam.de/seaside/tutorial/
www.seaside.st
www.lukas-renggli.ch