Rails Zaawansowane programowanie.pdf
(
446 KB
)
Pobierz
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 tre ci
Wst�½p ........................................................................................................................................5
1. Techniki podstawowe ...................................................................................................9
Czym jest metaprogramowanie?
Podstawy Ruby
Techniki metaprogramowania
Programowanie funkcyjne
Przykäady
Propozycje dalszych lektur
9
12
30
41
46
49
2. ActiveSupport oraz RailTies ........................................................................................ 51
Ruby, jakiego nie znamy
Jak czytaè kod?
ActiveSupport
Core Extensions
RailTies
Propozycje dalszych lektur
51
54
61
65
79
81
3. Wtyczki Rails ................................................................................................................83
Wtyczki
Tworzenie wtyczek
Przykäad wtyczki
Testowanie wtyczek
Propozycje dalszych lektur
83
87
89
94
97
4. Bazy danych .................................................................................................................99
Systemy zarzñdzania bazñ danych
Du e obiekty (binarne)
Zaawansowane funkcje baz danych
Podäñczanie do wielu baz danych
Buforowanie
Wyrównywanie obciñ enia i wysoka dostöpno è
LDAP
Propozycje dalszych lektur
99
104
112
118
120
121
126
127
3
5. Bezpiecze stwo ......................................................................................................... 129
Problemy w aplikacji
Problemy w sieci WWW
Wstrzykiwanie SQL
rodowisko Ruby
Propozycje dalszych lektur
129
138
145
146
147
6. Wydajno ë .................................................................................................................. 149
Narzödzia pomiarowe
Przykäad optymalizacji Rails
Wydajno è ActiveRecord
Skalowanie architektury
Inne systemy
Propozycje dalszych lektur
150
156
165
174
181
183
7. REST, zasoby oraz us ugi Web .................................................................................. 185
Czym jest REST?
Zalety architektury REST
REST w Rails
Analiza przypadku — Amazon S3
Propozycje dalszych lektur
185
203
207
226
230
8. i18n oraz L10n ............................................................................................................ 231
Lokalizacje
Kodowanie znaków
Unicode
Rails i Unicode
Rails L10n
Propozycje dalszych lektur
231
232
233
235
243
262
9. Wykorzystanie i rozszerzanie Rails ..........................................................................263
Wymiana komponentów Rails
Wykorzystanie komponentów Rails
Udziaä w tworzeniu Rails
Propozycje dalszych lektur
263
274
279
285
10. Du e projekty .............................................................................................................287
Kontrola wersji
ledzenie bäödów
Struktura projektu
Instalacja Rails
Propozycje dalszych lektur
287
298
299
305
311
Skorowidz ............................................................................................................................. 313
4
_
Spis tre ci
ROZDZIA 1.
Techniki podstawowe
Do osiñgniöcia niezawodno ci jest wymagana prostota.
Edsger W. Dijkstra
Od pierwszego wydania w lipcu 2004 roku rodowisko Ruby on Rails stale zdobywa popu-
larno è. Rails przyciñga programistów PHP, Java i .NET swojñ prostotñ — architekturñ
model-widok-kontroler (MVC), rozsñdnymi warto ciami domy lnymi („konwencja nad kon-
figuracjñ”) oraz zaawansowanym jözykiem programowania Ruby.
rodowisko Rails miaäo przez pierwszy rok lub dwa säabñ reputacjö z uwagi na braki w do-
kumentacji. Luka ta zostaäa wypeäniona przez tysiñce programistów, którzy korzystali ze
rodowiska Ruby on Rails, wspóätworzyli je i pisali na jego temat, jak równie dziöki pro-
jektowi Rails Documentation (http://railsdocumentation.org). Dostöpne sñ tysiñce blogów, które
zawierajñ samouczki oraz porady na temat programowania w Rails.
Celem tej ksiñ ki jest zebranie najlepszych praktyk oraz wiedzy zgromadzonej przez rodo-
wisko programistów Rails i zaprezentowanie ich w äatwej do przyswojenia, zwartej formie.
Poszukiwaäem ponadto tych aspektów programowania dla WWW, które sñ czösto niedoce-
niane lub pomijane przez rodowisko Rails.
Czym jest metaprogramowanie?
Rails udostöpnia metaprogramowanie dla mas. Choè nie byäo to pierwsze zastosowanie za-
awansowanych funkcji Ruby, to jednak jest ono chyba najbardziej popularne. Aby zrozumieè
dziaäanie Rails, konieczne jest wcze niejsze zapoznanie siö z tymi mechanizmami Ruby, które
zostaäy wykorzystane w tym rodowisku. W tym rozdziale przedstawione zostanñ podsta-
wowe mechanizmy zapewniajñce dziaäanie technik przedstawianych w pozostaäych rozdzia-
äach ksiñ ki.
Metaprogramowanie
to technika programowania, w której kod jest wykorzystywany do
tworzenia innego kodu, bñd dokonania introspekcji samego siebie. Przedrostek
meta
(z gre-
ki) wskazuje na abstrakcjö; kod wykorzystujñcy techniki metaprogramowania dziaäa jedno-
cze nie na dwóch poziomach abstrakcji.
Metaprogramowanie jest wykorzystywane w wielu jözykach, ale jest najbardziej popularne
w jözykach dynamicznych, poniewa majñ one zwykle wiöcej funkcji pozwalajñcych na ma-
nipulowanie kodem jako danymi. Pomimo tego, e w jözykach statycznych, takich jak C# lub
9
Java, dostöpny jest mechanizm refleksji, to nie jest on nawet w czö ci tak przezroczysty, jak
w jözykach 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 najni szym poziomem introspekcji — pozwala na bezpo redniñ analizö tekstu
programu lub strumienia tokenów. Metaprogramowanie bazujñce na szablonach lub ma-
krach zwykle dziaäa na poziomie syntaktycznym.
Ten typ metaprogramowania jest wykorzystany w jözyku Lisp poprzez stosowanie
S-wyra eþ
(bezpo redniego täumaczenia drzewa abstrakcji skäadni programu) zarówno w przypadku kodu,
jak i danych. Metaprogramowanie w jözyku Lisp wymaga intensywnego korzystania z
makr,
które sñ tak naprawdö szablonami kodu. Daje to mo liwo è 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 warto ciowany. Jednak metaprogramowanie na poziomie syntaktycznym ma swoje
wady. Przechwytywanie zmiennych oraz przypadkowe wielokrotne warto ciowanie jest bez-
po redniñ konsekwencjñ umieszczenia kodu na dwóch poziomach abstrakcji dla tej samej prze-
strzeni nazw. Choè dostöpne sñ standardowe idiomy jözyka Lisp pozwalajñce na uporanie siö
z tymi problemami, to jednak sñ one kolejnymi elementami, których programista Lisp musi
siö nauczyè i pamiötaè o nich.
Introspekcja syntaktyczna w Ruby jest dostöpna za po rednictwem biblioteki
ParseTree
, która
pozwala na täumaczenie kodu ródäowego Ruby na S-wyra enia
1
. Interesujñcym zastosowa-
niem tej biblioteki jest Heckle
2
, biblioteka uäatwiajñca testowanie, która analizuje kod ródäowy
Ruby i zmienia go poprzez modyfikowanie ciñgów oraz zmianö warto ci
true
na
false
i odwrotnie. W zaäo eniach, je eli nasz kod jest odpowiednio pokryty testami, ka da mody-
fikacja kodu powinna zostaè wykryta przez testy jednostkowe.
Alternatywñ dla introspekcji syntaktycznej jest dziaäajñca na wy szym poziomie
introspekcja
semantyczna,
czyli analiza programu z wykorzystaniem struktur danych wy szego pozio-
mu. Sposób realizacji tej techniki ró ni siö w ro nych jözykach programowania, ale w Ruby
zwykle oznacza to operowanie na poziomie klas i metod — tworzenie, modyfikowanie i alia-
sowanie metod; przechwytywanie wywoäaþ metod; manipulowanie äaþcuchem dziedzicze-
nia. Techniki te sñ zwykle bardziej zwiñzane z istniejñcym kodem ni metody syntaktyczne,
poniewa najczö ciej istniejñce 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”, ka dy element informacji musi byè zdefiniowany w systemie tylko raz.
Powielanie jest zwykle niepotrzebne, szczególnie w jözykach dynamicznych, takich jak Ruby.
Podobnie jak abstrakcja funkcjonalna pozwala nam na unikniöcie powielania kodu, który jest
taki sam lub niemal taki sam, metaprogramowanie pozwala nam uniknñè podobnych kon-
cepcji, wykorzystywanych w aplikacji.
1
2
http://www.zenspider.com/ZSS/Products/ParseTree.
http://rubyforge.org/projects/seattlerb.
10
_
Rozdzia 1. Techniki podstawowe
Plik z chomika:
dd.nauka
Inne pliki z tego folderu:
Head First Ruby on Rails Edycja polska.pdf
(4189 KB)
Ajax on Rails.pdf
(329 KB)
Rails Projektowanie systemow klasy enterprise.pdf
(454 KB)
Rails Leksykon kieszonkowy.pdf
(263 KB)
RailsSpace Tworzenie spolecznosciowych serwisow internetowych w Ruby on Rails.pdf
(674 KB)
Inne foldery tego chomika:
3ds max
Access
Acrobat
After Effects
Agile - Programowanie
Zgłoś jeśli
naruszono regulamin