Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.

About this Index

This is an index of all of the articles written on The Horse's Mouth blog, starting in summer 2004. And we have added longer articles from The Solution Centre, and source code examples too where appropriate.

Shorter (blog) articles are listed with their reference numbers in [] (square brackets), longer articles listed in () (round brackets) and examples listed with their program name in {} (curly braces).

You'll find a series of in-page links at the division point between each major section, so that you can naviage within this page ... and we have targetted all the links to a new page so that you can step around and find exactly what you're looking for without a lot of refreshes.

If you find this resource useful, please let us know. If you have any questions, please feel free to ask. And if you want to learn a lot more, please look at our training courses which are linked from the top of the page, or look at our course schedule here
Article and Example Index - sorted by subject
top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

A: Linux, Apache httpd and Tomcat

Overview A050 - Web Deployment - General
(article) The Author of the Apache httpd and Tomcat Course

Overview A051 - Linux - General
(article) Linux and httpd file system layout - LAMP server

Overview A052 - Networking - General
(article) What are NIS, LDAP, DNS and BIND
(article) Firewall fundamentals - Linux

Module A100 - The Components of a Web-Based Solution
(article) Open Source - here to stay, or a flash in the pan?
(article) Web applications using LAMP technologies
(article) New to programming. Portable code. Perl or Java?
{examples.txt} Source code examples for our training modules
{index.php} Simple test script for WAMP

Module A101 - Linux -An Introduction For Users
(article) awk - pattern scanning and formatting
(article) Korn Shell - Basics
(article) Korn Shell - History, storing to file, commands
(article) Korn Shell Scripting - an introduction
(article) Tiny guide to vi basics

Module A161 - Users and Groups
(article) A Web interface for your Linux admin tasks

Module A162 - Backups and File System Management
(article) Linux and httpd file system layout - LAMP server
(article) Why Partition a disc drive?
(article) Linux and XP - loading a dual boot system
{hourly} Hourly database backup script
{twice_weekly} Twice weekly backup script

Module A163 - Network Configuration and Security
(article) Firewall fundamentals - Linux
{hosts} Archived /etc/hosts file

Module A164 - Services and Regular Jobs
(article) Windows clients to a Linux Server
{crontab} Sample crontab file - repeated, timed jobs
{timeset} Sample crontab job - checking system clock

Module A166 - Linux Utilities
(article) awk - pattern scanning and formatting
(article) Korn Shell - Basics
(article) Korn Shell - History, storing to file, commands
(article) Korn Shell Scripting - an introduction
{as3} Using awk to select and format data, and calculate
{gents.dat} Input data for utilities
{ladies.dat} input data for utilities
{as2} awk - match in whole line or on specific field
{aspers.txt} grep example output
{as1} awk - BEGIN, END and patterns
{demo.awk} awk script to analyse a data file
{lsof_extract.awk} awk program to analyse and report on listing of open files
{requests.txt} input data for utilities
{demo.pl} Sample Perl script to analyse data file

Module A167 - Shell Programming (bash)
{pex} textual manipulation of shell variables
{dc5} Data copy, calculating statistics
{dci} Data copy, use of shell variables
{datcopy} Simple copy script to run from command line
{eocl} Usage line and for loop - bash
{another} Shell read from stdin up to next new line
{skillcounter} Perl script - needs setting up to run as Linux command
{yesterday} yesterday in a bash script
{dcj} Data copy, with command line parameter
{shelc} Shell numric and string comparisons. Also backup script
{askuser} select - choose from stdin
{dc4} Data copy, loop to copy files one by one, checking
{wont} Stopping ^C in a shell using trap
{skcount} Skill counter - sample script in alternative Perl language
{dcif} Data copy, use of shell if statement
{lookup.sh} Bourne Again Shell script for CGI Web server
{help} Towards bash scripting - series of commands
{fnk} function definition and use
{dc_checked} Data copy with conditional check

Module A168 - Compiler and development tools
{makefile_hello} Compiler tools - simple Make file
{Make_2} Makefile - with standard rules and Make variables
{makefile} Simple makefile example
{Make_3} Variable and their types, conditionals and make functions
{more.c} Second source file for makefile / compiler demo
{demo.c} Hello World in C for compiler tool demo
{Make_1} Straightforward, commented Makefile
{mytcl.c} C program for gcc practise

Module A172 - Korn Shell - interactive and programming facilities
(article) Korn Shell - Basics
(article) Korn Shell - History, storing to file, commands
(article) Korn Shell Scripting - an introduction
{script_korn} Korn shell script
{stroppy} String Test Operators
{pippa} Setting up and referencing a Ksh array
{sharon} for loop - Korn Shell
{tracey} Korn shell array and while loop
{hello_korn} Korn shell commands in a file
{dat_backup2} Uses bourne shell compatible tests
{selk} Korn Shell - Select example
{dat_backup3} Korn shell conditional testing
{numtee} Korn Shell - numeric (integer) testing
{funky} Define a function - Korn shell
{gvar} ksh - global and local variables
{kornserver.cgi} Korn shell / web script using CGI
{dat_backup} Simple shell script to back up file
{townline} Selects a town ending
{filestat} Comparing one or two files

Module A180 - Name Services - overview
(article) What are NIS, LDAP, DNS and BIND

Module A181 - LDAP / OpenLDAP server
(article) What are NIS, LDAP, DNS and BIND
{training.ldif} A sample user data entry
{org_struct.ldif} define the organisation structure

Module A192 - Firewalls
(article) Firewall fundamentals - Linux
{chaingang} sample iptables for firewalling a web server

Module A193 - DNS
(article) What are NIS, LDAP, DNS and BIND
{resolve.php} PHP to look up country and domain details from an IP
{cco.php} setting up a menu to offer countries
{wellho.zone} sample zone file for spring.wellho.net domain
{named.conf} bind 9 sample file - /etc/named.conf
{resolv.conf} client file to point to DNS server

Module A207 - HTTP
{relocate} Move a directory permanently via .htaccess

Module A211 - Web Application Design and Deployment
(article) Using current exchange rates on a web page

Module A213 - Commercial and Legal Aspects
(article) Using current exchange rates on a web page

Module A301 - XML, DTD, XSLT, XHTML and More
(article) Handling XML in Java
(article) Using LWP to write Web Clients
{imglist.xsl} XSLT sample - produces a table of images -->
{xslt.php4} Process an XML file through XSLT in PHP
{xml5.pl} Alternative - using handlers
{reminder.html} Sample HTML document from this module
{capname.pl} Altering an XML document through LibXML

Module A401 - Structured Code and Object Orientation
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{firstweb} This is a sample of the PHP language
{firstwish} First program in Tcl
{firstclass.java} Sample program - written in Java */
{firstalt} This is a sample of the Perl language
{firstprog} This is a sample of the Python language

Module A501 - Java - Basic Language Overview
(article) New to programming. Portable code. Perl or Java?

Module A502 - Java - Basic Tools
{Debbie.java} Class used in Chloe.java example
{Bella.java} Running a method in Java
{Chloe.java} Running a method from another class
{javalog.001} Annotated log
{Summer.java} Summer test program
{Annie.java} "Hello World" in Java
{Passport.java} Passport class

Module A506 - Java - Installing and Deploying optional Technologies
{Finger.java} simple logging - log4j - using a properties file
{Thumb.java} Hello log4j world

Module A509 - Java - Ant build tool
(article) Overview of Ant - a Java based build tool

Module A602 - Apache httpd - Sourcing, Installation, Testing
(article) Linux and httpd file system layout - LAMP server
(article) A Web interface for your Linux admin tasks
(article) Windows - running Apache and MySQL from a CD
{yumyum.pl} Setting up and first test program for CGI scripts
{config.nice} Sample configuration details

Module A603 - Further httpd Configuration
(article) Linux and httpd file system layout - LAMP server
(article) A Web interface for your Linux admin tasks
(article) Load balancing and robustness - httpd, tomcat, PHP, Servlets, MySQL
(article) Making all your .html files run a Perl script
(article) The proxy jServ, jk, jk2, warp and jk story
(article) Windows - running Apache and MySQL from a CD
{webuser} Script to run
{DOTmy.cnf} Override MySQL defaults with .my.cnf
{demo.php} Demonstration of mod_rewrite
{add_account.php} Add a MySQL and Linux account from a web page
{fulluser} Script to create Linux and MySQL accounts
{DOThtaccess} mod_rewrite - all .html request divert to a script
{andy} A Programmed RewriteMap for mod_rewrite in PHP
{AUP} Acceptable User Policy
{README} sample README file
{mpmsample.conf} Sample Annotated Prefork and Worker MPM configurations

Module A604 - Apache httpd - virtual hosts
(article) Multiple domains on a single web server
{vhost_withnote} Virtual Hosting - sample template for many-domain system
{vhosts_proxy.conf} Virtual Hosting Example with forwarding to Tomcat
{vh} Virtual hosts - a simple structure
{vhost.snowdrop.conf} Virtual host sample - snowflake, snowdrop and raindrop

Module A606 - Apache httpd - log files and log tools
(article) Web Forensics
(article) Log file analysis - short Python example
{als} Analysing Web Server Logs
{o10x} Generate parallel network traffic to test a server
{statlog} Server Status Logger / hpptd to run via crontab
{httpd-info.conf} Config file for Apache Status and Info

Module A607 - Apache httpd mod_rewrite
(article) Making all your .html files run a Perl script
(article) The proxy jServ, jk, jk2, warp and jk story
(article) Load Balancing and Clustering

Module A608 - Apache httpd mod_proxy
(article) The proxy jServ, jk, jk2, warp and jk story
(article) Load Balancing and Clustering
{httpd.conf} httpd.conf which includes extra proxy forwarder file
{proxy.conf} Sample mod_proxy configurations
{httpd-forwarder.conf} Proxy Forwarder include file for Apache httpd 2.2

Module A652 - Tomcat -Sourcing, Installing and Initial Testing
(article) Running CGI scripts in Apache Tomcat
(article) Running SSI (Server Side Include) scripts in Apache Tomcat
{server.course.xml} Cut down server.xml file, from a course practical
{tomcat-users.course.xml} tomcat-users.xml file, modified on a training course
{web.course.xml} web.xml, as cut down / modified during a training course

Module A653 - Tomcat - Configuring Web Applications
(article) Running CGI scripts in Apache Tomcat
(article) Running SSI (Server Side Include) scripts in Apache Tomcat
{TinyServ.java} A Simple servlet for testing initial operation of Tomcat
{Coffeeweb.java} Servlet source + web.xml + CLASSPATH all in one example
{first.jsp} A simple calculator in a JSP page -->
{Smallest.java} Smallest servlet - hit counter
{Tempconv.java} Temperature Conversion Servlet -->
{demo.jsp} A Java Server Page Multiplication table -->
{web.xml} mapping servlet URLs to classes -->
{index.html} Home page for latmj web application -->
{Agetest.java} Class to use with age testing JSP pages such as supervisor.jsp
{booklook.jsp} JSP tags used to call up Java Beans -->
{together_jsp.java} Conversion of together.jsp into a servlet
{bookrun.jsp} JSP to get author based on ISBN number in form -->
{together.jsp} A form and a program in the same .jsp -->
{isbnform.html} Form for bl3.jsp example -->
{bookform.html} Form to ask for ISBN number -->
{prog1.cgi} Perl script to test Apache Tomcat CGI support
{Summer.java} First Example of using Java Servlet Sessions
{demoform.jsp} A JSP to calculate based on form data -->
{shortform.html} A short form to allow the user to input to a JSP -->
{first.web.xml} Very simplest web.xml -->
{Autumn.java} Servlet Sessions, and variable scope.
{Book.java} Book bean - connect to MySQL to look up Author based on ISBN */
{supervisor.jsp} JSP Page to compare your age to 21, using the agetest class -->
{page1.html} Test page - HTML - for new Tomcat install -->
{idemo.shtml} SSI Script to test Apache Tomcat SSI support

Module A654 - Configuring and Controlling Tomcat
{6_web.xml} Sample web.xml for Tomcat 6
{6_context.xml} Tomcat 6 - sample context.xml
{tomcat} Tomcat 5 startup script for /etc/init.d and chkconfig use
{6_server.xml} Tomcat 6 - sample server.xml file
{6_tomcat-users.xml} Sample tomcat_users.xml for Tomcat 6

Module A655 - Using Tomcat and Apache httpd Together
(article) Load balancing and robustness - httpd, tomcat, PHP, Servlets, MySQL
(article) The proxy jServ, jk, jk2, warp and jk story
{snowdrop.httpd.jk.conf} mod_jk configuration example - balancing and status
{httpd.forward} Forwarding from http to Tomcat
{jkworkers.properties} Configuration file for mod_jk with load balancing

Module A656 - More Tomcat Configuration
(article) Load balancing and robustness - httpd, tomcat, PHP, Servlets, MySQL
{index.jsp} A Shopping cart JSP that maintains state -->
{web.xml} Session timeout changed to 120 minutes -->
{Store6.java} Store class, used to maintain state in JSP demo */
{products.txt} Product data for Shopping cart demo
{server.xml} Sample server.xml file

Module A657 - Using httpd to front Tomcat
(article) The proxy jServ, jk, jk2, warp and jk story

Module A690 - Clustering and load balancing
(article) Load balancing and robustness - httpd, tomcat, PHP, Servlets, MySQL
(article) The proxy jServ, jk, jk2, warp and jk story
(article) Load Balancing and Clustering
{server.xml} Tomcat 6.0 server.xml with named jvmroute

Module A805 - Perl - modPerl, Mason, CGI.pm and LWP
{coojar} Automated web client to wait for results page

Module A900 - Tomcat - Extra Features
(article) Load Balancing and Clustering
{balance.conf} httpd mod_rewrite map for load balancing Apache Tomcat
{sslc} server.xml setup example - SSL connector
{bal.httpd.conf} Load balancing a number of Tomcat instances via httpd
{cluck.pl} "heartbeat" script to switch servers
{clust} Clustering - basic setup for server.xml
{mod_rewrite-load_balance} Configuration file mod_rewrite load balancing
{server.xml.virtual} Virtual Hosting on Tomcat.

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

C: C and C++ programming

Overview C050 - C - General
(article) Introduction to the C Programming Language
{starstar.c} multilevel pointers
{remember.c} Call by value v call by address
{tryme.c} realloc - adds new memory in sizeable chunks
{pinc.c} Pascal's Triangle - calloc'd rows
{pinc2.c} Pascal's triangle all in calloc'd memory
{globals.h} include file for cppex.c
{cppex.c} uses of preprocessor directives (cpp)

Overview C051 - C++ - General
(article) Introduction to the C plus plus Programming Language
{fiftytwo.cpp} First definition and use of class
{selfhotel.cpp} extensions to base functionallity - first example
{circle.cpp} circle class methods
{square.cpp} square class methods
{starredhotel.h} header file - the other extended class
{g_hotel.h} header file - base class
{shape.cpp} shape class methods
{act_01.cpp} Simple C++ demo - class - interface and test program
{circle.h} headers for circle class
{shape_main.cpp} main shape program - a.k.a. hereitis
{sixtythree.cpp} er and est
{further.cpp} Main demo program to show polymorphism in C++
{makefile} Makefile for complete C++ example
{act_02.cpp} Second C++ demo - heap v stack, char handling, this, static
{rectangle.cpp} rectangle class methods
{g_hotel.cpp} method code for base functionallity
{heapdog.cpp} Homes and Animals
{comparetors.cpp} With Comparators
{starredhotel.cpp} extensions to base functionallity - second example
{selfhotel.h} header file - one of the extended classes
{shape.h} headers for shape class
{computers.cpp} Inheriting constructors and multiple methods of same name
{rectangle.h} headers for rectangle class
{sixtyfour.cpp} adds a destructor
{sixtytwo.cpp} Inheritance, constructor calls, virtual methods
{square.h} headers for square class
{sixty.cpp} First Interitance

Module C101 - Introduction to C
(article) Introduction to the C Programming Language
{starter.c} Read from user - calculate - provide answer
{g3.c} Hello World with extra function call
{fourth.h} Separate function file and include file [header part]
{greeting.c} Hello World in C
{friend.h} Snippet of code to #include
{g4.c} Loading code from another file
{second.c} Loops and functions
{ltab.c} Comparing while and do loops
{fourthmain.c} Separate function file and include file [main part]
{fourthfuncs.c} Separate function file and include file [functions part]

Module C201 - C Language Fundamentals
{makefile} makefile for C version of "hello world"
{hello.c} First C program
{second.c} Commenting code in C
{first.c} First program and some comments
{tara.c} Sample function to illustrate inclusion
{cond01.c} C and C++ preprocessor examples
{t2.c} What happens when you overflow

Module C202 - A first practical program
{vars.c} Delaring but not initialising - what happens?
{cvopt.c} Prompt - read - calculate - decide - report
{calcit.c} First calculation
{tconv.c} Temperature conversions
{makefile} makefile for module C202
{vars2.c} Declaring and initialising variables
{adder.c} Variables and arithmetic in C
{second.c} Read, Calculate, output results */
{fred.c} Calculation of VAT on an amount
{nranges.c} Testing number ranges in C
{p003.c} Remember to prompt the user

Module C203 - Conditionals and Loops
{greet.c} Learning to program in C ... first day's illustrations
{freshmeat.c} while loop - compared to goto loop and for loop
{freshveggies.c} for loop - compare to goto loop and while loop
{cb.c} Using { and } to scope a block
{ex_203.c} Exercise - throw a die until you get a 6
{tall6.c} Temperature conversions in a while loop
{lp2.c} for loop - bad and good examples
{tall3.c} Temperature conversions in a while loop
{makefile} makefile for module C203
{tall2.c} Temperature conversions using switch
{eight.c} loop showing weight loss needed until user is healthy
{tall4.c} Temperature conversions with ++ and +=
{sindol.c} Singapore Teapot answer
{sindy.c} Singapore teapot in C
{third.c} Conditional - if and else - example
{lp1.c} repeating code in a while loop
{otherbits.c} Functions used in function prototype demo (ANSI C)
{tall.c} Temperature conversions using if
{seven.c} Conditional statements in C and C++
{eer.c} Program that makes use of ANSI C function prototypes
{demo.h} Function prototypes for err.c and otherbits.c demo
{fresh.c} looping via a goto

Module C204 - Functions, Macros and programs in multiple files
{twice.cpp} Two functions of same name in C++
{healthybits.c} functions to be loaded from another program
{tcmain.c} Using functions
{xrcz.c} Sample answer - main code for VAT exercise
{tcsub.h} Using functions - the header file
{makefile} makefile for module C204
{tcsub.c} Functions in their own file
{taxi.c} functions for VAT rate exercise
{healthcheck.c} function prototypes and extern
{funfiles.c} The home for an extern variable
{tcall.c} Function definition and call
{funfuncs.c} use of extern to reference variable held elsewhere
{p3.c} Returning values from a function
{fundy.c} call by value v call by pointer / reference
{third.c} Separating look and feel from business logic
{astamp.c} changing a parameter's value within a function
{twice.c} Function names must be unique in C
{lp3.c} Variable declaration and scopr in inner blocks
{abcpointers.c} Ways of passing back results from a function

Module C205 - Arrays
{rainfall.txt} Sample rainfall data (1) - always 31 days of data
{par.c} pointers v arrays
{pa3.c} Allocating heap memory and passing to a function
{arrbad.c} Arrays - triangle numbers WITH ERROR
{pa2.c} Passing an array to a function - (2)
{makefile} makefile for module C205
{afp.c} Pointers and Arrays - Interaction
{abits.c} extern - a global variable
{series.c} read array, print in reverse, min and max
{lp.c} declaring an array and defining its length
{arr1.c} Arrays - triangle numbers
{abits.h} header file for global variable demo
{amain.c} Use of constants and globals
{morearr.c} Arrays - days and months
{paif.c} Passing an array to a function - (1)
{eleven.c} Array - declaration, filling with data, reusing

Module C206 - Character Strings
{cx.c} String copying and manipulation
{p023.c} read an array of numbers from a text string
{pothat.c} Strings via pointers and arrays of chars
{cli4.c} Picking out command line options into an array
{csame.c} Comparisons of strings in C
{lynebreak.c} Tokenising a C string
{p022.c} parsing and checking integers off a line
{s1.c} String compare and copy
{fff} Some sample data
{sti1.c} Characters and strings in C
{makefile} makefile for module C206
{s4.c} Read lines from file, tokenise them, save data into an array of structs.
{rabbit.c} Structures and file i/o - C
{cli5.c} More advanced coding style to handle argv and argc
{dynbad.c} How NOT to do it - overrunning an array
{dynamic.c} memory allocation and release with calloc and free
{chout.c} Strings v chars
{cli2.c} Command line - use of pointers example
{cs1.c} Comparing strings in C
{reg2.c} Match and Capture - Regular Expressions
{readwrite.c} File handling basics in C
{ccis.c} Basic string and command line handling
{p021.c} String handling examples
{cli.c} Command Line Handling
{cli3.c} Command line params - more complex character string arrangement
{cstr.c} String manipulation in C
{range.c} Summing numbers from the command line
{reg.c} Regular Expression matching in C

Module C207 - Pointers and references
{ip2.c} Passing pointers to functions
{arp.c} referencing array members through pointers
{makefile} makefile for module C207
{p2.c} Passing a reference to allow a variable to be change from a function
{p4.c} Passing complex data via a single pointer
{ptr1.c} Temperature conversions - pointers
{pfirst.c} use of pointer - passing to function
{fifth.c} Further use of pointers - returning multiple values
{stock.c} Jelly beans
{referee.cpp} References and pointers (and direct variable use)
{cli2.c} Handling command line args via pointers
{excuse.c} Pointers - illustrative example 1
{po.c} Pointers and addresses - the mechanism
{pdo.c} Hello pointer world
{psecond.c} How a pointer can give a temporary name
{ex_c207.c} passing pointers in to a function to allow multiple returns
{fourth.c} function calls - call by value and call by name
{plot.c} Passing an array to a function
{p1.c} First use of pointers
{dj.c} Comparing call by name and call by value

Module C208 - Programming techniques and tools
{cle.c} Command line arguments and the environment
{fyle.c} File reading - template for delegates
{qn208.c} Command line options and parameters
{tdd.c} Test harness - test driven development
{makefile} makefile for module C202
{ctoken.c} Tokenising a string into a structure
{bmi.h} header file for functions to be tested
{bmi.c} Functions to be tested

Module C209 - Structures and Unions
{trains.c} An array of structures
{reso.c} Struct, Structures and Structure Pointers
{combo.c} stuctures - a first example
{combo3.c} stuctures - array of structs
{trains_04.c} Structure Pointers
{union.c} Example of a Union in C
{ot2.c} Defining and using a structure
{ztwo.c} C (towards C++), Septmeber 2018
{trains_02.c} Copying Strings in and out of a structure
{dinners.c} Read file into array of structs
{ts.c} definition and use of structure
{combo2.c} stuctures - adding pointers
{services.txt} Data for trains_06.c example
{ot3.c} Structure with char pointer
{trains_06.c} Dynamic allocation for struct and struct pointers, and populating from file
{mytrains.c} Use of pointer to a structure
{tud.c} A Union within a struct - practical use demonstration
{trains_03.c} An Array of Structures
{lunches.c} Read file into array of structs
{ot4.c} Pointer to malloc'd memory from a structure
{sixteen.c} Setting up and using structures on the heap
{trains_05.c} Dynamic allocation of memory for structs
{ts2.c} Definition and use of pointer to structure
{trains_01.c} Simple demonstation of a structure
{st1.c} Definition and first use of a structure

Module C210 - File Handling
{sf.c} Reading all the files named on the command line
{filesinc.c} low level file handling with open
{cmelk.c} Text file read and write
{lunches.c} Read file into array of structs
{ffiles.c} fopen to access files at a higher level
{deardir.c} Parsing a directory

Module C211 - Standard Libraries and other headers
{house.c} Sharing variables between object files - main program
{shared.c} First example of shared code
{bathroom.c} Sharing extern variables - a file of functions
{ten.c} Preprocessor directive demonstration
{g2.c} Gift server demonstration
{cpp.c} C Preprocessor examples
{hash} Sample preprocessor directives
{waterhorse.h} extern, and use of preprocessor to control it
{first.c} The Sandwich of your application within standard elements
{abc.h} include file example for cpp.c
{clever.h} Example of included file
{ex1.c} use of #define and #include

