come and go with me to my father s house
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 8164
Command Line Content Management System 0.6
Command Line Content Management System is my own command line content management system. more>>
Command Line Content Management System is my own command line content management system. Its not a dynamic cms, but a script that takes a source tree and creates a web site out of it.
The idea came to me when i was using m4 for my website to generate the HTML, but i did not like the idea that i was still typing HTML in my pages, even if it was simplified by using macros. I was updating a wiki page somewhere when it hit me: i wanted a command line system that was able to take wiki style input for page content. The result is clcms.
Its in beta state at the moment, mostly to try out some different approaches to various
challenges. But i thought id share it now, so if youre interested and might have some ideas on where to go from here, drop me a line (or a patch). At least it can build this site and the tutorial site, but anything more fancy will probably not work.
Its also a way for me to learn Python, so i might in my ignorance produce some weird constructs here and there. Please let me know, but be gentle.
Main features:
- Updates should be possible with a terminal and an editor
- Content is stored in a directory tree
- Adding pages (or items?) should be as easy as creating a new file and typing some lines in it.
- For default pages/items no config necessary
- No HTML, XML or anything alike for normal usage
- All pages have their binary content (images, download files) in the directory of the page itself
- All output is static, no generating on the fly
Usage:
After untarring the tarball, add < dir>/bin to your path or copy bin/clcms.py to a directory in your path.
You can now go to < dir>/examples/documentation and build the tutorial by running
clcms.py
Now wasnt that easy?
Point your browser to file://< dir>/examples/documentation/out/index.html and see the result of all your hard work.
If it did not work, its not your fault. Just remember that version number.
Enhancements:
- .page files can now contain content attributes.
- Filename extensions are removed and replaced by attribute lines in .page files.
- The page.meta file should now be called page.attr.
- The nomenu option had disappeared in a previous release, and has been put back.
<<lessThe idea came to me when i was using m4 for my website to generate the HTML, but i did not like the idea that i was still typing HTML in my pages, even if it was simplified by using macros. I was updating a wiki page somewhere when it hit me: i wanted a command line system that was able to take wiki style input for page content. The result is clcms.
Its in beta state at the moment, mostly to try out some different approaches to various
challenges. But i thought id share it now, so if youre interested and might have some ideas on where to go from here, drop me a line (or a patch). At least it can build this site and the tutorial site, but anything more fancy will probably not work.
Its also a way for me to learn Python, so i might in my ignorance produce some weird constructs here and there. Please let me know, but be gentle.
Main features:
- Updates should be possible with a terminal and an editor
- Content is stored in a directory tree
- Adding pages (or items?) should be as easy as creating a new file and typing some lines in it.
- For default pages/items no config necessary
- No HTML, XML or anything alike for normal usage
- All pages have their binary content (images, download files) in the directory of the page itself
- All output is static, no generating on the fly
Usage:
After untarring the tarball, add < dir>/bin to your path or copy bin/clcms.py to a directory in your path.
You can now go to < dir>/examples/documentation and build the tutorial by running
clcms.py
Now wasnt that easy?
Point your browser to file://< dir>/examples/documentation/out/index.html and see the result of all your hard work.
If it did not work, its not your fault. Just remember that version number.
Enhancements:
- .page files can now contain content attributes.
- Filename extensions are removed and replaced by attribute lines in .page files.
- The page.meta file should now be called page.attr.
- The nomenu option had disappeared in a previous release, and has been put back.
Download (0.024MB)
Added: 2006-03-21 License: GPL (GNU General Public License) Price:
1312 downloads
Come And Go Encryption 1.02
Come And Go Encryption provides an encryption program based off one-time pads. more>>
Come And Go Encryption provides an encryption program based off one-time pads.
Cum And Go Encryption is a very basic program to encrypt or decrypt a program using a variant of the one-time pad. This allows for almost uncrackable encryption.
Why is it still crackable? The program uses one relatively small key to XOR the contents of another file, encrypting it.
A one-time pad uses a very large key (about the same size as the file/data to encrypt) and is completely random. Still, the encryption is good enough to mask the identity of a program or document, or stop someone from accessing that document or program.
The origins of this program were an effort to stop a specific kind of movie and image from being viewed normally.
Installing is a breeze: simply run the program. Put it anywhere you like, it wont matter as long as you put the full path to the program to encrypt/decrypt.
Run the program to see a basic description of its use.
This program works very well in windows but was designed for use in Linux/UNIX. The stdout option allows for decryption to standard output, allowing one to pipe the programs decrypted data to another program.
This could be used to view an encrypted movie without having to write the whole movie to disk; the only problem with this is that on some Operating Systems pipes are slow and inefficient, especially with a high-bitrate movie. Steps will be taken to speed this up in the future.
Enhancements:
- Fix password use so the password is not shown in "encrypted" files
- Use an actual encryption method, and not a cheesy XOR
- Adapt CAG to use modules such as SHA, Crypt, MD5, and others
<<lessCum And Go Encryption is a very basic program to encrypt or decrypt a program using a variant of the one-time pad. This allows for almost uncrackable encryption.
Why is it still crackable? The program uses one relatively small key to XOR the contents of another file, encrypting it.
A one-time pad uses a very large key (about the same size as the file/data to encrypt) and is completely random. Still, the encryption is good enough to mask the identity of a program or document, or stop someone from accessing that document or program.
The origins of this program were an effort to stop a specific kind of movie and image from being viewed normally.
Installing is a breeze: simply run the program. Put it anywhere you like, it wont matter as long as you put the full path to the program to encrypt/decrypt.
Run the program to see a basic description of its use.
This program works very well in windows but was designed for use in Linux/UNIX. The stdout option allows for decryption to standard output, allowing one to pipe the programs decrypted data to another program.
This could be used to view an encrypted movie without having to write the whole movie to disk; the only problem with this is that on some Operating Systems pipes are slow and inefficient, especially with a high-bitrate movie. Steps will be taken to speed this up in the future.
Enhancements:
- Fix password use so the password is not shown in "encrypted" files
- Use an actual encryption method, and not a cheesy XOR
- Adapt CAG to use modules such as SHA, Crypt, MD5, and others
Download (0.012MB)
Added: 2007-03-13 License: GPL (GNU General Public License) Price:
957 downloads

