Linux PROFESIONÁLNĚ programování aplikací
Jon Masters a Richard Blum
Professional Linux Programming Jon Masters, Richard Blum Published by Wiley Publishing, Inc., 10475 Crosspoint Boulevard, Indianapolis, IN 46256, www.wiley.com. Copyright © 2007 by Wiley Publishing, Inc., Indianapolis, Indiana. © Translation: ZONER software, s.r.o., 2008. All Rights Reserved. This translation published under license with the original publisher John Wiley & Sons, Inc. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Wiley Publishing, Inc. Všechna práva vyhrazena. Tento překlad je vydán na základě licenční smlouvy s John Wiley & Sons, Inc. Žádná část této publikace nesmí být reprodukována nebo předávána žádnou formou nebo způsobem, elektronicky ani mechanicky, včetně fotokopií, natáčení ani žádnými jinými systémy pro ukládání bez výslovného svolení Wiley Publishing, Inc.
Linux PROFESIONÁLNĚ – programování aplikací Autoři: Jon Masters a Richard Blum Copyright © ZONER software, s.r.o. Vydání první v roce 2008. Všechna práva vyhrazena. Zoner Press Katalogové číslo: ZR713 ZONER software, s.r.o. Nové sady 18, 602 00 Brno Překlad: Vilém Gutfreund, Pavel Macík, Jana Staurovská, Jan Kuklínek Odpovědný redaktor: Miroslav Kučera Šéfredaktor: Ing. Pavel Kristián DTP: Miroslav Kučera Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book. The Wrox Brand trade dress is a trademark of John Wiley & Sons, Inc. in the United States and/or other countries. Used by permission. Ochranné známky: Wiley, logo Wiley, Wrox, logu Wroxu a souvisejicí obchodní známky jsou ochrannými známkami nebo registrovanými ochrannými známkami vydavatelství John Wiley & Sons, Inc, nebo jejich poboček, ve Spojených státech a/ nebo ostatních zemích a nemohou být používány bez písemného oprávnění. Všechny ostatní ochranné známky jsou majetkem jejich vlastníků. Wiley Publishing, Inc. není propojen s jakýmkoliv produktem nebo výrobcem zmíněným v této knize. Obchodní značka Wrox je ochrannou známkou John Wiley & Sons, Inc. ve Spojených státech a/nebo ostatních zemích. Veškeré dotazy týkající se distribuce směřujte na: Zoner Press ZONER software, s.r.o. Nové sady 18, 602 00 Brno tel.: 532 190 883, fax: 543 257 245 e-mail:
[email protected] http://www.zonerpress.cz
ISBN 978-80-86815-71-8
Pro Karin, kterou tolik miluji – Jon Masters Mé ženě Barbaře – Richard Blum
4
O autorech Jon Masters je pětadvacetiletý autor a expert na linuxové jádro a zabudované systémy. Narodil se ve Velké Británii, ale v současné době žije v USA, kde pracuje pro firmu Red Hat. Do historie Velké Britániie se zapsal jako jeden z nejmladších univerzitních studentů, které tato země pamatuje – bylo mu pouhých 13 let. V době, kdy se jeho vrstevníci blížili k závěru svého prvního vysokoškolského studia, měl už za sebou dvě vysoké školy a přes stovku publikací v širokém spektru technických časopisů, sborníků a knih. Pracoval pro několik nadnárodních technologických společností. Intenzivně se věnoval oblastem zabudovaných systémů, podnikového nasazení Linuxu a vědecké přístrojové techniky a pomáhal s návrhem všeho možného – od set-top boxů až po novou generace zařízení pro nukleární magnetickou rezonanci. Když náhodou nepracuje pro firmu Red Hat na produktu Enterprise Linux, rád si dá čaj na Boston Common nebo si přečte sebrané spisy Thomase Paina a dalších velkých amerických revolucionářů minulosti. Sní o době, když svět neovládaly elektrony, ale dřevěné plachetnice. Hraje na housle a příležitostně zpívá v pěveckých sborech, za což již obdržel několik cen. Rád si odpočine při horolezectví. Žije v Cambridge v Massachusetts, od historického centra Bostonu jej dělí pouze řeka Charles a moc se mu tam líbí. Jon má bohaté zkušenosti s přednášením o mnoha různých linuxových technologiích a s jejich výukou a rád se aktivně zapojuje do dění linuxových uživatelských skupin s po celém světě. Richard Blum déle než 18 let pracoval jako správce sítě pro velkou americkou vládní organizaci. Během této doby měl mnoho příležitostí pracovat nejenom se servery od společností Microsoft a Novell, ale také s unixovými a linuxovými servery. Aplikace vytvářel v jazycích C, C++, Java, C# a Visual Basic. Rich je bakalářem elektrotechniky a magistrem managementu se specializací na řídící informační systémy; oba tituly získal na Purdue University. Napsal několik knih, jmenujme například "sendmail for Linux" (2000, Sams Publishing), "Running qmail" (2000, Sams Publishing), "Postfix" (2001, Sams Publishing), "Open Source E-mail Security" (2001, Sams Publishing), "C# Network Programming" (2002, Sybex), "Network Performance Open Source Toolkit" (2003, John Wiley & Sons) a "Professional Assembly Language Programming" (2005, Wrox). Když zrovna nesedí za počítačem, hraje na elektrickou baskytaru v církevní kapele nebo tráví svůj čas se svou ženou Barbarou a dcerami Katie, Jane a Jessicou.
5
Poděkování Toto poděkování píši v den svých 25. narozenin, po mnoha dlouhých večerech, které jsem minulý rok strávil doháněním termínů, plánováním a dokonce občas i nějakým psaním. Když jsem se poprvé rozhodl napsat tuto knihu, vůbec jsem si nedovedl představit to množství práce, která je potřebná pro dokončení takového projektu a ani obtíže, se kterými jsem se přitom musel vypořádat. Knihu jsem začal psát na okraji Londýna a dokončil ji za necelý rok ve svém novém domově v massachusettském Cambridge, protože jsem se rozhodl svou rodnou zemi opustit. V průběhu minulého roku se v mém osobním i profesním životě změnilo mnoho věcí, ale mám skvělé přátele a příbuzné, kteří mi s těmito změnami pomohli. Především bych chtěl poděkovat týmu, se kterým jsem pracoval v nakladatelství Wiley – Debře, Adaobimu, Kitovi, Howardovi a Carol stejně jako mnoha dalším, kteří dohlížejí na to, aby se z rukopisu stala hotová kniha. Zvláštní poděkování si zaslouží Kit Kemper, který akceptoval můj časový harmonogram psaní (a kterému se nějak podařilo zařídit, že vyšel) a Debra Williams-Cauley, která uvěřila tomu, že tento projekt je dobrý nápad. Výborná redaktorská práce, kterou odvedl Howard Jones, mi pomohla, abych psal poctivě. Tato kniha by nevznikla bez inspirace, kterou mi poskytli mí dobří přátelé (a někdejší šéfové) Malcolm Buckingham a Jamie McKendry z Resonance Instruments (později Oxford Instruments), kteří si neustále stěžovali na nedostatek knih věnovaných programování v Linuxu. Kniha za svůj vznik také vděčí milým příspěvkům od mých několika dobrých přátel – děkuji vám Kat a Davide Goodwinovi, Matthewe Waltone a Chrisi Aillone. Děkuji také Richardu Blumovi, který se ke mně a k celému týmu přidal, když mi začalo být jasné, že bych svou práci nestihl dokončit včas. Všichni jste odvedli skvělou práci! Při psaní mi pomáhala moje skvělá rodina – mí rodiče Paula a Charles, sestry Hannah a Holly, můj švagr Joe. Občas přišla i nějaká inspirace od mých babiček. Mohl jsem si také užívat s těmi nejlepšími přáteli, jaké si člověk může přát – je jich tolik, že každého zde uvést nemohu, nicméně bych chtěl zmínit alespoň Husseina Jodiyawalla, Johannese Klinga, Bena Swana, Paula Sladena, Markuse Koblera, Toma Hawleyho, Sidarshana Guru Ratnavellu, Chrise Balla a Mada (a jejich kočku Zoe), Emmu Maule, Johna a Jana Buckmanovy, Tobyho Jaffeyho a jeho Sáru, Svena Thorstena-Dietricha, Billa Weinberga, Daniela Jamese, Joea Casadu a Andrewa Huttona společně Emílií. Obzvláště děkuji svým přátelům ze společnosti Red Hat, svému šéfovi a všem ostatním, tvrdě pracujícím lidem, díky kterým je naše společnost tím nejlepším pracovním místem na světě. Red Hat skutečně ví, co to znamená pracovat s Linuxem a já jsem z celého srdce vděčný, že mohu pracovat v prostředí, které přesně v duchu linuxové komunity podporuje mé zapojení do různých projektů – díky chlapi, jste opravdu profesionálové. A nakonec bych chtěl poděkovat Karin Worleyové za její přátelství, které v závěrečných fázích tohoto projektu mělo nepochybně hodně příležitostí k otálení. Karin, nejsem si jistý, zdali bych schopen dokončit tuto knihu bez toho nově objeveného pocitu štěstí, který vstoupil do mého života. Jon Masters Cambridge, Massachusetts
6 Děkuji výtečnému týmu z Wiley, kteří v tomto projektu odvedli vynikající práci. Děkuji Kitu Kemperovi, náborovému redaktorovi, který mi umožnil na této knize pracovat. Děkuji také Howardu Jonesovi, odpovědnému redaktorovi, který držel všechny věci na uzdě a významně se zasloužil o to, že tato kniha vznikla. Chtěl bych také poděkovat Carol McClendonové z Waterside Productions, Inc., která mi tuto příležitost zprostředkovala a pomohla mi v mé spisovatelské dráze. A nakonec bych chtěl poděkovat svým rodičům, Mikovi a Joyce Blumovým, za jejich oddanost a podporu, se kterou mě vychovali, a své ženě Barbaře a dcerám Katie Jane a Jessice za jejich lásku, trpělivost a porozumění, zejména v dobách, kdy píšu nějakou knihu. Richard Blum
7
Obsah O autorech
4
Poděkování
5
Úvod
14
Pro koho je tato kniha určena
15
Co obsahuje tato kniha?
15
Jak je tato kniha uspořádána?
16
Konvence
16
Zdrojový kód
17
Sdělte nám svůj názor
17
Kapitola 1
Pracujeme s Linuxem
Stručná historie Linuxu Projekt GNU
19 20 20
Jádro Linuxu
21
Linuxové distribuce
22
Svobodný software a open source Začátek vývoje
23 24
Výběr linuxové distribuce
25
Instalace linuxové distribuce
28
Komunita kolem Linuxu
35
Linuxové uživatelské skupiny
35
E-mailové konference
36
IRC
36
Soukromé komunity
36
Klíčové rozdíly mezi systémy
37
Linux je modulární
37
Linux je přenositelný
37
Linux je obecný
38
Shrnutí
Kapitola 2
38
Toolchain
Vývojářský proces v Linuxu
39 39
Práce se zdrojovými kódy
40
Konfigurace lokálního prostředí
41
Kompilace zdrojových kódů
42
Komponenty GNU Toolchain
43
8 Kolekce kompilačních nástrojů GNU binutils
44 56
GNU Make 61 GNU debugger
62
Jádro Linuxu a GNU Toolchain
66
Inline assembler
66
Atributy značek
67
Uživatelské skripty linkeru
68
Křížová kompilace
69
Kompilace GNU Toolchain
70
Shrnutí
71
Kapitola 3
Přenositelnost
73
Povídání o přenositelnosti
74
Přenositelnost Linuxu
75
Vrstvy abstrakce
76
Distribuce Linuxu
77
Kompilace balíčků
83
Přenositelný zdrojový kód Mezinárodní podpora
98 111
Přenositelnost hardwaru
119
64bitová čistota
120
Neutralita endianity
121
Svaté války endianity
123
Shrnutí
Kapitola 4
124
Správa zdrojových kódů
125
Proč potřebujeme SCM
126
Centralizovaný vs decentralizovaný vývoj
127
Centralizované systémy
128
CVS – systém pro sledování verzí
128
Subversion
138
Decentralizované nástroje Bazaar-NG SCM pro jádro Linuxu (git) Integrované nástroje SCM Eclipse Shrnutí
142 143 147 151 151 153
9 Kapitola 5
Síťové programování
Programování linuxových socketů
155 155
Sockety
156
Síťové adresy
158
Použití spojově orientovaných socketů
159
Použití nespojovaných socketů
167
Přesuny dat
170
Datagramy versus datové proudy
170
Označování hranic zprávy
174
Knihovny pro síťové programování
177
Knihovna libCurl
178
Použití knihovny libCurl
179
Shrnutí
Kapitola 6
186
Databáze
Trvalé uložení dat
187 187
Použití standardního souboru
188
Použití databáze
188
Balíček Berkeley DB
190
Stažení a instalace
191
Kompilace programů
192
Základní práce s daty
193
Databázový server PostgreSQL
203
Stažení a instalace
204
Kompilace programů
205
Tvorba databáze pro aplikaci
206
Připojení k serveru
208
Spouštění příkazů SQL
212
Používání parametrů Shrnutí
Kapitola 7
220 224
Vývoj jádra
Začátek
225 225
Základní předpoklady
226
Zdrojové soubory jádra
227
Konfigurace jádra
231
Kompilace jádra
235
Zkompilované jádro
239
10 Testování jádra Zabalení a instalace jádra Koncepty jádra
240 243 243
Varování
244
Abstrakce úlohy
244
Virtuální paměť
250
Nepanikařte
254
Hackování jádra
254
Natažitelné moduly Proces vývoje jádra
255 258
Git – "hloupý sledovač obsahu"
258
LKML, e-mailová konference o jádru Linuxu
260
Vývojový strom "mm"
262
Stabilní tým jádra
263
LWN, Linux Weekly News
263
Shrnutí
Kapitola 8
263
Rozhraní jádra
Co je rozhraní?
265 265
Nedefinovaná rozhraní
266
Externí rozhraní jádra
267
Systémová volání
268
Abstrakce souboru
274
Události jádra
290
Ignorování ochrany jádra Vnitřní rozhraní jádra API jádra
296
ABI jádra
296
Shrnutí
Kapitola 9
291 295
298
Moduly jádra Linuxu
Jak moduly pracují Rozšíření jmenného prostoru jádra Nalezení kvalitní dokumentace Manuálové stránky jádra Linuxu Psaní modulů jádra Linuxu
299 299 302 304 304 306
Než začnete
306
Základní požadavky modulů
307
Logování
310
11 Exportované symboly
311
Alokace paměti
313
Několik úvah o uzamykání
321
Odložení práce
330
Další čtení
338
Distribuce modulů jádra Linuxu
338
Přechod k upstreamu
338
Dodání zdrojových souborů
339
Dodání již zkompilovaných modulů Shrnutí
Kapitola 10
339 340
Ladění
Přehled ladění
341 341
Pár slov o správě paměti Základní nástroje pro ladění
342 343
GNU debugger
343
Valgrind
353
Grafické ladicí nástroje
354
DDD
355
Eclipse
357
Ladění jádra
360
Nepanikařte!
361
Chápeme oops
362
Použití UML pro ladění
364
Zábavná anekdota
369
Poznámka o debuggerech jádra Shrnutí
Kapitola 11
369 370
Vývojová platforma GNOME
Knihovny v GNOME
371 371
Glib
372
GObject
372
Cairo
372
GDK
373
Pango
373
GTK+
373
libglade
374
GConf
374
GStreamer
374
12 Vybudování přehrávače hudby
375
Požadavky
375
Začínáme: hlavní okno
376
Sestavení GUI
378
Shrnutí
Kapitola 12
398
Projekt FreeDesktop
399
D-BUS: Desktop Bus
399
Co je D-Bus
400
Pozadí D-Busu
400
Metody D-Busu
404
Vrstva abstrakce hardwaru
409
Přimějte hardware k fungování
409
Objekty zařízení HAL
412
FreeDesktop NetworkManager
418
Další projekty FreeDesktopu
420
Shrnutí
421
Kapitola 13
Grafika a zvuk
Linux a grafika
423 423
X Windows
424
OpenGL
426
OpenGL Utilities Toolkit
427
Simple Directmedia Layer
427
Vytváření aplikací OpenGL
427
Stažení a instalace
428
Programovací prostředí
429
Použití knihovny GLUT
430
Vytváření SDL aplikací
445
Stažení a instalace
445
Programovací prostředí
446
Použití knihovny SDL Shrnutí
Kapitola 14
446 458
LAMP
459
Co je LAMP?
459
Apache
460
MySQL
460
13 PHP
461
"Pirátská platforma"
461
Zvažování platformy LAMP
462
Apache
464
Virtuální hostitelé
464
Instalace a konfigurace PHP 5
466
Základní autentizace Apache
467
Apache a SSL
468
Integrace SSL s HTTP autentizací MySQL Instalace MySQL
468 469 469
Konfigurace a spuštění databáze
470
Změna výchozího hesla
470
Rozhraní klienta MySQL
471
Relační databáze
471
SQL
472
Relační model
475
PHP
478 Jazyk PHP
478
Základy jazyka
479
Funkce
483
Viditelnost
484
Obsluha chyb
488
Obsluha chyb s výjimkami
489
Optimalizační techniky
491
Instalace dalšího software pro PHP
496
Protokolování
496
Ošetření zadaných parametrů
497
Správa relací
499
Testování jednotek
499
Databáze a PHP
501
Pracovní rámce pro PHP
502
Knihovna DVD
502
Verze 1 – noční můra vývojáře
503
Verze 2 – základní aplikace s konkrétní datovou vrstvou
504
Verze 3 – přepsání datové vrstvy, doplnění protokolování a výjimek
508
Verze 4 – použití šablonového systému
512
Shrnutí
513
Rejstřík
515
14
Úvod Linux v několika posledních letech urazil velký kus cesty. Po relativně skromných začátcích se dostal do pozice, kdy je na něm závislá celá řada společností z žebříčku Fortune 500. Vše – počínaje vaším mobilním telefonem a největšími superpočítačovými clustery konče – je nyní založeno na linuxovém jádře a distribucích postavených kolem něj. Ale co je to vlastně Linux? V čem se liší od jiných operačních systémů rodiny UNIX, které jsou dnes na trhu k dispozici? A co víc – jak můžete ve vašich projektech využít plnou sílu Linuxu a s tím související revoluci svobodného software? Tato kniha si klade za cíl zodpovědět tyto a další otázky. Jejím skutečným smyslem je sdělit vám, čtenářům, proč je Linux jedinečný, a přitom jít do větší hloubky, než je obvyklé u základních příruček pro začátečníky. Autor se během své dosavadní kariéry profesionálního programátora dostal do situací, kdy spolupracoval s velmi znalými softwarovými inženýry, kterým ovšem chyběly hlubší zkušenosti s Linuxem. Někteří z nich se snažili najít knihu, jako je tato, nicméně neúspěšně. Tato kniha, která je zrozena z jejich zklamání, by vám měla pomoci pochopit mocné působení linuxové komunity, model používaný pro vývoj software a způsob, jakým se provádějí věci ve světě Linuxu. Existuje mnoho jiných knih, které o sobě tvrdí, že se věnují programování v Linuxu. Většina z nich je opravdu výborná, ale příliš často se zaměřují na věci, ve kterých Linux pouze následuje své předchůdce. Tohle v této knize nenajdete, protože jejím zaměřením není to, co má Linux společného se starými unixovými systémy. Naopak. Tato kniha je o moderním operačním systému Linux a nepatří mezi ostatní knihy o programování v Unixu. Snaží se vám nejenom detailně vysvětlit, v čem vlastně tkví ten neuvěřitelný úspěch Linuxu, ale také se snaží předvést některé části systému, které ostatní knihy o Linuxu zmiňují ve stručnosti, nebo je zcela opomíjejí. V této knize se dozvíte, co představuje základ vývoje v Linuxu. Seznámíte se širokou paletou nástrojů, které linuxoví vývojáři běžně využívají při své práci – kompilátory, debuggery či nástroje pro správu verzí – a jak s nimi vytvářejí aplikace, nástroje, pomůcky a dokonce i samotné jádro Linuxu. Dozvíte se zajímavé informace o jedinečných komponentách linuxového systému, díky kterým se odlišuje od ostatních unixových systémů. Společně se také dostaneme i k popisu různých vnitřních mechanismů Linuxu. Dále pak poznáte různé vývojářské metody, včetně virtualizačních technologií a křížové kompilace, která představuje vhodný způsob, jak zkompilovat software pro různé kompatibilní platformy. Dále se naučíte používat Linux společně s Internetem a zkusíte si vytvořit software pomocí vyhlášené platformy LAMP (Linux, Apache, MySQL, Perl/Python). Linux znamená mnohem více, než samotné jádro – a jako linuxový vývojář byste si tuto skutečnost měli uvědomit. Tato kniha je hlavně o učení. Má vám přednést rozbor klíčových témat, která hýbou linuxovým vývojem, abyste mohli snáze objevovat svět svobodných softwarových projektů. Až si ji kompletně přečtete, měli byste získat přehled o všem, co potřebujete vědět. Tato kniha vám neposkytne odpověď na každou otázku, ale budete schopni se dále sami vzdělávat. Věřím, že tato kniha pro vás bude přínosná, ať už vytváříte svobodný software, nebo pracujete na velkých komerčních softwarových projektech.
15
Pro koho je tato kniha určena Tato kniha je napsána pro dvě různé skupiny čtenářů. Tou první a významnější jsou stávající programátoři, kteří přemýšlejí o přechodu na Linux. Tito čtenáři již mají nějaké znalosti programovacího jazyka C a chápou základní myšlenky – kompilátory, linkery, debuggery atd. Pravděpodobně již četli nějakou knihu, která se úvodu do této oblasti věnovala – např. knihu Beginning Linux Programming (Wiley 2004), ale zatím jim chybějí praktické zkušenosti. Jestliže jste v oblasti profesionálního vývoje software pro Linux nováčkem, mělo by vám použité uspořádání knihy vyhovovat. Měli byste být schopni ji přečíst v kuse – od začátku do konce. Materiál věnovaný jádru (kapitoly 7 až 9) můžete přeskočit a zaměřit se více na aplikace vyšší úrovně a na nástroje, které se používají v běžných projektech mimo linuxové jádro. Budou se vám zejména hodit kapitoly věnované různým nástrojům, přenositelnosti a systémům pro správu verzí. Tato kniha také obsahuje materiál zaměřený na linuxové nadšence, manažery a ostatní lidi, kteří projevují zájem o Linux, používají jej ve svém každodenním životě a chtějí opravdu porozumět chodu běžného linuxového systému – aniž by přitom museli vyvíjet software. Jak moderní linuxový systém provádí detekci hardware? Proč linuxové jádro neposkytuje jednotný model pro ovladače zařízení? Jak Linux podporuje národní prostředí? Najdete zde odpovědi na mnoho otázek. Ti, kteří již s Linuxem nějaké zkušenosti mají, nebudou muset knihu číst celou, ale přesto i pro ně se v každé kapitole najde něco zajímavého. Poznámky a různé komentáře obsahují příklady a rady, se kterými jste se možná ještě nesetkali. Najdete mezi nimi i historky a různá poučení, ke kterým dospěli ostatní. Pravděpodobně se ale více zaměříte na pozdější kapitoly, které jsou věnované linuxovému jádru, desktopovému prostřední a LAMP. Tato kniha vám tedy pomůže, ať již programujete pro platformu Microsoft Windows a máte pouze základní znalosti Linuxu a UNIXu, které si chcete rozšířit, nebo už hodně dlouho patříte mezi nezdolné unixové programátory, které zajímá, jakým způsobem Linux vlastně funguje.
Co obsahuje tato kniha? Tato kniha popisuje širokou paletu technologií, které se používají při vývoji linuxového softwaru. Naleznete zde nejenom přehled historie moderních unixových a linuxových systémů, ale také informace o přenositelnosti mezi jednotlivými platformami a nástrojích, které k tomuto účelu v moderních linuxových distribucích slouží. Dozvíte se více informací o interakci linuxových systémů prostřednictvím síťových rozhraní, o grafických uživatelských rozhraních, o složitých webových systémech založených na platformě LAMP a dokonce neopomeneme problematiku rozšiřování samotného jádra Linuxu. Zkrátka vše, co vývoj v Linuxu v současné době zahrnuje. Tato kniha reflektuje situaci, která byla aktuální v době, kdy byla napsána, nicméně verze software se v průběhu času pochopitelně mění. Z tohoto důvodu většina témat nevyžaduje nějakou konkrétní verzi nástroje, zdrojového kódu nebo balíčku. Na místech, kde se mluví o konkrétním vydání, jste na tuto skutečnost upozorněni. V opačném případě předpokládejte, že uvedené příklady budou pracovat s jakoukoliv novější linuxovou distribucí, kterou budete mít k dispozici.
16
Jak je tato kniha uspořádána? Tuto knihu lze volně rozdělit do čtyř částí. V prvních několika kapitolách naleznete informace o základních nástrojích a technologiích, které vám mají usnadnit život profesionálního linuxového programátora. Poznáte GNU Toolchain, význam přenositelnosti software, nutnost respektovat národní prostředí a mnoho dalších témat, jejichž cílem je, abyste zvládli sami pracovat na svých projektech. Tento materiál byste si měli přečíst jako první. Je možné, že později se k němu budete docela často vracet. Druhá část knihy se zabývá nízkoúrovňovými komponentami linuxového systému. Jedná se o témata tradičního systémového programování – včetně sítí, databázových pojmů a linuxového jádra. Tento materiál můžete použít k tomu, abyste lépe pochopili ty oblasti, které vás zajímají, nicméně nepočítejte s tím, že bude zcela vyčerpávající. Toto se hlavně týká hlavně pasáží věnovaných jádru, které mají za úkol povzbudit vaši zvědavost. Ve třetí části této knihy se společně podíváme na komponenty vyšší úrovně, včetně prostředí GNOME a jeho knihovny. Dozvíte se o projektu FreeDesktop a budete mít příležitost vytvořit vlastní CD přehrávač pomocí výkonné knihovny GStreamer, kterou využívají současné multimediální aplikace pro GNOME. Dále zjistíte, co všechno můžete dokázat díky opětovnému využití softwaru, a získáte základní představu o tom, jak psát vlastní aplikace pro GNOME. Poslední kapitola této knihy je pak věnována platformě LAMP. Jejím základem je svobodný software – Linux, Apache, MySQL a Perl (nebo Python), který vám umožňuje vytvářet velmi výkonné webové aplikace. Tato kapitola vás seznámí s jednotlivými komponentami platformy LAMP a předvede několik příkladů jejich použití.
Konvence Abyste si mohli z textu této knihy odnést co nejvíce a mohli jej snadno sledovat, používáme v knize několik následujících konvencí. Rámečky, jako je tento, obsahují důležité informace, které přímo související s okolním textem, a které byste si měli zapamatovat.
Co se týče použitého formátování v textu:
Klávesové zkratky píšeme takto: Ctrl+A
Názvy souborů, URL a kód v textu píšeme takto: persistence.properties
Zdrojový kód uvádíme dvěma způsoby: V ukázkách kódu zdůrazňujeme nové a důležité úseky tučným řezem. Šedé zvýraznění není použito u kódu, který není v dané souvislosti tolik podstatný, nebo se neobjevuje poprvé.
17
Zdrojový kód Když si budete procházet příklady v této knize, můžete zdrojový kód opisovat ručně, nebo můžete použít doprovodné soubory ke knize. Veškeré zdrojové kódy, které jsou použité v této knize, jsou dostupné ke stažení na následující adrese (velikost 545 KB): http://zonerpress.cz/download/zdrojove-kody-linux-profesionalne.zip
Až si zdrojové kódy stáhnete, jednoduše je rozbalte vaším komprimačním nástrojem.
Sdělte nám svůj názor Jako čtenáři této knihy se stáváte těmi nejdůležitějšími kritiky a komentátory. Vážíme si vašeho názoru a chtěli bychom vědět, co děláme správně, co bychom mohli dělat lépe, ve kterých oblastech bychom měli publikovat a uvítáme také vaše další podnětné myšlenky, o které jste ochotni se s námi podělit. Jako odborný redaktor Zoner Press vítám vaše názory. Můžete mi psát – poslat e-mail nebo dopis – a sdělit mi, co se vám v této knize líbilo, nebo nelíbilo, stejně tak, co bychom měli udělat, aby naše další knihy byly lepší. Pokud mi napíšete, nezapomeňte prosím připojit název knihy, ISBN, jméno autora, vaše jméno, telefon, fax nebo e-mail. Pozorně zhodnotím vaše názory a poskytnu je autorovi a redaktorům, kteří pracovali na této knize. Prosím, vězte, že nemohu pomoci s technickými problémy, které se týkají obsahu knihy, a že díky velkému množství e-mailů, které dostávám, nemohu zaručit odpověď na každou zprávu. E-mail:
[email protected] nebo
[email protected]. Adresa: Zoner Press, ZONER software, s.r.o., Miroslav Kučera, Nové sady 18, 602 00 Brno.
18