did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9781861003010

Professional Linux Programming

by
  • ISBN13:

    9781861003010

  • ISBN10:

    1861003013

  • Format: Trade Paper
  • Copyright: 2000-09-01
  • Publisher: Springer-Verlag New York Inc

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

Purchase Benefits

  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $59.99 Save up to $15.00
  • Buy Used
    $44.99
    Add to Cart Free Shipping Icon Free Shipping

    USUALLY SHIPS IN 2-4 BUSINESS DAYS

Supplemental Materials

What is included with this book?

Summary

Matthews offers a revised edition of the bestselling Linux programming tutorial, which features code tested with the latest 2.2 kernel and tool version, and subject coverage updated and expanded.

Table of Contents

Introduction 1(1)
Welcome
1(1)
Who is This Book for?
1(1)
What's Covered in This Book?
2(3)
What You Need to Use This Book
5(1)
Source Code
5(1)
Conventions
5(2)
Application Design
7(26)
Overview
7(1)
Requirements Capture
8(2)
Development Models
10(2)
`Fast Track' Development
11(1)
Test Early, Test Often
12(1)
The DVD Store
12(7)
Initial Requirements
13(1)
Analyzing the User Requirements
14(5)
Statement of Requirements
19(3)
Use Cases
20(2)
Application Architecture
22(8)
Detailed Design
23(1)
Data Access Functions
24(1)
Member Functions
25(2)
Title Functions
27(1)
Disk Functions
28(1)
Rental Functions
28(2)
Reference Implementation
30(1)
Resources
30(1)
Summary
31(2)
CVS
33(32)
Tools for Linux
34(1)
Terminology
35(1)
The Repository
35(1)
Single User CVS Projects
36(9)
CVS Command Format
36(1)
Environment Variables
37(1)
Importing a New Project
37(2)
Starting Work on Our Project
39(1)
Checking Our Changes Against the Repository
40(2)
Updating the Repository with Our Changes
42(1)
Releasing the Project
43(1)
Reviewing Changes
43(1)
Adding and Removing Files from a Project
44(1)
Keyword Substitution
44(1)
Revisions, Tags and Branches
45(8)
Revisions
45(1)
Tags
45(3)
Branches
48(5)
Multi-user CVS
53(3)
Working Collaboratively
54(2)
Working with Watches
56(1)
More Fun with CVS
56(1)
Binary Files
56(1)
Correcting Bad Annotations
56(1)
Accessing CVS Across a Network
57(2)
GUI CVS Clients
59(1)
Resources
60(1)
Summary
61(4)
Databases
65(32)
Choosing a Database
66(1)
mSQL
66(1)
MySQL
66(1)
PostgreSQL
66(1)
Which is Right for Me?
67(1)
PostgreSQL
67(6)
Installation and Commissioning
68(1)
Creating Users
69(1)
Creating Databases
70(1)
Backing Up Databases
71(1)
Remote Access
71(2)
Database Fundamentals
73(6)
First Normal Form
73(1)
Second Normal Form
74(1)
Third Normal Form
74(1)
De-normalization
74(1)
A Simple Database
74(5)
Using psql
79(14)
Commands to psql
79(2)
Data Definition Commands
81(1)
Creating and Dropping Tables
81(4)
PostgreSQL Data Types
85(1)
Data Manipulation Commands
85(1)
Inserting Data
86(1)
Retrieving Data from a Single Table
87(1)
Retrieving Data Combined from Several Tables
88(2)
Updating Data in a Table
90(1)
Deleting Data
90(2)
Transactions
92(1)
Database Design Tips
93(2)
Resources
95(1)
Summary
95(2)
PostgreSQL Interfacing
97(40)
Accessing PostgreSQL from Code
97(31)
Libpq
98(1)
Database Connection Routines
99(1)
Executing SQL Statements
100(3)
Obtaining Results from Queries
103(14)
ECPG
117(10)
Which Method to Use?
127(1)
The Application
128(6)
Summary
134(3)
MySQL
137(34)
Installation and Commissioning
137(4)
Pre-compiled Packages
138(1)
Building from Source
139(1)
Post-install Configuration
140(1)
MySQL Administration
141(7)
Commands
141(1)
isamchk
142(1)
mysql
142(1)
mysqladmin
143(1)
mysqlbug
143(1)
mysqldump
143(1)
mysqlimport
144(1)
mysqlshow
144(1)
Creating Users, and Giving Them Permissions
145(1)
grant
145(1)
with grant
146(1)
revoke, delete
146(1)
Passwords
147(1)
Creating a Database
147(1)
SQL Support in PostgreSQL and MySQL
148(2)
Accessing MySQL Data from C
150(19)
Connection Routines
150(4)
Error Handling
154(1)
Executing SQL Statements
155(1)
SQL Statements That Return No Data
155(3)
Statements That Return Data
158(4)
Processing Returned Data
162(6)
Miscellaneous Functions
168(1)
Resources
169(1)
Summary
169(2)
Tackling Bugs
171(24)
Error Classes
171(1)
Reporting Errors
172(3)
Detecting Software Errors
175(1)
Types of Software Error
175(1)
Debug Statements
176(5)
Assertions
180(1)
Where Are You?
181(5)
Backtrace
184(2)
Preparing to Debug
186(5)
Using the Debugger
186(1)
Simple GDB Commands
187(4)
Other GDB Features
191(1)
Resources
191(1)
Summary
192(3)
LDAP Directory Services
195(36)
What is a Directory Service?
195(2)
X.500 and LDAP
196(1)
Structure of a Directory Server
197(7)
The Naming of Parts
198(1)
dn Naming
198(1)
x.500 Naming Scheme
198(1)
x.500 with Domains Naming Scheme
198(1)
Domain Component Naming Scheme
198(1)
Object Components
199(1)
Standard Types and Attributes
200(1)
LDAP Directory Tree
201(1)
LDIF Files
202(2)
Installing and Configuring an LDAP Server
204(3)
Steps in Installing OpenLDAP
204(1)
Configuring OpenLDAP
205(2)
Running the Server
207(1)
Accessing LDAP from C
208(13)
Initialize the LDAP Library
209(1)
Bind to the LDAP Server
209(1)
LDAP Error Handling
210(1)
A First LDAP Client Program
211(1)
Searching
212(1)
Selecting the Scope
212(1)
Filtering the Results
212(3)
Searching Using the API
215(6)
Sorting Returned Objects
221(1)
Changing the Data
221(7)
Adding a New Entry
221(4)
Modifying an Entry
225(2)
Deleting an Entry
227(1)
The Application
228(1)
Resources
228(1)
Summary
229(2)
GUI Programming with GTK+/GNOME
231(46)
The GTK+/GNOME libraries
232(2)
glib
232(1)
GTK+
233(1)
GDK
233(1)
Imlib
233(1)
ORBit
233(1)
libGnorba
233(1)
glib
234(8)
Types
234(1)
Macros
235(1)
Debugging macros
236(1)
String functions
237(2)
Memory Allocation
239(1)
Lists
240(2)
GTK+
242(7)
Widgets
242(1)
Widget Creation
242(1)
Containers
243(3)
Signals
246(1)
Showing, Sensitivity and Hiding
247(1)
Destruction
247(1)
gtk_init and gtk_main
248(1)
Example GTK+ Application
248(1)
GNOME Basics
249(13)
gnome_init
249(1)
GnomeApp
250(1)
Menus and Toolbars
250(2)
GnomeAppbar
252(2)
Dialogs
254(2)
Showing a GnomeDialog
256(2)
GnomeAbout
258(1)
GnomePropertyBox
258(2)
GnomeMessageBox
260(1)
Example GNOME Application
260(2)
The GNOME Source Tree
262(13)
configure.in
264(1)
Makefile.am
265(2)
Configuration Saving
267(1)
Session Management
268(1)
GnomeClient
269(2)
Command Line Parsing Using popt
271(3)
GNOME/GTK+ Resources
274(1)
Summary
275(2)
GUI Building with Glade and GTK+/GNOME
277(56)
Overview of Glade
278(1)
A Word on GUI Design
278(1)
A Glade Tutorial
279(15)
Main Window
280(1)
The Palette
281(3)
The Properties Window
284(3)
The Glade-built Source Tree
287(2)
lookup_widget
289(1)
Adding Code
289(3)
Libglade
292(2)
The DVD Store GNOME GUI
294(37)
Design
295(1)
Compiling and Running dvdstore
296(5)
Structure
301(1)
Code
302(1)
main.c
302(2)
callbacks.c
304(1)
member_dialog.c and title_dialog.c
305(4)
rent_dialog.c and return_dialog.c
309(6)
search window.c
315(10)
misc.c
325(6)
Summary
331(2)
Flex and Bison
333(40)
Input Structure
334(3)
Scanners and Parsers
335(1)
How Generators Work
336(1)
Scanners
337(12)
A Simple Scanner
337(1)
Scanner Specifications
338(4)
Longest Match Principle
342(1)
Regular Expressions
343(1)
Regular Expression Combination
344(1)
Actions
345(1)
Redirecting Scanner Input and Output
346(1)
Returning Tokens
347(1)
Context Sensitive Scanners
348(1)
Options to flex
348(1)
Parsers
349(20)
Generating Parsers
350(3)
Definitions
353(1)
Rules
354(1)
Additional Code
355(1)
Creating a Syntax Tester
356(3)
Token Types
359(1)
Actions in Rules
360(6)
Options to bison
366(1)
Conflicts in Grammars
367(1)
Arithmetic Expressions
368(1)
Resources
369(1)
Summary
370(3)
Testing Tools
373(36)
Testing Requirements Types
374(33)
Application Architecture
374(1)
Steps
375(1)
General Testing
375(1)
Regression Testing
376(2)
A Test Program
378(1)
Headers and Declarations
378(1)
main()
379(1)
show_result()
379(1)
APIs
380(3)
Testing the dvdstore Program
383(1)
Scripting Tests
383(1)
expect
384(1)
Memory Problems
385(1)
Static Memory
386(1)
The Stack
386(4)
Dynamic Memory
390(2)
Installing mpatrol
392(1)
Using mpatrol
392(5)
Testing Coverage
397(1)
Statement Coverage
397(1)
Branch and Data Coverage
398(1)
GCOV - a Statement Coverage Tool
399(6)
Performance Testing
405(2)
Summary
407(2)
Secure Programming
409(40)
What is Secure Programming?
409(1)
Why Secure Programming is Hard
410(36)
Stealthy Bugs
410(1)
The Virtue of Paranoia
411(1)
Filesystem Security
412(1)
The Standard Permissions
412(1)
The Sticky Bit
413(1)
Setuid and Setgid Attributes
413(1)
Using Setuid and Setgid Safely
414(1)
Authenticating Users
415(1)
Traditional Authentication on UNIX
415(1)
PAM - Pluggable Authentication Modules
416(4)
Registering Callbacks
420(5)
Managing Privileges
425(2)
Strategies for Managing Privilege
427(1)
Using Cryptography Securely
428(2)
Some Common Techniques
430(1)
Random Number Generation on Linux
431(1)
Key Management
432(1)
Secure Network Programming
433(1)
Writing Protocols
433(1)
Use Standards Where Possible
434(1)
Firewall Friendliness
434(1)
Web Application Security Issues
435(1)
Session Management Issues
435(2)
Standard Network Cryptography Tools
437(1)
General Security Tips and Techniques
438(1)
Problems with the Environment
438(1)
Special Environment Variables
439(1)
IFS
439(3)
Language-specific Issues
442(2)
Error Checking and Exceptions
444(1)
Perl
444(1)
Setuid/Setgid Perl Scripts
444(1)
Python
445(1)
PHP
445(1)
Summary
446(3)
GUI Programming with KDE/Qt
449(28)
Introduction
449(4)
About Qt
449(1)
About KDE
450(1)
Installing Qt
451(1)
Installing KDE
452(1)
Libraries
452(1)
Programming Applications Using Qt
453(14)
Getting Started: Hello World
453(2)
Simplifying Makefile Management with tmake
455(1)
Signals and Slots
455(3)
`Hello World' Revisited
458(1)
Deriving From Base Classes
459(2)
Widgets
461(1)
Layouts
462(5)
Programming Applications Using KDE
467(7)
A Simple Text Editor
467(7)
Resources
474(1)
Summary
475(2)
Writing the DVD Store GUI Using KDE/Qt
477(32)
Application Design
478(3)
Main Window
481(1)
Menu Items
482(1)
Toolbar
483(1)
Central Widget
484(1)
Transaction Log
485(1)
Member Dialog
486(3)
Rent Dialog
489(1)
Rent List
490(1)
Rental Report Dialog
491(1)
Search Window
492(1)
DVD Search Page
493(2)
Member Search Page
495(2)
Disk Search Page
497(1)
The Settings Manager
498(2)
Adjusting the Code to KDE
500(5)
KConfig and SettingsManager
505(1)
Resources
505(1)
Summary
506(3)
Python
509(42)
Introduction
509(5)
Features
510(1)
Very High Level Language (VHLL)
510(1)
Interpreted
511(1)
Clean, Simple and Powerful Syntax
511(1)
Object Oriented
512(1)
Dynamic Typing
512(1)
Large Standard Library
512(1)
Multiplatform
512(1)
Multiple Implementations
512(1)
Scalable
512(1)
Open-Source
513(1)
Fun!
513(1)
Python: The Right Tool for the Job
513(1)
...But Not Every Job!
513(1)
Installing Python
514(2)
Running Python
516(2)
The Interactive Interpreter
516(1)
Command Argument
517(1)
Script Argument
517(1)
`Standalone' Executable
517(1)
The Details
518(24)
Interpreter and Byte-compilation
518(1)
Comment Syntax
518(1)
Case Sensitivity
519(1)
Built-in Data Types and Operators
519(1)
None
519(1)
Integers
519(3)
Long Integers
522(1)
Floating Point Numbers
523(1)
Complex Numbers
523(1)
Lists
524(2)
Strings
526(1)
Tuples
527(1)
Dictionaries
528(1)
Variables
529(1)
Block Structure Syntax
529(1)
Statement Syntax
530(1)
Expression Statements
530(1)
Assignment
531(1)
Simple Statements
531(2)
Compound Statements
533(3)
Functions
536(2)
Built-in Functions
538(1)
Namespaces
538(1)
Modules and Packages
538(1)
Some Modules from the Standard Distribution
539(1)
Classes and Objects
539(1)
Methods
540(1)
Self
540(1)
Inheritance
540(1)
Special Methods
541(1)
Extending Python
542(1)
An Example Program: Penny Pinching
542(6)
Online Resources
548(1)
Summary
549(2)
Creating Web Interfaces with PHP
551(36)
PHP and Server-side Scripting
552(2)
Server-side Scripting
552(1)
CGI Scripts
552(1)
Active Server Pages
552(1)
Java Server Pages and Servlets
552(1)
PHP Scripting
552(1)
PHP Capabilities
553(1)
Installing and Configuring PHP
554(6)
Building and Installing PHP as a CGI Interpreter
555(1)
Building and Installing PHP with Apache as an Apache Module
556(1)
Installing PHP from an RPM
557(1)
Configuring PHP
558(2)
Introducing PHP Syntax
560(5)
Variables, Constants and Data Types
560(1)
Operators in PHP
561(1)
Arithmetic Operators
561(1)
Comparison Operators
561(1)
Logical Operators
562(1)
Various Other Operators
562(1)
Statements
562(1)
Functions
563(1)
Arrays
564(1)
Using PHP with the DVD Project
565(2)
HTTP, HTML and PHP
565(2)
Application
567(17)
Login
567(1)
Reservation Status
567(1)
Search for Titles
567(1)
Reserve Titles
568(1)
Cancellation
568(1)
dvdstorefunctions.php
568(1)
dvd_open_db()
568(1)
dvd_err_text()
569(1)
dvd_close_db()
569(1)
dvd_member_get()
569(1)
dvd_member_search()
570(1)
dvd_title_get()
570(1)
dvd_title_search()
571(1)
dvd_title_available()
572(1)
dvd_reserve_title()
572(1)
dvd_reserve_title_cancel()
573(1)
dvd_reserve_title_query_by_member()
573(1)
dvd_begin_transaction()
574(1)
dvd_commit_transaction()
574(1)
dvdstorecommon.php
574(1)
GenerateLoginForm()
575(1)
GenerateHTMLHeader()
575(1)
DisplayErrorMessage()
575(1)
DisplaySearchMenu()
576(1)
DisplayUserMenu()
576(1)
DisplayDVDDetails()
576(1)
GetReserveDate()
577(1)
dvdstorelogin.php
577(3)
dvdstoresearch.php
580(1)
dvdstorestatus.php
581(1)
dvdstorecancel.php
582(1)
dvdstorereserve.php
583(1)
Resources
584(1)
Summary
584(3)
Embedding and Extending Python with C/C++
587(66)
Extending Python with a C/C++ Extension Module
588(1)
Embedding Python in a Host Program
588(1)
Developing Extension Modules in C/C++
589(28)
Required Software Tools
589(1)
Python Interpreter
589(1)
Python Development Libraries
589(1)
SWIG - Simplified Wrapper Interface Generator
589(1)
Extending Python Using SWIG
590(1)
Simple Functions
591(2)
Compiling and Testing a SWIG-generated Wrapper File
593(1)
Testing the Extension Module
594(1)
Accessing Arrays Using SWIG Pointers
595(1)
Adding Virtual Methods to Structures
596(1)
Raising and Handling Exceptions Using Typemaps
597(5)
Creating New Object Types with SWIG
602(15)
Extending Python Using the C API
617(17)
Python Object Types
617(1)
Reference Counting and Ownership
618(1)
Overview of Developing C Extension Modules
619(1)
Extension Module Structure
619(1)
The init Function
619(1)
Simple Functions
620(2)
A Slightly More Complex Function
622(1)
The Global Interpreter Lock
623(1)
Creating New Python Object Types
623(2)
The Minimum Object Type
625(2)
Supporting getattr
627(1)
Supporting setattr
628(1)
Supporting Method Calls
629(2)
Object Initialization
631(1)
Encapsulating C++ Objects Using the C API
631(3)
Embedding Python in C/C++ Programs
634(17)
The Embedding Development Environment
634(1)
Embedding Python Using High-level Functions
635(2)
Statically Linking a Host Program to an Extension Module
637(2)
Embedding Python Using Lower-level Calls
639(1)
Executing Strings
639(1)
Overriding Built-in Python Functions
640(1)
Calling Python Functions
641(2)
Instantiating a Python Instance and Calling an Instance Method
643(1)
Multi-threading
644(1)
tdemo.c
645(6)
General Suggestions
651(1)
Resources
651(1)
Summary
651(2)
Remote Procedure Calls
653(40)
Overview
653(1)
A Simple Networked DVD Store Database
654(8)
BSD Sockets
654(1)
Simple Socket Server
655(3)
Simple Socket Client
658(2)
Coding Issues Using the BSD Socket Interface
660(1)
ONC RPC Architecture and Concepts.
660(1)
Datagram (Connectionless) or Stream (Connection-oriented)
661(1)
eXtended Data Representation (XDR).
661(1)
Why Use RPC in the DVD Store Application?
662(1)
RPC Tools and Utilities
662(3)
rpcgen - the RPC Protocol Compiler
663(1)
Structure of the RPC Protocol Definition File
663(1)
portmap - Port Address to RPC Program Number Mapper
664(1)
rpcinfo - Query for RPC Information
664(1)
Applying RPCs to the DVD Store
665(19)
Functions Without Arguments or Return Types
666(9)
Functions With Simple Arguments and Simple Return Types
675(1)
More Complex Examples
676(4)
Returning Arrays
680(4)
Client Timeouts
684(1)
Authentication
684(4)
AUTH_NONE
685(1)
AUTH_UNIX
685(1)
Client Side Authentication Support
685(1)
Server Side Authentication Support
686(2)
Using RPC Servers with /etc/inetd.conf
688(1)
Other Methods to Simplify Network Programming
689(1)
Resources
690(1)
Summary
691(2)
Multimedia and Linux
693(30)
The Current State of Affairs
693(1)
Program Integration
694(1)
Sound
695(21)
Devices
695(2)
Handling Standard Audio Formats
697(1)
Uncompressed Audio - Raw
697(1)
Compressed Audio
698(1)
WAV
698(1)
AIFF
699(1)
Converting Between Audio Formats - sox
699(1)
Do It Yourself
699(1)
/sys/soundcard.h
699(1)
soundtest.c
700(2)
Determining the Capabilities of the Soundcard Device
702(2)
Capabilities of the Device
704(1)
Supported Formats
705(2)
Soundtest - Putting It All Together
707(5)
Playing Actual Sound Data
712(3)
Cleaning Up
715(1)
Moving Pictures
716(3)
Software Players
716(1)
xanim
716(1)
RealPlayer
717(1)
Other Formats
717(1)
Hardware Players
717(1)
Hybrids
717(1)
OMS - the Open Media System
717(2)
Political and Legal Issues
719(1)
References
720(1)
Summary
721(2)
CORBA
723(36)
Interface Definition Language (IDL)
724(1)
Object Request Broker (ORB)
724(1)
Interoperable Object Reference (IOR)
724(1)
Object Adapter
725(1)
Servers
725(1)
Naming and Trading Services
726(1)
Evaluating CORBA
726(1)
CORBA and RPC
727(1)
CORBA and Sockets
728(1)
Systems Similar to CORBA
729(2)
DCOM or COM+
729(1)
Java Remote Method Invocation (RMI)
729(1)
Enterprise JavaBeans
730(1)
IBM MQSeries
730(1)
SOAP
730(1)
IDL: Defining Interfaces
731(12)
Modules
731(1)
Pitfalls
732(1)
Interfaces
732(1)
Basic Data Types
733(1)
Template Types
734(1)
Sequences
734(1)
Strings and Wstrings
734(1)
Fixed
734(1)
Constructed Data Types
735(1)
Operations
736(1)
Exceptions
737(1)
Attributes
738(1)
Example DVD Application
739(4)
Language Mappings
743(7)
Language Mapping Components
744(1)
C Mappings
744(1)
Basic IDL Data Type Mappings
744(1)
Constructed and Template Data Types
745(3)
Constant References
748(1)
Invoking Operations
748(1)
Exception Handling
749(1)
An Introductory Example: A Simple Messaging System
750(6)
Simple Messaging
750(1)
Using ORBit with the IDL
751(1)
The Message Client
751(3)
The Message Server
754(1)
Compiling the ORBit Application
754(1)
Running The Message Application
755(1)
Resources
756(1)
Summary
757(2)
Implementing CORBA with ORBit
759(34)
Using CORBA for the DVD Store Application
760(18)
The DVD Client
760(1)
The DVD Server
760(1)
A Logging Server
761(1)
Validation Server
761(1)
Client Code
761(1)
Log Server
762(1)
DVD Server
763(9)
Mapping the C API to the CORBA Operators
772(5)
Putting It All Together
777(1)
Using libgnorba
778(1)
Configuring ORBit for Multi Host Use
779(1)
GOAD - GNOME Object Activation Directory
780(1)
The Use of CORBA in GNOME
780(1)
Advanced CORBA Functionality
781(9)
Dynamic Interface Invocation
781(1)
CORBAServices
782(1)
Naming Service
782(1)
Trading Service
782(1)
Event Service
783(1)
Notification Service
783(1)
Concurrency Control Service
783(1)
Messaging Service
783(1)
Time Service
783(1)
Life Cycle Service
783(1)
Relationship Service
784(1)
Persistence Service
784(1)
Transaction Service
784(1)
Security Service
784(1)
Externalization Service
785(1)
Object Properties Service
785(1)
Object Query Service
785(1)
Licensing Service
785(1)
CORBAFacilities
786(1)
Designing and Running Scalable CORBA Services
786(1)
Managing Concurrency
787(1)
Threading
787(1)
Multiple Dispatch
787(1)
Asynchronous Processing and Callbacks
787(1)
Managing Robustness
788(1)
System Management Interfaces
789(1)
Resources
790(1)
Summary
790(3)
Diskless Systems
793(22)
A Little History
794(1)
What, No Disk?
795(1)
Why Go Diskless?
795(1)
How Does It Work?
796(5)
Starting a Diskless System
797(1)
Network Identification for Diskless Systems
798(1)
Running an Operating System
799(2)
Server Configuration
801(2)
Boot Image Creation
803(1)
Diskless Linux Kernel
804(3)
Root File Systems
807(3)
Problems
810(1)
Client Applications
811(1)
Summary
812(3)
XML and libxml
815(36)
XML Document Structure
817(9)
XML Syntax
817(1)
Well-formed XML
817(1)
Sections
818(1)
Elements
818(2)
Element Nesting
820(1)
Comments
821(1)
Valid XML
821(1)
DTDs
822(1)
Defining a DTD
822(3)
Schemas
825(1)
Relating a DTD to an XML Document
825(1)
XML Parsing
826(21)
DOM
826(1)
SAX
826(1)
libXML a.k.a. gnome-xml
827(1)
Creating and Calling the Parser
828(3)
Document Information
831(1)
Using Callbacks
831(5)
A Callback Example
836(3)
Maintaining State
839(1)
The Complete Parser
840(7)
Resources
847(1)
Summary
848(3)
Beowulf Clusters
851(38)
Hardware Setup
852(1)
Software Configuration
852(1)
Programming a Beowulf Cluster
853(1)
Programming Using MPI
853(28)
The Basic Functionality of an MPI Program
855(1)
Compiling and Executing a Simple MPI Program
856(1)
A Distributed MP3 Encoder
857(2)
Communication Performance of a Beowulf Cluster
859(4)
A Review of Advanced Features of MPI
863(1)
Point-to-point Communication Primitives
863(2)
User Defined Data Types
865(2)
Collective Operations
867(3)
Barrier
870(1)
Some MPI Programming Examples:
871(1)
A Program to Compute Pi
871(2)
Computation of the Mandelbroat Set
873(4)
Matrix Transpose
877(4)
Programming with PVM
881(6)
Comparison with MPI
881(1)
Obtaining and Installing PVM
882(1)
A Review of PVM Library Routines
882(2)
A Sample PVM Program
884(2)
Compiling and Executing a PVM Program on a Beowulf Cluster
886(1)
Resources
887(1)
Summary
887(2)
Documentation
889(36)
Defining the Audience
890(1)
End User Documentation: GUIs
890(4)
Documenting GUIs Running on the Local Machine
890(3)
Documenting Web GUIs
893(1)
Power User/System Administrator Documentation
894(12)
Command-line Options: Providing-help
894(1)
Manual Pages
895(1)
Keeping Things Manageable
896(4)
Fonts
900(1)
Paragraphs
900(1)
Tables
900(3)
Writing Manual Pages for APIs
903(1)
Next Generation Manpages - info Files
904(2)
It's All About Structure: From Single Program to Distributed Systems
906(1)
Documentation Tools
906(8)
Old, But Still Going Strong: TeX, LaTeX
907(3)
A New Breed: HTML, XML, and DocBook
910(4)
Painting the Big Picture: HOWTO and FAQ Files
914(1)
Developer Documentation
914(9)
Perl's 'pod' Method
915(1)
Literary Programming
916(5)
Lightweight Literary Programming
921(1)
Document Interchange
921(1)
PDF Files
922(1)
Summary
923(2)
Device Drivers
925(32)
Execution Context
926(1)
Module and Initialization Code
926(1)
Linker Sections
927(2)
Example Module Code
928(1)
PCI Devices and Drivers
929(1)
struct pci_dev
929(1)
Finding PCI Devices
930(1)
Manual Scanning
930(1)
PCI Drivers
931(1)
PCI Access Functions
932(1)
Resource Allocation
933(1)
Interrupt Handlers
934(1)
Applicom Module PCI Driver Code
935(2)
Access to User Space Memory
937(1)
The kiobuf Architecture
938(2)
Applicom kiobuf Code
940(2)
Locking Primitives
942(1)
Semaphores
942(1)
Spinlocks
943(1)
The Big Kernel Lock
943
PCI Devices and Drivers (continued)
929(23)
Scheduling and Wait Queues
944(1)
schedule()
944(1)
set_current_state()
944(1)
schedule_timeout()
944(1)
wake_up()
945(1)
add_wait_queue()
945(1)
remove_wait_queue()
946(1)
sleep_on() and Race Conditions
946(1)
Back to the Applicom Card
947(1)
Module Use Counts
948(2)
Making It Build
950(1)
Adding Configuration Options
950(1)
Makefiles
951(1)
What to Do with Your New Driver
952(2)
Submitting a New Driver
953(1)
Summary
954(3)
Distributing the Application
957(30)
RPM Packages
959(12)
The RPM User
959(1)
What Do I Have Installed?
960(1)
The RPM Database
960(1)
What's in a Package?
961(1)
Removing a Package
961(1)
Package Status
962(1)
Installing Packages
963(1)
Upgrading a Package
964(1)
Graphical Installers
964(1)
Checking Dependencies
964(2)
Overriding Dependencies
966(1)
Other Options
966(2)
Uninstalled Packages
968(1)
Anatomy of an RPM Package
969(1)
Source Packages
970(1)
configure, autoconf and automake
971(5)
Source RPM Packages
975(1)
Building an RPM Package
976(4)
Patches
980(3)
Making a Patch
981(2)
Applying a Patch
983(1)
GNATS
983(1)
Summary
984(3)
Internationalization
987(56)
I18N Terminology
989(1)
Isn't Unicode the Answer?
989(6)
Unicode
990(1)
What It Is...
990(4)
...What It Can Do...
994(1)
...and What It Can't Do
994(1)
The Character Encoding Problem
995(8)
ISO 2022: Extension Techniques for Coded Character Sets
995(2)
Programming with Unicode
997(6)
I18N Models and the System Environment
1003(5)
The POSIX Locale Model
1003(3)
The X/Open Portability Guide (XPG)
1006(1)
GNU libc Extensions to the POSIX and X/Open Models
1007(1)
Output Formatting and Input Processing
1008(5)
The X Window System
1009(1)
Formatted Output
1009(1)
User Input
1010(3)
Practical Considerations of I18N Programming
1013(23)
I18N and Internal Text Processing
1014(1)
Programming with Locales
1015(11)
I18N and Xlib Programming
1026(8)
I18N and Linux GUIs
1034(1)
Status of I18N for Linux Software Development
1035(1)
I18N in Real Software Development Projects
1036(7)
Object Oriented Programming and I18N
1036(1)
Application Builders and I18N
1037(2)
Where Next for Linux I18N?
1039(1)
Annotated References
1039(4)
Appendix A: GTK+/GNOME Object Reference 1043(38)
GTK+ Widgets and Functions
1043(27)
GtkButton
1043(1)
GtkCheckButton
1044(1)
GtkCList
1044(7)
GtkCombo
1051(1)
GtkEntry
1052(2)
GtkFrame
1054(1)
GtkHBox
1054(1)
GtkHButtonBox
1054(1)
GtkHSeparator
1055(1)
GtkLabel
1055(1)
GtkMenu
1056(1)
GtkMenuBar
1057(1)
GtkMenultem
1058(1)
GtkNotebook
1059(3)
GtkOptionMenu
1062(1)
GtkPixmapMenultem
1063(1)
GtkScrolledWindow
1063(2)
GtkSpinButton
1065(2)
GtkTable
1067(1)
GtkText
1068(1)
GtkVBox
1069(1)
GtkWindow
1069(1)
GNOME Widgets and Functions
1070(9)
GnomeAbout
1070(1)
GnomeApp
1070(2)
GnomeAppBar
1072(1)
GnomeDateEdit
1073(1)
GnomeDialog
1073(2)
GnomeDock
1075(1)
GnomeDockItem
1076(1)
GnomeEntry
1077(1)
GnomePropertyBox
1078(1)
References
1079(2)
Appendix B: The DVD Store RPC Protocol Definition 1081(8)
Appendix C: Open Source Licenses 1089(22)
The GNU General Public License
1089(6)
The Lesser GNU Public License
1095(7)
The GNU Free Documentation License
1102(6)
The Q Public License
1108(3)
Appendix D: Support, Errata, and P2P.Wrox.Com 1111

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program