oreilly.comSafari Books Online.Conferences.


Topic: Programming

O'Reilly Network articles about this topic:

When Linux Runs Out of Memory (Linux DevCenter)
Memory is a precious commodity in computers. Generally the more you have, the better. Yet your application has to run alongside other applications, and each wants its own area of memory. What happens when there's not enough to go around? Mulyadi Santosa explores the memory management principles in the Linux kernel to explain how the Out of Memory killer works--and how to avoid it.

The Software of Space Exploration (
Free software advocates often appeal to the open discovery, disclosure, and discussion practices of modern science as justification for sharing information. As software becomes more valuable for scientific research, free and open source software continue to grow in popularity. David Boswell looks at some of the software used in space exploration and usable by armchair scientists.

Processing XML with Xerces and SAX (
It's rare to write an application these days and not run into the use of XML as a data interchange format. Perl, Java, Python, C#, Ruby, JavaScript, and PHP all have good XML processing libraries. Where's the love for C++ applications? It's in Xerces, a capable open source library. Ethan McCallum shows how to use Xerces and C++ to process, manipulate, search, and write valid XML with the event-based and memory-lean SAX processing model.

RMS: The GNU GPL Is Here to Stay (
Though some in the open source world claim that the GPL is now unnecessary, RMS and the Free Software Foundation are still working night and day to promote the idea of software freedom. Part of that is a revision to the popular GNU General Public License. Federico Biancuzzi recently chatted with Richard Stallman about the goals and plans and successes of the GPL.

Processing XML with Xerces and the DOM (
It's rare to write an application these days and not run into the use of XML as a data interchange format. Perl, Java, Python, C#, Ruby, JavaScript, and PHP all have good XML processing libraries. Where's the love for C++ applications? It's in Xerces, a capable and open source library. Ethan McCallum shows how to use Xerces and C++ to process, manipulate, search, and write valid XML.

Simplify Network Programming with libCURL (Linux DevCenter)
The curl command-line utility is a fantastic way to download data from all kinds of repositories via HTTP, FTP, LDAP, and more. It's not just a utility, though. The back-end library libCURL allows you to make your programs URL aware, publishing and retrieving data over HTTP and FTP. Ethan McCallum demonstrates how easy it is to use.

The Watchful Eye of FAM (Linux DevCenter)
If you've ever written code waiting for a file to appear or change, you've likely done the select/sleep loop dance. How'd you like to never again experience that? SGI's File Alteration Monitor API can help. Ethan McCallum demonstrates how to watch files and directories on Linux, Irix, and probably your other favorite, Unix.

Using Shared Memory from PHP (PHP DevCenter)
At some point, you'll need to communicate with another process. Unix systems support a powerful IPC mechanism called shared memory that you can use to share information between processes. Alexander Prohorenko explains the basic theory and demonstrates how to use it from PHP.

Open Source in Africa (
Open source software is good for the developing world. Not only is the price often right, but the openness offers nascent developers the chance to learn from their peers despite geographic and cultural distances. Kwindla Hultman Kramer recently attended the Africa Source conference, a gathering of free and open source software developers and fans. Here are his thoughts.

Porting Linux to the iPod (Linux DevCenter)
A new piece of unknown hardware is a challenge; what can it do? To Bernard Leach, Apple's iPod was just waiting for a Linux port. Thanks to his work, you can play music on an iPod running Linux. Howard Wen recently interviewed Leach on the goals and process of porting Linux to the iPod.

Building Unix Tools with Ruby (Linux DevCenter)
Unix command line tools should follow a few simple rules. They must do one thing well. They should conform to standard option conventions. They must be able to be part of a pipeline. Jacek Artymiak demonstrates a simple Unix CSV-parsing utility built in the Ruby programming language.

C++ Memory Management: From Fear to Triumph, Part 3 (Linux DevCenter)
George Belotsky eloquently explained Common C++ Memory Management Errors and C++ Memory Management Principes in two previous article. He concludes his series by exploring good memory management in C++.

C++ Memory Management: From Fear to Triumph, Part 2 (Linux DevCenter)
Half of wisdom is knowing what doesn't work. George Belotsky eloquently explained Common C++ Memory Management Errors in a previous article. This article explains design principles that will help you use C++ effectively and efficiently.

Running Arbitrary Scripts Under CVS (Linux DevCenter)
CVS includes several hooks to integrate with other tools, such as bug and project tracking. Jennifer Vesperman, author of the upcoming Essential CVS, demonstrates how to expand CVS to meet your needs, using Bugzilla as the example.

Using the Subversion Client API, Part 2 (Linux DevCenter)
Embedding version control into your application just got easier with the development of libsvn. A previous article introduced the Subversion client API. In part two of the series, Garrett Rooney explores the most useful functions for adding, merging, and changing versions within your application.

C++ Memory Management: From Fear to Triumph (Linux DevCenter)
With modern memory-managed languages, is there any reason to program in C or C++ anymore? George Belotsky says yes. Even a brilliant memory-management scheme may not fit your particular application. In the first of three articles, George examines common memory errors in C++.

Using the Subversion Client API, Part 1 (Linux DevCenter)
One of Subversion's subversive benefits is its modular nature. Adding version control to your application is as easy as embedding libsvn. Garrett Rooney explains the basics of the Subversion client API in the first of two articles.

Testing SMP Kernel Modules with UML (Linux DevCenter)
Code that works well on a single-processor box may fail spectacularly on a multiprocessor box. Until recently, the only way to test this was to use a two-, four-, or more-way machine. Not anymore! Jerry Cooperstein introduces UML (User Mode Linux) and demonstrates how to emulate a multiprocessor machine with it by testing kernel modules.

Multiuser Subversion (Apache DevCenter)
Your source code is too important to be left to chance. Having introduced Subversion, Rafael Garcia-Suarez demonstrates how to use it for multiuser, distributed projects. What can this modern, powerful source-control system do for you?

Single-User Subversion (Apache DevCenter)
Revision control isn't just for distributed, multi-developer teams. Rafael Garcia-Suarez introduces Subversion and explains how to use it for personal projects.

An Intro to Qt 3.0 (Linux DevCenter)
Cameron Laird gives a detailed overview of the new features in Qt 3.0 and explains how they benefit programmers.

Caching PHP Programs with PEAR (PHP DevCenter)
PHP scripts are compiled and HTML is generated each time a web page is requested. Sebastian Bergmann uses PEAR caching to store these dynamic requests and speed up PHP web sites.

Linux Compatibility on BSD for the PPC Platform: Part 5 (
In part five of his series on porting the Linux compatibility layer to NetBSD's PPC platform, Emmanuel Dreyfus looks at Linux emulation fixes needed to have a fully functional Linux gdb.

Introduction to Functions: Part 2 (PHP DevCenter)
John Coggeshall tackles some of the more difficult topics dealing with functions, including variable scope, static variables, and return values.

An Introduction to Functions, Part 1 (PHP DevCenter)
Functions allow you to re-use code to repeatedly perform a procedure. John Coggeshall introduces PHP functions.

Linux Compatibility on BSD for the PPC Platform: Part 4 (
Emmanuel Dreyfus explains difficulties discovered in porting the Linux compatibility layer to run the Java Virtual Machine.

Arrays in PHP: Part 2 (PHP DevCenter)
John Coggeshall introduces associative and multidimensional arrays. Although arrays can be complex and difficult concepts, this tutorial makes them easy to understand.

Bootstrapping the YOPY PDA (Linux DevCenter)
The consumer version of G.Mate's all-Linux YOPY PDA may be one of the most anticipated technology events since the delivery of Netscape 6. Will the YOPY be worth the wait, or has the Agenda VR and the Linux iPAQ stolen its thunder?

An Introduction to PEAR (PHP DevCenter)
Find yourself wishing PHP had an easy way to manage additional modules? Joao Prado Maia explains PEAR and shows how it fills this role.

Advanced PHP Variables and Functions (PHP DevCenter)
John Coggeshall explains how to use dynamic function and variable names, as well as variable-length argument lists passed to functions.

Linux Compatibility on BSD for the PPC Platform (
The Linux compatibility layer allows BSD to run Linux binary applications. Emmanuel Dreyfus explains how he implemented this on NetBSD for the PowerPC.

An Introduction to Extreme Programming (Linux DevCenter)
When you look at it closely, Extreme Programming isn't really as extreme as it is logical. This introduction shows you the tenets of XP and its relationship to open source methods for writing software.

Session Tracking: Part I (PHP DevCenter)
Session tracking allows you to create web pages that are individually customized for your reader. W.J. Gilmore explains how easy it is to track site visitors with PHP.

Advanced Control Structures (PHP DevCenter)
John Coggeshall introduces advanced control structures and techniques, including multi-conditional "if" statements and an introduction to the "for" statement.

Basic Control Structures (PHP DevCenter)
John Coggeshall covers the basics of program control structures, including conditional statements and looping using the if and while statements in PHP.

Introduction to Socket Programming with PHP (PHP DevCenter)
Daniel Solin uses a game analogy to show how PHP can be used to exchange data between two computers using network sockets.

Variable Manipulation and Output (PHP DevCenter)
John Coggeshall covers basic variable manipulation and output, including math operators and strings.

Basic PHP Syntax (PHP DevCenter)
John Coggeshall covers basic PHP syntax, including variable usage, variable types, and how to print variables to the web browser.

The Universal Web Form Processor (Databases DevCenter)
Urb LeJeune embarks on a quest to create the ultimate script to process forms from web pages.

Security Alerts: Twig, Midnight Commander, and More (Linux DevCenter)
Noel Davis summarizes published open source and Unix exploits. Problems this week include arbitrary code execution in Twig, new symlink attacks, a hidden control code attack on Midnight Commander, and a LANGUAGE attack on glibc.

PHP With HTML Forms (PHP DevCenter)
In part two of a series on using PHP and HTML forms, Urb LeJeune shows us how to create dynamic input fields such as radio buttons, check boxes, and drop menus.

Program Your Computer to See (Linux DevCenter)
Computer Vision is the science of reading images to extract meaningful data. Current CV uses include OCR, handwriting interpretation, gesture recognition, face tracking, and security. On Sept. 13th, Intel made its Open Source Computer Vision Library available for the Linux platform -- a move that should accelerate CV development. Chris Halsall introduces you to CV and its applications.

How the CamCal Program Works (Linux DevCenter)
Chris Halsall walks you through the CamCal set-up and calibration in this companion article to "Program Your Computer to See," which is an introduction to the science of Computer Vision.

Building a Black Hole With OpenGL (Linux DevCenter)
Our latest OpenGL tutorial shows you how to build mesmerizing black holes as stand alone entertainment or to incorporate into sophisticated games.

Eazel's Business Model (Linux DevCenter)
Even though Eazel is on the verge of launching a great software product, they're success may depend on the bundled services they'll offer.

Qt Attracting Interest Among Application Developers (General DevCenter)
An introduction to the Qt programming environment that you can use for Unix and Windows application development.

Visual Design With Qt (General DevCenter)
Qt Designer is a sophisticated, stable, and capable visual design tool for developers working in the Qt programming environment.

Boudewijn and Cameron Argue for Qt (General DevCenter)
A lively conversation among four developers debating the value of Qt vs. Gnome and MFC.

Crystal Space: 3D for Free (Linux DevCenter)
How is this Open Source 3D Graphics Engine challenging Quake's?

Using Standard Input and Output (Linux DevCenter)
A quick review of basic redirection techniques used by every Unix guru.

Checking Differences with diff (Linux DevCenter)
Quickly examine differences between similar files.

Comparing Three Different Versions with diff3 (Linux DevCenter)
Got three similar files to compare? Use diff3!

Context diffs (Linux DevCenter)
Context diffs show the lines around changes in similar files.

ex Scripts Built by diff (Linux DevCenter)
diff can build automatic editing scripts you can use to change multiple files or to store a revision history.

Looking for Closure (Linux DevCenter)
A gawk script that can be used to make sure items that need to occur in pairs actually do so.

Change Many Files by Editing Just One (Linux DevCenter)
Use ed and diff to edit mulitple files.

patch: Generalized Updating of Files that Differ (Linux DevCenter)
There's an easy way to make changes based on diffs, use Larry Wall's patch utility.

Other documents about this topic:

Below are other references available on the web for this topic. Since other sites may change their links, please if you find any that may need to be updated.

Python Programming for Beginners
Jacek Artymiak's article for the Linux Journal presents 17 python scripts for Linux users and administrators interested in what Python can do.

Developing GNOME Applications with Python (Part 1)
This Linux Focus article by Hilaire Fernandes shows you how to use Glade, a visual development tool for Gnome, with Python. The tool combination allows you to rapidly develop GUI Programs for Gnome.

KDE Bindings for Java
One of the most fascinating aspects of KDE is the speed with which new developments occur after each release. KDE 2.1 is out, and was celebrated in the traditional manner by adding lots of new features to the KDE development tree in CVS. One of the most exciting things to arrive was a very large commit to the kdebindings module (used for bindings between KDE's C++ code and other programing languages) which added bindings for the KDE and Qt libraries to the well known Java language. The author of the code, Richard Dale, does a Q&A with regarding this new addition to KDE. [Source:]

Linux Kernel Module Programming Guide
This guide is for programmers who want to write modules to extend the Linux OS. It covers the 2.2 kernel. In some respects, the author says he wants to help those people who want to begin to play with the kernel as a way to understanding how it works.

The Cathedral and The Bazaar
This well-known essay in many ways is responsible for defining Open Source development and gaining recognition for its merits. Raymond contrasts the Cathedral-style development model of closed or proprietary software development with the open, distributed development model that have grown up around Linux and other open source projects. Raymond believes that the open source software model produces better software because openness gives access to the software at an early stage and the more people who have that access, the better chance of rooting out problems. "The Cathedral and The Bazaar" was originally presented at the Linux Kongress in May 1997.

Linux Online Certification

Linux/Unix System Administration Certificate Series
Linux/Unix System Administration Certificate Series — This course series targets both beginning and intermediate Linux/Unix users who want to acquire advanced system administration skills, and to back those skills up with a Certificate from the University of Illinois Office of Continuing Education.

Enroll today!

Linux Resources
  • Linux Online
  • The Linux FAQ
  • Linux Kernel Archives
  • Kernel Traffic

  • Sponsored by: