Odds are, if your a typical computer professional, you have to routinely maintain files and other content that contain a large amount of repetition. For example this web site has the header (banner and navbar) on everypage and the same footer (copyright message, various web standard certifications and what ever links we have placed there in an attempt to increase our traffic). Sandwitched between these two element is the actual unique part of the page (this text for example). There are several solutions that are typically used in an attempt to keep all this organized:
If you're maintaining a set of nameserver records for a hosting service, for example, then you will be repeating the same general file over and over again with only slight changes to reflect the given file. As an example, here is the named record for FloSoft Systems:
flosoft-systems.com. IN SOA ns1.arlin.net. root.arlin.net. ( 2006081401 28800 3600 604800 38400 ) IN A 72.3.200.112 flosoft-systems.com. IN NS ns1.arlin.net. flosoft-systems.com. IN NS ns1.arlin.net. mail.flosoft-systems.com. IN MX 10 flosoft-systems.com. www IN CNAME flosoft-systems.com.
And if I want to add a new domain (assuming I am FloSoft's hoster [Arlin Technologies]) we just need to change all mentions of flosoft-systems.com to be whatever the new domain is. Let's say it is the site for the Miai Foundation for Sustainable Intellectual Works (miai-siw.org) which is also hosted by ZendURL then the file would read:
miai-siw.org. IN SOA ns1.arlin.net. root.arlin.net. ( 2006081401 28800 3600 604800 38400 ) IN A 72.3.200.112 miai-siw.org. IN NS ns1.arlin.net. miai-siw.org. IN NS ns1.arlin.net. mail.miai-siw.org. IN MX 10 mail.arlin.net. www IN CNAME miai-siw.org.
If we are using method 1 above we have two small problems:
Assume we can set the name of the domain we want at file creation time and a tool will make all the right substitutions according to a template. Then all we need is something like this:
[DOMAIN] IN SOA ns1.arlin.net. root.arlin.net. ( 2006081401 28800 3600 604800 38400 ) IN A 72.3.200.112 [DOMAIN] IN NS ns1.arlin.net. [DOMAIN] IN NS ns1.arlin.net. mail.[DOMAIN] IN MX 10 mail.arlin.net. www IN CNAME [DOMAIN]
And all mentions of [DOMAIN] are automatically replaced with whatever domain we are making the file for. Among other things this allows us to automate domain creation, which any serious hoster must do, by writing a little script that calls our template program with the right values.
You're correct in thinking that a non-generic solution, like the one above, would need to be retooled for every file type. That's exactly the reason why FileBuilder, FloSoft Systems' solution to these issues, uses a built-in macro language to handle these variations in files. We currently use FileBuilder for two tasks:
Even though some learning curve is needed learn any new tool, the command language FileBuilder uses has only 4 commands and one variable type. If it takes you longer then 30 minutes to learn the FileBuilder language contact us and we will happily extend your trial period indefinitely (you will never have to pay for FileBuilder).
Not only is the above headline our motto, it is who we are, namely a group of freelance programmers who practice the ideals of open source development. As said in our business model and on our splash page open source has sadly not sufficiently addressed the economic realities of being a micro-ISV specifically, it makes making a living from your work next to impossible without begging for donations. In cooperation with small number of other micro-ISV's we have developed a new licensing model that allows for the best of open source to co-exist with the developer's need to eat.
For these reasons we offer a 100% functional (including the source code) 30-day trial of FileBuilder. There are no time-related disabled features. In short if you find FileBuilder to be useful in your own projects we trust you, as a fellow programmer, to pay for it after the 30-day trial period. One component of the above business model is we reward people who do work in kind on any of our products. This means if you are unable and/or feel wrong about paying for community-oriented software you can meet your obligation to us by doing some kind of work in kind. If the work in kind exceeds the price of the paid version we will even pay you for the work!