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

Skalowalne witryny internetowe. Budowa, skalowanie i optymalizacja aplikacji internetowych nowej generacji

Book Description

To zaawansowany i wszechstronny przeglšd zagadnień zwišzanych z budowaniem takich właśnie aplikacji internetowych.

Table of Contents

  1. Skalowalne witryny internetowe. Budowa, skalowanie i optymalizacja aplikacji internetowych nowej generacji
  2. Przedmowa
    1. O czym jest ta książka
    2. Co należy wiedzieć przed przystąpieniem do lektury
    3. Konwencje stosowane w tej książce
    4. Podziękowania
  3. 1. Wprowadzenie
    1. Czym jest aplikacja internetowa?
    2. Jak budujemy aplikacje internetowe?
    3. Czym jest architektura?
    4. Od czego należy zacząć?
  4. 2. Architektura aplikacji internetowej
    1. Wielowarstwowa architektura oprogramowania
    2. Technologie wielowarstwowe
    3. Projektowanie interfejsów programowych
    4. Droga od punktu A do punktu B
    5. Podział na oprogramowanie i sprzęt
    6. Platformy sprzętowe
      1. Sprzęt współdzielony
      2. Sprzęt dedykowany
      3. Sprzęt kolokowany
      4. Samodzielny hosting
    7. Rozwój platformy sprzętowej
      1. Dostępność i czas poświęcony na kierowanie zespołem
      2. Zamawianie, dostarczanie i instalacja sprzętu
      3. Przestrzeń
      4. Zasilanie
      5. Centra NOC
      6. Łączność ze światem
    8. Nadmiarowość sprzętu
    9. Sieć
    10. Języki, technologie i bazy danych
  5. 3. Środowiska wytwarzania oprogramowania
    1. Trzy naczelne zasady
    2. Kontrola kodu źródłowego
      1. Czym jest kontrola kodu źródłowego?
        1. Zarządzanie wersjami
        2. Wycofywanie zmian
        3. Dzienniki
        4. Rejestrowanie zmian
        5. Scalanie wyników pracy wielu użytkowników
        6. Adnotacje (przypisywanie odpowiedzialności)
        7. Spór o blokowanie dostępu
        8. Projekty i moduły
        9. Stosowanie etykiet
        10. Definiowanie odgałęzień
        11. Scalanie
      2. Narzędzia — co warto mieć?
        1. Integracja z powłoką i edytorem kodu
        2. Interfejsy WWW
        3. Powiadamianie o zatwierdzeniach za pośrednictwem listy dyskusyjnej
        4. Kanały RSS dziennika zatwierdzeń
        5. Baza danych o zatwierdzeniach
        6. Zaczepienia zatwierdzeń
      3. Dostępne systemy kontroli kodu źródłowego
        1. System kontroli rewizji (RCS)
        2. System kontroli wersji (CVS)
          1. Zalety
          2. Wady
        3. Subversion (SVN)
          1. Zalety
          2. Wady
        4. Perforce
          1. Zalety
          2. Wady
        5. Visual Source Safe (VSS)
          1. Zalety
          2. Wady
        6. Pozostałe produkty
        7. Podsumowanie
      4. Co powinno podlegać kontroli
        1. Dokumentacja
        2. Konfiguracja oprogramowania
        3. Narzędzia kompilujące
      5. Co nie powinno podlegać kontroli
    3. Kompilacja w jednym kroku
      1. Edycja „na żywo”
      2. Tworzenie środowiska roboczego
        1. Środowisko wytwarzania
        2. Środowisko testowe
        3. Środowisko docelowe
      3. Proces wydawania oprogramowania
      4. Narzędzia kompilujące
      5. Zarządzanie wydaniami
      6. Czego nie należy automatyzować
        1. Zmiany schematu bazy danych
        2. Zmiany konfiguracji oprogramowania i sprzętu
    4. Śledzenie błędów
      1. Minimalny zakres funkcjonalności
      2. Oprogramowanie do śledzenia błędów
        1. FogBugz
          1. Zalety
          2. Wady
        2. Mantis Bug Tracker
          1. Zalety
          2. Wady
        3. Request Tracker (RT)
          1. Zalety
          2. Wady
        4. Bugzilla
          1. Zalety
          2. Wady
        5. Trac
          1. Zalety
          2. Wady
      3. Co należy śledzić
        1. Błędy
        2. Elementy funkcjonalności
        3. Operacje
        4. Żądania wsparcia
      4. Strategia zarządzania błędami
        1. Kategoryzacja wysokiego poziomu
      5. CADT
    5. Skalowanie modelu wytwarzania aplikacji
    6. Standardy kodowania
    7. Testowanie
      1. Testy regresji
      2. Testy ręczne
  6. 4. i18n, L10n i Unicode
    1. Umiędzynarodowienie i lokalizacja oprogramowania
      1. Umiędzynarodowienie w świecie aplikacji internetowych
      2. Lokalizacja w świecie aplikacji internetowych
        1. Zastępowanie łańcuchów
        2. Stosowanie wielu zbiorów szablonów
        3. Stosowanie wielu frontonów
    2. Unicode w pigułce
      1. Kodowanie w formacie Unicode
      2. Pozycje kodowe, znaki, glify i grafemy
      3. Znacznik kolejności bajtów
    3. Schemat kodowania UTF-8
    4. Schemat kodowania UTF-8 w aplikacjach internetowych
      1. Obsługa danych wyjściowych
      2. Obsługa danych wejściowych
    5. Stosowanie schematu kodowania UTF-8 w języku PHP
    6. Stosowanie schematu kodowania UTF-8 w pozostałych językach programowania
    7. Stosowanie schematu kodowania UTF-8 w bazach danych MySQL
    8. Stosowanie schematu kodowania UTF-8 w wiadomościach poczty elektronicznej
    9. Stosowanie schematu kodowania UTF-8 w skryptach języka JavaScript
    10. Stosowanie schematu kodowania UTF-8 w interfejsach API
  7. 5. Integralność danych i bezpieczeństwo
    1. Strategie zapewniania integralności danych
    2. Dobre, prawidłowe i nieprawidłowe
    3. Filtrowanie sekwencji UTF-8
    4. Filtrowanie znaków sterujących
    5. Filtrowanie kodu HTML
      1. Po co w ogóle posługujemy się językiem HTML?
      2. Filtrowanie danych wejściowych w formacie HTML
      3. Czarne i białe listy
      4. Bilansowanie znaczników
      5. Przetwarzanie kodu języka HTML
    6. Ataki XSS
      1. Luka kanoniczna
      2. Luki w danych wejściowych użytkownika
      3. Bilansowanie znaczników i nawiasów
      4. Filtrowanie protokołów
    7. Wstrzykiwanie kodu języka SQL
      1. Łagodzenie skutków ataków polegających na wstrzykiwaniu kodu SQL-a
      2. Unikanie ataków polegających na wstrzykiwaniu kodu SQL-a
  8. 6. Poczta elektroniczna
    1. Otrzymywanie wiadomości poczty elektronicznej
    2. Ryzyko wstrzykiwania wiadomości poczty elektronicznej do naszej aplikacji
      1. Rozwiązanie alternatywne
    3. Format MIME
    4. Analiza składniowa prostych wiadomości MIME
    5. Analiza składniowa załączników zakodowanych w trybie UU
    6. Załączniki w formacie TNEF
    7. Dlaczego technologie bezprzewodowe nie lubią programistów?
    8. Zbiory znaków i schematy kodowania
    9. Rozpoznawanie użytkowników
    10. Testy jednostkowe
  9. 7. Usługi zdalne
    1. Klub usług zdalnych
    2. Gniazda
    3. Stosowanie protokołu HTTP
      1. Cykle żądań i odpowiedzi protokołu HTTP
      2. Uwierzytelnianie w protokole HTTP
      3. Wysyłanie żądań protokołu HTTP
    4. Nadmiarowość usług zdalnych
    5. Systemy asynchroniczne
    6. Wymiana danych w formacie XML
      1. Analiza składniowa kodu XML-a
      2. REST
      3. XML-RPC
      4. SOAP
    7. Lekkie protokoły
      1. Wykorzystanie pamięci
      2. Przepustowość sieci
      3. Efektywność analizy składniowej
      4. Szybkość zapisu
      5. Wady
      6. Zrób to sam
  10. 8. Wąskie gardła
    1. Identyfikowanie wąskich gardeł
      1. Podział aplikacji na obszary według komponentów programowych
      2. Podział aplikacji na obszary według komponentów sprzętowych
      3. Obciążenie procesora
      4. Profilowanie kodu
      5. Składowanie kodów operacji w pamięci podręcznej
      6. Optymalizacja szablonów
      7. Rozwiązania uniwersalne
    2. Operacje wejścia-wyjścia
      1. Dyskowe operacje wejścia-wyjścia
      2. Sieciowe operacje wejścia-wyjścia
      3. Pamięciowe operacje wejścia-wyjścia
      4. Pamięć operacyjna i plik wymiany
    3. Usługi zewnętrzne i czarne skrzynki
      1. Bazy danych
      2. Przechwytywanie zapytań
      3. Profilowanie zapytań
      4. Optymalizacja zapytań i indeksów
      5. Buforowanie danych
      6. Denormalizacja
  11. 9. Skalowanie aplikacji internetowych
    1. Mit skalowania
      1. Czym jest skalowalność?
      2. Skalowanie platformy sprzętowej
      3. Skalowanie pionowe
      4. Skalowanie poziome
      5. Działania ciągłe
      6. Nadmiarowość
    2. Skalowanie sieci
      1. Skalowanie aplikacji pisanych w języku PHP
    3. Równoważenie obciążeń
      1. Sprzętowe równoważenie obciążeń
      2. Programowe równoważenie obciążeń
      3. Warstwa czwarta
      4. Warstwa siódma
      5. Równoważenie obciążeń w większej skali
      6. Równoważenie obciążeń innych niż żądania protokołu HTTP
    4. Skalowanie bazy danych MySQL
      1. Wewnętrzne tryby składowania danych
      2. Tabele typu MyISAM
      3. Tabele typu InnoDB
      4. Tabele typu DBD
      5. Tabele typu Heap
    5. Replikacja baz danych MySQL
      1. Replikacja typu nadrzędny-podległy
      2. Drzewo replikacji
      3. Replikacja typu nadrzędny-nadrzędny
      4. Awarie w środowisku replikacji
      5. Opóźnienia w środowisku replikacji
    6. Partycjonowanie bazy danych
      1. Podział na klastry
      2. Federacja
    7. Skalowanie wielkich baz danych
    8. Skalowanie pamięci masowej
      1. Systemy plików
      2. Protokoły
      3. RAID
      4. Federacja
    9. Pamięć podręczna
      1. Buforowanie danych
      2. Buforowanie żądań protokołu HTTP
    10. Skalowanie w pigułce
  12. 10. Statystyki, monitorowanie i wykrywanie usterek
    1. Śledzenie statystyk aplikacji internetowej
      1. Dzienniki serwera
      2. Wykonywanie analiz
      3. Stosowanie znaczników nawigacyjnych
      4. Narzędzie Spread
      5. Mechanizmy równoważenia obciążeń
      6. Śledzenie mierników niestandardowych
    2. Monitorowanie aplikacji
      1. Monitorowanie obciążenia sieci
      2. Długookresowe statystyki systemowe
        1. Statystyki systemu MySQL
        2. Statystyki serwera Apache
        3. Statystyki narzędzia memcached
        4. Statystyki narzędzia Squid
      3. Wizualizacje niestandardowe
    3. Alarmowanie
      1. Weryfikacja ogólnej sprawności systemu
      2. Monitorowanie na poziomie zasobów
      3. Weryfikacja progów
      4. Testy dolnych ograniczeń
  13. 11. Interfejsy API
    1. Kanały danych
      1. Kanały RSS
      2. Format RDF
      3. Atom
      4. Pozostałe standardy
      5. Automatyczne odkrywanie kanałów
      6. Szablony kanałów
      7. Język OPML
      8. Uwierzytelnianie kanałów danych
    2. Technologie mobilne
      1. Protokół WAP
      2. Profil mobilny XHTML
    3. Usługi sieciowe
    4. Warstwy transportowe interfejsów API
      1. Model REST
      2. Protokół XML-RPC
      3. Protokół SOAP
      4. Abstrakcje ponad warstwami transportowymi
    5. Nadużywanie interfejsów API
      1. Śledzenie kluczy interfejsu API
      2. Duszenie połączeń
      3. Buforowanie danych wynikowych
    6. Uwierzytelnianie
      1. Brak uwierzytelniania
      2. Zwykły tekst
      3. Kody uwierzytelniające komunikaty (MAC)
      4. Systemy tokenowe
    7. Przyszłość
  14. A. O autorach
  15. Indeks
  16. Kolofon
  17. Copyright