![]()
We all have them. They happen in the best computing environments: Those Neat Odd Jobs that you would like to develop, but you simply do not have the time.
We all know the kind of programming problems - Things that are too large or complicated for batch files and scripts, but need to be done none the less. Things like removing temporary files in a directory tree. Dynamically updating your web site. Collecting and analyzing server logs without loosing event detail.
After analyzing the millions of lines of code that he has written to solve his Neat Odd Jobs, R. A. decided to collect the most useful classes together into a single namespace.
The "Standard Noj" Namespace
And so the stdnoj namespace was born. In general, the stdnoj namespace is a collection of directory, file, string, array, and Internet services that R. A. has created over the years. While far from being complete, these classes represent decades of software creation. Several classes (most notably the string and array classes) pre-date the C++ standardization efforts.
We encourage you to examine and use these classes in your own commercial and part-time software creation activities in the spirit of the MIT license.
Tools To Use
In order to demonstrate how to use the stdnoj namespace, several tools are included.
Blastit!
The first tool is called "Blastit". As its name implies, Blastit is a tool designed to recursively descend a WIN32 or POSIX file system to locate and remove unwanted files. Part of the commercial FileSpy tool.
HttpDb
The next tool is called HttpDb. Httpdb is a programmable command line tool useful for managing and querying HTTP logs from an uncomfortably large collection of sites. (Warning: The motto of this tool is "disk space [and processing power] is cheap.")
LogCollect
Finally, LogCollect demonstrates a task-oriented FTP capability. The purpose of this tool is to demonstrate how you can use WIN32 to allow you to retrieve FTP log files to your workstation, as well as to back them up to your web site.
At this point you might rightly ask "If you library is designed for POSIX and WIN32 use, why does LogCollect only work on WIN32?" - The answer is simple: Because there was simply no need to make it work on POSIX at the time!
The Noj Phylosophy
Indeed, the omission of an ftp implementation for POSIX helps us introduce the central theme that is usually part of any tool developer's mindset: When adopting a tool centric mentality, there is usually little time to do it all from scratch. You do what will get the job done... and that as efficiently as possible.
Because of the lack of time and need to not spend a lot of time designing and testing, the philosophy of the object oriented tool developer should encourage the encapsulation of any reliable resource, even if that resource is platform specific.
Thou !(Shalt) ... ?
So far from being a sin, Noj developers feel that if a tool that we wrote is good enough for us, then we can safely leave the implementation of a class on another platform to another developer to implement, as they require. You should feel comfortable deferring the implementation of a class on another platform to someone else --The ultimate value of a healthy Open Source Community.
Conclusion
When taken collectively, the command-line tools demonstrate a frequently used, but relatively small subset of the classes available in the stdnoj namespace. However, as Neat Odd Jobs that R. A. has set about to tackle in his spare time, you might also find them to be useful tools in your environment. Feel free to download, use and improve the stdnoj namespace as your time permits.
Postscript
An Invitation to Contribute - by R. A. Nagy
We encourage you to share your C++ source code with the rest of us. If you would like to share what you come up with, feel free to contact me directly -- We would love to add your name and tool to this page as you share your Noj solution with the rest of us!
May the source be with you... Always. :)
rn