Book Review: How to Implement Design Patterns in PHP
Nice n' Easy JQuery Image Rotator
ENUMs, User Preferences, and the MySQL SET Datatype
Getting Set up with Ogre 3D on Ubuntu
Changing Mailman Python Scripts for Virtual Host Support
Enforce Coding Standards with PHP_CodeSniffer and Eclipse IDE on Ubuntu Linux

PHPUnit Tests when a Class uses Multiple Databases

Wednesday, 26th June 13
compton

PHPUnit supplies the PHPUnit_Extensions_Database_TestCase class which can be extended by your tests when you want to run tests that check the state of a database after some or all tests. This is all well and good, but you will soon notice that its methods that you override in your test class to connect to and populate a database (getConnection(), getDataSet()) only support a single database.

If you want to test code that accesses multiple databases, you can either:

  1. continue to use PHPUnit_Extensions_Database_TestCase and add code to set up connections to other databases in the setup() method
  2. extend PHPUnit_Framework_TestCase and make it populate and test multiple databases
For the first approach, connect to one of your databases in the getConnection() and getDataSet() methods as normal. For the second database, we're going to create and maintain a PHPUnit_Extensions_Database_DefaultTester object as a protected
 ... ...
P Edit Del

Profiling PHP using XDebug and Webgrind

Monday, 15th September 14
compton

Derick Rethans' Xdebug is a really useful PHP extension that lets you step through code line-by-line as it executes, watching variables and seeing exactly what's going on.

Line-by-line debugging isn't the only way this extension allows you examine and improve your code though, as it can also profile your code to let you see how much time each part of your script takes to execute. Assuming you already have Xdebug installed - it's available through PECL if you don't - you have to add the following lines to your php.ini to enable the profiler:
xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 1 xdebug.profiler_output_name = xdebug.out.%t xdebug.profiler_output_dir = /tmp
Notice that xdebug.profiler_enable is set to 0. This is because we don't want ... ...
P Edit Del

Enable 5.1 Linux Audio on Motherboards with Only 3 Jacks

Thursday, 22nd December 11
compton

If you're running Alsa on your Linux distro, without pulseaudio (e.g. Arch Linux, SUSE), and your onboard audio only has 3 Jacks - Line In, Speaker, and Mic - but supports 5.1 audio, follow these steps to enable it.

Add the line below to a file called /etc/modprobe.d/options. If the file doesn't exist, create it.

options snd-hda-intel model=3stack-6ch
Note that the model identifier you use will depend on the particular audio chipset installed on your system. The above is suitable for the Realtek ALC662 without S/PDIF - check the list here to find the one you need. Also, if you are using pulseaudio, e.g you're on Ubuntu, put the above line in /etc/modprobe.d/alsa.conf instead.

Reboot your system to make this change take effect. You should now be able to configure all 5.1 channels using alsamixer. Run this from the command line, and use

 ... ...
P Edit Del

Native Linux Space Warfare: Freespace 2

Saturday, 31st March 12
compton

Freespace 2 is an ace game, atmospheric, moody, with lots of huge spaceships squaring off against each other in epic battles teeming with smaller craft, explosions and mega-death blastrays. The sound effects are good, the story compelling, and even the voice acting is well done.

Or at least it was, when I first played it over 10 years ago. It's since been open sourced, and the community open source project is still lively today. The code will run natively on Linux and even Apple, as well of course as Windows, and has significant enhancements contributed by the community since the original release. Even though the game's executable code is fully open source and can be compiled from the public subversion repo mentioned here, you still need to own the game in order to get the data files needed to play. If you don't already own it, the best solution is to
 ... ...
P Edit Del

How To Make a Firefox Add-on

Thursday, 23rd January 14
compton

There are two ways to develop a Firefox add-on: the old XUL way and the New SDK Way. The old way uses a combination of JavaScript and XUL, along with an RDF file to describe the extension so that it can be correctly installed. XUL is XML mark-up that's similar to HTML and allows you to define UI components, aka widgets, by creating a XUL Overlay, which is merged with Firefox's built-in 'master' XUL. It's not recommended to code new extensions using this format, but if you do need to for some reason there's a netbeans plug-in that you might find helps development. This plug-in installs and runs fine in netbeans 7.4.

If you're making a new add-on from scratch, it's strongly recommended that you use the new SDK, which comes with a command-line build tool called cfx. I found this a real breeze


 ... ...