Module C212 - Memory Management
(article) Want something more dynamic than an array?
{trinamic.c} Memory allocation and freeing - demo of principles
{afp2.c} Dymanic array - runtime sizing on using calloc
{access_checkpoint_01.c} Routines to load data into array of structures and access it (1)
{loglook.c} Complete example - regex, realloc, string and file handling, etc
{supper.c} Read file into array of structs
{framework.c} Framework for testing lower level code
{strainer.c} reallocing for an array of structures
{access_checkpoint_02.c} Routines to load data into array of structures and access it (2)
{twelve.c} Dynamically sized collection
{access_checkpoint_03.c} Routines to load data (imporved API and Regex in C example (3)
{access_checkpoint_04.c} Complete example - loading log file and filtering
{slurpit.c} Dynamic memory allocation - reading a file of unknown length

Module C221 - Secure C Programming
{oob.c} A poor program - using un initialised variables and an out of bounds array

Module C230 - Revision of C
{overflow.c} Fast but unchecked - C
{ooc.c} C program using OO type patterns

Module C231 - Introduction to C++
(article) Introduction to the C plus plus Programming Language
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{table.cpp} Code for class in first demo
{fiftythree.cpp} several methods of same name
{cpp.cpp} C++ - example for C comparison
{fifty.cpp} define and use a class
{cs.cpp} string objects
{ir.inc} Function prototypes for first demo
{tabby.cpp} All together - C++ demo class and test program
{makefile} Compile / Load instructions for examples in this module
{rsmain.cpp} Scoping of variables in C++
{table.h} API definition - first class demo
{shift.cpp} The << operator in C++
{ir.cpp} File of functions
{fiftyfour.cpp} private method, arrays of objects and object pointers
{tabbymain.cpp} Sample / test program - first OO class
{app1.cpp} Main application
{hw.cpp} Hello C++ world

Module C232 - Defining and using classes in C++
{table.cpp} code - the internals of the Table class
{melksham.cpp} Class use with accessor functions
{hmain.cpp} First class in C++
{book.inc} Class interface - book
{a2.cpp} Array of objects of different types
{afuncs.cpp} Class use with accessory functions
{demo1.cpp} Base class and subclass method definition
{hellosurvey.cpp} Template for your first OO classes
{demo1.h} Base class and subclass header definition
{makefile} Compile / Load instructions for examples in this module
{hotel.inc} Class descriptor
{transport.cpp} Hello c++ world - define and use an object / Compare to Python
{allin1.cpp} Class definition and use all in one file
{table.h} Definition of API of a class
{book.cpp} Class implementation code - book
{dayfour.cpp} Creating objects on the stack or heap
{a3.cpp} Inherited methods - test program
{objects_bothways.cpp} stack v heap - object persistance
{hcd.cpp} Class description with accessor functions
{template.cpp} Design Pattern for class definition and test
{demo2.h} Further base and subclass header definition
{g_main.cpp} Fundamental use of classes example - C++
{hotel.cpp} Class member code
{demomake} makefile for module c232
{tabletest.cpp} A test harness for the Table class
{demo2.cpp} Further base and subclass definition
{mylib.cpp} Main application calling constructors and destructors

Module C233 - OO in C++ - beyond the basics
{human.cpp} second subclass of animal - human (2)
{accom4.cpp} An array of objects
{pet.h} Definition of subclass headers (2)
{accomchooser.cpp} Class using classes and derived classes with inheritance
{pert.cpp} Overloading, Inheritance, Virtual, Polymorphism and more
{petite.cpp} Abstract base class, two subclasses, polymorphic array
{accom2.cpp} Class storing strings within an object
{pet.cpp} code for second subclass - pet (2)
{shapes_01.cpp} Complete inheritance and polymorphism demo
{classinclass.cpp} Associated objects - one object used within another
{melkshamhotel.inc} include file to define melkshamhotel
{animal.cpp} the code for the base class (2)
{regionhotel.inc} include file to define region hotel
{regionhotel.cpp} Derived class member code
{shapes_03.cpp} Overloading +
{first_inheritance.cpp} What is Inheritance / how is it implemented in C++ (1)
{allinone.cpp.ex} Inheritance and Polymorphism example (all in 1 file)
{booklet.cpp} Destructors - how and when they run
{beasts.cpp} Definition of polymorphic class methods
{makefile} Compile / Load instructions for examples in this module
{shapes_02.cpp} Complete demonstration - data stored on the heap
{hotel.inc} Class descriptor
{beasts.h} Definition of polymorphic class headers
{testh2.cpp} Demo of polymorphism across an array
{ptx.cpp} inheritance and polymorphism - bus and train
{testh.cpp} First denmo of polymorphism
{accom3.cpp} An array of objects
{tinin.cpp} base class, extended class, test code
{Make_3} Makefile for our C++ inheritance / polymorphism demo (2)
{loader} Complete first Polymorphism example
{midi.cpp} Inheriting a Constructor
{human.h} extended subclass definintion
{second_inheritance.cpp} What is Inheritance / how is it implemented in C++ (2)
{hotel.cpp} Class member code
{NewHotel001.cpp} Second program to use our HotelRoomBooking - Array
{animal.h} Header file for a base class (2)
{melkshamhotel.cpp} Derived class member code
{small.cpp} Declare, define, use a class - all in one file
{NewHotel002.cpp} Second program to use our HotelRoomBooking - Vector
{trans.cpp} Associative classes example
{shapes_combined} All the files for the shape demo on one page!
{Accounts.cpp} C++ factory returning different object types

Module C234 - Further C++ Object Oriented features
{a4t.cpp} load filtered files to vector
{pet.cpp} multiple constructors, default parameters
{melkshamhotel.inc} include file to define melkshamhotel
{act_01.cpp} Simple C++ demo - class - interface and test program
{regionhotel.inc} include file to define melkshamhotel
{regionhotel.cpp} Derived class member code
{sixth.cpp} Interitance, Base Classes, Overloading of methods, etc - C++ course
{act_03.cpp} Object Extras. Vector, delete, factory, destructor, etc
{refdemo.cpp} References and Pointers
{erandest.cpp} costly, costly, costliest - object comparison
{Xmas.cpp} Vector, Multiple Inheritance, virtual, Polymorphism, Factory
{makefile} Compile / Load instructions for examples in this module
{hotel.inc} Class descriptor
{r2.cpp} References and Pointers for each array member
{act_02.cpp} Second C++ demo - heap v stack, char handling, this, static
{PMdemo} Polymorphism - complete example
{sixtyfive.cpp} Direct, reference and pointer access to variables
{alias.cpp} Direct, Pointer and Reference access to variables
{station_test.cpp} file read to object framework
{first.cpp} OO Buildup in C++ - starter
{refs.cpp} Direct, pointer and reference comparison
{compare.cpp} Comparatives - heavy, heavier, heaviest
{tinyref.cpp} References - description and sample code
{hotel.cpp} Class member code
{melkshamhotel.cpp} Derived class member code
{cube.cpp} Operator overloading
{bighotels.cpp} Comparing objects
{coffee.cpp} Overriding add, multiply and << for print
{overload_add.cpp} Operator (+) and to_string overloading, C++

Module C235 - I/O in C++
{fullapp.cpp} Shell for full application
{comb.cpp} Reading and writing files, file names from command line
{mtbsprint.cpp} implicit formatting to print an object
{boring.data} Sample data for C++ course examples
{file01.cpp} File handling with C++ streams
{makefile} Compile / Load instructions for examples in this module
{ioex.cpp} Stream demonstration
{fpri.cpp} Formatting floating point numbers in C++
{nine.cpp} Outputting an object via a stream
{fullapp2.cpp} Wholesale factory - a single call to make many objects
{Person.cpp} for use in print object demo
{cppdata.cpp} Reading data from a file
{Person.h} header file for object output demo
{stdcodes.xyz} Sample data file ...
{flow2.cpp} Factory method and file input to seed objects

Module C236 - Exceptions
(article) errors v exceptions
{except.cpp} Exception handling - catches
{makefile} Compile / Load instructions for examples in this module
{CppExcept.cpp} Creating exception objects, throwing and catching them
{microthrow.cpp} Defining, throwing, catching an excpetion
{prob.cpp} Exception handling - why we need it
{levels.cpp} Exceptions - try, catch yourself AND throw to parent too

Module C237 - Namespaces
{ave.c} Calling a C function from a C++ main program
{Ns.cpp} Definition and use of namespaces

Module C238 - Templates
{flow4.cpp} Reading a file within a factory, tokenising, vector
{vec01.cpp} Use of a vector in C++
{makefile} Compile / Load instructions for examples in this module
{template.cpp} Function templates
{clever.cpp} Reference, pointers, templates
{swab.cpp} more features of templates
{trans.cpp} Use of a vector as a member within an object

Module C239 - Putting it all together
(article) What makes a good variable name?
{Make_mark_2} Alternative Makefile to show Makefile facilities
{pd5.cpp} Switching from array to vector
{Filmtest.cpp} Main program for multiple inheitance demo
{Expense.h} Header file for second subclass
{Makefile} Makefile for multiple inheritance demo
{Expense.cpp} A second subclass for multiple inheritance demo
{fourthobject.cpp} 7 file full example with a factory and a vector
{HireFilm.h} Main class specification - multiple inheritance demo
{Film.h} header file for main subclass - multiple inheritance demo
{complete.cpp} this, vector, factory, inherrited constructor, file input, tokeniser
{Film.cpp} main subclass for multiple inheritance demo
{pd4.cpp} add iostream / namespace, inline, new, printing function, override +
{pd3.cpp} Add an object comparator
{Ninety.cpp} vector, factory method, files, tokeniser
{service_11.cpp} classes and subclasses
{pd2.cpp} add an array of objects
{pd1.cpp} Inheritance in C++ - base demonstration
{trains.txt} Data file for flow / flow2 / flow4 examples
{flow.cpp} Reading a file named on the command line within a factory
{alltogether.cpp} 7 file example
{HireFilm.cpp} Main class for multiple inheritance demo

Module C501 - Objective C, XCode and iOS Resources
{timeline_ViewController.h} Headers for ViewController
{helloipad_ViewController.xib} Hello iPad world - view layout
{timeline_ViewController.m} ViewController nethods
{hello.m} First program example - Objective C
{helloipad_ViewController.h} Hello iPad World - header
{helloipad_ViewController.m} Hello iPad World - main view controller

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

G: General Training Topics

Subject G100 - Introduction to Melksham
(article) Creating Really Memorable Experiences

Subject G101 - Getting to and from Melksham
(article) It's easy to get to Melksham, and there's things to do!

Subject G103 - Where to stay in Melksham
(article) Good places to stay in Melksham

Subject G200 - Course and Company information
(article) Training - our guarantee and commitment
(article) For the newcomer to Well House Consultants

Subject G203 - Training course prices
(article) How come our list prices are lower?
(article) Price Comparison on our training courses
(article) Pay on the day - not months in advance!

Subject G205 - Food and Drink.
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing

Subject G206 - Our training centre
(article) Bottles from Melksham Spa
(article) Well House Consultants - Key Facts

Subject G207 - Staff
(article) The Author of the Apache httpd and Tomcat Course

Subject G209 - Keeping up to date
(article) Portrait of the Author of PHP

Subject G210 - History
(article) Time Line - growth of our Open Source training
(article) Taxi from Melksham Station, Sir?

Subject G211 - The story of our Georgian HQ and Edwardian Hotel
(article) Time Line - growth of our Open Source training
(article) Bottles from Melksham Spa
(article) Well House Consultants - Key Facts

Subject G300 - Public Courses
(article) Free software - the joy of Open Source

Subject G301 - Booking a Public Courses
(article) How come our list prices are lower?
(article) Pay on the day - not months in advance!

Subject G302 - Coming to a course.
(article) It's easy to get to Melksham, and there's things to do!

Subject G303 - During the course
(article) Moving up a class

Subject G310 - A better class of course
(article) Moving up a class
(article) Why so many different courses?
(article) Training - our guarantee and commitment
(article) For the newcomer to Well House Consultants
(article) Creating Really Memorable Experiences

Subject G401 - On Site courses
(article) Onsite training - expenses
(article) On the Oban Road
(article) Pay on the day - not months in advance!

Subject G502 - Business Practice
(article) Free software - the joy of Open Source
(article) Phone and fax to 070059 numbers in the UK
(article) Creating Really Memorable Experiences

Subject G504 - Writing Notes
(article) The Author of the Apache httpd and Tomcat Course

Subject G901 - Talks and lectures
(article) Open Source - here to stay, or a flash in the pan?
(article) Web applications using LAMP technologies

Subject G902 - Web site techniques, utility and visibility
(article) Spotting and stopping denial of service attacks
(article) Suggesting alternative search terms to web site users
(article) Making all your .html files run a Perl script
(article) Error messages in PHP
(article) Keeping the PHP and the HTML apart
{googleplusone.html} Google +1 - source example of what you need in your page

Subject G903 - Running and moderating forums and social media sites
(article) Moderating a forum

Subject G904 - Mac and OS X
(article) Running open source on Mac OSX

Subject G906 - Programming Standards
{fur1.py} Read, calculate, report
{fur4.py} Comments

Subject G907 - Recruitment and Career Development
(article) Creating Really Memorable Experiences

Subject G908 - Language Comparisons
(article) errors v exceptions
{pee3.rb} Invert (rekey) a file / Ruby
{incr.rb} Programming language Comparison - a ruby program
{incr.py} Programming language Comparison - a Python program
{incr.java} Programming language Comparison - a Java program
{pee3.py} Invert (rekey) a file / Python
{incr.tcl} Programming language Comparison - a Tcl program
{pee3.pl} Invert (rekey) a file / Perl
{incr.php} Programming language Comparison - a PHP program
{incr.c} Programming language Comparison - a C program
{incr.cpp} Programming language Comparison - a C++ program
{incr.sh} Programming language Comparison - a bash shell program
{incr.lua} Programming language Comparison - a Lua program
{incr.pl} Programming language Comparison - a Perl program

Subject G910 - Scams
(article) Identity theft - Phishing for your details

Subject G914 - Other Software
{ViewController.m} Objective C source code - First iPad application
{Viewcontroller.h} Objective C header - First iPad application
{ViewController.xib} Objective C nib file (ViewController.xib) - First iPad application

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

H: PHP programming and techniques

Overview H050 - PHP - General
(article) What is PHP?
{p_fifth.php} One page application - design and human interface MATTERS
{fourth.php} Straightforward form and simple validation
{chris.php} Demonstration of form and pricing
{pcre.php} Regular Expression testbed

Module H101 - Introduction to PHP
(article) Portrait of the Author of PHP
(article) What is PHP?
{greet2.php} Calculation within a web page
{g4} Stand alone program in PHP, with conditions and loops
{t2.php} cost comparison script
{motor.php} Elements of a PHP Page
{g5} stand alone program in PHP, showing nested blocks
{g3} Stand alone program in PHP - read from keyboard, calculate, write to screen
{form3.html} Sample form for PHP application
{abc.php} Some easy things to do with PHP
{rupert.php} First program - and how to comment it!
{greetings} Entering and leaving PHP mode - documentation and comments
{greet.php} The structure of a PHP page
{greet4.php} Calculations in a page, inputs from an included form
{t3.php} Totalling script - daily, weekly, monthly, annual amounts
{greet3.php} Calculation in a web page, with inputs from a form
{greet5.php} Starting to add structure to your PHP application
{g2} First variables and calculations in PHP (stand alone)

Module H102 - A First PHP Web Page
{g2.php} Multiple statements and functions calls
{greeting.php} HTML page with embedded PHP
{g3.php} Multiple print statements, showing case insignificance of functions
{a1.html} Date stamping a page automatically (for copyright and audit)

Module H103 - Variables, Operators and Expressions
{master.php} PHP page that calls in an include file ?>
{header.txt} File to be included in master example ?>
{k1.php} A calculation in PHP
{result} Master and Header code merged
{simsan.php} Simple sanitisation and sticky field example
{k3.php} Getting a variable from a form - OLD style
{k4.php} Example of comment types
{k2.php} A calculation with variables
{k3a.php} Getting a form variable - new and somewhat more secure style

Module H104 - Control Statements
{floop.php} while, for and foreach loops
{condits.php} example simple if statements
{if2.php} if, block, else and elseif
{ifvswit.php} if v switch / first "step through" application
{tt2.php} for loop
{houred.php} different image to reflect time of day
{tt3.php} lazy operators, increments, +=, ? : and endfor
{ttab.php} Temperature table - a while loop
{bristolgulls.php} Table of calculations
{timothy.php} demonstration of if / else / while
{units.php} Conversion of units of area
{macorder.php} 2 page simple ordering system
{coin.php} switch, case, default and break

Module H105 - Functions
{scope3.php} function code now in separate file
{funky.php} Defining and calling a function
{footer.inc} Inlcude file - a standard block of HTML
{funk2.php} Example with local, global and static variables
{bmi2.php} functions and includes to make for shorter, more maintainiable code
{personetc.inc} for scope4 demo
{scope2.php} Use of a function to separate out complicated / repeated code
{callback} Calling a list of functions named in an array
{scope4.php} Now using an Object Oriented approach
{funk3.php} Loading functions from an include file
{stademo.php} use of a static variable in PHP
{dressing.inc} example of "call by name" and defaulting parameters
{bmi1.php} control example - showing need for functions and includes
{hotdiary.php} PHP Diary generator
{near.php} Ordnance Survey and Map reference point calculations
{dropahead.php} Selection from the week ahead
{scope1.php} Keyboard to Screen - simple PHP program
{medical.inc} for scope3 demo
{funsan.php} Simple sanitisation and sticky field example using functions

Module H106 - Arrays
{assoc.php} Associative array - sorting and traversing
{nb.html} Speed networking - generate a page for an attendee
{rubys.php} read a file into an array and display selected items
{menu.txt} Menu for fullmenu.php example
{arrarr.php} Summing arrays in PHP
{pflog.php} Most viewed pictures (Mk 1)
{a1.php} Setting up an array, looking at individual elements
{skills.php} A Small search tool
{patrick.php} User defined sort
{ts.php} Lengthen or shorten an array
{a3.php} Array_walk example. Also the difference between null and empty
{walter.php} regular and associative arrays
{a2.php} Array - dealing with missing elements and finding keys
{5pl.php} Display a list in columns
{arrx.php} Ways of passing through an array
{simgrep.php} read a file into an array and display selected items
{pflog2.php} Where are scripts loaded from (2)
{fullmenu.php} Ordering system from menu file
{nbm.html} Speed networking - seating matrix generator
{herbert.php} finding a value from a list of ranges

Module H107 - String Handling in PHP
(article) An overview of PHP String functions
(article) Analysing incoming data lines
(article) Nasty Characters in Web Applications
(article) Pattern Matching - a primer on regular Expressions
(article) Web Page and HTML Spell Checker
{pc1} ereg v preg
{extrawords} Extra words for spell checker
{fvar.php} Filtering of variables
{20101101_statlog.txt} Sample data from server operation log file
{s2.php} Character string as an array
{stdist.php} Search - do two words look or sound the same?
{echovalley.php} How to put in blocks of HTML
{s1.php} Single and double quoted strings
{spell.php} Spell Checker
{sprint.php} Formatting with sprintf
{toke.php} String tokenising - strtok, implode, explode
{secdo.php} Convert seconds to minutes and seconds
{mystdinc.inc} Include file for sticky fields demo
{clformat.php} Formatting data [file] for quick web display
{arrivals.php} Regex and associative arrays - search engine arrivals
{regex.php} Regular expression - validating an email address
{strp.php} Curly braces in double quoted strings
{popage.php} Counting in a log file - associative arrays and regular expressions
{shunt.php} Evaluting BODMAS expression using MySQL cell tables
{dlog.php} String handling example - extracting simple data from a complex line
{stickform.php} Stick Fields and Input Validation
{s3.php} String cleansing with functions such as strspn
{bustimes.php} Using PHP to format data (timetable in this example)
{splitting.php} Ways of splitting a string
{code} Reaping from an HTML page with regular expressions
{myform.php} Robust, sticky form demo with field validation
{sfex.php} Demo of sticky fields and security
{pmoffs.php} Capturing regular expression offsets
{bits.php} Ways of writing strings
{ex2.php} various preg style functions in use

Module H108 - Objects in PHP
{places.inc} A PHP abstract class (places) with postcode, county and other subclasses
{rest001.php} First OO / class example
{systems.php4} Objects and inheritance - main worked example program - PHP4 example
{animal3.php} Abstract class and interface example
{dogdisc.php} Serialization of an object for save and restore
{bewarethedog.php} Object copying - beware - differs in PHP4 and PHP5
{staticmember.php} Static class members - set up and use
{cwa.inc} cwa class
{pdemo.php} PHP application using places.inc - create array of place objects from file
{elligant.php} Gant chart in PHP
{stan.php} Standard Class stdClass
{oop5.php} Two classes, inheritance, factory, JSON, error handler, etc
{dog.inc} Simple class in PHP
{rest004.php} This is my table test file
{litter.php} cloning and copying objects
{demo.php} PHP Version tester
{aa.php} Autoload example
{factory.php} Example of a factory method and comparators
{visits.php} Factory method, static method, associated objects
{po8} Associative Objects
{bbcoo2.php} oo demo step 2 for BBC
{compo.php} Complete inheritance and object method demonstration
{third.php} Command line PHP classes - inheritance, overloading, polymorphism, comparator
{pps} Data for Gant Chart Demo
{pets.php} Test page for the dog.inc class
{cwuseanimal.php} Test program for cwa class
{clx.php} object assign and object clone
{rest006.php} magic __tostring and comparator methods
{ob2.php} Loading in a class from another file and using it
{valentines.php} Inheritance, Overloading, Polymorphism in PHP objects
{kennel.php} Application to use class hound
{equtest.php} PHP example - objects, foreach, array_push ....
{equip.inc} equip.inc - define pieces of equipment (base class)
{staffsys.inc} Staff system - a derived class
{studentsys.inc} Student system - a derived class
{equtest.php4} Explicits PHP4 - objects, foreach, array_push ....
{twigs.inc} class to be loaded in autoload example
{accos.php} Complete example with polymorphism and inheritance
{systems.php} Objects and inheritance - main worked example program
{animal1.php} An Abstract class - cannot construct directly
{dogs.inc} Simple class in PHP
{animal2.php} Abstract class, extended to a subclass, instantised via the subclass
{southbound.txt} Data for factory.php demo
{hound.inc} Simple class in PHP
{rest002.php} class example - array of objects
{rest003.php} class example - data from file
{rest005.php} This is my table test file
{ob1.php} OO PHP demo - inhertitance, statics, test harness, etc
{allone.php} Complete OO example
{serversys.inc} Server system - a derived class
{single3} Singleton AND dymanic data
{ns.php} Namespaces in PHP5 - a short syntax demo
{systems.txt} Data file for systems example

Module H109 - Input / Output
{grabtitle.php} Grab the title of a web page (local or remote)
{top_pdf.php} Showing top 10 downloads from our site
{fread1.php} Read all lines from a data file, report matches
{recent.php} Link to the recently updated file in a directory
{buslogic.inc} Business logic for quote demo
{spammiest.php} The 20 spammiest emails in our filter records are ...
{seedoku.php} highlighting a source file
{quote.php} Quote demo - top level code
{exchange.html} Exchange rate convertor
{secdo.php} Convert seconds to minutes and seconds
{timber.php} Reading and extracting from a remote URL
{mail_analysis.php} Read and analyse spam report file
{eurorates.php} Read currency exchanges rates
{savepeople.php} Using PHP to download a data file
{fr2.php} Pulldown menu of files, then search for regex
{webhelpers.inc} Web Helpers for quote demo
{quote.htp} HTML template for quote demo -->
{cloak.php} Cloaking a web site in a PHP wrapper
{saver.php} Write to file - simple diary page
{radio.php} look up current radio program in a text file
{mcq.txt} data for Christmas Quiz
{xmasq.php} Christmas Quiz in PHP
{fread2.php} File system and status reports and directory listings

Module H110 - HTML Web Page Data Handling
(article) Example - PHP form, Image upload. Store in MySQL database. Retrieve.
{pdfget.php} download a .pdf file from a MySQL database
{pdfstore.php} store a .pdf that's uploaded into a MySQL database
{apull.php} Selection of database records via a pulldown menu
{urlex.html} Does a URL exist?
{feedlet.php} Bare Bones demo of password protection
{mcheck.php} generate and select from radio boxes
{alang.php} What langauge does the visitor prefer?
{veryniceform.php} Form completion with sticky fields and generalised code
{agnew.php} How to do it - sending header first
{meldrew.inc} Helper function - set up an enquiry box
{melksham.php} Images at random - pictures of Melksham
{agone.php} How NOT to do it - sending header too late
{myenv.php} The PHP environment - use of variables available to you
{victor.php} Putting our conditional example on the web
{one_pizza.php} Validating a Pizza order in one page.
{pdfup.php} form to upload a .pdf to a PHP script
{getpost.php} Using a PHP script to POST to another server
{sticker.php} Sticky form demo ...
{selfinfo.php} Information available from PHP

Module H112 - Further Web Page and Network Handling
(article) Using current exchange rates on a web page
(article) Using Frames with PHP
(article) Shopping cart application in PHP
(article) A Web interface for your Linux admin tasks
(article) Suggesting alternative search terms to web site users
{sessdemo.php} Session demo - shopping cart - from PHP 4.2
{ppmh} Sending an email as HTML not plain text
{about_you.php} Information about the visitor avaialble to a web site provider
{pubsales.php} Cookie check for new visitor
{cookie_demo.php} Setting and deleting a cookie
{cook.php} Setting and reading a cookie
{uploader.php} Upload a file from a browser
{upload_test.php} How to upload a file via a web page
{automailer} PHP script to email from the command line
{fromwhere.php} Tracking how visitors reach a page
{sessions.php5} Session demo for more recent PHP4 and PHP5 systems
{dopost.php} Using the POST method to read from a URL within a PHP script
{supermail.php} simple form for mailing
{d404.html} Script run when our web site can't find a requested page
{pcook.php} Setting and checking a persistent cookie
{roomstates.php} Room State Reporter
{sesscart.php} Session demo - shopping cart
{imap.php} Image map controlled by PHP script
{gherkin.php} Download and store results from a web enquiry
{phpemenc} Emailing with enclosures from a web page
{favcol.php} cookie demo - lock in favourite colour
{exchange.php} Exchange rate convertor
{sucksee.php} does a URL exist?

Module H113 - Using MySQL Databases in PHP Pages
(article) MySQL version 5, PHP version 5 and mysqli
(article) MySQL and PHP - enquiry tool for ad-hoc requirements
(article) Interfacing applications to a MySQL database engine
{sort_sql.php} Using an array to sort records off a database
{sqd.php} Algorithm selection of where clauses
{yikes.php} Downloading complete database via a PHP script
{sqlreport.php} report on information held in a relational database
{pic_alog.php} view images stored in a MySQL database via PHP
{sqladd.php} Add information to a database table
{ild.php} mysqli - database to csv example
{pic_up.php} Uploading an image from a form to a MySQL database via PHP
{approach.php} Relational Databases - Comparison of approaches
{select1.php} Selecting information from a database table - unchecked
{showtowns.php} First steps on looking up data in an existing database on a web page
{sekiy.php} Converts data into MySQL commands
{picclim.php} Search a database of images
{sqlcreate.php} Create a MySQL table from a PHP page
{bookstats.php} PHP to front a MySQL multiway join
{sqlhelper.inc} PHP helper - make up a where clause element
{sqldelete.php} deleting a database table from PHP
{people.php} Simple database lookup - using MySQL from PHP
{picscript.php} Retrieve an image from a database and display it
{sql_image_store.html} Web page to call up an image held in an SQL database
{mqchunks.php} Pagination through a database - PHP and MySQL
{select2.php} Selecting information from a database table - fully validated
{mysql_joins.php} Showing Joined tables on a web page
{sqltab.php} Full navigation around an SQL database from PHP
{mqclim.php} searching and paging through results
{aos.php} Save a MySQL result set to the local machine
{agents.php} Joining MySQL database and searching results in PHP
{generic.php} Display a MySQL table, summarising rows
{ildi.php} mysqli - database to csv example

Module H114 - Sourcing, installing and configuring PHP
(article) Sourcing, installing and configuring PHP
{railways.php} Start of an application in a page
{ini.extras} Some commonly changed limits for PHP
{yellowlion.php} Test for Apache httpd + PHP + MySQL interaction

Module H115 - Designing PHP-Based Solutions: Best Practice
(article) Portrait of the Author of PHP
(article) The practical solution of requirements using PHP
(article) Error messages in PHP
(article) Keeping the PHP and the HTML apart
(article) What makes a good variable name?
{slidetell.php} Look up records (paginated) in a MySQL table.
{hph2.php} Sticky form, Regex Validation, save to db when AOK
{details.xsl} Style sheet to format one particular piece of information from an XML file
{4lm_business.inc} business logic for 4 layer demo
{sc5.php} Main demo script - uses sessions, functions, SQL, XML and XSLT
{sc6.php} Main demo script; uses sessions, functions, SQL, XML and XSLT
{mvc2.php} MVC Framework and Helpers - with exceptions and validation
{imnames.xsl} Style sheet used to get a list of all images held in XML file
{demo.htp} Template for sc5.php4 and sc6 "best practise" examples
{images.xml} XML data used by demonstration program
{niceform.php} Form, validation, sticky fields, email results
{4lm_template.htp} HTML template for 4 layer model
{gruse.php} Capthca Driver
{4lm_top.php} Full PHP application / 4 layer model - start here
{stdsess.inc} standard functions for sc5 and sc6 demos
{sqldemo.inc} SQL functions for sc5 and sc6 demos
{grgen.php} Generate a graphic to show a text string
{hph.php} Using an array to set a generalised form
{mvc_fhc.php} MVC Framework and Helpers / Components all in one!
{4lm_webhelpers.inc} Web Helpers for 4 layer model demo
{xsltdemo.inc} xslt functions for sc5 and sc5 demos

Module H116 - Shopping Cart Application in PHP
(article) Shopping cart application in PHP
{getccard.htp} Template web page for carter.php4
{getshop.inc} Functions for carter.php4 and other shopping cart apps
{s2.php} Free form shopping cart in a page
{carter.php4} Session demonstration - full shopping cart
{getaddy.htp} Template web page for carter.php4
{offer.htp} Template web page for carter.php4
{thankyou.htp} Template web page for carter.php4

Module H117 - Security in PHP
(article) Spotting and stopping denial of service attacks
{inject.php} Injection attacks and preventing them

Module H118 - Generating CSS through PHP
{page.htp} Full demo - template for display
{style.inc} Full demo - PHP to set style sheets
{httpd.hta} full demo - .htaccess file
{revinf.php} MySQL content report with counts, in PHP using CSS
{picklet.php} Image library application using dynamic PHP style sheets
{stdsess.inc} Full demo - web helper functions
{west.html} Selecting and applying CSS themes through PHP
{index.php} full demo - top layer and main code file
{dss.php} Dynamic Style sheet

Module H201 - PHP and MySQL for Content Management
{stdfuncs.inc} Standard functions for all pages e.g. open database connection, shopping cart handling
{edit.php4} Offer the content editor a record to edit (or a blank record)
{error.txt} Error messages file - allows for translation into other languages
{confirm.php4} Confirm and update to the content, and save it into database.
{create.sql} File of SQL commands to create an empty database and tables for this example
{user.inc} User definable functions - optional file that may include functions to run on any of the database columns when the content is being reported
{index.php4} Start of application - offer a series of search boxes, and also an editor's login form
{offeredit.php4} Validate an editor's login if necessary, and offer a list of records that can be edited
{top.txt} Boiler plate HTML for the head of every page
{tail.txt} Boiler plate HTML for the foot of every page -->
{select.php4} List out all records that match the searcher's criteria, in the form of a selection menu
{display.php4} Display a single record from the database in full detail

Module H202 - Case Study
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{review.php} Form - course review
{sendform.php} Emailing form entries to the web site owner

Module H203 - Complete example - Registering for a get-together
(article) Complete PHP example - Registering for a get-together
{qmeet.php} Complete Application - meeting room quotation
{together.php} Complete source code - registering for a get-together

Module H204 - PHP and MySQL example application - adhoc database analysis
{adhoc.conf} Configuration file for ad hoc MySQL query system
{adhoc_sql_query_engine.php} Application to look after generalise casual queries on a complex table structure
{help199.txt} Sample help file - logout
{sampledata.sql} Commands used to create sample SQL database and tables
{sqlwrapper.inc} An SQL wrapper to aid portability
{help20.txt} Sample help file - result page
{help10.txt} Sample help file - query type
{help11.txt} Sample help file - select rows
{businesslogic.inc} BUSINESS LOGIC
{webhelpers.inc} standard functions 4 layer model applications
{help12.txt} Sample help file - select columns
{page_layout.htp} Template for adhoc MySQL Query system
{help1.txt} Sample help file
{helppage.php} Help system - template wrapper

Module H300 - PHP Revision
{oo1.php} First really simple object!
{speed.php} Converting distance travelled and time taken into a speed
{four.php} form, completion, checking
{hf.php} Directory source display
{one.php} first PHP revision example
{oo3.php} Third OO PHP example - factory and cache design patterns
{xxy.php} Web Site news - a simple edit box
{showdb.php} Retreiving and displaying information from a database
{three.php} third PHP revision example - functions
{oo2.php} Second OO example - object, inheritance, public / protected / private
{index.php} Directory navigator
{two.php} Second PHP revision example - arrays
{seven.php} Regular Expression demo
{nibs.php} Extracting data / complex text file format

Module H301 - Sticky fields and session
{wsss.php} Sessions - a demo of the mechanism
{dozen.php} Sending out holding pages before final result page
{westend.php} PHP Session - first principles
{firstmultipage.php} Session in use for multipage application / named pages
{zxzx.php} Viewing session from another web page
{fru2.php} Sticky fields, and preventing injection attacks
{tracker.php} Cookie demo - demonstration of session principles
{stracker.php} Cookie demo - session alternative
{multitemplate.htp} Template for secondmultipage and thirdmultipage demos
{secondmultipage.php} Session in use for multipage application / named pages. Split template
{thirdmultipage.php} Session in use for multipage application / named pages / webhelpers

Module H302 - MVC, 4 layer model and templating
(article) Keeping the PHP and the HTML apart
{mpc.php} Session based multiple page application Mk 1
{mvc_split.php} Controller for Model, View, Controller demo
{simsess.php} Session demo / single included file
{stages.webhelpers.inc} Web helpers for stage.php demo
{multiply.php} Separting look and feel from business logic - business logic
{stages.htp} Multiple Stage Application
{george.php} Simple separation of view from program
{stages.finish0.inc} initialise for new visitor
{product.txt} Product listing
{mpb.php} Stepping through and validating over multiple pages
{mvc_principles.php} Model, View, Controller, Components, Framework and Helpers - single file
{stages.prepare1.inc} prepare for phase 1
{mpd.php} Session based multiple page application Mk 2
{mvc_control.php} Control - All elements in one piece of code
{business.inc} Business Logic
{z_framework.php} Framework and bootstrap for MVC demo
{z_model.php} Model for MVC demo
{z_helpers.php} Helpers for MVC demo
{t2.xxx} Look and feel (business logic elsewhere)
{mpe.php} Session based multiple page application Mk 3
{george.htp} View - for view / program separation
{mpa.php} First shell for multipage application
{z_view.htp} View (Template) for MVC demo
{web.inc} Web Helpers
{needed.inc} Sample included file
{template.txt} template file
{stages.finish2.inc} Read and record an incident record
{stages.finish1.inc} validate email, name and department
{shoptop.php} Top level
{stages.prepare3.inc} prepare phase 3 - no form, just an onward link
{stages.php} Muliple page, session based application
{stages.prepare2.inc} prepare for phase 2

Module H303 - Long and short term cookies and security
{suggest.php} Cookie and clean form demo
{ss2.php} Session - logging time and remembering inputs
{codo.php} Memorising via a cookie

Module H304 - DDA, Style and image handling
{gbs.php} What can PHP tell me about my browser?
{park.php} Change image every minute. Retain style based on cookie (DDA)
{browtype.php} Check browser type - feed out plain text or image / flash references
{imagetodb.php} Save already uploaded image into database
{imagefromdb.php} Display image held in database
{imagine.php} Upload an image
{browsers.php} Counting browser types visiting our site

Module H305 - Web server configuration
{frontend} Front end task - Predictive Load Balancing
{backend} Back end task - Predictive Load Balancing

Module H306 - Who is your visitor?
{sqlshowrecent.php} Display recently visited pages
{parly.php} Welcome a User - but only between 3pm and 5pm on Wednesday!
{second.php} Web Log Analysis - example

Module H307 - Web2 and caching
(article) Using current exchange rates on a web page
{ajaxcode.php} Web Service provider - first Ajax demo ajax123.html
{a_logshow.php} Log file analysis (2) - code optimised for readability
{scraper.php} Scraping a remote URL content
{service.php} Service layer demonstration
{xavier.php} demonstration of caching
{a_timbershow.php} Log file analysis (1) - base case - functioning but poorly structured
{proxydown.php} Redirecting failed proxy request to valid page
{client.php} Service layer - sample client
{twitblog.php} Twitter feed from your PHP program
{a_papershow.php} Log file analysis (3) - results cached for run time efficiency
{ajax123.html} JavaScript to load data from server
{pset.php} Setting the User Agent in your PHP code
{ajaxstatus.html} Ajax demonstration - a dynamically updating status page.
{hb.php} Heartbeat script to check server
{cademo.php} Caching between pages via memcached
{caching} Caching in an object
{ajax456.html} Asyncronous call from Javascript on client to PHP on server
{phping.php} Heartbeat script to watch vital server
{sendimage.php} Serve a download from a database
{train_graphic.php} Display info from application server on an image
{train_pixelreport.php} An easy way to add an image point to a file
{prod.php} Web Site performance test page
{exr.php} Grab exchange rates to/from Euro
{currency.inc} Currency abbreviations and names
{ostell.php} Demonstration of cached resource
{rs.php} Web service to give user current server stats

Module H308 - Searches, and search engines
{ntx} File of surnames for matching demo
{page_it.php} Paging through a result set
{globalindex.html} ") {
{liked.php} Algorithm for sorting most recent likes
{pplev.php} Looking for a similar surname

Module H309 - Maps, Graphics and Geographics
{qr_demo.php} Dynamic qr code
{serverlog.php} Graphing server log files
{totem.php} BR Totem graphic generator
{isp_eu.php} Plot web site visitors on a map of Europe
{railuse.php} Table and graph of same data
{showmanor.php} Slide Show - single file example
{yearson.php} Plot years v data
{tfd.txt} Bare data that we've cached from our application server
{tgf.html} Graphic and report based on data from application server
{thumbnew.php} Image rotate and thumbnail
{railtrends.php} OO based GD graphics example
{showmap.php} Selecting from an image map
{pictureindex.php} Thumbnail library, Mk 2 - main program
{railstats.txt} Railway Station codes, locations, usage 2004 - 2014
{latlong2os.php} latitude / longitude to ordnance Survey grid positions
{popup.php} A popup window to show details of an item on a page
{shift_graphic.php} Shift Graphic Demo
{fpdf_demo.php} Sample using fpdf (free PDF convertor from www.fpdf.org)
{isp.php} Plotting your web site visitors on a world map
{railinfo.php} Convert Latitude and Longitude to nearest stations
{index.php} All the images in a folder as thumbnails
{train_graphic.php} Display info from application server on an image
{th_2.php} Thumbnail library, Mk 2 - thumbnail generator
{train_pixelreport.php} An easy way to add an image point to a file
{tfdt.txt} Sample text file - location of places on image

Module H310 - Putting it all together
{dot_htaccess} .htaccess file for wiki demonstration
{jndex.php} Simple wiki demonstration
{paged.php} paged display of station data
{todo4.htp} Template for the wiki demonstration
{indexcard.php} Index Card System - Version 0.9

Module H311 - Testing your PHP
{p4l} Spike solution and algorithm testing
{oo3.php} A Sample class for testing demos
{five.php} phpunit - main program example

Module H312 - Tips and Techniques
{myod.php} generates HTML to link to subdirectories
{dxy.php} Using .html URLs to search a data file
{ppq.php} Crossreferencing data markers to web pages
{robert} Sample data for crossreference demo
{callback.php} How a Callback works in PHP
{msf.php} generates HTML to link to files in

Module H321 - CodeIgniter
{transwilts_htaccess} map most URLs onto CodeIgniter
{placetime.php} view - transport form Mk 2
{footer.php} Footer for first CodeIgniter example
{index.html} Holding / home page outside CodeIgnitor
{transwilts_models_places_model.php} model - business logic
{header.php} header for first CodeIgniter example
{transwilts_controllers_passenger.php} main controller functions
{main.php} Main view - hello CodeIgnitor World
{transwilts_views_transwilts_top.php} header
{transwilts_views_mailpage.php} Form demonstration
{dot_htaccess} Typical CodeIgniter .htaccess file
{transwilts_config_config.php} config file - added encryption key at about line 228
{success.php} success view - 2nd CodeIgniter example
{transwilts_views_mainpages.php} main page content
{placetime.hld} view - transport form Mk 1
{mycontroller.php} CodeIgnitor - first example controller
{transwilts_views_transwilts_tail.php} footer
{transport.php} 2nd CodeIgniter example - sessions and form - controller

Module H401 - Some extra PHP modules
{windex.html} Combining blog and forum feeds using MagpieRSS
{525i.php} Using PHP mysqli functions - a working example
{mailme.php} Reading emails from a POP3 mailbox

Module H998 - ADOdb
{adodb.php} Adodb example - selecting from a database
{mysql.php} MySQL example - selecting from a database

Module H999 - Additional PHP Material
(article) Graphic User Interfaces (GUIs)
(article) Example - PHP form, Image upload. Store in MySQL database. Retrieve.
{exc.php} An exercise in sorting
{nats.php} Natural Sort Order demo
{gobbler} Forking in PHP - parallel processing
{exp.php} Exceptions in PHP
{imgfeed.php} Show an image held in a MySQL database
{image1.php} Generating a graphic in PHP
{whowentwhere.php} Practical example of 2 dimensional array in use
{imgflip.php} Flipping an image in PHP
{image2.php} Generating a button with variable graphics and text in PHP
{fader.php} Fade from one image to another
{tear.php} Tear from one image to another
{showcount.php} Show counter record file
{grids.php} Shows you where a place is on an Ordnance Survey Map
{hml.inc} Horses Mouth - latest topic feed
{xml1.php} Xml handling in PHP
{tinso.php} Sorting an associative array
{mustcount.php} Script to accompany access counter discussion
{hands.php} Draw hands on a clock
{picclim.php} Search a database of images
{gmap.php} Google Maps / PHP - show your office
{oursites.php} Parallel processes in PHP
{imglist.xsl} Sample XSLT template as used in xslt.php4 example and others
{images.xml} Sample XML file as used in xslt.php4 example and others
{php_parallel} Parallel processing example in PHP
{rome.php} Random image for use in a web page
{dademo.php} Date and Time and sorting em in PHP
{os2latlong.php} Convert Ordnance survey grid positions to latitude / longitude
{vars.php} Variable types in PHP
{xslt.php} Process an XML file through an XSLT template and insert result in a PHP page
{2dar.php} 2 dimensional array in PHP
{ac_check.php} Sorting an associative array
{thumb.php} thumbnailing an image in one file and saving in another
{loclook.php} Google Maps / Geocoding demo
{ml1.php} Simple Author extraction from Medline
{aso.php} First sorting example
{th.php} dynamic thumbnail generator
{imgdump.php} Generate the html to call up 10 images from a database
{feeder.php} Script to handle image library in MySQL database as if it was a directory of images
{mergeover.php} Stippleover from one image to another
{xdo.php} Reading an RSS feed in your PHP page
{thumbview.php} Thumbnail index and image view application
{xml2.php} Second example - using PHP to handle XML
{site_title} Stand alone script - grab title of remote web page
{uso.php} User defined sorting
{uso2.php} More complex user defined sort
{xml3.php} Using PHP to handle XML, stand alone!
{lottery.php} Array manipulation functions range, shuffle etc
{mkgraphic.php} Stand along programming in PHP / also graphics example

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

J: Java programmming including Web

Overview J050 - Java - General
(article) Overview of Java
{Fred.java} Reading user input from keyboard
{Zoe.java} StringTokeniszer, ArrayList and Exception demonstration
{Ulrika.java} An array of objects
{Yvonne.java} Directory listing, file i/o and formatting demo
{Daniel.java} Integer Calculation
{Irene.java} Arrays - setup, fill, pass, process, length
{Julie.java} Array of arrays (i.e. 2 dimensional array)
{Edward.java} Shared code - load and run method from another class
{Combine.java} Step 1 combo for full demo
{Orlando.java} Class within a package
{Aileen.java} Sorting an ArrayList
{Keith.java} Using a class
{Wendy.java} Test program within a class
{Viv.java} An ArrayList - an extendable array
{Bernie.java} static method (function) calls
{Lenny.java} Static Methods, comparing objects
{Chloe.java} First use of variables and conditionals
{Niamh.java} loading a method from a class in a package
{Xena.java} Example with and without exception handling
{Steve.java} A second extended class
{Hilary.java} Passing values in and out of a local method
{WellHouseInput.java} Reading from the keyboard or a file
{Combo2.java} Combined demonstration - phase 2
{Peter.java} underlying (base) class
{Glenda.java} loop, with break and continue
{Quentin.java} Calling in an extended class
{Trevor.java} Polymorphism - an array of different objects
{Rolf.java} Extended class
{Adam.java} Hello World, and command line input
{Margaret.java} String handling example
{Time.java} Base class for examples up to Lenny

Module J601 - Java Introduction
(article) Overview of Java
(article) Book review - Beginning Java 2
{demolet.java} Sample Servlet - init doGet and doPost methods
{Hello.java} Program to test basic operation of Java tools.
{FirstFull.java.oo1} Full program - prompt, read, calculate, print

Module J610 - Archived examples from previous versions of courses
{tree.html} tree.html
{svl_left.html} svl_left.html
{heron.html} heron.html
{Snowdon.java} Snowdon.java
{corsham.java} corsham.java
{teal.html} teal.html
{rowde.java} rowde.java
{haxton.java} haxton.java
{mailout.java} mailout.java
{goldfinch.html} goldfinch.html
{siskin.java} siskin.java
{chirton.java} Non rectangular 2D arrays
{charlton.java} Array of array (quasi 2D array)
{broughton.java} exception handling
{moorhen.java} moorhen.java
{waxwing.html} waxwing.html
{pack_6.java} pack_6.java
{Task.java} Task.java
{jay.html} jay.html
{blunsdon.java} Unicode and character string handling
{ford.java} ford.java
{swift.java} swift.java
{Daily.java} extending the class Coin
{buzzard.html} buzzard.html
{linnet.html} linnet.html
{ivy.java} ivy.java
{twite.java} twite.java
{Canisp.java} a telephone keypad using awt
{elm.html} elm.html
{dice_1.java} Random throws of a die
{cholderton.java} if and else
{wraxall.java} wraxall.java
{seend.java} seend.java
{dunlin.java} Java Properties - what version / OS / etc
{Commem.java} extending a base class AND implementing an interface
{patrick.java} patrick.java
{Whernside.html} Whernside.html
{Phone_002.java} Phone_002.java
{goftp.java} ftp from a java program
{aspen.java} applet components
{pack_5.java} pack_5.java
{lockeridge.java} lockeridge.java
{redshank.java} redshank.java
{nettleton.java} nettleton.java
{palm.java} palm.java
{pack_4.java} pack_4.java
{skylark.html} skylark.html
{fcdata.java} socket programming (client)
{raven.java} raven.java
{pochard.java} pochard.java
{gp2.java} Grabbing a page of html
{fclient.java} socket programming (client)
{green2.html} green2.html
{alderton.java} Test program to call intter classes example
{redstart.java} redstart.java
{aspen.html} aspen.html
{heron.java} heron.java
{hen.html} hen.html
{lapwing.java} lapwing.java
{Obj_v_prim.java} Obj_v_prim.java
{card_9.java} card_9.java
{nuthatch.html} nuthatch.html
{crow2.html} crow2.html
{Maovally.java} Maovally.java
{fifield.java} labels - also break v continue v exit
{talker.java} talker.java
{suspect_card_6.java} suspect_card_6.java
{rook.java} rook.java
{Tryfan.html} Tryfan.html
{Canisp.html} Canisp.html
{playing_card_8.java} playing_card_8.java
{svl_o2.html} svl_o2.html
{idmiston.java} idmiston.java
{rsp.java} rsp.java
{svl_temp.html} svl_temp.html
{mallard.java} mallard.java
{t3.java} t3.java
{bradley.java} file handling
{hen.java} hen.java
{pack_3.java} pack_3.java
{teal.java} teal.java
{nuthatch.java} nuthatch.java
{playing_card_6.java} playing_card_6.java
{brambling.html} brambling.html
{chalfield.java} using an enumeration
{packages.html} packages.html
{bullfinch.html} bullfinch.html
{marlborough.java} marlborough.java
{cyprus.java} border layout in awt
{greenfinch.html} greenfinch.html
{birch.html} birch.html
{mp.html} mp.html
{grittleton.java} grittleton.java
{BeinnDearg.java} Character frequency analysis in a data file
{ash.html} ash.html
{ramsbury.java} ramsbury.java
{blackbird.java} threading example via the runnable interface
{jackdaw.java} jackdaw.java
{took.html} took.html
{Hms2.java} Hms2.java
{hawfinch.html} hawfinch.html
{brambling2.html} brambling2.html
{quote.java} quote.java
{bulford.java} while loop
{honeystreet.java} honeystreet.java
{kingsdown.java} kingsdown.java
{waxwing.java} Generalised Graphing Applet
{chestnut.html} chestnut.html
{jackdaw.html} jackdaw.html
{Swsmall.java} Swsmall.java
{DialApplet.java} Dialler applet using Swing
{new_street.html} new_street.html
{suspect_card_9.java} suspect_card_9.java
{potterne.java} potterne.java
{avocet.java} Internationalisation / resource strings
{BenHutig.java} AWT grid layout
{gp3.java} gp3.java
{enford.java} basics of using an array
{smew.html} smew.html
{moorhen.html} moorhen.html
{Coin.java} abstract base class
{Eiger.java} awt GridBag
{pack_1.java} pack_1.java
{card_8.java} card_8.java
{mildenhall.java} mildenhall.java
{atworth.java} exception handling
{green3.html} green3.html
{goldfinch.java} goldfinch.java
{Fish.java} Simple base class (see Catchfish)
{Whernside.java} Whernside.java
{Swapp.java} Swapp.java
{jackdaw2.html} jackdaw2.html
{holly.java} holly.java
{marden.java} marden.java
{linnet.java} linnet.java
{Tryfan.java} Tryfan.java
{whitley.java} whitley.java
{t2.java} t2.java
{magpie.html} magpie.html
{lechlade.java} lechlade.java
{coot.java} dynamic graphics drawing
{bremhill.java} Heavily commented simple program
{burton.java} arrays of objects
{MoelHebog.java} MoelHebog.java
{playing_card_9.java} playing_card_9.java
{oak.html} oak.html
{scaup.java} scaup.java
{Whitfell.java} Whitfell.java
{ImageHold.java} ImageHold.java
{all.java} all.java
{westwood.java} westwood.java
{pagestats.java} pagestats.java
{Phone.java} Phone.java
{chestnut.java} applet to show colours
{lavington.java} lavington.java
{durrington.java} while, if, break
{larkhill.java} larkhill.java
{redshank.html} redshank.html
{t1.java} t1.java
{n2.java} n2.java
{chippenham.java} chippenham.java
{parcel.java} parcel.java
{worton.java} worton.java
{Dunkery.java} for loop and Float objects
{bremhill.html} bremhill.html
{coot.html} coot.html
{lapwing2.html} lapwing2.html
{hawthorn.java} hawthorn.java
{wilsford.java} wilsford.java
{woodborough.java} woodborough.java
{willow.html} willow.html
{pack_2.java} pack_2.java
{greenfinch.java} greenfinch.java
{longer.java} longer.java
{Caldemo.java} Caldemo.java
{redpoll.java} redpoll.java
{fyfield.java} fyfield.java
{greenshank.html} greenshank.html
{Pocket.java} Pocket.java
{lemon.java} lemon.java
{Whitfell.html} Whitfell.html
{amesbury.java} read from keyboard via a supplied class
{bromham.java} hello world
{curlew.java} test program to log events generated by an applet
{hawthorn.html} hawthorn.html
{crossbill.html} crossbill.html
{winEvent.java} winEvent.java
{hawfinch.java} hawfinch.java
{Catchfish.java} extending a class and calling the base class constructor
{Scafell.java} Scafell.java
{oak.java} oak.java
{lime.java} lime.java
{gadwall.java} Server (present swap on port 7979) with graphic monitor
{chough.html} chough.html
{palm.html} palm.html
{tilshead.java} tilshead.java
{spot.html} spot.html
{crossbill.java} Command line and stand alone added to an applet
{svl_l2.html} svl_l2.html
{maple.java} maple.java
{smew.java} smew.java
{raven.html} raven.html
{swallow.java} swallow.java
{milston.java} milston.java
{yew.html} yew.html
{svlmp.java} svlmp.java
{greenshank.java} greenshank.java
{chough.java} font handling
{Phone_001.java} Phone_001.java
{PastelFilter.java} PastelFilter.java
{chaffinch.java} chaffinch.java
{redpoll.html} redpoll.html
{box.html} box.html
{grabpage.java} grabpage.java
{Chocolate.java} Extending a class
{shrewton.java} shrewton.java
{AllNames.html} AllNames.html
{figheldean.java} a first for loop
{elm.java} elements that can be drawn on a canvas
{maple.html} maple.html
{gargany.java} extended gadwall
{inglesham.java} inglesham.java
{BigginHill.java} Command line input / validation
{Scafell.html} Scafell.html
{card_6.java} card_6.java
{fittleton.java} fittleton.java
{Nevis.java} Nevis.java
{MoelHebog.html} MoelHebog.html
{TreeDemo.java} TreeDemo.java
{rserver.java} rserver.java
{svl_outer.html} svl_outer.html
{curlew.html} curlew.html
{alton.java} while loop demonstration
{rook.html} rook.html
{Maovally.html} Maovally.html
{fir.html} fir.html
{scaup.html} scaup.html
{twite.html} twite.html
{birch.java} Grid layout with buttons
{beech.java} More applet components
{beech.html} beech.html
{willow.java} willow.java
{brambling.java} general graphing applet
{lapwing.html} lapwing.html
{siskin.html} siskin.html
{graphic_finger.java} a graphic client program to call up the finger daemon
{calne.java} calne.java
{fir.java} border layout example
{spruce.java} spruce.java
{suspect_card_8.java} suspect_card_8.java
{new_street.java} new_street.java
{imgframe.java} imgframe.java
{acorn.html} acorn.html
{Eiger.html} Eiger.html
{Trip.java} Trip.java
{jay.java} jay.java
{porton.java} porton.java
{larkhill.orig.java} larkhill.orig.java
{bradford.java} file manipulation

Module J702 - Hello Java World
(article) Overview of Java
(article) Hello Java World
{Two.java} Second Java program - calls methods
{Hello.java} "Hello World!" in Java

Module J703 - Variables
{Plus.java} Pre and Post increment in Java
{Av3.java} Average - *this* one works
{Add2.java} Adding and declaring variables in a single statement
{Somevars.java} Declaration and initialisation of variables
{Average.java} Averages - how NOT to (try to) do it
{Bnd.java} Setting up variables, reading values, calculating and output
{Av2.java} Average - fails at compile
{Av3b.java} An alternative working example
{Cost.java} Reading a cost from the user
{WellHouseInput.java} Easy user interaction class
{Addup.java} Simple use of variables - adding

Module J704 - Loops and Conditional Statements
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{Sindoll.java} Excerise - Singapore to US Dollar table
{Updown.java} Example of a boolean variable
{Newtab.java} First read - calculate - loop program
{Forloop.java} the 'for' loop in Java
{Loop2.java} Breaking from a loop
{Secondif.java} Nested 'ifs', and 'else'
{Loop1.java} 'While' loop example
{Bills.java} Nested loops, conditionals, breaks, labels etc
{Day2a.java} Sample program for exercise
{Capacity.java} Course Exercise - capacity of tables in a restaurant
{Firstif.java} Example of a first if statement

Module J705 - Arrays
{Wilsford.java} Two Dimensional non-rectangular Array */
{Ax1.java} Passing arrays by their references
{rushall.java} Two dimensional array
{Hurdy.java} Pascal's traingle using a two dimensional array
{Bowerhill.java} Dynamic Array sizing (multidimensional)
{A365.java} Array - length, initialise throughout, arrays or strings
{Arx.java} Array demonstration
{Cornet.java} Sample exercise answer (2)
{compton.java} Array initialisation
{PascalAsObject.java} Pascal Triangle as Object
{Flute.java} Sample exercise answer (1)
{Charlton.java} Setting up and using array of arrays
{Gurdy.java} Pascal's triangle using dynamic arrays
{A350.java} Array - setting up, filling, looking for highest and lowest values
{rowby.java} Dynamic use of arrays
{upavon.java} Array Manipulation
{Arr1.java} First Array in Java
{Weekend.java} Array of Objects

Module J706 - Objects and Classes
{Ourmenag.java} Sample application for use during practical
{Eve3.java} Static methods and comparing objects - test harness
{Ourpets.java} Our Pets - example application
{Animal.java} Sample class for use during practical
{Ourzoo.java} Ourzoo - sample application
{Film3.java} Static methods and comparing objects - class
{Film.java} Defining a simple class of objects in Java */
{Film2.java} A class of objects with static methods, public variables, overloaded constructors and private internal methods */
{Eve2.java} Example class that uses the Film2 class */
{Eve.java} Example class that uses the Film class */

Module J707 - Strings
(article) Analysing incoming data lines
{marston.java} Arrays of Character String Objects
{minety.java} Accessing characters within a string object
{oaksey.java} indexOf and substring
{highworth.java} More character variables
{crudwell.java} copyValueOf and toCharArray examples
{StringBreaker.java} Splitting and interpertting a string
{Station.java} Extracting data from a string, passing to factory
{malmesbury.java} Stringbuffer
{purton.java} startsWith endsWith and other string comparison methods
{Vest.java} Open file, read line by line, do string manipulation
{ransbury.java} char variables and char arrays
{cricklade.java} String object manipulation
{ashton.java} Comparing Strings

Module J708 - Packages
{Geraldine.java} Class and calling code - all in same file
{axford.java} Calling a class in current package
{Hilda.java} Calling a class - using import to save repeated package names
{sherston.java} Importing a class from a package
{sopworth.java} Calling a class in a subpackage
{pack.java} Package class example
{Hattie.java} Calling a class in another package
{Isobel.java} packaged class for Geraldine / Hilda / Hattie demo

Module J709 - Class Access
(article) "Java Cookbook" - review
{luckington.java} Inner class example

Module J710 - Extending Classes and More
{Student.java} second subclass for use in exercise
{Interit2.java} Interitance bundle + array, abstract, super, overload
{Lunch.java} Using methods inherited from the base class Object
{Hire.java} Hire Film - extended class
{BaseFile.java} An abstract base class
{HireFilm.java} Class HireFilm (extends film from other module)
{Hires.java} Application to use HireFilm
{Ipay.java} Application using an array of objects that implement an interface
{House.java} Another class than implements an interface
{Lecture.java} Lecture - application for exercise
{People.java} People - base class for use in exercise
{Car.java} Class that implements an interface
{Cinema.java} extended class example
{Lecturer.java} Lecturer - subclass for use in exercise
{Tv.java} Another extended class - TV
{Round.java} Exercise template - calculate price of a round
{User.java} Hiding detailed logic in (static) methods
{Interit.java} Interitance demo bundle - 4 files in Java
{Babysitter.java} Application that uses Hire, Cinema and TV films
{insurable.java} Interface definition
{Book.java} Inheriting from the Universal Superclass. Also test harness in same file as class.

Module J711 - Java in the Web Page
{Mountain.html} HTML test framework for Mountain applet
{Puffin.java} Applet that demonstrates double buffering
{Mountain.java} Buttons, Fonts, drawing on a Canvas in an applet
{Puffin.html} Demonstration of double buffering
{box.java} Applet to draw a rectangle in a border

Module J712 - Exceptions
(article) errors v exceptions
{Adder.java} Solution to Addbase exercise
{Addbase.java} Exercise Base - make this user proof
{neston.java} First example of an exception
{KeyRead.java} Keyboard Read for use during early exercises
{wadswick.java} Sample program that will throw an exception, not catch it, and fail
{Bikini.java} Practical Exception Handling Example
{playing_card_7.java} class of playing_card, used in "neston"
{card_7.java} for neston demo - interface card
{E1a.java} Sample answer - handling exceptions on reading use input
{Keira.java} try, catch, finally - full example
{E1.java} Class to which to add exception handling during practicals
{suspect_card_7.java} class used within "neston" demonstration
{Jane.java} Define your own exception class

Module J713 - More Input and Output
(article) Formatting to a fixed number of decimal places
{snip3} Writing to a file
{wellreader.java} Sample Input class from earlier courses and modules
{d3y.java} Exercise based on day 2 template
{snip2} File existence checking
{Javafgrep.java} Example for modification exercise
{snip1} Code snippet - reading from a file
{bratton.java} Formatted Printing
{d2x.java} Application using multiple classes
{farleigh.java} Checking file status, reading and writing
{winsley.java} File Manipulation examples

Module J714 - Fundamental classes
(article) Want something more dynamic than an array?
(article) Fundamental classes java.lang, java.util and others
{Hset.java} Hashset example
{Thing.java} Example of destructor
{Discfree.java} Running an operating system command from Java
{Trans3.java} ArrayList, Hashmap and Collections sorting
{NetworkStation.java} class uses in AUtil demo
{Hmapsort.java} Sorting in Java - using collections
{Tshirt.java} Utility classes ArrayList and Hashmap set up to help analyse data file
{ByValue.java} Comparator for Trans3 demo
{Network.java} Vector to replace an array
{Mypocket.java} Forcing a destructor to run
{holt.java} Using a Vector object
{About.java} System Properties
{Train.java} To accompany Trans3 demo
{Bynum.java} A Comparator class
{Handbag.java} A class in which descructor calls are delayed
{outmarsh.java} Using a stack
{Acsort.java} Sorting in Java using the comparable interface
{Station.java} Station class used in Network example
{hinton.java} An Example of a Hashtable
{Strtok.java} StringTokenizer Example
{stuff} Data for Trans3 demo
{Objvprim.java} Object to primitive comparison
{Access.java} Access Log analysis / String Tokenizer
{Hmap.java} Hashmap example
{Mathop.java} Maths operations
{Bus.java} To accompany Trans3 demo
{AUtil.java} Creating a hash of objects
{Arlist.java} ArrayList in Java
{Mhs2.java} A further example of sorting in Java
{Ptr.java} To accompany Trans3 demo
{floater} Float object v float primitive

Module J715 - Putting the Java Language Together
{PF2.java} Second example application
{Area.java} defintion of an area of the UK
{P3.java} Example object
{MF.java} Final example application
{Person.java} Calculating BMI of various stars
{Station.java} Class of objects from file or URL, factory, Vector and HashMap, select, sort, output
{PF3.java} Third example application
{Place.java} Solution - base class (abstract)
{Placefinde.java} Solution - application class
{District.java} definition of a district of the UK
{PF1.java} Sample extended class
{Multifinder.java} Full application
{PF4.java} Final lookup on data example, ignoring area v district distinction
{P4.java} Object P4 definition

Module J801 - Review of Java Basics
(article) Overview of Java
{Duck.java} inheriting and implementing class
{Aviary.java} Sample program - using Duck and Gull classes
{DairyQueen.java} Main application to show inheritance and polymorphism
{Gull.java} Class in a package, extends another, implements an interface
{Insurable.java} Dairy Queen demo - just a shell interface to show the implements mechanism
{Friend.java} Interface to define an extra API
{Av2.java} An array of objects of different types
{Colddesert.java} Part of the Dairy Queen demo
{Icecream.java} A subclass of Desert
{Desert.java} Base Class for use in Dairy Queen demo
{Bird.java} Base (abstract) class

Module J802 - Abstract Windowing Toolkit
(article) Graphic User Interfaces (GUIs)
{skylark.java} General Purpose Graphing Applet
{awtfont.java} Fonts, text manipulation, graphics. Applet or stand alone application.
{yew.java} Applet, nested panels and layouts
{magpie.java} A Histogram of financila results
{acorn.java} Basic Graphic Applet
{ash.java} Constructs and scaling - AWT and Applets

Module J803 - Applet Parameters
{crow.html} Web page calling applet with data parameters
{crow.java} Graphing Applet that picks up parameters from the HTML

Module J804 - Threads
{redwing.java} Syncronisation solution
{robin.java} Using threads via the runnable interface
{redtail.java} Syncronisation problem
{wren.java} Using threads by extending the Thread class

Module J807 - Images
{waxwing.html} Load an applet with data parameters
{starling.java} Graphing Applet with command line interface too
{waxwing.java} Graphic Applet - labelled, markers, etc
{ConfirmDialog.java} Dialog Confirmation Class
{gannet.html} HTML frame for applet
{gannet.java} Applet to load an image
{starling.html} HTML to load a parameter driven applet
{Imgfilter.java} Changing the colours of an image to make a subtle background

Module J808 - Network Programming
(article) "Java Cookbook" - review
{Leanne.java} Multithreaded tcp/ip server in Java
{Station.java} Class of objects from file or URL, factory, Vector and HashMap, select, sort, output

Module J809 - Serialization
{Drawing.java} A class managing a vector of selializable objects
{kingfisher.java} Application to demonstrate serialiasble objects
{Bead.java} The Serialiable class itself
{mousehandler.java} Serialiazable demo mouse handler class

Module J810 - Internationalization
{pintail.java} Numbers, currency and date - internationalization
{buzzard.java} An Applet to show and navigate a Unicode font
{Avocet.java} Resource bundles in use

Module J811 - JDBC - Relational Database Access
(article) Interfacing applications to a MySQL database engine
{Maggie.java} MySQL Database Connection and Query
{jdbc1.java} Connecting to a MySQL database
{J850insert.java} Servlet that adds a MySQL table row
{J850staff.java} Servlet to insert into and report on a table
{J850select.java} Servlet to run a MySQL select (jdbc)
{Oralink.java} Connecting to an Oracle database
{make_J850.java} Create table for J850 series of demos
{J850_jdbc.java} Class to perform a MySQL table insert
{J850sjdbc.java} Generic database insert and select code (MySQL demo)

Module J812 - Java Beans
{Cube.java} Java Bean example as used by Tag library (J907)

Module J815 - Handling XML in Java
(article) Handling XML in Java

Module J816 - Regular Expressions in Java
(article) Regular Expressions in Java
{Reg1.java} Regular expressions - look for email address
{Reg6.java} Regular expressions - match and replace
{Reg4.java} Look for email address on command line and report on user and domain name parts
{Reg2.java} Regular expressions - look for all matching lines in a file
{Reg3.java} Look for all lines containing a term and report the first field from matching lines

Module J901 - Servlets
(article) Sessions in Servlets
{Maryland.java} Checking and setting cookies in a Servlet
{Lifeanswer.java} Basic Servlet - simple calculation and a visit counter
{svl_right.java} Servlet to read form and echo
{Memo.java} Linking requests together via a session in a servlet
{Noah.java} A simple servlet, and how to modify it
{svl.html} Servlet demo - HTML form
{symdyn.html} Dynamic operation of a Servlet

Module J902 - Extending Graphics in Java
(article) Graphic User Interfaces (GUIs)
(article) Extending Graphics in Java
(article) Extending Graphics in Java part 2
(article) Extending Graphics in Java Part 3
{TreeDemoSetup.java} Jtree
{Dialer.java} Java dialer with echo in a Jlabel
{swsmall.java} Event handler - Swing
{Dialapplet.java} Swing Applet - dialler example
{S1.java} JFrame, JLabel and Jbutton - Swing
{Swtiny.java} Swing - tiny example (JFrame and JLabel)
{TreeDemo2.java} Jtree with contents and interaction
{S2.java} Grid layout - Jbuttons for telephone dialer

Module J906 - Servlets in More Detail
(article) Sessions in Servlets
{PubWatch.java} Session Tracking for Cluster and Load Balance demos
{web.xml} Example URL to servlet class mappings
{ByName.java} Comparator class for Stations (transport demo)
{Station.java} Station class (transport demo)
{Landlord.java} Simple Session Tracking servlet reporting all users
{Barman.java} Simple Session Tracking
{HelloServlet.java} Hello Servlet World
{MyStream.java} MySteam web or file reader (transport demo)
{Framework.java} Main servlet / stand alone program (transport demo)

Module J907 - JSP - JavaServer Pages
{tcvt.jsp} JSP to read temperature in C and convert to F
{boxes.jsp} JSP / Tag Library / Java Bean - the JSP part
{index.jsp} A Shopping cart JSP that maintains state -->
{gje3.jsp} JSP - Form input and validation
{lovely.jsp} JSP example linking a series of pages, good practise shown
{web.xml} Session timeout changed to 120 minutes -->
{gje2.jsp} JSP example - Java separated from HTML
{Store6.java} Store class, used to maintain state in JSP demo */
{counter.jsp} Sessions in a JSP
{Tconv.java} Class for use from JSP using standard tag library
{rep_aut_2.jsp} Web -> Tomcat -> JSP -> Tag Library -> MySQL - booklookup
{report_author.jsp} Web -> Tomcat -> JSP -> MySQL - booklookup
{products.txt} Product data for Shopping cart demo
{graham.jsp} Hello JSP world
{tcform.html} Form to read a temperature in degrees F
{bookjava.jsp} Replacing Java Source code with Tags - some equivalents
{Book.java} net.wellho.Book class - Java Bean to look up on MySQL database
{course.jsp} Simple JSP, displaying a calculation in a page

Module J909 - Putting it all together
(article) A multithreaded server in Java
(article) What makes a good variable name?
{Beast.java} Java Bean for JSP demo (hello)
{loglook.jsp} JSP to read and analyse data from a file
{Room.java} Business logic for JSP demo (price)
{hello.jsp} Simple JSP calling in business logic from a class
{price.jsp} Example of a JSP and what the raw Java would be

Module J910 - Introduction to Ant
(article) Overview of Ant - a Java based build tool
{build.xml} ant instructions for Babysitter application -->

Module J953 - Combined Java Web Example: Servlets, JDBC and Graphics
{web.xml} Tomcat config file for the sample application -->
{Im1.java} Generating an image file through AWT */
{multigraph.html} Web form that uses Im4.java (multiple images in one page) -->
{Im4.java} An image (AWT) with form selected data (HTTP) from a database (JDBC) via a web page (Servlet) */
{Im2.java} Generating an image file (AWT) using data from a database (JDBC) */
{Im3.java} An image file (AWT) from a database (JDBC) via a web page (Servlet) */
{formpage.html} Web form that uses Im4.java -->

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

M: Well House Manor; hotel and events

Subject M101 - Business Accommodation in Melksham
(article) Good places to stay in Melksham

Subject M103 - Getting to and from Well House Manor
(article) It's easy to get to Melksham, and there's things to do!

Subject M106 - We suggest these local businesses
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing

Subject M149 - Well House Manor - FAQ
(article) Good places to stay in Melksham

Subject M150 - For users of Well House Manor.
(article) Creating Really Memorable Experiences

Subject M200 - Wiltshire
{game01.php} Choosing start and end points for a game
{tracks.txt} OS data for Wiltshire Public Transport
{osmap.tk} Draw a Tk Canvas using Ordnance Survey data

Subject M201 - Around Melksham, Wiltshire
(article) It's easy to get to Melksham, and there's things to do!

Subject M300 - Behind the scenes
(article) From Day Hotel to Hotel - not such a big change
{toiletrolls.pl} How many toilet rolls per day does our hotel use?

Subject M400 - The Hospitality Business
(article) From Day Hotel to Hotel - not such a big change
(article) Creating Really Memorable Experiences

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

P: Perl programming and use

Overview P050 - Perl - General
(article) "Perl - I didn't know you could do that"

Module P201 - Introduction
(article) New to programming. Portable code. Perl or Java?
{pex3} Same thing - sorted!
{whc.pm} Sample standard set of subroutines to share between applications
{s_c3} Screen Counter demo - look for RasterFlex boards
{urler} Splitting out a URL
{talker} Simple talker written in Perl
{pear_ex} A short program to handle substantial data
{pex2} Extended end of day one demonstration
{pex4} Short Perl program ... XML output
{calc} Command line / STDIN Perl calculator

Module P202 - Perl Fundamentals
{av2} average of 2 ages, shows precedence and string to number conversions
{couple} reads two names and echos them
{rw2} Using chop to get rid of the newline
{chopin} Read from user, write to screen WITH FAULT
{poor} A program that does something unexpected
{codemo} Coercion - i.e. silent data type conversion
{one_line} two names are echoed back on one line
{greeting} prompt and read user input
{mfrp} Plan ahead - write the comments first
{ages} compare two ages
{yikes} chop - altered incoming value and returned value
{hello_again} Performing one action after another - a sequence of statements
{language} Perl language fundamentals - example
{bod} Precedence of operators
{bmi2} First Practical Program - including comments and documentation
{hello} "Hello World"
{wrong} A program with a syntax error
{average} Calculate and print average of 2 ages
{read_write} Read a value, calculate, output an answer

Module P203 - More about the Perl Environment
(article) Parrot - Perl's new Virtual Machine
{symbols.pm} Package used within simple perl example
{d2} Prompt, read, chop and echo with comments, warnings and POD documentation
{rw2} read, calculate, print results (2)
{rw3} Calculate, using a module
{assume} Perl assumes empty variables

Module P204 - Conditionals and Loops
{din} Use of shorthand operators
{bmi4} bmi demonstration with loops
{d2r2} Illustration of looping to process a series of values, accumulating totals
{condition} if and if - else; blocks.
{readandtotal} Reading and totalling numbers - sample answer
{bitwise} Demonstration of bitwise and logical operators
{nask} if, elsif and else (wrong use of =)
{numbers} how to write numeric constants
{dinners} nested blocks - loops and conditionals
{lp2} Blocks within blocks (shows \ protection)
{looper} while loop
{summer} Answer to practical (reading and summing numbers)
{d2r1} Illustration of looping to process a series of values
{lp1} Blocks within blocks
{ask} if, elsif and else (right)
{bmi3} Demonstration with conditionals

Module P205 - Initial String Handling
{singlename} regex to look for a single name
{pig} Regular expression - first example with anchors, literals, groups, and counts
{pattern} Regular expression learning tool
{autumn} Sample answer - course exercise
{winter} Course exercise - sample answer
{pws} Use of eq rather that == for string comparison
{firststring} low level string functions demonstrated
{chx} Comparison of chop and chomp
{romance} Quoted strings, qq strings and here documents
{cs} Exercise answer - completing a sentence
{plook} Simple example of reading and filtering a data file
{pfilter} Filter roads.xyz to match a pattern
{fd} Delimiting a variable name
{lms} comparing . and ,
{dqs} Single, double and back quotes
{im10} Intelligent match on scalars
{greeting} use of x operator
{deepmidwinter} Course exercise - sample answer
{heredoc} Use of a here document for copyright block
{eqt} Numeric, String and match comparisons
{finsent} Trimming a sentence
{sc} Case insensitive comparison
{izit} ~~ =~ eq and == operators compared
{proper} Case changes on string
{stringers} Strings in Perl
{bticks} backtick operator - runs an operating system command
{pf2} Filter roads.xyz to match a pattern (using open or die)
{prop3} single and double quotes, q and qq strings
{xz} Printing out variable contents with labelling text
{fil_tar} Filtering a log file for 'lua'
{perlstring} Ways of writing strings in Perl
{midwinter} Course exercise - sample answer
{prop2} Using double quoted strings to change case

Module P206 - More Loops and Conditionals
{p023.c} read an array of numbers from a text string
{jumps2} Using a label in Perl to jump out of nested loops
{qc2} use of triadic operator
{jumps} demonstration of next, last and redo
{pswit} given and when - a switchlike syntax
{mls} Knock out Competition - how many teams?
{g4} String formatting, conditionals and loops
{eloop} Labelled block style of loop
{given_demo} given (Perl 5.10 onwards)
{bip} Different conditionals and comparisons
{iffy} Read - calculate - conditional - output
{tel2} unless, and if and unless written in reverse
{lazyops} Lazy and and && operators
{tel3} Conditional operators "and" and "or"
{dowhile} a while loop that runs at least once
{dice} Sample answer - rolling a die
{tel4} Usin the ? : operator instead of if and else
{golf} Knockout competition - how many teams / players needed?
{telegram} if and else example
{power} inverted until loop example
{andor} and, or, &&, || - precendence
{forloop} Good and bad examples of a for loop
{swit} Use of label to mimic a switch
{dunt} A do ... until loop - reprompt until you get valid input.
{jump2} Using a label in Perl to jump out of nested loops
{tae} Checking user input
{qc} while loop, rewritten as for loop
{throwz} Sample answer - throwing a die
{safety_net} The // defined or operator

Module P207 - File Handling
(article) Writing to and reading from files
{sp} Formatted printing
{sswd} Directory parsing, formatting data read
{procmon} Process monitoring - demonstration of principle
{leedspark} alternative answer to practical at end of module
{piper} Use of file handles to pipe from and to processes
{fprint} Formatted printing - some specifier details
{reporter} file status operators -x and -s
{bridges} sample answer - town with Bridges in name
{forvat} Formatting strings and numbers
{christmas} Formatted printing - splittin money between the grandchildren
{fan} One input and five output files in a single program
{legacy} Divide money between children and print neatly
{tin} Filter and reformat a data file
{newread} <> v readline
{ck} Splitting money many ways - formatted printing
{addplus} Formatter - adding a leading plus
{biggy} Finding huge files
{costa} Output file handles, open, and defaults
{perlwget} Running an OS command from within a Perl script
{ddd} Splitting and reformatting data
{wacsal} Re-active formatting
{fsv} File open, read, write test example
{paut} Piping a ping into your program
{park} Sample answer to "the park" exercise
{pe2rl} Single parse of data, multiple reports generated

Module P208 - Lists
(article) Data Monging
(article) Context - List, scalar and double quotes
{dmore} dicey list sample answer
{li1} First example of a list
{lat.pl} copy a list - duplicates it
{c1} Context, and splitting a list into named scalars
{vgrep} Verbose grep - illustration of list slices
{fanlist} List functions such as chomp and push in use
{odd} Shuffling a list
{towns.xyz} Data file - list of States, Towns, Countries etc
{back} Setting up, using and looping through a list
{prog2.pl} mapping a list, iterating a list with your own counter
{im2} Using ~~ to match lists (arrays)
{dins} Demonstration of some facilities of lists
{yumyum} Elegant Context Demo
{linelen} Using a list to count records of various lengths
{grepplus} grep altering the incoming list
{404hunter} Look for all "error 404" pages from certain hosts.
{sal2} Context examples
{ctx} Lists and contexts
{context} context demonstration
{escape} naming list members
{lx} $ atomic, @ molecular
{booklook} chomp, grep, split, unshift and join example
{sameness} File Comparison
{gm} grep to comb, map to alter
{li2} looping through a list
{404h} Exercise answer - looking for all "404" accesses from certain hosts
{salad} setting up lists, looping through lists, list slices
{prg} Lottery selection
{cont2} List, scalar and double quote contexts
{dow} Anonymous list example
{prog.pl} Iterating through a list

Module P209 - Subroutines in Perl
{splitty} using subs to avoid repitition
{mc2} using email objects
{bridges.pm} subroutines called up from example applications
{ua.pm} Identify whether a web access record is from a spider
{substamp} Sample use of subroutines
{tipsy} Calling in a module from you Perl program
{cov2.pm} Coverage as a class. Allows multiple parallel coverage sets!
{ms2} calling subroutines in a different file
{utils.pm} Standard functions - tipsy demo
{bandq.pm} package with "romeo" example
{mf2.pm} package of subroutines for mailfilter2
{romeo} Romeo and Julie - solution
{romeo2} Answer to Romeo and Juliet question
{mailfilter.pm} package to encapsulate information - NOT really objects.
{subgetnum} Sample use of subroutines - returned parameters
{tip2} passing data in and out of subs
{melkservice} First use of training class
{tip1} Parameters in and out of a sub
{myvar} Use of my to reduce variable persistance and scope
{valread.pm} standard subroutines to include in several programs
{mc} Email analysis via a package
{train.pm} Class for training - first use
{covertest} Sample application - coverage test given ranges of integers
{funcall} passing a hash to a sub
{coverage.pm} Routines to combine integer ranges to provide overall coverage information
{standardstuff.pm} Standard and repeated code - in own file
{control} Example of how you should NOT repeat code
{globvar} demonstration that variables default to global
{subgnrange} Passing parameters in and out of subroutines
{ct2} Coverage test - application using coverage objects
{scope} Scope - our, my and local
{email.pm} email class of objects - a very simple class
{maillister} using a module to retain information
{l2} lists / context demo
{future} Using a class in Perl
{mailister2} including package name in package methods
{courses.pl} Sample (test) program to try out a diary
{mysub} calling a subroutine in the same file
{diaryev.pm} Sample class for courses.pl demo
{subby} repeated code in a sub

Module P210 - Topicalization and Special Variables
(article) The wonders of Perl
{start} BEGIN - CHECK - INIT - main code - END
{topic1} Variable used many times - candidate for topicalisation
{ticker} Clock, using autoflush to update screen every second
{topper} File handle <>
{shh} Counting Unique visitors in a log file
{special1} Program using a variety of special variables
{hodo} Filter looking for IP addresses of computer(s) with "tea" in name
{paws} Progress bar / progress reports
{shhh} script to run on every line of a file
{cv} rewrite of "dos2unix" in Perl
{top3} Further use of $_
{spout} Special variables to control output formatting of lists
{infovars} English and short names for informational special variables
{spot} Using implicit loop with -n
{ama} Use of $" to produce a csv output
{rqu} Use of awk-like options with Perl
{johnny.vegas} Output from select demo
{sample} Filter - takes names and attempts to capitalise correctly
{bcv} Use of @ARGV command line and $_
{exact} map, grep and $_ save loops
{gop} Handling the command line via Getopt. Also Usage lines.
{was} Use of command line options in Perl
{delay} select to change default output
{topic2} Topicalisation in use
{cl2} Program that generates a warning
{commline} Handling the command line via @ARGV
{perltodiamond} Using the -p option on the command line
{oddgrep} Using grep and map with $_
{gop2} Handling command line options - getopt
{allhosts} Special variable $/; reading whole file to scalar

Module P211 - Hashes
{ha1} Setting up, then displaying contents, of a hash
{account} Sample - extracting statistics from an access log file
{sthash2} Keys must be unique - solution 1 - Append all possible values
{channel} Ferries to France - data file
{h1} Setting up, adding to, changing a hash (associative array)
{nip4} Sorting the keys of a hash
{aco_1} Access log - listing hosts via a hash
{niports} hash - manipulation
{so4} sort using a more complex routine
{ukports} fill and look up a hash
{so5} sorting with a comparison block
{im3} Using intelligent matches to check hash keys
{acl} Sample answer - web_c2, page 152
{webc2} Sample answer - 2nd question
{stdhash3} Hash keys must be unique - so make up a new keu
{nip2} set up and loop though a hash in various ways
{sorter} Demonstration of default dort order
{envrep} use of %ENV
{access_log.xyz} Log file used in many Well House exercises
{web_count} Sample answer - web access counter question 1
{stdhash4} Keys must be unique - design new keys, add accessor loops to find multiple keys
{nip3} the danger of jumping out of an each loop
{stdcodes} Dialling codes for use with course exercises
{stdhash} keys must be unique - example illustrates the problem
{requests.xyz} Data file for hash demos and exercises
{acc_0} Loading from a module in another file
{env2} ENV module to import variables as globals
{blx.pl} Use of hashes in Perl / CGI
{pathit} List out all programs on the current $PATH
{cbdemo} How sort callbacks work
{hash1.pl} setting up and using a hash
{langies} List of all the skills in a file, and who has them
{ford.pm} Module for use with account demo
{fwom} Hash - keys must be unique
{bankout} initialising a hash
{peeps.pl} Set up a hash of people
{so2} Sort using your own sort subroutine

Module P212 - More on Character Strings
(article) Analysing incoming data lines
(article) Pattern Matching - a primer on regular Expressions
{3to3} translate a DNA 3-character codon to an amino acid
{bindemo} Printing out and reading in binary numbers
{slurpex} matching lines - whole file at a time
{emre} KISS - keep it simple - regular expression
{letters} Look for word starting and ending with same letter
{pcv3} Postcode, Mk3 - extract multiple postcodes
{bincopi} Read and analyse binary .gif files
{totext} Converting < > and & to web standard sequences
{pcv2} Postcode extractor Mk2 - save into named variables
{yem} Perl regular expression - information returned
{ystwyth.pl} binary data handling - examine a .gif file
{emma_hunter} Match and Capture - email address
{regextra} Splitting up a URL via a regex - sample exercise answer
{name3} Match and substitute executed block
{murl} Regular expression with comments
{reg} Stepping through regular expressions
{newsub} Examples of the =~ s for substitute operator
{greedyvglobal.pl} Greedy matches v Global matches
{trandy} tr (or y) and its modifiers
{n3} Capturing groups into a list
{filler} Using Regular Expressions to "mailmerge"
{catshow} Sample answer 1
{name} Match and substitute (long winded way!)
{html4} Global matching in a list context
{phone} Substitution using back reference
{packet} pack and unpack
{sting} different ways of defining a string
{holiday} Packing and unpacking binary data
{pwline} Character by character translation with tr
{ogado} Anagrams of First Great Western served stations
{n2} Capturing groups into $1 and $2
{sedm} Substitue operator
{html3} Global matching in a scalar context
{names} Regular expression match - revision
{n4} Special variables $' $& and $`
{stuff} storing a compiled regular expression - qr
{itsperl} Serialise and unserialise strings
{glomatch} Use of "g" modifier
{getlinks} Find all href links from a page
{cstr} Defining Strings
{pusher} Single v global match and alternatives
{tophat} Hashes, Regular Expressions, Topicalisation ... end-of-course example
{n5} Special variables $' $& and $`
{pcrd} Modifiers im matching
{name2} Match and substitute - (example that fails)
{html2} Sparse matching, looking for an HTML tag
{pcv1} Postcode extractor - mark 1
{rogues} Using tr to find invalid characters in a string
{html1} Matching HTML - a greedy match doesn't work
{pwline2} using tr to change multiple characters; also c and s switches
{favex.pl} Postcode, Zipcode, credit card no. etc - regular expression matches
{cats2} Sample answer 2

Module P213 - Creating your own Classes
(article) Is Perl truly an OO language?
(article) Object Orientation in Perl - First Steps
{small} True OO example
{roar} Sample program to use room.pm
{book.pm} A simple class with a constructor and 2 access methods
{spammer} Using global matching to extract all matches
{ce.pm} Object interface to call events
{thing.pm} Generic class for use during exercises
{usebook} Sample application, constructs and uses book objects
{ub3} Another test program to use the book class
{journey} Call to factory class. See ramble.pm and commute.pm
{antest} Introduction to Objects
{commute.pm} commute.pm - used in factory demo
{3cl} Object Orientation - 2 classes and polymorphism
{at2} Hello Perl Object World
{ub2} A test program to use the "book" class
{scemail} quick check of email address format
{wheretogo} Example that uses commute.pm and ramble.pm
{ubany.pl} Test program for ub1 ub2 and ub3 classes
{higloo} houses and igloos - an OO example
{nsp} variables in packages (autovivification!)
{blessing} Blessing and resultant polymorphism
{medium} OO with inheritance demonstrated
{room.pm} A simple class which uses a blessed hash
{ramble.pm} A class that includes a factory method
{tiny} Towards OO in Perl
{housing.pm} Definition of house, castle and igloo classes
{bd2.pm} A simple class, using a list to store information about each object
{need2} Solving the bare word
{need1} calling subs via bare words
{massage.pl} Template object and test program
{peeps.pm} Definition of two classes and polymorphism
{bd1.pm} A simple class, using a scalar to store object information
{oco} Using the house, castle and igloo classes
{big} How Object Inheritance is done in Perl
{message.htp} Sample template for use in other demos
{bd3.pm} A simple class, storing each object in a hash
{message.pl} None-OO example of template filling

Module P214 - System Dependencies
{faad} A template system report summary
{hostinfo} Looking up host by IP address and name
{msexcel} Creating an Excel spread sheet
{mytemp} template for faad example
{ws2.wsf} Windows script - report on a datafile
{registry.pl} Example of using registry from Perl
{userinfo} use of getpwnam for user information
{back} system dependent backquotes
{ws1.wsf} Using Windows Script to list out special directories
{cv} End of line character conversion - Windows to Linux / Unix
{blockshell} running a series of shell commands
{info_more} looking at your perl configuration in detail
{msword} extracting from a Word document ready for upload!
{courseend.pl} OS independent admin example - bundling up all training examples after a course

Module P215 - More about Files
(article) Writing to and reading from files
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{f2} Formatting using "format" and "write"
{allin} Read and report contents of a directory
{dend} Data on end of program file
{fal} split an incoming file lots of ways
{chdirddemo} Using directory functions cwd, chdir, opendir, readdir
{file} _ and $_ in file operators
{ab_file} Using some of the file status operators
{whatsmypath} Lists out all duplicate executables
{inter} See is STDIN is interactive, and prompt if it is
{af} using the stat function to report on a file
{lowther.pl} Reading data from the end of the program file
{ft} testing file existence, size and other stats
{dxyz} Finding all files with names matching a pattern
{hunt} Random access to a file of fixed length records
{segment} Spray one input file across 16 different outputs
{dotty} globbing on a file handle

Module P216 - Handling Dates and Time
{dt3} current date and time (system dependent!)
{dt4} use of time and localtime
{sigint} Use of Signals in Perl to trap ^C (Control C)
{tim} Converting times between epoch seconds and regular time
{hf} Modified "chivvy" - perhaps less OS dependent
{chivvy} Using %SIG to timeout keyboard entry
{dt5} compare a stated date and time with now!
{dt1} file last modified (days ago)
{dante} Date and time demos
{dt2} dt2 - file last modified (seconds from 1.1.1970)

Module P217 - More than Simple Lists and Hashes!
{hohum} hash of list of hashes
{2tiny} A list of lists - autovivification
{ar3.cgi} Rekeying data / presenting it on a web page
{d3} Collection of collections (i.e. 2D array)
{rq2d} Setting up a hash of lists
{d2} Passing list, passing reference to list comparison
{deal2} List of lists - flexible example
{ar2} Combining lists - list of lists v one long list
{lilo} Collections and references to collections
{rrr} Setting up a list of lists (like a 2D array) from a file
{rn2} Pushing a list v pushing a reference to a list
{ref2} References - the fundamentals
{multikey} A Hash of lists - a more complex example
{revise} Revision of reference notations in Perl
{m2} Passing a reference to a hash
{ar4} Reading a data file into a structure
{deal} A list of lists - dealing a pack of cards
{haha} A hash of hashes
{rain} Setting up a hash of lists
{refs} References - a first demo
{hali} Example of a hash of lists
{show_acc} Setting up a list of lists
{ar3} Rekeying data
{clutter} Finding items common to a number of liats
{lili2} List of lists
{slush} Setting up a list of lists in Perl
{lili} lists of lists - like a multidimensional array
{menu} Passing a reference to a list
{2ds} Setting up a list of lists (like a 2D array)

Module P218 - More Objects
(article) Is Perl truly an OO language?
(article) Object Orientation in Perl - First Steps
{rider} Application that uses the horse.pm module
{fldo} Set up obects via a utility factory (main prog)
{test_class_1} Test harness for class "animal"
{teacup.pm} For use with require demo
{collect} Application that uses commememorative coin class
{oo6} SUPER example
{animal.pm} A framework for a generic base class
{angler} Program to demonstrate use of phisherman class
{visit.pm} Set up obects via a utility factory (classes prog)
{opolop} Operator Overloading in Perl
{runner.pm} Multiple classes in a single file
{coin.pm} Simple base class defining a coin
{bne} a standard base class?
{ptest} test harness for the program.pm class
{commemorative.pm} A class which uses simple inheritance
{ua} Looking at data via Data::Dumper
{test_class_2} Test harness for the various subclasses of animal
{needbr} require is runtime, use is compiletime
{overload_add.pl} Operator (+) and to_string overloading, Perl
{transport.pm} Definition of a transport animal
{dish.pm} package showing Exporter
{runtest} Test code - for polymorphism / inheritance demo
{cafe3} cafe3 - offer a number of dishes
{tptest} Test program for the trainingprogram.pm class
{pet.pm} a pet is an animal ... inheritance ...
{pover} overloading operators
{tabby.pm} calling the base class constructor in Perl
{cafe} Test application - use of EXPORTER
{horse.pm} BEGIN END DESTROY and import special methods
{li2} the @INC list and the %INC hash
{basket} Sample program - polymorphism in Perl OO
{lookinc} Display the @INC list
{fruit.pm}
{tharness} Perl program, calls 2 classes, polymorphism and interitance
{phisherman.pm} A simple class in Perl
{offspring.pm} class offspring - an animal that need attention

Module P219 - Libraries and Resources
(article) "Perl - I didn't know you could do that"
{colpert} printing coloured text in your terminal window
{dadu}
{wholenumbers} The integer pragma illustrated
{tolatlong} UK Ordnance Survey Grid Reference to Latitude / Longitude convertor
{togridref} Latitude / Longitude to UK Ordnance Survey Grid Reference convertor.
{mod_demo} Use of standard modules
{ac1} perl -w / turning warnings on and off
{stx} croak - like die, but reports line in calling package

Module P221 - Perl on the Web
{hww.pl} Simple CGI example with urldecoding and webify
{templ.htp} Template for sdo2.pl Perl / CGI demo
{samform.html} Sample form for an CGI script
{loganal.pl} Full cgi example - log file analysis
{st_look.pl} Form, template, validation, POST and GET all in one example
{sdo2.pl} Multiple page Perl / CGI application
{tabfeed.pl} Display list of SQL tables and/or table content on a web page
{job3.pl} Select, display, edit job opportunities application
{echo.htp} Form / template to go with echo.pl demo
{railstats-1.xyz} data for st_look.pl demo
{letterlinks.pl} Perl on the web - simple file lookup
{onweb.pl} Looking up data in a file on the web
{nice.htp} Template file for log analysis application
{echo.pl} Web basics - echo form content
{demo.pl} First cgi program - read and echos form content

Module P222 - Programming Efficiency and Style
{try6} regular expression efficiency demo - via foreach
{try1} regular expression efficiency demo - start with literal
{trybench} regular expression efficiency demo - testing with benchmark module
{try5} regular expression efficiency demo - read into list
{control} regular expression efficiency demo - control
{try7} regular expression efficiency demo - index rather than regex
{try2} regular expression efficiency demo - start with anchor
{try4} regular expression efficiency demo - process line by line
{try3} regular expression efficiency demo - remove use of $&

Module P223 - Interprocess Communication
(article) Controlling multiple asynchronous processes in Perl
{knife} fork and two separate processes
{pinga3} Parallel (forked) processes communicating via signals and pipes
{pingalong} Parallel (forked) processes communicating via pipes
{nonfat} A process that responds to signals
{butter} Send a signal to a registered process
{breadknife} Forking a process, then the two communicating
{talker} Simple talker written in Perl
{two_roles} Forking in Perl - two processes
{dodo} running another process from Perl
{breeder} Parent forking multiple independent children
{pinga2} Parallel (forked) processes communicating via signals and files
{h_report} Two processing in parallel (via fork) communicating (via a pipe)
{f1.pl} Forking a process
{pingpong} piping from another process
{kidgoes} Children signalling to parents as they complete
{fdem} Forking in Perl, then communicating between processes
{check} Expect - choreographing multiple pings and analysing result

Module P224 - Intersystem Communications
{netgrep} Network grep server - connect via telnet on port 5678
{pfinger} Client in Perl - talks to remote finger daemon
{victoria} fork and talk
{myweblib.pm} module to go with s1 web grab example
{pg2} LWP - sets own User Agent
{pg1} LWP - simplest test
{s1} Grab a web page
{perl_robot_client} robot.txt collector in Perl from a list of sites
{albert} Forking, Piping and Signals

Module P251 - Perl Review
{ref1} Lists and refrences
{snobol} Various variable types in Perl
{ref2} References, lists, hashes, multidimensional structures
{pocket} Using a simple class
{c1.pm} simple class

Module P252 - Perl on the Network
(article) Making all your .html files run a Perl script

Module P255 - Converting yourself to Perl
{peephole} Read data into a hash and sort keys
{diane_horse} Inverted blocks and less common conditionals
{c1} Perl Context - another demonstration
{superls} Report on recently modified files
{al1} Passing a list in Perl
{al3} Passing to an included file
{xmas} giving out Christmas money
{self} Using Perl for Sys Admin
{lidem} List manipulation examples
{demo.html} Sample output from pod2html
{logger} Filtering all matching lines from a log file
{onion} Look for IP addresses that have accesses common images
{extras.pm} Module forl use in al3 demo
{lll1} Log File Analysis
{cf} A quick tool - web log filtering
{pcode} Filtering a log file for images
{skillstep} Report on the first word on [each] line.
{al2} Passing by reference in Perl
{oops} Reading from user, echo, calculation
{greet} Regular Expression to match a floating point number
{peeps.txt} Sample Data
{cstr} Writing Strings in Perl
{log2} Analyse requests to our server by IP address
{gdi} Throwing a die question - sample answer
{flipper} Reporting size and age of files
{fil_tar} Filtering a log file for 'lua'
{demo} Documentation for you Perl program
{prg} Lottery selection
{allo} Lists rather than arrays
{loglooker} Further log file analysis
{filer} Directory Processing

Module P256 - Perl 6 Look Ahead
(article) Overview of what we're expecting in Perl 6
(article) Parrot - Perl's new Virtual Machine
{newperl.pl} Romeo and Juliet - Perl 6
{oldperl.pl} Romeo and Juliet - Perl 5

Module P257 - Use with Microsoft software
(article) Using Perl to read Microsoft Word documents
{msexcel} Creating an Excel spread sheet
{ws2.wsf} Windows script - report on a datafile
{registry.pl} An example of using the registry from Perl
{ws1.wsf} Using Windows Script to list out special directories
{msword} extracting from a Word document ready for upload!

Module P258 - Solaris, OSX and Linux
{sed_awk} Linux / Unix system calls
{change_screen.pl} Changing Images and starting Screensaver

Module P301 - Variables in Perl
{ref3} handling a list of lists element by element, by row, and as a whole
{sfact} Beware of variable scope in recursive code
{vbn} Soft References
{fact} recursion in Perl
{ref1} References
{myscope} Scoping of our and my variables
{sfact3} Using package names to supress strict warnings
{gawd} Typeglob - one each of file handle, scalar, hash and list
{sfact1} Use of strict to flag scoping dangers
{ty} Setting up and exercising a typeglob
{ref2} Modifying values passed in to a subroutine
{tgd} typeglobs - a package deal (one of everything!)
{pers} persistent my variable
{iiw} my, local and global variables
{st2} Dumping out all variables defined
{vartypedemo} 6 variable types in Perl
{mkd2} Anonymous lists using [ and ]
{st} Accessing Perl's symbol tables
{phash} data munging - unpack, splice, regular expressions etc
{scope} variable scope illustration
{my2} scoping with "my"
{danger} What variables have I used?
{scal_type} ref function - what is in a scalar
{mkpascal} Pascal's triangle; clever use of formatting
{henry} Variable types
{splitter} select and typeglobs for file handles - alternative to array of file handles
{dele} delete, undef, defined and exists

Module P303 - Miscellany
{protodemo} subroutine prototype
{gogo} Goto based on string
{pex} Exception Handing in Perl
{go2} goto based on a value - a sort of switch
{sptest1} Using a prototyped method correctly
{hoco} the continue block
{cmc.pm} Defining a subroutine prototype
{owncheck} Use of caller and wantarray
{go4} Goto an array of possibilities
{evx} try and catch simulation via eval
{spt3} A subroutine prototype defined too late
{sptest2} Using a prototyped method incorrectly
{mudemo} running an operating system command
{dob} uses of "do"
{mudemo2} Testing to see if a variable is tainted
{waw} warnings, caller, wantarray, ref, $#_
{pmg} magic goto
{goflavours} goto, and jumping with last
{asp} Command line options to add implicit read loop and split
{spt4} A subroutine prototype defined in time
{sudemo} Operation that will fail if run tainted
{go1} The goto statement ... if you must ...

Module P304 - Tieing
{pwlook} Looking up users, case sensitive
{acmagic} Persistant hash - NOT lost when the program exits
{ac3} Using a tie class to force lower case
{lower.pm} Tie class to force all strings to lower case
{bowtie} Using a variable tied to a file
{codes} location lookup
{acnset1} Crreating a database file through tie
{persist} Persistant variable via a tie class
{allcodes} tied hash, unique key solution
{fyle.pm} links a variable to a file
{pwl2} Looking up user accounts, case insensitive
{acnset2} Tying a text file to a hash
{ac2} Using a tie class to force lower case
{ah} Tieing a variable to change its behaviour
{acnlook} Tieing a database file to a hash
{thash.pm} Tie class to access a disc file as a hash, with caching
{acm2} tieing a text file to a hash
{alias_list} Accessing Unix's aliases database directly
{textfile.pm} tie class that treats a file as a scalar
{stack.pm} Tie class that hides a stack under a scalar
{codes2} Place lookup without tie - variables are cas sensitive
{game} Appliaction that uses a scalar as a stack
{aphash.pm} tie class definition - an appending hash
{flash.pm} Appending hash tie class definition

Module P305 - User Input
{h1} Long running program with interaction
{kbtest} If the user has started typing, wait for a whole line. Otherwise carry on
{pcr} Binary file copy
{kbcheck} select to check input availability
{kb2} Giving the user a limited time to make an entry
{askpw} Using ioctls and POSIX to provide a password entry system
{fi2} Reporting maximum field per line count
{keyin} print out ASCII decimal equivalents of entries
{file_in} Unpacking characters
{ask} Send a signal to program h1
{fc2} Reacting to each keystroke rather than awaiting a new line

Module P306 - Plain Old Documentation
(article) POD (Plain Ole Documentation) - how to check it
{d4} Sample code - alternatives to if and while
{pod1.html} Example of HTML generated from POD
{pod1} Example of POD

Module P307 - Perl/Tk
(article) Graphic User Interfaces (GUIs)
{tk1} A simple GUI with Perl/Tk
{tk4.pl} An interactive form on a grid (tk)
{ptkclock.pl} Simpler version of Perl/Tk clock
{tk3} An interactive application with a Tk GUI
{tk2} Drawing graphics on a canvas with Perl/Tk
{ptkcl2.pl} Clock using Perl/Tk
{tk3.pl} A toggle button implemented in Perl/Tk
{bob} An interactive application with a Tk GUI
{bobbb} An interactive application with a Tk GUI
{tk5.pl} Tk demo - fill in form, moving graphic

Module P308 - Using SQL Databases from Perl
(article) Interfacing applications to a MySQL database engine
{aggy} Connecting Perl to a MySQL database
{D2_Main_People.pm} Define the table to object data mapping
{D3.pl} Adding DBIx on top of DBI and DBD - Select on joined tables
{edbi} Example using many database access methods from DBI
{D2.sql} Sample people database
{dbdhash.pm} Tie a Perl hash to a MySQL table through DBI
{D3_Main.pm} Second DBIx Demonstration - headline file for loading Schema
{D3.sql} SQL source data for D3 demo (SQLite / DBIx / Perl)
{D2.pl} Adding DBIx on top of DBI and DBD - First simple example
{trains.sql} Data to create and populate train table for other examples
{firstdbi} Simple Perl DBI Query
{aclog2table} Set up database for web access log records
{D2_Main.pm} First DBIx Demonstration - headline file for loading Schema
{sqlping} Using DBI and DBD to establish a connection and list available tables
{hellosql} Accessing and SQL database with DBI and DBD modules
{fifthdbi} Perl DBI - display contents of MySQL table
{traintimes} Connect to an SQL database of train times
{orange.pl} DBI used in a CGI script as a GUI to a table
{D1.pl} SQLite - DBD and DBI - create, insert, select, drop
{D3_Main_Computers.pm} Define table to object data mapping for Computers and link to people
{tie_main} Exercise - main program to die hash to database
{D3_Main_People.pm} Define table/object data mapping for People and how they relate to Computers

Module P310 - Moose
{B2.pl} Turning packaged hash references into Objects
{B7.pl} Factory Method
{M1.pl} Basic set up of a class with Moose
{M7.pl} Adding functionallity with after
{B1.pl} Package, constructor and accessor
{B5.pl} Base class, subclasses, polymorphism
{M6.pl} Default values - Moose
{B4.pl} Use of caller to examine the sub stack
{M5.pl} Roles and Inheritance with Moose
{M2.pl} Moose - setting defaults
{B3.pl} Checking method calls / confess and croak
{M4.pl} Moose - calling automatically generated methods
{B6.pl} use of Universal superclass
{M3.pl} Data Type checking in Moose

Module P402 - Writing Your Own Simple Client and Server
{dot2} Buffering - progress bar in dots
{pf1} Finger client
{pt4} Using local OS commands to run network processes
{dot} buffering - dotd come out all together
{miniserver.pl} Small Web Server in Perl
{pt3a} time and date from a series of hosts
{mcopy} End of line conversion - moving data file between operating systems
{ptime} Simple client
{pf3} Better finger client
{sts} Simple Perl time SERVER

Module P403 - The Common Gateway Interface
{seeding.html} Sample form - two boxes to submit to a CGI script -->
{seedcalc.pl} Shows structure of a CGI script
{formone.cgi} Running a script when a form has been submitted
{whc_filter.pm} utilities for CGI use
{slip} Simple Perl / CGI script to calculate BMI
{first.html} First HTML page to call up CGI script -->
{wedlist} Wedding list application
{mydate.cgi} CGI first example - menu based on day of week
{bmic.cgi} Simple CGI script with separated view and elementary validation only
{formurl.pl} URL decoding - training example
{firstform.html} A first web form -->
{withval.cgi} CGI page with some data validation
{rf1.pl} Looking up an "A Road" - test program
{mypage.htp} HTML template for shoots.pl demo -->
{roadfinder.pl} Looking up an "A road" on a web site
{shoots.pl} CGI script - sets up form, also handles form response, in a single page
{perlcycle.pl} cycling through images using CGI
{logone.pl} Filtering an access log file from a browser
{area.pl} Single page ruggedised CGI form
{rsq} Analaysis of a file to the web.
{theywant.renew} Wedding list data

Module P404 - Extending Flexibility Using CGI
(article) Nasty Characters in Web Applications
(article) Accessing a MySQL database via a browser, Perl and CGI
{envlist.pl} Environment and input lister
{mulcgi.pl} Handling a form with multiple fields
{twoa.pl} More generalised form handling
{jumper.pl} Random jump - return a location header
{docwrite.pl} Writing a document within a CGI script
{twopost.pl} Collection information via POST

Module P405 - Web Service - Our Own Client
{wtserv} Web server in Perl to expose file system
{pwebserver} Perl server - low level socket programming - HTTP protocol tool
{webpage.pm} Module to connect to a web server and grab a page
{pg2} LWP - sets own User Agent
{xmx} Parsing an XML feed which we get off a web server
{pwebclient} Stand alone program to use web_fetch module to find links
{pg1} LWP - simplest test
{wclient} Simple web client - collect all links
{web_fetch.pm} Simple web client subroutine - connect via HTTP and get a page
{cgiwebclient} CGI script to fetch page from another server
{grablunch} Command line program to access webpage object
{get_courses} Script to call an OO module that grabs a web page

Module P406 - More CGI Programs and Facilities
(article) Making all your .html files run a Perl script
{up.cgi} CGI script to receive uploaded file
{winmailer.pl} emailing from Perl on a Windows box
{utils.pm} Utilities for CGI
{down.pl} Download a file off the server
{upsend.cgi} CGI script to receive and display uploaded file
{nph-clock.pl} Multipart and updating CGI document
{upfile.html} Uploading a file (live demo)-->
{up.html} Form for uploading a file -->
{mailer.pl} Emailing and working out the browser type
{useredit.pl} Edit a file all on one page!

Module P407 - State and Cookies
(article) Handling Cookies through CGI.pm
{whisky.pl} Cookies from first principles - demonstration
{sweet.pl} Perl, CGI, sessions - application template, first principles
{sweeter.pl} Perl, CGI, sessions - complete application template second steps
{sweetest.pl} Perl, CGI, sessions - complete application template, full demo

Module P408 - Standard Web Modules
(article) Using LWP to write Web Clients
{askuser.tt} Second template (form) - Dancer
{ecbgrab.pl} Grabbing a network resource through LWP UserAgent
{cc2} Use LWP UserAgent to check and see if a remote site has changed
{page_checker} Using LWP::Simple to find all links from a web page
{fred} Grabbing a web page for echo
{freda} Grabbing a web page for cache
{goodlinks} Validate links from a page (LWP)
{bin_app.pl} Perl Dancer - Controllers and routes
{wellhouseframe.tt} layout example - Dancer
{frederick} Grabbing a web page for cache if refresh needed
{townstyle.css} Style sheet - Dancer
{grab2} A first example - grabbing a web page via LWP
{cgi1.pl} Simple demo of CGI.pm
{township.tt} first inner template - Dancer
{cgilite.pl} Using CGI_Lite.pm - simple example
{cookie.pl} Setting, reading and deleting cookies
{config.yml} configuration - Dancer
{cgis.pl} Using CGI.pm as a structured code

Module P409 - Searching
{searchform.html} Search form
{indexer.pl} Simple search through a few web pages
{bigger_search.pl} Setting up search indexes
{ar5.cgi} Rekeying data - CGI example with form based control
{yetwider.pl} Wider area search using a pregenerated central keyword resource
{robotic_search.pl} Setting of a background indexer from a CGI script
{my_search.pl} recursive search through HTML files

Module P410 - Automated Email Answering
{mailsender.pl} Mail form - sending email from Perl
{am2} Emailing from a Perl script to a variety or recipients
{automail} Emailing from a Perl Script
{pop3.pl} Using POP3 protocol to read emails into a Perl program

Module P412 - Using CGI.pm
(article) Handling Cookies through CGI.pm
{cgihello.pl} Hello CGI.pm world
{upload_form.pl} Using CGI.pm to upload an image - initial form
{bookkeeper.pl} function to clear old session files
{cgi_serverpush.pl} Server push - a series of responses pages
{cookstart.pl} CGI.pm OO form / for hidden field session demo
{cgiform.pl} How to set up a form using CGI.pm
{cgi_cookies.pl} Report on cookies from browser
{cook2.pl} CGI.pm - sessions using hidden fields
{extrapath.pl} CGI.pm - how to find server parameters such as remote address
{favbrek.pl} Sample exercise answer - favourite breakfast
{cook3.pl} CGI.pm / sessions with hidden fields / page 2
{upload_handler.pl} Using CGI.pm to upload an image - submission handler
{cgitables.pl} Setting up tables with CGI.pm
{without.pl} Simple seb page withOUT CGI.pm (for comparison)
{cgiobjects.pl} Hello Object Oriented CGI.pm
{formdumper.pl} Finding what fields have been submitted - CGI.pm
{with.pl} Simple seb page with CGI.pm
{cgi_shoppingcart.pl} Complete shopping cart demo - using CGI.pm
{cgireadback.pl} Reading back from a form via CGI.pm

Module P413 - Embperl
{adder.html} Embperl - a form and action example
{t2.epl} Embperl - first simple example -->

Module P420 - SQL databases from a browser via Perl and CGI
(article) Accessing a MySQL database via a browser, Perl and CGI
{addoperation} Add via form to operation table
{operations} Operations Data
{gempage} Display joined SQL tables via Perl and Web and Browser
{patients} patients data
{addpatient} Add via form to patient table
{mktabs} Create table structure (SQL for demo)
{testtabs} SQL test command
{gem} Display joined SQL tables via Perl

Module P600 - Perl 6
{classdemo.p6} A first class definition and use
{quieter.pl6} First data file analysis - using arrays, hashes, etc
{hello.pl6} Hello Perl 6 world
{mapper} Read file, map all lines, sort results and display top 25
{rstats2015.txt} Data for Perl 6 demo programs in P600 module
{position.pl6} Practical script - finding smaller stations

Module P602 - Advanced File and Directory Handling
(article) File Locking
{flockdemo} Co-operative file locing with flock
{webfiles} Using typeglobs to handle an effective array of files
{recur} recursively scanning directories
{bchop} Random access to a file - using a binary chop
{nf} Use of $! to find out why an action failed
{nopen} $! in a string and a numeric context
{pfc} Copying a file block by block
{huge} finding lost disc space - hunting for huge files
{biggest} Look for biggest files in a tree
{wr_loop} Using file locking constants
{ndd} Accessing NDBM files
{pls} Four ways of finding the contents of a directory
{loglook} reading a specific number of bytes
{huge2} A progress line - hunting for huge files
{ftype} Establishing the type of a file system object

Module P604 - Using Perl for Web Site Management
{admin.pl} Report on server status

Module P616 - FTP and Telnet Modules
{sshlet} Using ssh to contact a remote host
{ftpdemo} Simple FTP retreival in Perl
{telnetdemo} Log in to a remote host and run a command
{ftp2} Recursive FTP client in Perl

Module P623 - Alternatives to CGI
{sinp.pl} Simple server in Perl
{mp.pl} Simple modPerl Example

Module P667 - Handling Huge Data
(article) Data Monging
{slurp} slurping and sampling
{site.pm} Class used in other examples in this module
{big.start} Finding largest file, with intermediate status reports
{reg_opt} Regular expression match - inefficient example
{reg_opt3} Regular expression match - more specific and faster
{behind} looking behind in huge data files
{reg_opt2} Regular expression match - use of "o" modifier
{useindex} Grab first ten sites on a topic area - QUICKLY via index
{opt3} Improving sort efficiency
{paws} Progress Bar Techniques
{opt2} Sorting and data filtering efficiency
{optim} Optimising code to avoid repeating calculations
{hugehunter} Long log file analysis, with progress and intermediate reporting
{huge3} Asking a long running application for intermediate reports
{rt2} Handling data in chunks - chunk overlap issue solved
{readtime} Efficiency - reading a file in large blocks
{opt4} Improving sort efficient further - caching record analysis
{reg_opt4} Regular expression match - a start assertion speeds it up!
{reg_opt1} Regular expression match - don't save $' $` and $&
{huge3.pid} Example of the huge.pid file
{makedirs} Preprocessing a huge data file to set up indexes
{out.txt} Example of search results written to file
{mtx} Merging two huge files
{huge1} A program to test handling a small part of a huge data set
{makeindex} Generating a list of markers to a huge sorted data set
{huge2} Providing user feedback while handling huge data

Module P668 - Handling XML in Perl
(article) Using LWP to write Web Clients
{xml0.pl} Parsing XML - first test program
{camels.xml} XML sample for xslt1 demo
{medline.pm} Class of XML element handlers
{xml3.pl} Illustration of handling a stream
{index.xml} Sample RSS data feed (XML data)
{stdsubs.pm} Standard cgi handler to collect form data
{goblin.pl} Altering an XML document through LibXML
{xml1.pl} Using debug mode to quickly check a document
{xml2.pl} Using Subs to report on an XML source
{medireport.pl} Using XML::Parser to extract information - practical example
{camels.xsl} XSLT sample for xlst1.pl demo
{mediweb.pl} Parsing XML within a cgi script
{gnome.pl} Parsing XML through LibXML
{p2} Sample RSS data feed (XML data)!
{apps-admin.xml} Sample data file used in XML example
{xml5.pl} Alternative - using handlers
{exp.pl} Direct use of the Expat module
{xml4.pl} Converting an XML document into a tree in Perl collection variables
{xslt1.pl} Using XML and XSLT to turn data into a web page
{p1} SAX parser - extracting titles from XML stream

Module P669 - Data Munging
(article) Data Monging
{pc1} (Somewhat) conventional programming methods to parse data
{new2} Alternative list iteration
{cdk.fasta} Data for sample bioinformatics program in Perl
{pc3} Handling a file as a single string of text
{bacon} Conversion Codons -> Amino Acids -> Protein
{pc2} Using the power of lists to save code and time
{new1} List iteration
{filedata} List manipulation - sorting files by size and reporting largest 10
{oldfash} Handling an "arraY" - really a list - the oldfashioned way
{anagram} Perl program to look for anagrams
{filedata2} Sorting files by size - shortened example, harder to follow?
{memsave} Compressing data to save memory

Module P711 - An Introduction to Standards in Perl
(article) What makes a good variable name?
{chink} About dieing in Perl
{avoidthis} Bad code - multiple actions in one statement

Module P772 - Practical Example - Perl in use
{combine} Combine source code files into single dbn file
{requests} Data file for place_people
{place_people} Application that demonstrates integration of all the fundamental elements of Perl
{lpo} Manipulating a file of records to extract a report

Module P773 - Packaging Modules
{Makefile.PL} Sample Makefile.PL scrtipt to check distribution
{WhcStd.pm} Sample Object in CPAN / standard distribution form
{Changes} Revision history - sample
{1.t} Test routine for a sample module
{README} Sample of install documentation
{MANIFEST} Sample list of contents

Module P774 - Good CGI scripting.
{Perl.1} Some sample quiz questions
{questionset.pm} Business logic for quiz system demo
{thing.pm} Generic object used within business logic
{mymodel.pm} Model for Perl Framework, MVC demo
{bmic.pl} Simple CGI script with separated view and elementary validation only
{myview.htp} View for Perl Framework, MVC demo
{quiz.pl} Top level code for quiz system demo
{whc_web.pm} Web helpers for quiz demo (and others too)
{mycontroller.pm} Controller for Perl Framework, MVC demo
{q15.pl} Quiz - Statistical table generator
{main.htp} Template for Quiz system demo -->
{msgsys.pm} Message System in Perl
{myhelpers.pm} Helpers for Perl Framework, MVC demo
{myframework.pl} The FRAMEWORK for a common gateway interface application

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

Q: General programming subjects

Overview Q050 - General Technical Subjects
(article) Open Source - here to stay, or a flash in the pan?
(article) Web applications using LAMP technologies
(article) Free software - the joy of Open Source

Module Q100 - Learning to Progam
(article) Why so many different courses?
{vcy} Second validation example (function) / Ruby
{vcx} Quick first validation example / Ruby
{sixth.c} Conditional code
{stuff.txt} Data for eleven.c and twelve.c
{colin} Ruby example - planning and documenting your code
{vcw} without validation / Ruby
{Chloe.java} First use of functions and command line - Java
{ten.c} An array to store multiple values
{fur2.py} Operator precedence
{fifth.c} Named blocks of code (functions)
{twelve.c} #define, breaking a loop, == testing
{second.c} Calling named blocks of code
{first.c} A first program - a series of instructions
{furry.py} Whole program
{small_demo.php} A first useful program in PHP
{vcz} Third validation example (catching errors) / Ruby
{fourth.c} Calculations and precedence
{fur3.py} Conditionals
{third.c} Calculate and print
{seven.c} Repeating blocks of code with a loop
{eleven.c} Reading data from file

Module Q101 - Programming Principles
(article) copying an object - copy the reference
{compat} Sharing code between modules / Python
{cbv.c} Call by value and call be name
{day2_1} Functional (structured) coding
{perspire} First Loop
{cbv2.c} Call by value and name - extended example
{sweat} First Conditional
{compat_stage1} reusing code in a module / Python
{whatos} Implementation of a design
{askuser.py} Sample module for sharing ...
{rubfunc1} Ruby example - define and call a named block of code
{algo_cgi.pl} CGI equivalent of Station Name / anagram program
{comp_control} Control case / Python
{afresh} Modular programming!
{utilz.py} Simple sample module
{algo} Use of a sub to avoid repeating code
{fvm} difference between function and method
{design.001} Designing an application - start here
{cd1.c} Comments and sequence of statements

Module Q102 - Choosing your language
(article) Is Perl truly an OO language?
(article) New to programming. Portable code. Perl or Java?
{revl.py} Counting down in Python
{revl.cpp} Counting down in C++
{revl.c} Counting down in C
{revl.php} Counting down in PHP
{revl.tcl} Counting down in Tcl
{revl.shell} Counting down in Shell (Ksh or Bash)
{revl.pl} Counting down in Perl
{revl.java} Counting down in Java
{revl.lua} Counting down in Lua
{revl.rb} Counting down in Ruby

Module Q110 - Programming Algorithms
(article) File Locking
{uni2.pl} Handling unique lines from a file - Perl (generator)
{amm} Program to read in numbers and return some analysis (Python)
{universe.py} Handling unique lines from a file - Python
{d2.8} finding extreme values from a collection
{d2.9} summing a collection
{lca} Least Common Ancestor
{lif.py} Counting the number of times something occurs
{algorithms} Some common algorithms applied to a file of data
{scat} Getting multiple results from a single data traversal
{fodder_stats} Minimum, maximum, total, average, count (Ruby)
{universe.pl} Handling unique lines from a file - Perl (list)

Module Q624 - HTML - An Overview
{index.html} Demo - home page -->
{reminder.html} Sample HTML document from this module

Module Q625 - HTML for Web Application Authors
{envlist.pl} List form and environment information
{tabledemo.html} A Sample Table
{former.html} Sample form showing each main element -->
{tabledemo.php4} Generating a table from a PHP script

Module Q801 - What are Regular Expressions?
(article) Pattern Matching - a primer on regular Expressions
{mare} Some Advanced Regular Expression handling (Perl)

Module Q802 - Regular Expression Elements
(article) Pattern Matching - a primer on regular Expressions
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing

Module Q803 - Regular Expressions - Extra Elements
{bref} Back References
{lookbehind.py} Negative lookbehind - fail if you have just passed over [python]
{lazyvgreedy.py} Comparison of Greedy and Sparse [python] ...
{pcode} Perl - match and extract from a postcode
{pocohunter} Post Code hunter / Perl
{isbn} Testing validity of ISBN number, including check digit
{posso} Sparse, Greedy and Possessive matching
{lookahead.py} Negative lookahead - does not consume / must fail to match [Python]
{ahead} Negative look ahead

Module Q805 - Advanced Regular Expression Components
{ex3.php} negative lookahead - example and alterative
{ahead.pl} Checking if part of a string matches twice with look-ahead

Module Q806 - Regular Expression Cookbook
(article) Regular Expressions in Java
{ex1.php} Regular Expressions in PHP - from simple yes/no to ancilliary responses
{easier.py} making regular expressions easier to read [Python]

Module Q904 - Analysing a Programming Task
{tconv.c} Well Structured program in C. Read / calc / report
{summer} Planning a simple application - the result
{topd} Top down design - first example in Perl
{Trainlength.java} Analysing a problem - how long a train?

Module Q906 - Object Orientation: Individual Objects
(article) Incr-Tcl - Object Oriented extension to Tcl
(article) Object Orientation in Perl - First Steps
{ringer} Test program for the "bells" class
{develop.cpp} Methods (C++) - functions that run on an object
{after2.c} Functions - fundamental calls
{oogap} Log file gap reporter - using logtime object (Python)
{animal.pm} Creating and using Perl objects in a class
{sc.java} Structured code in Java
{ua01} Calling functions in Perl from another file
{classic.php} First Class demo
{ua03} Creating and using objects in Perl
{an01} creating a hash of data in Perl
{osx.php} An array of objects
{bells.pm} Bell change class - notation and change interpreter
{sc.perl} Structured code in Perl
{rails_oo} Using the Object Oriented idiom
{cap_functional.py} Functional coding
{an03} Creating and accessing simple objects in Perl
{ua} Final example - calling basic Perl classes
{gap} Log file gap reporter - single code block (Python)
{rails_script} Using the scripting idiom
{cap_singleblock.py} single block coding
{after3.c} Functions - passing in a structure
{ua02} Calling functions from a module in Perl
{cap_object.py} Object coding
{oogap2} Log file gap reporter - using multiple objects (Python)
{an02} creating a hash of data in a package in Perl

Module Q907 - Object Orientation: Design Techniques
(article) Mapping database rows to objects in a class
{Hotel003.cpp} Designing and implementing a class - C++ - stage 3 - define methods
{oo3.py} Comparator across multiple classes
{poc1} Piece of Content - encapsulation in a package
{Hotel002.cpp} Designing and implementing a class - C++ - stage 2 - add API definition
{railstock.oo} Rail stock demonstration - Object Oriented
{poc6} Piece of content - setters and getters
{TestPattern.cpp} Function definitions for Test Pattern Class
{Hotel005a.cpp} Designing and implementing a class - C++ - stage 5a - adding another accessor method
{poc5} Piece of Content - a list of objects
{oo1.py} First Class definitions and use
{HotelRoomBooking.h} Headers for main class being developed
{poc4} Piece of Content - add a catch-all AUTOLOAD
{oo2.py} Muliple classes / inheritance / polymorphism
{poc.pm} Perl Module - for poctest demo
{poc3} Piece of Content - using Perl's OO features
{poc2} Piece of Content - encapsulate logic in package
{Hotel001.cpp} Designing and implementing a class - stage 1, test program
{oo4.py} high, higher, highest (static method)
{da.txt} Data for rail stock demo
{poctest} Piece of Content - main program to use poc.pm module
{bobclass} Moving detail into classes
{Hotel007.cpp} Designing and implementing a class - C++ - stage 7 - separate files
{TestPattern.h} Headers for test pattern
{poc7} Piece of Content - extended class and inheritance
{railstock.structured} Rail Stock Demonstration - structured
{Hotel006.cpp} Designing and implementing a class - C++ - stage 6 - test pattern object
{HotelRoomBooking.cpp} Function definitions for class being developed
{Hotel004.cpp} Designing and implementing a class - C++ - stage 4 - initial test reporting
{nr301} Associative class example - log file analysis - Ruby
{Hotel005.cpp} Designing and implementing a class - C++ - stage 5 - functional test reporting

Module Q908 - Object Orientation: Design Patterns
{pages.py} Factory for webpage objects
{runners} Full OO example / various design patterns in Perl
{umli.php} Code to illustrate UML examples
{valerie} Test and demonstration for Validate.pm
{uml2.php} Factory, Comparator, Object Sort routine
{single} Singleton class in PHP
{demo1.php} caching design pattern
{Validate.pm} Validation of parameters object

Module Q909 - Object Orientation: Composite Objects
(article) Inheritance
{Shapes004.cpp} Adding test harness
{Shapes005.cpp} Adding operator overloading
{Petanimal.java} Pet subclass - Java
{Shapes003.cpp} Adding a factory / static method
{doggies.php} A set of classes in PHP, factory method, comparators and test harness
{Shapes002.cpp} Inheritance example - Constructors and first accessors
{whm3} Residents and Delegates - extended from customers [Python]
{Anyanimal.java} Base class - Java
{Shapes001.cpp} Framework for Inheritance example
{puma.php} Inheritance, Overriding, Polymorphism, Object comparison of different types [Python]
{Farmanimal.java} Farm Subclass - Java
{flightdemo.cpp} Associated object - in C++
{transport.py} March 2015 / multiple classes in Python
{Anitest.java} Test Harness - Java

Module Q910 - GUI principles
(article) Graphic User Interfaces (GUIs)
{tic_view.py} First View - complete PyQt (Python 3, Qt4) GUI app
{accomlist.py} Controller - complete PyQt (Python 3, Qt4) GUI app
{model.py} Model - complete PyQt (Python 3, Qt4) GUI app
{tourist.py} Model (data class) - complete PyQt (Python 3, Qt4) GUI app
{ticfull.py} Alternative View - complete PyQt (Python 3, Qt4) GUI app

Module Q913 - Computer Graphics Principles
{oursub.svg} Sample of an SVG file
{glb.c} OpenGl / C / Mac OS X
{tryme.svg} Fixed and relative positioning
{svgframe.html} How to include an SVG file in a web page

Module Q915 - Principles of Model - View - Controller
{col.data} Bus user choice - the things the user must weigh up
{4lm_business.inc} 4 layer model - business logic for selecting bus futures
{choice.php} Framework - Bus Service Choice
{o247.htp} Tempate for bus service choice
{4lm_webhelpers.inc} Web Helpers - updated for bus future choice example
{choice.data} Weights table - bus future choice
{row.data} result text - bus service choice demo

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

R: Ruby programming and use

Overview R050 - Ruby - General
(article) Ror - Ruby on Rails
(article) Converting to Ruby? Start here
{six} loop showing iterations
{amazing} Initial Demo - finding matching lines in a file
{two} calculation, coercion, etc
{one} Hello world and elsewhere
{eight} log file analysis
{seven} Simple file parsing
{five} if elif else ... and while
{three} read - calculate - output
{rs06} All together - class, factory, comparable, exception, files, strings, arrays
{latest_log} Sample Application - Read and analyse a web access log file
{col2} Simple Ruby Program - read, calculate, output
{four} prompt, read, echo, calculate
{googletrace} Where has Googlebot crawled?
{pmf} Subclass, Inheritance, Polymorphism, static methods, factories ...

Module R101 - Introduction
(article) Ruby Regular Expressions
(article) Conditionals, loops, and iterators in Ruby
{hello.rb} Some simple Ruby stuff
{e1} Simple input, calculate, print
{d2.2} Use of intermediate variables
{d2.3} Use of intermediate variables - alternative
{d2.1} Prompt, read from user, calculate, output in Ruby
{col1} First Variables in Ruby

Module R102 - Hello Ruby Objects
{f2} Moving detail into objects - after
{hit.rb} A class showing each variable scope in use
{yesyes} data record to object and object to data record mapping
{d2.11} Use of 'self' in Ruby
{trainclass4.rb} Definition of a train - to be shared between all railway applications
{f1} Moving detail into objects - before
{obrub4.rb} Application to call in group of classes from a library file
{obrub1.rb} Define and use a class
{beast.rb} Sample class in its own file
{nother} Operators as methods - polymorphism in *
{shapes.rb} Object Orientation in Ruby - Training Example
{d2.10} Define class, create and use instances of it
{d2.12} Calling program to access class in another file
{stations.rb} thick class, thin application example

Module R103 - Basic Ruby Language Elements
{calcbetter.rb} A simple calculation in Ruby
{d2.4} Easier output formatting in double quoted strings
{muck} Common Ruby Pitfalls
{d2.5} Calculations within double quotes
{bluepeter} Throw a die and track sum of throws
{bw.rb} Formatting strings and conversions
{x01} Constants in Ruby
{calc.rb} Some early gotchas!
{rub1} FAILS to continue a line
{print.rb} Print alternatives
{floater} Floating point rounding errors

Module R104 - Control Structures
(article) Converting to Ruby? Start here
(article) Conditionals, loops, and iterators in Ruby
{csep} Separation of repeated and specialist code
{mi} redefine a method in Ruby
{collect} for and each loops over an array. Also sorting
{vcx} Quick first validation example
{loopy.rb} Loop structures in Ruby
{five} Some unusual conditionals and loops
{d2.6} if elsif elsif else
{amp_pass} Passing code blocks to procedures
{moretrains} Requiring a module from the current directory
{exx} Putting common code in a name block (function)
{rubber} ? : conditional operator in Ruby
{dm2.rb} Method, parameter, optional parameter
{sid} Loop and conditional - exercise
{yetan} immutable object (integer)
{dm.rb} Defining and using a method
{d2.7} while, until and for loops - comparison
{llen3} Default a parameter to nil
{scram.rb} Break redo next and retry
{cx} between and include
{yrb} yield (co-routines / generator)
{ident} mutable object (array)
{u1} How many teams needed?
{dm3.rb} Dynamic redefinition of a method
{ddd.rb} Iterators in Ruby
{loop.rb} Loop in ruby - run until it breaks
{dice} Throwing dice, summing, printing average
{llen} Methods and default parameter
{dbu} Variable and method of same name
{tog} toggling a variable - ruby
{condi.rb} Example of Ruby conditionals
{mwpar} In Ruby you can redefine a function ...
{lazyops.rb} Lazy operators
{rmi} Multiple return values from a function
{ctors.rb} Comparators - what is true?
{doubleret} multiple returns and unlimited parameters
{howcome} Multiple actions in a single statement
{llen2} calculating default parameters
{ex} Class exercise - ordering lunches

Module R105 - Classes and Objects
(article) Basic class definition and use in Ruby
{thapp.rb} Call in a class from another file
{tj2.rb} Displaying via an Inset class
{dp.rb} Just define a class for use elsewhere
{disc} How to define and use a class
{thirdrail} File -> Objects -> Analysis
{tharn.rb} A class with a test harness
{triang.rb} Simple class and use
{stan.rb} Standard methods!
{myo.rb} Define and use a class
{train.rb} Sample class with accessors and comparator methods
{ucl.rb} Use a class defined in another file
{mm.rb} Accessing class variables, and adding methods
{obtest.rb} Static (class) method definition and use

Module R106 - Input and Output in Ruby
{amaze1} Find and count matching lines in file
{d3_2} Testing files
{two} chop and chop!
{webreader.rb} Read a page given its url
{d3_1} iterating through a file, file output
{sysact.rb} Run a process from Ruby, stream output back
{filemore} Analysing a file / counting events
{filestuff.rb} File handling demonstration
{formprint} Formatted printing
{ndo} Running another process - netstat example
{ddd} parse a directory
{d3_3} Reading from another process
{large} Checking a whole directory tree
{finfo.rb} File status checks
{courseprice} Checking if a file exists and writing to a file
{afid.rb} All files in a directory

Module R107 - Collections (Arrays and Hashes) in Ruby
{toppers.xx} Hash to count server accesses
{d3_7} Setting up and using a hash
{rrs} Sorting the keys of a hash
{pw.rb} %w to set up an array, and compact
{randimages} Randomiser of images
{kvp} Sorting in Ruby
{lunch} array sorting and iterating
{a3.rb} methods on arrays
{tim} A Hash of arrays in ruby
{d3_9} Using a hash to count web server accesses
{arar.rb} Arrays of arrays
{d3_8} Simple but practical hash example
{a2.rb} Basic Array manipulation
{bone} Combining arrays
{favr} Defining, adding to, iterating through an array
{others} Symbols
{d3_6} Array of arrays
{swapper} Swapping two variables
{h1.rb} First hash in Ruby
{h2.rb} First hash in Ruby
{tessa} all possible combinations from an array
{ddd} Symbols v strings
{d3_4} Arrays, and iterating through them
{logan} Read an Apache httpd access log file and count statuses
{mar} Combining arrays - element by element "and" and "or"
{a1.rb} First Array
{d3_5} Array methods such as grep
{amaze4} Array of counters - log file statistics
{pwc.rb} Copying an object in Ruby
{pophand.rb} Read, interpret a data file

Module R108 - More Classes and Objects
(article) Basic class definition and use in Ruby
(article) Modules, Mixins and Comparators in Ruby
{third} third example use of classes
{attr} attribute accessors
{slash} Server Log Analysis (2)
{station.feature} gherkin / features of station class
{reallyshort} Inheritance, Class methods, Attribute Accessors, operator overloading
{disc2} Comparator methods (larger and smaller)
{stobsort} Data manipulation - object approach
{journey.rb} Sample class used in sharing example
{slogan} Server Log Analysis
{dub2} With $ - variables are global
{d4_4} Static Method
{dub3} no returns on a Ruby method
{ob2.rb} A class with some class (static) and singleton members
{stanley} Listing of standard methods
{overload_add.rb} Operator (+) and to_string overloading, Ruby
{ststsort} Data manipulation - structured approach
{in4.rb} Inheritance, factories, statics, DATA, lazy ops, to_s
{dubber} default - variables are LOCAL
{O2.rb} Copy v clone
{station_steps.rb} Cucumber implemented test code for station.feature behaviour
{transport.rb} Cluster of related (inheriting) transport classes and test program
{second} second program that uses classes
{inh1.rb} Inheritance in Ruby
{food.rb} Single class demo
{d4_2} Single class example for extension by inheritance
{multifood.rb} Class demo - lots of extras
{cmquick} static and dynamic member variables and methods
{transact.data} Class / Interitance / Test program data
{olop.rb} Operator overloading
{d4_3} Object and Class variables (dynamic and static)
{finex} Simplest Inheritance Example
{O1.rb} Amending a base class even after it has been extended
{transact.rb} Class / Interitance / Test program example showing good practise
{d4_5} Inheritance in Ruby
{stations.rb} Sample class used in sharing example

Module R109 - Strings and Regular Expressions
(article) Pattern Matching - a primer on regular Expressions
(article) Ruby Regular Expressions
(article) String Functions in Ruby
{shalt} the compact method removes nil elements from an array
{kids} Formatting values in Ruby
{globalmatch} Scan for global matches
{pc} extracting sections from a match
{d4_7} Running a piped command via backquotes
{vest} Cleaning up a phone number and checking a postcode
{rex2.rb} Splitting at a regular expression
{mlre.rb} Commenting a regular expression
{pareea} Class for email addresses / regex for splitting and checking
{d4_8} Regular Expression (including documenation)
{se1} Regular Expression Primer Example
{heredocs.rb} Here Documents in Ruby
{finder} search, search / replace, search / execute / replace
{d4_1} Using a string as a collection
{bc} Some String Handling
{kiddos} Formatting a table of data
{names} formatting - adjust for longest string
{summatelse} Regular Expression Alternative Example
{e2} Embedded variables in strings
{sop.rb} + and * on strings in Ruby
{regex_sub.rb} Regular Expression Substitution
{d4_6} Formatted printing
{ii} Formatting example - splitting money between nieces and nephews
{rex1.rb} Ruby regular expression demo
{str_types.rb} Ways of writing a string
{stdo.rb} Using some of ruby's string methods

Module R110 - Special Variables and Pseudo-Variables
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{cc} begin block
{ruby_awk.rb} implicit loop around code - awk mode
{envx} reading and setting environment variables from and for shell commands
{rerub} Cleaning an incoming string in Ruby
{gloop1} Topicalisation - before
{pgv.rb} Predefined global variables and resources
{c3.rb} Process every line via topicalisation
{gloop2} Topicalisation - after
{av} Command Line Parameters to a Ruby program
{answer} Data manipulation example (table inversion)
{topic.rb} Topicalisation - the use of $_
{tiny} Autosplit mode, a loop round your code, BEGIN and END
{vvx} variable types

Module R111 - Exceptions.
(article) errors v exceptions
{except} raisieng and catching exceptions between methods
{bmi.rb} BMI (Body Mass Index) calculator
{catcher} Converting String to Integer and handling errors
{fstb.rb} File Reporter - handle problems with open
{chq} catching exceptions - file handling
{mycode} input a number from user, deal with errors / exceptions
{mc} Catching user errors - a short demonstration
{fstc.rb} File Reporter - handle multiple problems and re prompt
{fsta.rb} File Reporter - assumes all is OK
{mighty.rb} Passing exceptions back to calling code

Module R112 - Parallelism
{faucet} a series of methods in a production line
{papo} yield - calling back to a code block
{ytb.rb} Your own data iterator
{feeder} yield and iterator - practical example
{lynes.rb} How to write and use an iterator
{tap} Reading a file in parallel to processing

Module R113 - Further Input and Output
{tj3.rb} Descending into a complex (json) object
{cashell} Calling Shell commands from Ruby
{wread} Read a web resource into a program
{jload} making use of data in a JSON object
{exprub} Ruby server check with Ruby - Expect

Module R114 - Ruby on the Web
{rubypost} Automated browser to collect from web service
{testwise4.rb} Testwise - testing in a loop, and expecting failure
{testwise.in} Testwise data file
{testwise.log} Testwise - output log
{tj.rb} Reading a Json object from a web site and displaying it
{testwise1.rb} TestWise - example pasted from a Firefox Capture
{ruby_100} analysis of web server log file
{brightred} Ruby script / CGI - demo reporting current log file
{testwise3.rb} TestWise - conditionals - making decisions based on pages returned
{testwise6.rb} testwise - reading from file, writing to console and logfile
{testwise2.rb} TestWise - multiple stories
{testwise5.rb} Testwise - a first page object
{south.rb} CGI Server application from first principles
{hello_ruby_cgi_world} Hello Web World

Module R115 - Using Ruby with Other Languages
{shelley} running a bash script in a ruby wrapper
{rakefile} Rakefile for complete C++ example

Module R116 - Security Issues.
{current} private and protected

Module R117 - Ruby GUIs, XML, SQL Database Connectivity
(article) Graphic User Interfaces (GUIs)
(article) Interfacing applications to a MySQL database engine
{tago} SQLite example
{myrssfeed.xml} Sample XML data
{xmls.rb} XML in Ruby with xmlsimple gem
{dbl} Using MySQL databases from Ruby
{x1.rb} REXML - XML in Ruby - absolute basics
{tag2} SQLite example with table joins

Module R118 - Ruby Sources and Resources
{onsite.rb} Testing a webiste with watir-webdriver
{rubbers} Use of a debug flag to add and remove traces
{quote_test_log.txt} logfile example watir-webdriver demo

Module R119 - Ruby Miscellany
(article) Modules, Mixins and Comparators in Ruby
{rubytime} Time objects
{taxcalc.rb} Tax Calculation Module
{wot.rb} Work out tax - use Taxcalc.rb
{tcalc.rb} Tax Calculation Module for Mixin
{pat.rb} Delivery objects - postman sort
{mixdem.rb} Mixins in Ruby - a short demo

Module R202 - Ruby on Rails
(article) Ror - Ruby on Rails
{models_product.rb} How to validate a Product object
{controller_application_controller.rb} Controller General Helpers
{views_floor_stock.html.erb} View to list out what we sell, listed aisle by aisle
{greeting.rhtml} Some Ruby at the top of a view
{models_ailse.rb} How to validate an Aisle object
{views_layouts_floor.html.erb} Template that encloses all pages in the application
{config_routes.rb} Routing for product and aisle resources - configuration
{views_floor_addproduct.html.erb} The view for the add product page
{views_floor_index.html.erb} Home page for Ruby-on-rails sample application
{views_floor_addaisle.html.erb} The view for the "add aisle" page
{igot} Rails - application to display from Model, Controller and View
{ilib.rb} Hello Rails World controller
{db_seeds.rb} Seeding data for use when application is installed
{controller_floor_controller.rb} Our main shop floor controller

Module R203 - Installing and setting up Rails
(article) Ror - Ruby on Rails
{productlister_controller.rb} Controller for Hello Rails World
{index.erb} View template - hello Rails world
{seeds.rb} Seed data for product model
{product.rb} Hello Rails World, Model

Module R211 - RSpec
{rsx} Class testing with rspec
{tables_steps.rb} Steps for implementing test behaviou for restaurant tables
{rs001} First RSpec example (no cucumber)
{tables.rb} Definition of tables derived from behaviour and test specs
{testmatrix.rb} Matrix of tests with rspec
{tables.feature} Behaviour definition - for a restaurant table
{several.rb} Testing with multiple data values

Module R212 - Test::Unit
{pilot.txt} Test case data file
{quotation_steps.rb} Step definitions - using test::unit
{quotation.feature} Gherkin - A table of examples for a scenario

Module R221 - Introduction to Cucumber
{hello_steps.rb} How the behaviour is to be tested
{hello.feature} Feature description - in Gherkin for Cucumber
{station.feature} Scenario outline / table of example values
{second_steps.rb} Step implementation of second scenario
{third_steps.rb} Step implementation of third scenario - using RSpec
{greet.rb} Code to implement a behaviour
{station_steps.rb} Steps for scenario outline example
{capacity.feature} Feature - Scenario, Given, When and Then
{train.rb} Code to implement a behaviour / second example

Module R222 - Cucumber / web site testing with watir webdrivers and capybara
{tamarsteps.rb} steps for plym,tamar and gunnislake
{breakfast.php} First sample page to test
{hello_wat_steps.rb.hold} Tests - using Watir
{hello_sel_steps.rb.hold} Tests - using Selenium
{titleregister.json} Json sample
{hello_quotation.feature} Gherkin - Behaviour description
{tamar.feature} First simple connectivity test
{second_steps.rb} implementation tests for lunch application
{plymouth.txt} Sample output of running final example
{second.feature} Testing lunch requirements
{gunnislake.feature} features - back end JSON service
{first.feature} Simplest feature file
{framework.inc} include file for microPHP site for testing
{quotation_steps.rb} Step definitions for web site testing
{plym.feature} Feature - first test of lunches
{quotation.feature} Gherkin Behaviour for a web site
{lunches.php} Test Application for Ruby / Cucumber
{one_steps.rb} implementation of first features

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

S: Databases / the MySQL database

Overview S050 - MySQL - General
(article) Left Joins to link three or more tables
(article) Management overview of MySQL - background and Philosophies
(article) MySQL Extras
{sample_mysql_table} Create a table with duplicate records to remove as an exersize

Module S151 - Introduction to SQL and MySQL
(article) Management overview of MySQL - background and Philosophies
(article) Justification - MySQL v Oracle, Open Source v Commercial

Module S152 - SQL Primer as Used in MySQL
(article) MySQL joins - using left join and right join to find orphan rows
(article) Left Joins to link three or more tables
{make_dvd.sql} Create a database and table for a DVD collection
{tab2} Second table for advanced join demos
{loader.sql} Loading data from csv files
{seeds.mysql} MySQL example - table joins
{tab1} First table for advanced join demos
{pop_dvd.sql} Insert rows into sample dvd table
{sql_demo.sql} Adding and amending data in a database table
{joiner.sql} Create two tables, link them with left join
{linked.sql} Two tables ... an illustration of the different joins

Module S153 - Sourcing, Running and Configuring MySQL
(article) Management overview of MySQL - background and Philosophies
(article) Justification - MySQL v Oracle, Open Source v Commercial
(article) Load balancing and robustness - httpd, tomcat, PHP, Servlets, MySQL
(article) Windows - running Apache and MySQL from a CD

Module S154 - Designing an SQL Database System
(article) Mapping database rows to objects in a class
(article) Example - PHP form, Image upload. Store in MySQL database. Retrieve.
(article) When to denormalise your MySQL data
(article) Many to many table mapping (Pivot tables)
(article) Replicating servers in MySQL - Why and how
{books.tab} Book table
{docdata.sql} Data for design / complex join example
{pivots.tab} Pivot table
{pivot.sql} SQL to load book, author and pivot tables
{docjoin.sql} Select for design / complex join example
{docs.sql} Database and table setup for design / complex join example
{tabled.php} Display normalised MySQL tables on a web page
{sql} Table Design - Restaurants / Category / Line item
{just.php} Skeleton application - design / complex join example
{authors.tab} Author table

Module S156 - Interfacing Applications to MySQL Databases
(article) MySQL version 5, PHP version 5 and mysqli
(article) MySQL and PHP - enquiry tool for ad-hoc requirements
(article) MySQL and PHP - enquiry tool for ad-hoc requirements
(article) Interfacing applications to a MySQL database engine
(article) Accessing a MySQL database via a browser, Perl and CGI
{t1.sql} create tables for t1 demo
{mkexcel.php} Returning data from a database via a URL as an excel spread sheet in PHP
{mqxyz.php} Simple demo of PHP table from SQL
{t1.php4} PHP table insert into two tables / join / enquire
{mkexcel2.php} Returning data, opening Excel including formulas, from PHP

Module S157 - More MySQL commands
(article) Copying databases and tables in MySQL
(article) MySQL joins - using left join and right join to find orphan rows
(article) MySQL SELECT - JOIN versus UNION, WHERE versus HAVING, GROUP etc.
(article) Left Joins to link three or more tables
(article) When to denormalise your MySQL data
(article) MySQL Extras
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{perlit} 6 tables ordering system model - perl program
{agents} SQL statements for Agent and Property demo
{shopper} 6 tables ordering system model - Design and test in SQL
{agents.tab} Estate agent details - Trowbridge, Melksham, etc
{seeder} Data for join v left join demonstration
{rz} 6 tables ordering system model - running output
{homes.tab} Houses for sale - Trowbridge, Melksham, etc

Module S158 - GUI tools for MySQL
(article) MySQL and PHP - enquiry tool for ad-hoc requirements

Module S159 - MySQL 5 and PHP 5
(article) MySQL version 5, PHP version 5 and mysqli
{5,2,5,i.php5} Using PHP mysqli functions - a working example
{vlatesti.php5} How NOT to use mysqli - don't just add an i
{vlatest.php5} A simple example using PHP mysql functions

Module S161 - Data Access and Security in MySQL
(article) Copying databases and tables in MySQL

Module S162 - Replication in MySQL
(article) Copying databases and tables in MySQL
(article) Replicating servers in MySQL - Why and how

Module S163 - Stored Procedures in MySQL
{stp3} Simple stored procedure definition
{stp4} Stored procedure to return a result set
{seed.sql} Data to seed tables for stored procedure demos
{stp5} Stored Procedure taking a parameter
{stored6.php} PHP call to a MySQL store procedure that calculates / loops
{stored5.php} PHP call to a MySQL stored procedure that returns a result set
{twcrp.sql} MySQLdump sample - twcrp test database for store procedure use
{stp6} Stored procedure calculating from a query
{stored3.php} PHP call to a stored procedure to run a fixed query
{stored4.php} PHP call to a MySQL stored procedure passing a parameter

Module S200 - SQLite
{seeds.sqlite} SQLite example - table joins

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

T: Tcl, Tcl/Tk, wish and Expect

Overview T050 - Tcl, Tcl/Tk and Expect - General
(article) Why have Tcl/Tk been around for so long?
(article) Incr-Tcl - Object Oriented extension to Tcl
(article) The Typist and the Engineer
{day2} A good - but not perfect - early program
{myfuncs} File of function(s) for common operations
{distance_graph} itcl and tk together - full app
{day3} A good - but not perfect - second program

Module T201 - What is Tcl?
(article) Why have Tcl/Tk been around for so long?

Module T202 - Tcl Fundamentals
(article) Brackets and Braces in Tcl
{anno2} Comments - inline and continuations
{anno} A trivial Tcl program with comments
{hddh} Hexadecimal to decimal, and decimal to hex, in Tcl
{pricer} Completed simple application in Tcl - pricing tickets
{gr2} Double quote substitution in Tcl
{gry} Variables in Tcl - first use
{greet} Reading from the user in Tcl

Module T203 - Conditionals and Loops
{morelunches} Lunches - different places to go
{wipats} More flexible alternative to a switch
{diy2} The foreach command
{lazy} The ? : conditional operator
{dthrow} The switch command
{group4} deferred execution blocks with { and }
{lunches} Lunches for each day of the week
{ftoc} F to C conversion - exercise
{diy} The for command
{older} Conditional Operator ? and :
{flt} for while and foreach loops compared
{food} Alternative conditions - while loop
{group} The if command in Tcl
{minimax} Answer to practical - minimum and maximum
{wtot} breaking out of a Tcl loop
{wd} The while command in Tcl
{group5} if, elseif and else in Tcl
{ftoc2} Is water a solid, a liquid or a gas?
{validlunches} Lunches - validating user input within range
{globber} Switch - exact, glob and regex

Module T205 - String Handling in Tcl
(article) Analysing incoming data lines
{iconfinder} search for all icon references in a web log
{apfo} format and append commands
{match} String matching - using globing
{dm2} A further date match example
{stringman} Manipulating a string
{brax} Literally matching round brackets in regular expressions
{poco} Postcode identifier and string splitter
{ccat} lappend and concat - the difference
{ac_report} Complete example - Access log file analysis
{datematch} Matching a date using a regular expression
{rf} Opening and reading a file
{rf2a} Using scan's return value
{stringinfo} Getting information from a text string
{rf2} Using scan to get a field from a string
{hunter} Example of analysis of a log file
{rematch} String matching using a regular expression

Module T206 - Lists
{growth} station growth program
{os_letters.txt} Easting and Northing additions for OS grid references
{arx} how an lsort callback works
{fido} Open and read a file line by line
{stdlook} Look up Florida dialling codes
{acr2} Treating lines of data read from file as a list
{pk4.tcl} Generate a series packet sizes for network testing
{liimp} List basics in a nutshell
{distance_between} Finding distances between places base on OS grid references
{dt4u} extract field pairs from lines
{expand} Handling a list of command parameters
{slist} list manipulation with struct::list
{days} A list of days

Module T207 - Procedures and Variable Scope
{p5} Sharing a variable using uplevel - obscure!
{up1} Using upvar to effect a variable in the calling code
{doublit} Another upvar example for learners
{tied} Using an array of inputs as if they were local variables in a proc
{knots} Unloading an array of inputs as local variables in a proc
{dr2} Optional parameter in Tcl
{uv} Call by value and call by name
{cbn} Using upvar to call by name
{dresser} Changing a value within a proc and returning the altered value
{yetan} uplevel to store a value in parent
{whatandwhen} Exercise - please write the proc to complete
{gsc} The global scope
{pr3} loading a file of procs shared with other applications
{p4} returning a variable - RECOMMENED for passing 1 piece of data back
{another} upvar to return a second value
{addindemo} Sample code to complete - final exercise
{vardemo} Calling a proc with a variable number of arguments
{p3} Sharing a variable using upvar and call by name - RECOMMENED
{pr1} Defining a proc (command) and using it
{p2} Sharing a variable using upvar
{add2} Answer to final exercise
{wwanswer} First sample answer - "getnumber"
{scope1} Variable default to being local
{wwbetter} Better sample answer - "getnumber"
{p1} Sharing a variable using global
{uquery} Shared file of procs

Module T208 - Arrays and dicts
{ar_rail} Setting up an array and sorting the elements by key
{topskill} setting up an array of lists, sorting, listing out elements
{dict2} Conrol - using a string as a list
{mini} 2nd program using railutils
{ar2} Checking if an array key exists
{dict4} dict for
{arr_log_2} Selecting elements from an array - glob matching to keys
{nested} nested dicts
{ifinder} search for icon references; list icon names
{arr_log} Access log counter using arrays
{arr_log_3} Passing arrays in and out of procs - using upvar
{railutils} File of procs to do with station info
{rail_dict} Sorting a dict
{dict3} iterating through the keys of a dict
{ar1} First use of arrays
{dict1} setting up and get, dict
{dnicer} test program for station data
{dicdem} dicts - using the various subcommands
{au} Demo of use of upvar
{ifinder2} search for icon references and count them
{dla} list, array, dict
{stfinal} final exercise - array of dialling codes
{ar3} looping though an array with array get

Module T209 - File and Directory Handling
{disc_status} Piping input from an operating system command
{files} fileutil package in use
{rail} Data extraction and reporting from multiple files
{failer} Using catch to trap file open failures
{bigbelow} Find biggest file in or below a specified folder
{dnstab} Read a file, extract from it
{biggest} using glob to check all files in a directory
{filework} Report file statuses
{bigbelow.v2} biggest below - practical example that traps empty folders
{recent} List all files modified in the last hour
{multifile} Output to stdout and several files at the same time
{for_qa.tcl} Data reformatting example / course end tie together
{diary} diary data for for_qa script

Module T211 - What is Expect? Why use it?
(article) A Web interface for your Linux admin tasks
{e1} Simplest ping check via expect
{evening} Automated backup
{qp} Expect to automate a series of pings
{wuff} Expecting from a list (regular expression)
{linksandimages} Grab a web page, report all links and images
{xpx} quick ping around a series of hosts
{ftp1} First Expect example
{yap} Expecting from a list (expect block)
{plet.exp} Expect for Windows - ping a host and guess its distance from you
{e3} expect - do not grab indeterminate
{gup} Grabbing a log file and locally analysing
{e2} Ping via expect, echo back a value from the report
{ftp2} Expect with some error checking and decisions
{weblinks} Grab a web page and report all links

Module T212 - Expect Processes
{exp_ping} expect - multiple parallel pings, Red Hat Linux version
{pingle} parallel pings - Caldera Linux version
{tkpingle} Checking network continuity using ping, Expect and a Tk GUI
{mex} multiple processes through expect
{server.tce} Expect script, web server, CGI
{livetest.exp} Web based script - ping a series of remote hosts
{botget} parallel expect example - get robots.txt from several servers
{osx_tkpingle} Checking which machines are online - Mac OSX

Module T213 - Libraries, Packages and Namespaces
{nex} packages with and without namespace
{ns_yes} Saving variables in a namespace
{nsq} Adding a package to a namespace
{gpack.tcl} package goose - goes with dinpack
{twice} Using a package - without namespaces
{toes.tcl} Package to go with twice demo
{tpack.tcl} package chicken - part of dinpack demo
{legals.tcl} Definition of a package
{rules.tcl} Definition of a package with namespace
{ns_up} Variables saved between proc calls in the next code level up
{nsp} setting up and using a namespace
{ns_no} shows how variables are lost between proc calls
{tabby.tcl} a namespace wrapped in a package
{show.tcl} Defining a package
{2wice} Using a package that contains a namespace
{doubler.tcl} define a package to contain a namespace
{ns_exim} Namespace export and import
{packs} Loading a package
{updown} uplevel - performed in calling code variable space
{ns_y2} Counting proc calls using a namespace - shorter example
{dinpack} Using packages and namespaces together

Module T214 - Other Facilities in Tcl
(article) errors v exceptions
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{vtt} Tcl program that uses the trace command to report the manipulation of a variable
{fishing} exceptions in Tcl
{lick} Finding size of .gif image in Tcl - binary scan
{vt} Tcl program that manipulates a variable
{err1} Example of a Tcl program that fails
{netting} catch - catching error, and error message too
{times} proc coverage example
{edo} Running an external process in Tcl
{dunno} unknown command calls unknown proc
{firstline} Using catch to trap runtime errors
{err2} A Tcl program that uses catch to trap a run time error
{goalie} catching exceptions - Tcl style

Module T216 - Introduction to Tk
(article) Graphic User Interfaces (GUIs)
{tk_accesscount} Tcl/Tk - Access Log File counter!
{tk_h2} Report Date Information on a widget
{gui_2} Classis Tk structure - procs, widgets, geometry ...
{tk_hello} Tcl/Tk - Report Date Information
{udq} Widgets, Geometry Managers and Events

Module T217 - First Widgets, Geometry and Events
{tk_b4} Tcl/Tk - button states
{deferintk} Deferred execution can cause a problem in Tk
{tk_b3} Tk - attributes of a button
{tk_event} Tcl/Tk - Event demo
{colmat2} Sample answer 3 in development
{colmat3} Sample answer 3 - Completed layout question
{admin} Tk GUI to provide system state reporting box
{tk_wm} Tcl/Tk - First Frame
{colmat} Sample answer 1 - coloured labels and layout question
{tk_b1} Tcl/Tk - button test 1
{tk_b2} Tcl/Tk - button test 2

Module T218 - Geometry Managers
{tk_wh3} An example of the place geometry manager in use
{numpad} Laying out a numeric keypad on a grid
{tk_l4} Grid geometry manager - column weights to control resize behaviour
{tk_l2} Grid geometry manager, showing cell size via colour
{tk_wh2} Grid geometry manager - cells spanning multiple rows and columns
{tk_l3} Grid geometry manager, expanding cells via -sticky news
{tk_which} Grid geometry manager, using -rowspan and -columnspan
{tk_log} Grid geometry manager - first example

Module T219 - Drawing on Canvases
{tktext} text options in Tk - colour, font, size, centring
{can3} Demo of different graphic objects
{can1} Drawing on a canvas
{can2} Drawing shapes on a canvas and dragging them with the mouse
{can4} Line styles on a Tk canvas
{imgoncanvas.tk} Placing a GIF on a canvas
{histo} Histogram drawn on a canvas - generalised code

Module T220 - Frames and Other Topics
{tk_scale} Tcl/Tk - First Scales
{tk_fvar_2} Tk frames - flexibility of layout
{tk_ru2} Tcl/Tk - Are you sure window using a message widget
{clifflift} Tcl/Tk - Scales linked like a cliff lift
{willie} Check buttons - defaulting to be selected or not
{linedisplay} Display with frames, canvas, window manager
{tk_frames} Nested frames - first completed example
{tls} Scrolling a canvas (canvas, scrollbar, toplevel, frame, grid)
{sltvtl} Slider, text variable and pop up
{tk_fvar_1} Tk frames using variables to allow extra flexibility
{tk_rusure} Tk - popup box to ask "are you sure" written using Tk basics
{tk_sc2} Tk scales with variable feedback

Module T221 - Menus
{mb1} First menu button
{mb3} Menu bar system based on array or lists
{idletasks} use of update idle tasks to update the display
{mb2} Various options for menu buttons

Module T222 - Resources
{lookandfeel} Demonstration file of Tk resources
{resource3} Resources file for tk_res3
{tk_res3} Use of two files of Tk resources.
{bright} Resource file - answer to exercise
{skeleton} Template for resource exercise

Module T223 - Textish Widgets
{teditor} Simple text editor in Tk
{tktext} a Tk text widget used as a vehicle for custom text editing
{tktx2} Marks and tags and editing in a Tk text widget
{tkt} A Tktable is a tabulator widget in Tcl/Tk
{listbox1} Tk listbox example
{form} Form using Tk entry widget
{lbex} Sample answer - listbox to choose types of fruit.
{form2} Second form using Tk entry widget.
{listbox2} Tk second listbox example (code snippet only).
{tktxt} Tk - Text Widget - first easy example

Module T224 - Events in Tk
(article) Defining events including variable values in Tk
{tke6} Keysym Tester
{caneve} Binding canvas events and keys
{tke3} Button bindings to a single proc.
{tkbb} Button Binding example
{tke5} Button binding for all keys, down and up
{tke2} Events to toggle text on a widget.

Module T241 - Tcl on the Web
(article) Nasty Characters in Web Applications
{getpagejson} Reading json via http
{demoform.html} Demo form to submit to a Tcl handler -->
{getpage} Reading http from Tcl
{tcl_process.html} Form for data entry for formrep.tcl demo
{formrep.tcl} Using Tcl as a CGI scripting language - form collection
{tclcourse.tcl} CGI , Server side programming basics
{isitnz.tcl} web application - is it from New Zealand?
{scale.tcl} Sample Tclet to run within a browser
{tlet.html} Embedding Tcl in your browser (client side) -->

Module T242 - More on Expect
(article) The Typist and the Engineer
{tcenhance} Telnet wrapper using interact; provides filtering too
{engineer} send_human in expect
{immortal} Catching signals in expect
{multisigs} Trapping multiple signals in Expect
{typist} Second example of expect's "send_human" command.
{sslo} Send slow example - expect
{rupple} Expect - run rup on a named host
{subnet_test} Check a subnet for pingable systems
{pingabout} Expect to run ping on a named host; able to switch host during run
{chammy} Automated Logging In
{tctel} Telnet wrapper using interact

Module T243 - Using Tcl from C
{fullapp.c} C program that invokes a Tcl Interpreter
{fred} Demo Tcl for mytcl example
{fred_extended} Tcl used to demo extension with same command
{makefile} Makefile for C applications in this module
{secret.c} Run a Tcl script from an encoded file
{extend.c} Extending Tcl with C - an extra command written in C
{mytcl.c} Simplest call from C to Tcl - just a wrapper

Module T244 - Socket Programming
{kesclient} GUI (Tk) client which uses information provided by kesserv server
{tclserver} food server - pass on previous persons contribution
{kesserv} Tcl Server - read from a Linux device and serve information entered by TCP/IP

Module T245 - [incr-Tcl]
(article) index
(article) Loading incr-tcl into tclsh
(article) Incr-Tcl - Object Oriented extension to Tcl
{pet.itcl} itcl - second sample class
{hello.itcl} [Incr-Tcl] Demonstration
{inherits.itcl} Multiple inheritance and constructor calls
{animal.itcl} A simple class in [incr-tcl]
{film.itcl} [incr-Tcl] - Base class and two classes that inherit from it
{bigger.itcl} [Incr-Tcl] Demonstration 2
{animal2.itcl} class that loads Itcl into basic Tclsh
{petal} Example that loads Itcl into tclsh
{itlist} Using [incr-Tcl] to hold a list of objects
{exv} Multiple classes and inheritance demonstration
{weekend.itcl} [incr-Tcl] - Inheritance and Polmorphism - main file
{ootcl02} Creating and using objects, cget and configure
{find.itcl} List available classes in [Incr-Tcl]
{ootcl01} Creating and using objects

Module T246 - Tix Megawidgets
{tix004} Practical demo - Tix MegaWidget
{tix001} Tix Control widget demonstration
{tixfs} Tix File selection application
{tixtree} Tix - Tree of big files below a specified directory
{tixbunch} Showing a selection ot Tix Megawidgets
{tix003} Tix Demonstration of standard widget options
{tix005} Tix Control - feedback into widgets
{tix007} - mulitple feedbacks on Tix MegaWidgets

Module T247 - Advanced Regular Expressions
(article) Pattern Matching - a primer on regular Expressions
{sparkle} Sparse v Greedy regular expressions
{blob} Progressive regsub examples
{T247.tcl} Tcl in use for CGI scripting
{aretest} advanced regular expression match demo

Module T248 - A Review of Tcl and Tk Basics
(article) Brackets and Braces in Tcl
(article) What makes a good variable name?

Module T249 - The Tcltest Package
(article) Using Tcl to test a system with the tcltest module
{tt3.test} tcltest example that runs only if constraints are met
{ttrun} tcltest - an example running all the tests in a directory
{ttest} tcltest - first steps
{tt2.test} tcltest example using setup and cleanup blocks
{tt1.test} Test under tcltest, version 2

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

U: Lua programming and use

Overview U050 - Lua - General
{town_sim.txt} Specification for town simulation exercise, and data
{towns_output} Town Simulation - the program outputs ...
{tap.lua} include file to load data and functioanllity
{town_simulation} Main program - town simulation exercise
{towns_about} Overview of Town Simulation example
{towns.lua} Town simulation - town type definitions

Module U101 - Introduction to Lua.
(article) What makes a good variable name?
{simples} Read keyboard - calculate - output result
{stdo} Calling standard functions / setting up variables
{straightforwards} Read - calculate - loop - output
{lop} Testing to see if a fallback is needed
{moongreet} Hello Lua World
{ello} Commenting - line and multiline
{hello} Some variable types in Lua
{easys} Read - calculate - conditionals - output
{demo} Some Lua Basics

Module U102 - Numbers and the Math library.
{ludo} Comments in Lua
{vn} Variable naming in Lua
{ichange} Lua - integer changes 5.2 to 5.3
{larith} Simple string format example
{rnum} Reading from the keyboard, calculate and output
{prncr} io.write allows output with no new line
{furry} Lua basics - calculations, output and comments
{allfloat} All Lua numbers are floats
{vatty} Take the VAT back off a gross amount
{ccinit} Initialising Variables
{vars.lua} Lua Comments and Variables

Module U103 - Conditionals and loops
{swans.lua} Swan family - Lua
{meerkat} Lazy Operators
{clumpit} for loop termination
{tchart} for loop with start, end and step
{lloops} while and for loops
{exa} Loops and conditionals - exchange rate example
{whilly} Writing cleaner code without break or continue
{kz} Example of a for loop
{floo} for loop in which end condition changes
{runt} repeat until
{doco} Changing loop counts
{bpm} string.find v string.gfind
{ll2} while loop and repeat until loop
{clike} for loop with pairs and ipairs
{andor} Lazy and / or operators
{lsx} Lua for loop - termination
{wcd} Comparison of while and until loops
{lif} if, elseif, else

Module U104 - Strings and the String library.
{two} Checking a NUMBER has been entered
{ee} Excercise to print out exchange rate table
{kids} String formatting
{s2} Finding literal strings
{three} Wait until a NUMBER has been entered
{mlx} Single and multiline strings
{qbs} backslash specials in character strings and other basics
{stem} Basic String functionality
{kiddos} Spread money gift around a group of children
{moopark} Answer to excercise - Theme park takings
{sf} string.format
{gimme} Reading from the keyboard and string basics
{ul} Use of string.rep
{splitter} Using string.find and string.sub to split

Module U105 - Tables and the table library.
{taba} Tables as associative arrays
{party} Read and store data until we get a blank line
{tinies} Reading a file and creating a table
{asort} Sorting an Associative table
{clo_demo} User defined sorting in Lua
{t1} mixing associative and normal in table
{sorting} Sorting tables
{tat} whole table v single member, pairs v ipairs
{synsug} . v ["...."] v insert
{clone} Duplicate (clone) a table
{moretab} Getting the minimum number from a table
{spjo} Split and Join a string into / from a table
{ph} pairs, ipairs and #tablename iteration
{tabo} Tables - some basics
{ooco} Assignment of a table - by reference
{duh} What is in a table?
{imex} implode in Lua
{cleversort} Sorting with a user defined routine
{sf3} Read file, split line, tables of tables
{settab} Set up a table, output in reverse

Module U106 - Functions.
{exrate} exchange rate example as a function
{dress3} Code loads at run time not compile time
{dress1} The problem of default global
{cl2d} First Closure demonstration
{yik} Need to use local to reduce cope of variables
{fcv} Dynamic code loading
{lazy} lazy operators / short circuit evaluation
{funtwo} global, local and call by value
{aaa} A table of functions, calling each in turn
{isd} An adaptive function in Lua
{brvret} break v return
{symet} Symetric Functions
{loadthese.lua} functions to include within a test harness
{size.lua} sample module - exercise answer
{fav} Using tables and functions within them
{slct} Returning multiple results
{vargs} Variable number of arguments
{dress2} declaring variables local to avoid global issues
{ex106} excersize - functions
{tabasnamed} function call via table
{owsort} how sorting via callbacks works
{funone} Function calling and definition in Lua
{summer} variable arguments - a function to add up numbers
{selit} variable number of parameters and the select function
{testharness} Loading functions from a file
{rmv} returning multiple values
{mj} A function to take a lot of parameters or a table
{lomore} variables local to a block
{fsr} Flexible Function Calls

Module U107 - Object Orientation - the Lua way
{metatiny} Metatables - the mechanism
{oblet} Hello Object World
{animals.lua} Using a metatable to define print, <, etc
{visit.lua} definition of visit objects
{index_123} __index and __newindex
{anim_o1.lua} Tables to associate functions with data
{metamid} Adding user methods via a metatable
{meta1} preparations for metatables - this is just a table
{newCube.lua} Definition of a class in Lua
{metasmall} Metatable to change a table characteristics
{alog} Program to use visit objects
{dibdab} We can keep funtions in a table too
{north} Comparing dot and colon
{Cube.lua} Definition of a cube object
{trains} introducting metatables
{cat} adding in extra behavious
{kitten} Setting up tables and printing them out - control
{overload_add.lua} Operator (+) and to_string overloading, Lua
{meta2} Simple use of a metatable to create a class
{service_12} table for data and functionallity
{trains_control} pre-metatables
{rail5} a table for each station
{Dice.lua} Definition of a dice object - Inheritance
{couples} Moving towards Lua objects - Metatables
{metapetite} Overriding an operator on a table
{meta3} creating and using a table of tables("objects")
{zoo.txt} Sample data file for animal demo
{xlog.lua} Access log - exercise framework
{train_objects} using tables as classic objects
{tabby} Define special behaviours ...
{ii5} bus and train tables, and printing metatable
{lottaob} Polymorphism in Lua - table of objects of different types
{cuboid} Illustrates use of a class of objects
{acobj} The OO paradigm applied in Lua
{meta4} redefining operators
{Sphere.lua} Definition of a sphere object
{obtable} Polymorphism in Lua - table of objects of different types

Module U108 - Pattern matching
{lpm} Anchoring and delimiting patterns
{iiapc} Pattern matching in Lua (not Regular Expressions)
{patplode} iterating through a string, choosing a pattern
{split} split or explode in Lua
{stratch} String Pattern Matching
{slander0} Pattern matching - SLOW code
{dls} Pattern substitute, pattern match and extract
{slander1} Pattern matching - FAST code
{pcis} Pattern match and extract - a postcode

Module U109 - Modules
{sf5_main} first program to use shared utilities
{myutils.lua} utility functions for multiple examples
{logex} Second program to use shared utilities
{Distance.lua} Namespace definition in Lua
{httpcalls.lua} A module to handle web access log records
{j2} ... then moving logic out to a module
{exc} Excercise on loading functions from a file
{strictcure} How strict.lua can trap globals
{MyLib.lua} where do modules / namespaces load from?
{skills.lua} Sample answer to exercise - an include file
{mymod.lua} First Lua Module
{useit} Program to use a module
{joinery} Separating out detailed logic into separate functions
{gdist} get distance between points - uses module
{MyLib2.lua} where do namespaces load from?
{withstrict} How strict.lua can trap globals

Module U110 - Input / Output
{zz} Some file reading fundamentals
{info.txt} Soccer ground data for Lua and Python example
{emmas} Looking for (and counting) email addresses in a log file
{loganal} Log file analysis
{log_counter} Command line and data file use / full course example
{flapper} file read and write - line by line
{filescan} Finding the latest log file and analysing it (popen, ls)
{flipper} keyboard and screen read and write
{boring} File open, read
{skill_lister} Processing a file of records, splitting each record
{grounds.lua} Soccer grounds - Lua

Module U111 - Trapping and handling errors.
{errc} Error handling on file open
{gp2} Assert - test a condition and exit with your error if it fails
{splut} trapping Lua errors - assert
{gp1} trapping an error via pcall
{splot} trapping Lua errors - nil and error
{protectedcall} pcall to trap errors in a lua function call
{tbp} Stack Traceback
{wonky} error checking through pcall
{gp0} 'Control' for error trapping - failing example

Module U112 - Other Standard Library features.
{timtimer} Time / date and timers
{mathfuncs} Maths functions and random number generators
{dlisting} Directory listing
{getos} What is my host operating system (in Lua)
{lt5l} convert 3 letter month abbreviation to number
{globals} Global variables via _G
{ons} What is in os module?
{basics} List all tables and contents

Module U113 - Installing Lua
{inst} Install procedure for LuaSocket

Module U114 - Threading and Coroutines.
{crcr} coroutine basics
{cosy} Illustration of Coroutines
{inco} Passing parameters to coroutines
{charmoves} coroutine for game player movements
{datafeeder} using a coroutine as a generator
{controller} setting off a number of timers
{coro} simple coroutine example
{nocoro} NOT using coroutines - filling a table then using it instead
{ff2.lua} Multiple coroutines in parallel use

Module U116 - Network Lua.
{webclient} Using the socket library to read a web page
{hello.lua} Web Page via CGI in Lua
{formone.lua} Web Page via CGI in Lua
{autobrowser} Using http client library to retreive a web page

Module U117 - Other Lua Subjects
{passing.lua} Lua code that calls a C function, passing params and returning value
{fromlua.c} C code callable from Lua - Mk 1
{candy.c} C code callable from Lua - Mk 3
{top.lua} Lua program that loads and runs C code
{getos} What is my host operating system (in Lua)
{luapassing.c} C code - callable from lua with parameters passed
{wrapper.lua} Lua script to load and run C functions - Mk 3

Module U118 - Resources.
{envelope} Command Line parameters in Lua
{lugra} Using the gd module and library

Module U198 - New in Lua 5.2
{gotolua} Lua goto - introduced in 5.2
{bitwise} The bit32 library
{wrt} Weak references - set up and practical use

Module U199 - Programming Standards in Lua
{shortplatform} postoptimised Lua example
{loadthese.lua} Functions to include within a test harness
{station.lua} pre-optimise

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

W: Web site programming / techniques

Module W501 - Introduction to Web Site Structure
{robots.txt} Telling robots to bypass certain URLs

Module W502 - HTML Document Anatomy
{el001.php} XHTML Page
{el005.php} XHTML Page with PHP, dynamic reload, style and image
{el004.php} XHTML Page with PHP, dynamic reload and style
{codes.php} ASCII codes for HTML special characters
{el003.php} XHTML Page - PHP clock, auto reloads every minute
{el002.php} XHTML Page with PHP (current time and date)
{el006.php} XHTML Page with PHP, dynamic refresh (metatag), style (css) and image (jpg) that resizes to browser window via Javascript

Module W504 - Not Just Text
{picshow.php4} Random image using PHP
{frime.html} elementary formatting and images
{3wi.html} Multiple images in a piece of HTML
{bgdemo.html} Tiled background (random image)

Module W506 - Forms
{smith.html} target page for a link
{furst.html} A first page with links to other pages and scripts (via form)
{esq.php} A first script - just echo inputs

Module W507 - Frames
(article) Using Frames with PHP
{framed_dpd.php4} hierarcy navigation - PHP with frames
{dpd.php4} hierarcy navigation - PHP without frames

Module W510 - Executable Content
(article) Running CGI scripts in Apache Tomcat
(article) Running SSI (Server Side Include) scripts in Apache Tomcat

Module W602 - Client Side Technologies
{smonth.php} Disabling a form input until another element has been completed
{third.html} Checking plugin availability
{first.html} Simple Javascript variables, and an alert box
{eight.php} Disabling a form input until another element has been completed
{six.php} Validating user entries at the browser
{second.html} Conditional in Javascript - wording based on browser
{nine.php} Javascript, PHP and MySQL used together - training example
{dynamic.html} Dynamic Image (Using Javascript)
{geoloc.html} Reporting back your latitude and longitude
{fourth.html} reporting platform information via Javascript
{jskl.html} Javascript event handling on a form (textarea)
{fifth.html} Providing different links depending on which browser
{seven.php} Changing one Select menu based on another selection
{terry2.html} Roll over an image to change another image
{isflash.html} Sensing whether Flash is available on a browser

Module W603 - Server Side Technologies
{clockpage.php4} PHP clock refreshes every minute

Module W611 - Actionscript
{Buttontop.as} Actionscript to server interaction
{button.html} HTML shell to load a flash movie
{squish.php} PHP script that shows server side interaction
{ButtonBottom.as} Interaction from Actionscript to server and database
{isflash.html} Sensing whether Flash is available on a browser

Module W701 - Introduction to Cascading Style Sheets
(article) Introduction to Cascaded Style Sheets
(article) Elements of Cascading Style Sheets
(article) Cascading Style Sheets - laying out your page
(article) Cascading Style Sheets - putting it all together
{casc1.html} Cascading style sheets - a simple cascade example
{styles01.css} Style sheet - external files, first example
{csel.html} Using an external style sheet file
{cshello.html} First example of the application of style

Module W702 - Elements of cascading style sheets
(article) Introduction to Cascaded Style Sheets
(article) Elements of Cascading Style Sheets
(article) Cascading Style Sheets - laying out your page
(article) Cascading Style Sheets - putting it all together
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{dte.css} flexibility in text styles
{dtext.html} text demonstration of styles
{dhs.css} style sheet applied to a heirarcy
{dshello.html} different types of element selector
{dheir.html} document heirarcy
{dfsr.html} relative font sizes using percentages
{ddisp.html} block and inline display attributes

Module W703 - Page layout with cascading style sheets
(article) Introduction to Cascaded Style Sheets
(article) Elements of Cascading Style Sheets
(article) Cascading Style Sheets - laying out your page
(article) Cascading Style Sheets - putting it all together
{tabin.html} Standard tags v classes v tables
{e01.html} Laying out elements of a page
{epl.css} Style screen for positioning demos
{eoscr.html} Overflow and scroll - cascading style sheets

Module W704 - Cascading style sheets - putting it all together
(article) Introduction to Cascaded Style Sheets
(article) Elements of Cascading Style Sheets
(article) Cascading Style Sheets - laying out your page
(article) Cascading Style Sheets - putting it all together
{hex2.html} with tags embedded in page
{hex_direct.html} Direct code - older style tags
{hex4.css} Style for example 4
{hex3.html} Page layout included within style
{hex1.html} Direct Coding
{styled.html} Styles within page
{hex4.html} page layout is within style sheet
{hex3.css} Style sheet for example no. 3
{direct.html} Direct coding
{holder.html} holding page

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

Y: Python programming and use

Overview Y050 - Python - General
(article) Python Fast Start
{wool} Generator function to prevent need for intermediate list
{dfg.py} Hiding algorithms in functions - 'encapsulation'
{p4l} Use of xrange rather than range to avoid huge intermediate lists
{d2} ways of looping through a list
{neville} Simple log file analysis
{tupperware} Trying to modify a tuple
{sheep} lists of functions, lambdas, callbacks (posh/flexible ways to use functions)
{pipo} Running an operating system command via a pipe
{monty} First 'real' application
{zzz} transport in Ireland
{demo2} first real application - simple calculation
{ooe} generatings lists of 365 elements to convert day of year to month and day
{extend.py} Decorator, lots of __ methods, formatting, and more
{costings.py} A file of functions for 'from' or 'import'
{demox} How EVERYTHING is an object - even functions!
{fd} Some early list demonstrations!
{ld} Lists, lists of lists, mutable and immutable
{wac} Web Access Counter - parsing big data file
{grabbage} Reading a web page 'as if it was a local file'
{dd} loading functions from shared file
{re1} Regular Expression to extract data from log file (and dictionary analyse)
{darling.py} file to be included to bring in application globals
{peeps} Converting a file on disc to a list of objects in memory
{nuform} Some examples of the % (string formatting) operator
{accts} First steps in Object definition and use
{mlog} Tracking start and end records
{together.py} Station growths
{demo} early python demonstration - using, re-using, copying variables
{dooper} A one-liner to print a file's contents
{fdo} File read and write - program 'samples' every 10th line of a log file
{rv1} Using a generator to avoid a large intermediate list - control
{animals.py} Sample class with test harness too
{filer} Reading a file line by line (good for huge files)

Module Y101 - Introduction to Python
(article) Python Fast Start
{new_ok} Printing strings in Python 3
{hello.py} "Hello World" in Python
{fred} Hello world - Python v Java
{reform} Simple data manipulation
{qx} Singapore Dollar Answer
{melksham.txt} Reform 0 sample data
{stations.py} Samsung example
{d4_1} Factory demo
{scope} Python is "default local"
{ok} Printing strings in Python 2

Module Y102 - Python - Fundamentals
(article) Python Fast Start
{i2.py} input with built in coercion
{tqs.py} Strings several lines long
{const.py} Constants in Python
{leadollar} Output - with and without spacing
{inout.py} raw input
{pout.py} More about print statements
{yraw} input v raw_input
{repo.py} Operator precedence in Python
{y102a} Answer to end of module exercise
{pasco} Pascals Triangle
{o2} Stripping leading and trailing space
{oper.py} Maths operations in Python
{constr.py} Constant Strings
{cli} Running a python program without having to type in "python" every time
{pygo} Deleting a variable v deleting its contents
{trimmer} early example of formatting output
{comment.py} Commenting your program
{demo} Simple first steps - prompt, read, calculate, report
{henry} Conversion, Coercion, and 2 forms of print

Module Y103 - Conditionals and Loops
(article) the while and else structure
{tab2.py} loop controls - break and else
{sintea} Singapore Teapot - exercise answer
{if1.py} an if statement in python
{isy} is or == in Python
{swans.py} Swan family - Python
{bp} Exchange Rate Conversion answer
{if3.py} Nested blocks
{combo.py} Combining conditions with and and or
{table.py} a loop in python
{cally.py} Days and months exercise - answer using methods
{eqt} Comparions
{groupsave} Groupsave ticket calculator
{shand.py} Shorthand operators
{shin} with as and in
{if2.py} if with a block
{george} if / elif / elif - how it works
{goal.py} when is a number "false"?
{python_switch_case} Alternative to switch, case and default
{sintea2} Singapore Teapot - exercise answer (2)
{lenny} First Loop
{three.py} if statments - various ways of writing them
{ken} single and multiple statement blocks / conditionals
{b1.py} if - elif - else conditional
{if4.py} if, elif and else

Module Y104 - Lists and Tuples
(article) Python List, Python Tuple, Python Dictionary
{lcopy.py} Copying a list (or rather - copying a reference to a list)
{f2} Copy list v Clone list
{da1} Using the power of lists to reduce loops (control)
{revq2} Parking exercise - mark 2
{yuk} some excercises with lists
{pf} using + and re-assigning
{shuffle.py} Shuffle a list of numbers
{pe} using +=
{dmy} Two alternatives - day of year -> day of month and month of year
{mutt} mutable v immutable
{tu1.py} First use of a tuple
{lc} List Comprehensions
{myrange} How a function takes different shapes
{3slice} List slices - 1 2 and 3 value forms
{m2} Alternative answer to exercise 1
{daze} Using the power of lists to reduce loops (actual)
{revq3} Parking exercise - final sample answer
{utils.py} solving exersise using a function
{inlist.py} The in operator - is a value in a list
{cally.py} Days and months exercise - answer using methods
{litu.py} Converting a list to a tuple
{tessapy} All possible pairs from list
{li3.py} Use of range to give list indexes
{repeat.py} + and * operators on a list
{lister} 4 different ways of parsing a list
{cmp.py} Comparing lists
{sh2.py} Shuffle a list of numbers using supplied shuffle method
{weekwurk} using function from exercise
{revq} Parking exercise - mk 1
{li2.py} for loop to handle each element of a list
{lo} list manipulation
{staloop} looping throught a station file
{slice.py} list slices
{backuds} Going through a list backwards
{menu.py} A list of lists - works like a 2 D array but better ;-)
{lp1} Whole list or just elements of list?
{li1.py} List - first example
{months} Answer - excercise 1 - day and month numbers
{li4.py} range to go through each element of a list

Module Y105 - Functions, Modules and Packages
(article) Python Calling functions and methods. Using objects and modules.
{gen_control} Not using a generator - each runs to completion
{poc.py} Scope of variables - some samples
{gubbins.py} A bunch of functions in a module
{gentwo} generator - multiple yields and no loop!
{fm} use of functions from a module
{yum} Brining in elements from a namespace
{repeater} retaining a variable from one call to the next
{qv3} alternative example using mystuff.py
{qv2} Example that uses mystuff.py
{pf} Defining and calling a function - postal delivery order
{ststst} function calling - options demonstrated
{sheep.py} A Lambda function - one line function definition
{params.py} Optional parameters, and variable number of parameters
{thing.py} demonstration of a Python Package - the module
{pgob} Using objects to pass in (and out) of generators
{extrastep.py} importing a name from a module into the current namespace
{gen2} Using a generator function to provide an iteration
{colin.py} A tiny module
{firstclass} List of fucntions and callback demo
{noa} Mandatory, optional, ordered and named parameters
{sweetdream} Another example of a module reuse
{slumbermore} Good structure of named blocks of code
{mod_demo.py} Program that uses the module in local.py
{electric.py} a generator function - carries on where it left off at previous call
{silksheets.py} Functions that we'll share between applications
{sysdemo.py} use of a standard module (sys)
{acsh2} Dynamic function definition
{avg.py} Demonstration of variable scope in Python
{drought.py} Assorted function call examples
{geom.py} Full module, documentation, test harness, static variables
{fat.py} A second program that uses shared functions in mod2.py
{taxi} Exercise answer - net and tax from gross amount
{flook.py} Program to use a module and the attributes of its functions
{restaurant.py} code that DEFINES a restuarant table
{places.xyz} Sample data for jenny demo
{mystuff.py} functions, statics, test code, doc strings ...
{jen.iter} Generator with multiple yields
{vargs} vargs in Python
{ffx} Dynamic function definition
{local.py} File of functions to be loaded by other examples
{dfg} Using a generator to process a big file
{jenny} Sample data for jenny demo
{apers} static variables in Python?
{mapfunc.py} Use of the map function to transform a list
{locvar.py} Local and global variables
{requests.xyz} Sample data for dfg
{f1} more options with modules and functions
{gen} A generator - two code branches both live
{bundemo} demonstration of a Python Package
{factor} recursive example - factorial
{dbc} Functions are objects
{mod2.py} A module with doc strings and attributes defined
{m1} map to transform and filter to select from a list
{snoresleep} A further Good structure of named blocks of code
{fun.py} definition and use of a function
{recur.py} Recursion - when a function calls itself
{mutton} Anonymous variables and subs and lambdas
{genex} Generator v regular function
{passenger} Calling program - sample answer with separate module for functions
{ststar} * and ** in function calls
{myne.py} Module with documentation string and test harness
{yf} Using a generator
{taxcalcs.py} Collecting function parameters
{tax.py} functions to work out tax and net from gross
{better} An extra x - range v xrange and readlines v xreadlines
{chezme} code to use a restaurant (table)
{cardy} Main program - methods and attributes from a module
{dream} Good structure of named blocks of code

Module Y106 - Object Oriented Python
(article) all variables are objects
(article) Python Calling functions and methods. Using objects and modules.
(article) copying an object - copy the reference
{c1} Defining and using a class - early steps
{forum.py} Class of records - forum log file analysis
{wr_test.py} Test harness for writer class
{drink.py} definition and testing of a class
{webhit.py} Web Server access - directory report
{longer} Saving a lambda in a variable and other tricks
{pyobs} test program for containers in junkroom
{pets} OO sample - definition and use of two dog objects
{typelook} looking at an object type
{writer.py} A simple class - constructor, object method and class method, no inheritance
{glue} Shows danger of using direct access to a member variable
{animal.py} Sample class (exercise) - animal
{rr2} Object equality, identity and sameness
{mute} mutable v immutable objects
{containers.py} Shapes used for items in junkroom
{survey.py} Work in progress - survey analysis
{tabby.py} table, round table and rectangular table
{aper2} retaining data objects for iteration
{cubbyhole} Simple class - with a class (static) variable
{dirStream.py} Object using generator - directory file traverser
{wr2.py} Test application for "writer" class
{creatures} Exercise answer - program to test class animal

Module Y107 - Dictionaries
(article) Python List, Python Tuple, Python Dictionary
{file_2nd} Analysing blog accesses
{timberpull} multiple values at same key
{dfp} Optional, list and dictionary params
{ssold.py} Python 2.7 - sorting a list
{pred.py} Illustration of a program that would benefit from dictionaries
{counter} counting server accesse
{d2.py} Looping through all the elements of a dictionary
{soccer_py} Soccer - league table, old v new point system
{pocket.py} dictionary with object keys - example
{ss1.py} Python 3 - sorting with sorted
{zip-it.py} Joining 2 lists into a dictionary
{d1.py} Defining and looking up in a dictionary
{u1} data file with duplicated lines
{coin.py} Class used by dictionary with object key example
{od3} dict with digit strings as keys (python 3)
{pres.py} Is a key used in a dictionary?
{pyset} listing words using set
{u2} data file with duplicated lines
{visitors} Analysing visit lengths to web site - using cache
{pycounter} counting words using dictionary
{d3.py} Can I sort a dictionary?
{uniquise} data file with duplicated lines
{marie.data} data file with duplicated lines
{nx} Dictionary of objects - exercise and sample answer
{pax_month.py} Unique visitors / visited pages per month
{topsk} counting occurrences in a file
{slowcoach} Analysing visit lengths to web site - no cache
{od} dict with digit strings as keys
{soccer.data} Soccer League table
{uniwords} finding words by their count in a data file
{snork} Variable scope when sorting a dictionary by value
{setup} Simple use of dict
{wp2} dict - members with same key
{u0} data file with duplicated lines')
{d3_3.py} Can I sort a dictionary?
{ss2.py} Python 3 - sorting a list

Module Y108 - String Handling
(article) Analysing incoming data lines
{lit} Checking the type of characters entered
{poundland} formatting a pound sign and a #! line
{gift} Share 10000 pound between 1 to 10 children
{backtick} Conversion to a string with the backtick operator
{nf} Formatting - time and money using the % operator and format method
{seq2.py} Using the replace method on a string
{strf} The String formatter
{cori} Multiline string
{clinput} reading and handling command line options
{sequence.py} Handling a string as a list of characters
{Pythoners} Parse a file checking each line against a criterion
{listmethods} List all methods available on an object
{formatting} formatting - old and new ways
{p3.py} raw and regular strings
{young.py} revision - string basics
{fares.py} Distortion of bus prices due to concessionary fares
{fhand} Unicode text string
{tliser} Exercise answer - formatting prices and aligning columns
{seqrev.py} translate, reverse and join - reversing dna sequence
{chunky} Splitting at a literal v splitting at a regex
{cli.py} Command line handler function in Python
{twoforms} Two forms of formatting
{mypi} Strings, raw strings, triple quoted strings
{visitors} Web site - population penetration
{irish_grid} Ordnance Survey Ireland - Grid Reference Conversion
{kid} Formatting strings / multiple use of % operator
{splitcare} Comparison of regex and string splitting
{reginald} Regular expression with comments in it
{earlier} formatted printing variety - format method
{cli_withopts.py} Command line handler function in Python
{qre} Split - regular expression v literal string
{pyform} Python Formatting via the str.format method
{bejo.py} split and join
{grab} Regular Expression - Maya strings
{ifi} generating text with character
{taxform.py} Formatting output - floats, ints, etc
{inflate} Search for regular expression and replace
{rexy} writing understandable regular expressions
{reggie.py} Regular Expression Overview
{regex} Search and find, replace, and replace with result
{fence.py} Fencepost problem and solution
{pys} Strings - how to write them
{funsub} Substitute for a regular expression

Module Y109 - Exceptions
(article) errors v exceptions
{wholehog.py} static variable - initialise via exception
{pushit.py} Handling multiple exceptions types
{attempt} full traceback log from exceptions
{syntax.py} Example of a syntax error
{topstats} Exception, Lambda, dict
{ui} Read an integer - validated
{kx} Answer to exercise
{railx} Busiest and quietest stations
{maffs.py} static variable in Python
{duff} Try, except, else and finally
{prog} Status line. Also trapping ^C
{gwrong.py} Using excpetions to allow *some* user errors
{runtime.py} Example of a runtime error
{stopc} trapping ^C in Python
{ranger.py} passing exceptions back to calling code
{ouch} try, except, finally example
{grabot.py} Read from a URL resource with error trapping
{deltemp.py} Use of pass to provide an empty block
{trapper.py} Use of try and except
{insist.py} try and except within a loop
{dbnover} Events spread over a number of units
{sometimes.py} Example of a piece of code that sometimes crashes
{bug.py} Program with a bug!
{oy} Raising Exceptions yourself
{ewhy.py} Using excpetion for fail-safe error handling

Module Y110 - File Handling
{costhuge.py} Reading a file line by line
{sp} running OS subprocesses in Python
{flr} Fixed Length Record to CSV
{filechex} File checks - is it a directory, when was it modified
{grabpage.py} Read from a URL as is reading from a file
{grounds.py} Soccer grounds - Python
{is.xyz} Inflation data - UK - annual factors
{analysethatbusstop} import CSV data into dict
{j2} using a generator to source data from a file
{tablog.py} File overwrite and append in python
{dsa} polymorphism in action
{majorcooker.py} Handling huge data
{pinorder.py} List a directory sorted by age of object
{pstat.py} Checking whether a file exists, and things about it ...
{fff} Jumping around an input file (random access)
{jdemo} json and csv handling
{fgfg} Improved version - program to handle data recently appended to a log file
{n2} Find the title of a web site
{lost.py} Trapping a non-existant file error
{file_first} Short file parser
{coster.py} Read whole file, report on lines matching a pattern
{dirStream.py} Object using generator - directory file traverser
{inflate} Inflation Calculcator - what would it have cost?
{wac1} Read file into list and process each line
{widem} using with to limit the scope of a file handle
{sys.py} Disc space free within an application
{dmoz.py} Parsing a large file, looking for matching lines

Module Y111 - More on Collections and Sequences
(article) Python List, Python Tuple, Python Dictionary
(article) User defined sorting - what is a callback?
(article) copying an object - copy the reference
{indemo} Sorting a dictionary?
{scenario} Encapsulating changes in a function
{2dli.py} List - multiple dimensions
{sal} Sorting in a non-standard way
{slices} list slices - revision
{cuber} using a callback to map a list
{sby_sname} Sorting by surname
{deepcop.py} List - deep copy
{unamsort.py} Sorting of a list of strings - user routine ignoring case
{lat.py} copy reference and shallow copy
{coplist.py} List - copy through assignment
{uip2.py} Counting in a dictionary, and sorting
{copy_levels} alias, shallow copy and deep copy comparison
{fortan} A list of lists (a matrix?)
{shallowcop.py} List - shallow copy
{dsd} Python equivalent of Schwartzian transform
{lirev.py} List - revision
{furlist.py} Further methods that run on lists - looking things up
{rails_dict} Sorting and subsorting into your own order
{namsort.py} Natural sorting of a list of strings
{p162} Sample answer - module exercise
{coldem} Collections - initial setup and reference

Module Y112 - Objects - Intermediate
(article) Inheritance
(article) all variables are objects
{pets.py} Simple base class, subclass and polymorphism
{obob} Inheritance demo
{bandb.py} definition of subclass bandb of accom
{thems} Polymorphism demonstration - uses cat and dog objects from hound.py
{timetable.txt} data for pub.py
{addload} Illustration of how the + (add) operator is really defined
{mcx} metaclass setup and use
{mi} Multiple Inheritance
{yum} Define your own add and print methods
{meerkat} Decorator v modifier; static methods
{looob2} class exercise - add 200 count please
{accoms.xyz} Sample data for accoms program
{whm_real} Factory method
{hound.py} Definition of two objects to demonstrate polymorphism
{fcl.py} program to show use of "person" class
{person.py} Class with Body Mass Index method
{ufd} Sample data for person.py demo
{cbx} Callbacks in Python
{teapot.py} Class heirarcy in a single file
{ob1.py} definition and use of property with lambda
{taball} all together table example
{pysin} Singleton class
{goat.py} Defining a class of goats and overriding addition
{ub} Utility method to construct different objects
{c1.py} Classes, subclasses, static method, test harness
{cho} New style class - with inheritance
{boxex} Overloading (redefining) addition and how a variable is printed
{triang.py} definition of a property
{alog} objects within objects - access log hits and visits
{cl_n.py} New Style classes and inheritance
{tr1.py} class, subclass, utility, factory, etc
{xmc4.py} Polymorphism and inheritance with Christmas and Easter Characters
{restex.py} Class example - restaurant
{end_of_universe.txt} Data for p4.py example
{bq} backquote / backtic operator
{cl_o.py} Old Style classes and inheritance
{personx.py} OO demo - multiple classes, inheritance, test program
{travel.py} static methods, overloaded operator, propertys, inheritance and polymorphism ...
{clever} nested decorators
{tabledata.csv} Data file for Python 3.4 inheritance model
{tu2} Sample program (2) using c1.py demonstration classes
{tables.py} Python 3.4 tables interitance and factory demo
{hotel.py} definition of subclass hotel of accom
{pub.py} wholesale factory method - read file to list of objects
{accom_finder.py} Sample application using hotel and bandb
{m_i_m} Mixins Complete Example
{overload_add.py} Operator (+) and to_string overloading, Python
{accom.py} Accommodation base clase
{people.py} Class, subclasses, test harness. Inheritance, Poymorphism and Overloading
{dayzend} using with to open and close an object
{travel.txt} Data file for "tu2" example
{cho.py} new style classes, as module with inheritance and test harness
{ttest.py} calling an attribute [property]
{mult_inherit} Multiple Inheritance Complete Example
{p4.py} Factory, comparator, inheritance etc
{ting2} static (class) methods via decorators
{id} getitem and getslice
{tuse} Sample program (1) using c1.py demonstration classes

Module Y113 - Python and SQL databases
{pyjson_kvcache} Using our JSON service from Python with key / value cache
{alch002} SQL Alchemy - connect, inserts and queries
{napreader} reading from http://www.wellho.net/data/wiltshire_busstops.csv
{orm_sqlite} sqlalchemy orm with sqlite demo - Python 2.x
{alch001} SQL Alchemy - connect and first query
{selector.py} Simple selector (MySQL database of 168,000 records)
{kvcache.py} Cacheing class object / sqlite3
{logger} Local MySQL test prior to running examples
{databases_python} sqlite3 - connect, create, insert, select
{prepared_statements.py} MySQL / Python (3) - with prepared statements
{inserts.py} MySQL / Python (1) - connect, drop, create, insert, select, drop
{multi_resultsets.py} MySQL / Python (2) - connect, drop, create, insert, select with iterate, drop

Module Y115 - Additional Python Facilities
(article) Python threads - a first example
(article) Pattern Matching - a primer on regular Expressions
(article) Interfacing applications to a MySQL database engine
{py_mysql.py} MySQL to Python using MySQL Connector
{re2.py} Stripping spaces
{refun} evaluating a net list in EQN format
{re1.py} Regular expression - first example
{hostcounter} Extract data from huge flow. Save and restore via Json
{myuser.py} class for use in pickle / unpickle demo
{syscommand} Running an operating system command in Python
{relib.py} Some common regular expressions
{emma} Regular expression then split
{sql1a.py} MySQL to Python using MySQLdb
{flist.py} All the files in a directory - which is largest?
{again} Looking for part of a string that repeats later
{tim} Some time handlers
{retest.py} Regular Expression test engine
{mar_in.py} Loading in an object saved via the marshal module
{penv.py} Python environment variables
{cpick} Store an object via cPickle
{psplit} Splitting at a string v splitting at a regular expression
{timestuff.py} Some time handling
{logs.json} Json data for http://www.wellho.net/resources/ex.php?item=y115/hostcounter
{curr27} From Python 2.7 - currency alternative
{bench.py} Find largest 5 files in or below a directory
{cunpick} recover a pickled object
{cli.py} Report on command line parameters
{gad1.py} Create a Gadfly (SQL) database and insert data
{class_v_static.py} Decorators - your own, plus @classmethod and @staticmethod
{pocohunter} Looking for postcodes in a string
{re3.py} Find email addresses in line of text
{eo2.py} Scanning log file for instability
{python_mysql_web.py} Python, MySQL, CGI (Web) board
{get_os.py} Get Operating System information
{currency.py} Formatting a currency using Regular Expression
{hostfilter.py} Extract host computer information - strip comments with regular expressions
{gad2.py} Running an SQL query - Gadfly
{sql1.py} Hello MySQL World in Python
{sqlite.py} Sqlite3 / Python 3 example
{pysql_another} Using a MySQL database - select across multiple tables
{subp} Subprocess module - replacement for os.popen
{re4.py} Regular expression split over several lines
{mar_out.py} Marshal converts an object to a string

Module Y116 - Applying OO design techniques and best practise
(article) What makes a good variable name?
{novel} Traffic survey - Python and Objects
{constant.py} Constants in Python
{counter} inheriting from a standard data type object
{t6} inherited and associated / composite objects
{story} Traffic survey - Python without Objects
{t7} completion of example t6 - add factory, comparator, etc
{sob} Data for novel and story examples
{ddd.py} Good practise tips and documentation string
{cincontrol} Caching design pattern / Control
{tree.py} Recursion and special collections in Python
{cin} Caching design pattern

Module Y117 - Already written modules
{fgrab} FTP transfers
{pyjson} Using our JSON service from Python
{jflow.json} Data for jdemo3
{pyjson_with_cache} Using our JSON service from Python with cache
{butter} Regular Expressions
{jones} Random - really and replay
{dates} Date and Time - short example
{avx} Command Line Parameters
{xz} Day of week, month of year names and locales
{imgsize} interpretting binary data
{jdemo3} finding a specifically keyed within json structure

Module Y118 - numpy, scipy and matplotlib
{mpl5.py} Two plots on a canvas - left to right
{mpl4.py} Two graphs on a canvas - top to bottom
{simplegraph} Straightforward line plot using huge data
{mpl2.py} Plotting a user data set
{npx2} alternative scheme for loading binary data
{mpl3.py} Plotting multiple user data sets
{graph.py} Graph x,y,z via numpy from a Json file
{npx} Loading binary data from file into numpy array
{prepare.py} Extract data for graphing and save to Json
{nphw} Basic objects in numpy
{gr3d.json} Data for graph.py - formatted json
{tog1.py} Loading and storing numpy objects
{aa} Tuple and list to numpy array conversions
{mpl1.py} Hello matplotlib world
{npgd} Loading data into numpy
{xyz.py} 3d and contour plots through numpy and matplotlib

Module Y150 - Python Development Tools and Environments
{lookin} using dis to look inside code

Module Y151 - Python & XML
{minid3.py} Useful extraction with minidom
{sax_xml2.py} Extracting information via SAX
{sax_xml1.py} First SAX based xml handler
{minid5.py} Modifying a document structure with minidom
{xsltprocess.py} Process an XML file through an XSLT Stylesheet in Python with libxml2 and libxslt
{minid1.py} parse and check with minidom
{simpull.xml} XML data for simsax and sidom demonstrations
{simsax.py} Parsing XML stream for pertinent data - SAX
{xmlparserdemo} command line params (argparse) and xml (ElementTree)
{simdom.py} Reading XML into memory structure - DOM
{images.xml} XML data used by demonstration program
{minid2.py} report structure with minidom
{image.xsl} xslt program for Python / xslt / xml demo
{sax_xml4.py} More sophisticated SAX output example
{sax_xml3.py} Attributes and text extracted via SAX
{minid4.py} further extraction including data with minidom
{python_rss} Grabbing an RSS feed in Python

Module Y199 - Python - Fast Start
(article) Python Fast Start
{for1} for loop
{kwlist} What are the keywords in Python?
{fast1} Fundamentals of Python - variables and output
{fast2} Fast start example 2 - inputs and strings
{while1} While loop
{requests.xyz} Sample data file used in source examples
{if1} If, elif and else
{tr3.py} base and subclasses, decorator, data from file, factory

Module Y200 - Python - using functions, objects and modules.
(article) Python Calling functions and methods. Using objects and modules.
{lenco} functions v methods
{appy} Calling a method which alters the object it runs on
{aug13_train.py} Inheritance, factory, etc
{biff} Some built in functions
{fromlist} bring module into current namespace
{importlist} bring module into its own namespace

Module Y201 - Python for DataMunging and System Admin
(article) Log file analysis - short Python example
{noisesource} Spike solution - Data extraction and reporting
{sbs} Data Munging Example
{rqsummy} Splitting a line at any white space
{spamdata.txt} Data for spam signup demo
{lfan} Demonstration program - many aspects of Python

Module Y202 - Python on the Web
(article) Nasty Characters in Web Applications
{martin.py} Translation coster - CGI script
{pybrow} Browser client
{piddle.py} CGI, Python, Web server, HTML - reporting server time
{hsapp1.py} Web application mark 1 - 3 pages, sessions, hidden fields
{template.htp} Template for simple web example
{pyhello} Embedding plain text app on the web
{tellmewhen.py} Running a Python program through CGI
{pyserv} basic web server
{martin.html} Translation coster - HTML form
{python_mysql_web.py} Python, MySQL, CGI (Web) board
{inf.py} Simple web demo - produce form, complete form, act on data entered to form
{place.py} Python / CGI - read from a form, run an application, fill in a template to respond
{jhandle} Python 3.4 urllib urlopen and json
{visitor.py} Analysing a web access log file
{hsapp2.py} Web application, Mark 2 - 3 pages, sessions, hidden fields
{hsdemo.htp} Template for hsapp1 and hsapp2
{pytop} Analysis of current web log file

Module Y204 - The TkInter GUI
{tki_demo} Practical Tkinter GUI
{tki_hello} Hello TkInter World

Module Y205 - Further uses of Python
{gui1.py} Hello GUI world (Tkinter example)

Module Y206 - Python and the Qt GUI
(article) Graphic User Interfaces (GUIs)
{qupdown.py} Altering a label as a result of button presses - Python Qt
{pyqthello.py} Hello World - Python and Qt GUI
{Voter_qt.py} Python 3 / PyQt 4 - simple voting GUI
{hq3.py} Python Qt - Widgets, Geometry layouts, slots and signals
{hq2.py} Python / Qt. Popup windows, Button Widgets, slots and signals

Module Y207 - wxPython
(article) Graphic User Interfaces (GUIs)
(article) Solution Centre - all article listing
(article) Solution Centre - all article listing
{wx02.py} Simple menu with modal "about"
{however} Principles of a GUI - app frame
{delegates} Simple complete application - wxPython
{logreport.py} Log file analysis is a wxPython GUI wrapper
{wx03_02.py} wxPython text editor with open, save, etc
{wxx3} GUI with feedback (Boxsizer placement)
{boxsizer.py} Vertically arranged widgets with a BoxSizer
{wx04.py} Panel and event handler
{demo1.py} Simple "hello world"
{wxexample_01} principles a GUI - with code
{wxreal} Putting it together - food selector
{sizer1.py} Geometry Manager - First Example
{mymodel.py} Model for wx Framework demo
{wx01.py} Application with 2 windows
{Voter_wx.py} Python 2.6 / wxpython - simple voting GUI
{wxexample_02} Event handlers to provide feedback
{wxx2} GUI with feedback (manual placement)
{wxexample_04} Final example - GUI interface to rail data
{wxphello.py} Hello wxPython world
{wxexample_03} Single event handler for many buttons
{wxpfsbe.py} Status bar with events on wxPython frame

Module Y209 - Python GTK.
{hwpgt.py} Python GTK Hello World
{gtkfeedback.py} Python GTK - feeding back into the GUI
{multibut.py} Python GTK - events, layouts, quit button

Module Y212 - Code testing, patterns, profiles and optimisation.
{test_mathfuncs3.py} Pytest / class test with setup fixture
{utes.py} Simple unittest demonstration
{mathstuff.py} function for Pytest to test
{railway.py} Test class for profiler
{testtrain} Unit test - Python 3 / train class
{mtbf.py} MTBF class - overwrides + and *, and associated unittest
{mary.py} Web server log access class
{train.py} class for testing in doctest
{dtf.py} doctest - an example that triggers a failure report
{tdd_3} Test Drive Developement - extending unit testing
{hound.py} Object definitions for profiler desmonstration
{test_mathfuncs.py} pytest - simple example with setup
{test_mathfuncs5.py} Pytest - multiple setup fixtures
{trytravel} unittest for travel.py classes
{railstats.xyz} data for profiler demo
{mzz} Mocking - setting up and calling a mocked method
{stawrong} bound method running on a class FAILS
{stameth} Static Method in Python (all versions)
{thems.py} Polymorphism demonstration - used to demonstrate the profiler
{profdemo.py} using and running the profiler and stats analyser
{makefile} Makefile - for a python test and build distribution project
{tdd_0} Test Driven Development - step 1
{Combotest} Combining Test Suites - unittest
{first.py} Test program for use in build demonstration - first principles
{stawithat} Static Method in Python (Decorator - 2.4 and later)
{test_mathfuncs2.py} Pytest with setup fixture
{stations.py} station class - for testing demo
{third.py} Test program for use in build demonstration - with unittest
{utdemo} unittest for Transport group of classes
{tdd_1} Test Driven Development - multiple objects
{dtxpass} Doctest / Python 3 - passing example
{tdd_2} Test Driven Developemnt - using unittst
{travel.py} inheritance, factory, decorator, comparators, static methods, caching, etc
{utd2} Unit Test (2) for transport classes
{test_mathfuncs4.py} Pytest - chaining test no setup repeats
{dtxfail} Doctest / Python 3 - failing example
{dta.py} doctest - a longer example
{second.py} Test program for use in build demonstration - with doctest
{logtest} Unit test for mary class
{test_hello.py} Hello Pytest world
{setup.cfg} Sample config file for Pytest
{utes2.py} unittest nesting demonstration
{Stationtest.py} Test for stations class
{dec01} decorator - to log function calls
{annie.py} Test driven exercise
{transport.py} Sample class - Test Driven Development
{Traintest.py} Tests for myTrain classes
{staboth} Static Method in Python (classmethod - all versions)
{myTrain.py} train class to be tested
{dt.py} doctest - a clean example

Module Y300 - Python 3 - What is new, what's changed and why
{rsy} Python 3 using classes of objects for data filtering
{london.3} Python 3 - converted from Python 2.6 example
{jba1} Class definition and use - Python 3
{jba3} Construct and Populate methods separated
{print_2.py} print in python 2
{git_3.py} Generator in Python 3, range replaces xrange
{py3only.py} Python 3 - ONLY - Hello World
{cheznous} simple inheritance example - Python 2.7 and Python 3
{git_2.py} Generator and xrange - Python 2
{jba2} Class definition and use with a static method - Python 3
{input_2.py} inputs in Python 2
{george} Integer v float arithmetic
{py2only.py} Python 2 - ONLY - Hello World
{john} input and raw_input - Python 2 and Python 3
{input_3.py} Inputs in Python 3 - input replaces raw_input
{jba_poor} Poor class definition and use
{print_3.py} print in Python 3 - print now a function
{pyboth.py} Python 2 and Python 3 - Hello World
{london.2} Python 2.6 for conversion to Python 3

Module Y301 - Class Interaction - an example
(article) Log file analysis - short Python example
{timetable} timetabling tool - Graham Ellis, 17th February 2018.
{taps.py} Tap simulation example (Mk 1) in Python
{waterflows.py} Multiple classes interacting - tap simulation example (Mk 2) in Python

Module Y302 - Threads - What why and how
(article) Python threads - a first example
{alive} Checking hosts one by one
{fastandfull} Threading - to Ping a complete class C subnet
{kicking} checking hosts in parallel threads
{fullrange} Threading to ping 254 IP addresses in parallel batches

Module Y303 - Python Network Programming
{browser.py} Demonstration of simple http client (browser)
{t3} pipe and fork - communicating with your children
{ftpgrab} FTP from Python, checking exceptions
{server.py} Simple tcp/ip server using sockets
{t2} Parallel processing with forks
{udp_server.py} UDP Server
{udp_client.py} UDP client
{ftpthread} FTP from within a thread and monitoring it
{probo} Reading from a remote host via http as a stream
{table} Basic mechanism of forking
{read_robots} Reading from a web resource in Python
{to_me} Talking direct to a socket

Module Y305 - Optimising Python
{dave} load a list then iterate through it
{longjob} Long job, showing interactive monitoring
{jenny} iterate through a file using a generator
{visitors} Analysing visit lengths to web site - using cache
{slowcoach} Analysing visit lengths to web site - no cache

Module Y306 - The Django web framework
{2_views.py} model to view transforms in Django - phase 2
{base_site.html} Modified look and feel for admin app
{urls.py} url to application mapping
{15_0.visitbase.htp} Django 1.5 - Story 0
{3_views.py} Django integrated view
{15_0.settings.py} Django 1.5 - Story 0
{views.py.001} First view in Django - checking URL mapping
{3_urls.py} url mapping - URLs without extensions
{15_0.views.py} Django 1.5 - Story 0
{views.py.002} Transforming a model to a view in Django
{z_complete} Complete set of Django files
{settings.py} Django settings for oursystems project - phase 1
{15_0.urls.py} Django 1.5 - Story 0
{3_integrate.html} Template for Django lesson 3 (tag language)
{2_urls.py} Django - URL to view mappings - phase 2
{15_0.firsttemplate.htp} Django 1.5 - Story 0
{15_0.indextemplate.htp} Django 1.5 - Story 0
{2_index.html} Template - django, stage 2
{2_settings.py} Django settings for oursystems project - phase 2
{models.py} Definition of Django managed tables
{admin.py} Register the System class with the admin app

Module Y307 - The Flask micro webdevelopment framework for Python
{thirdform.html} template including session report
{secondform.html} Form and response - Jinja2
{third} Flask with routing and templates
{flask_test} Running Flask with template in unittest
{rrw} Flask first form
{flask_app_test} Running Flask unittest with form and POST method
{features.html} features of jinja2 for rrt demo
{firstform.html} Form - Jinja2
{allstations.html} jinja2 MVC inner template - station index page
{basestation.html} jinja2 MVC - common outer template
{stations.py} Flask Station Navigator - Router and controller for MVC demo
{fltest} Running Flask in unittest
{astation.html} jinja2 MVC inner template - iindividual station page
{rry} Flask - form that stores answers in sessions
{second} Flask with routing
{rrc} Flask with request - response cycle
{first} Hello Flask World
{base.html} base html - supertemplate - for rrt
{rrx} Flask - form that picks up answer
{station_model.py} model - first flask MVC demo
{rstats2014.xyz} data for stations.py demo
{rrx.py} Flask form demo / tuned to also work under unittest
{requestresponse.html} template for request / response demo
{rrt} Flask - Jinja 2 introduction
{person.html} Template for "third" flask example

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

Z: Miscellany

Subject Z501 - Public Transport - Rail
{station_usage_0506.csv} station entrances and exits - 2005/6
{station_usage_0708.csv} Station entrances and exits 2007 - 2008
{station_usage_0607.csv} Station entrances and exits - 2006/7
{station_usage_0910.csv} station entrances and exits - 2009/2010
{railstats.txt} Railway Station codes, locations, usage 2004 - 2010 (+2011 added 29.3.2012) (+2012 added 4.4.2013)
{station_usage_0809.csv} Station entrances and exits - 2008/9
{station_usage_0405.csv} station entrances and exits - 2004/5
{stationtables.tsv} Rail stations - postcode, OS and lat/long data source
{station_usage_0203.csv} Station entrances and exits - 2002 - 2003

Subject Z600 - History
(article) Time Line - growth of our Open Source training

Subject Z700 - People
(article) Portrait of the Author of PHP

Subject Z801 - Pettifog
(article) Phone and fax to 070059 numbers in the UK

top - top of pagenew - new articles not yet categorised
A - Linux, Apache httpd and Tomcat C - C and C++ programming 
G - General Training Topics H - PHP programming and techniques 
J - Java programmming including Web M - Well House Manor; hotel and events 
P - Perl programming and use Q - General programming subjects 
R - Ruby programming and use S - Databases / the MySQL database 
T - Tcl, Tcl/Tk, wish and Expect U - Lua programming and use 
W - Web site programming / techniques Y - Python programming and use 
Z - Miscellany end - end of page

Source - [recalculated]

1 unpublished comment pending on this page

edit your own (not yet published) comments

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/resources/globalindex.html • PAGE BUILT: Sun Oct 11 14:50:09 2020 • BUILD SYSTEM: JelliaJamb