cdb is a fast, reliable, lightweight package for creating and reading
constant databases. Its database structure provides several features:
* Fast lookups: A successful lookup in a large database normally takes
just two disk accesses. An unsuccessful lookup takes only one.
* Low overhead: A database uses 2048 bytes, plus 24 bytes per record,
plus the space for keys and data.
* No random limits: cdb can handle any database up to 4 gigabytes. There
are no other restrictions; records don't even have to fit into memory.
Databases are stored in a machine-independent format.
* Fast atomic database replacement: cdbmake can rewrite an entire
database two orders of magnitude faster than other hashing packages.
* Fast database dumps: cdbdump prints the contents of a database in
cdbmake-compatible format.
cdb is designed to be used in mission-critical applications like e-mail.
Database replacement is safe against system crashes. Readers don't have
to pause during a rewrite.
Note for developers: packages that need to read cdb files should
incorporate the necessary portions of the cdb library rather than
relying on an external cdb library. (See WWW)
JSON-GLib is a library providing serialization and deserialization support
for the JavaScript Object Notation (JSON) format described by RFC 4627. JSON is:
a lightweight data-interchange format. It is easy for humans to read and write.
It is easy for machines to parse and generate. It is based on a subset of the
JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999.
JSON is a text format that is completely language independent but uses
conventions that are familiar to programmers of the C-family of languages,
including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These
properties make JSON an ideal data-interchange language. -- From Introducing
JSON
Many high-level languages already provide native modules for parsing, generating
and manipulating JSON data streams. JSON-GLib is a C library based on GLib and
released under the terms of the GNU Lesser General Public License version 2.1.
It provides a parser and a generator GObject classes and various wrappers for
the complex data types employed by JSON, such as arrays and objects.
JSON-GLib uses GLib native data types and the generic value container GValue
for ease of development. It also provides integration with the GObject classes
for direct serialization into, and deserialization from, JSON data streams.
Method modifiers are a powerful feature from the CLOS (Common Lisp Object
System) world.
In its most basic form, a method modifier is just a method that calls
$self->SUPER::foo(@_). I for one have trouble remembering that exact
invocation, so my classes seldom re-dispatch to their base classes. Very bad!
Class::Method::Modifiers provides three modifiers: before, around, and after.
before and after are run just before and after the method they modify, but can
not really affect that original method. around is run in place of the original
method, with a hook to easily call that original method.
One clear benefit of using Class::Method::Modifiers is that you can define
multiple modifiers in a single namespace. These separate modifiers don't need
to know about each other. This makes top-down design easy. Have a base class
that provides the skeleton methods of each operation, and have plugins modify
those methods to flesh out the specifics.
In short, Class::Method::Modifiers solves the problem of making sure you call
$self->SUPER::foo(@_), and provides a cleaner interface for it.
File::NCopy::copy copies files to directories, or a single file to
another file. You can also use a reference to a file handle if you wish
when doing a file to file copy. The functionality is very similar to
cp. If the argument is a directory to directory copy and the recursive
flag is set then it is done recursively like cp -R. In fact it behaves
like cp on Unix for the most part.
If called in array context, an array of successful copies is returned,
otherwise the number of successful copies is returned. If passed a file
handle, it's difficult to make sure the file we are copying isn't the
same that we are copying to, since by opening the file in write mode it
gets pooched. To avoid this use file names instead, if at all possible,
especially for the to file. If passed a file handle, it is not closed
when copy returns, files opened by copy are closed.
Lexical::Import allows functions and other items, from a separate module, to be
imported into the lexical namespace (as implemented by Lexical::Var), when the
exporting module exports non-lexically to a package in the traditional manner.
This is a translation layer, to help code written in the new way to use modules
written in the old way.
A lexically-imported item takes effect from the end of the definition statement
up to the end of the immediately enclosing block, except where it is shadowed
within a nested block. This is the same lexical scoping that the my, our, and
state keywords supply. Within its scope, any use of the single-part name of the
item (e.g., "$foo") refers directly to that item, regardless of what is in any
package. Explicitly package-qualified names (e.g., "$main::foo") still refer to
the package. There is no conflict between a lexical name definition and the same
name in any package.
This mechanism only works on Perl 5.11.2 and later. Prior to that, it is
impossible for lexical subroutine imports to work for bareword subroutine calls.
(See "BUGS" in Lexical::Var for details.) Other kinds of lexical importing are
possible on earlier Perls, but because this is such a critical kind of usage in
most code, this module will ensure that it works, for convenience. If the
limited lexical importing is desired on earlier Perls, use Lexical::Var
directly.
The ResourcePool is a generic connection caching and pooling management
facility. It might be used in an Apache/mod_perl environment to support
connection caching like Apache::DBI for non-DBI resources
(e.g. Net::LDAP). It's also useful in a stand alone perl application
to handle connection pools.
The key benefit of ResourcePool is the generic design which makes it
easily extensible to new resource types.
The ResourcePool has a simple check mechanism to detect and close broken
connections (e.g. if the database server was restarted) and opens new
connections if possible.
If you are new to ResourcePool you should go to the ResourcePool::BigPicture
documentation which provides the best entry point to this module.
The ResourcePool itself handles always exactly equivalent connections
(e.g. connections to the same server with the same user-name and password)
and is therefore not able to do a load balancing. The
ResourcePool::LoadBalancer is able to do a advanced load balancing across
different servers and increases the overall availability by applying a
failover policy if there is a server breakdown.
This perhaps ridiculous-seeming module was created to test routines that
manipulate random numbers by providing a known output from rand. Given a list of
seeds with srand, it will return each in turn. After seeded random numbers are
exhausted, it will always return 0. Seed numbers must be of a form that meets
the expected output from rand as called with no arguments -- i.e. they must be
between 0 (inclusive) and 1 (exclusive). In order to facilitate generating and
testing a nearly-one number, this module exports the function oneish, which
returns a number just fractionally less than one.
Depending on how this module is called with use, it will export rand to a
specified package (e.g. a class being tested) effectively overriding and
intercepting calls in that package to the built-in rand. It can also override
rand in the current package or even globally. In all of these cases, it also
exports srand and oneish to the current package in order to control the output
of rand.
Alternatively, this module can be used to generate objects, with each object
maintaining its own distinct seed array.
DJBDNS is a collection of Domain Name System tools. It includes
several components:
* The dnscache program is a local DNS cache. It accepts recursive DNS
queries from local clients such as web browsers. It collects
responses from remote DNS servers.
* The tinydns program is a fast, UDP-only DNS server. It makes local
DNS information available to the Internet.
* The pickdns program is a load-balancing DNS server. It points
clients to a dynamic selection of IP addresses.
* The walldns program is a reverse DNS wall. It provides matching
reverse and forward records while hiding local host information.
* The dns library handles outgoing and incoming DNS packets. It can be
used by clients such as web browsers to look up host addresses, host
names, MX records, etc. It supports asynchronous resolution.
* The dnsfilter program is a parallel IP-address-to-host-name
converter.
* The dnsip, dnsipq, dnsname, dnstxt, and dnsmx programs are simple
command-line interfaces to DNS.
* The dnsq and dnstrace programs are DNS debugging tools.
Documentation is at the website below,
Nexuiz is a fast-paced, chaotic, and intense multiplayer first person
shooter, focused on providing basic, old style deathmatch.
Nexuiz is built on the power of the Darkplaces engine, which is a heavily
modified version of the original Quake. Darkplaces features realtime
lighting and stencil shadows, bumpmapping, gloss, bloom, and totally
rewritten network code that supports up to 64 players on a single server.
While quality gameplay was our primary goal, its graphics technology and
artwork allows the game to compete with the current quality of commercial
games.
Any online deathmatch fan will instantly feel at home with Nexuiz' weapons
and movement style. The fast server browser and quick loading time allows
you to jump right into a game at a moments notice and play a quick game.
Now it also comes with community map pack compiled by Strahlemann. It
includes 35 maps, and a campaign mode for the user to fight through. The
map pack includes Quake3 community maps, Nexuiz community maps, and some
new maps from Nexuiz developers.
AstroMenace is a brilliant 3d scroll-shooter allowing you to feel the adrenalin
rush of a fierce space battle against relentless swarms of alien invaders.
Immerse into a decisive battle against tons of cunning foes, face the
terrifying bosses and protect your homeland throughout 15 diverse levels of
the game. The hardcore gameplay of AstroMenace, packed with pure non-stop
action, will become a full scale test for your basic instinct of survival.
AstroMenace shines with stunning special effects which in combination with
superb 3d graphics guarantee that the game will feast the eyes of even most
experienced arcade players. The quality of visuals ensures that the
demonstration of your superior power and new weaponry will look really
impressive and awesome, so the destruction of foes is a truly amazing sight.
The game provides a wide variety of armaments and weapon upgrades for
discharging the retributive wrath upon the hordes of enemies, besides it has
a great number of improvements for enhancing the defensive abilities of your
spaceship. Collect money during the combat and invest them into turning your
spaceship into an ultimate weapon of mass destruction.