P Edit Del

Fix Ugly Fonts in Netbeans under Linux

Monday, 11th November 13
compton
By default, Java doesn't use anti-aliasing on fonts in AWT applications. It's been available for some time however, and can be switched on with the awt.useSystemAAFontSettings setting.

To enable anti-aliased fonts just for Netbeans, add -J-Dawt.useSystemAAFontSettings=on to the end of the netbeans_default_options line in /usr/share/netbeans/etc/netbeans.conf e.g.:
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dawt.useSystemAAFontSettings=on"
Alternatively, you can set this globally so that all AWT apps are affected, by setting the _JAVA_OPTIONS environment variable in your .bash_profile:
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
This also has Swing equivalent, using the swing.aatext preference. You'll have to log out and log back in for this to take effect.
P Edit Del

Changing Mailman Python Scripts for Virtual Host Support

22 Sep 09
compton

Mailman is a tried-and-tested Open Source mailing list manager. It's robust and reasonably efficient when running, however it organises lists internally by their local name only. In other words, you can't have one list called [email protected] on the same server as another list called [email protected] on the same machine, unless you have a separate mailman installation for each domain.

Many production environments do appear to use the separate installation per domain approach,


 ... ...
P Edit Del

inotify resources exhausted

11 Oct 13
compton

inotify is a part of the Linux kernel which watches the filesystem for changes. It is used for many different applications that need to react when there are changes to files in a specific location. For each location an application wants to monitor, it has to add an inotify watch, so apps can easily need a *lot* of these watches.

