piękny kod. tajemnice mistrzów programowania cała książka, ebooki
[ Pobierz całość w formacie PDF ]
5.
Poprawny, piękny, szybki (w takiej kolejności)
— lekcje z projektowania weryfikatorów XML
79
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
6.
Framework for Integrated Test — piękno poprzez delikatność
95
Acceptance Testing Framework w trzech klasach
96
Wyzwanie zaprojektowania środowiska
98
Otwarte środowisko
99
Jak prosty może być parser HTML
100
Podsumowanie
103
7.
Piękne testy
105
To niesforne wyszukiwanie binarne
106
Wstęp do JUnit
109
Rozprawić się z wyszukiwaniem binarnym
111
Podsumowanie
122
8.
Generowanie w locie kodu do przetwarzania obrazów
125
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
10.
Poszukiwanie szybszych metod zliczania bitów w stanie wysokim
163
Podstawowe metody
164
Dziel i zwyciężaj
165
Inne metody
167
6
SPIS TREŚCI
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
11.
Bezpieczna komunikacja — technologia wolności
177
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
12.
Hodowanie pięknego kodu w języku BioPerl
205
BioPerl i moduł Bio::Graphics
206
Proces projektowania modułu Bio::Design
210
Rozszerzanie modułu Bio::Graphics
228
Wnioski i lekcje
232
13.
Projekt programu Gene Sorter
235
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
14.
Jak elegancki kod ewoluuje wraz ze sprzętem — przypadek eliminacji Gaussa
247
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
SPIS TREŚCI
7
15.
Długoterminowe korzyści z pięknego projektu
271
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
16.
Model sterowników jądra systemu Linux — korzyści płynące ze współpracy
285
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
17.
Inny poziom pośredniości
297
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
18.
Implementacja słownika w Pythonie — być wszystkim dla wszystkich
311
Wewnątrz słownika
313
Warunki specjalne
314
Kolizje
316
Zmiana rozmiaru
317
Iteracje i zmiany dynamiczne
318
Podsumowanie
319
Podziękowania
319
19.
Wielowymiarowe iteratory w NumPy
321
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
20.
System korporacyjny o wysokim stopniu niezawodności dla misji Mars Rover NASA
337
Misja i Collaborative Information Portal
338
Wymagania misji
339
Architektura systemu
340
Studium przypadku — usługa strumieniowa
343
Niezawodność
346
Solidność
353
Podsumowanie
355
8
SPIS TREŚCI
21.
ERP5 — projektowanie maksymalnej giętkości
357
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
22.
Łyżka dziegciu
371
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
24.
Piękna współbieżność
403
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
25.
Abstrakcja składniowa — rozszerzenie syntax-case
425
Krótkie wprowadzenie do syntax-case
429
Algorytm rozwijania
431
Przykład
443
Wnioski
445
26.
Architektura oszczędzająca nakłady
— obiektowy framework dla oprogramowania sieciowego
447
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
27.
Integracja partnerów biznesowych z wykorzystaniem architektury REST
469
Tło projektu
470
Udostępnianie usług klientom zewnętrznym
470
SPIS TREŚCI
9
[ Pobierz całość w formacie PDF ]