acquire
Acquire Board Game 0.4
Acquire is a computer version of the classic board game. more>>
The goal of the game is to make the most profit by buying stocks in companies that form, merge and grow as tiles are placed on the game board.
This program is a text-based version of the game and should be playable on any system with a C++ compiler.
Enhancements:
- The main improvement of this release is that the bug causing the game to crash at the end was fixed, so you can now see who won.
- There were some other small bugfixes and changes.
Crashtest 1.0
Crashtest simulates car crashes. more>>
The user can learn about the relation between speed and stopping distance. Also, many physical properties can be studied.
Crashtest is developed by Bram Stolk, SARA, and was commissioned by NWO for the Weten Week 2006 in the Netherlands.
WP Clipart 3.0
WP Clipart is a collection of public domain images specifically tailored for use in word processors. more>>
Some of the images were made by me, the vast majority were acquired from several sources all documented on the "Legal" page. One of the large sources was OpenClipart - from which the SVGs were converted using RSVG and scaled to proportions more appropriate for word processors, as opposed to much larger sizes you would expect for clipart to be further edited in a graphics program.
As mentioned above, transparency was eliminated (avoided many printing problems.) Many clips from other sources had their density and saturation levels adjusted to what would print well on a typical home/small business inkjet -- openning up the midtones and eliminating large areas of shadow to prevent blocking . . .
Another advantage of scaling down the image sizes is the smaller download size. Ibiblio graciously hosts the files I display on these pages. There is a compressed package of all the clipart that weights in at about 79MB. See "Download" for details.
Above all else these images, illustrations and photos are Public Domain. Use them for private use, for commercial use -- without any restrictions whatsoever. Attrribution is not required. Links are not required. They are truly free.
But please, if used online, upload them to your own site and dont link from here. If my server is overwhelmed you will ruin this for others. But on the positive side, if you would like to add something I would be more than happy to post a "new clips page" with shout-outs to the good folks who help to increase the diversity and quality of this collection.
Enhancements:
- Multilingual menus were introduced.
- The default is English with options for French, Spanish, and German.
- The total number of clipart pieces is now 17,471.
- The zip file contains all clipart, a viewer/editor for use on Linux, and a Windows executable for the viewer.
Wackamole 2.1.3
Wackamole is an application that helps with making a cluster highly available. more>>
If it discovers that particular machines within the cluster are not alive, it will almost immediately ensure that other machines acquire these public IPs. At no time will more than one machine listen on any virtual IP. Wackamole also works toward achieving a balanced distribution of number IPs on the machine within the cluster it manages.
Wakamole operates on a cluster of tightly connected machines (all on the same LAN). It works by managing a pool of IP addresses that you expect to be available at all times. These IP addresses are virtual (meaning no machine has any of those IPs as its default IP address). Wackamole will work to ensure that all of the IP addresses in the pool are assigned as virtual IPs to the machines in the cluster. No IP address is held by more than one machine and every IP address is available.
This allows you to run a service using multiple DNS RR records without the worry of one of the machines crashing -- if the machine crashes, the virtual IP addresses it was responsible for will be managed by the remaining machines in the cluster.
There is no other software like Wackamole. Wackamole is quite unique in that it operates in a completely peer-to-peer mode within the cluster. Other products that provide the same high-availability guarantees use a "VIP" method. A networking appliance assumes a single virtual IP address and "maps" requests to that IP address to the machines in the cluster. This networking appliance is a single point of failure by itself, so most industry accepted solutions incorporate classic master-slave failover or bonding between two identical appliances. These networking appliances can be:
- simple commodity servers running user applications to provide high availability,
- operating system features like IPVS under Linux or similar such features under Windows 2000 and FreeBSD,
- hardware networking component like Foundry ServerIron, Cisco LocalDirector or other content-aware switch, Cisco Arrowpoint content switched, Extreme Networks load-balancers and other such hardware products.
Enhancements:
- Many changes were made.
cx_Freeze 3.0.3
cx_Freeze is a set of utilities for freezing Python scripts into executables. more>>
Why did I go to the trouble of creating another set of utilities when these three utilities already existed? The Freeze utility that comes with Python itself requires a source distribution, a C compiler and linker which makes for a complex environment for creating executables. In addition, this method is very slow for creating executables as compared to the other methods. py2exe is intended for development on Windows only and cx_Freeze is intended for cross platform development. Installer uses an import hook which means that the development environment and runtime environment are considerably different.
How does it work? A base executable is created which contains code for unpacking the list of frozen modules, starting up the Python interpreter and passing control to the script which is being frozen. When a script is frozen, the script is searched for all references to modules and these modules are then byte compiled and written to the end of the base executable. If the modules that are referenced are extensions written in C, these modules must be included in the path in which the frozen executable is deployed.
Installation:
Extract the archive into a directory. In order to build cx_Freeze you need to have gcc and Python development include files and libraries available. Run the following commands.
python MakeFrozenBases.py
python FreezePython.py --no-copy-deps FreezePython.py
When these commands have completed successfully, the directory will be in the same state as a binary installation. Note that on Windows these scripts assume the presence of a mingw32 installation which can be acquired from http://www.mingw.org.
Enhancements:
- In Common.c, used MAXPATHLEN defined in the Python OS independent include file rather than the PATH_MAX define which is OS dependent and is not available on IRIX as noted by Andrew Jones.
- In the initscript ConsoleSetLibPath.py, added lines from initscript Console.py that should have been there since the only difference between that script and this one is the automatic re-execution of the executable.
- Added an explicit "import encodings" to the initscripts in order to handle Unicode encodings a little better. Thanks to Ralf Schmitt for pointing out the problem and its solution.
- Generated a meaningful name for the extension loader script so that it is clear which particular extension module is being loaded when an exception is being raised.
- In MakeFrozenBases.py, use distutils to figure out a few more platform-dependent linker flags as suggested by Ralf Schmitt.
Contextual::Return 0.1.0
Contextual::Return is a Perl module to create context-senstive return values. more>>
SYNOPSIS
use Contextual::Return;
use Carp;
sub foo {
return
SCALAR { thirty-twelve }
BOOL { 1 }
NUM { 7*6 }
STR { forty-two }
LIST { 1,2,3 }
HASHREF { {name => foo, value => 99} }
ARRAYREF { [3,2,1] }
GLOBREF { *STDOUT }
CODEREF { croak "Dont use this result as code!"; }
;
}
# and later...
if (my $foo = foo()) {
for my $count (1..$foo) {
print "$count: $foo is:n"
. " array: @{$foo}n"
. " hash: $foo->{name} => $foo->{value}n"
;
}
print {$foo} $foo->();
}
Usually, when you need to create a subroutine that returns different values in different contexts (list, scalar, or void), you write something like:
sub get_server_status {
my ($server_ID) = @_;
# Acquire server data somehow...
my %server_data = _ascertain_server_status($server_ID);
# Return different components of that data,
# depending on call context...
if (wantarray()) {
return @server_data{ qw(name uptime load users) };
}
if (defined wantarray()) {
return $server_data{load};
}
if (!defined wantarray()) {
carp Useless use of get_server_status() in void context;
return;
}
else {
croak q{Bad context! No biscuit!};
}
}
That works okay, but the code could certainly be more readable. In its simplest usage, this module makes that code more readable by providing three subroutines--LIST(), SCALAR(), VOID()--that are true only when the current subroutine is called in the corresponding context:
use Contextual::Return;
sub get_server_status {
my ($server_ID) = @_;
# Acquire server data somehow...
my %server_data = _ascertain_server_status($server_ID);
# Return different components of that data
# depending on call context...
if (LIST) { return @server_data{ qw(name uptime load users) } }
if (SCALAR) { return $server_data{load} }
if (VOID) { print "$server_data{load}n" }
else { croak q{Bad context! No biscuit!} }
}
Contextual returns
Those three subroutines can also be used in another way: as labels on a series of contextual return blocks (collectively known as a context sequence). When a context sequence is returned, it automatically selects the appropriate contextual return block for the calling context. So the previous example could be written even more cleanly as:
use Contextual::Return;
sub get_server_status {
my ($server_ID) = @_;
# Acquire server data somehow...
my %server_data = _ascertain_server_status($server_ID);
# Return different components of that data
# depending on call context...
return (
LIST { return @server_data{ qw(name uptime load users) } }
SCALAR { return $server_data{load} }
VOID { print "$server_data{load}n" }
DEFAULT { croak q{Bad context! No biscuit!} }
);
}
The context sequence automatically selects the appropriate block for each call context.
iqr 1.0-1
iqr is a simulation system for graphically designing and controlling large-scale neuronal models. more>>
iqr is a tool for creating and running simulations of large-scale neural networks.
Via iqrs graphical user interface (GUI) the user can:
- design the system
- control the running of the simulation
- change parameters of the model at run-time
Since connectivity between groups of neurons is a cornerstone in modeling, iqr provides flexible, yet easy to use and compact methods to define a wide variety of connectivity patterns.
A browser on the left side of the main window allows quick access to elements of the model. Diagrams can be printed or saved.
iqr offers multiple tools to monitor and interact with states of the models elements. Data acquisition includes frequency and duration sampling, and states of selected elements can be saved via the Data Sampler. Models in iqr are stored in a format based on the XML standard, and can thus be transformed to a wide range of other description grammars for neuronal models.
iqr comes with a wide range of pre-defined interfaces to hardware devices. They include modules to control Khepera and Koala robots (K-Team S.A., Lausanne), Lego MindStorms, and the blimp robot used in the AMOTH project. Modules can be run synchronized, or in their own thread, independent of the update speed of the main simulation.
Simulations in the iqr run at a speed sufficient for real-time control of robots. The data shown below was acquired on an AMD Athlon 1GHz, 768MB RAM using linear threshold neurons.
Unrawel 1.03 Alpha
Unrawel is a library with different techniques for digital camera acquired RAW image interpolation and processing. more>> <<less
cexec 1.26
cexec is a software for building ad-hoc clusters. more>>
To install cexec, you need to first build it (type make) then copy the executables into /usr/local/bin or someplace in your path. Youll probably want to copy the manual pages (*.1) someplace in your $MANPATH.
Note that the cexec on-wire protocol is still evolving in incompatible ways; Its not wise to try and use the cluster tools across administrative domains.
A cexec "cluster" consists of:
- One or more applications
- An announcement address. This can be a broadcast address, or a multicast address. It could also be a unicast address, but then that wouldnt allow for other servers. The default is probably fine for most people (255.255.255.255) - this value should be stored in the $GROUP environment variable.
- A bunch of general-purpose unix-like machines
- A keypair that identifies applications, and mutually authenticates clients/servers
To build a cexec cluster, you need to decide on your applications, announcement address, and have computers to run it. As an example, well build a cluster-enabled version of "oggenc". This example assumes youve already got oggenc installed, and you already got your machines together:
0. Build the keypair using "ckeygen" ckeygen distributed_ogg distributed_ogg.pub
1. Distribute the "distributed_ogg" key to all of your "worker machines"
2. Distribute the "distributed_ogg.pub" key to all of your "client machines"
3. Start the service on all your workers: cservice distributed_ogg oggenc -o- -
4. Start a logger service on any worker or client: crat
5. Encode something, cexec distributed_ogg.pub < input.wav > output.ogg
You couldve used any application- not just "oggenc"- with this cluster. You could make this cluster as big as you want (with multicast tunnels) and cross as many networks as you want (with cproxy).
When "cexec" starts up, it locates the "best" copy of cservice on the network. It does this by broadcasting announcements. One of the cservice machines will attempt to "connect back" to the cexec after a delay thats proportional to the systems load. The first machine to "reach back" and perform the various challenges regarding the keypair is the winner.
At this point, cexec multiplexes the local file descriptors over the work-channel and cservice does the reverse on the other side. cservice uses pipes where possible, but will use socketpair() to emulate readwrite devices like terminals and sockets.
When "cservice" is done, it sends its exit code back to "cexec". If "cexec" didnt like any part of the protocol exchange, it "complains". If everything went okay, it announces the exit code in the same way. These "alerts" are received by a "crat" running on the network.
Enhancements:
- This release doesnt regenerate parity, which should help acquire loaded hosts (above runq length 10.0) faster.
Useful Traffic Accounting Dragon 0.4
Useful Traffic Accounting Dragon is a traffic accounter that actually gives useful information about traffic. more>>
Dragon accounts traffic by user, program and timestamp and puts this information into useful correlation.
Dragon is implemented as a Perl script for the backend, using /etc/passwd to automatically get information about user accounts, /proc/net/ to get information about open connections and /proc/ to get information about running processes and which processes currently use which network connection.
All this information can be combined so you can actually see what user caused which traffic using what program and when it happened.
All this information is acquired automatically so the minimal configuration necessary is to tell dragon where it can find its MySQL database.
Enhancements:
Features:
- cleanup on CTRL-C
- add patch for Linux Kernel 2.6.17.7
- for now, graphs are disabled in the webfrontend
- webfrontend has now Total, User and Program tabs
Bugfixes:
- forgot to close a filedescriptor fixed
- use leading zeroes on port numbers in messages about connections that no longer exist
- really fix wait for next minute
XSane 0.994
XSane is a GTK-based X11 frontend for SANE, also a GIMP plugin. more>>
If you have any problems or questions that are related to your scanner then please contact the author of the sane-backend that supports your scanner or for general questions contact the SANE mailinglist. Here you can find out which scanners are supported by the SANE-library.
XSane is designed for acquiring images with scanners (there are other devices like cameras and videodevices supported by SANE, but XSane is not designed for that purpose).
You can scan to file, do a photocopy, create a fax, create and send a mail and start XSane from the GIMP as gimp plug in.
Enhancements:
- Black point compensation was added to the printer setup dialog.
- A PostScript bug was corrected.
- Several bugs in the color ICM profile handling were fixed.
Alvis::Pipeline 0.11
Alvis::Pipeline is a Perl extension for passing XML documents along the Alvis pipeline. more>>
SYNOPSIS
use Alvis::Pipeline;
$in = new Alvis::Pipeline::Read(host => "harvester.alvis.info",
port => 16716,
spooldir => "/home/alvis/spool");
$out = new Alvis::Pipeline::Write(port => 29168);
while ($xml = $in->read(1)) {
$transformed = process($xml);
$out->write($transformed);
}
This module provides a simple means for components in the Alvis pipeline to pass documents between themselves without needing to know about the underlying transfer protocol. Pipe objects may be created either for reading or writing; components in the middle of the pipeline will create one of each. Pipes support exactly one method, which is either read() or write() depending on the type of the pipe. The granularity of reading and writing is the XML document; neither smaller fragments nor larger aggregates can be transferred.
The documents expected to pass through this pipeline are those representing documents acquired for, and being analysed by, Alvis. These documents are expressed as XML contructed according to the specifications described in the Metadata Format for Enriched Documents. However, while this is the motivating example pipeline that led to the creation of this module, there is no reason why other kinds of documents should not also be passed through pipeline using this software.
The pipeline protocol is described below, to facilitate the development of indepedent implementations in other languages.
M.U.L.E 0.61
M.U.L.E is a linux port of clone of old MULE for C64 & PC. more>>
This is a Linux/SDL port of a MULE clone. For those unfamiliar, MULE is an early resource strategy game.
You play a colonist on the moon, you acquire territory, and decide how to use it, by either farming, mining ore, collecting solar energy or mining crystals.
You compete with 3 other players, most points at the end of a preset number of months wins.
Pipe-Sem 1.0
This is a pipe based semaphore implementation for developing ASYNC applications. more>>
Pipe-Sem 1.0 is a good utility which might help you a lot in developing ASYNC applications. Many synchronization primitives are available for Unix systems, but any of them expose a pollable interface to the user. In these cases, if the caller execute a down operation on a blocking semaphore, the application will sleep and whole ASYNC loop will starve because of the wait.
To cope with this problem in ASYNC software, the publisher developed a pipe based semaphore implementation, called Pipe-Sem. The implementation is trivially simple and it uses the pipe internal mechanisms to expose a pollable wait interface.
Besides the standard semaphore operations, the function psem_down_fd() can be used to retrieve a files descriptor that can be dropped inside a Unix pollable API like select(2), poll(2) or epoll(2). The caller will have to wait for input events (POLLIN), and when receiving the event itself, the caller should invoke the psem_try_down() function to try to acquire the semaphore.
Please note that receiving an event from the pollable interface, does not mean that we acquired to semaphore, and the function psem_try_down() will have to be called (and tested for zero return code) to correctly complete the down operation.
<<lessAtheme 1.2.1
Atheme is a portable, secure set of IRC services that are designed to run on many IRCds. more>>
Unlike alternative packages, Athemes core is minimalistic, providing only required functionality. Extra modules providing functionality you want as a network administrator can be acquired through our (upcoming) module repository.
That said, Atheme provides a fairly complete services set, excluding features designed for oper abuse. It also adds a twist on many of the classic features of Services, such as NOOP.