The system defines a maximum number of inotify watches that can be active at any one time. To see what is set on your system, run this command:
[code


 ... ...
P Edit Del

How to Run Internet Explorer 7, 8 and 9 in Linux with or without Wine

29 Jun 12
compton

Microsoft have a wonderfully long history of badly designed software that they're proudly continuing to this day with the abomination of IE 9 and the ghastly sham that is Windows 7. It's a tribute to the skills of the many hard-working marketing heads over at Redmond that despite the poor quality and the easy availability of superior cost-free alternatives, people the world over keep coming back to Microsoft like hookers on crack.

IEs4Linux

IE's popularity has exasperated professional


 ... ...
P Edit Del

Customising Joomla

20 Nov 06
compton

My first task is to investigate how we can create a single consistent look & feel for the admin GUI. I'll need to get a good understanding of how the admin GUI works and is organised.

When the admin first logs in, you have a grid of square buttons on the left, and some stats on the right. The page shows as index2.php in the address bar.

index2.php has the following structure:

  • includes
  • start session
  • get option and task request

 ... ...
P Edit Del

Using PHP pspell Spell Check Functions with a Custom Dictionary

2 Jan 08
compton

The pspell_* functions are a very useful feature of PHP, allowing you to scan text and highlight words which are potentially misspelt. Pspell implements the open source aspell spell-checking routines in PHP.

Basic Usage

Before using the functions, you need to open up the dictionary you're going to use by calling the pspell_new() function, specifying at least the language to use. You can also specify a second argument, if the language you plan to use has multiple
 ... ...
P Edit Del

Using Multi-Byte Character Sets in PHP (Unicode, UTF-8, etc)

15 Oct 08
compton

The following list details the PHP string functions which could cause problems when handling multi-byte strings. The multi-byte safe alternative is given when available:

Try mb_send_mail() instead.


 ... ...
P Edit Del

Book Review: How to Implement Design Patterns in PHP

31 Oct 10
compton

Matt Zadstra's book, PHP Objects, Patterns and Practice, aims to give an overview of sound OOP design in PHP applications, with a direct focus on Design Patterns. Until PHP5, OOP was not really possible with the language. Object and class support was sketchy, in many ways little more than a clumsy afterthought. Even now, the OOP mechanisms that exist are not complete, however they are at last adequate for the implementation of an entirely OOP design.

When

 ... ...
P Edit Del

Installing Xdebug for use with Eclipse on Ubuntu Linux

4 Jan 11
compton

Can now be done via PECL. PECL is a part of PEAR, so install that first:

sudo apt-get install php-pear
PECL also requires the PHP development libraries, which have to be installed separately on Ubuntu. On many distros, such as Arch Linux, you can skip this step.
sudo apt-get install php5-dev
Now you're ready to get Xdebug:
sudo pecl install xdebug
This will download and compile the Xdebug module. When it finishes successfully, it

 ... ...
P Edit Del

Nice n' Easy JQuery Image Rotator

9 Sep 11
compton

There are a myriad free libraries out there that offer JQuery image rotator functionality. The idea is simple enough - cycle through a series of images, smoothly transitioning between each using some effect or other.

So why code your own? Simplicity and control are the main reasons. Unless you're already loading up a 3rd-party rotator library, why add to the bandwidth overhead? Some of those libraries can be quite time-consuming to get to grips with, so a roll-your-own solution can be


 ... ...
P Edit Del

Going Back in History with AJAX and HTML5

13 Sep 11
compton

Web pages have become increasingly dynamic in recent years, with more and more content being fetched, manipulated and saved in the background with AJAX. This breaks the traditional connection between the URL and the displayed document: no longer does a URL refer uniquely to one single document. This causes problems for users, because browsers use the URL when storing pages in history. Browser history is implemented as a stack, a last-in, first-out (FIFO) structure. As you navigate through the


 ... ...
P Edit Del

Moving Arch Linux to a new SSD with rsync

11 Jul 13
compton

So we all got shiny new SSDs at work recently, and I was keen to get a new Arch installation up and running from the lovely new silicon. A bit-wise clone of the old disk's contents wouldn't work for me, as that was still formatted using ext3, and I wanted to use this opportunity to switch to ext4.

My initial plan was to just install a fresh copy of Arch from a USB, and it was as I was doing this that I realised I should be able to do the exact same procedure but from my existing Arch


 ... ...
P Edit Del

Mocking External Services with PHPUnit

20 Mar 12
compton

The basic idea behind unit testing is that the different components of an application can be tested individually (as a unit no less) by calling each component from a test application passing in a range of suitably picked parameters. When these automated tests fail, the idea is that they will pinpoint where the problem lies and what causes it.

Unit testing is naturally suited to OOP systems, as classes are very modular components that can be readily instantiated and tested in isolation by


 ... ...
P Edit Del

Scaling and Cropping AVI with mencoder

14 Nov 10
compton

The following are mencoder's video filter options, and must be specified after -vf. You can specify multiple filters, by separating them with a comma, and the filters will be applied left to right.
[code bash]mencoder [options] file INPUTFILE -o OUTPUTFILE

crop[=w:h:x:y]
Crops the given part of the image and discards the rest. Useful
to remove black bands from widescreen movies.
,
Cropped width and


 ... ...
P Edit Del

Getting Set up with Ogre 3D on Ubuntu

25 Apr 11
compton

The Open Source Code::Blocks IDE is the recommended choice on Linux systems, and it's available in Ubuntu's Software Centre. Install this first if you don't already have it.

On Ubuntu, you need to add the Ogre PPA and update your package list before installing the libogre-dev package (containing the Ogre 3D development libraries) and the sample projects:

[code bash]sudo add-apt-repository ppa:ogre-team/ogre
sudo apt-get update
sudo apt-get install libogre-dev


 ... ...
P Edit Del

Installing the Pidgin's Embedded Pictures and Video Plugin

24 Jan 13
compton

You'll need the following dependencies:

sudo apt-get install pidgin-dev libpurple-dev libglib2.0-dev libwebkit-dev libcurl4-openssl-dev
Then get the plugin source code and extract it:
wget http://geekr.googlecode.com/files/pidgin-embeddedvideo-imageview.tar.gz tar -xvf pidgin-embeddedvideo-imageview.tar.gz
Finally compile it:
cd pidgin-embeddedvideo-imageview/ ./configure --prefix=/usr make sudo make install
Now enable

 ... ...
P Edit Del

Command-line PHP script to remove duplicates from bash history

29 Nov 12
compton

For some reason, the erasedups option for bash history appears to have stopped working. Until I work out why and fix it, I wrote this PHP script to perform the same function.

[code]#!/usr/bin/php
$new_history = array();
for ($line = count($history) - 1; $line >= 0; $line--) {
   if (array_search($history[$line], $new_history) === false) {
      $new_history[] =


 ... ...
P Edit Del

Upgrading the Root Filesystem from EXT2 to EXT3

24 Jan 12
compton

Before starting, it's a good idea to run a disk check. Run the following command to create the necessary file and then reboot:

sudo touch /forcefsck
The following command converts the filesystem to EXT3, by creating the necessary journal.
tune2fs -c 0 -i 30 -j /dev/sda1
Edit /etc/fstab replacing ext2 with ext3 for the root filesystem mount.

Next we need to rebuild the Linux boot image using the mkinitrd tool.

Unrolling the

 ... ...

P Edit Del

Setting up a Git Repository on CentOS 5

29 Jul 11
compton

If you are setting up version control, and have access to a managed server, you may decide to create your central repositories on that server, so that all developers can access the repo from wherever they are: in the office, at home, on the beach etc etc

Many managed servers use CentOS, the commercial version of RedHat Linux. If you can find a source repo with git in it, you can install using yum:

yum install git
However, you're quite likely to come up against

 ... ...
P Edit Del

Enforce Coding Standards with PHP_CodeSniffer and Eclipse IDE on Ubuntu Linux

9 Apr 10
compton

The PEAR PHP_CodeSniffer project provides an invaluable tool for enforcing a consistent set of coding standards across a whole PHP project. Thanks to the guys at PHPsrc, it can now be installed as an Eclipse plug-in, to provide annotations about code standard violations right in your editor:



In order to get this set up and running, you first need Eclipse 3.3 or greater. You can download the package with PDT incorporated from


 ... ...
P Edit Del

Compiling and Installing on Ubuntu Linux

17 Oct 08
compton

Compiling from .tar.gz


The archive contains the source code files and supporting resources (bitmaps etc). So we'll need to compile this to make our executable program.

First extract the archive somewhere. I use a subdirectory off my home called src:
cd ~/src tar -zxvf ~/download/newapp.tar.gz
If the archive is compressed with bzip (extension is .bz2), use option j instead of z:

[code bash]cd ~/src
tar -jxvf

 ... ...
P Edit Del

Using SSH Tunnelling to Access a Local Network Remotely

6 Jan 10
compton

First set up the tunnel like so:

ssh -D 8080 -N REMOTEUSER@REMOTEHOST
You can also add the -f switch to make this run in the background. What this does is to forward connections to port 8080 on the local machine to the remote server over SSH (i.e. encrypted).

Once it's active, you can configure applications to use the tunnel by setting up a SOCKS 4 or 5 proxy for them.

In Firefox, go to Edit > Preferences, then choose the Network tab on the

 ... ...
P Edit Del

Restricting Bandwidth on Mac OSX

16 Aug 11
compton
If you're on Mac, you can throttle your own bandwidth with the following two commands:
sudo ipfw pipe 1 config bw 200KByte/s sudo ipfw add 1 pipe 1 src-port 80
To remove the throttle, use:
sudo ipfw delete 1
Legal warning: Macs suck and are grotesquely horrible contraptions. Making intelligent healthy people use them is dangerous, inhuman and illegal in many countries.
P Edit Del

ENUMs, User Preferences, and the MySQL SET Datatype

6 Mar 10
compton

The MySQL SET datatype is a very space-efficient way to store sets of binary flags. It's a little like the ENUM type, in that you define a range of possible string values, but unlike the ENUM, a column that holds a SET can have any number of the string values at one time.

It's useful to consider how MySQL stores SETs and ENUMs in order to appreciate what benefits they can bring.

Here's a simple table with an ENUM column and a SET column:

[code sql]CREATE TEMPORARY TABLE critters


 ... ...
P Edit Del

Move home Folder from its own Partition to the System Partition

29 Nov 08
compton

There's a lot of articles on the web explaining how to move a Linux home folder (containing all the user accounts) from the system partition onto its own partition.

I wanted to do the reverse procedure, and move my separate home partition to a regular home folder on the system partition. The only problem is that home can contain a variety of files and symlinks that wouldn't all get copied correctly with the mv command. The cpio archiving utility, available on a default Linux


 ... ...
P Edit Del

Using the JavaHL Native SVN Library in Eclipse

28 Apr 10
compton

With later versions of Eclipse and/or the SVN plugin, you have the option of using the Java native interface (JNI) library for Subversion support. For performance and platform independence, Subversion is written in C. The JavaHL library is written by the Subversion team, and basically provides Java wrappers for Subversion's C API. You can use SVNkit, which is a pure Java Subversion library, but until you've sorted it out one way or the other, you're likely to see lots of error messages reading


 ... ...
P Edit Del

Oolite on Ubuntu from Source

31 Jul 11
compton

Oolite is an open source space trading sim based on the original Elite game written by David Braben and Ian Bell in the mid 1980s. At its time, Elite was a ground-breaking game, with a seemingly enormous galactic map of stars to navigate, and loose open-ended gameplay.

The Oolite project has recreated the original game using OpenGL textured models, and the source code can be downloaded from


 ... ...
P Edit Del

G3D on Ubuntu Linux

19 Dec 09
compton

G3D is a cross-platform OpenGL library in C++. I haven't used it in a couple of years, when I first experimented with 3D C++ programming. The current version is 8 beta 2.

To install on Linux, you'll need to compile the G3D code from source. In my case, on Ubuntu 9.10, I had to install the following dependencies first:

sudo apt-get install libsdl1.2-dev xorg-dev libglu1-mesa-dev libzip-dev libavutil-dev
Then compilation is a question of running the following command

 ... ...
P Edit Del

Optimising MySQL

25 Jun 08
compton

Natural vs Surrogate Primary Keys

The primary key (PK) of a table is a column or set of columns which uniquely identifies each row of the table. A natural primary key uses actual properties (ie columns) of an item. For instance, if you have a table of cars, you might choose to use the registration number as primary key. This would be a natural primary key.

A surrogate primary key on the other hand is one which has been created specifically for the purpose. Generally this takes the


 ... ...
P Edit Del

JQuery Venetian Blinds Transition Effect

24 Aug 11
compton

JQuery has a few transition animations built in, such as the 'blinds' effect. This lets you unhide content by revealing it as if a blind were being pulled open in front of it, and vice versa to hide content.

I've built a variant on this idea that gives the effect of a venetian blind:

[html]


   

The Sockfather



Click to Close the
 ... ...
P Edit Del

MySQL Changes from Versions 4.1 and 5.0 compared with 5.5

10 Feb 12
compton

Under the hood, there are multiple performance improvements in MySQL 5.5. These mostly target the InnoDB engine, but there are several that will improve MyISAM tables. However, InnoDB becomes the default storage engine from version 5.5 onwards. InnoDB supports true ACID Transactions (groups of statements which are only committed if they all succeed), Referential Integrity (which enforces foreign key constraints on a DB level), and improved crash recovery. The cost is increased disk space usage,


 ... ...
P Edit Del

How to Cancel an fsck Disk Check during Boot on Arch Linux

11 Jun 12
compton

It's worth routinely checking your hard disks to alert you in advance of an impending disk failure and to tidy up orphaned blocks should they occur (very rare). For normal home users, who of course keep back-ups of important files in other locations, running this check once a month is sufficient, which you set using fs2tune.

However, in Arch Linux the fsck disk checker does not offer the option to abort a disk check once it has started. In Ubuntu for instance, you are told to press Esc to


 ... ...
P Edit Del

Restore GRUB After Installing Windows XP

3 Jan 10
compton

Note that when using grub commands, spaces are important. In particular, a space is required after the commands root and setup (but before the first bracket) and no spaces should be used inside the brackets.

1) Boot from a Live CD
2) Open a terminal window or switch to a TTY and enter:

sudo grub
3) At the grub prompt, use the following command to determine where grub is installed:
find /boot/grub/stage1
4) Using the hard disk and partition

 ... ...
