Librenix
Headlines | Linux | Apps | Coding | BSD | Admin | News
Information for Linux System Administration 

Java J2EE Tutorial: Secret Santa Web Application

Up
vote
Down

In the spirit of the season, Santa's helper Merlin Hughes, who doubles in real life as a Java developer, presents the design and implementation of a J2EE-based secret Santa Web application, along with a discussion of the tools and technologies that can be used to ease the development of such applications. The articles provide a broad overview of how to build a J2EE application from the ground up, using some modern tools and frameworks, with details of how these different technologies work together to produce the end result. While not intended as detailed treatises on any individual technology, these articles instead serve as guides to developing a Web application with J2EE. This first article focuses on the beans, their design and implementation, and the use of XDoclet to accelerate their development and deployment.

Part 1: The beans
Part 2: The controller
Part 3: The view read more...
mail this link | permapage | score:8993 | -solrac, December 19, 2003

The Real Microsoft Monopoly

Up
vote
Down

The courts have ruled that Microsoft holds a monopoly position in Intel PC Operating Systems. Business users have long been aware of Microsoft's lock on office productivity applications that require them to use MS Office in order to remain compatible with their business partners and customers. And web-surfing users are now using Internet Explorer in a ratio of about 8:1 over alternative browsers.

But one aspect of Microsoft's monopoly is more fundamental than any of those; the investment in skill, experience, training, and tools of Windows software developers themselves.

Those programmers, who have logged many long sessions of coding for the Windows environments, and with their deep immersion in its assumptions, tools, and API's, represent millions of person-years of Microsoft assets.

For years it has been a difficult decision for a professional developer to choose an environment other than Windows. The scale of that market dwarfs its competitors and opens to developers many more specialty markets than any alternative platform. Further, the sheer size of the Windows installed base is seen as a hedge against market change. Windows is perceived as a platform that will be with us for a long time to come.

Because it can take years of effort to reach the highest levels of productivity in a complex development environment, Windows-specialized programmers have, through economic necessity, been unable to switch to a different platform. With a large majority of developers writing code for Windows, the continued dominance of Windows applications was also assured. The monopoly was elegantly self-perpetuating.

Many companies, failing to appreciate the depth of Microsoft's monopoly and its determination to defend it, squandered valuable resources probing Microsoft's markets for an opportunity. After several spectacular failures, it seemed nearly impossible for such a locked market to break free of this cycle.

It seemed impossible, that is, until recently. Windows is no longer leading the growth curve among operating systems. The near perfect seal at the margins of the monopoly, it turns out, is only effective against competitors with a requirement to make money.

While Microsoft once made the fending off of mighty IBM look easy, the Linux phenomenon presents a very different kind of challenge. It needs no profits, corporate partnerships, or investors in order to succeed. Linux depends only on hobbyists' passion for programming and their self-imposed standards of quality in their own work. Further, the Linux community seems to draw motivation from its dissatisfaction with the computing landscape that Microsoft has created.

This noncorporate juggernaut has grown so large that it is spilling into commercial markets on many fronts. Now, with the additional support of several large corporations, the expansion rate of Linux could actually accelerate.

Much of the continued growth of Linux will come at the expense of Microsoft. Others will lose business along the way, of course, but the ubiquitous presense of Microsoft astride the market presents many targets that are simply too broad to miss.

Unfortunately for Windows programmers, at some point the rapid growth of Linux will force the saturated Windows market to start shrinking. Soon thereafter, the seller's market for Windows programming services will become a buyer's market -- and pay scales will begin to drop. Although the computer industry has experienced many of these disruptions in the past as new competition entered the market, this will be the largest such contraction by far.

Confidence in the impenetrable market lock of MS Windows is slowly fading. Some years from now when this trend reversal is complete and documented, we will look back to a single turning point to call the end of Windows' dominance. I'm making my pick a little prematurely. I think the critical point was IBM's decision to support and invest heavily in Linux.
mail this link | permapage | score:8987 | -Ray, July 9, 2001 (Updated: April 18, 2007)

Space Tyrant: A threaded game server project in C

Up
vote
Down

[Update, June 25, 2005: A Space Tyrant home page has been created as a central index to the various ST articles, links, and files.]

