O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Rails. Zaawansowane programowanie

Book Description

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 ja...

Table of Contents

  1. Rails. Zaawansowane programowanie
  2. Wstęp
    1. Wymagania wstępne
    2. Konwencje stosowane w tej książce
    3. Korzystanie z przykładów kodu
    4. Podziękowania
  3. 1. Techniki podstawowe
    1. Czym jest metaprogramowanie?
      1. Nie powtarzaj się
      2. Pułapki
      3. Programowanie wstępujące
    2. Podstawy Ruby
      1. Klasy i moduły
      2. Wyszukiwanie metod
        1. Zasady
        2. Dziedziczenie klas
        3. Konkretyzacja klas
        4. Dołączanie modułów
        5. Klasa singleton
        6. Klasy singleton i obiekty klas
        7. Brakujące metody
      3. Metaid
      4. Wyszukiwanie zmiennych
      5. Bloki, metody i procedury
        1. Bloki na procedury i procedury na bloki
        2. Zamknięcia
    3. Techniki metaprogramowania
      1. Opóźnienie wyszukiwania metod do czasu wykonania
      2. Programowanie generacyjne — tworzenie kodu na bieżąco
      3. Kontynuacje
      4. Dołączenia
      5. Introspekcja i ObjectSpace — analiza danych i metod w czasie działania
        1. ObjectSpace
      6. Delegacja przy wykorzystaniu klas pośredniczących
        1. DelegateClass oraz Forwardable
      7. Monkeypatching
        1. Wady techniki monkeypatching
      8. Dodawanie funkcji do istniejących metod
        1. Podklasy
        2. Programowanie aspektowe
        3. Łączenie metod
      9. Modularyzacja
    4. Programowanie funkcyjne
      1. Funkcje wysokiego poziomu
      2. Moduł Enumerable
        1. Predykaty
        2. Filtry
        3. Transformatory
        4. Agregatory
        5. Pozostałe
      3. Enumerator
    5. Przykłady
      1. Zmiany funkcji w czasie działania
      2. Kod sterujący Rails
    6. Propozycje dalszych lektur
  4. 2. ActiveSupport oraz RailTies
    1. Ruby, jakiego nie znamy
      1. Array
      2. Dir
      3. Enumerable
      4. File
      5. Hash
      6. Kernel
      7. Module
      8. Proc
      9. String
    2. Jak czytać kod?
      1. Jak lokalizować kod?
      2. Analiza stosu wywołań
      3. Debugowanie Ruby oraz Rails
        1. Debugowanie Rails za pomocą ruby-debug
      4. Od czego zacząć?
        1. Wybór czegoś interesującego
        2. Zacznijmy od góry
      5. Czytanie testów
      6. Ciągła aktualizacja
    3. ActiveSupport
      1. Dependencies
      2. Deprecation
        1. Ostrzeżenia o przestarzałych zmiennych instancyjnych
      3. Inflector
      4. JSON
      5. Whiny Nil
    4. Core Extensions
      1. Array
        1. Konwersje
        2. Grupowanie
        3. Przetwarzanie opcji
        4. Losowy wybór
      2. Blank
      3. Akcesory atrybutów klasy
      4. Dziedziczone atrybuty klasy
      5. Data i czas
        1. Konwersje
        2. Konwersje z wartości Numeric
        3. Obliczenia na czasie
      6. Enumerable
      7. Exception
      8. File
      9. Float
      10. Hash
        1. Konwersje
        2. Przetwarzanie opcji
        3. HashWithIndifferentAccess
      11. Integer
      12. Kernel
        1. Daemonize
        2. Raportowanie
      13. Module
        1. Synonimy
        2. Delegacja
        3. Introspekcja
      14. Konwersje numeryczne
      15. Object
        1. instance_exec
        2. Różne metody
      16. Range
      17. String
        1. Inflector
        2. String i18n
        3. Różne metody
      18. Symbol#to_proc
      19. TimeZone
    5. RailTies
      1. Konfiguracja Rails
      2. Inicjalizacja aplikacji w 20 prostych krokach
      3. Rozsyłanie żądań
    6. Propozycje dalszych lektur
  5. 3. Wtyczki Rails
    1. Wtyczki
      1. Ładowanie wtyczek
      2. Instalowanie wtyczek Rails
        1. RaPT
        2. Piston
        3. Decentralizowana kontrola wersji
    2. Tworzenie wtyczek
    3. Przykład wtyczki
      1. Lokalizacja konta
      2. Wymaganie SSL
      3. Uwierzytelnianie HTTP
    4. Testowanie wtyczek
      1. Testowanie zależności wtyczek od bazy danych
    5. Propozycje dalszych lektur
  6. 4. Bazy danych
    1. Systemy zarządzania bazą danych
      1. PostgreSQL
      2. MySQL
      3. SQLite
      4. Microsoft SQL Server
      5. Oracle
    2. Duże obiekty (binarne)
      1. Przechowywanie w bazie danych
        1. PostgreSQL
        2. MySQL
        3. Oracle
      2. Zapis w systemie plików
      3. Wysyłanie danych za pomocą X-Sendfile
        1. Konfiguracja serwera WWW
      4. Udostępnianie plików statycznych
      5. Zarządzanie przesyłaniem w Rails
        1. Wtyczka Attachment
        2. Własny mechanizm
        3. Postęp przesyłania
    3. Zaawansowane funkcje baz danych
      1. Aplikacyjne i integracyjne bazy danych
      2. Ograniczenia
      3. Klucze złożone
      4. Wyzwalacze, reguły i procedury składowane
      5. Przykłady
        1. Usuwanie dużych obiektów
        2. Partycjonowanie danych
    4. Podłączanie do wielu baz danych
      1. Magiczne połączenia wielokrotne
    5. Buforowanie
    6. Wyrównywanie obciążenia i wysoka dostępność
      1. MySQL
        1. Replikacja
        2. Klaster MySQL
      2. PostgreSQL
        1. Wysoka dostępność — działająca rezerwa
        2. Replikacja master-slave — Slony-I
        3. Replikacja wielonadrzędna — PGCluster
      3. Oracle
      4. Microsoft SQL Server
    7. LDAP
      1. ActiveLDAP
      2. Uwierzytelnianie za pomocą LDAP
    8. Propozycje dalszych lektur
  7. 5. Bezpieczeństwo
    1. Problemy w aplikacji
      1. Uwierzytelnianie
        1. Kodowanie haseł w Rails
      2. Nie ufaj klientowi
        1. Przetwarzanie formularza
        2. Ukryte pola formularza
        3. Kontrola poprawności po stronie klienta
        4. Cookies
        5. Dwukrotne sprawdzanie wszystkiego
      3. Bezpieczne wycofanie
      4. Unikanie zabezpieczeń przez zaciemnienie
      5. Zabezpieczanie komunikatów błędów
      6. Udostępniaj, nie blokuj
    2. Problemy w sieci WWW
      1. Sesje Rails
        1. Sesje bazujące na cookie
      2. Skrypty Cross Site
        1. Zabezpieczenia
        2. Białe listy
      3. Fałszowanie żądań z wykorzystaniem skryptów Cross-site
        1. Obrona przed CSRF
      4. Kanonizacja — co to za nazwa?
    3. Wstrzykiwanie SQL
    4. Środowisko Ruby
      1. Użycie wiersza poleceń
      2. Zanieczyszczanie obiektów
    5. Propozycje dalszych lektur
  8. 6. Wydajność
    1. Narzędzia pomiarowe
      1. Analiza metodą czarnej skrzynki
        1. Statystyka — podstawy, które trzeba znać
        2. Analiza metodą czarnej skrzynki przy użyciu httperf
      2. Chronometraż kodu
      3. Pakiet Rails Analyzer Tools
        1. Analizator dzienników
        2. Profiler akcji
        3. Pakiet Rails Analyzer Tools
    2. Przykład optymalizacji Rails
      1. Profilowanie akcji
      2. Optymalizacja i ponowne profilowanie
      3. Testowanie wydajności
        1. Uruchamianie testowania
        2. Interpretacja wyników
    3. Wydajność ActiveRecord
      1. Zanurzenie w SQL
      2. Problem 1+N
      3. Indeksowanie
        1. Indeks kluczy obcych
        2. Inne indeksy
        3. Indeksy pełnotekstowe
        4. Indeksy przestrzenne
        5. Aktualizacja statystyk indeksów
      4. Pomiary wydajności bazy danych
        1. Analiza planu zapytania
    4. Skalowanie architektury
      1. Sesje
        1. ActiveRecordStore
        2. MemCacheStore
        3. CookieStore
        4. Zarządzanie sesją
      2. Buforowanie
        1. Buforowanie stron
        2. Buforowanie akcji
        3. Buforowanie fragmentów
          1. Magazyny bufora fragmentów
          2. Pomocnik bufora fragmentów
          3. Unieważnianie fragmentów
        4. Wymiatacze bufora
    5. Inne systemy
      1. Wybór najlepszego narzędzia
        1. Wykorzystanie zewnętrznych programów
        2. Pisanie wewnętrznego kodu C
      2. ActionMailer
    6. Propozycje dalszych lektur
  9. 7. REST, zasoby oraz usługi Web
    1. Czym jest REST?
      1. Czasowniki
        1. GET
        2. PUT
        3. DELETE
        4. POST
      2. Zasoby
        1. Nieprzezroczystość nazw
      3. Reprezentacje i typy zawartości
        1. Wybór reprezentacji
      4. Bezstanowość
        1. Stan HTTP
        2. Dlaczego bezstanowość?
        3. Stan sesji z użyciem zasobów. Przykład
        4. Uwierzytelnianie
    2. Zalety architektury REST
      1. Prostota koncepcyjna
      2. Buforowanie i skalowalność
      3. Podatność na zmiany
      4. Uniwersalność
    3. REST w Rails
      1. Routing zgodny z REST
      2. Ścieżki nazwane bazujące na zasobach
        1. Własne ścieżki zasobów
        2. Zagnieżdżone ścieżki zasobów
        3. Ścieżki zasobów singleton
      3. Wsparcie ActionView
        1. Emulacja metod
      4. Typy zawartości
      5. Buforowanie HTTP
        1. Własne buforowanie
      6. Kody statusu odpowiedzi HTTP
      7. ActiveResource — korzystanie z usług REST
      8. Action Web Service
    4. Analiza przypadku — Amazon S3
      1. Koncepcje i terminologia
      2. Uwierzytelnianie
        1. Alternatywne metody uwierzytelniania
      3. Architektura i działanie
      4. Klienty i serwery S3
    5. Propozycje dalszych lektur
  10. 8. i18n oraz L10n
    1. Lokalizacje
    2. Kodowanie znaków
      1. ASCII
        1. Rozszerzony ASCII
        2. Problemy z ASCII
    3. Unicode
      1. Formaty transformacji Unicode
    4. Rails i Unicode
      1. Wielojęzykowość w Ruby 1.9
      2. ActiveSupport::Multibyte
      3. Normalizacja Unicode
      4. Filtrowanie wejścia UTF-8
      5. Przechowywanie UTF-8
        1. MySQL
        2. PostgreSQL
      6. Udostępnianie UTF-8
      7. Konwersja zestawu znaków
        1. Kodowanie URI JavaScript i UTF-8
    5. Rails L10n
      1. Tłumaczenie interfejsu i zasobów
        1. gettext
        2. Gibberish
        3. Globalize
      2. Ustawienia specyficzne dla lokalizacji
      3. Tłumaczenie modelu
      4. Przykład globalizacji — książka adresowa
        1. Lokalizowanie książki adresowej
    6. Propozycje dalszych lektur
  11. 9. Wykorzystanie i rozszerzanie Rails
    1. Wymiana komponentów Rails
      1. Wymiana ActiveRecord
        1. DataMapper
        2. Ambition
        3. Og
          1. Instalowanie Og ze źródeł
          2. Użycie Og w Rails
      2. Alternatywne silniki szablonów
        1. Markaby
        2. Liquid
        3. Haml
    2. Wykorzystanie komponentów Rails
      1. ActiveRecord
        1. Operacje ETL
        2. Operacje na schemacie
        3. Samodzielny magazyn danych
        4. Inne zastosowania Ruby
      2. ActionMailer
        1. Własne zadania Rake
        2. Odbieranie poczty
    3. Udział w tworzeniu Rails
      1. Udział w tworzeniu poprawek
      2. Testowanie jednostkowe Rails
    4. Propozycje dalszych lektur
  12. 10. Duże projekty
    1. Kontrola wersji
      1. Scentralizowana kontrola wersji
        1. CVS
        2. Subversion
      2. Decentralizowana kontrola wersji
      3. Rozgałęzianie i łączenie
        1. Rozgałęzianie i łączenie w Subversion
        2. Rozgałęzianie i łączenie w Mercurial
      4. Migracje bazy danych
    2. Śledzenie błędów
    3. Struktura projektu
      1. Konfiguracja Subversion
        1. Importowanie istniejących aplikacji
      2. Moduły zewnętrzne Subversion oraz Piston
      3. Wersje Rails
      4. Inicjalizacja środowiska
      5. Dołączanie modułów Gem
      6. Projekty z wieloma aplikacjami
    4. Instalacja Rails
      1. Skalowalność bez współdzielenia
      2. Serwer interfejsu WWW
        1. Serwer zasobów dla plików statycznych
      3. Serwer aplikacji
      4. Capistrano
      5. Vlad the Deployer
      6. Ciągła integracja
    5. Propozycje dalszych lektur
  13. A. O autorze
  14. Indeks
  15. Kolofon
  16. Copyright