P Edit Del

Constructing a Build File for Phing

31 Jul 12
compton

Phing is a build system based on Apache Ant, and serves to automate the process of releasing code for a development project. Before a new version of a PHP project can be released, you may have to undertake certain tasks such as running unit tests and code analysis tools, compiling dependencies (e.g. SASS, templates, language files), changing file permissions, copying files and many more.

The actions to perform are defined in the build file,
 ... ...
P Edit Del

Easy Electronic Circuit - Two Flashing LEDs

1 Apr 12
compton

When a couple of colleagues got Arduinos, I finally got round to getting hold of a starter kit off ebay. It's a very simple kit, with a breadboard and a selection of components that include resistors, capacitors, LEDs and transistors. It also had a couple of circuits pinched off the web to get you started, and they seemed as good a place as any to get started.

With the first one, two LEDs blink on/off alternately. The circuit comprises the following components:

  • LED x

 ... ...
P Edit Del

Choosing an Arduino Variant

3 Mar 12
compton

The Arduino is a microprocessor module released under Open Source principles, meaning that the designs are published and may be implemented with or without additional modification by anyone without having to pay licence fees. The core of the Arduino design is the Atmel megaAVR CPU, a proprietary CPU produced by Norwegian company Atmel Semiconductor. The Arduino board adds I/O support, exposing the megaAVR's I/O lines as standard connectors, which allow the board to be easily connected to a


 ... ...
