Showing headlines posted by solrac
( 1 2 3 4 5 6 ... 31 ) Next »Mobile application developers: test 'in the wild' with DeviceAnywhere
Developing for a fragmented environment will always be a challenge, but few application environments are as fragmented as the mobile space. Whilst Apple's iPhone and iPad are stealing the bulk of the limelight, according to recent comScore figures, Apple has less than 10% of the total mobile market. Users are spread across Samsung, LG, Motorola, RIM, amongst other providers.
Porting Perl To Python
Porting legacy Perl to Python can be a daunting task. In this article, learn some of the theory behind dealing with legacy code, including what not to do.
Resizing Linux partitions, Part 1: Basics
If you follow common partitioning advice, chances are your disk uses several partitions. If you set the sizes incorrectly or if your needs change, you may find yourself needing to resize your partitions. To do so, you must familiarize yourself with the requirements for resizing partitions and the tools that can do the job. In many cases, resizing operations can proceed smoothly; however, numerous stumbling blocks can cause problems for the unwary, or even for those who take adequate precautions.
User space memory access from the Linux kernel
As the kernel and user space exist in different virtual address spaces, there are special considerations for moving data between them. Explore the ideas behind virtual address spaces and the kernel APIs for data movement to and from user space, and learn some of the other mapping techniques used to map memory.
High availability with the Linux Distributed Replicated Block Device
The 2.6.33 Linux kernel has introduced a useful new service called the Distributed Replicated Block Device (DRBD). This service mirrors an entire block device to another networked host during run time, permitting the development of high-availability clusters for block data. Explore the ideas behind the DRBD and its implementation in the Linux kernel.
Build an Android Twitter app using XML and JavaScript Object Notation
In this two-part article, explore techniques for handling two of the most common data formats used on the Internet—XML and JavaScript Object Notation (JSON)—on the Android platform. This first part covers the basics of XML and JSON and shows you how to build an Android application that parses and displays a Twitter status-update feed provided in both formats.
Gourmet Java technology for Android applications
This article covers some of the Android SDK tools for dealing with tricky situations. To develop Android applications, you will need the latest Android SDK which requires a Java Development Kit (JDK). I used Android 2.2 and JDK 1.6.0_17 (see Resources for links to these tools). It is not required that you have a physical device; all of the code in this article will run fine on the Android emulator that comes with the SDK. You should be familiar with Android programming as this article will not cover basic Android development, but you can probably follow along if you have knowledge of the Java programming language.
Using Internet data in Android applications
Many of your Android applications will need to interact with Internet data, which comes in a variety of formats. In this article, build an Android application that works with two popular data formats—XML and JavaScript Object Notation (JSON)—as well as the more exotic protocol buffers format from Google. You'll learn about the performance and coding trade-offs associated with each format.
Customizing MediaWiki the Wikipedia wiki Engine
MediaWiki is the popular wiki engine behind sites like Wikipedia. Its power and flexibility makes it an excellent choice for a community-driven knowledge base. The ease of developing various extensions for MediaWiki is one of the sources of this flexibility. This article will show you how to create different types of extensions for MediaWiki: wiki variables, special pages, and new tags. You'll also get a quick overview of what you'll need to do to create skins for MediaWiki.
Distributed data processing with Hadoop, Part 2: Going further
The first article in this series showed how to use Hadoop in a single-node cluster. This article continues with a more advanced setup that uses multiple nodes for parallel processing. It demonstrates the various node types required for multinode clusters and explores MapReduce functionality in a parallel environment. This article also digs into the management aspects of Hadoop—both command line and Web based.
Continuous integration with Buildbot
The days of cowboy coding are long gone at most organizations, replaced by a renewed interest in generating quality software. Continuous integration (CI) testing is a vital component in the practice of agile programming techniques that lead to high-quality software. Learn the theory and practice of CI testing by exploring Buildbot, an open source CI system written in Python.
Deep-protocol analysis of UNIX networks
Whether you are monitoring your network to identify performance issues, debugging an application, or have found an application on your network that you do not recognize, occasionally you need to look deep into the protocols being used on your UNIX® network to understand what they are doing. Some protocols are easy to identify and understand, even when used on non-standard ports. Others need more investigation to understand what they are doing and what information they are exchanging. In this article, we will take a look at techniques for performing detailed analysis of the protocols in use on your UNIX network.
The best-kept secrets of UNIX power users
If you're wondering why I'm wearing dark sunglasses, a fake moustache, and a baseball cap (featuring the logo of professional curling team, The Floating Stones), I'm on the lam. I'm dodging black remote-controlled helicopters, pasty-white systems administrators, and the combined forces of many daemons to bring you some of the best-kept secrets of UNIX® power users. Don your aluminum foil hat and read on.
Linux on 4KB-sector disks: Practical advice
Starting in December 2009, hard disk manufacturers began introducing disks that use 4096-byte sectors rather than the more common 512-byte sectors. Although this change is masked by firmware that breaks the 4096-byte physical sectors into 512-byte logical sectors for the benefit of the operating system, the use of larger physical sectors has implications for disk layout and system performance. This article examines these implications, including benchmark tests illustrating the likely real-world effects on some common Linux® file systems. As disks with 4096-byte sectors become more common throughout 2010 and beyond, strategies for coping with these new disks will become increasingly important.
The Virtualization Innovation Comparison of 2009 and 2010
Why is virtualization so important? The short answer is that virtualization enables businesses to lower their technology Total Cost of Ownership (TCO) while increasing their Return on Investment (ROI). This is done primarily through the multitude of server consolidation projects proliferating every organization's infrastructure in some fashion today. What do the top UNIX vendors have to offer with respect to virtualization? IBM offers PowerVM, formerly referred to as Advanced Power Virtualization, and has just released their POWER7 Systems, which alter the virtualization space (see What's on the horizon in 2010?). HP offers their Virtual Server Environment, which supports both their Integrity and HP9000 server base. Sun offers a new name, the xVM server, along with their mature container-based technology.
Open source software is no longer just for alpha-geeks
So you've got to cut costs, but you're not a manager. You're a software developer, or a power user, or just someone who needs to keep the bottom line healthy enough to support your salary. These are ideal situations for introducing open source software solutions into your environment. That might sound like you'll spend the next three weeks learning to program or write makefiles, but it's just not so. Read on and see how open source is a flexible, usable approach to efficiency in your work environment.
Transitioning to the new GRUB2 boot loader
To most people, boot loaders aren't the most exciting aspect of an operating system, but they are extraordinarily important. Without a functioning boot loader, nothing else works. Currently, a transition from the old Grand Unified Bootloader (GRUB) Legacy tool to the new GRUB 2 is underway. GRUB 2 is the default boot loader in Ubuntu 9.10, and it's an option in most other major Linux distributions. Sooner or later, other distributions will deploy GRUB 2 as the default boot loader.
Anatomy of Linux Kernel Shared Memory
Software engineering tends to be an evolutionary process. Problems are addressed with solutions that can create new problems and subsequently new solutions. Ideally, the new problems that are created justify the original solution. The technology discussed here is one of the secondary solutions to a problem created by server virtualization. Before delving into KSM, however, let's take a quick look at the original solution and how KSM is applied here and elsewhere.
Learn how to invoke Linux kernel function system calls
The Linux system call interface permits user-space applications to invoke functionality in the kernel, but what about invoking user-space applications from the kernel? Explore the usermode-helper API, and learn how to invoke user-space applications and manipulate their output.
CouchDB basics for PHP developers
If you're a typical PHP developer, it doesn't take a thorough review of past projects to pick out a telling pattern: In most (if not all) cases, you're probably getting PHP to talk to a database back end for all that dynamic data goodness; in 99 percent of those instances, you're using MySQL. Now, there's nothing wrong with using a relational database. If you're working with highly structured data with lots of relationships, it's the way to go. You can happily (or unhappily, depending on your familiarity and comfort with SQL) go through the process of working up schemas, normalizing data relations, setting up tables, and all the rest.