Przetwarzanie danych dla programistow.pdf
(
348 KB
)
Pobierz
Przetwarzanie danych dla programistów
IDZ DO
PRZYK£ADOW
Y ROZDZIA£
Przetwarzanie danych
SPIS TREŒCI
dla programistów
KATALOG KSI¥¯EK
Autor: Greg Wilson
T³umaczenie: Marek Pêtlicki
ISBN: 83-246-0407-3
Tytu³ orygina³u
:
Data Crunching
Format: B5, stron: 264
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Przetwarzanie danych to czynnoœæ, któr¹ programiœci na ca³ym œwiecie wykonuj¹
niemal codziennie. Konwersja danych pomiêdzy systemami informatycznymi, zmiana
formatów plików tekstowych, przeszukiwanie logów serwerów WWW — to wszystko
mo¿na nazwaæ przetwarzaniem danych. Znajomoœæ technik, dziêki którym takie
procesy odbywaj¹ siê szybko i efektywnie, to jedna z najwa¿niejszych umiejêtnoœci
programisty. Trudnoœci¹ mo¿e okazaæ siê fakt, ¿e nie istnieje brak jednego,
uniwersalnego sposobu przetwarzania danych. Do ka¿dego typu problemu nale¿y
podejœæ w sposób indywidualny, próbuj¹c roz³o¿yæ go na sekwencjê prostych
przekszta³ceñ, ³atwych do implementacji i testowania.
Czytaj¹c ksi¹¿kê „Przetwarzanie danych dla programistów”, poznasz metody
rozwi¹zywania problemów programistycznych zwi¹zanych z konwersj¹ danych ró¿nego
typu. Nauczysz siê analizowaæ istotê zagadnienia i dobieraæ najbardziej optymalny
sposób realizacji zadania. Dowiesz siê, jak w systemach Unix/Linux wykorzystaæ
wyra¿enia regularne i pow³oki tekstowe systemów z rodziny Unix/Linux do
przetwarzania danych tekstowych., Pprzeczytasz o u¿ytecznych, lecz czêsto
niedocenianych cechach jêzyków Java i Python oraz innych jêzyków programowania.
Przekonasz siê, ¿e mimo rozbie¿noœciró¿nic pomiêdzy ró¿nymi typami danych istnieje
kilka ogólnych wzorców, które powtarzaj¹ siê w wielu zastosowaniach niezale¿nie
od u¿ytegozastosowanego jêzyka programowania lub detali implementacyjnych.
Przetwarzanie danych tekstowych za pomoc¹ pow³oki Uniksa
Stosowanie wyra¿eñ regularnych
Analiza dokumentów XML
Pakowanie i rozpakowywanie danych binarnych
Zapytania w relacyjnych bazach danych
Testowanie mechanizmów konwersji danych
Opanuj jedn¹ z podstawowych umiejêtnoœci profesjonalnego programisty
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Rozdział 1. Wprowadzenie .................................................... 5
1.1. Narysować molekułę ................................................................5
1.2. Czarna owca ...........................................................................7
1.3. Morał .....................................................................................8
1.4. Pytania o przetwarzanie danych ................................................9
1.5. Plan książki ...........................................................................13
Rozdział 2. Tekst ................................................................. 17
2.1. Odwracanie kolejności wierszy w pliku ....................................17
2.2. Przeformatowanie danych ......................................................20
2.3. Obsługa rekordów wielowierszowych .......................................29
2.4. Testowanie kolizji ..................................................................36
2.5. Włączanie plików zewnętrznych ..............................................42
2.6. Powłoka Uniksa ....................................................................47
2.7. Bardzo duże zbiory danych ....................................................56
2.8. Podsumowanie ......................................................................57
Rozdział 3. Wyrażenia regularne ......................................... 59
3.1. Powłoka ................................................................................61
3.2. Podstawy wzorców dopasowań ...............................................63
3.3. Wydobywanie dopasowanych wartości ....................................72
4
Przetwarzanie danych dla programistów
3.4. Zastosowania praktyczne .......................................................83
3.5. Różne języki ..........................................................................95
3.6. Inne systemy ..........................................................................99
3.7. Podsumowanie ....................................................................104
Rozdział 4. XML ................................................................ 105
4.1. Szybkie wprowadzenie .........................................................106
4.2. SAX ..................................................................................112
4.3. DOM .................................................................................126
4.4. XPath ................................................................................137
4.5. XSLT ................................................................................143
4.6. Podsumowanie ....................................................................153
Rozdział 5. Dane binarne ................................................... 157
5.1. Liczby ................................................................................158
5.2. Wejście i wyjście ..................................................................165
5.3. Ciągi znaków .......................................................................171
5.4. Podsumowanie ....................................................................182
Rozdział 6. Relacyjne bazy danych .................................... 185
6.1. Proste zapytania ..................................................................186
6.2. Zagnieżdżanie i negacja .......................................................197
6.3. Agregacje i perspektywy .......................................................203
6.4. Tworzenie, modyfikacja i usuwanie .......................................207
6.5. Zastosowanie SQL-a w programach .....................................216
6.6. Podsumowanie ....................................................................220
Rozdział 7. Diabeł tkwi w szczegółach .............................. 223
7.1. Testy jednostkowe ...............................................................223
7.2. Kodowanie i dekodowanie ....................................................235
7.3. Arytmetyka zmiennoprzecinkowa ..........................................239
7.4. Daty i czas ..........................................................................242
7.5. Podsumowanie ....................................................................248
Dodatek A Bibliografia ....................................................... 249
Skorowidz ........................................................................... 251
EKST JEST JEDNYM Z NAJSTARSZYCH FORMATÓW
danych
i nadal należy do najbardziej popularnych. Jednym z powodów po-
pularności takiego formatu jest fakt, że dane w nim zapisane można
przetwarzać i przeglądać za pomocą dowolnego edytora tekstów. Głębszy
powód tej popularności leży w tym, że pisanie programów do automatycznej
manipulacji tekstem jest bardzo łatwe. W tym rozdziale przyjrzymy się pro-
gramom tego typu, ich możliwościom i podstawowej strukturze. Zatrzy-
mamy się też chwilę przy wierszu poleceń systemów Unix, środowisku zo-
rientowanemu tekstowo, które nadal trzyma się bardzo dobrze, pomimo
niemal czterdziestoletniej tradycji.
2.1. Odwracanie kolejności wierszy
w pliku
Na początek weźmiemy pod uwagę zupełnie podstawowy problem przetwa-
rzania danych tekstowych, jakim jest odwrócenie kolejności wierszy w pliku.
Oto proste rozwiązanie tego problemu w Pythonie:
import sys
# Odczyt
input = open(sys.argv[1], "r")
lines = input.readlines()
18
Przetwarzanie danych dla programistów
input.close()
# Przetwarzanie
lines.reverse()
# Zapis
output = open(sys.argv[2], "w")
for line in lines:
print >> output, line.strip()
output.close()
Kod jest trywialny, posiada jednak strukturę charakterystyczną dla większości
procedur przetwarzających dane:
1.
odczyt danych wejściowych,
2.
przetwarzanie,
3.
zapis wyniku.
W wielu przypadkach możliwe jest zapisywanie wyniku na bieżąco w ramach
przetwarzania, lecz prawie zawsze najlepiej jest podzielić problem na po-
wyższe etapy. Po pierwsze, dzięki temu kod staje się czytelniejszy i łatwiej
go wykorzystać ponownie (problemy tego typu bywają bardzo powtarzalne).
Po drugie, to podejście jest niezwykle uniwersalne i działa prawie zawsze
1
,
natomiast odmiana polegająca na połączeniu etapu drugiego z trzecim nie
zawsze zadziała (przykładem jest właśnie odwracanie kolejności wierszy
pliku).
Zwolennicy mniej dynamicznych języków programowania mogą preferować
następującą wersję napisaną w Javie:
import java.util.*;
import java.io.*;
public class ReverseLines {
public static void main(String[] args) {
try {
// Odczyt
BufferedReader input = new BufferedReader(new
FileReader(args[0]));
ArrayList list = new ArrayList();
String line;
while ((line = input.readLine()) != null) {
list.add(line);
}
1
Chyba że danych jest zbyt wiele, by mogły zmieścić się w pamięci. Do tego tematu
wrócimy w dalszej części rozdziału.
Plik z chomika:
janowiec
Inne pliki z tego folderu:
Asembler dla procesorow Intel Vademecum profesjonalisty.pdf
(400 KB)
Asembler cwiczenia praktyczne.pdf
(358 KB)
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe.pdf
(829 KB)
Architektura oprogramowania Metody oceny oraz analiza przypadkow.pdf
(429 KB)
Aplikacje w Visual C++ 2005 Przyklady.pdf
(296 KB)
Inne foldery tego chomika:
PHP
Zgłoś jeśli
naruszono regulamin