P Edit Del

Introduction to Neural Networks

12 Feb 12
compton

Artificial Intelligence begins with the study of intelligence in biological systems and takes the knowledge and theories gained from that to engineer systems which exhibit intelligence. Neural networks are a perfect example of this: abstract mathematical models of the neurons that make up the brain. In some cases, neural networks are used in research to model the brain, and in these cases the aim is to make the artifical neurons resemble their biological counterparts as closely as


 ... ...
P Edit Del

Generating documentation from phpdoc tags

25 Jul 11
compton

phpDocumentor is a tool written in PHP to create complete documentation directly from both PHP code and external documentation. Well-written PHP source code practically serves as its own documentation. phpDocumentor taps into this by examining code for all kinds of structural hints, such as files, classes, functions, constant definitions, global variables, and class variables/methods. From this, it creates basic documentation in a traditional manual format. Note that you will need at least


 ... ...
P Edit Del

Turn Eclipse into a full-featured Perl IDE on Ubuntu

28 Apr 10
compton

With all the plug-ins freely available for it, Eclipse is rapidly becoming the one-stop IDE of choice for all your programming needs. The Perl plug-in from EPIC (Eclipse Perl Integration) is compatible with Eclipse v3.1 and higher:



You need Perl installed on your system in order to make use of all the plug-in's features, such as syntax highlighting and source code formatting. If you're running Linux (why


 ... ...
P Edit Del

Relocating Eclipse Projects: The project description file (.project) for XXX is missing

2 Nov 10
compton

Recently I changed the name of the mountpoint where my Eclipse projects are located, and while a lot of my projects opened without any problem, others would not, instead generating the error message:

The project description file (.project) for PROJECTNAME is missing

By default, Eclipse will look for the .project file in the root directory of the project itself. In some cases though, you may want to have the .project file outside of the main project directory, and you can do


 ... ...
P Edit Del

Pidgin Plugin for Jabber Chatrooms

10 Sep 10
compton

I would like to have the following features in Jabber chatrooms:

- system notification when user says any one of a list of trigger words (i.e. nicknames)
- ability to 'silence' selected people, so that their messages do not trigger sounds
- ability to mark people as 'special', so that whatever they say a system notification will be created (regardless of whether or not they use one of the trigger sounds mentioned above)

The last two could be combined into a single 3 position setting -


 ... ...
P Edit Del

Eclipse and PHP: Which is the Best Plug-in, phpEclipse or PDT?

19 Apr 10
compton

The differences between these two plugins are varied but subtle. After having used phpEclipse for the last couple of years, I decided to give PDT a proper try as I needed to do a fresh install in order to get the PHP CodeSniffer Plugin working fully.

PDT


  • Excellent HTML validation, and built-in CSS support (code highlighting, intellisense and autocompletion for

 ... ...
P Edit Del

PHP Snippets

2 Aug 08
compton

Closing HTML Tags for a snippet


The XML DOM class which comes built-in to PHP as standard offers the ability to fix the markup in an HTML snippet. Say for instance you have a string of HTML code $htmlCode and wish to show a preview on a webpage, you could do the following:
$htmlSnippet = substr($htmlCode, 0, 500); $snippetMaker = new DOMDocument(); @$snippetMaker->loadHTML($htmlSnippet); echo $snippetMaker->saveHTML();
Note that we suppress warnings generated

 ... ...
P Edit Del

File Structure of ezmlm Mailing Lists

25 Nov 09
compton
The ezmlm mailing list stores configuration options for a list as files on the file system (rather than using a config table in a database, or even a single config file).

In order to migrate a list from ezmlm to another list manager, such as mailman, it's necessary to understand the file structure in order to work out how the list is configured.
P Edit Del

Mailman Virtual Hosts Info Collected from the Web

17 Sep 09
compton

From http://www.webmasterworld.com/forum92/3366.htm:

The situation is this: A single server with multiple IP addresses and related hostnames acts as a mailman server. Mailman is a mailing list manager with a builtin web archive and subscription management system written in php. As shipped it injects a file called mailman.conf into /etc/httpd/conf.d that uses mod_alias to redirect traffic of the form


 ... ...
P Edit Del

Development Resource Project

22 Feb 07
compton

The aim is to provide a resource where developers can go in order to get code for a specific task.

Objectives

  1. To reduce time from design to deployment
  2. to help maintain code quality
  3. to reduce need for maintanence and support
  4. to help ensure code meets specific requirements (including FF support, security, performance)
  5. to facilitate group work through standardization
  6. to grant designers the ability to easily understand the functionality

 ... ...
P Edit Del

A Simple ISAPI Filter for Authentication on IIS

12 Dec 07
compton

The MDSN samples include a C++ project for building a ISAPI DLL which performs authentication for web resources against a text file. This project, AuthFilt, is one of the samples supplied with the .NET Platform SDK, available from here. Once you've installed the SDK, the sample code is located in the AuthFilt folder at Program Files\Microsoft Platform


 ... ...
P Edit Del

Carisma Running Problems

22 May 06
compton

The main problem this car has suffered since I bought it has been its poor idle. For the first six or so months, it ran absolutely fine, but then it began to stall regularly when idling, and it's steadily got worse. Even now it's got warmer has not improved, and happens equally whether the engine is warm or cold.

The stalling problem did not appear to be a physical issue with the overall running of the engine which remained smooth and even when under power. It appeared to be more to do with


 ... ...
P Edit Del

The First G3D Example

22 Dec 05
compton

Right, so now I've checked everything is set up correctly, I've decided to take a look at the examples that come with the G3D library.

There are seemingly eight, described on the G3D web site; it's not clear if there's any natural progression through them.

  • ArticulatedModel
  • loads models from files in 3DS, IFS, and PLY2 formats. Creates a scene graph, uses 'Pixel Shader 2.0' and 'fixed function' pipelines,

 ... ...
P Edit Del

The Other G3D Examples

28 Dec 05
compton
The example I'd like to look at next is the ArticulatedDemo. It does a whole load of things, like loading a variety of models and placing them in a scene graph. It's this scene graph thing that I think I need to understand properly.

Unfortunately, I can't get ArticulatedDemo to run - it compiles and links ok, but fails an assertion, then crashes.

The next most interesting demo is Collision_Demo, which has a set of static objects in a box, then drops a load of different sized balls in, which bounce around the place.

It compiles and runs fine.
P Edit Del

The IFS Modeller

22 Jan 06
compton

This little program allows you to create IFS models suitable for use in G3D programs. An IFS model can be built from an array of vertices with an associated array of indicies. The indices refer to offsets in the vertex array, and are grouped in sets of three - representing the triangular faces of the model.

So far, my program allows you to:

  • Add a new vertex at the origin
  • Select a vertex with the TAB key
  • Move the selected vertex with the numpad arrow

 ... ...
P Edit Del

First 3D Game

31 Dec 05
compton

I now feel I'm ready to have a go at creating my first simple OpenGL game. It's going to be pretty simple - there'll be no scene graph, just a simple array for storing objects in the world. I won't implement frustum culling either, at least not in the first instance.

My game will be based on space flight, so I will start with the player's ship. It should appear just in front and below of the camera, i.e. third person. It should turn and dive/climb in response to keyboard input, and have a


 ... ...
P Edit Del

The G3D Library

18 Dec 05
compton
G3D is an open source graphics engine that can be used from VC++ 7. This means G3D projects can be developed in VS.NET, and make use of Intellisense and its debugger.

It requires the SDL library, which I've installed OK. G3D is also installed, but the test program isn't as simple as the SDL one, so I have not yet confirmed it is installed and available to VS.NET.
P Edit Del

Finite Automata: The Theory behind Regular Expressions

11 Jan 11
compton

Regular Expression Principles


.DotMatches every character
[]SetMatches the specified set of characters (hyphens may be used to specify a range of characters)
()BracketsGroups patterns together so they can be treated as one
|Alternativematches either the

 ... ...
P Edit Del

Big Data and the Semantic Web

29 Oct 10
compton

Data Storage


Data Centers today require high performance, highly scalable designs. The options available to re-architect networks have grown dramatically in the last 3 years. Spanning Tree Protocol (STP) is a link layer network protocol that allows only a single link to be active between any two nodes. This helps ensure a loop-free topology but limits the total bandwidth of the network. Switch architectures were designed with limited bandwidth to support


 ... ...
P Edit Del
About This Page