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

Ajax. Wzorce projektowe

Book Description

Czytając książkę opanujesz najlepsze praktyki tworzenia aplikacji sieciowych z wykorzystaniem AJAXa.

Table of Contents

  1. Ajax Wzorce projektowe
  2. Przedmowa
    1. Kto powinien przeczytać tę książkę?
    2. Dla kogo nie jest przeznaczona ta książka?
    3. Przykłady
    4. Specyfika przeglądarek
    5. Układ książki
    6. Konwencje użyte w książce
    7. Konwencje używane w przykładowym kodzie
    8. Podziękowania
  3. I. Wprowadzenie
    1. 1. Wprowadzenie do Ajaksa
      1. Ajax i użyteczny internet
      2. Narodziny Ajaksa
      3. Ajaksyfikacja internetu — historia portali
      4. Programy stacjonarne w sieci — historia aplikacji biurowych
      5. Cechy aplikacji Ajax
        1. Aplikacje, a nie same witryny internetowe
        2. Płynna, ciągła interakcja
        3. Na żywo
        4. Pomoc
        5. Efekty graficzne
        6. Nowe kontrolki
        7. Nowe sposoby interakcji
        8. Bazowanie na standardach
      6. Technologie związane z Ajaksem
      7. Budowa wywołań kierowanych do serwera
      8. Trendy w technologiach związanych z Ajaksem
        1. Standardy i fragmentacja
        2. Przystosowanie przeglądarek
        3. Akceptacja użytkowników
        4. Aplikacje stacjonarne
        5. Technologia Flash
        6. Złożona grafika
        7. Dwustronny internet
        8. Pamięć lokalna
        9. Formularze XForms
        10. JavaScript
        11. Ułatwianie programowania
        12. Usprawnienia związane ze sprzętem i przepustowością łączy
      9. Wnioski
    2. 2. Wzorcowy samouczek
      1. Technologie Ajaksa w okamgnieniu
        1. Przygotowywanie programów demonstracyjnych
        2. Manipulowanie wyglądem oraz model DOM w okamgnieniu
          1. Witaj świecie!
          2. Udogadniająca funkcja $()
          3. Dodawanie odnośników
        3. Zdalne wywoływanie poleceń w okamgnieniu
        4. Dynamiczne operacje w okamgnieniu
      2. Ajaksyfikacja aplikacji sieciowej — jeden wzorzec naraz
        1. Wprowadzenie — Ajaksagram w starym stylu
        2. Krok 1. — Ajaksagram w stylu technologii Ajax
          1. Logika biznesowa — usługa sieciowa zwracająca anagramy
          2. Warstwa prezentacji — początkowy kod HTML
          3. Logika aplikacji — kod JavaScript
        3. Krok 2. — rozszerzanie funkcjonalności i użyteczności
          1. Wyszukiwanie na żywo
          2. Wskaźnik postępu
          3. Sekundowe podświetlanie (technika żółtego zanikania)
        4. Krok 3. — refaktoryzacja ze względu na wydajność
        5. Krok 4. — refaktoryzacja do biblioteki zewnętrznej
        6. Ćwiczenia z zakresu refaktoryzacji
          1. Wzorce dla podstawowych technologii
          2. Wzorce programistyczne
          3. Wzorce związane z funkcjonalnością i użytecznością
          4. Wzorce rozwojowe
      3. Projekty i kata
      4. Wnioski
    3. 3. Projektowanie w Ajaksie — zasady i wzorce
      1. Pożądane cechy aplikacji Ajax
      2. Projektowanie w Ajaksie
        1. Zasady użyteczności
        2. Zasady projektowania oprogramowania
      3. Przegląd wzorców Ajax
      4. Budowa wzorca
      5. Programy demonstracyjne wykorzystujące wzorce Ajax
      6. Wnioski
  4. II. Wzorce dla podstawowych technologii
    1. 4. Aplikacja Ajax
      1. Aplikacja Ajax
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Czy aplikacja Ajax ma być typu „Deluxe” czy „Lite”?
          2. Jakie wymagania musi spełniać przeglądarka, aby uruchomić w niej aplikację Ajax?
          3. Jak należy traktować przeglądarki z niedostateczną obsługą technologii Ajaksa?
          4. Ile mocy obliczeniowych jest potrzebnych po stronie przeglądarki?
          5. Jaka przepustowość łączy będzie potrzebna?
        6. Przykłady praktyczne
        7. Przykładowy kod
        8. Alternatywy
          1. Zwykła aplikacja sieciowa
          2. Aplikacje w technologii Flash
          3. Aplety języka Java
          4. Aplikacje stacjonarne
          5. Aplikacje dla urządzeń przenośnych
        9. Wzorce powiązane
    2. 5. Manipulowanie wyglądem
      1. Zmiana wyglądu
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Czy wygląd należy zmieniać przy użyciu właściwości className czy style?
          2. Jakiego rodzaju właściwości użyć?
        6. Przykłady praktyczne
          1. Ajax-S
          2. Digg Spy
          3. Ajax Spell Checker
        7. Przykładowy kod — odliczający czas program demonstracyjny według wzorców Ajax
        8. Wzorce powiązane
          1. Zmiana układu strony
        9. Metafora
        10. Chcesz wiedzieć więcej?
      2. Zmiana układu strony
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Którego rodzaju pozycjonowania użyć?
          2. Jak można zapobiegać wyciekaniu pamięci?
        6. Przykłady praktyczne
          1. TadaList
          2. Super Maryo World
          3. Kiko
        7. Przykładowy kod: podstawowa Wiki według wzorców Ajax
        8. Wzorce powiązane
          1. Zmiana wyglądu
        9. Metafora
    3. 6. Zdalne wywoływanie poleceń
      1. Usługi sieciowe
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak dana usługa sieciowa będzie używana?
          2. Jak można zablokować używanie usługi przez niezależnych użytkowników?
        6. Przykłady praktyczne
          1. Interfejs API Technorati
          2. NetVibes
          3. Wish-O-Matic
        7. Przykładowy kod: testAjaxCaller według wzorców Ajax
        8. Wzorce powiązane
          1. Wzorce dla usług sieciowych
          2. Wzorce zdalnego wywoływania poleceń
          3. Pośrednik między domenami
          4. Symulowanie usług
          5. Testowanie usług
      2. Wywołania XMLHttpRequest
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
          1. Tworzenie obiektów XMLHttpRequest
          2. Wywołania asynchroniczne
          3. Wykrywanie błędów
          4. Obsługa żądań POST oraz żądań innych typów
          5. Ograniczenia związane z zewnętrznymi domenami
          6. Odpowiedzi w formacie XML
          7. Interfejs API obiektów XMLHttpRequest — podsumowanie
        5. Decyzje
          1. Jaki rodzaj zawartości będzie udostępniać usługa sieciowa?
          2. Jak można kontrolować pamięć podręczną?
          3. Jak radzić sobie z błędami?
        6. Przykłady praktyczne
          1. Serwer rozmów Lace
          2. Backbase
          3. Anyterm
          4. Mint
        7. Przykładowy kod: TestAjaxCaller według wzorców Ajax
        8. Alternatywy
          1. Odświeżanie stron
          2. Wywołania IFrame
          3. Strumieniowanie HTTP
          4. Wzbogacone wtyczki
          5. JavaScript na żądanie
          6. Wywołania przy użyciu rysunków i ciasteczek
          7. Wywołania przy użyciu arkuszy stylów
          8. Odpowiedź 204
          9. Importowanie dokumentów XML
        9. Metafora
      3. Wywołania IFrame
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Google Maps
          2. Platforma Scoop, Kuro5hin
          3. Program demonstracyjny PXL8
          4. Biblioteka HTMLHttpRequest
          5. Refaktoryzacja kodu — program demonstracyjny Sum według wzorców Ajax
        6. Alternatywy
          1. Wywołania XMLHttpRequest
          2. Wywołania kierowane do ramek
        7. Metafora
      4. Strumieniowanie HTTP
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak długo połączenie powinno być otwarte?
          2. Kiedy należy zamykać połączenie?
          3. Jak przeglądarka ma rozróżniać komunikaty?
        6. Przykłady praktyczne
          1. LivePage
          2. Jotspot Live
          3. Realtime on Rails
          4. Silnik Lightstreamer
          5. Platforma Pushlets
        7. Refaktoryzacja kodu: strumieniowanie wiki według wzorców Ajax
        8. Alternatywy
          1. Okresowe odświeżanie
          2. Połączenia TCP
        9. Wzorce powiązane
          1. Zdarzenia rozproszone
        10. Metafora
        11. Chcesz wiedzieć więcej?
        12. Podziękowania
      5. JavaScript na żądanie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Należy używać funkcji eval czy znaczników script?
          2. Jak podzielić moduły w leniwym wczytywaniu?
          3. Na jakim etapie skrypt wczytuje kod JavaScript w leniwym wczytywaniu?
        6. Przykłady praktyczne
          1. MapBuilder
          2. Interfejs API Delicious/Yahoo!
          3. Dojo — platforma do obsługi pakietów
          4. System importowania skryptów z JSAN
        7. Przykładowy kod: Wiki według wzorca Ajax JavaScript na żądanie
          1. Wzorzec JavaScript na żądanie w programie demonstracyjnym Wiki
          2. Odrębny kod JavaScript — pobieranie pliku upload.js
          3. JavaScript na żądanie — znaczniki script
          4. JavaScript na żądanie — funkcja eval
        8. Wzorce powiązane
          1. Komunikaty HTML
          2. Pobieranie na podstawie przewidywania
          3. Wieloetapowe pobieranie
        9. Chcesz wiedzieć więcej?
    4. 7. Działania dynamiczne
      1. Działania użytkownika
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakich zdarzeń oczekuje skrypt?
          2. Jakie atrybuty zdarzenia aplikacja ma sprawdzać?
          3. Czy metody obsługi zdarzenia można zarejestrować po wczytaniu strony?
        6. Przykłady praktyczne
          1. Google Reader
          2. Google Maps
          3. Backpack
        7. Przykładowy kod: podstawowe programy demonstracyjne według wzorców Ajax
        8. Alternatywy
          1. „Kliknij i czekaj”
          2. Wzbogacone formularze
        9. Powiązane wzorce
          1. Zmiana wyglądu, Zmiana układu strony
          2. Wywołania XMLHttpRequest, Wywołania IFrame
      2. Planowanie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Portal Claude’a Husseneta
          2. Google Suggest
          3. Licznik iTunes Apple
          4. Backpack
        6. Przykładowy kod: podstawowy program Wiki według wzorców Ajax
        7. Alternatywy
          1. Znacznik Meta HTTP Refresh
        8. Metafora
    5. 8. Technologie rozszerzone
      1. Wzbogacone wtyczki
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Chcesz używać wtyczek niezależnych czy utworzysz własną?
          2. Co się stanie, jeśli użytkownik nie zainstaluje wtyczki?
        6. Przykłady praktyczne
          1. Amazon Mini Shop
          2. Pasek narzędzi Google i Google Suggest for Firefox
          3. Odeo
          4. TiddlyWiki
        7. Przykładowy kod: Amazon Mini Shop
        8. Alternatywy
          1. Stacjonarny klient
        9. Wzorce powiązane
          1. Złożony klient
          2. Aplikacje jednostronicowe
          3. Skryptozakładki
          4. Pamięć podręczna po stronie przeglądarki
        10. Metafora
        11. Chcesz wiedzieć więcej?
  5. III. Wzorce programistyczne
    1. 9. Usługi sieciowe
      1. Usługi REST
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
          1. Zachęcanie do stosowania REST — wiele sposobów wywoływania poleceń
          2. Wprowadzenie do zasad REST
        5. Zasady architektury REST
          1. Adresy URL reprezentują zasoby
          2. Metody HTTP reprezentują operacje
          3. GET ma służyć wyłącznie do przesyłania zapytań
          4. Usługi powinny być bezstanowe
          5. Usługi powinny być powtarzalne
          6. Usługi używają odnośników
          7. Usługi same się dokumentują
          8. Usługi ograniczają liczbę stosowanych formatów danych
          9. Obsługa dowolnych transakcji
          10. Ocena architektury REST
        6. Przykłady praktyczne
          1. API serwisu Blogger
        7. Przykładowy kod: zgodny z REST demonstracyjny program Shop według wzorców Ajax
          1. Wczytywanie listy kategorii
          2. Wczytywanie poszczególnych kategorii
          3. Wczytywanie zawartości koszyka
          4. Zmiana zawartości koszyka
        8. Alternatywy
          1. Usługi RPC
        9. Wzorce powiązane
          1. Komunikaty XML
          2. Wyspy danych XML
          3. Niepowtarzalne adresy URL
        10. Metafora
        11. Chcesz wiedzieć więcej?
        12. Podziękowania
      2. Usługi RPC
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Kiko
          2. API witryny Flickr
        6. Przykładowy kod: zgodny z RPC program demonstracyjny Shop według wzorców Ajax
          1. Pobieranie listy kategorii
          2. Pobieranie pojedynczych kategorii
          3. Pobieranie zawartości koszyka
          4. Zmiana zawartości koszyka
        7. Alternatywy
          1. Usługi REST
        8. Wzorce powiązane
          1. Procedury pośredniczące Ajax
          2. Komunikaty ze zwykłym tekstem, Komunikaty XML
        9. Metafora
      3. Procedury pośredniczące Ajax
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak można zabezpieczyć funkcje działające po stronie serwera?
        6. Przykłady praktyczne
          1. Platforma SAJAX
          2. Platforma DWR
          3. Platforma CL-AJAX
        7. Refaktoryzacja kodu: SAJAX Sum według wzorców Ajax
        8. Alternatywy
          1. Wywołania XMLHttpRequest
          2. Protokoły XML-RPC i SOAP
        9. Wzorce powiązane
          1. Usługi RPC
          2. Komunikaty JSON
      4. Komunikaty HTML
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jaki poziom złożoności powinien mieć generowany kod HTML?
          2. Ile stylów należy umieszczać w komunikatach?
        6. Przykłady praktyczne
          1. Digg Spy
          2. Rapha
          3. Amazon Zuggest
          4. TalkDigger
        7. Przykładowy kod: Digg Spy
        8. Alternatywy
          1. Komunikaty ze zwykłym tekstem, Komunikaty XML, Komunikaty JSON
        9. Wzorce powiązane
          1. JavaScript na żądanie
        10. Metafora
      5. Komunikaty ze zwykłym tekstem
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Serwer rozmów Lace
          2. Magnetic poetry
          3. HousingMaps
        6. Przykładowy kod: serwer rozmów Lace
        7. Alternatywy
          1. Komunikaty XML
      6. Komunikaty XML
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. W jaki sposób serwer ma generować kod XML?
          2. Czy należy określić definicję DTD lub szablon?
          3. Jak przeglądarka przekształca dokument XML, kiedy wyświetla komunikat?
        6. Przykłady praktyczne
          1. Lista Top 100 Netflix
          2. Protopage
          3. Google Maps
        7. Refaktoryzacja kodu: XML Sum według wzorców Ajax
        8. Alternatywy
          1. Komunikaty ze zwykłym tekstem
          2. Komunikaty JSON
      7. Komunikaty JSON
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Kiko
          2. Dane JSON witryny Delicious
          3. Route Planning
          4. Platforma Ajax.Net
        6. Przykładowy kod: Kiko
        7. Alternatywy
          1. Komunikaty XML
        8. Wzorce powiązane
          1. Procedury pośredniczące Ajax
          2. JavaScript na żądanie
    2. 10. Komunikacja przeglądarka-serwer
      1. Śledzenie wywołań
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Biblioteka ACE (Ajax Client Engine)
          2. Biblioteka AjaxCaller
          3. Biblioteka libXmlRequest
        6. Przykładowy kod: biblioteka ACE (Ajax Client Engine)
        7. Alternatywy
          1. Wyślij i zapomnij
          2. Globalne obiekty XMLHttpRequest
        8. Metafora
        9. Podziękowania
      2. Okresowe odświeżanie
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak długi powinien być okres między odświeżeniami?
        6. Przykłady praktyczne
          1. Serwer rozmów Lace
          2. Magnetic Poetry
          3. Portal Claude’a Husseneta
        7. Przykładowy kod
          1. Lace
        8. Refaktoryzacja kodu: program Time według wzorców Ajax
        9. Alternatywy
          1. Strumieniowanie HTTP
        10. Wzorce powiązane
          1. Zdarzenia rozproszone
          2. Złożony klient, Pamięć podręczna po stronie przeglądarki, Wstępne szacowanie
          3. Blokowanie przesyłania
          4. Sygnały testowe
        11. Metafora
      3. Blokowanie przesyłania
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak serwer ma obsługiwać nadchodzące polecenia? Czy wszystkie polecenia są aktualne?
          2. Jak należy wyzwalać opróżnianie bufora?
          3. Ile buforów należy udostępnić aplikacji działającej w przeglądarce?
          4. Jak długi powinien być okres blokowania?
        6. Przykłady praktyczne
          1. Google Suggest
          2. Zuggest
          3. Gmail
          4. Platforma Prototype
        7. Przykładowy kod: Assistive Search według wzorców Ajax
        8. Powiązane wzorce
          1. Okresowe odświeżanie
          2. Wskaźnik postępu
        9. Metafora
      4. Jawne przesyłanie
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak użytkownik może zażądać przesłania danych?
          2. Jak należy obsługiwać częste przesyłanie danych?
        6. Przykłady praktyczne
          1. Serwer rozmów Lace
          2. The Fonz
          3. A9
        7. Refaktoryzacja kodu: bazujący na formularzach program Sum według wzorców Ajax
        8. Alternatywy
          1. Blokowanie przesyłania
        9. Powiązane wzorce
          1. Formularze na żywo
          2. Wskaźnik postępu
        10. Metafora
      5. Zdarzenia rozproszone
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Należy publikować historię czy tylko stan bieżący?
          2. Czy w przypadku obserwowanych zdarzeń należy przesyłać szczegóły dotyczące zmian czy tylko informować obiekty o wystąpieniu zmiany?
          3. Jakie informacje mogą towarzyszyć powiadomieniom o zdarzeniach?
          4. Czy zdarzenia należy przetwarzać synchronicznie czy asynchronicznie?
        6. Przykłady praktyczne
          1. Adapter serwletów ActiveMQ
          2. MapBuilder
          3. Biblioteka zdarzeń platformy Dojo
          4. Biblioteka LivePage
        7. Refaktoryzacja kodu: zdarzenia rozproszone w programie demonstracyjnym Wiki według wzorców Ajax
          1. Refaktoryzacja pod kątem mechanizmu obsługi zdarzeń
          2. Wprowadzanie listy obserwowanych zdarzeń
        8. Wzorce powiązane
          1. Okresowe odświeżanie, Strumieniowanie HTTP
          2. Usługi REST
          3. Wyspy danych XML
        9. Metafora
      6. Pośrednik między domenami
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak uzyskać dostęp do zewnętrznej treści?
          2. Jak aplikacja będzie łączyła się z zewnętrznym serwerem?
          3. Jak będą obsługiwane błędy i opóźnienia w dostępie do usługi?
          4. Jakie są zasady licencji na używanie zdalnych usług?
        6. Przykłady praktyczne
          1. WPLicense
          2. Housing Maps (Craigslist i Google Maps)
          3. Licznik zamożności Billa Gatesa
          4. Biblioteka CPaint
        7. Przykładowy kod: WPLicense
          1. 1. Pobieranie typów licencji
          2. 2. Pobieranie pytań dotyczących licencji
          3. 3. Obsługa odpowiedzi użytkownika
        8. Alternatywy
          1. JavaScript na żądanie
          2. Współdzielona właściwość document.domain
          3. Rysunki
        9. Wzorce powiązane
          1. Wzorce optymalizacji wydajności
        10. Chcesz wiedzieć więcej?
    3. 11. Zapełnianie modelu DOM
      1. Wyspy danych XML
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Program demonstracyjny na witrynie PerfectXML
          2. Program demonstracyjny na witrynie Mozilla.org
          3. Program demonstracyjny na witrynie TechRepublic
        6. Refaktoryzacja kodu: wyspy danych XML w programie Sum według wzorców Ajax
        7. Alternatywy
          1. XSLT po stronie przeglądarki
          2. Szablony po stronie przeglądarki
          3. Pamięć podręczna po stronie przeglądarki
        8. Metafora
      2. XSLT po stronie przeglądarki
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak można pobrać arkusz stylów XSLT?
        6. Przykłady praktyczne
          1. Google Maps
          2. Kupu
          3. AJAX-S
          4. Platforma Sarissa
        7. Refaktoryzacja kodu: program demonstracyjny XSLT Drilldown według wzorców Ajax
        8. Alternatywy
          1. Szablony po stronie przeglądarki
        9. Wzorce powiązane
          1. Komunikaty XML
          2. Wyspy danych XML
        10. Metafora
      3. Szablony po stronie przeglądarki
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak należy pobierać szablon?
          2. Czy szablony zawierają jakiś kod? Jak dużo?
          3. Jak przygotować kontekst szablonu?
        6. Przykłady praktyczne
          1. Platforma Ajax Pages
          2. Platforma JavaScript Templates
          3. Platforma Backbase
        7. Refaktoryzacja kodu: program demonstracyjny Templating Drilldown według wzorców Ajax
          1. Początkowa wersja
          2. Refaktoryzacja pod kątem wyświetlania strony przy użyciu szablonu
          3. Refaktoryzacja rozszerzająca kontekst szablonu
        8. Alternatywy
          1. XSLT po stronie przeglądarki
        9. Wzorce powiązane
          1. Komunikaty XML
          2. Komunikaty JSON
        10. Metafora
    4. 12. Generowanie i powtórne wykorzystanie kodu
      1. Generowanie kodu po stronie serwera
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Echo2
          2. Platforma Ruby On Rails
          3. Backbase
          4. Biblioteka AjaxTags
          5. Biblioteka Comfort.ASP
        6. Przykładowy kod: zgadywanie liczb przy użyciu Echo2
        7. Alternatywy
          1. Szablony po stronie przeglądarki
        8. Wzorce powiązane
          1. Komunikaty HTML
      2. Komponenty działające w różnych przeglądarkach
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakie kryteria specyficzne dla przeglądarek należy uwzględnić, tworząc komponenty działające w różnych przeglądarkach?
          2. Co zrobić, jeśli dana właściwość nie jest obsługiwana przez przeglądarkę?
        6. Przykłady praktyczne
          1. Biblioteka XMLHttpRequest
        7. Przykładowy kod: biblioteka HTMLHttpRequest
        8. Wzorce powiązane
          1. Generowanie kodu po stronie serwera
          2. JavaScript na żądanie
        9. Metafora
        10. Chcesz wiedzieć więcej?
    5. 13. Optymalizacja wydajności
      1. Pamięć podręczna po stronie przeglądarki
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakie dane posłużą za klucze, a jakie za wartości?
          2. Jak należy kontrolować rozmiar pamięci?
          3. Jak należy się chronić przed nieaktualnymi danymi?
        6. Przykłady praktyczne
          1. Biblioteka libXmlRequest
        7. Przykładowy kod: program Sum z pamięcią podręczną
          1. Dołączanie zapytania do odpowiedzi
          2. Nieskończona pamięć podręczna
          3. Skończona pamięć podręczna
        8. Alternatywy
          1. Wbudowana pamięć przeglądarki
          2. Pamięć podręczna po stronie serwera
        9. Wzorce powiązane
          1. Blokowanie przesyłania
      2. Pobieranie na podstawie przewidywania
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Ile informacji należy pobierać?
          2. Co ma przewidywać działania użytkownika, serwer czy przeglądarka?
          3. Jakich informacji należy używać do przewidywania działań użytkownika?
        6. Przykłady praktyczne
          1. Google Maps
          2. map.search.ch
          3. Odnośniki „Prefetch” w przeglądarce Firefox
          4. International Herald Tribune
        7. Refaktoryzacja kodu: pobieranie na podstawie przewidywania w programie Sum według wzorców Ajax
        8. Alternatywy
          1. Złożony klient
          2. Uprzedzanie działań serwera
        9. Wzorce powiązane
          1. Wstępne szacowanie
          2. Pamięć podręczna po stronie przeglądarki
        10. Metafora
      3. Wstępne szacowanie
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak często należy pobierać dane? Jak często należy dokonywać wstępnego szacowania?
          2. Jak należy łączyć wstępne szacowanie z prawdziwymi danymi?
          3. Czy użytkownicy mają wiedzieć o wstępnym szacowaniu?
          4. Jaką obsługę zapewnia serwer?
        6. Przykłady praktyczne
          1. Licznik iTunes Apple
          2. Pamięć poczty Gmail
        7. Przykładowy kod: licznik iTunes
        8. Wzorce powiązane
          1. Okresowe odświeżanie
          2. Pobieranie na podstawie przewidywania
          3. Złożony klient
        9. Metafora
      4. Wieloetapowe pobieranie
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak podzielić strony na bloki?
          2. Jaka będzie struktura strony?
          3. Co dzieje się z blokami w czasie wczytywania ich zawartości?
          4. Czy wywołania będą zgłaszane równolegle?
        6. Przykłady praktyczne
          1. Kayak
          2. NetVibes
          3. TalkDigger
        7. Przykłady kod: Portal według wzorców Ajax
        8. Alternatywy
          1. Wszystko naraz
        9. Wzorce powiązane
          1. Portlet
          2. Wstępne szacowanie
          3. Wskaźnik postępu
          4. JavaScript na żądanie
        10. Metafora
      5. Złożony klient
        1. Historia programisty
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak zaimplementować logikę biznesową i logikę aplikacji w przeglądarce?
        6. Przykłady praktyczne
          1. NumSum
          2. Gmail
          3. Lemingi w języku DHTML
          4. Powłoka JS/UIX
        7. Przykładowy kod: podstawowa aplikacja Wiki według wzorców Ajax
        8. Alternatywy
          1. Prosty klient
          2. Klient stacjonarny
        9. Wzorce powiązane
          1. Okresowe odświeżanie
          2. Blokowanie przesyłania
          3. Kontrolki
          4. JavaScript na żądanie
          5. Przeciąganie
          6. Przechowywanie bezpieczne ze względu na serwer
        10. Metafora
        11. Chcesz wiedzieć więcej?
  6. IV. Wzorce funkcjonalności i użyteczności
    1. 14. Kontrolki
      1. Suwaki
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. W jakim kierunku ułożyć suwak?
          2. Jakiej skali użyć?
          3. Jak przedstawić skalę?
        6. Przykłady praktyczne
          1. Yahoo! Mindset
          2. Wyszukiwanie diamentów na witrynie Amazon
          3. Google Maps
          4. Nakładające się mapy w witrynie miasta Boston
          5. Demonstracja suwaków na witrynie WebFX
        7. Przykładowy kod: Yahoo! Mindset
        8. Alternatywy
          1. Kontrolki tradycyjne: przyciski opcji i selektory
        9. Wzorce powiązane
          1. Przeciąganie
        10. Metafora
      2. Wskaźnik postępu
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakiego wskaźnika postępu użyć?
          2. Jak udostępniać informacje zwrotne w czasie długich opóźnień?
        6. Przykłady praktyczne
          1. Wyszukiwanie diamentów na witrynie Amazon
          2. Amazon Zuggest
          3. Protopage
          4. TalkDigger
          5. Kayak
          6. Gra The Pick’em
        7. Refaktoryzacja kodu: Progress Indicator według wzorców Ajax
        8. Wzorce powiązane
          1. Obszar statusu
          2. Okna wyskakujące
          3. Jednosekundowe wyróżnianie
          4. Wstępne szacowanie
          5. Zdarzenia rozproszone
        9. Metafora
        10. Chcesz wiedzieć więcej?
      3. Drążenie danych
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Czy należy wywoływać serwer przy każdym przejściu użytkownika po hierarchii?
        6. Przykłady praktyczne
          1. Betfair
          2. Portal Backbase
          3. Kontrolka accordion platformy OpenRico
        7. Refaktoryzacja kodu: Portal z drążeniem danych według wzorców Ajax
          1. Przegląd
          2. Kod działający po stronie przeglądarki
          3. Kod działający po stronie serwera
          4. Dalsza refaktoryzacja: kontrolka z dynamiczną zawartością
        8. Alternatywy
          1. Wyszukiwanie na żywo
          2. Drzewa
        9. Wzorce powiązane
          1. Mikroodnośniki
          2. Pamięć podręczna po stronie przeglądarki
          3. Portlet
      4. Tabele danych
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Czy tabela ma służyć tylko do odczytu, czy także umożliwiać modyfikowanie danych?
        6. Przykłady praktyczne
          1. Przykładowa tabela danych w witrynie OpenRico
          2. NumSum
          3. Oddpost
          4. Delta Vacations
        7. Przykładowy kod: tabela danych na stronie OpenRico
        8. Wzorce powiązane
          1. Wirtualny obszar roboczy
          2. Pamięć podręczna po stronie przeglądarki
          3. Pobieranie na podstawie przewidywania
          4. Wskaźnik postępu
        9. Metafora
        10. Podziękowania
      5. Bogaty edytor tekstu
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Biblioteka FCKEditor
          2. Jotspot — bogaty edytor tekstu Dojo
          3. Writely
          4. Wikipedia
          5. Rich Text Editor
        6. Przykładowy kod: FCKEditor
        7. Wzorce powiązane
          1. Wirtualny obszar roboczy
          2. Wskaźnik postępu
          3. Obszar statusu
        8. Metafora
      6. Podpowiedzi
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak ma działać algorytm generujący podpowiedzi?
          2. Jak należy uporządkować podpowiedzi?
          3. Ile podpowiedzi należy wyświetlać?
          4. Jakie pomocnicze informacje zostaną wyświetlone przy każdej podpowiedzi?
        6. Przykłady praktyczne
          1. Kayak
          2. Google Suggest
          3. Delicious, Amazon
        7. Przykładowy kod: Kayak
        8. Alternatywy
          1. Selektor
        9. Wzorce powiązane
          1. Pamięć podręczna po stronie przeglądarki
          2. Wstępne szacowanie
          3. Pobieranie na podstawie przewidywania
          4. Blokowanie przesyłania
          5. Wyróżnianie
          6. Leniwa rejestracja
          7. Wyszukiwanie na żywo
        10. Chcesz wiedzieć więcej?
        11. Podziękowania
      7. Wyszukiwanie na żywo
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak należy interpretować niepełny tekst?
          2. Jak kompletne będą wyniki?
          3. Co się stanie, jeśli wyników jest za dużo?
        6. Przykłady praktyczne
          1. Delta Vacations
          2. ListSomething.com
          3. Wyszukiwanie diamentów w witrynie Amazon
          4. Skype
        7. Przykładowy kod: Delta Vacations
          1. Delta Vacations
          2. Program demonstracyjny Assistive Search
        8. Wzorce powiązane
          1. Wskaźnik postępu
          2. Tabele danych
          3. Wirtualny obszar roboczy
          4. Jednosekundowe wyróżnianie
          5. Blokowanie przesyłania
          6. Niepowtarzalne adresy URL
          7. Pobieranie na podstawie przewidywania
          8. Podpowiedzi
      8. Wiersz poleceń na żywo
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Gdzie należy analizować niepełne polecenia — w przeglądarce czy na serwerze?
          2. Ile informacji powinien udostępniać serwer?
        6. Przykłady praktyczne
          1. YubNub
        7. Przykładowy kod: program Assistive Search według wzorców Ajax
        8. Alternatywy
          1. Wskaż i kliknij
          2. Przeciąganie
        9. Wzorce powiązane
          1. Blokowanie przesyłania
          2. Obszar statusu
          3. Wyróżnianie
          4. Wskaźnik postępu
          5. Pamięć podręczna po stronie przeglądarki
          6. Złożony klient
          7. Wyszukiwanie na żywo
        10. Podpowiedzi
        11. Chcesz wiedzieć więcej?
      9. Formularze na żywo
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. WPLicense
          2. Betfair
          3. Sztuczka z komentarzami MoveableType
        6. Przykładowy kod: WPLicense
        7. Wzorce powiązane
          1. Mikroodnośniki
          2. Wyszukiwanie na żywo
          3. Podpowiedzi
          4. Drążenie danych
          5. Wskaźnik postępu
          6. Jednosekundowe wyróżnianie
    2. 15. Architektura strony
      1. Przeciąganie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak ograniczone mają być możliwości przeciągania?
        6. Przykłady praktyczne
          1. Magnetic Poetry
          2. Portal Backbase
          3. A9 Maps
        7. Przykładowy kod: Magnetic Poetry
        8. Alternatywy
          1. Edycja przy użyciu odrębnych interfejsów
        9. Wzorce powiązane
          1. Sprajty
          2. Portlety
          3. Suwaki
      2. Sprajty
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jaki powinien być format rysunków dla sprajtów?
          2. Czy animować sprajty?
        6. Przykłady praktyczne
          1. Lemingi w DHTML
          2. Google Maps
          3. Quek
        7. Przykładowy kod: Lemingi w DHTML
        8. Alternatywy
          1. Mozaika
        9. Wzorce powiązane
          1. Okna wyskakujące
          2. Przeciąganie
        10. Metafora
        11. Chcesz wiedzieć więcej?
        12. Podziękowania
      3. Okna wyskakujące
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak ma wyglądać okno wyskakujące?
          2. Jak użytkownik ma otwierać i zamykać okno?
        6. Przykłady praktyczne
          1. JSCalc
          2. Flickr
          3. Netflix
          4. HoverSearch
        7. Przykładowy kod: JSCalc
        8. Alternatywy
          1. Portlety
          2. Mikroodnośniki
        9. Wzorce powiązane
          1. Sprajty
          2. Przeciąganie
          3. Suwaki
        10. Metafora
      4. Zmienna zawartość
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak użytkownik może zlokalizować zmienną zawartość i otworzyć ją do edycji?
          2. Czy zmienną zawartość należy opatrzyć etykietą? Jakie pomocnicze informacje należy dołączyć?
          3. Jakich danych można użyć w bloku zmiennej zawartości? Jak duże powinny być takie bloki?
          4. W jaki sposób użytkownik może zakończyć edycję?
          5. Czy jednocześnie może być otwartych kilka bloków zmiennej zawartości?
        6. Przykłady praktyczne
          1. Flickr
          2. Kalendarz w witrynie Monket
          3. TiddlyWiki
          4. Kreator wizytówek autorstwa Thomasa Baekdala
        7. Przykładowy kod: Wiki dotycząca wzorców Ajax
        8. Alternatywy
          1. Złożona edycja
        9. Wzorce powiązane
          1. Formularze na żywo
          2. Bogaty edytor tekstu
          3. Mikroodnośniki
          4. Jednosekundowe wyróżnianie, Jednosekundowy ruch i Jednosekundowa zmiana
          5. Wyróżnianie
        10. Metafora
      5. Mikroodnośniki
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Co się stanie z pozostałą zawartością?
          2. Jak należy wyświetlać mikroodnośniki?
        6. Przykłady praktyczne
          1. TiddlyWiki
          2. Biblioteka Tabtastic
          3. Rpad
          4. Gmail
        7. Przykładowy kod: TiddlyWiki
        8. Wzorce powiązane
          1. Zmienna zawartość
          2. „Jednosekundowe” efekty graficzne
          3. Drążenie danych
          4. Okna wyskakujące
          5. Formularze na żywo
      6. Portlety
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Czy użytkownik będzie mógł przenosić portlety?
        6. Przykłady praktyczne
          1. Portal Claude’a Husseneta
          2. Strona główna Google
          3. Backbase
          4. Dobrado
        7. Przykładowy kod: portal Claude’a Husseneta
        8. Alternatywy
          1. Zakładki
        9. Wzorce powiązane
          1. Okresowe odświeżanie
          2. Zdarzenia rozproszone
          3. Drążenie danych
          4. Formularze na żywo
          5. Pośrednik między domenami
        10. Metafora
        11. Podziękowania
      7. Obszar statusu
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak określić rozmiar obszaru statusu? Co zrobić, jeśli dane nie mieszczą się w nim?
          2. Jak określić strukturę zawartości obszaru statusu?
        6. Przykłady praktyczne
          1. BetFair
          2. Serwer rozmów Lace
        7. Refaktoryzacja kodu: obszar statusu w Wiki według wzorców Ajax
        8. Alternatywy
          1. Okna wyskakujące
          2. Pasek statusu przeglądarki
        9. Wzorce powiązane
          1. Okresowe odświeżanie
        10. Metafora
      8. Kontrolki do aktualizacji
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Przykłady praktyczne
          1. Digg Spy
          2. Slide
          3. WBIR
        6. Przykładowy kod: Digg Spy
        7. Wzorce powiązane
          1. Okresowe odświeżanie
          2. Strumieniowanie HTTP
        8. Metafora
        9. Podziękowania
      9. Wirtualny obszar roboczy
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak należy obsługiwać stopniowe przewijanie?
          2. Jaki będzie początkowy widok?
          3. Co będzie wyświetlane w czasie ponownego zapełniania obszaru?
          4. Jak będą obsługiwane zmiany istniejącego widoku?
        6. Przykłady praktyczne
          1. map.search.ch
          2. Demonstracyjna wyszukiwarka na witrynie OpenRico
          3. Biblioteka Giant-Ass Image Viewer
          4. Blog Dunstana Orcharda
        7. Refaktoryzacja kodu: wyszukiwarka OpenRico według wzorców Ajax
        8. Alternatywy
          1. Wirtualna lupa
        9. Wzorce powiązane
          1. Pamięć podręczna po stronie przeglądarki
          2. Pobieranie na podstawie przewidywania
          3. Wstępne szacowanie
          4. Wieloetapowe pobieranie
          5. Przeciąganie
          6. Suwak
          7. Niepowtarzalne adresy URL
        10. Metafora
        11. Chcesz wiedzieć więcej?
        12. Podziękowania
    3. 16. Efekty graficzne
      1. Jednosekundowe wyróżnienie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakie zdarzenia mają powodować efekt wyróżnienia?
          2. Jakich kolorów użyć?
          3. Jak długo ma trwać wyróżnienie? Jak długie mają być przejścia?
        6. Przykłady praktyczne
          1. Witryna Backpack autorstwa 37signals
          2. chat.app
          3. Digg Spy
          4. Couloir
          5. Odeo
          6. Biblioteka Scriptaculous
          7. Biblioteka Fade Anything Technique (FAT)
        7. Refaktoryzacja kodu: wyróżnianie w programie Time według wzorców Ajax
          1. Samodzielnie utworzony efekt przejścia
          2. Wykorzystanie biblioteki Scriptaculous
        8. Alternatywy
          1. Jednosekundowa zmiana i Jednosekundowy ruch
        9. Wzorce powiązane
          1. Okresowe odświeżanie
          2. Limit czasu
        10. Metafora
        11. Podziękowania
      2. Jednosekundowa zmiana
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
        6. Przykłady praktyczne
          1. TiddlyWiki
          2. Biblioteka Scriptaculous
          3. Lemingi w DHTML
        7. Przykładowy kod: TiddlyWiki
        8. Alternatywy
          1. Jednosekundowe wyróżnianie i Jednosekundowy ruch
        9. Wzorce powiązane
          1. Sprajty
        10. Metafora
        11. Podziękowania
      3. Jednosekundowy ruch
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakie zdarzenia mają wyzwalać efekt ruchu?
          2. Co powinno stać się z elementem, kiedy znajdzie się w miejscu docelowym?
        6. Przykłady praktyczne
          1. Biblioteka Scriptaculous
          2. TiddlyWiki
          3. Portal Backbase
          4. Lemingi w DHTML
          5. MS-Windows
        7. Przykładowy kod: efekty biblioteki Scriptaculous
        8. Alternatywy
          1. Jednosekundowe wyróżnienie i Jednosekundowa zmiana
        9. Wzorce powiązane
          1. Sprajty
          2. Wstępne szacowanie
        10. Metafora
      4. Wyróżnianie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak ma wyglądać wyróżnienie?
          2. Jak wyróżnienie będzie się pojawiać i zanikać?
        6. Praktyczne przykłady
          1. Gmail
          2. A9
          3. Teacher!
          4. Whitespace
        7. Przykładowy kod: Wiki według wzorców Ajax
        8. Wzorce powiązane
          1. Obszar statusu
          2. Jednosekundowe wyróżnianie
        9. Metafora
    4. 17. Funkcjonalność
      1. Leniwa rejestracja
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakiego rodzaju dane ma zawierać profil?
          2. Jak zbierać informacje?
          3. Jak dużo danych należy przechowywać w ciasteczkach?
        6. Przykłady praktyczne
          1. MemeFlow
          2. Blummy
          3. Kayak
          4. Palmsphere
          5. Amazon.com
        7. Przykładowy kod: program demonstracyjny Shop według wzorców Ajax
          1. Pobieranie kategorii i przedmiotów
          2. Zarządzanie koszykiem zakupów
          3. Przesyłanie zawartości koszyka
          4. Śledzenie ulubionych kategorii
          5. Weryfikacja hasła i adresu poczty elektronicznej
        8. Wzorce powiązane
          1. Bezpośrednie logowanie
          2. Formularze na żywo
          3. Limit czasu
          4. Wstępne szacowanie
        9. Metafora
        10. Chcesz wiedzieć więcej?
        11. Podziękowania
      2. Bezpośrednie logowanie
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakiego algorytmu szyfrowania użyć?
          2. Jak zarządzać jednorazowym ziarnem?
        6. Przykłady praktyczne
          1. NetVibes
          2. Protopage
          3. Treehouse
        7. Przykładowy kod: Ajax Login
        8. Wzorce powiązane
          1. Leniwa rejestracja
          2. Przechowywanie bezpieczne ze względu na serwer
          3. Limit czasu
        9. Podziękowania
      3. Przechowywanie bezpieczne ze względu na serwer
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jakiego algorytmu szyfrującego i platformy użyć?
          2. Kiedy należy zażądać hasła?
        6. Przykłady praktyczne
        7. Przykładowy kod: propozycja realizacji techniki przechowywania bezpiecznego ze względu na serwer
        8. Alternatywy
          1. Wzbogacone wtyczki
        9. Wzorce powiązane
          1. Bezpośrednie logowanie
          2. Limit czasu
        10. Metafora
        11. Chcesz wiedzieć więcej?
        12. Podziękowania
      4. Limit czasu
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak długi powinien być limit czasu?
          2. Jak limit czasu wpływa na interfejs użytkownika?
        6. Przykłady praktyczne
          1. Serwer rozmów Lace
          2. Pandora
          3. Program ostrzegający o wygaśnięciu sesji
          4. Limity czasu w systemach operacyjnych
        7. Refaktoryzacja kodu: Wiki z limitem czasu według wzorców Ajax
          1. Dodanie limitu czasu do programu Wiki
          2. Początkowa refaktoryzacja: bezwarunkowy limit czasu
          3. Ostrzeżenie o możliwości przekroczenia limitu czasu
          4. Monitorowanie ruchów myszą
        8. Wzorce powiązane
          1. Sygnały kontrolne
          2. Okresowe odświeżanie
          3. Wskaźnik postępu
          4. Bezpośrednie logowanie
          5. Obszar statusu
          6. Okna wyskakujące
        9. Metafora
      5. Sygnały kontrolne
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak przechowywać informacje o użytkowniku?
          2. Co, jeśli cokolwiek, ma powodować wstrzymanie wysyłania sygnałów kontrolnych?
          3. Jak długi ma być odstęp między kolejnymi sygnałami kontrolnymi? Jakie opóźnienie ma oznaczać brak aktywności użytkownika?
        6. Przykłady praktyczne
        7. Refaktoryzacja kodu: Wiki z sygnałami kontrolnymi według wzorców Ajax
        8. Wzorce powiązane
          1. Limit czasu
          2. Blokowanie przesyłania
        9. Metafora
        10. Chcesz wiedzieć więcej?
      6. Niepowtarzalne adresy URL
        1. Historia zadania
        2. Problem
        3. Czynniki
        4. Rozwiązanie
        5. Decyzje
          1. Jak należy współpracować z mechanizmem indeksowania silników wyszukiwarek?
          2. Jak często należy sprawdzać adres?
          3. Jakie zmiany w stanie powinny wiązać się z niepowtarzalnymi adresami URL?
          4. Jak powinny wyglądać adresy URL?
        6. Przykłady praktyczne
          1. PairStairs
          2. Biblioteka bind z pakietu Dojo
          3. Biblioteka Really Simple History
        7. Refaktoryzacja kodu: program Sum z niepowtarzalnymi adresami według wzorców Ajax
          1. Program Sum z niepowtarzalnymi adresami
          2. Program Sum ze sprawdzaniem adresów URL
          3. Program Sum z elementem IFrame
          4. Kompletny program Sum z elementem IFrame
        8. Alternatywy
          1. Okazjonalne odświeżanie
          2. Odnośnik „tutaj”
        9. Chcesz wiedzieć więcej?
        10. Podziękowania
  7. V. Wzorce rozwojowe
    1. 18. Diagnostyka
      1. Rejestrowanie
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Decyzje
          1. Czy rejestrować operacje w wersji produkcyjnej?
          2. Jak zmienić ustawienia rejestrowania przy przechodzeniu od wersji rozwojowej do produkcyjnej?
        5. Narzędzia
          1. Lumberjack
          2. fvLogger
          3. log4js
          4. Mochikit
        6. Przykładowy kod: zastosowanie platformy Lumberjack
      2. Diagnozowanie
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. Venkman
          2. Microsoft Script Debugger
          3. JavaScript Script Debugger
      3. Sprawdzanie zawartości modelu DOM
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. DOM Inspector dla przeglądarki Firefox
          2. Rozszerzenie Web Developer dla przeglądarki Firefox
          3. View Rendered Source
          4. Pasek narzędzi Developer dla przeglądarki IE
          5. IEDocMon
          6. Mouseover DOM Inspector
      4. Śledzenie przepływu danych
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. XMLHttpRequest Tracing i XMLHttpRequest Debugging
          2. Fiddler
          3. FlangeLib
        5. Przykładowy kod: korzystanie z narzędzia XMLHttpRequest Tracing
        6. Wzorce powiązane
          1. Rejestrowanie
    2. 19. Testowanie
      1. Symulowanie usług
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Decyzje
          1. Jak można przełączać się między różnymi usługami?
        5. Przykładowy kod: symulowanie usług
        6. Wzorce powiązane
          1. Testy usług
        7. Chcesz wiedzieć więcej?
      2. Testy po stronie przeglądarki
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. Platforma testowa Scriptaculous
          2. Platforma JsUnit (Hieatt)
          3. Platforma JsUnit (Schaible)
        5. Przykładowy kod: testy jednostkowe w bibliotece Scriptaculous
        6. Wzorce powiązane
          1. Testy usług
          2. Rejestrowanie
      3. Testy usług
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. Net::HTTP języka Ruby
          2. Jakarta HTTPClient
          3. PHP HTTPClient
        5. Przykładowy kod: testowanie usług
        6. Wzorce powiązane
          1. Symulowanie usług
          2. Testy po stronie przeglądarki
      4. Testy systemu
        1. Historia programisty
        2. Problem
        3. Rozwiązanie
        4. Narzędzia
          1. GhostTrain
          2. Watir
          3. Selenium
          4. HTTPUnit
          5. DojoToolkit
        5. Przykładowy kod: GhostTrain z biblioteki Scriptaculous
        6. Wzorce powiązane
          1. Testy po stronie przeglądarki
          2. Symulowanie usług
        7. Chcesz wiedzieć więcej?
  8. VI. Dodatki
    1. A. Platformy i biblioteki Ajaksa
      1. Ogólne platformy dla języka JavaScript
        1. AjaxFace (od 2005)
        2. Backbase (z 2003 roku)
        3. Bindows (z 2003 roku)
        4. Dojo (z września 2004 roku)
        5. Komponenty eBusiness Applications (EBA; z 2002 roku)
        6. Engine for Web Applications (z 2002 roku)
        7. Framework for RESTful JavaScript (Freja; z 2006 roku)
        8. Mochikit (z 2005 roku)
        9. OpenRico (z maja 2005 roku; bazuje na wcześniejszej wersji chronionej prawami autorskimi)
        10. Plex Toolkit
        11. Prototype
        12. qooxdoo (z maja 2005 roku)
        13. Script.aculo.us (od 2005 roku)
        14. SmartClient (z 2000 roku)
        15. ThyAPI (z końca 2004 roku)
        16. TIBCO General Interface (od 2001 roku)
        17. Interactive Website Framework (od maja 2005 roku)
        18. Zimbra AjaxTK
      2. Platformy do obsługi zdalnych wywołań języka JavaScript
        1. AjaxCaller (z maja 2005 roku)
        2. Ajax Client Engine (ACE; z grudnia 2005 roku)
        3. AjaxGear (z listopada 2005 roku)
        4. AJFORM (z czerwca 2005 roku)
        5. HTMLHttpRequest (od 2005 roku)
        6. JSMX (z sierpnia 2005 roku)
        7. LibXMLHttpRequest (z czerwca 2005 roku)
        8. MAJAX (z sierpnia 2005 roku)
        9. RSLite
        10. Sack (z maja 2005 roku)
        11. Sybsys_JsHttpRequest
        12. XHConn (od kwietnia 2005 roku)
        13. Platformy efektów dla języka JavaScript
        14. Fade Anything Technique (FAT)
        15. Moo.fx (z października 2005 roku)
      3. Platformy obsługujące JavaScript i Flash
        1. AMFPHPKit
        2. Flash JavaScript Integration Kit
        3. Stream (z lipca 2005 roku)
      4. Platformy obsługujące JavaScript i XML
        1. Google AJAXSLT (z czerwca 2005 roku)
        2. Sarissa (z lutego 2003 roku)
      5. Wyspecjalizowane platformy dla języka JavaScript
        1. Drag-Drop
        2. Giant-Ass Image Viewer (GSV)
      6. Platformy Ajaksa współpracujące z wieloma językami
        1. Cross-Platform Asynchronous INterface Toolkit (CPAINT; z maja 2005 roku)
        2. JavaScript Object Notation (JSON) i JSON-RPC
        3. JavaScript Remote Scripting (JSRS; z 2000 roku)
        4. Rialto: Rich Internet AppLication TOolkit
        5. SAJAX (od marca 2005 roku)
        6. ZK — platforma sieciowa dla Ajaksa i XUL
      7. Platformy Ajaksa dla języka C++
        1. Wt
      8. Platformy Ajaksa dla Cold Fusion
        1. AjaxCFC
        2. JSMX (z sierpnia 2005 roku)
      9. Platformy Ajaksa dla języków .NET
        1. Ajax.NET dla ASP.NET 1.x i 2.0
        2. Anthem.NET dla ASP.NET 1.x i 2.0
        3. AjaxAspects
        4. Atlas (z końca roku 2005)
        5. Bitkraft dla ASP.NET
        6. ComfortASP.NET dla ASP.NET 1.1 i 2.0
        7. MagicAjax.NET (z września 2005 roku)
        8. MonoRail (z maja 2005 roku)
        9. WebORB for .NET (z sierpnia 2005 roku)
        10. zumiPage
      10. Platformy Ajaksa dla języka Java
        1. AjaxAnywhere (z września 2005 roku)
        2. AJAX JSP Tag Library
        3. AJAX Java Server Faces Framework
        4. Direct Web Remoting (DWR; z 2005 roku)
        5. Echo 2 (z marca 2005 roku)
        6. Guise
        7. ICEfaces
        8. JSON-RPC-Java (z kwietnia 2004 roku)
        9. JSP Controls Tag Library (z grudnia 2005 roku)
        10. jWic
        11. Struts-Layout
        12. SWATO (z 2005 roku)
        13. Tacos Tapestry Components (z grudnia 2005 roku)
        14. ThinkCAP JX
        15. WebORB for Java (z sierpnia 2005 roku)
        16. Widget Server (z 2004 roku)
      11. Platformy Ajaksa dla języka Lisp
        1. CL-Ajax
      12. Platformy Ajaksa dla języka Perl
        1. CGI::Ajax — eksportowanie metod języka Perl do kodu JavaScript Ajaksa
        2. HTML::Prototype — generowanie kodu HTML i JavaScript dla biblioteki Prototype
      13. Platformy Ajaksa dla języka PHP
        1. AJASON
        2. AjaxAC (z kwietnia 2005 roku)
        3. Cajax
        4. HTS Web Application Framework
        5. JPSpan
        6. PEAR::HTML::Ajax
        7. Pipeline
        8. Symfony
        9. XAJAX
        10. XOAD (wcześniej NAJAX)
      14. Platformy Ajaksa dla Pythona
        1. CrackAJAX
        2. Turbo Gears
      15. Platformy Ajaksa dla Ruby
        1. Ruby on Rails
    2. B. Instalowanie przykładowego kodu
    3. C. Wzorce i języki wzorców
    4. D. Literatura cytowana
  9. E. O autorze
  10. F. Ajax. Wzorce projektowe
  11. Indeks
  12. About the Author
  13. Copyright