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
Iliad or Seaside ?
Search
newapplesho
May 27, 2010
Programming
0
92
Iliad or Seaside ?
第20回Smalltalk勉強会資料.IliadとSeasideについて
newapplesho
May 27, 2010
Tweet
Share
More Decks by newapplesho
See All by newapplesho
OpenRestyについて
newapplesho
0
110
Continuous Integration for Pharo Smalltalk Part 2 (Travis CI)
newapplesho
0
200
今時なウェブ開発をSmalltalkでやってみる?
newapplesho
0
150
Continuous Integration for Pharo Smalltalk
newapplesho
0
150
Elasticsearch for Pharo Smalltalk
newapplesho
0
160
SourceCode Management with Pharo Smalltalk - Pharo Smalltalkソースコード管理方法
newapplesho
0
130
RUNNING Smalltalk - 実践Smalltalk
newapplesho
0
120
AWS SDK for Smalltalk
newapplesho
0
120
How Smalltalker Works
newapplesho
0
93
Other Decks in Programming
See All in Programming
RDoc meets YARD
okuramasafumi
4
160
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
270
1から理解するWeb Push
dora1998
7
1.8k
私の後悔をAWS DMSで解決した話
hiramax
4
190
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
130
Ruby Parser progress report 2025
yui_knk
1
300
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
2
1.4k
Testing Trophyは叫ばない
toms74209200
0
760
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
650
Laravel Boost 超入門
fire_arlo
2
210
🔨 小さなビルドシステムを作る
momeemt
3
660
オープンセミナー2025@広島LT技術ブログを続けるには
satoshi256kbyte
0
170
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Automating Front-end Workflow
addyosmani
1370
200k
A better future with KSS
kneath
239
17k
Designing for Performance
lara
610
69k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
910
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
GraphQLとの向き合い方2022年版
quramy
49
14k
Agile that works and the tools we love
rasmusluckow
330
21k
Become a Pro
speakerdeck
PRO
29
5.5k
Transcript
Smalltalkษڧձ - Iliad ٢ా ᠳ 2010-05-27 2010-06-01 վྑ൛ Iliad or
Seaside ? 1 20106݄3༵
Smalltalkษڧձ - Iliad IliadͷΠϯετʔϧ •iliad-8.1-Squeak4.1-ja-all-in-one.zip iliad-8.1, ຊޠύονద༻ࡁΈ •iliad-8.1-Squeak4.1-ja-all-in-one-Demo.zip iliad-8.1, ຊޠύονద༻ࡁΈ,
αϯϓϧίʔυ 2 20106݄3༵
Smalltalkษڧձ - Iliad ͜ͷεϥΠυิ MyTestApplication.st iliad-8.1-Squeak4.1-ja-all-in-one-Demo.zipͷ ./demosource/ ʹιʔείʔυ͕͋Γ·͢ 3 20106݄3༵
Smalltalkษڧձ - Iliad IliadνϡʔτϦΞϧ SwazooIliad startOn: 9090. αʔόͷىಈ SwazooIliad stop.
αʔόͷఀࢭ WorkspaceͰҎԼͷίʔυΛdo it 4 20106݄3༵
Smalltalkษڧձ - Iliad Iliadىಈ֬ೝ WebϒϥβͰ http://localhost:9090/browseʹΞΫηε 5 20106݄3༵
Smalltalkษڧձ - Iliad IliadͰHello World Hello Worldͱදࣔ͢ΔWeb AppΛ࡞͢Δ 6 20106݄3༵
Smalltalkษڧձ - Iliad IliadͷXHTMLϨϯμϦϯά •ςϯϓϨʔτํࣜͰͳ͍ •ϨϯμϥΦϒδΣΫτʹϝοηʔδΛૹΔ͜ͱͰ XHTML͕ੜ͞ΕΔ 7 20106݄3༵
Smalltalkษڧձ - Iliad ίϯτϩʔϥʔͷ࡞ ίϯτϩʔϥͰ͋ΔILApplicationͷαϒΫϥεΛ࡞ ʢMyTestApplicationͱͯ͠ఆٛʣ MyTestApplication>>(class)path ! ^'myTestApp' ΞϓϦέʔγϣϯΛݺͼग़ͨ͢ΊͷύεΛࢦఆ͢Δ
WebϒϥβͰ http://localhost:9090/myTestAppʹ ΞΫηε ਅͬനͳը໘͕දࣔ͞ΕΔ 8 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLϨϯμϦϯά index ^ [:e | ! !
e text: 'Hello World'. ]. MyTestApplication ϝιουΧςΰϦcontrollersʹ͢Δ͜ͱ σϑΥϧτίϯτϩʔϥͱͯ͠ݺͼग़͞ΕΔindexʹ ҎԼͷίʔυΛهड़ e ILXHTMLElementͷΠϯελϯε MyTestApplication.st 9 20106݄3༵
Smalltalkษڧձ - Iliad IliadͱSeasideͷൺֱ •Seasideͱͷҧ͍ •ͲͪΒΛબ͖͔͢ SmalltalkͷWeb Framework 10 20106݄3༵
Smalltalkษڧձ - Iliad IliadͱSeasideͷൺֱ߲ •XHTMLͷϨϯμϦϯά •CSS, JavaScript •ϑϩʔ੍ޚ •SessionͱResponseʢࢀߟʣ •։ൃڥͱରԠSmalltalk
11 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (1) ݟग़͠ <h1>I love Squeak</h1> 12
20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (1) ݟग़͠ <h1>I love Squeak</h1> index
^ [:e | ! ! e h1: 'I love Squeak'. ]. renderContentOn:html html heading:'I love Squeak.' level:1. ILApplication subclass WAComponent subclass 13 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (2) Ϧετ <ul> <li>Apple</li> <li>Banana</li> <li>Orange</li>
</ul> 14 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (2) Ϧετ <ul><li>...</li></ul> index ^ [:e
| | ul | ! ! ul := e ul. ! ! #('Apple' 'Banana' 'Orange') do:[:v | | li | ! ! ! li := ul li. ! ! ! li text: v ]]. DomʹΑΔXMLॲཧͱಉ͡Πϝʔδ 15 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (2) Ϧετ <ul><li>...</li></ul> renderContentOn:html ! html
unorderedList:[ ! ! #('Apple' 'Banana' 'Orange') do:[:v | ! ! html listItem:v ]]. 16 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (3) ςʔϒϧ <table border="1"> <tr> <td>Apple</td>
<td>Banana</td> <td>Orange</td> </tr> </table> 17 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (3) ςʔϒϧ index ! ^ [:e
| | table row | ! ! table := e table border:1. ! ! row := table tr. ! ! #('Apple' 'Banana' 'Orange') do:[:v | | td | ! ! ! td := row td. ! ! ! td text: v ]]. ILApplication subclass 18 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯά (3) ςʔϒϧ renderContentOn:html ! html table
border:1; with:[ ! ! html tableRow:[ ! ! #('Apple' 'Banana' 'Orange') do:[:v | ! ! html tableData:v ]]]. WAComponent subclass 19 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLϨϯμϦϯά Raw data index ^ [:e |
! ! e html: '<h1>aaa</h1>'. ]. renderContentOn:html html html:'<h1>aaa</h1>'. WAComponent subclass ILApplication subclass HTMLΛͦͷ··ग़ྗ 20 20106݄3༵
Smalltalkษڧձ - Iliad XHTMLͷϨϯμϦϯάҧ͍ BlockΛreturn͢Δهड़ํ๏ tagΛͦͷ··ΠϝʔδͰར༻Ͱ͖Δ tagͷਖ਼໊ࣜΛΒͳ͍ͱϝοηʔδΛૹΕͳ͍ 21 20106݄3༵
Smalltalkษڧձ - Iliad JavaScript,CSSͷಋೖ 1.Iliad, SeasideͱʹSqueak imageʹιʔεΛಡΈࠐΈ 2.ΞϓϦέʔγϣϯଆͰϥΠϒϥϦͷબ ҎԼͷखॱ͕ඞཁ 22
20106݄3༵
Smalltalkษڧձ - Iliad ֎෦ιʔε(CSS,JavaScirpt)ͷಡΈࠐΈ ILMemoryDirectoryͷsubclassΛ࡞ MyMemoryDirectory addFileAt:'./css/main.css' MyMemoryDirectory addAllFilesIn:'./css/' ·ͨ
Workspace্ͰҎԼͷίʔυΛ࣮ߦ 23 20106݄3༵
Smalltalkษڧձ - Iliad CSS,JavaScriptͷಋೖ४උ MyMemoryDirectory >> path ! ^'stylesheets' MyMemoryDirectory(class)>>initialize
! "self initialize" ! ILFileHandler addDirectory: self new MyMemoryDirectory.st Library.ws ΞϓϦέʔγϣϯΛݺͼग़ͨ͢ΊͷύεΛࢦఆ͢Δ ILFileHandlerʹొ 24 20106݄3༵
Smalltalkษڧձ - Iliad CSS,JavaScriptͷಋೖ imageʹಡΈࠐΜͩCSS 25 20106݄3༵
Smalltalkษڧձ - Iliad ϥΠϒϥϦͷબ styles ! ^#('/stylesheets/main.css') updatePage: aPage !
super updatePage: aPage. ! aPage head stylesheet href: '/stylesheet/main.css' ILApplication subclass ILWidget subclass 26 20106݄3༵
Smalltalkษڧձ - Iliad ILWidgetͱ •ILApplicationͷࢠཁૉʹͳΔΫϥε •ΠϯλʔϑΣʔεͷߏͱͷอ͕࣋Մೳ sample http://localhost:9090/examples/counters/ 27 20106݄3༵
Smalltalkษڧձ - Iliad JavaScript HTMLϨϯμϦϯάʹϝοηʔδΛૹΔ͚ͩͰੜ͞ΕΔ JavaScript contents ! ^[:e |
! ! e p onClick:(...); text:'1+1?'.]. ILWidget subclass 28 20106݄3༵
Smalltalkษڧձ - Iliad JavaScript,CSSͷಋೖ४උ WAFileLibraryͷsubclassΛ࡞ MyFileLibrary addFileAt:'./css/main.css'. MyFileLibrary addAllFilesIn: './css/'.
·ͨ Workspace্ͰҎԼͷίʔυΛ࣮ߦ 29 20106݄3༵
Smalltalkษڧձ - Iliad JavaScript,CSSͷಋೖํ๏ >>updateRoot:anHtmlRoot super updateRoot: anHtmlRoot. anHtmlRoot stylesheet
url: MyFileLibrary / #mainCss. >>(class) initialize ! |app| ! app := (WAAdmin register: self asApplicationAt: '...') ! ! addLibrary: MyFileLibrary. WAComponent subclass WAComponent subclass ϥΠϒϥϦͷબ 30 20106݄3༵
Smalltalkษڧձ - Iliad Ajax JQuery script.aculo.us JQueryʢSeaside 3.0ΑΓར༻Մೳʣ ඪ४AjaxϥΠϒϥϦ 31
20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ ྫ: ϩάΠϯ࣌ͷϑϩʔ Web։ൃͰΉॲཧ ೝূޭ ొ ೝূࣦഊ
Login main page User register 32 20106݄3༵
Smalltalkษڧձ - Iliad login user register main ೝূޭ ొ ೝূࣦഊ
33 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ MyTask>>go ! | user | !
loginAnswer:= self call:(MyLoginComponent new). ! loginAnswer = #registerUser ! ! ifTrue:[ user := self call: (MyUserRegisterComponent new) ] ifFalse:[ user := loginAnswer ]. ! user ifNotNil:[ ! ! self session login: user.]. self call:(MyMainComponent new). WATask subclass:#MyTask 34 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ(Seaside) WATask>>goͰϑϩʔશମΛهड़ MyLoginComponent MyUserRegisterComponent MyMainComponent MyTask call:
answer: ೝূࣦഊ ೝূޭ ॊೈͳϑϩʔ੍ޚ͕هड़Մೳ 35 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ MyIliad-Login.st ControllerͰ͋ΔILApplicationͰϑϩʔΛཧ ҰൠతͳWeb Frameworkͱಉ༷ͳߟ͑ํ Ruby on
Rails, Zend Framework MyIliad-Login.stΛfile inͯ֬͠ೝ͍ͯͩ͘͠͞ 36 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ(Iliad - 1) ILApplication subclass: #MyFlowApplication !
instanceVariableNames: 'flow' ! classVariableNames: '' ! poolDictionaries: '' ! category: 'MyIliad-Login' MyIliad-Login.st index ! ^ [:e | ! ! e build: self flow.] login ! flow := MyLoginWidget new main ! flow := MyMainWidget new. register ! flow := MyUserRegisterWidget new. flow ! ^ flow ifNil:[ flow := MyLoginWidget new ] flow: anObject ! flow := anObject ίϯτϩʔϥ͕ࢠཁૉʢWidgetʣΛஔ͖͑Δ 37 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ(Iliad - 2) ILWidget subclass: #MyLoginWidget !
instanceVariableNames: 'user' ! classVariableNames: '' ! poolDictionaries: '' ! category: 'MyIliad-Login' login ! ((user user = 'admin') and:[ user password = 'admin']) ! ! ifTrue:[ self application main. ] ! ! ifFalse:[ ! ! ! self application register. ]. MyIliad-Login.st ίϯτϩʔϥʹͤΔ contents ^[:e | e form build: [:form | form text:'User ID'. form input action:[:v | user user: v. ]. form text:'Password'. form password action:[:v | user password: v. ]. form button text: 'create'; action: [ self login ]]] 38 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ(Iliad - 3) ILWidget subclass: #MyUserRegisterWidget !
instanceVariableNames: 'user' ! classVariableNames: '' ! poolDictionaries: '' ! category: 'MyIliad-Login' addUser ! "͜͜ʹϢʔβՃॲཧ" ! self application main. MyIliad-Login.st contents ^[:e | e form build: [:form | form text:'User ID'. form input action:[:v | user user: v. ]. form text:'Password'. form password action:[:v | user password: v. ]. form button text: 'create'; action: [ self addUser ]]] ίϯτϩʔϥʹͤΔ 39 20106݄3༵
Smalltalkษڧձ - Iliad ϑϩʔ੍ޚ •Controller͕ભҠॲཧΛߦͳΘͳ͚ΕͳΒͳ͍ •Seasideͱҧ͍ϒϥβͷόοΫϘλϯΛ࣮ߦ͞ΕΔ ͱ߹ੑ͕औΕͳ͍ʢैདྷͷWeb Frameworkͱಉ͡ʣ •IliadILWidget͕ར༻Ͱ͖ΔͰैདྷΑΓྑ͍ 40
20106݄3༵
Smalltalkษڧձ - Iliad Advance •Session •Response ࢀߟ SmalltalkͰWebαΠτΛ࡞Γ͍ͨਓ 41 20106݄3༵
Smalltalkษڧձ - Iliad Session SessionManager sessionClass: MySession ݱ࣌Ͱ͔ͬͨํ๏ ILSessionͷαϒΫϥεΛ࡞ 42
20106݄3༵
Smalltalkษڧձ - Iliad Session >>(class) initialize app := MyTask registerAsApplication:
'myTask'. app preferenceAt: #sessionClass put: MySession. WASessionͷαϒΫϥεΛ࡞ WAComponent subclass 43 20106݄3༵
Smalltalkษڧձ - Iliad Response (1) ࣗಈੜ͞ΕΔXHMTMLҎ֎ͷใͷग़ྗ XML, RSS,SVG... ը૾ϑΝΠϧͷμϯϩʔμ 44
20106݄3༵
Smalltalkษڧձ - Iliad Response (2) respondOn: aResponse aResponse contentType:'text/xml'; contents:
self svg. ILApplication subclass MySVGApplication.st self svg SVGͷςΩετΛฦ͢ϝιου respondOn:ΛΦʔόϥΠυ͢Δ 45 20106݄3༵
Smalltalkษڧձ - Iliad Response (3) 2.8ܥ renderContentOn:html self session returnResponse:
(WAResponse new !! contentType: 'text/xml'; ! ! nextPutAll: self makeSVG; ! ! yourself) WAComponent subclass 46 20106݄3༵
Smalltalkษڧձ - Iliad Response (4) renderContentOn: html ! self requestContext
respond: [:response | ! ! response ! ! initializeOn: self svg ; contentType: 'text/xml'] 3.0ܥ WAComponent subclass 47 20106݄3༵
Smalltalkษڧձ - Iliad Response (5) ResponseΛ༻͍ͨsvgͷग़ྗ 48 20106݄3༵
Smalltalkษڧձ - Iliad ։ൃڥ ϒϥβ্Ͱͷ ։ൃ ຊޠ Documents গͳ͍ ଟ͍
49 20106݄3༵
Smalltalkษڧձ - Iliad ϒϥβ্Ͱͷ։ൃ •Browser •Halo •Stylesheet •Debugger Iliadʹ࣮͞Ε͍ͯͳ͍ 50
20106݄3༵
Smalltalkษڧձ - Iliad ຊޠͷରԠํ๏ കᖒ͞ΜΑΓຊޠԽύονఏڙ ʢPharoͰར༻Մೳʣ GRUtf8SqCodec.st ILSite default codec:
(GRUtf8SqCodec new). GRUtf8SqCodec.st Λfile in͢Δ WorkspaceͰҎԼͷίʔυΛdo it 51 20106݄3༵
Smalltalkษڧձ - Iliad ରԠSmalltalk Squeak Pharo VisualWorks GNU Smalltalk GemStone
Dolphin Smalltalk VASmalltalk Squeak Pharo GNU Smalltalk VisualWorksʢରԠ༧ఆʣ 52 20106݄3༵
Smalltalkษڧձ - Iliad Iliadͷݸਓతײ •SmalltalkҎ֎ͷWebϓϩάϥϚ͕Ҡߦ͢Δʹ͍͍͔ •·ͩ·ͩDocuments͕Γͳ͍ •Web্Ͱͷ։ൃ͕Ͱ͖ΔͱΑ͍ •ඇৗʹܰྔͰ୳ࡧ͍͢͠ 53 20106݄3༵
Smalltalkษڧձ - Iliad ࢀߟใ • Iliad http://www.iliadproject.org/index • Seaside http://www.seaside.st/
• GNU Smalltalk http://smalltalk.gnu.org/ Iliad ϝʔϦϯάϦετ http://groups.google.fr/group/iliad 54 20106݄3༵
Smalltalkษڧձ - Iliad Έͳ͞ΜͲ͏ࢥ͍·͔ͨ͠ʁ 55 20106݄3༵