PostgreSQL is a sophisticated Object-Relational DBMS, supporting
almost all SQL constructs, including subselects, transactions, and
user-defined types and functions. It is the most advanced open-source
database available anywhere. Commercial Support is also available.
The original Postgres code was the effort of many graduate students,
undergraduate students, and staff programmers working under the direction of
Professor Michael Stonebraker at the University of California, Berkeley. In
1995, Andrew Yu and Jolly Chen took on the task of converting the DBMS query
language to SQL and created a new database system which came to known as
Postgres95. Many others contributed to the porting, testing, debugging and
enhancement of the Postgres95 code. As the code improved, and 1995 faded into
memory, PostgreSQL was born.
PostgreSQL development is presently being performed by a team of Internet
developers who are now responsible for all current and future development. The
development team coordinator is Marc G. Fournier (scrappy@PostgreSQL.ORG).
Support is available from the PostgreSQL developer/user community through the
support mailing list (questions@PostgreSQL.ORG).
PostgreSQL is free and the complete source is available.
Beautify PHP
What it does:
This program tries to reformat and beautify PHP source code files automatically.
The program is Open Source and distributed under the terms of GNU GPL.
It is written in PHP and has a web frontend.
Who needs it:
- people, who get PHP code from other coders and are slightly confused
- people, who can't read their own PHP code anymore
- people, who want to share their PHP code
Basic features:
- automatic indentation of PHP source code according to given number of spaces
- automatic newlines, if required
- includes settings for braces according to C or PEAR style
- can make use of PHPs integrated code highlight option
- can limit number of chars per line. This will break the code at a space and
outputs the rest on the next line with an additional indent. (I used this to
reformat my code to put it in a LATEX document. This PHP code normally can't
be executed anymore, it is only useful for printout.)
- turn off and on beautifying by inserting "// NO_BEAUTIFY" or "// BEAUTIFY"
in source code
DataDraw is an ultra-fast persistent database for high performance programs
written in C. It's so fast that many programs keep all their data in a
DataDraw database, even while being manipulated in inner loops of compute
intensive applications. Unlike slow SQL databases, DataDraw databases are
compiled, and directly link into your C programs. DataDraw databases are
resident in memory, making data manipulation even faster than if they were
stored in native C data structures (really). Further, they can automatically
support infinite undo/redo, greatly simplifying many applications.
DataDraw databases can be persistent. Modifications to persistent data are
written to disk as they are made, which of course dramatically slows write
times. However, DataDraw databases can also be volatile. Volatile databases
exist only in memory, and only for the duration that your program needs it.
Volatile databases can be directly manipulated faster than C structures,
since data is better organized in memory to optimize cache performance.
DataDraw supports modular design. An application can have one or more common
persistent databases, and multiple volatile databases to support various
tools' data structures. Classes in a tool's database can extend classes in
the common database. DataDraw is also 64-bit optimized, allowing programs to
run much faster and in less memory than standard C programs using 64-bit
pointers. This is because DataDraw databases support over 4 billion objects
of a given class with 32-bit object references.
git-annex allows managing files with git, without checking the file
contents into git. While that may seem paradoxical, it is useful when
dealing with files larger than git can currently easily handle, whether
due to limitations in memory, time, or disk space.
It can store large files in many places, from local hard drives, to a
large number of cloud storage services, including S3, WebDAV, and rsync,
with a dozen cloud storage providers usable via plugins. Files can be
stored encrypted with gpg, so that the cloud storage provider cannot see
your data. git-annex keeps track of where each file is stored, so it
knows how many copies are available, and has many facilities to ensure
your data is preserved.
git-annex can also be used to keep a folder in sync between computers,
noticing when files are changed, and automatically committing them to
git and transferring them to other computers. The git-annex webapp
makes it easy to set up and use git-annex this way.
Typical buffer-based incremental I/O is based around a single loop,
which reads data from some source (such as a socket or file), transforms
it, and generates one or more outputs (such as a line count, HTTP
responses, or modified file). Although efficient and safe, these loops are
all single-purpose; it is difficult or impossible to compose
buffer-based processing loops.
Haskell's concept of "lazy I/O" allows pure code to operate on data from an
external source. However, lazy I/O has several shortcomings. Most notably,
resources such as memory and file handles can be retained for arbitrarily
long periods of time, causing unpredictable performance and error conditions.
Enumerators are an efficient, predictable, and safe alternative to lazy
I/O. Discovered by Oleg Kiselyov, they allow large datasets to be processed
in near constant space by pure code. Although somewhat more complex
to write, using enumerators instead of lazy I/O produces more correct
programs.
This library contains an enumerator implementation for Haskell, designed to
be both simple and efficient.
log4net is a tool to help the programmer output log statements to a variety of
output targets. In case of problems with an application, it is helpful to
enable logging so that the problem can be located. With log4net it is possible
to enable logging at runtime without modifying the application binary. The
log4net package is designed so that log statements can remain in shipped code
without incurring a high performance cost. It follows that the speed of logging
(or rather not logging) is crucial.
At the same time, log output can be so voluminous that it quickly becomes
overwhelming. One of the distinctive features of log4net is the notion of
hierarchical loggers. Using these loggers it is possible to selectively control
which log statements are output at arbitrary granularity.
log4net is designed with two distinct goals in mind: speed and flexibility.
Features:
* Support for multiple frameworks
* Output to multiple logging targets
* Hierarchical logging architecture
* XML Configuration
* Dynamic Configuration
* Logging Context
* Proven architecture
* Modular and extensible design
* High performance with flexibility
Pidl is an IDL compiler written in Perl that aims to be somewhat
compatible with the midl compiler. IDL stands for "Interface Definition
Language".
Pidl can generate stubs for DCE/RPC server code, DCE/RPC client code and
ethereal dissectors for DCE/RPC traffic.
IDL compilers like pidl take a description of an interface as their
input and use it to generate C (though support for other languages may
be added later) code that can use these interfaces, pretty print data
sent using these interfaces, or even generate ethereal dissectors that
can parse data sent over the wire by these interfaces.
Pidl takes IDL files in the same format as is used by midl, converts it
to a .pidl file (which contains pidl's internal representation of the
interface) and can then generate whatever output you need. .pidl files
should be used for debugging purposes only. Write your interface
definitions in .idl format.
The goal of pidl is to implement a IDL compiler that can be used while
developing the RPC subsystem in Samba (for both marshalling/unmarshalling
and debugging purposes).
Pegex is an Acmeist parser framework. It allows you to easily create parsers
that will work equivalently in lots of programming languages! The inspiration
for Pegex comes from the parsing engine upon which the postmodern programming
language Perl 6 is based on. Pegex brings this beauty to the other justmodern
languages that have a normal regular expression engine available.
Pegex gets it name by combining Parsing Expression Grammars (PEG), with Regular
Expessions (Regex). That's actually what Pegex does.
PEG is the cool new way to elegantly specify recursive descent grammars. The
Perl 6 language is defined in terms of a self modifying PEG language called Perl
6 Rules. Regexes are familiar to programmers of most modern programming
languages. Pegex defines a simple PEG syntax, where all the terminals are
regexes. This means that Pegex can be quite fast and powerful.
Pegex attempts to be the simplest way to define new (or old) Domain Specific
Languages (DSLs) that need to be used in several programming languages and
environments. Things like JSON, YAML, Markdown etc. It also great for writing
parsers/compilers that only need to work in one language.
Struct::Dumb creates record-like structure types, similar to the struct keyword
in C, C++ or C#, or Record in Pascal. An invocation of this module will create a
construction function which returns new object references with the given field
values. These references all respond to lvalue methods that access or modify the
values stored.
It's specifically and intentionally not meant to be an object class. You cannot
subclass it. You cannot provide additional methods. You cannot apply roles or
mixins or metaclasses or traits or antlers or whatever else is in fashion this
week.
On the other hand, it is tiny, creates cheap lightweight array-backed
structures, uses nothing outside of core. It's intended simply to be a slightly
nicer way to store data structures, where otherwise you might be tempted to
abuse a hash, complete with the risk of typoing key names. The constructor will
croak if passed the wrong number of arguments, as will attempts to refer to
fields that don't exist.
HTML_Template_Sigma implements Integrated Templates API designed by Ulf Wendel.
Features:
* Nested blocks. Nesting is controlled by the engine.
* Ability to include files from within template: <!-- INCLUDE -->
* Automatic removal of empty blocks and unknown variables
(methods to manually tweak/override this are also available)
* Methods for runtime addition and replacement of blocks in templates
* Ability to insert simple function calls into templates:
func_uppercase('Hello world!') and to define callback functions for these
* 'Compiled' templates: the engine has to parse a template file using regular
expressions to find all the blocks and variable placeholders.
This is a very "expensive" operation and is an overkill to do on every page
request: templates seldom change on production websites.
Thus this feature: an internal representation of the template structure is
saved into a file and this file gets loaded instead of the source one on
subsequent requests (unless the source changes)
* PHPUnit-based tests to define correct behaviour
* Usage examples for most of the features are available, look in the docs/
directory