O'Reilly Network articles about this topic:
When Linux Runs Out of Memory
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
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
Simplify Network Programming with libCURL
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
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
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
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
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
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
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
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
Embedding version control into your application just got easier with the development of
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
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
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
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.
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?
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
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 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
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
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
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
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
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
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
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
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
John Coggeshall introduces advanced control structures and techniques, including multi-conditional "if" statements and an introduction to the "for" statement.
Basic Control Structures
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
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
John Coggeshall covers basic variable manipulation and output, including math operators and strings.
Basic PHP Syntax
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
Urb LeJeune embarks on a quest to create the ultimate script to process forms from web pages.
Security Alerts: Twig, Midnight Commander, and More
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
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
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
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
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
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
An introduction to the Qt programming environment that you can use for Unix and Windows application development.
Visual Design With Qt
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
A lively conversation among four developers debating the value of Qt vs. Gnome and MFC.
Crystal Space: 3D for Free
How is this Open Source 3D Graphics Engine challenging Quake's?
Using Standard Input and Output
A quick review of basic redirection techniques used by every Unix guru.
Checking Differences with diff
Quickly examine differences between similar files.
Comparing Three Different Versions with diff3
Got three similar files to compare? Use diff3!
Context diffs show the lines around changes in similar files.
ex Scripts Built by diff
diff can build automatic editing scripts you can use to change multiple files or to store a revision history.
Looking for Closure
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
Use ed and diff to edit mulitple files.
patch: Generalized Updating of Files that Differ
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 KDE.org regarding this new addition to KDE. [Source: kde.org]
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.