july morning uriah heep
Acme::MorningMusume::Base 0.07
Acme::MorningMusume::Base is a baseclass of the class represents each member of Morning Musume. more>>
SYNOPSIS
use Acme::MorningMusume;
my $musume = Acme::MorningMusume->new;
# retrieve the members as a list of
# Acme::MorningMusume::Base based objects
my @members = $musume->members;
for my $member (@members) {
my $name_ja = $member->name_ja;
my $first_name_ja = $member->first_name_ja;
my $family_name_ja = $member->family_name_ja;
my $name_en = $member->name_en;
my $first_name_en = $member->first_name_en;
my $family_name_en = $member->family_name_en;
my $nick = $member->nick; # arrayref
my $birthday = $member->birthday; # Date::Simple object
my $age = $member->age;
my $blood_type = $member->blood_type;
my $hometown = $member->hometown;
my $emoticon = $member->emoticon; # arrayref
my $class = $member->class;
my $graduate_date = $member->graduate_date; # Date::Simple object
my $count;
my $images = $member->images(limit => 5);
while (my $image = $images->next) {
$count++;
my $content_url = $image->content_url;
my $context_url = $image->context_url;
$image->save_content(base => image . $count);
$image->save_context(base => page . $count);
}
}
Acme::MorningMusume::Base is a baseclass of the class represents each member of Morning Musume.
Apalogretrieve 0.9.2
Apalogretrieve program retrieves data from an Apache logfile with a syntax, that is derived (a subset of) the SQL language. more>>
The idea to make such an implementation came up at 17th of July 2007. I just started it then.
The basic idea of using an SQL-like dialect for logfile-analysis I had many years ago, but as there was no necessity, I didnt started a project like this.
The reason why I started to implement it now is, that the idea about SQL-querying of a logfile was now of interest to me, because I hated the way, how webalizer does it: you have graphical results very easy, but how to make detailed lookups to certain information? And: what about the delay until the (averaging) data can be seen in the graphs, and other problems, when changing a webalizer.conf-file?
So, this was the reason to start it.
As I not every day have the time to implement it, and only do it in a spare time window, it might need some time to make it ready, but reading Apaches common logfile-format as well as parsing simple SQL-like SELECT statements already works (19th of July 2007).
Usage Example:
SELECT host,date FROM "apache-commonlog.log" where size > 2000;
SELECT host,date,client,referrer FROM "apache-commonlog.log" where host = "foobar.host.net";
Liquid Sunrise 0.2
Liquid Sunrise is a SuperKaramba theme for people who want to monitor sunrise and sundown. more>>
If you want to use a background picture (e.g. included bg.png or bg2.png) just edit line 2 in the theme file: bg.png is activated by default in the German version, bg2.png in the English version as example.
Image of morning and evening sun is taken from liquid weather theme Kapsules, meridian sun is from default liquid theme.
Based on the Crystal Sunrise Theme by Daniel Pathmaperuma (http://www.kde-look.org/content/show.php/crystal_sunrise?content=54805) which is based on sunrise-theme by Flavio Cardone (http://www.kde-look.org/content/show.php/sunrise?content=25030) - an even more shameless port ;).
This theme needs the sunwait application: http://www.risacher.org/sunwait/
BTW: If you are looking for a french version: chepioq has adapted my theme:
http://www.kde-look.org/content/show.php/liquid+sunrise+french?content=55332
Tk::Month 1.4
Tk::Month is a calendar widget which shows one month at a time. more>>
SYNOPSIS
use Tk;
use Tk::Month;
$m = $parent->Month(
-month => July,
-year => 1997,
-title => %b %y,
-command => &press,
-printformat => %e,
-navigation => [0|1],
-includeall => [0|1],
-showall => [0|1],
-first => [0|1|2|3|4|5|6],
)->pack();
$m->configure(
-month => July,
-year => 1997,
-command => &press,
-printformat => %e %B %Y %A,
-navigation => [0|1],
-includeall => [0|1],
-showall => [0|1],
-first => [0|1|2|3|4|5|6],
);
$m->separator();
$m->command(
-label => Label,
-command => &callback,
);
Nightfall 1.62
Nightfall is a eclipsing binary star program. more>>
Nightfall comes with a user guide, and a set of observational data for several eclipsing binary star systems.
Nightfall is a mildly ultramundane code of baroque complexity (I like Verdi and Haendel on lazy sunday mornings - friday evenings are better with Iron Maiden and a good whisky).
Nightfall is based on a physical model that takes into account the nonspherical shape of stars in close binary systems, as well as mutual irradiance of both stars, and a number of additional physical effects.
Nightfall can handle a large range of configurations, including overcontact (common envelope) systems, eccentric (non-circular) orbits, surface spots and asynchroneous rotation (stars rotating slower or faster than the orbital period), and the possible existence of a third star in the system (third light).
Nightfall is distributed under the terms of the GNU Public License and comes without any warranty.
Installation
gunzip -c nightfall-1.42.tar.gz | tar -xvf -
cd nightfall-1.42/
./DoInstall.sh
DoInstall.sh is an interactive shell script to guide you through the installation. If you prefer to do it by hand, use the following sequence of commands:
gunzip -c nightfall-1.42.tar.gz | tar -xvf -
cd nightfall-1.42/
./configure
make
make install
Enhancements:
- This version fixes a bug in the configuration file parser that caused the disk to be switched on even if no disk was specified in the configuration file.
loadwatch 1.1a1
loadwatch project allows a single child process to run only when the load on a machine is within certain bounds. more>>
The process is only restarted when the machines load drops below the low load mark. The load is checked at a user definable interval. loadwatch is distributed under the GNU GPL.
Usage:
loadwatch [-d < time>] [-h < load>] [-l < load>] [-n < copies] [-p < pid>] [-- < command>]
-d < int> load sampling interval (10 seconds)
-h < float> high load mark (1.25)
-l < float> low load mark (0.25)
-n < copies> number of children to fork (1)
-u < filename> file that will be used to externally control a
loadwatch process.
-p < pid> pid of process to control (loadwatch will actually
send signals to the group containing this pid)
NOTE: -p and < command> are mutually exclusive, but one has to be
specified.
Example:
loadwatch -d 10 -h 1.25 -l .25 -- ./rc5des
which means: check the load every 10 seconds, stop rc5des when the load is
greater than 1.25 and restart rc5des when the load drops to .25.
lw-ctl < filename> < cmd>
< filename> is the control file, this corresponds to a unix domain
socket.
< cmd> is the command to send to the loadwatch process.
RUN -> put loadwatch into RUN mode, that is the child process
runs regardless of the load.
STOP -> put loadwatch into STOP mode, that is, the child
process will not run regardless of the load.
WATCH -> WATCH mode, the normal load watching mode.
Example:
lw-ctl ./fooey RUN
Causes the loadwatch process (if it was started with "-u ./fooey") to go
into RUN mode. you could put lw-ctl in a cron job that runs in the
morning to put the job in STOP mode and then again in the evening to put
the job back into WATCH mode.
The children which loadwatch forks are all part of the same process group.
loadwatch stops and starts the processes by signalling the process
group with SIGSTOP and SIGCONT respectively.
Send suggestions and bug reports to . if you do anything
interesting with loadwatch, let me know. i use it for controlling the
distributed.net clients, but i figure itd be good to control thinks like
crack as well.
Quantian 0.7.9.2
The Quantian Scientific Computing Environment is a Knoppix / Debian variant tailored to numerical and quantitative analysis. more>>
Recent versions of Quantian are based on clusterKnoppix and add support for openMosix, including remote booting of light clients in an openMosix terminal server context. Earlier releases are still available; see below for URLs for downloads as well as ordering information.
Brief introductory information is available in a paper (from June 2004) submitted to The Political Methodologist, slides from the presentation at Usenix 2004 (July 2004), and in the earlier (revised) paper about Quantian that has appeared in the DSC 2003 Proceedings.
Quantian is an extension of Knoppix and clusterKnoppix from which it takes its base system of around two gigabytes of software, along with fully automatic hardware detection and configuration.
Enhancements:
- Kernel 2.6.12, KDE 3.5 / 3.4, OpenOffice 2.0, ... and more from Knoppix 4.0.2
- a backport of the openMosix-enabled 2.4.27 kernel and openMosix tools from the last clusterKnoppix release,
- very comprehensive support for GNU R with over 870 packages from CRAN and BioConductor, plus ESS, Ggobi, Rpad, RKward, RSPerl, JGR, ...
- addition of the Java 1.5.0 SDK enabling us to add ImageJ, Weka, JGR, Mondrian;
- plus a number of other new packages (inkscape, orsa, praat, wxmaxima, some more Debian documentation...)
- and still loads more of math, bio, engineering, LaTeX, ... software
Donkey Bolonkey 1.0
Donkey Bolonkey is an arcade game where you have to match donkeys by using a bubble as a trap. more>>
Donkey Bolonkey is my entry for the SpeedHack 2001, a competition of creation of video games with the Allegro library in just three days, that is to say, to make a complete game, with graphics, sounds, musics and EVERYTHING!... IN JUST SINGLE THREE DAYS!!!...
The game is a clone of the Rat Poker (a game created by the same author of the TETRIS) only that with donkeys, and some 200 times more bloodier.
I cannot add many things, but I can only say that this of the SpeedHack is a competition that needs dedication and effort, I personally could make this game breaking the head against the table, I was almost the 3 days to the maximum, I went to bed at 3am oclock I got up at 8am oclock, less the last day (on Monday 29) that fell asleep at 5 in the morning.
SKForum 1.5
SKForum project is a forum application with a Wiki, comic system, guestbook, and address book. more>>
SKForum is an open source (see licensing) web-based J2EE forum application. But its so much more, its a comic system, an addressbook, a wiki, a timetracking system, a todo list, a poll system, a guestbook system and a few other small nuts and bolts.
SKForum was first taken into use in september of 2000. By july of 2001 it had grown to 6 464 lines of code, and at october 2003 it is at 49 067 lines total. Of these 37 596 are java source file lines.
Internationalization
SKForum has i18n support and supports the following languages:
- English (US)
- Swedish (SE)
- French (FR)
Installation howto
1. Install mysql.
2. Create a database in mysql called "forum".
3. Install Java 2 SDK
4. Install a J2EE servlet container, I recommend Resin 2.x (it is also a webserver and can be integrated with IIS or Apache if you want)
5. Get the SKForum WAR file.
6. Make sure theres no caching done on the forum, resin for example has a default caching setting, remove the part of the config.
7. Install the forum as a toplevel app. It will currently not work unless "/" leads to its own top level.
8. Set up the data sources. If needed install the JDBC driver in the servlet container (get the mysql driver here).
Setup data source in Resin 2.x
Setup data source in Resin 3.x
Setup data source in Orion
9. This step only if you do not use Resin: If you use tomcat, remove web.xml and rename tomcat-web.xml to web.xml. Otherwise comment out the parts of web.xml that is marked "resin specific" that your server does not support.
10. Get the mysql jdbc driver and put it in your app servers lib directory.
11. Login with the username and password you want for the admin account. The first person who logs into the forum will get full rights and be set up as admin by default.
Enhancements:
- features:
- tasks system added
- description field for areas
- add/remove areas to/from hotlist inside the area
- invitation support for user groups
- planning warns for close events in the hotlist
- custom area type: quotes
- custom area type: pictures
- custom area type: links
- wiki URL rewriting for good wiki URLs
- editing and posting redirects instead of forwards, no more issues with reposting
- added login success/failure logging to database
- bugs:
- checkbox bug in IE fixed
- user addition delay fixed
- fixed address book VCS export for OS X
- planning info box at the bottom displayed at the top
- subscribe broken for comics
- shows deleted status for single-line messages in dynamic collapsing mode
- access rights to areas were ignored
- issue with hotlist resolved
- cant write in empty area
- editing of planning events sometimes fail
- sorting in archive is by unicode, not by character
- improvements:
- switched all maps and arrays to use fastutil
- zip download for archive give a good filename
ChainBuilder ESB for Linux 2.0
ChainBuilder ESB is an open source solution for use in Service Oriented Architecture (SOA) environments. ChainBuilder ESB creates standards-based components though drag and drop graphical user interfa more>>
ChainBuilder ESB is an open source Enterprise Service Bus. ChainBuilder ESB allows IT developers with Service Oriented Architecture (SOA) infrastructures to create standards-based ESB components through Eclipse-based graphical user interfaces. Most organizations SOAs need to include strategic backend systems that operate with non-XML data formats and non-WebServices communication protocols. Bostech focus on usability ensured the initial offerings of ChainBuilder ESB had industry standard editors to manage EDI X12, HL7, fixed and variable formats and communication components for TCP/IP, FTP and file protocols and database components for JMS and ETL integrations - the formats and protocols that organizations with mature applications absolutely require. ChainBuilder ESB also has uncommon high-end open source features, like an AJAX-based Console web interface for monitoring and controlling the production environment, usually found only with expensive proprietary systems. Bostech Corporation is deploys a dual-license distribution model for ChainBuilder ESB. Developers can download the open source software for Windows, Linux and Unix under the common GPL license at http://www.chainforge.net. A commercial license and subscription support is also available for enterprises and software vendors.
System Requirements: P4/1GB ram/10GB HD min; dual 3.0Ghz/2GB ram preferred
System Requirements: 2.0, Oct 2008 1.3.1, July 2008, incls Java 6 1.2, Mar 2008, incls ETL and Vista 1.1, Aug 2007, incls HL7, POP3, SMTP and framework; 1.0, Jan 2007, incls console and JDBC support; Beta Release, Dec 2006, incls source code and Linux support; Alpha Release, Sep 2006, incls Windows support;
<<lessPlan 9 From User Space 20060727
Plan 9 From User Space is a port of the bulk of the Plan 9 software build environment to Unix. more>>
While the libraries make an attempt to play nice with the rest of the system (by using the Unix rules for printf verbs and Unix system headers, for example), this port tries to reproduce the Plan 9 build environment as faithfully as possible, providing u.h and libc.h, and blithely redefining tokens such as open, dup, and accept in order to provide implementations that better mimic the Plan 9 semantics.
The result is a more complicated and less Unix-friendly environment, but Plan 9 programs can typically be compiled with little or no changes.
Most obviously, plan9port derives from Plan 9 from Bell Labs and would not exist without the work of the Plan 9 team over the past many years.
Rob Pike suggested the original X11 port of libdraw years ago, as part of drawterm, and strongly encouraged the Mac OS X work. He has also been a consistent source of good ideas to hide the ugliness of modern Unix.
William Josephson handled troff(1) (with Taj Khattra) and many of the supporting programs. He also inspired the thread library clean-up and has ported a handful of applications.
Andrey Mirtchovski and Axel Belinfante have done significant work dealing with X11 corner cases and fine-tuning rio(1). Axel never tires of finding bugs in the SunOS port.
Latchesar Ionkov has contributed many fixes to tricky bugs, and got factotum(4) up and running.
Many other people have provided help, ported programs, written bug reports, sent useful patches, and gotten plan9port running on new systems.
Bigelow & Holmes, Inc. created the screen fonts in the luc, lucm, lucsans, and pelm directories and granted permission to redistribute them with plan9port.
Enhancements:
- A FUSE-related bug was fixed. See http://lists.cse.psu.edu/archives/9fans/2006-July/048531.html
Ice Hockey Manager 0.3
Ice Hockey Manager is a hockey simulator. more>>
While we want the game to be intuitive, we arent looking to compete with the flashy 3D graphics you might see in games from EA or Sega. Theyve pretty much cornered the market when it comes to pretty graphics.
Were more interested in games that challenge your mind and not your hand-eye coordination. We plan to take hockey simulators (and perhaps sports simulators in general) to places theyve never gone before, The way we see it, the possibilities are limitless, much like real life hockey.
While IHM may not have photorealistic facial features for every player model in the NHL we do strive to create a game that really does make you feel like you are at the helm of your own hockey franchise.
We first started developing IHM in late 2001 and the development team consisted of two members, Bernhard von Gunten and Arik Dasen. The first real release of the game was version 0.1.1 in January of 2002. The game was playable but still very basic, more intended as a framework for future development. In July of 2002, version 0.1.2 was released with many updates to the game but after this release the project essentially went on hiatus until September/October of 2004.
Up until that time the project hadnt garnered much interest from the open source community, either the project was too localized to Swiss-style hockey or it perhaps just didnt get the exposure needed to get people to jump onboard, whatever the reason, IHM seemed to be more of a labor of love than a project that perpetuated itself. Fortunately, in October 2004, development kicked back into gear and all sorts of new and exciting features started to take shape. Some of these features include computer AI, multiplayer-support, trading/transfers, sponsoring/finances, full season/playoffs simulation, etc.
And the IHM team is currently working towards version 0.3, which has been dubbed a "Preview Release" to demonstrate a fully-operational playable game. Will this Preview Release set any kind of standard as far as hockey simulators are concerned? No, not yet. In fact, many elements within the game are still rather simplified, such as in-game simulation (which will begin development post-0.2), but we hope the Preview Release will compel other open source developers to help out with the project as there is still a lot to be done before IHM can be considered a complete game.
This website is intended to both introduce you to the game as well as to encourage you to participate and/or contribute to this project in some way. Whether you are a Java developer, a graphic artist, a beta tester, or something else entirely, we want to hear from you. IHM cant build itself, and while we have invested many hours into the games development we still have our limitations as to what we can achieve, both in time and resources. So if you think you can help out in some way, please let us know. Ideally, you should be a fan of hockey, but thats about the only prerequisite.
Main features:
- Game controller, based on a game calendar.
- Multiuser framework
- League framework (Swiss style leagues implemented, including playoffs and relegations).
- Teams, with statistics and informations.
- Players with attributes, statistics, contracts and informations.
- Simulated matches with generated plays and "radio" output.
- Training
- Injuries
- Contracts framework
- Sponsoring framework, based on contracts
- Financial framework
- Real Impacts (on teams & players)
- Transfers (Swiss style)
- Infrastructure framework (Arena implemented)
- Prospects
- Assistants
- and more ...
Technical stuff:
- Written in 100% pure Java
- Running under Linux and Windows and every other Java 1.5 platform
- Swing GUI
- More than 200 java classes
- More than 30000 lines of code
phpsysinfo 2.5.2
phpSysInfo is a PHP script that displays information about the host being accessed. more>>
Just decompress and untar the source (which you should have done by now, if youre reading this...), into your webservers document root.
There is a configuration file called config.php.new. If this a brand new installation, you should copy this file to config.php and edit it.
make sure your php.ini files include_path entry contains "."
make sure your php.ini has safe_mode set to off.
Please keep in the mind that because phpSysInfo requires access to many files in /proc and other system binary you **MUST DISABLE** phps safe_mode. Please see the PHP documentation for information on how you can do this. If you use the apc pecl xtension with apc.optimization="1" then phpSysInfo will break in the XPath.class. Turn this option off, and it will work with apc.
Enhancements:
- tools/: GenerateCL.sh, README, debug.php: tools update
Yet Another Financial Manager 0.1
Yet Another Financial Manager (YAFM in short) is application to track Your expenses and incomes. more>>
The Difference
There are many programs to help manage Your finances.
So, why You should use YAFM?
First it is designed to be easy to use. It is not aimed to track every penny You spend, this would be annoying.
Second: it should be used as a tool to track spendings as exactly as You need. Don’t be stressed if some expences are not tracked or You have entered their approx value. YAFM is about helping You to know roughly how much and for what You are spending not making You feel bad, that expenses and incomes are not balanced up to penny. If You have enough patience to keep data 100% accurate - You will have very accurate results, good for You, but YAFM will not make troubles about coffee and doughnut this morning, You have forgot to enter.
YAFM BETA is free software, but version 1.0 will be commercial software. If You decide to donate me some money I promise You to get free 1.0 license. You can donate any amount, but if You would ask me how much I would say - 10 USD (1.0 pricing is not fixed but price will be somewhere between 10 and 20 USD).
This application is powered with Ruby on Rails and operated with browser locally. You need to have Ruby interpreter and sqlite installed. This means it can be run in Windows, Unix/Linux or Mac OS X environments.
For Windows (which I expect be to main platform for most users) there are sqlite .dlls provided with program.
Well… I’m using this program for myself from April 2006. I think for many people program like YAFM will be useful, so I decided give a try to release. Of course I’m releasing much more polished version than I use everyday, and also with much features missing. But I will successfully release next versions.
ferrisfuse 0.1.0
ferrisfuse is a FUSE module for mounting libferris filesystems through the Linux kernel. more>>
About libferris
In non technical terms libferris makes the file system and other hierarchical storage systems easier to use. For the geeks out there, libferris is a virtual file system (VFS) that runs in the user address space. The FAQ contains entries related to installation, configuration and the usage of libferris.
As of July 2005 libferris can mount many interesting things ranging from a filesystem from your local Linux kernel through to LDAP, Evolution, PostgreSQL, dbXML, and RDF. To get an impression of the current capabilities of libferris mounting see the plugins/context directory of the lastest release. New things to mount are always being added.
Other than mounting things as a filesystem, the other core concept of libferris is extraction of interesting metadata from your libferris filesystems. This means that simple things like width and height of an image file become first class metadata citizens along with a files size and modification time. The limits on what metadata is available extend far beyond image metadata to include XMP, EXIF, music ID tags, geospatial tags, rpm metadata, SELinux integration, partially ordered emblem categories and arbitrary personal RDF stores of metadata.
Though some consider the last point of purely academic interest the end result is that you can add metadata to *all* libferris objects even those you only have read access too, for example, you can attach emblems to this website just as you would a normal file. The metadata interface gives all metadata from file size to digital signature status information equal standing. As such you can sort a directory by any metadata just as easily as you would ls -Sh to sort by file size. Sorting on multiple metadata values is also supported in libferris, you can easily sort your files by mimetype, then image width, then modification time with all three pieces of metadata contributing to the final directory ordering.
Late in 2004 extensive support for both fulltext and metadata indexing was added to libferris. This means you can supply queries against the contents or metadata of any libferris accessable object and have the results returned as a virtual filesystem. With the above mentioned metadata available for searching, finding your files can be done in many different ways instead of being forced to generate fixed directory trees using part of a file collections semantics as directory names. The metadata and virtual filesystem play together here allowing you to geospatially tag both your digital pictures, trip plans, and relevent websites and recall these objects in a single virtual directory no matter what their path or URL may be.
There is also a Samba VFS module which allows you to expose a libferris filesystem as a Samba share. Kfsmd uses the inotify kernel interface to allow libferris to watch changes made to your kernel filesystem by non libferris applications and update its indexes appropriately. Ferriscreate provides a command line and GTK+2 application for creating "new files" with libferris. With this you can create a new db4 database, dbXML database or fulltext index just as easily as you can make a regular file.
The ego filemanager is a GTK+2 interface built on top of libferris. It provides GTK treeview , gevas/edje and gecko based interfaces and makes extensive use of libferris clients to provide its functionality.
If you have a project you wish to use libferris with and want extensions made dont hesitate to contact one of the developers to arrange consulting.
For the geeks out there, libferris is a virtual file system (VFS) that runs in the user address space. At the moment libferris is a shared object that each application can dynamically link to in order to see the file system through a nicer abstraction.
New additions to the XML module allow for data to be converted from one format to another by the VFS for you. To copy data to an XML file:
fcreate --create-type=xml --rdn=2.xml root-element=fred /tmp
gfcp -av Makefile.am --dst-is-dir /tmp/2.xml/fred
To copy data to a db4 file
fcreate --create-type=db4 --rdn=2.db /tmp
gfcp -av Makefile.am --dst-is-dir /tmp/2.db
Ferris presents a C++ interface that makes heavy use of the STL and IOStreams. Currently ferris has two main internal abstractions: Context and Attribute. A context is much like a traditional file or directory in a file system, the major differences being that a context can have both byte content (like a file) and subcontexts (like a directory). An attribute is a chunk of metadata about a context. Contexts can have many attributes.
Some attributes may be large, for example a base 64 encoded version of the contexts content (133% context size). On the other hand an attribute can be small, for example the file size is exposed as an attribute.
Access to all contexts and attributes is performed by first requesting either an IStream or IOStream for that context or attribute. In this way the same context/attribute can be open many times at the same time, just like normal kernel based IO.
Ferris uses Loki from "Modern C++ Design" by Alexandrescu. Most objects use automatic garbage collection based on the SmartPtr template class from Loki. Where possible objects in ferris use a FerrisRefCounted policy to provide COM like intrusive reference counting. This style is used for Context, Attribute and special wrappers of IOStreams that are provided. IOStreams are wrapped to provide a more flexible API than could be offered using references to IOStreams.
There are also new stream classes provided, for example NullStream and LimitingStream. Templates are provided to make SmartPtrs to standard IOStreams act just like the underlying stream would, for example, one can have SmartPtr ss; ss >> stringObj; and does not have to dereference the SmartPtr to use standard IOStreams extractors or inserters.
Ferris uses GModule from glib2 to dynamically load both context and attribute classes at run-time. This way resources are conserved until they are needed. The native file system context is statically linked to ferris at present. When loading either contexts or attribute classes ferris uses a double dispatch factory method. Put simply this means that for each plugin there are two libraries, one that tells ferris if the main one really needs to be loaded or not. Using this scheme ferris can load all the meta factory classes at any time and use these very small meta factories to check if the main factory can create objects that are going to be useful.
This scheme is of great use for attribute classes. Attribute classes take a context and can "generate" attributes from the context. An example of this sort of class would be a MD5 or Base64 attribute. Both can be generated from the base context. More interesting attributes are PCM audio and RGBA-32bpp image data. By using the double dispatch factory ferris can handle a great deal of attribute generators and load them on demand.
Ferris currently can decode mp3, read id3 tags, decode many image formats and break some animation formats into frames. This makes ferris a solid starting point for multimedia applications.
Ferris will automatically mount sub file systems for you. Examples of a sub file system include a Berkeley database or XML file. For example it is possible to read a context such as /tmp/myxml.xml/mynode. Using this automatic mounting the differences between storage formats effectively disappear. To a ferris enabled application loading data from a native disk file, a Berkeley database, and XML file, or mbox file appear to be the same. This allows the user of the application to choose the correct storage for the data at hand.
It is planned to move to a microkernel architecture in Version 2.1 of ferris. I choose 2.1 so that ferris does not fall into version 2 syndrome.
Enhancements:
- Many changes were made to better support rsync(1).
- Extended Attribute support was greatly improved.
- write() now also updates mtime.