
Poznaj techniki pracy guru programowania!
- Jak tworzyć czytelny i pozbawiony błędów kod?
- W jaki sposób projektować architekturę systemów?
- Jak zbudować uniwersalne interfejsy użytkownika?
Wbrew pozorom programowanie to nie tylko nauka ścisła, to także sztuka! Trudna sztuka! Napisanie kodu poprawnie działającego czy kodu spełniającego oczekiwania użytkowników programu to niewątpliwie wyzwanie! Wymaga bowiem doskonałego zaplanowania architektury, skutecznej optymalizacji kodu źródłowego oraz umiejętności przewidywania potencjalnych problemów i ich odpowiednio wczesnej eliminacji. Właśnie w tej książce prawdziwi mistrzowie programowania podzielą się z Tobą swoimi doświadczeniami, przemyśleniami i spostrzeżeniami dotyczącymi tworzenia profesjonalnych rozwiązań. Znajdziesz tu wiele praktycznych porad dotyczących pisania kodu, rozwiązywania problemów programistycznych, projektowania architektury, tworzenia interfejsów użytkownika i pracy w zespole projektowym. Dowiesz się, kiedy należy postępować dokładnie według wskazań metodologii, a kiedy "pójście na skróty" może okazać się najlepszym rozwiązaniem. Poznasz sposób myślenia i zasady pracy najlepszych programistów świata, dzięki czemu użytkownikom Twoich aplikacji zapewnisz maksymalny komfort.
- Korzystanie z wyrażeń regularnych
- Dobór odpowiedniego poziomu abstrakcji
- Ocena jakości kodu źródłowego
- Testowanie
- Techniki analizy składni
- Zabezpieczanie komunikacji sieciowej
- Dostosowywanie architektury systemu do architektury komputerów
- Praca zespołowa
- Projektowanie systemów w oparciu o komponenty OpenSource
- Usuwanie błędów
- Ułatwianie pracy osobom niepełnosprawnym
Dołącz do grona mistrzów programowania!
Słowo wstępne (13)Wstęp (15)
1. Wyrażenia regularne (19)
- Programowanie w praktyce (20)
- Implementacja (21)
- Omówienie (22)
- Alternatywy (24)
- Rozszerzanie (25)
- Podsumowanie (27)
- Kontrola wersji i transformacja drzewa (30)
- Prezentacja różnic pomiędzy drzewami (34)
- Interfejs edytora delty (35)
- Ale czy to jest sztuka? (40)
- Abstrakcja jako sport widowiskowy (43)
- Wnioski (45)
- Najpiękniejszy kod, jaki kiedykolwiek napisałem (47)
- Coraz więcej za pomocą coraz mniejszych środków (49)
- Perspektywa (54)
- Co to jest pisanie (57)
- Zakończenie (57)
- Podziękowania (59)
- Na czas (61)
- Problem - dane z pamiętnika sieciowego (62)
- Problem - kto zażądał, czego i kiedy (70)
- Wyszukiwanie na dużą skalę (75)
- Podsumowanie (77)
- Znaczenie walidacji XML (79)
- Problem (80)
- Wersja 1. Naiwna implementacja (82)
- Wersja 2. Imitacja gramatyki BNF O(N) (83)
- Wersja 3. Pierwsza optymalizacja O(log N) (84)
- Wersja 4. Druga optymalizacja - nie sprawdzaj dwa razy (85)
- Wersja 5. Trzecia optymalizacja O(1) (87)
- Wersja 6. Czwarta optymalizacja - buforowanie (91)
- Morał (93)
- Acceptance Testing Framework w trzech klasach (96)
- Wyzwanie zaprojektowania środowiska (98)
- Otwarte środowisko (99)
- Jak prosty może być parser HTML (100)
- Podsumowanie (103)
- To niesforne wyszukiwanie binarne (106)
- Wstęp do JUnit (109)
- Rozprawić się z wyszukiwaniem binarnym (111)
- Podsumowanie (122)
9. Kolejność wykonywania operatorów (147)
- JavaScript (148)
- Tablica symboli (149)
- Tokeny (150)
- Kolejność (151)
- Wyrażenia (152)
- Operatory wrostkowe (152)
- Operatory przedrostkowe (154)
- Operatory przypisania (155)
- Stałe (155)
- Zakres (156)
- Instrukcje (157)
- Funkcje (160)
- Literały tablicowe i obiektowe (161)
- Rzeczy do zrobienia i przemyślenia (162)
- Podstawowe metody (164)
- Dziel i zwyciężaj (165)
- Inne metody (167)
- Suma i różnica liczb ustawionych bitów w dwóch słowach (169)
- Porównywanie liczby ustawionych bitów w dwóch słowach (169)
- Zliczanie jedynek w tablicy (170)
- Zastosowania (175)
- Początki (178)
- Rozwikłać tajemnicę bezpiecznego przesyłania wiadomości (180)
- Klucz to użyteczność (181)
- Podstawa (184)
- Zestaw testów (188)
- Działający prototyp (189)
- Oczyść, podłącz i używaj (190)
- Hakowanie w Himalajach (194)
- Niewidoczne ruchy ręką (199)
- Prędkość ma znaczenie (201)
- Prywatność komunikacji dla praw jednostki (202)
- Hakowanie cywilizacji (203)
- BioPerl i moduł Bio::Graphics (206)
- Proces projektowania modułu Bio::Design (210)
- Rozszerzanie modułu Bio::Graphics (228)
- Wnioski i lekcje (232)
- Interfejs użytkownika programu Gene Sorter (236)
- Podtrzymywanie dialogu z użytkownikiem przez internet (237)
- Nieco polimorfizmu (239)
- Filtrowanie w celu znalezienia odpowiedniego genu (242)
- Ogólna teoria pięknego kodu (243)
- Podsumowanie (246)
- Wpływ architektury komputerów na algorytmy macierzowe (248)
- Metoda dekompozycyjna (250)
- Prosta wersja (251)
- Podprocedura DGEFA biblioteki LINPACK (252)
- Procedura LAPACK DGETRF (255)
- Rekursywna dekompozycja LU (257)
- Procedura ScaLAPACK PDGETRF (260)
- Wielowątkowość w systemach wielordzeniowych (265)
- Słowo na temat analizy błędów i liczby operacji (267)
- Przyszłe kierunki badań (268)
- Literatura zalecana (269)
- Moje wyobrażenie o pięknym kodzie (271)
- Wprowadzenie do biblioteki CERN (272)
- Zewnętrzne piękno (273)
- Piękno wewnętrzne (278)
- Podsumowanie (284)
- Skromne początki (286)
- Redukcja do jeszcze mniejszych rozmiarów (290)
- Skalowanie do tysięcy urządzeń (293)
- Małe, luźno połączone obiekty (294)
- Od kodu do wskaźników (297)
- Od argumentów funkcji do wskaźników argumentów (300)
- Od systemów plików do warstw systemów plików (303)
- Od kodu do języka konkretnej domeny (305)
- Multipleksacja i demultipleksacja (307)
- Na zawsze warstwy? (308)
- Wewnątrz słownika (313)
- Warunki specjalne (314)
- Kolizje (316)
- Zmiana rozmiaru (317)
- Iteracje i zmiany dynamiczne (318)
- Podsumowanie (319)
- Podziękowania (319)
- Kluczowe wyzwania w operacjach na N-wymiarowych tablicach (322)
- Modele pamięci dla tablicy N-wymiarowej (323)
- Początki iteratora NumPy (324)
- Interfejs iteratora (331)
- Wykorzystanie iteratora (332)
- Podsumowanie (336)
- Misja i Collaborative Information Portal (338)
- Wymagania misji (339)
- Architektura systemu (340)
- Studium przypadku - usługa strumieniowa (343)
- Niezawodność (346)
- Solidność (353)
- Podsumowanie (355)
- Ogólne cele ERP (358)
- ERP5 (358)
- Podstawowa platforma Zope (360)
- Założenia ERP5 Project (364)
- Pisanie kodu dla ERP5 Project (365)
- Podsumowanie (368)
23. Programowanie rozproszone z zastosowaniem MapReduce (389)
- Motywujący przykład (389)
- Model programistyczny MapReduce (392)
- Inne przykłady MapReduce (393)
- Implementacja rozproszonego MapReduce (394)
- Rozszerzenia modelu (398)
- Wnioski (399)
- Literatura zalecana (400)
- Podziękowania (400)
- Dodatek: przykład algorytmu zliczającego słowa (400)
- Prosty przykład: konta bankowe (404)
- Pamięć transakcyjna STM (406)
- Problem Świętego Mikołaja (414)
- Refleksje na temat Haskella (422)
- Wnioski (423)
- Podziękowania (424)
- Krótkie wprowadzenie do syntax-case (429)
- Algorytm rozwijania (431)
- Przykład (443)
- Wnioski (445)
- Przykładowa aplikacja - usługa rejestrowania (449)
- Zorientowany obiektowo projekt frameworku serwera rejestrowania (451)
- Implementacja sekwencyjnych serwerów rejestrowania (457)
- Implementacja współbieżnych serwerów rejestrowania (461)
- Wnioski (467)
- Tło projektu (470)
- Udostępnianie usług klientom zewnętrznym (470)
- Przekazywanie usługi za pomocą wzorca fabryki (473)
- Wymiana danych z użyciem protokołów e-biznesowych (475)
- Wnioski (480)
- Debugowanie debugera (482)
- Systematyczny proces (483)
- Szukany problem (485)
- Automatyczne wyszukiwanie przyczyny awarii (486)
- Debugowanie delta (488)
- Minimalizacja wejścia (490)
- Polowanie na usterkę (490)
- Problem prototypu (493)
- Wnioski (493)
- Podziękowania (494)
- Literatura zalecana (494)
30. Gdy ze światem łączy cię tylko przycisk (501)
- Podstawowy model projektu (502)
- Interfejs wejściowy (505)
- Wydajność interfejsu użytkownika (518)
- Pobieranie (518)
- Przyszłe kierunki rozwoju (519)
- Tworzenie wyjścia mówionego (522)
- Włączanie mowy w Emacsie (523)
- Bezbolesny dostęp do informacji online (534)
- Podsumowanie (541)
- Podziękowania (544)
- O byciu "podręcznikowym" (546)
- Podobne wygląda podobnie (547)
- Niebezpieczeństwa wcięć (548)
- Poruszanie się po kodzie (549)
- Wykorzystywane przez nas narzędzia (550)
- Burzliwa przeszłość DiffMerge (552)
- Wnioski (554)
- Podziękowania (554)
- Literatura zalecana (554)
- Niekrólewska droga (558)
- Ostrzeżenie dla nawiasofobów (558)
- Trzy w rzędzie (559)
- Śliskie nachylenie (561)
- Nierówność trójkąta (563)
- Meandrowanie (565)
- "No przecież!", znaczy się "Aha!" (566)
- Wnioski (567)
- Zalecana literatura (568)
Autorzy (573)
Skorowidz (583)