Eat Me for Linux 1.0
Eat Me is a free, cute and funny set that contains 10 icons more>> Yay! Its halloween again and David has been kind enough to create an awesome set of spooky (er... funny and cute really) folder characters for us to use this year!<<less
Download (373KB)
Added: 2009-04-19 License: Freeware Price:
187 downloads
GIMP checkmark brushes 1.0
GIMP checkmark brushes is fourth in a series of rubber stamp GIMP brushes. more>>
GIMP checkmark brushes is fourth in a series of "rubber stamp" GIMP brushes which help making simple objects easy and clean for GIMP users. GIMP checkmark brushes includes 30 brushes. They default to black, and some are in red, green, and blue.
Installation:
Stick them in the GIMP brushes folder and either "refresh brushes" or restart the GIMP. I put them in the system-wide folder, on my Slackware machine this folder is located at: /usr/share/gimp/2.0/brushes
You should also have a local brushes folder at: ~/.gimp-2.x/brushes
Checkmark brushes are my fourth brush collection for use in the GIMP.
I love em !
Just another item I like to have around, because if I need a little something, I dont want to make a small idea for an image enhancement into a major side project --
which making or finding a good-looking checkmark can be.
I realize most folks use brushes for more artistic purposes than as a "rubber stamp", but lets face it, if we want to get things done in a timely fashion, it behooves us to have simple tools and objects at our disposal.
Since checkmarks will vary only so much, I decided to go ahead and make some of these in color. (Kind of makes a separate package of them worthwhile. (Although most folks would find it easy enough to change the HUE/SATURATION on their own.)
<<lessInstallation:
Stick them in the GIMP brushes folder and either "refresh brushes" or restart the GIMP. I put them in the system-wide folder, on my Slackware machine this folder is located at: /usr/share/gimp/2.0/brushes
You should also have a local brushes folder at: ~/.gimp-2.x/brushes
Checkmark brushes are my fourth brush collection for use in the GIMP.
I love em !
Just another item I like to have around, because if I need a little something, I dont want to make a small idea for an image enhancement into a major side project --
which making or finding a good-looking checkmark can be.
I realize most folks use brushes for more artistic purposes than as a "rubber stamp", but lets face it, if we want to get things done in a timely fashion, it behooves us to have simple tools and objects at our disposal.
Since checkmarks will vary only so much, I decided to go ahead and make some of these in color. (Kind of makes a separate package of them worthwhile. (Although most folks would find it easy enough to change the HUE/SATURATION on their own.)
Download (0.066MB)
Added: 2006-04-28 License: Freely Distributable Price:
1283 downloads
Net::Google::Response 1.0.1
Net::Google::Response is a simple OOP-ish interface to the Google SOAP API search responses. more>>
Net::Google::Response is a simple OOP-ish interface to the Google SOAP API search responses.
SYNOPSIS
my $service = Net::Google->new(key=>LOCAL_GOOGLE_KEY);
my $session = $service->search();
$session->query(qw(Perl modules));
# You are probably better off calling
# $session->results() but if you want
# the raw response object(s) here ya go :
my $responses = $session->response();
my $count = scalar(@$responses);
# $r is a Net::Google::Response object
foreach my $r (@$responses) {
print sprintf("%s : %sn",$r->searchQuery(),$r->estimatedTotalResults());
}
Provides a simple OOP-ish interface to the Google SOAP API for searching. This package is used by Net::Google.
The Net::Google::Response object is used to contain response information provided by the Google search service in response to a search query. The Response object allows the client program to easily access the data returned from a search.
Response data is accessed using methods with identical names to the elements of a search response (as documented in the Google Web APIs Reference, section 3). For instance, the first example in the SYNOPSIS section, above, would return the estimated number of total results for the query.
Response objects may contain other response objects, where an element would return an array of other elements. For instance, calling $response->resultElements() will return a reference to an array of Net::Google::Response objects, each one representing one result from the search.
The Response module will automatically provide methods for the search response, as described by the service WSDL file. The results format is described by the Google APIs documentation, to which you should refer for the most up-to-date information. As of the April 8th, 2002 release of the Google APIs, the methods below are provided for each search result.
<<lessSYNOPSIS
my $service = Net::Google->new(key=>LOCAL_GOOGLE_KEY);
my $session = $service->search();
$session->query(qw(Perl modules));
# You are probably better off calling
# $session->results() but if you want
# the raw response object(s) here ya go :
my $responses = $session->response();
my $count = scalar(@$responses);
# $r is a Net::Google::Response object
foreach my $r (@$responses) {
print sprintf("%s : %sn",$r->searchQuery(),$r->estimatedTotalResults());
}
Provides a simple OOP-ish interface to the Google SOAP API for searching. This package is used by Net::Google.
The Net::Google::Response object is used to contain response information provided by the Google search service in response to a search query. The Response object allows the client program to easily access the data returned from a search.
Response data is accessed using methods with identical names to the elements of a search response (as documented in the Google Web APIs Reference, section 3). For instance, the first example in the SYNOPSIS section, above, would return the estimated number of total results for the query.
Response objects may contain other response objects, where an element would return an array of other elements. For instance, calling $response->resultElements() will return a reference to an array of Net::Google::Response objects, each one representing one result from the search.
The Response module will automatically provide methods for the search response, as described by the service WSDL file. The results format is described by the Google APIs documentation, to which you should refer for the most up-to-date information. As of the April 8th, 2002 release of the Google APIs, the methods below are provided for each search result.
Download (0.016MB)
Added: 2006-11-21 License: Perl Artistic License Price:
1067 downloads
libtemplate 1.5
libtemplate is a C template library for CGI programs. more>>
libtemplate allows C developers to use templates for their CGI programs just like Perl and PHP programmers.
Use this template library to separate your programs business logic from the HTML that generates the output. Your code will be smaller and easier to maintain, and cosmetic changes to an application wont create havoc with your program.
If youre tired of recompiling your CGI program every time somebody wants to change the HTML, you need to check out templates. Libtemplate is an easy to use C interface that will let you use the same sort of templates used in Lazarus applications.
Using templates in PHP and C++ has spoiled me. So when I started developing applications in C, I went hunting for a templating library that I could use again. I didnt find it, so after developing in a mixture of C for my lowlevel routines and C++ for my interface, I finally broke down and wrote a templating engine in C.
<<lessUse this template library to separate your programs business logic from the HTML that generates the output. Your code will be smaller and easier to maintain, and cosmetic changes to an application wont create havoc with your program.
If youre tired of recompiling your CGI program every time somebody wants to change the HTML, you need to check out templates. Libtemplate is an easy to use C interface that will let you use the same sort of templates used in Lazarus applications.
Using templates in PHP and C++ has spoiled me. So when I started developing applications in C, I went hunting for a templating library that I could use again. I didnt find it, so after developing in a mixture of C for my lowlevel routines and C++ for my interface, I finally broke down and wrote a templating engine in C.
Download (0.018MB)
Added: 2005-10-03 License: BSD License Price:
1484 downloads
AVI TV Episode File Resizer 1.0
AVI TV Episode File Resizer was made to fit (resize the file) multiple Xvid TV episodes (entire season) on a single DVD. more>>
AVI TV Episode File Resizer script is not for multiple MOVIE files (only TV) however it can do SINGLE MOVIE files quite nicely. The project was designed to help me fit (resize the file) multiple Xvid TV episodes (entire season) on a single DVD. Most of the time a TV series is almost exactly the same hours, mins, secs.
That enables this script to set the video bitrate the same for every file (episode) being processed to get the desired file size. The calculation is based on the hours, mins, seconds and the desired file size you want. If you correctly enter the time you will end up with a file size VERY close to the value you entered. The episodes will likley vary about 10 secs or so. Try to average that out when you select the episode time
The new files will have the EXACT same name as the old files so the input and output cannot be in the same DIRECTORY.
The "input files" selector can select multiple files so you can encode one or many files.
If you select an entire season (about 25 episodes) of files it could take quite a few hours to complete. The progress bar updates AFTER the completion of the first file and after every file there after. The current file being processed is displayed in the bottom status bar.
Transcode single pass is used to REencode the files.
Each file will be REencoded with MP3 audio bitrate of 96 kbps. The video is REencoded with the Xvid4 codec.
I used this script to go from 230MB to 175MB with good results. That saved me almost 1.4G for the season (25 episodes) and let me get it on a single DVD to play on my stand alone player.
You should try it with a single file first to check the quality and then do a batch job.
There are other tools to do this but this one can be setup and going in less than 1 min.
It takes almost 10 hours to do an entire season (25 episodes) at an episode time of 25 min 30 sec with a target file size of 171MB (ends up being about 174.8MB)
<<lessThat enables this script to set the video bitrate the same for every file (episode) being processed to get the desired file size. The calculation is based on the hours, mins, seconds and the desired file size you want. If you correctly enter the time you will end up with a file size VERY close to the value you entered. The episodes will likley vary about 10 secs or so. Try to average that out when you select the episode time
The new files will have the EXACT same name as the old files so the input and output cannot be in the same DIRECTORY.
The "input files" selector can select multiple files so you can encode one or many files.
If you select an entire season (about 25 episodes) of files it could take quite a few hours to complete. The progress bar updates AFTER the completion of the first file and after every file there after. The current file being processed is displayed in the bottom status bar.
Transcode single pass is used to REencode the files.
Each file will be REencoded with MP3 audio bitrate of 96 kbps. The video is REencoded with the Xvid4 codec.
I used this script to go from 230MB to 175MB with good results. That saved me almost 1.4G for the season (25 episodes) and let me get it on a single DVD to play on my stand alone player.
You should try it with a single file first to check the quality and then do a batch job.
There are other tools to do this but this one can be setup and going in less than 1 min.
It takes almost 10 hours to do an entire season (25 episodes) at an episode time of 25 min 30 sec with a target file size of 171MB (ends up being about 174.8MB)
Download (0.011MB)
Added: 2007-04-02 License: GPL (GNU General Public License) Price:
950 downloads
Feed Me Links 1.0
Feed Me Links is a Web application for managing and sharing links. more>>
Feed Me Links is a Web application for managing and sharing links.
Feed Me Links provides many interesting features such as tagging, comments, RSS feeds, tag clouds, friend lists, a REST API for exporting, a browser sidebar, and Firefox and IE favorites import.
<<lessFeed Me Links provides many interesting features such as tagging, comments, RSS feeds, tag clouds, friend lists, a REST API for exporting, a browser sidebar, and Firefox and IE favorites import.
Download (0.15MB)
Added: 2005-11-22 License: MIT/X Consortium License Price:
1432 downloads
Acme::OneHundredNotOut 100
Acme::OneHundredNotOut is a raise of the bat, a tip of the hat. more>>
Acme::OneHundredNotOut is a raise of the bat, a tip of the hat.
I have just released my 100th module to CPAN, the first time that anyone has reached that target. As some of you may know, I am getting ready to go back to college and reinvent myself from being a programmer into being a missionary. I dont forsee that many more Perl modules coming out of this.
Of course, this doesnt mean that Im going to abjure usage of Perl forever; any time theres a computer and something I need automated, out will come the Swiss Army Chainsaw and the job will get done. In fact, we recently needed to manipulate some text from a mission handbook to translate it into Japanese, and Perl was there handling and collating all that.
But 100 modules is a convenient place to stop and take stock, and I hope that those of you who have benefitted from my modules, programs or writing about Perl will forgive me a certain spot of self-indulgence as I look back over my CPAN career, especially since I feel that the diversity of modules that Ive produced is a good indication of the diversity of what can be done with Perl.
Lets begin, then, with some humble beginnings, and then catch up on recent history.
The Embarrassing Past
Contrary to popular belief, I was not always a CPAN author. I started writing modules in 1998, immediately after reading the first edition of the Perl Cookbook - yes, you can blame Nat and Tom for all this. The first module that I released was Tie::DiscoveryHash, since Id just learnt about tied hashes. As with many of my modules, it was an integral part of another software project which I actually never finished, and now cant find.
The first module that I ever wrote (but, by a curious quirk of fate, precisely the fiftieth module I released) was called String::Tokeniser, which is still a reasonably handy way of getting an iterator over tokenising a string. (Someone recently released String::Tokenizer, which makes me laugh.) This too was for an abortive project, webperl, an application of Don Knuths WEB system of structured documentation to Perl. However, given the code quality of these two modules, its perhaps just as well that the projects never saw the light of day.
There are a few other modules Id rather like to forget, too. Devel::Pointer was a sick joke that went badly wrong - it allowed people to use pointers in Perl. Some people failed to notice that referring to memory locations directly in an extremely high-level language was a dangerous and silly thing to do, and actually used the damned thing, and I started getting requests for support for it. Then at some point in 2001, when I should really have known better, I developed an interest in Microsofts .NET and the C# language, which I still think is pretty neat; but I decided it might be a good idea to translate the Mono projects tokenizer and parser into Perl, ending up with C::Sharp. I never got around to doing the parser part, or indeed anything else with it, and so it died a lonely death in a dark corner of CPAN. GTK::HandyClist was my foray into programming graphical applications, which started and ended there.
Bundle::SDK::SIMON was actually the slides from a talk on my top ten favourite CPAN modules - except that this changes so quickly over time, it doesnt really make much sense any more.
Finally, Array::FileReader was an attempt to optimize a file access process. Unfortunately, my "optimization" ended up introducing more overheads than the naive solution. It all goes to show. Since then, Mark-Jason Dominus, another huge influence in the development of my CPAN career, has written Tie::File, which not only has a better name but is actually efficient too.
The Internals Phase
1999-2000 were disastrous years for me personally but magnificent years Perl-sonally. Stuck in a boring job and a tiny flat in the middle of Tokyo, I had plenty of time to get stuck into more Perl development. I felt that getting involved with perl5-porters would be a good way of gettting to know more about Perl, and so I needed a hobby horse - an issue of Perls development that I cared about. Since I was in Japan and working a lot with non-Latin text, Unicode support seemed a good thing to work on, and so Unicode::Decompose appeared, while I fixed up a substantial part of the post-5.6 core Unicode support.
Id recommend this way to anyone who wants to get more involved in the Perl community, although I was very lucky in terms of who else happened to be around at the time: Gurusamy Sarathy was extremely gracious in helping me turn my fledgling C code into something fit for the Perl core, and he also helped me understand the perl5-porters etiquette (yes, there was some at the time) and what makes a good patch, while Jarkko Hietaniemi was always good for suggestions of interesting things for keen people to work on. Seriously, get involved. If I can do it, anyone can.
Anyway, this fixation with understanding the Perl 5 internals, and especially the Perl 5 compiler, (due to yet another of my Perl influences, the great Malcolm Beattie) led to quite a torrent of modules, from ByteCache, an implementation of just-in-time compilation for Perl modules, through B::Flags and B::Tree to help visualising the Perl op tree, to uninit, B::Generate, optimizer and B::Utils for modifying it.
Perl About The House
Now we abandon chronological order somewhat and take a look at the various areas in which Ive used Perl. One of these areas has been the automation of everyday life: checking my bank balance with Finance::Bank::LloydsTSB (the first Perl module to interface to personal internet banking, no less) and my phone bill with a release of Tony Bowdens Data::BT::PhoneBill.
Finance::Bank::LloydsTSB was meant to go with Finance::QIF, my Quicken file parser, to produce another now-abandoned idea, a Perl finances manager. It seemed that Im only capable of producing modules, not full standalone applications - or at least, it seemed that way until I produced Bryar, my blogging software, based on the concepts from Rael Dornfests blosxom and beginning my adventures with Andy Wardleys Template Toolkit. Bryar also tuned me in to the Model-View-Controller framework idea, of which more later.
Another project I briefly played with was a personal robot, using the Sphinx/Festival speech handling and recognition modules from Cepstral and Kevin Lenzo. I didnt have X10, so I couldnt shout "lights" into the air in a wonderfully scifi way, but I could shout "mail" and have a summary of my inbox read to me, "news" to get the latest BBC news headlines, and "time" to hear the time. Of course, getting computers to tell the time nicely takes a little bit of work. I dont like "Its eleven oh-three pee em", since thats not what someone would say if you asked them the time. I wanted my robot to say "Its just after eleven", and thats what Time::Human does. Shame about the localisation.
<<lessI have just released my 100th module to CPAN, the first time that anyone has reached that target. As some of you may know, I am getting ready to go back to college and reinvent myself from being a programmer into being a missionary. I dont forsee that many more Perl modules coming out of this.
Of course, this doesnt mean that Im going to abjure usage of Perl forever; any time theres a computer and something I need automated, out will come the Swiss Army Chainsaw and the job will get done. In fact, we recently needed to manipulate some text from a mission handbook to translate it into Japanese, and Perl was there handling and collating all that.
But 100 modules is a convenient place to stop and take stock, and I hope that those of you who have benefitted from my modules, programs or writing about Perl will forgive me a certain spot of self-indulgence as I look back over my CPAN career, especially since I feel that the diversity of modules that Ive produced is a good indication of the diversity of what can be done with Perl.
Lets begin, then, with some humble beginnings, and then catch up on recent history.
The Embarrassing Past
Contrary to popular belief, I was not always a CPAN author. I started writing modules in 1998, immediately after reading the first edition of the Perl Cookbook - yes, you can blame Nat and Tom for all this. The first module that I released was Tie::DiscoveryHash, since Id just learnt about tied hashes. As with many of my modules, it was an integral part of another software project which I actually never finished, and now cant find.
The first module that I ever wrote (but, by a curious quirk of fate, precisely the fiftieth module I released) was called String::Tokeniser, which is still a reasonably handy way of getting an iterator over tokenising a string. (Someone recently released String::Tokenizer, which makes me laugh.) This too was for an abortive project, webperl, an application of Don Knuths WEB system of structured documentation to Perl. However, given the code quality of these two modules, its perhaps just as well that the projects never saw the light of day.
There are a few other modules Id rather like to forget, too. Devel::Pointer was a sick joke that went badly wrong - it allowed people to use pointers in Perl. Some people failed to notice that referring to memory locations directly in an extremely high-level language was a dangerous and silly thing to do, and actually used the damned thing, and I started getting requests for support for it. Then at some point in 2001, when I should really have known better, I developed an interest in Microsofts .NET and the C# language, which I still think is pretty neat; but I decided it might be a good idea to translate the Mono projects tokenizer and parser into Perl, ending up with C::Sharp. I never got around to doing the parser part, or indeed anything else with it, and so it died a lonely death in a dark corner of CPAN. GTK::HandyClist was my foray into programming graphical applications, which started and ended there.
Bundle::SDK::SIMON was actually the slides from a talk on my top ten favourite CPAN modules - except that this changes so quickly over time, it doesnt really make much sense any more.
Finally, Array::FileReader was an attempt to optimize a file access process. Unfortunately, my "optimization" ended up introducing more overheads than the naive solution. It all goes to show. Since then, Mark-Jason Dominus, another huge influence in the development of my CPAN career, has written Tie::File, which not only has a better name but is actually efficient too.
The Internals Phase
1999-2000 were disastrous years for me personally but magnificent years Perl-sonally. Stuck in a boring job and a tiny flat in the middle of Tokyo, I had plenty of time to get stuck into more Perl development. I felt that getting involved with perl5-porters would be a good way of gettting to know more about Perl, and so I needed a hobby horse - an issue of Perls development that I cared about. Since I was in Japan and working a lot with non-Latin text, Unicode support seemed a good thing to work on, and so Unicode::Decompose appeared, while I fixed up a substantial part of the post-5.6 core Unicode support.
Id recommend this way to anyone who wants to get more involved in the Perl community, although I was very lucky in terms of who else happened to be around at the time: Gurusamy Sarathy was extremely gracious in helping me turn my fledgling C code into something fit for the Perl core, and he also helped me understand the perl5-porters etiquette (yes, there was some at the time) and what makes a good patch, while Jarkko Hietaniemi was always good for suggestions of interesting things for keen people to work on. Seriously, get involved. If I can do it, anyone can.
Anyway, this fixation with understanding the Perl 5 internals, and especially the Perl 5 compiler, (due to yet another of my Perl influences, the great Malcolm Beattie) led to quite a torrent of modules, from ByteCache, an implementation of just-in-time compilation for Perl modules, through B::Flags and B::Tree to help visualising the Perl op tree, to uninit, B::Generate, optimizer and B::Utils for modifying it.
Perl About The House
Now we abandon chronological order somewhat and take a look at the various areas in which Ive used Perl. One of these areas has been the automation of everyday life: checking my bank balance with Finance::Bank::LloydsTSB (the first Perl module to interface to personal internet banking, no less) and my phone bill with a release of Tony Bowdens Data::BT::PhoneBill.
Finance::Bank::LloydsTSB was meant to go with Finance::QIF, my Quicken file parser, to produce another now-abandoned idea, a Perl finances manager. It seemed that Im only capable of producing modules, not full standalone applications - or at least, it seemed that way until I produced Bryar, my blogging software, based on the concepts from Rael Dornfests blosxom and beginning my adventures with Andy Wardleys Template Toolkit. Bryar also tuned me in to the Model-View-Controller framework idea, of which more later.
Another project I briefly played with was a personal robot, using the Sphinx/Festival speech handling and recognition modules from Cepstral and Kevin Lenzo. I didnt have X10, so I couldnt shout "lights" into the air in a wonderfully scifi way, but I could shout "mail" and have a summary of my inbox read to me, "news" to get the latest BBC news headlines, and "time" to hear the time. Of course, getting computers to tell the time nicely takes a little bit of work. I dont like "Its eleven oh-three pee em", since thats not what someone would say if you asked them the time. I wanted my robot to say "Its just after eleven", and thats what Time::Human does. Shame about the localisation.
Download (0.014MB)
Added: 2006-06-08 License: Perl Artistic License Price:
1233 downloads
GO::Model::Term 0.04
GO::Model::Term is a term or concept in an ontology. more>>
GO::Model::Term is a term or concept in an ontology.
SYNOPSIS
# From a file
use GO::Parser;
my $parser = new GO::Parser({handler=>obj}); # create parser object
$parser->parse("gene_ontology.obo"); # parse file -> objects
my $graph = $parser->handler->graph; # get L object
my $term = $graph->get_term("GO:0001303"); # fetch a term by ID
printf "Term %s %sn", $term->name, $term->acc;
# From a GO Database (requires go-db-perl)
my apph = GO::AppHandle->connect(-dbname=>$dbname);
my $term = $apph->get_term({acc=>00003677});
printf "Term:%s (%s)nDefinition:%snSynonyms:%sn",
$term->name,
$term->public_acc,
$term->definition,
join(", ", @{$term->synonym_list});
Represents an Ontology term; the same class is used for process, compartment and function
currently, a Term is not aware of its Relationships; to find out how a term is related to other terms, use the a GO::Model::Graph object, which will give you the GO::Model::Relationship objects; for example
$rels = $graph->get_parent_relationships($term->acc);
<<lessSYNOPSIS
# From a file
use GO::Parser;
my $parser = new GO::Parser({handler=>obj}); # create parser object
$parser->parse("gene_ontology.obo"); # parse file -> objects
my $graph = $parser->handler->graph; # get L object
my $term = $graph->get_term("GO:0001303"); # fetch a term by ID
printf "Term %s %sn", $term->name, $term->acc;
# From a GO Database (requires go-db-perl)
my apph = GO::AppHandle->connect(-dbname=>$dbname);
my $term = $apph->get_term({acc=>00003677});
printf "Term:%s (%s)nDefinition:%snSynonyms:%sn",
$term->name,
$term->public_acc,
$term->definition,
join(", ", @{$term->synonym_list});
Represents an Ontology term; the same class is used for process, compartment and function
currently, a Term is not aware of its Relationships; to find out how a term is related to other terms, use the a GO::Model::Graph object, which will give you the GO::Model::Relationship objects; for example
$rels = $graph->get_parent_relationships($term->acc);
Download (0.58MB)
Added: 2006-10-02 License: Perl Artistic License Price:
1117 downloads
FeedBite Feed Me 0.1
FeedBite Feed Me is a Firefox extension that adds Feed Me to the right-click and Tools menu. more>>
FeedBite Feed Me is a Firefox extension that adds Feed Me to the right-click and Tools menu. Use this option to easily add the current page to your FeedBite news blog (custom rss feed).
<<less Download (0.010MB)
Added: 2007-06-06 License: MPL (Mozilla Public License) Price:
871 downloads
PGID3 Tag Editor 2.02
PGID3 is an ID3v1 and v2 tag editor for manipulating the information on files such as MP3s. more>>
PGID3 is an ID3v1 and v2 tag editor for manipulating the information on files such as MP3s. PGID3 Tag Editor project is written in PHP and uses PHP-GTK, so it can take advantage of the GTK+ Toolkit for rendering a GUI.
The program itself is broken into three parts, a PHP Function Library called Pid Three (Pid3), a PHP CLI interface (PCLID3), and the GTK+ GUI itself. All three parts come together ready to go, so do not go freaking about uber amounts of dependencies to fill. All together they create the PGID3 Tag Editor.
"But Bob," you might say, "PHP is for the web!" Sure it is, but you should then check out the link below for the PHP Command Line Interface. That document describes using PHP to develop shell and desktop applications. Why PHP? Because I like to abuse it, that is a little hobby of mine.
Simply, PGID3 is an ID3 tag editor for MP3 files. The ID3 tags are what tell your media player the information about the tune such as title, album, etc. You can get by with slack tags if you just use a player like XMMS or Winamp, but if you have a portable like an iPod or some kind of database for the files, then correct and neat tags are a must. PGID3 can handle both the v1 and v2 of ID3 tags.
As for the program itself, it is the combonation of three seperate pieces that together work to create a user friendly envrionment to manipulate your ID3 tags. The base of it all is the Pid Three Function library, which is a fully custom set of functions for the reading and writing of ID3 tags. Since these are seperate from the application itself, the actual dirty work of messing with the data can be easily updated as well as easily included into other projects.
The second part of PGID3 is the Command Line Interface that I have lovingly called PCLID3. Using this you can manipulate your tags from the command line without using any type of graphical front end. By not having this built into the GUI, the opportunity is left open to build alternate GUIs, or even just not use any at all.
The third and final piece is the PHP-GTK GUI. This is the actual PGID3 component, though all of the parts together form a complete package under the PGID3 name. I designed this GUI to be light, compact, and solve as many problems in one spot as possible. As a bonus feature, PGID3 has built in intergration with QueryXMMS which is a command line utility for Linux that can ask XMMS what is currently playing so PGID3 can open it. This speeds up editing of playlists considerably.
Enough acronymns, what about features? Well, it is an ID3 editor so the features I would expect to find in one is what it has. It has the ability to read, write, and strip ID3v1 and ID3v2 tags from files. You can open a file from anywhere in the filesystem with a dialog, or using the above mentioned QueryXMMS integration you can zap right to whatever XMMS is playing.
If you leave the comment field blank when you write a tag, it fills it in automaticly with "Tagged by PGID3" which might be an easily disabled in future releases - depends if I get any feedback on that. It also automaticly removes excess whitespace on the end of tags which if I recall correctly happens because Winamp pads with spaces instead of nuls. Anyway it cleans that for you. Stripping a tag automaticly unchecks the related checkbox for writing it back, and the boxes are dynamicly checked as you load a file depending if it already has a v1 or v2 tag.
There are also a few keyboard shortcuts. F1 toggles the Write ID3v1 checkbox, and F2 toggles the Write ID3v2 one. F9 opens the currently playing file in XMMS, and naturally Enter writes tags.
<<lessThe program itself is broken into three parts, a PHP Function Library called Pid Three (Pid3), a PHP CLI interface (PCLID3), and the GTK+ GUI itself. All three parts come together ready to go, so do not go freaking about uber amounts of dependencies to fill. All together they create the PGID3 Tag Editor.
"But Bob," you might say, "PHP is for the web!" Sure it is, but you should then check out the link below for the PHP Command Line Interface. That document describes using PHP to develop shell and desktop applications. Why PHP? Because I like to abuse it, that is a little hobby of mine.
Simply, PGID3 is an ID3 tag editor for MP3 files. The ID3 tags are what tell your media player the information about the tune such as title, album, etc. You can get by with slack tags if you just use a player like XMMS or Winamp, but if you have a portable like an iPod or some kind of database for the files, then correct and neat tags are a must. PGID3 can handle both the v1 and v2 of ID3 tags.
As for the program itself, it is the combonation of three seperate pieces that together work to create a user friendly envrionment to manipulate your ID3 tags. The base of it all is the Pid Three Function library, which is a fully custom set of functions for the reading and writing of ID3 tags. Since these are seperate from the application itself, the actual dirty work of messing with the data can be easily updated as well as easily included into other projects.
The second part of PGID3 is the Command Line Interface that I have lovingly called PCLID3. Using this you can manipulate your tags from the command line without using any type of graphical front end. By not having this built into the GUI, the opportunity is left open to build alternate GUIs, or even just not use any at all.
The third and final piece is the PHP-GTK GUI. This is the actual PGID3 component, though all of the parts together form a complete package under the PGID3 name. I designed this GUI to be light, compact, and solve as many problems in one spot as possible. As a bonus feature, PGID3 has built in intergration with QueryXMMS which is a command line utility for Linux that can ask XMMS what is currently playing so PGID3 can open it. This speeds up editing of playlists considerably.
Enough acronymns, what about features? Well, it is an ID3 editor so the features I would expect to find in one is what it has. It has the ability to read, write, and strip ID3v1 and ID3v2 tags from files. You can open a file from anywhere in the filesystem with a dialog, or using the above mentioned QueryXMMS integration you can zap right to whatever XMMS is playing.
If you leave the comment field blank when you write a tag, it fills it in automaticly with "Tagged by PGID3" which might be an easily disabled in future releases - depends if I get any feedback on that. It also automaticly removes excess whitespace on the end of tags which if I recall correctly happens because Winamp pads with spaces instead of nuls. Anyway it cleans that for you. Stripping a tag automaticly unchecks the related checkbox for writing it back, and the boxes are dynamicly checked as you load a file depending if it already has a v1 or v2 tag.
There are also a few keyboard shortcuts. F1 toggles the Write ID3v1 checkbox, and F2 toggles the Write ID3v2 one. F9 opens the currently playing file in XMMS, and naturally Enter writes tags.
Download (0.008MB)
Added: 2006-09-14 License: GPL (GNU General Public License) Price:
1142 downloads
Pauls Train Tracker 1.0
Pauls Train Tracker allows you to create folders to organize your model train inventory more>>
Pauls Train Tracker is a Zope application. I wrote it for my father, thats Paul, while I was learning to develop for the Zope application server. Since hes found it useful, I thought Id share it with the Open Source community via the GPL.
Pauls Train Tracker allows you to create folders to organize your model train inventory. Pauls Train Tracker uses the Zope Database to store the following inforamtion about each item:
- name
- description
- brand
- model
- serial number
- comments
- picture
While this application is far from mature, it is still quite useful. Hopefully as time passes, this application will gain additional features as development continues.
<<lessPauls Train Tracker allows you to create folders to organize your model train inventory. Pauls Train Tracker uses the Zope Database to store the following inforamtion about each item:
- name
- description
- brand
- model
- serial number
- comments
- picture
While this application is far from mature, it is still quite useful. Hopefully as time passes, this application will gain additional features as development continues.
Download (0.35MB)
Added: 2006-06-22 License: GPL (GNU General Public License) Price:
1220 downloads
GnomeBaker 0.6.0
GnomeBaker is a Gnome CD/DVD burning application. more>>
GnomeBaker is a GTK2/Gnome CD/DVD burning application. Ive been writing it in my spare time so progress is fairly slow.
Its more of a personal project as I wanted to have a go at developing on Linux and I figured that as I had got this far I may as well let it loose on the world. Maybe someone will like it and use it.
It requires a recent version of cdtools (cdrecord, readcd, cdda2wav and mkisofs), version 2 or greater should be okay.
Main features:
- Create data cds
- Blank rewritable disks
- Copy data cds
- Copy audio cds
- Burn existing cd iso images
- Can burn via scsi and atapi on linux kernels 2.4 and 2.6. Basically if cdrecord works then GnomeBaker will work.
- Drag and drop to create data cds (including DnD to and from nautilus)
- Create audio cds from existing wavs, mp3, flac and oggs
- Integrate with gconf for storage of application settings
- Burn DVDs.
- Supports multisession burning
- Blank/Format DVDs
- Burn Cue/Bin files
- Burn data cds on the fly
<<lessIts more of a personal project as I wanted to have a go at developing on Linux and I figured that as I had got this far I may as well let it loose on the world. Maybe someone will like it and use it.
It requires a recent version of cdtools (cdrecord, readcd, cdda2wav and mkisofs), version 2 or greater should be okay.
Main features:
- Create data cds
- Blank rewritable disks
- Copy data cds
- Copy audio cds
- Burn existing cd iso images
- Can burn via scsi and atapi on linux kernels 2.4 and 2.6. Basically if cdrecord works then GnomeBaker will work.
- Drag and drop to create data cds (including DnD to and from nautilus)
- Create audio cds from existing wavs, mp3, flac and oggs
- Integrate with gconf for storage of application settings
- Burn DVDs.
- Supports multisession burning
- Blank/Format DVDs
- Burn Cue/Bin files
- Burn data cds on the fly
Download (1.1MB)
Added: 2006-09-16 License: GPL (GNU General Public License) Price:
1151 downloads
Games::Go::AGATourn 1.035
AGATourn is a Perl extensions to ease the pain of using AGA tournament data files. more>>
AGATourn is a Perl extensions to ease the pain of using AGA tournament data files.
SYNOPSIS
use Games::Go::AGATourn;
my $agaTourn = Games::Go::AGATourn->new (options);
An AGATourn object represents a round or several rounds of an American Go Association tournament. There are methods for parsing several type of AGA file format:
tdlist
The entire list of AGA members including playing strength, club affiliation, and some other stuff.
register.tde
The starting point for a tournament. All players in a tournament must be entered in the register.tde file.
round results: 1.tde, 2.tde, etc.
Game results for each round of the tournament.
A note on IDs: in general, hashes in an AGATourn object are keyed by the AGA ID. An AGA ID consists of a three letter country specifier (like USA or TMP for temporary IDs) concatenated to an integer. Here we specify the three letter country specifier as the country and the integer part as the agaNum. The country concatenated with the agaNum is the ID. My ID for example is USA2122. IDs should be normalized (capitalize the country part and remove preceding 0s from the agaNum part) with the NormalizeID method (below).
Note also that some programs may accept limited integers in the agaNum part of the ID. Accelerat, for example, seems to accept only up to 32K (someone used a signed short somewhere?)
<<lessSYNOPSIS
use Games::Go::AGATourn;
my $agaTourn = Games::Go::AGATourn->new (options);
An AGATourn object represents a round or several rounds of an American Go Association tournament. There are methods for parsing several type of AGA file format:
tdlist
The entire list of AGA members including playing strength, club affiliation, and some other stuff.
register.tde
The starting point for a tournament. All players in a tournament must be entered in the register.tde file.
round results: 1.tde, 2.tde, etc.
Game results for each round of the tournament.
A note on IDs: in general, hashes in an AGATourn object are keyed by the AGA ID. An AGA ID consists of a three letter country specifier (like USA or TMP for temporary IDs) concatenated to an integer. Here we specify the three letter country specifier as the country and the integer part as the agaNum. The country concatenated with the agaNum is the ID. My ID for example is USA2122. IDs should be normalized (capitalize the country part and remove preceding 0s from the agaNum part) with the NormalizeID method (below).
Note also that some programs may accept limited integers in the agaNum part of the ID. Accelerat, for example, seems to accept only up to 32K (someone used a signed short somewhere?)
Download (0.015MB)
Added: 2007-01-02 License: Perl Artistic License Price:
1025 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above come and go with me to my father s house search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed