Rails Zaawansowane programowanie railzp.pdf
(
471 KB
)
Pobierz
Rails. Zaawansowane programowanie
Rails. Zaawansowane
programowanie
Autor: Brad Ediger
T³umaczenie: Pawe³ Gonera
ISBN: 978-83-246-1724-1
Tytu³ orygina³u:
Advanced Rails
Format: 168x237 , stron: 336
Twórz zaawansowane projekty w Rails!
•
Jak zadbaæ o bezpieczeñstwo?
•
Jak zapewniæ wydajnoœæ Twojej aplikacji?
•
Jak stworzyæ i utrzymaæ du¿y projekt w Rails?
Ruby on Rails przebojem wdar³ siê na rynek szkieletów aplikacji internetowych.
Stworzony w architekturze MVC z wykorzystaniem popularnego jêzyka Ruby, zosta³
entuzjastycznie przyjêty przez spo³ecznoœæ programistów. G³ówne za³o¿enia autora tego
projektu, Davida Heinemeiera Hanssona, to szybkoœæ, ³atwoœæ i przyjemnoœæ tworzenia
kodu. Ruby on Rails jest dojrza³ym rozwi¹zaniem, wykorzystywanym przez wiele firm
w aplikacjach internetowych, tworzonych pod k¹tem ich specyficznych potrzeb. Liczba
aplikacji, które powsta³y z wykorzystaniem tego szkieletu, œwiadczy o jego wysokiej
jakoœci oraz niew¹tpliwie ma wp³yw na wzrost popularnoœci samego jêzyka Ruby.
„
Rails. Zaawansowane programowanie
”
porusza te tematy, które Wy, programiœci,
lubicie najbardziej! Dziêki tej ksi¹¿ce dowiesz siê, w jaki sposób wykorzystaæ gotowe
wtyczki oraz jak stworzyæ nowe. Nauczysz siê stosowaæ zaawansowane funkcje bazy
danych oraz pod³¹czaæ siê jednoczeœnie do wielu baz. Po lekturze tego podrêcznika
bez problemu zapewnisz swojej aplikacji najwy¿szy poziom bezpieczeñstwa, optymaln¹
wydajnoœæ i skalowalnoœæ. Autor wskazuje tutaj równie¿ niezwykle interesuj¹ce
kwestie, dotycz¹ce projektowania du¿ych aplikacji, wykorzystania systemów kontroli
wersji oraz utrzymywania w³aœciwej struktury projektu.
•
Przypomnienie i omówienie podstawowych elementów Ruby i Rails
•
Stosowanie ActiveSupport oraz RailTies
•
Zastosowanie i projektowanie wtyczek
•
Zaawansowane wykorzystanie baz danych
•
Uwierzytelnianie za pomoc¹ LDAP
•
Bezpieczne szyfrowanie hase³
•
Bezpieczne przetwarzanie formularzy i danych u¿ytkownika
•
Zapewnienie wydajnoœci
•
Skalowanie architektury
•
Wykorzystywanie us³ug Web
•
Tworzenie wielojêzycznych aplikacji
•
Zarz¹dzanie du¿ymi projektami
•
U¿ywanie systemów kontroli wersji
Poznaj wszystkie funkcje Ruby on Rails!
Spis treci
Wstp ........................................................................................................................................ 5
1. Techniki podstawowe ................................................................................................... 9
Czym jest metaprogramowanie?
9
Podstawy Ruby
12
Techniki metaprogramowania
30
Programowanie funkcyjne
41
Przykady
46
Propozycje dalszych lektur
49
2. ActiveSupport oraz RailTies ........................................................................................ 51
Ruby, jakiego nie znamy
51
Jak czyta kod?
54
ActiveSupport
61
Core Extensions
65
RailTies
79
Propozycje dalszych lektur
81
3. Wtyczki Rails ................................................................................................................83
Wtyczki
83
Tworzenie wtyczek
87
Przykad wtyczki
89
Testowanie wtyczek
94
Propozycje dalszych lektur
97
4. Bazy danych .................................................................................................................99
Systemy zarzdzania baz danych
99
Due obiekty (binarne)
104
Zaawansowane funkcje baz danych
112
Podczanie do wielu baz danych
118
Buforowanie
120
Wyrównywanie obcienia i wysoka dostpno
121
LDAP
126
Propozycje dalszych lektur
127
3
5. Bezpieczestwo ......................................................................................................... 129
Problemy w aplikacji
129
Problemy w sieci WWW
138
Wstrzykiwanie SQL
145
rodowisko Ruby
146
Propozycje dalszych lektur
147
6. Wydajno .................................................................................................................. 149
Narzdzia pomiarowe
150
Przykad optymalizacji Rails
156
Wydajno ActiveRecord
165
Skalowanie architektury
174
Inne systemy
181
Propozycje dalszych lektur
183
7. REST, zasoby oraz usugi Web .................................................................................. 185
Czym jest REST?
185
Zalety architektury REST
203
REST w Rails
207
Analiza przypadku — Amazon S3
226
Propozycje dalszych lektur
230
8. i18n oraz L10n ............................................................................................................ 231
Lokalizacje
231
Kodowanie znaków
232
Unicode
233
Rails i Unicode
235
Rails L10n
243
Propozycje dalszych lektur
262
9. Wykorzystanie i rozszerzanie Rails .......................................................................... 263
Wymiana komponentów Rails
263
Wykorzystanie komponentów Rails
274
Udzia w tworzeniu Rails
279
Propozycje dalszych lektur
285
10. Due projekty ............................................................................................................. 287
Kontrola wersji
287
ledzenie bdów
298
Struktura projektu
299
Instalacja Rails
305
Propozycje dalszych lektur
311
Skorowidz ............................................................................................................................. 313
4
Spis treci
ROZDZIA 1.
Techniki podstawowe
Do osignicia niezawodnoci jest wymagana prostota.
Edsger W. Dijkstra
Od pierwszego wydania w lipcu 2004 roku rodowisko Ruby on Rails stale zdobywa popu-
larno. Rails przyciga programistów PHP, Java i .NET swoj prostot — architektur
model-widok-kontroler (MVC), rozsdnymi wartociami domylnymi („konwencja nad kon-
figuracj”) oraz zaawansowanym jzykiem programowania Ruby.
rodowisko Rails miao przez pierwszy rok lub dwa sab reputacj z uwagi na braki w do-
kumentacji. Luka ta zostaa wypeniona przez tysice programistów, którzy korzystali ze
rodowiska Ruby on Rails, wspótworzyli je i pisali na jego temat, jak równie dziki pro-
jektowi Rails Documentation (
http://railsdocumentation.org
). Dostpne s tysice blogów, które
zawieraj samouczki oraz porady na temat programowania w Rails.
Celem tej ksiki jest zebranie najlepszych praktyk oraz wiedzy zgromadzonej przez rodo-
wisko programistów Rails i zaprezentowanie ich w atwej do przyswojenia, zwartej formie.
Poszukiwaem ponadto tych aspektów programowania dla WWW, które s czsto niedoce-
niane lub pomijane przez rodowisko Rails.
Czym jest metaprogramowanie?
Rails udostpnia metaprogramowanie dla mas. Cho nie byo to pierwsze zastosowanie za-
awansowanych funkcji Ruby, to jednak jest ono chyba najbardziej popularne. Aby zrozumie
dziaanie Rails, konieczne jest wczeniejsze zapoznanie si z tymi mechanizmami Ruby, które
zostay wykorzystane w tym rodowisku. W tym rozdziale przedstawione zostan podsta-
wowe mechanizmy zapewniajce dziaanie technik przedstawianych w pozostaych rozdzia-
ach ksiki.
Metaprogramowanie
to technika programowania, w której kod jest wykorzystywany do
tworzenia innego kodu, bd dokonania introspekcji samego siebie. Przedrostek
meta
(z gre-
ki) wskazuje na abstrakcj; kod wykorzystujcy techniki metaprogramowania dziaa jedno-
czenie na dwóch poziomach abstrakcji.
Metaprogramowanie jest wykorzystywane w wielu jzykach, ale jest najbardziej popularne
w jzykach dynamicznych, poniewa maj one zwykle wicej funkcji pozwalajcych na ma-
nipulowanie kodem jako danymi. Pomimo tego, e w jzykach statycznych, takich jak C# lub
9
Java, dostpny jest mechanizm refleksji, to nie jest on nawet w czci tak przezroczysty, jak
w jzykach dynamicznych, takich jak Ruby, poniewa kod i dane znajduj si w czasie dzia-
ania aplikacji na dwóch osobnych warstwach.
Introspekcja jest zwykle wykonywana na jednym z tych poziomów.
Introspekcja syntak-
tyczna
jest najniszym poziomem introspekcji — pozwala na bezporedni analiz tekstu
programu lub strumienia tokenów. Metaprogramowanie bazujce na szablonach lub ma-
krach zwykle dziaa na poziomie syntaktycznym.
Ten typ metaprogramowania jest wykorzystany w jzyku Lisp poprzez stosowanie
S-wyrae
(bezporedniego tumaczenia drzewa abstrakcji skadni programu) zarówno w przypadku kodu,
jak i danych. Metaprogramowanie w jzyku Lisp wymaga intensywnego korzystania z
makr
,
które s tak naprawd szablonami kodu. Daje to moliwo pracy na jednym poziomie; kod
i dane s reprezentowane w ten sam sposób, a jedynym, co odrónia kod od danych, jest to,
e jest on wartociowany. Jednak metaprogramowanie na poziomie syntaktycznym ma swoje
wady. Przechwytywanie zmiennych oraz przypadkowe wielokrotne wartociowanie jest bez-
poredni konsekwencj umieszczenia kodu na dwóch poziomach abstrakcji dla tej samej prze-
strzeni nazw. Cho dostpne s standardowe idiomy jzyka Lisp pozwalajce na uporanie si
z tymi problemami, to jednak s one kolejnymi elementami, których programista Lisp musi
si nauczy i pamita o nich.
Introspekcja syntaktyczna w Ruby jest dostpna za porednictwem biblioteki
ParseTree
, która
pozwala na tumaczenie kodu ródowego Ruby na S-wyraenia
1
. Interesujcym zastosowa-
niem tej biblioteki jest Heckle
2
, biblioteka uatwiajca testowanie, która analizuje kod ródowy
Ruby i zmienia go poprzez modyfikowanie cigów oraz zmian wartoci
true
na
false
i odwrotnie. W zaoeniach, jeeli nasz kod jest odpowiednio pokryty testami, kada mody-
fikacja kodu powinna zosta wykryta przez testy jednostkowe.
Alternatyw dla introspekcji syntaktycznej jest dziaajca na wyszym poziomie
introspekcja
semantyczna
, czyli analiza programu z wykorzystaniem struktur danych wyszego pozio-
mu. Sposób realizacji tej techniki róni si w ronych jzykach programowania, ale w Ruby
zwykle oznacza to operowanie na poziomie klas i metod — tworzenie, modyfikowanie i alia-
sowanie metod; przechwytywanie wywoa metod; manipulowanie acuchem dziedzicze-
nia. Techniki te s zwykle bardziej zwizane z istniejcym kodem ni metody syntaktyczne,
poniewa najczciej istniejce metody s traktowane jako czarne skrzynki i ich implementa-
cja nie jest swobodnie zmieniana.
Nie powtarzaj si
Na wysokim poziomie metaprogramowanie jest przydatne do wprowadzania
zasady DRY
(ang.
Don’t Repeat Yourself
— „nie powtarzaj si”). Zgodnie z t technik, nazywan równie
„Raz i tylko raz”, kady element informacji musi by zdefiniowany w systemie tylko raz.
Powielanie jest zwykle niepotrzebne, szczególnie w jzykach dynamicznych, takich jak Ruby.
Podobnie jak abstrakcja funkcjonalna pozwala nam na uniknicie powielania kodu, który jest
taki sam lub niemal taki sam, metaprogramowanie pozwala nam unikn podobnych kon-
cepcji, wykorzystywanych w aplikacji.
1
http://www.zenspider.com/ZSS/Products/ParseTree
.
2
http://rubyforge.org/projects/seattlerb
.
10
Rozdzia 1. Techniki podstawowe
Plik z chomika:
aysamal
Inne pliki z tego folderu:
Windows Server 2008 PL Biblia ws28bi.pdf
(1242 KB)
Windows Server 2008 Infrastruktura klucza publicznego PKI ws28in.pdf
(984 KB)
Windows Server 2003 Ksiega eksperta ws23ke.pdf
(622 KB)
Windows Server 2003 Bezpieczenstwo sieci ws23be.pdf
(610 KB)
Windows Server 2003 Bezpieczenstwo Biblia w23beb.pdf
(3059 KB)
Inne foldery tego chomika:
►NIGHT CALLS
★★ Angry Birds ★★
Angielski szybki kurs mówienia
APLIKACJE ANDROID
Biblia profesjonalisty
Zgłoś jeśli
naruszono regulamin