Add support for method calls on primitive types in PHP
This extension implements the ability to register a class that handles the
method calls to a certain primitive type (string, array, ...). As such it
allows implementing APIs like $str->length().
The main purpose of this repo is to provide a proof of concept implementation
that can be used to design the new APIs. The switch to object syntax for
operations on primitive types is a unique opportunity for PHP to redesign many
of its inconsistent core APIs. This repo provides the means to quickly
prototype and test new APIs as userland code. Once the APIs are figured out it
will be proposed for inclusion into PHP.
Note: The ability to register type handlers from userland is just for
prototyping.
AutoGen is a tool designed for generating program files that contain
repetitive text with varied substitutions. Its goal is to simplify the
maintenance of programs that contain large amounts of repetitious text.
This is especially valuable if there are several blocks of such text that
must be kept synchronized.
One common example is the problem of maintaining the code required for
processing program options. Processing options requires a minimum of four
different constructs be kept in proper order in different places in your
program. You need at least:
1. The flag character in the flag string,
2. code to process the flag when it is encountered,
3. a global state variable or two, and
4. a line in the usage text.
DateTime::Set is a module for date/time sets. It can be used to handle two
different types of sets.
The first is a fixed set of predefined datetime objects. For example, if we
wanted to create a set of dates containing the birthdays of people in our
family.
The second type of set that it can handle is one based on the idea of a
recurrence, such as "every Wednesday", or "noon on the 15th day of every
month". This type of set can have fixed starting and ending datetimes, but
neither is required. So our "every Wednesday set" could be "every Wednesday
from the beginning of time until the end of time", or "every Wednesday after
2003-03-05 until the end of time", or "every Wednesday between 2003-03-05 and
2004-01-07".
I believe a lot of log processing is done too early.
This module lets you defer log processing in two ways:
* Defer recording of log messages until some "transaction" has completed
Typically this transaction is something like an HTTP request or a cron job.
Generally log messages are easier to read if they are recorded atomically and
are not intermingled with log messages created by other transactions.
* Defer rendering of log messages
Sometimes you don't know how logs should be rendered until long after the
message has been written. If you aren't sure what information you'll want to
display, or you expect to display the same logs in multiple formats, it makes
sense to store your logs in a highly structured format so they can be
reliably parsed and processed later.
This module doesn't actually write out logs! To use this module for normal
logging purposes you also need a logging library.
A mapped queue, similar to Thread::Queue, except that as elements
are queued, they are assigned unique identifiers, which are used
to identify responses returned from the dequeuing thread. This
class provides a simple RPC-like mechanism between multiple client
and server threads, so that a single server thread can safely
multiplex requests from multiple client threads. Note that simplex
versions of the enqueue methods are provided which do not assign
unique identifiers, and are used for requests to which no response
is required/expected.
In addition, elements are inspected as they are enqueued/dequeued
to determine if they are Thread::Queue::Queueable (aka TQQ)
objects, and, if so, the onEnqueue() or onDequeue() methods are
called to permit any additional class-specific
marshalling/unmarshalling to be performed. Thread::Queue::Duplex
(aka TQD) is itself a Thread::Queue::Queueable object, thus
permitting TQD objects to be passed between threads.
The PEAR::HTML_Page2 package provides a simple interface for generating an
XHTML compliant page:
* supports virtually all HTML doctypes, from HTML 2.0 through XHTML 1.1 and
XHTML Basic 1.0 plus preliminary support for XHTML 2.0
* namespace support
* global language declaration for the document
* line ending styles
* full META tag support
* support for stylesheet declaration in the head section
* support for script declaration in the head section
* support for linked stylesheets and scripts
* full support for header link tags
* body can be a string, object with toHtml or toString methods or an array
(can be combined)
Ideas for use:
* Use to validate the output of a class for XHTML compliance
* Quick prototyping using PEAR packages is now a breeze.
QEMU is a FAST! processor emulator using dynamic translation to achieve
good emulation speed.
QEMU has two operating modes:
* Full system emulation. In this mode, QEMU emulates a full system
(for example a PC), including a processor and various peripherials.
It can be used to launch different Operating Systems without rebooting
the PC or to debug system code.
* User mode emulation. In this mode, QEMU can launch
Linux processes compiled for one CPU on another CPU. It can be used to
launch the Wine Windows API emulator or to ease cross-compilation and
cross-debugging.
As QEMU requires no host kernel patches to run, it is very safe and easy to use.
This is building sbruno's bsd-user github branch:
QEMU is a FAST! processor emulator using dynamic translation to achieve
good emulation speed.
QEMU has two operating modes:
* Full system emulation. In this mode, QEMU emulates a full system
(for example a PC), including a processor and various peripherials.
It can be used to launch different Operating Systems without rebooting
the PC or to debug system code.
* User mode emulation (Linux host only). In this mode, QEMU can launch
Linux processes compiled for one CPU on another CPU. It can be used to
launch the Wine Windows API emulator or to ease cross-compilation and
cross-debugging.
As QEMU requires no host kernel patches to run, it is very safe and easy to use.
See also the preconfigured system images on http://oszoo.org/
Many live cd isos also work.
QEMU is a FAST! processor emulator using dynamic translation to achieve
good emulation speed.
QEMU has two operating modes:
* Full system emulation. In this mode, QEMU emulates a full system
(for example a PC), including a processor and various peripherials.
It can be used to launch different Operating Systems without rebooting
the PC or to debug system code.
* User mode emulation (Linux host only). In this mode, QEMU can launch
Linux processes compiled for one CPU on another CPU. It can be used to
launch the Wine Windows API emulator or to ease cross-compilation and
cross-debugging.
As QEMU requires no host kernel patches to run, it is very safe and easy to use.
See also the preconfigured system images on http://oszoo.org/
Many live cd isos also work.
The Bftpd file server is designed to be as small and easy to manage as possible,
while providing most of the features you would expect from a file server. On
most home systems, bftpd is ready to work out-of-the-box without requiring any
extra configuration. Production systems can be set up by editing a few lines in
an easy-to-read config file.
Features of bftpd include:
* Easy configuration
* Speed
* Support for most RFC FTP commands
* tar.gz on-the-fly compression/archiving
* Security with chroot without special setup
* No need for files (sh, ls...) in a chroot environment
* Logging to wtmp and to a config file
* PAM support
* Support for site chown/chmod