Tytuä oryginaäu: Ajax on Java
Täumaczenie: Säawomir Dzieniszewski
ISBN: 978-83-246-5953-1
© Helion S.A. 2007
Authorized translation of the English edition of Ajax on Java © 2007 O’Reilly Media, Inc. This translation
is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell
the same.
Polish language edition published by Helion S.A.
Copyright © 2007
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage
retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeĔone. Nieautoryzowane rozpowszechnianie caäoĈci lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodñ kserograficznñ,
fotograficznñ, a takĔe kopiowanie ksiñĔki na noĈniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki wystöpujñce w tekĈcie sñ zastrzeĔonymi znakami firmowymi bñdĒ towarowymi
ich wäaĈcicieli.
Autor oraz Wydawnictwo HELION doäoĔyli wszelkich staraþ, by zawarte w tej ksiñĔce informacje
byäy kompletne i rzetelne. Nie biorñ jednak Ĕadnej odpowiedzialnoĈci ani za ich wykorzystanie,
ani za zwiñzane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszñ równieĔ Ĕadnej odpowiedzialnoĈci za ewentualne szkody
wynikäe z wykorzystania informacji zawartych w ksiñĔce.
Wydawnictwo HELION
ul. KoĈciuszki 1c, 44-100 GLIWICE
tel. 032 231 22 19, 032 230 98 63
e-mail:
[email protected]
WWW: http://helion.pl (ksiögarnia internetowa, katalog ksiñĔek)
Drogi Czytelniku!
JeĔeli chcesz oceniè tö ksiñĔkö, zajrzyj pod adres
http://helion.pl/user/opinie?ajaxja_ebook
MoĔesz tam wpisaè swoje uwagi, spostrzeĔenia, recenzjö.
Pliki z przykäadami omawianymi w ksiñĔce moĔna znaleĒè pod adresem:
ftp://ftp.helion.pl/przyklady/ajaxja.zip
Printed in Poland.
x Poleć książkę na Facebook.com
x Kup w wersji papierowej
x Oceń książkę
x Księgarnia internetowa
x Lubię to! » Nasza społeczność
5
Spis treļci
Przedmowa ...............................................................................................................................7
1. Przygotowania ............................................................................................................ 13
Wymagania 13
Instalowanie serwera Tomcat 14
Instalowanie Ant 15
2. JavaScript i Ajax ............................................................................................................17
Tworzenie aplikacji 18
Uruchamianie przykäadu 24
3. Prosty serwlet Ajax ......................................................................................................25
Budowanie i instalowanie aplikacji Ajax 27
Uruchamianie przykäadu 29
4. XML oraz JSON i Ajax .................................................................................................. 31
Aplikacja dekodujñca znaki 31
Przygotowujemy prosty dokument XML 32
Wracamy do klienta — analiza kodu XML 40
Budowanie aplikacji 45
Uruchamianie aplikacji na serwerze Tomcat 47
Przesyäanie danych z uĔyciem formatu JSON 48
Podsumowanie 51
5. Pobieranie potrzebnych danych .................................................................................53
Wypeänianie formularza za pomocñ Ajaksa 53
Tworzenie pola sugerujñcego nazwy uĔytkowników 62
6. Biblioteki i zestawy narzýdziowe ...............................................................................75
Korzystanie z biblioteki Dojo Toolkit 76
Korzystanie z biblioteki Rico Toolkit 81
Korzystanie z biblioteki DWR 87
Przeciñganie i upuszczanie z wykorzystaniem bibliotek Scriptaculous i Prototype 92
6 _ Spis treļci
7. Znaczniki Ajax ............................................................................................................. 111
Tworzenie biblioteki znaczników 111
Biblioteki znaczników oferowane przez innych dostawców 121
8. Ajax i Struts ................................................................................................................ 145
Biblioteka Struts-Layout 145
Implementowanie funkcji Ajax w Struts z uĔyciem biblioteki DWR 157
Ajax i Struts — czego dowiedzieliĈmy siö w tym rozdziale? 170
9. Ajax i JavaServer Faces ...............................................................................................171
Cykl Ĕycia JSF 172
Pisanie wäasnego komponentu JSF 172
Tworzenie wäasnego znacznika JSF 177
Obsäugiwanie danych JSF poprzez rozszerzanie klasy HtmlInputText 185
Kod JSF wspomagajñcy mechanizm Ajax 186
Podsumowanie 189
10. Zestaw narzýdziowy Google Web Toolkit ................................................................191
Zaczynamy pracö z GWT 191
Wyszukiwanie bäödów w kodzie aplikacji 196
Rozbudowujemy aplikacjö — kod klienta 200
Udostöpnianie usäug klientowi 204
Testowanie wspóädziaäania aplikacji ZipCodes z usäugñ 209
Kontrolki oferowane przez GWT 212
Skorowidz ..............................................................................................................................217
7
Przedmowa
— Popatrzcie, jaka cudowna rzecz! — zawoäaäem do swoich kolegów z pracy.
— Co to takiego? — zapytaä jeden z nich.
— Mapy w usäudze Google Maps wykorzystujñ Ajax — wyjaĈniäem.
— Co to takiego Ajax?
— To skrót od Asynchroniczny JavaScript i XML. Poäñczenie dziaäajñcych asynchronicznie skryp-
tów JavaScript i XML, umoĔliwiajñce wysyäanie zadaþ ze stron WWW do serwera i wyĈwie-
tlanie otrzymanych wyników bez koniecznoĈci wypeäniania formularza HTML i czekania na
odĈwieĔenie strony.
— Znakomite! To znaczy, Ĕe moja aplikacja WWW bödzie mogäa dziaäaè tak interaktywnie,
jak zwykäa aplikacja zainstalowana na komputerze!
WäaĈnie. Do tej pory programiĈci piszñcy kod dla stron WWW mieli do wyboru tylko bardzo
ubogie w moĔliwoĈci aplikacje WWW i znacznie bardziej zaawansowane programy, które
jednak wymagaäy instalacji na komputerze uĔytkownika. Wraz z pojawieniem siö technologii
Ajax uzyskali moĔliwoĈè pisania aplikacji WWW oferujñcych podobne bogactwo moĔliwoĈci,
co programy instalowane na komputerach, dziöki czemu nie muszñ juĔ däuĔej przejmowaè
siö instalowaniem na komputerze uĔytkownika najnowszych aplikacji potrzebnych mu do
korzystania ze strony. Dziöki temu mogñ teraz pisaè naprawdö interaktywne aplikacje inter-
netowe.
Ajax: krótki rys historyczny
Na poczñtku powstaä HTML i Ĉwiat stwierdziä, Ĕe byä dobry. Wkrótce potem pojawiäy siö apli-
kacje WWW i Ĉwiat zachwyciä siö moĔliwoĈciñ interaktywnego korzystania z danych w inter-
necie. PoĈród nich byäy wyszukiwarki, usäugi umoĔliwiajñce realizacjö päatnoĈci poprzez sieè,
internetowe domy maklerskie, interaktywne gry, wirtualne sklepy i wiele, wiele innych.
Pojawia siö pytanie: czego brakowaäo tym wszystkim aplikacjom? OdpowiedĒ jest prosta: praw-
dziwej interaktywnoĈci, czyli zdolnoĈci do szybkiego reagowania na dziaäania uĔytkownika.
Moje pierwsze doĈwiadczenie naprawdö intuicyjnej interakcji z komputerem miaäo miejsce daw-
no temu w roku 1984. Byäem wtedy studentem i w kampusie byäa pracownia komputerowa
zaopatrzona w nowy produkt firmy Apple Computer Inc. — komputer Macintosh. Komputery
8 _ Przedmowa
byäy Ēródäem nieustannych zachwytów wĈród studentów. Zaopatrzone byäy co prawda w tyl-
ko jeden program: edytor tekstu MacWrite, ale w zupeänoĈci mi to wystarczaäo. Podobnie
jak w przypadku wielu innych studentów przyjazny i äatwy w obsäudze interfejs programu
MacWrite z miejsca zawojowaä mojñ duszö.
Niestety do niedawna aplikacje internetowe nie byäy w stanie zaoferowaè uĔytkownikom takiego
komfortu, jakiego doĈwiadczali podczas pracy z aplikacjami instalowanymi na komputerach.
OczywiĈcie moĔliwe byäo przygotowanie odpowiednich aplikacji dla bogatych klientów. Nie-
mniej obsäuga takich klientów wymaga poĈwiöcenia im czasu, co z kolei nie jest moĔliwe ani
praktyczne w przypadku zwykäych klientów korzystajñcych z aplikacji przeznaczonych dla
przeglñdarek internetowych. JeĈli chodzi o äatwoĈè przygotowania i zaopatrywania uĔytkowni-
ków w najnowsze wersje oprogramowania, nie ma lepszego rozwiñzania niĔ aplikacje WWW
przeznaczone dla przeglñdarek internetowych. Ideaäem byäyby oczywiĈcie aplikacje wspóäpra-
cujñce z przeglñdarkami, które dawaäyby uĔytkownikom taki stopieþ komfortu, jaki dotychczas
byä udziaäem tylko bogatych klientów.
Poznajcie Ajax.
Niektórzy z Czytelników zetknöli siö juĔ pewnie z technologiñ Ajax, która rozwijaäa siö w in-
ternecie od jakiegoĈ czasu, choè nie zawsze znana byäa pod tñ nazwñ. Termin Ajax (skrót od
Asynchronous Java Script and XML — asynchroniczny JavaScript i XML) wprowadzony zostaä
przez Jesse Jamesa Garretta z firmy Adaptive Path w artykule Ajax: A New Approach to Web Ap-
plications („Ajax, nowe podejĈcie do aplikacji WWW”; http://www.adaptivepath.com/publications/
essays/archives/000385.php). Wkrótce po publikacji tego artykuäu podniosäy siö gäosy, Ĕe w tym po-
dejĈciu nie ma tak naprawdö nic nowego. W koþcu wielu programistów pisaäo asynchroniczne
aplikacje juĔ przed pojawieniem sie interfejsu API XMLHttpRequest. Aplety Javy mimo swo-
ich ograniczeþ mogäy zaoferowaè podobny stopieþ interaktywnoĈci, co aplikacje instalowane
na komputerze. Podobnie jak aplikacje z animacjami Flash.
Co w takim razie siö zmieniäo? Czemu ta technologia jest takñ rewolucjñ? CóĔ, przede wszyst-
kim praktyka programowania asynchronicznych aplikacji zyskaäa chwytliwñ, zbiorczñ na-
zwö. To na pozór nie tak wiele, ale zawsze tworzy wspólnñ platformö dyskusji dla zajmujñcych
siö tym problemem programistów. Podobnie jak nazwy róĔnych metod projektowania wyko-
rzystywane w programistycznym Ĕargonie, tak i nazwa Ajax pozwala od razu zorientowaè
siö, o jakiej technice programistycznej mówimy.
Od czasu publikacji artykuäu Garretta w sieci rozgorzaäa dyskusja, jak wykorzystaè moĔliwoĈci
technologii Ajax i jak radziè sobie z jej ograniczeniami. Wysyp nowych artykuäów, narzödzi i in-
formacji na temat tej technologii spowodowaä wzrost zainteresowania Ajaksem. Dziöki temu,
Ĕe informacje na temat technologii Ajax staäy siö nagle bardziej dostöpne, techniki programo-
wania Ajax trafiäy do gäównego nurtu programowania aplikacji WWW i wkrótce zapewne
bödñ traktowane przez uĔytkowników internetu jako standard.
W tym wäaĈnie tkwi siäa nazwy.
Technologia Ajax zmniejszyäa lukö pomiödzy rozbudowanymi aplikacjami dla specjalnych (bo-
gatych) klientów a doĈè prostymi do tej pory aplikacjami przeznaczonymi dla klientów ko-
rzystajñcych z przeglñdarek. KsiñĔka nasza jest wäaĈnie wprowadzeniem do technologii Ajax,
pokazujñcym, jak wzbogacaè o funkcje Ajax aplikacje oparte na serwletach, aplikacje JSP, apli-
kacje JSF itp.
Zawartoļë ksiéŜki _ 9
Zapraszam wiöc do tej ekscytujñcej podróĔy: nauczmy siö, jak uczyniè nasze aplikacje bardziej
interaktywnymi, atrakcyjniejszymi i bardziej efektywnymi dziöki wyeliminowaniu pracochäon-
nego wpisywania danych przez uĔytkownika i irytujñcego oczekiwania na ponowne zaäado-
wanie siö caäej strony. Innymi säowy: jak sprawiè, aby uĔytkownicy aplikacji WWW mogli
korzystaè z nich w równie komfortowy sposób, co uĔytkownicy aplikacji instalowanych bez-
poĈrednio na komputerze. To wäaĈnie obiecuje nam technologia Ajax.
Dla kogo przeznaczona jest ta ksiéŜka
Nasza ksiñĔka przeznaczona jest dla pragnñcych siö rozwijaè programistów jözyka Java, nieza-
leĔnie od ich stopnia doĈwiadczenia w programowaniu. W szczególnoĈci dla tych, którzy zaj-
mujñ siö pisaniem aplikacji WWW. Wspomniaäem o chöci rozwoju, poniewaĔ ksiñĔka ta pomoĔe
Czytelnikowi podnieĈè umiejötnoĈci programowania na wyĔszy poziom. Dziöki zdobytej wie-
dzy bödziemy mogli dostarczyè naszym uĔytkownikom bardziej wygodnych aplikacji, gdy
niezgrabny interfejs klasycznej aplikacji WWW zostanie zastñpiony przez znacznie bardziej
interaktywny interfejs aplikacji wykorzystujñcej technologiö Ajax.
Co powinniļmy wiedzieë
ProgramiĈci jözyka Java posiadajñcy doĈwiadczenie w pisaniu aplikacji WWW nie powinni
mieè Ĕadnych problemów ze zrozumieniem materiaäu prezentowanego w niniejszej ksiñĔce.
Piszñc jñ, zakäadaäem, Ĕe Czytelnik bödzie miaä pewnñ wiedzö na temat serwletów Javy, jö-
zyka HTML i jözyka JavaScript. Przydatna, aczkolwiek nie niezbödna, bödzie równieĔ pewna
wiedza na temat analizy dokumentów XML.
Zawartoļë ksiéŜki
KsiñĔka nasza zostaäa podzielona na dziesiöè rozdziaäów:
Rozdziaä 1. „Przygotowania”
Rozdziaä ten opisuje Ĉrodowisko programowania, które bödzie nam potrzebne, by uruchomiè
przykäady kodu Ajax prezentowane w tej ksiñĔce. Przykäady te korzystajñ z pojemnika
(serwera) Tomcat, niemniej Czytelnicy przyzwyczajeni do innych pojemników dla kodu
J2EE (Java Platform, Enterprise Edition) nie powinni mieè problemów z uruchamianiem
przykäadów kodu.
Rozdziaä 2. „JavaScript i Ajax”
Ten rozdziaä wyjaĈnia, w jaki sposób jözyk JavaScript korzysta z funkcji Ajax, oraz pokazuje,
w jaki sposób za pomocñ jözyka JavaScript wykonywaè asynchroniczne wywoäania z uĔy-
ciem obiektu XMLHttpRequest.
Rozdziaä 3. „Prosty serwlet Ajax”
W tym rozdziale opowiemy, jak obsäugiwaè klienta Ajax za pomocñ serwletu. W tym wäa-
Ĉnie miejscu ksiñĔka nasza róĔni siö od innych ksiñĔek poĈwiöconych Ajaksowi: zamiast
z innych technologii, takich jak PHP, Perl czy Rails, korzysta z jözyka Java.
10 _ Przedmowa
Rozdziaä 4. „XML oraz JSON i Ajax”
Mimo iĔ mogäoby siö wydawaè, Ĕe XML jest integralnñ czöĈciñ Ajaksa, w istocie nie jest wy-
magany. Ten rozdziaä pokazuje, jak uĔywaè jözyka XML do indeksowania danych po-
wracajñcych do klienta, i prezentuje format JSON jako atrakcyjnñ alternatywö dla XML.
Rozdziaä 5. „Pobieranie potrzebnych danych”
Ten rozdziaä pokazuje, jak przechowywaè dane potrzebne aplikacjom Ajax w bazie danych
oraz jak pobieraè te dane z bazy.
Rozdziaä 6. „Biblioteki i zestawy narzödziowe”
Stworzono wiele ram (Ĉrodowisk) programowania i zestawów narzödziowych, by pomóc
programistom Ajax w tworzeniu pewnych podstawowych funkcji niezbödnych do obsäugi
mechanizmów Ajax. Ten rozdziaä omawiaè bödzie niektóre z tych Ĉrodowisk i zestawów
narzödziowych, takie jak Dojo, Rico, Prototype, DWR czy Scriptaculous.
Rozdziaä 7. „Znaczniki Ajax”
Technologia JavaServer Pages (JSP) oferuje moĔliwoĈè ponownego wykorzystania kodu dziöki
zastosowaniu tzw. bibliotek znaczników (ang. tag libraries). Ten rozdziaä opisuje, jak tworzyè
dla JSP znaczniki kodu Ajax.
Rozdziaä 8. „Ajax i Struts”
Rozdziaä omawia integrowanie technologii Ajax ze Ĉrodowiskiem Struts.
Rozdziaä 9. „Ajax i JavaServer Faces”
Rozdziaä pokazuje, jak korzystaè z technologii Ajax w poäñczeniu ze Ĉrodowiskiem JavaServer
Faces.
Rozdziaä 10. „Zestaw narzödziowy Google Web Toolkit”
Zestaw narzödziowy Google Web Toolkit umoĔliwia nie tylko dokäadne debugowanie kodu
Ajax (usuwanie bäödów z kodu Ajax), ale ponadto jest równieĔ fascynujñcym wprowadze-
niem do technologii Ajax w jözyku Java. Ten rozdziaä jest przewodnikiem po tym zna-
komitym zestawie narzödziowym przygotowanym przez Google dla programistów Ajax.
Konwencje stosowane w ksiéŜce
W naszej ksiñĔce korzystamy z nastöpujñcych konwencji typograficznych:
Kursywa
UĔywamy jej w nazwach klawiszy (takich jak Alt lub Ctrl) i skrótach klawiaturowych.
UĔywamy jej dla wyróĔnienia nowych terminów, a ponadto w tytuäach i poleceniach menu,
opcjach menu, tekstach na przyciskach, adresach URL, adresach e-mail, nazwach plików,
rozszerzeniach plików, ĈcieĔkach do plików i katalogów, nazwach katalogów i nazwach
programów narzödziowych systemu Unix.
Czcionka o staĪej szerokoŁci
SäuĔy do wyróĔniania poleceþ, opcji i przeäñczników programowych, zmiennych, atrybutów,
kluczy, funkcji, typów, klas, przestrzeni nazw, metod, moduäów, wäaĈciwoĈci, parame-
trów, wartoĈci, obiektów, zdarzeþ, procedur obsäugi zdarzeþ, znaczników XML, znaczni-
ków HTML, zawartoĈci plików oraz wyników zwracanych przez polecenia.
Podziýkowania _ 11
Pogrubiona czcionka o staĨej szerokoĿci
WyróĔnia polecenia lub inny tekst, który musi zostaè wpisany przez uĔytkownika lite-
ralnie (tak jak jest podany w ksiñĔce).
Ta ikona oznacza wskazówkö, sugestiö lub uĔytecznñ uwagö.
Ta ikona oznacza ostrzeĔenie.
Korzystanie z przykĥadów kodu
Podröcznik ten zostaä napisany po to, aby uäatwiè Ĕycie programistom. Dlatego teĔ Czytelnicy
mogñ swobodnie korzystaè z kodu prezentowanego w tej ksiñĔce w swoich programach i do-
kumentacji. Nie ma potrzeby kontaktowania siö z nami, by uzyskaè zgodö na wykorzystywanie
fragmentów kodu, o ile nie zamierzacie uĔyè znaczñcej porcji kodu. Dla przykäadu: jeĈli ktoĈ
pisze program, który bödzie wykorzystywaä kilka fragmentów kodu z tej ksiñĔki, nie ma po-
trzeby uzyskiwania naszej zgody. Natomiast odsprzedawanie lub rozpowszechnianie päyt
CD-ROM z przykäadami kodu, doäñczanych do niektórych ksiñĔek wydawanych przez wy-
dawnictwo O’Reilly, juĔ takiej zgody wymaga. Odpowiadanie na pytania innych uĔytkowni-
ków Perla, podpierajñc siö cytatami z tej ksiñĔki, nie wymaga naszej zgody. Natomiast doäñczanie
do dokumentacji wäasnego komercyjnego produktu znaczñcej porcji przykäadów z tej ksiñĔki
wymaga naszej zgody.
Bödziemy wdziöczni za podanie Ēródäa wykorzystywanego kodu, aczkolwiek tego nie wyma-
gamy. Zazwyczaj informacja taka powinna zawieraè tytuä ksiñĔki, autora, wydawcö i ISBN. Na
przykäad: „Ajax on Java, wydanie II, autor Steven Douglas Olson, wydawnictwo Helion, 2007,
ISBN: 978-83-246-1110-2”.
Podziýkowania
Wdziöczny jestem za wszelkñ pomoc, którñ otrzymaäem podczas pisania tej ksiñĔki. W styczniu
2004 roku, kiedy przeczytaäem säawny juĔ artykuä Jesse Jamessa Garretta, po raz pierwszy
opisujñcy tö nowñ technologiö i wprowadzajñcy termin Ajax, poczuäem, Ĕe jest to poczñtek re-
wolucji w programowaniu stron aplikacji dla stron WWW. Mimo iĔ co bardziej innowacyjni
twórcy stron WWW korzystali z technik programowania Ajax juĔ wczeĈniej, by zaoferowaè
uĔytkownikom internetu interesujñce usäugi, dopiero w roku 2004 ten nieĈmiaäy ognik innowacji
eksplodowaä wielkim päomieniem technologicznej rewolucji. Wdziöczny jestem szczególnie armii
programistów, którzy stworzyli Ĉrodowiska takie jak DWR (Joe Walker), Dojo, Rico (Richard
Cowen, Bill Scott, Darren James) i Scriptaculous (Thomas Fuchs). Ponadto chciaäbym równieĔ
podziökowaè zespoäowi, który stworzyä zestaw narzödziowy Google Web Toolkit oraz Edowi
Burnsowi, Gregowi Murray i Torowi Norbye za pracö, jakñ wäoĔyli w zintegrowanie technologii
Ajax ze Ĉrodowiskiem JavaServer Faces.
12 _ Przedmowa
NaleĔy równieĔ pamiötaè, Ĕe nowa technologia nie rozpowszechniäaby siö tak szybko bez wielu
zaangaĔowanych apostoäów. Wspaniaäym Ēródäem informacji jest na przykäad witryna Ajaxian.com
prowadzona przez Bena Galbraitha i Diona Almaera. Dziöki tej witrynie programiĈci uzyskali
äatwy dostöp do pomocy i wielu uĔytecznych informacji na temat technologii Ajax.
Chciaäbym teĔ podziökowaè mojemu redaktorowi Mike’owi Loukidesowi za ogromne wspar-
cie, którego udzieliä mi w realizacji tego przedsiöwziöcia. Pomógä mi przedstawiè wiele naprawdö
zäoĔonych problemów w prosty sposób i pomógä mi przerobiè niektóre z moich caäkowicie nie-
czytelnych zdaþ na czytelnñ i zrozumiaäñ dla zwykäego czäowieka prozö. Trudno przeceniè
jego wkäad w pracö nad tñ ksiñĔkñ.
Wyrazy wdziöcznoĈci naleĔñ siö teĔ komentatorom i korektorom ksiñĔki. Michael Davis przejrzaä
wiökszoĈè prezentowanego kodu i pomógä mi wykryè pojawiajñce siö tu i ówdzie problemy.
David Lakes pomógä mi zorganizowaè pracö i zadbaä, by zawartoĈè ksiñĔki byäa strawna dla
przeciötnego czytelnika. Wreszcie Vimal Kansal zbadaä prawdziwoĈè informacji technicznych
prezentowanych w ksiñĔce.
Na koniec oczywiĈcie pragnñäbym zäoĔyè podziökowania mojej rodzinie, która wspieraäa mnie
podczas realizacji tego projektu. Dziökujö wiöc moim dzieciom Jordanowi, Erikowi, Stefani, Mat-
thew i Kyrze. Nie poradziäbym sobie teĔ z tym wszystkim bez pomocy i wsparcia, którego udzie-
liäa mi moja Ĕona Erin. WäaĈnie jej przede wszystkim naleĔñ siö moje podziökowania i wyrazy
miäoĈci.
— Steven Douglas Olson
Listopad 2006
13
ROZDZIAĤ 1.
Przygotowania
Pierwsza rzecz, którñ musimy zrobiè, to przygotowanie odpowiedniego Ĉrodowiska pr...