[Update, March 21, 2007: A Space Tyrant has its own website! It's small but growing and will provide quick access to the latest code and developments in the ST universe.]

Space Tyrant: Today we kick off a new multithreaded, network socket programming project which we will call Space Tyrant. Our mission is to write an open source, multiplayer, networked, strategy game in the C programming language. The goal of this project is to make a solid code base which implements a simple space trading game upon which other games can then be built. The game will be a subset of The Last Resort (TLR) that currently runs at [offline]. This project will be a learning exercise for me as well as for any interested readers. The current state of the source code will be released with each article update.

The game design: While my TLR game consists of over 25,000 lines of C source code and supports a web interface as well as telnet and a graphical client, this code will be far smaller and simpler. It will initially only support telnet and will implement a far simpler game design.

Players will be able to telnet into the game, create an account, and play in a universe that contains ports, planets, as well as other players. Each player will be issued a starship, some cargo holds, and an amount of starship fuel. Additional fuel will be issued hourly and will accumulate in the starship. Fuel will be used to move the ship between sectors -- locations within the game universe -- and to dock with ports. Once a ship runs out of fuel it can't move at all until new fuel is issued.

Players will be able to buy and sell commodities (Iron, alcohol, and hardware) between the three different kinds of ports. Each port type will sell one of the three commodities and buy the other two. Prices will be based on supply and demand with rarely-used ports offering the better prices.

With the money players earn trading they will be able to buy more cargo holds to make their ships more efficient for trading. They will also be able to buy fighters -- small military drones -- that can be used to attack other ships or deployed to guard a sector and its contents. The fighters carried with a ship will guard it against attacks from other players.

Games will run for a predetermined length of time, then reset and start anew.

The programming model: Now, on to the software design. I've compared and considered various models for the server design. TLR is based on the forking model using inetd or xinetd to handle the listening and forking. While the forking model is inherently distributable to multiple processors, it introduces inefficiencies (forking multiple processes) and makes interprocess communications more difficult and slower.

Next, I considered a non-blocking, single process model. In this approach, one process handles everything in a single thread. It would use non-blocking IO (read and write functions that never wait for completion but, rather, return immediately if they aren't ready to read or write actual data). The thttpd web server is an example of a non-blocking, single process server. It's extremely fast and efficient. However, this model is quite complicated to code, and, I believe would make it more likely to introduce subtle timing bugs.

Next, I considered a pure multithreaded, single process model with a thread for each player. While appealing in many ways, this model would require the same kind of coordination between threads that the forking model requires between processes. Such interprocess communication would be simplified in that the various threads share memory, but the coordination issues otherwise remain the same.

Last, I considered another multithreaded model, this time with only IO threads for each user and a single thread that implements all game logic. While that one central thread might someday be a bottleneck that limits scalability on large SMP systems, it does distribute the IO on any additional processors that might be present, and requires minimal coordination. In short, this model combines the logic simplicity of the non-blocking single process model with the coding simplicity of the threaded model, while separating the IO from the main logic. There will also be two other simple threads in this model. There will be a thread that listens for new connections and spawns the IO threads for each new connection. There will also be a thread that writes the data to disk periodically.

This is the approach that I intend to take for this project. The code will be written for both Linux and Mac OS X.

More info: I have set up an email address for programmers following this series to provide recommendations, bug reports, and other feedback. Send email about this project to spacetyrant [at] librenix.com.
mail this link | permapage | score:8982 | -Ray, March 18, 2005 (Updated: July 26, 2008)

Compile Crystal Space in Ubuntu 10.04

Up
vote
Down

If you are a budding game developer, there is a wide selection of 3D engines that you can use to get your ideas off the ground. The first step when using a 3D engine (or any library distributed as source code) is to compile it. Crystal Space is no different. The steps below will show you how to get Crystal Space up and running on your Ubuntu PC. read more...
permapage | score:8949 | -mcasperson, July 2, 2010

Space Tyrant: A multiplayer network game for Linux

Up
vote
Down

Since the last release of Space Tyrant, it has gained some actual game-like functionality. The new code can be downloaded from st2.c. Download it as well as the shell script you’ll need to compile it: makeit2.sh.

It’s now possible to connect to the game via telnet and to create an account, log in, and be issued a ship. Once you’re logged in, there is a universe to explore filled with ports for buying and selling goods and planets for scooping free goods. From those trading activities you can earn money, called microbots. Other than trading to earn more money, you only use your microbots to buy fighters -- which you can use to attack other players or the neutral fighters that guard some sectors.

The neutral fighters are only good for parking under while you’re not playing. They afford a little bit of free protection for your ship since no one can attack you until they first destroy the neutral fighters. Note that you can attack other players whether they are logged in or not and any fighters with their ship will automatically try to defend them.

Each player starts out with a specific supply of fuel, called antimatter. Each minute a small amount of additional antimatter is issued by a function called updatefuel(). If you’re not logged in, fuel just accumulates in your ship. This continuous allocation of fuel makes Space Tyrant a type of turn-based game. Unlike traditional turn-based games, however, you can play your fuel all at once or a little at a time and completely independently of how and when other players play.

You can also talk to other players on the radio. There is only one channel so everyone who is logged in hears everything that is said on the radio.

The game isn’t yet playable in any reliable sense, however, because it doesn’t yet back up and reload the data from disk files. The software creates an instance of the game when you run it and it remains running until you stop it or the system goes down. There is also no way to establish a time limit on a game.

That’s pretty much the extent of the functionality changes. Now, on to the code.

First, there is a login function. That function looks in the player database struct and, if the player name doesn’t already exist, it creates an account there. If the name does exist, it prompts for a password, matches it against the stored password, and logs you in if the two match. There is not yet a way to change your password.

Once a player is logged in, he is faced with a sector description and a ‘choice:’ prompt. Any character that the player types at this prompt is immediately acted on as if it were a command. There is a string called ‘commlist’, short for command list, containing the letters and characters that are used as commands. A function pointer array, ‘fp[]()’, is used to store the locations of the command functions. Another function called ‘commscan()’ looks up the command letter typed and returns an index into the fp[]() function pointer array. This combination of the commlist string, the commscan function, and the fp function pointer array constitute the command processing loop of the game, as shown below:

userndx=commscan(
tolower(
threc[th].inbuf
[threc[th].inptr][0]
),commlist
);
result=fp[userndx](th);

These lines are embedded in a loop where each user’s input thread, represented by the variable ‘th’, is examined for new input. The new input arrives in string called inbuf. Since each thread has several buffers, an index called inptr is used to keep track of which one is currently being processed.

And, as described above, commscan is used to extract the appropriate function index and place it in a variable called ‘userndx’. Then, userndx is used to index into the fp function pointer array and the thread index (th) is passed to the appropriate command-processing function.

There’s a small amount of misdirection in that first line but, once understood, it becomes trivial to add additional commands. Basically, you just need to replace the placeholder function, ‘nullrtn’, with your new function name adjacent to the command letter you select in the fp[]() definition list.

The new functions are discussed below.

makemap()
In keeping with the evolving game nature of this project, several actual game functions have been added. The first new function, makemap(), builds a 20,000-sector single-galaxy universe and populates it with objects. By changing the GAMESIZE constant, you can build a universe of arbitrary size, but make sure you don’t try to build a universe so big as to consume too much of your system’s memory. I’ve tested universes of up to 1,000,000 sectors, which seem to work just fine. The makemap() function randomly puts ports, planets, fleets of neutral fighters, and nebulas in various sectors throughout the universe, and interconnects the sectors with randomly-generated one-way ‘warps’. Note that planets and ports are randomly given varying productivity's and random initial inventories of our three commodities: Iron, Alcohol, and Hardware.

Note that makemap() builds each sectors array of six warps, sorts them into ascending order, and then looks for duplicate warps. If any duplicates are found, it decrements the loop-controlling variable and simply rebuilds that entire sector from scratch. The sorted warps are a convention that we will maintain throughout the project. Each new galaxy type that we add in the future will adhere to that convention and other functions (and users) will be allowed to assume that warps are in ascending order.

command()
We have added a function to simply list the implemented commands and a short line of description. For now, the function is attached to the command letters ‘?’ and ‘H’ via the function pointer array and the commlist array. This function is mostly useful to illustrate a design limitation. The output of any single sprintf buffer-building function cannot exceed the MAXLINE buffer size constant. This function produces a single buffer out output very near the current 511-byte limit and will soon have to be split to produce two buffers of output. Assuming, of course, that we don’t increase the MAXLINE buffer size.

jettison()
The ‘J’ command activates the jettison() function. It’s only purpose is to dump any cargo out of your cargo holds. It illustrates the method we use to let a function that requires multiple characters of input -- or simple confirmation -- to temporarily turn off command processing and send the next character of input back to it. Jettison requires confirmation so that you don’t accidentally dump your cargo just by hitting the J key. (Since all commands operate as ‘hot’ keys you do not have to hit the [Enter] key to activate a command -- each command immediately executes as soon as you press a key.)

Each command function has the ability to set the thread’s control variable to it’s own command letter. That way, the command processing loop can simply check ‘control’ pass the next buffer of input directly to whichever function is indicated.

warprtn()
jumprtn()
The warprtn and jumprtn functions process requests to move to another sector. warprtn() processes the commands 1, 2, 3, 4, 5, and 6, which represent a user’s request to move to the first through the sixth sector number in the warp list, respectively. jumprtn() processes requests to move to a randomly selected sector in the warp list via the ‘-’ (or ‘=’) key. jumprtn() also implements commands to move to the next larger sector, the next smaller sector, as well as the largest and smallest sector number via the ‘.’, ‘,’, ‘>’, and ‘game design and the programming model. The second article discusses the IO handling code and more of the details of the programming model.]

[Update, June 25, 2005: A Space Tyrant home page has been created as a central index to the various ST articles, links, and files.]

[Update, March 21, 2007: Space Tyrant now has a website of its own!. This site is new but growing and will be the quickest way to find new information and code on the Space Tyrant project.]
mail this link | permapage | score:8925 | -Ray, May 30, 2005 (Updated: March 21, 2007)

Sed One-Liners Explained

Up
vote
Down

My previous post was about Awk One-Liners Explained and now I bring to you Sed One-Liners Explained!

Most people are only familiar with one particular command of sed, namely the "s" (substitute) comand. s/comand/command/. That is unsatisfactory. Sed has at least 20 different commands for you.

For example, any ideas what this sed one-liner does?

sed '/n/!G;s/(.)(.*n)/&21/;//D;s/.//'

Read the article to find it out! read more...
permapage | score:8898 | -pkrumins, November 22, 2008

Mono-culture and the .NETwork effect

Up
vote
Down

Consider a future where Microsoft has succeeded in migrating most Windows development to the .NET framework. With the considerable power that Microsoft wields over corporate desktop computing, the success of .NET is easy to foresee.

Now, imagine for a moment that Mono, following in .NET's footsteps, is also hugely successful. Further, imagine that, in its success, Mono displaces a large portion of traditional Linux software development over the next few years.

I believe that if the above scenario becomes reality it could lead to a disaster for Linux. In such a future, Microsoft would have tremendous leverage over Linux, Linux programmers, and businesses using Linux.

Microsoft can, at a carefully selected time, change key interfaces, sue for patent infringement, and release otherwise standard .NET components that break or obsolete pieces of Mono. They can also use the powers of the DMCA to prevent Mono developers from gaining access to obfuscated components of .NET technology. While hobbyists and Linux-centric companies will be able to withstand such inconveniences (with the possible exception of patent suits, of course), general businesses and organizations will not be able to resist such pressure.

Of course, Microsoft is well aware of how this scenario could unfold and has thought of many more exploitable details than a casual observer such as myself.

Mono, if successful, is a gift from heaven to Microsoft that, when the timing is right, can be used to set Linux deployment back years, or worse, depending on the devastating psychological and economic effects such a maneuver would have on Linux developers and businesses.

For Microsoft, their best strategy to do real damage to Linux is to make it easy for Mono to succeed while carefully laying their traps. They can quietly go about the business of patenting all of the key functions of .NET. Anyone who has followed the trend of software patents must realize that Microsoft could have dozens of patent claims covering .NET before Mono rises to prominence.

Then, Microsoft need only wait. The optimum time to shut down Mono will be after much Linux development has committed to it. By then, Mono technology will have infected many projects. Perhaps worse, it will be easier for Mono programmers to simply switch platforms and become Windows developers rather than learn alternative methods and tools of Linux development. Programmers have to eat and software development houses must pay the bills. In such a scenario, there is not a year to burn while everyone ramps up their skills with new tools and practices.

Meanwhile, businesses will be forced to abandon any Linux packages that are .NET-encumbered. Since a .NET version of each Mono-based program would already exist, it would take only a few such packages to convince a business to migrate off of Linux. The headaches of replacing such packages under Linux need only exceed the alternative headache of simply switching to Windows.

A company with their own custom Mono-based software would have fewer options. Microsoft, however, would likely provide an easy solution; simply move the Mono software to .NET and it will all be legal.

I am not the first person to have thought about this. Several Slashdot users have posted cautionary messages about developers placing their trust in the good intentions of Microsoft. [1, 2, 3, 4, and 5].

Dave Winer also seems to wonder about Microsoft's oddly open behavior:
The first clue should be that Microsoft is not protecting the source of .NET, in fact they're publishing it, with some constraints, but if you want to see how they do it, they say there will be no mysteries and no poison pills. So they're making it not impossible to clone. Why are they being so generous? (A little sarcasm, sorry.)
Even Miguel de Icaza1, the founder of the Mono project, acknowledges the compatibility hazards:
If Microsoft decided to make our life really hard in terms of compatibility, it would also hurt its own customers. If it changes the APIs, that affects its customers as well. So I think the APIs will remain fairly stable, and I hope that Microsoft won't go into proprietary protocols or protocols that would make it really hard for us to implement Mono. There's is always the possibility it will do so. Microsoft has some strange patterns in terms of how it competes. I really hope it will "behave like a good citizen," as Steve Ballmer said recently it would.
What I've described here is probably a worst-case scenario; in all likelihood Mono will not be so successful as to cause a large problem for Linux if and when Microsoft decides to kill it. However, even in a favorable sequence of events, Microsoft will still hold the power to cause a large amount of open source effort and code to be lost.

1. Miguel rebuts one of my points here.
mail this link | permapage | score:8887 | -Ray, October 13, 2003 (Updated: October 14, 2003)

C Source Code Example: Multithreaded RPC Server

Up
vote
Down

This can be considered an example, how to build multithreaded RPC Server for White Box Linux 3. Actually, approach described is universal , i.e. doesn't depend on particular code has been modified.

[Update June 26, 2005: Librenix is now featuring a C language multithreaded network socket programming game server project for Linux called Space Tyrant. As of June 26, there have been four code releases and the game is already playable from telnet.]

(here are some white canvas prints) read more...
mail this link | permapage | score:8880 | -Boris Derzhavets, May 14, 2005 (Updated: April 24, 2012)

Install WebSphere MQ on Linux

Up
vote
Down

This article shows you how to get started installing and configuring WebSphere MQ on Linux and developing Java applications for the MQ environment, using sample applications for sending messages to and receiving messages from a queue. read more...
permapage | score:8855 | -Ida Momtaheni, May 24, 2007

Why software sucks

Up
vote
Down

I've heard widely varying opinions on why software is so lousy, the most recent from this article by Charles C. Mann. Mr. Mann makes an excellent anecdotal case for just how bad software has become. Then, he concludes that perhaps a bit more litigation would help matters. While one of the perpetrators of bad software he cites is Microsoft, they, and other wealthy software development companies, might be among the least vulnerable to lawsuits brought over poor software. As is frequently the case, increased litigation would probably put the small developer at even more of a disadvantage relative to the large software corporation.

But more to the point, why is software so bad? Programming is sometimes compared to an engineering specialty and the point is made that product standards are much lower for software. Software, unlike building construction, for example, is pure design. The actual programming phase is just a finer grained version of what we programmers normally call 'design'.

Software development is one hundred percent design.

Consider the implications of that statement for a moment. Virtually all of the cost of software development is, directly and indirectly, the cost of design. If a student architect could design a skyscraper, push a button, and have some futuristic genesis device instantly construct the building at virtually no cost -- and at no danger to anyone -- and with perfect components throughout, would he not do so? Further, imagine that with a push of another button, the entire building could be reduced back to its constituent atoms.

The student could try and try again, refining his design until it was finally just what he wanted. Now, imagine that there was no danger in occupying such a building. Would it change the way we make buildings? Given the alternative of spending millions to build the building the old fashioned way versus spending a fraction of one percent of that to do only the design -- and automate the remainder for virtually nothing -- I suspect that the market would choose the vastly cheaper method.

For software that doesn't involve life-or-death applications, the development cost model closely resembles our fictional architectural scenario.

People are understandably reluctant to add real engineering discipline to software development. While there is no physical building phase, the complexity of a large application is staggering. A large program might have millions of (logically) moving parts, all interrelated. To prove that it all works correctly, as specified, might be more than just prohibitively expensive; it may well be impossible. And even if such verification were possible, proving the correctness of a large program would greatly delay the release date.

Perhaps life support systems, X-ray machines, and other such critical programming does belong in the engineering realm with formal education requirements, legal responsibilities, and state certification. But for my favorite projects, I think the status quo is just fine.

Yes, software sucks -- but it's usually cheap. Further, in my experience, the cheapest software, free, seems to suck the least.

Fast, good, cheap: choose two.
mail this link | permapage | score:8841 | -Ray, June 19, 2002 (Updated: April 26, 2011)

Vim Plugins: matchit.vim

Up
vote
Down

This is the third post in the article series "Vim Plugins You Should Know About". This time I am going to introduce you to a plugin called "matchit.vim".

Matchit extends the existing functionality of “%” key (percent key). I'll first briefly remind you what the original “%” does and then explain how matchit.vim enhances it. read more...
permapage | score:8839 | -pkrumins, February 6, 2009

Why Programmers are not Software Engineers

Up
vote
Down

People toss about the term 'software engineering' as if programming were just another engineering discipline.

Programming is 100 percent design. And that design is vastly more complex than the typical true engineering effort of comparable cost. Said another way, an engineering project of similar logical complexity to a software program is far more expensive.

Much of the reason for that low cost is that programming has no comparable build phase that, in some other field, might consume the vast majority of the total cost.

Programming is dramatically cheaper than a similarly complex physical project.

Programming doesn't fail in the same sense that an engineering project can fail. Programs never fail because of faulty materials or shoddy workmanship -- except in the compilation phase, perhaps, but in that case the program doesn't even exist. Programs don't fail because of use beyond their rated capacities, although they may fail because they foolishly accept input or a load beyond their capacities.

Programs only fail due to design flaws.

Ignoring terminology for the moment, the reason that software quality is so much lower than one might expect is fundamentally economic. The 'engineering' phase, the design, represents nearly the entire cost of the actual development. The only place where costs can be shaved is design. The building blocks of the actual construction, opcodes, are essentially free.

Software doesn't meet engineering standards, largely for economic reasons.

And, lastly, an engineer is one so designated by government. With that title comes certain legal responsibilities. 'Software engineers' are neither designated as such nor are they held to engineering standards.

Engineer is a title conferred by the state and it may not even be legal to call yourself a 'software engineer'.

On the other hand, the best programmers I've met don't call themselves engineers at all. They call themselves programmers, coders, and hackers. Evidently, there is no shame in that. Let's leave the engineering title to those who have earned it and accept the responsibilities that come with it.

We should be thankful that we aren't held legally responsible for the performance of our designs.
mail this link | permapage | score:8828 | -Ray, November 25, 2002

Review: DevelopGo: A Linux Live CD for Programmers

Up
vote
Down

DevelopGo is a special Live CD released by the Onebase Linux Project. As the name indicates, it is meant exclusively for programmers.

Although I am a Windows Programmer, I was searching for such a Live CD that would allow me to experiment with different types of toolkits and IDEs available in Linux. DevelopGo matched exactly what I wanted with a suite of developer tools and compilers.

After downloading and trying it, I found it very useful and would like to share my thoughts with other Linux programmers who might be interested.

About the DevelopGo Live CD
The booting speed of the Live CD was fast and it loaded into a full blown KDE desktop. I liked the theme, as it gave a 'Programmers' look and feel.

On the Desktop there were many icons like Editors and Utilities which contained shortcuts for accessing programs. Another Icon, named Getting-Started, was a single page catalog of all the software present in the Live CD.

The list was huge and covered most of the popular tools available for Linux. It was a total development environment that included header files and libraries of all the compiled applications. It included other features of Onebase Linux like Hard-Disk Installer, Docking, USB disk save, etc., which are beyond the scope of this article.

Languages and Toolkits
As mentioned in the Onebase's Website, the user is to ready to program by simply booting a CD in over 11 languages and 5 toolkits. The following programming languages are supported in DevelopGo 1.0:
  • High-level Languages: Java, C, C++, Obj C, Mono C#, Boo, COBOL
  • Scripting Languages: Perl, Python, BASH, TCL, Ruby, LUA
  • Toolkits and Bindings available in this Live CD
  • Toolkits: QT, GTK+, TK, Lesstif, FLTK
  • Bindings: Ruby-Gnome2, KDEBindings, PyKDE, PyQT, PyGTK, Gnome-Python
This gave me the opportunity to learn and program with many languages and toolkits.

Since my programming interest is based on scripting, the different bindings helped to select a suitable toolkit for my software development right away. But there were tradeoffs like an old GCC version 3.4.3. This is understandable as the new GCC 4.0 provides many new changes and features but is not quite stable. A major Perl GTK binding was not included with DevelopGo.

IDE and Editors
DevelopGo comes with a number of Editors and Integrated Development Environments to choose from.
  • Java Programming - The Popular Eclipse IDE version 3.1
  • Mono C# Programming - MonoDevelop .NET development environment with API documentation
  • C, C++, Obj, QT, TK, Perl, Python, Ruby - KDevelop 3.1.2 IDE
  • GTK and GNOME programming - Anjuta 1.2.2 Development studio
  • Web Programming - BlueFish Editor
  • Python and Ruby Programming - Eric IDE
  • GUI Designers - QTDesigner, Glade and Kommander
  • Apart from this list, there were also other console based editors and compilers.
The Loading time of these applications were good. Most of these editors were stable and ran without problems. Except, BlueFish could have been replaced for Nvu, Otherwise the inclusion of editors like MonoDevelop, Eclipse was great.

Utilities
Many useful developer utilities were present such as CVS, a version control system, Debugger (GDB), and a Project Management Tool called Planner.

There is also DistCC for performing distributed compilation of code and ccache which caches object files and compiles only the changed files making compilation faster.

Another interesting part of DevelopGo is that it includes lots of offline developer documentation on various subjects, despite most of them have been taken from the Internet. These documentation includes guides, API Reference and Code Examples for various compilers and IDEs.

There were firefox bookmarks to Linux based Programming Websites and Pages.

Conclusion
I felt that the main missing factor from this Live CD was the non-availability of DataBase Languages like MySQL. However this can be overcome by installing it to Hard-disk and downloading the available Database servers from the Onebase Software Gallery.

Overall I feel DevelopGo is complete and valuable for a Linux Programmer and a good starting point for building Linux Applications.

Visit the Onebase Website for more information and to download the DevelopGo ISO.
mail this link | permapage | score:8810 | -kumpd, August 25, 2005 (Updated: March 21, 2007)

Free download: C/C++ Eclipse Plugin

Up
vote
Down

C/C++ IDE Plugin for the Eclipse Project workbench provides a fully functional C and C++ Integrated Development Environment (IDE). The IDE is not bound to any compiler; it can be used with any C/C++ compiler (for example, gcc). C/C++ IDE Plugin includes its own C/C++ parser for gathering information from projects. The parsed information is then used by other tools to provide information about the project. The C/C++ Plugin is written in Java and is therefore platform-independent.
Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular. Find out what eclipse is all about - check out the white paper (requires Acrobat Reader 4.0 or later), read some technical articles, visit the newsgroups, take a look at the projects, and pick up the latest downloads. Don't forget to check out the Eclipse Project FAQ and online documentation.
[The Eclipse downloads index page is here. -Ed] read more...
mail this link | permapage | score:8809 | -Anonymous, October 30, 2001 (Updated: March 20, 2007)

Import XML into OpenOffice Calc with XSLT

Up
vote
Down

When it comes to importing generic XML into OpenOffice, the user is on his own. This article offers a quick XSLT tool for this purpose and demonstrates the Calc import of records-oriented XML. In addition to learning a practical trick for working with Calc, you might also learn a few handy XSLT techniques for using dynamic criteria to transform XML.
The popular open source office suite OpenOffice.org is XML-savvy at its core. It uses XML in its file formats and offers several XML-processing plug-ins, so you might expect it to have nice tools built in for importing XML data. Unfortunately, things are not so simple, and a bit of work is required to manipulate general XML into delimited text format in order to import the data into its spreadsheet component, Calc.
read more...
mail this link | permapage | score:8807 | -solrac, April 4, 2005

Tutorial: Write a PHP wiki

Up
vote
Down

Wikis are widely used as tools to help speed development, increase productivity, and educate others. This tutorial creates a wiki from scratch using PHP, with value-added features useful for tracking production. It focuses on application design with PHP. All of these things make PHP a good choice for writing a wiki engine. read more...
permapage | score:8796 | -solrac, February 22, 2007

Introduction to Perl one-liners

Up
vote
Down

Perl one-liners are small and awesome Perl programs that fit in a single line of code and they do one thing really well. These things include changing line spacing, numbering lines, doing calculations, converting and substituting text, deleting and printing certain lines, parsing logs, editing files in-place, doing statistics, carrying out system administration tasks, updating a bunch of files at once, and many more. Perl one-liners will make you the shell warrior. Anything that took you minutes to solve, will now take you seconds! read more...
mail this link | permapage | score:8787 | -pkrumins, May 28, 2012

Open source Cloud Computing with PHP and MySQL

Up
vote
Down

In this article you will learn how Aptana makes it easy to develop applications based on PHP and MySQL, and how to deploy them to the cloud. Also explore some of the critical design differences between a cloud application and a traditional N-tier application. read more...
permapage | score:8773 | -solrac, May 18, 2009

I wrote my first programming e-book: Awk One-Liners Explained

Up
vote
Down

I really love writing about programming and Linux, and I just published my first e-book ever on Awk one-liners.

Awk one-liners are short Awk programs that fit on one line and do one particular task, such as numbering lines, double spacing lines, printing only lines that match a pattern, etc.

Here is an example. The following one-liner prints all users on the Linux system:

awk -F: '{ print $1 }' /etc/passwd

This one-liner works this way. The -F: command line argument specifies that the lines in the /etc/passwd file should be split into fields by the colon character. As we all know, the information in /etc/passwd file is colon separated, so the first field $1 gets set to the username, the second field $2 gets set to the password, the third field $3 gets set to user id, etc. This one-liner prints only the first field which is the username. Simple, isn't it?

In my 50 page long e-book I carefully explain 70 one-liners in similar way.

Here is the table of contents of the e-book:

Preface.
1. Introduction to Awk One-Liners.
2. Line Spacing.
3. Numbering and Calculations.
4. Text Conversion and Substitution.
5. Selective Printing and Deleting of Certain Lines.
6. String and Array Creation.
Appendix A: Awk Special Variables.
Appendix B: Idiomatic Awk.
Index.
read more...
mail this link | permapage | score:8765 | -pkrumins, June 24, 2011

Create native looking Firefox web apps

Up
vote
Down

HTML5 and Flash have been used to great effect in recreating traditional desktop apps that can be run through your web browser. Google is so confident that web apps can replace your desktop apps that it has released the ChromeOS, which is not much more than the Chrome web browser presented as a desktop operating system.

Firefox has long supported running web apps in a kind of desktop mode through projects like Prism, WebRunner and Chromeless. But a lot of these projects are either dead, in their early stages, or require a lot of mucking around to get running.

The good news is that it is quite easy to launch your favourite web apps in a chromeless Firefox 4/5 window with just a few simple steps. read more...
mail this link | permapage | score:8738 | -mcasperson, August 5, 2011
More coding articles...
Buy Fine Art Prints Online

coding headlines

Linux Debugging Tools for C

Tutorial: Build a grid application using Python

Awk Tips, Tricks and Pitfalls

Tutorial: Android development environment on Fedora 14

Online Ruby Interpreter

Vim plugins: snipmate.vim

bind()... listen()... accept(): The Unix Socket FAQ

Linux Kernel Debugging Tools

Install FB4Linux in Eclipse

Tutorial: Write your own operating system

Unix signals list

Vim Plugins: ragtag.vim

The life cycle of a programmer

Programming Language Tradeoffs: 3GL vs 4GL

Debugging Shell Scripts

String matching in regular expressions

Scripting: Bash Array Tutorial

PowerPC assembly language

Tutorial: Build a C/C++ memory manager

GDB and SSH Tunneling

Tutorial: Install the Aptana AJAX IDE on Ubuntu

The Independent Qt Tutorial

C Programming Tutorials

tentakel: Run distributed commands on Linux

strace tutorial

Porting C / C++ code from Windows to Linux / Unix

sed and awk tips

Apache Derby Tutorial

Error handling with Flex and Bison

libhugetlbfs: Using transparent pages on Linux

Book Review: Invent Your Own Computer Games with Python, 2nd Ed.

bash scripting: Looping through a list

Beginner and Intermediate / Advanced SQL Tutorials

Dzil: a casual walkthrough of Dist::Zilla

Tutorial: Build an Eclipse Plugin

Book review: Jess in Action

Tutorial: Build a Real-Time web tool with jQuery, XMPP and PHP

Evaluating Eclipse vs. IntelliJ IDEA

Best practices for XML in Java programming

BASIC for Linux

 

Firefox sidebar

Site map

Site info

News feed

Features

Login
(to post)

Search

 
Articles are owned by their authors.   © 2000-2012 Ray Yeargin