Open Source Linux: Web Programming

Author: Christopher A. Jones and Drew Batchelor
Publisher: M&T Books, an imprint of IDG Books Worldwide, Inc.
Price: $39.99 US
ISBN: 0-7645-4619-8
Reviewer: Daniel Lazenby
The ability to create easily maintained and easily updated web applications is crucial in today's fast-changing, browser-centric world. Rapidly changing business demands drive the need for rapid web site content updates/changes. Competing artistic factors supply a constant challenge to keep the web site's visual design interesting. Seldom does one individual possess all the talents required to meet each of these challenges. Open Source Linux: Web Programming addresses these types of challenges.
In this book, the reader is guided through an extensible and scalable web application development methodology. The tools used to carry out the methodology include Perl, CGI, HTML and XML. The recommended methodology is based on object-oriented and decoupled functionality concepts. By the time you reach the book's end, you will have developed and examined a series of web applications that apply each design concept or programming convention.
The authors assume the reader possesses at least an intermediate level of experience with computing and programming technologies. With this framework, the book states the concept to be applied or the task to be performed. The rationale for why each concept or task is important is also presented. What you will not find is a list of the steps required to perform the tasks. Extending what you learn to your own applications is where the intermediate to advanced experience comes in. What's presented will generally get you up and running. Other resources are required if you want more specific details.
The book is divided into two sections, “The Modern Internet Application” and “Going Beyond Today's Internet Model”. The first section (and majority of the book) is devoted to programming an Internet application. Each chapter opens with a few paragraphs on what you are going to build and why the way it will be built is important. Systems or functionality programmed in one chapter is often the foundation for systems or additional functionality presented in later chapters. For those who dislike typing, all program listings are available on the CD-ROM.
The first section opens with a quick review of distributed systems and an introduction to the Apache HTTP server. In the chapter titled “Using Perl to Implement CGI on Linux”, the authors present just enough Perl for the reader to understand the forthcoming application programs. A simple Perl-based CGI module that analyzes Apache logs is programmed in this section.
The “Separating Content and Logic with Objects” chapter further explores a modular and dynamic web site design. Decomposing application content, program and business logic and presentation into objects are discussed. Techniques presented facilitate coding an easily maintained site-wide look and feel. Here, “easily maintained” means a non-programmer can update content and change graphics. These designs and techniques result in coding a simple on-line catalog application.
The next three chapters focus on using XML. “Using HTML to Create Well-Structured Objects” walks one through basic XML syntax and structure. Writing XML-driven CGI scripts that translate XML to HTML is the focus of the “Handling XML with a CGI Application Server” chapter. The discussion on XML continues in “Creating a Client-Based Web Content Administrator”. This chapter concludes with the coding of a Perl, CGI, HTML and XML web content administrator application. This application enables a non-technical person to update web page content. All the concepts and coding techniques presented in these chapters may be put to use today.
In the book's second section, the authors pause to look a short distance into the future. They then close the book out with two very critical subjects. This section's opening chapter discusses limitations and issues related to the stateless transaction nature of HTTP and CGI. The authors offer a rationale for moving to a state-based transaction and an open-source XML application server.
Chapter 9, “Developing Java Applets on Linux”, presents Java basics through the construction of simple Java applets. Chapter 10, “Creating a Java/XML Web Application”, pulls together previously presented design principles and techniques to code a network chat and whiteboard application.
The last two chapters cover error handling and web deployment applications. Poor error handling can easily destroy the user's experience. Poor site deployment can ruin the user's experience and negatively impact the application's post-implementation performance and maintainability. An error-handling system is constructed in the “Bulletproofing Your Site with Error Handling” chapter. As in the previous projects, the authors begin by applying object-oriented concepts to the error-handling system. In this example, they decouple error messages from the error codes. Both objects are decoupled from the error handler and the actions to be taken upon an error situation. Nothing stresses an application, or its implementation, more than a real user. Next to the user, nothing can cripple a web site faster than coding techniques incompatible with the implementation strategy.
The chapter entitled “Deploying Your Linux Web Application” reviews how implementation decisions can reach back and negate application development and coding decisions. This chapter briefly discusses the need to consider various factors affecting throughput, scalability, system resource consumption and the need to avoid vendor-specific language extensions. General guidelines for identifying bottleneck and bandwidth problems are suggested.
By the time you reach the end of this book, you will have explored conceptual constructs, models and tools you can use to develop web sites. These sites should be easier to deploy, update and maintain. More importantly, web site content changes will not always require programming expertise to implement.
Daniel Lazenby (d.lazenby@worldnet.att.net) first encountered UNIX in 1983 and discovered Linux in 1994.
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
| Dynamic DNS—an Object Lesson in Problem Solving | May 21, 2013 |
| Using Salt Stack and Vagrant for Drupal Development | May 20, 2013 |
| Making Linux and Android Get Along (It's Not as Hard as It Sounds) | May 16, 2013 |
| Drupal Is a Framework: Why Everyone Needs to Understand This | May 15, 2013 |
| Home, My Backup Data Center | May 13, 2013 |
| Non-Linux FOSS: Seashore | May 10, 2013 |
- RSS Feeds
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- Dynamic DNS—an Object Lesson in Problem Solving
- New Products
- Validate an E-Mail Address with PHP, the Right Way
- Drupal Is a Framework: Why Everyone Needs to Understand This
- A Topic for Discussion - Open Source Feature-Richness?
- Download the Free Red Hat White Paper "Using an Open Source Framework to Catch the Bad Guy"
- Tech Tip: Really Simple HTTP Server with Python
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi

It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?




21 min ago
5 hours 34 min ago
8 hours 45 min ago
11 hours 1 min ago
11 hours 29 min ago
12 hours 27 min ago
13 hours 56 min ago
15 hours 5 min ago
15 hours 51 min ago
22 hours 27 min ago