The site is statically created using several scripts, which are based on an
outline file, source files (which are html excerpts), and
directories of lecture files. Each lecture file contains an html
table row. The lectures are then gathered to lecture collections
by creating symbolic links from the main lectures directory to
other directories.
The Lectures Data
For each lecture, a file is created, containing a table row which
describes the lecture. Past lectures are kept in directory
lectures,
and future lectures in
future.
When a lecture is given, it is moved from the future directory to
the lectures directory.
The lectures are sorted according to topics. Each topic has a
directory, which contains symbolic links to files in the
lectures directory. For example, directories
kernel,
programming,
network,
security,
util,
and advocate. Each such directory
has a matching file, which containes the heading of the lectures
page, for example util.1.
future and lectures differ from those collections: lectures is the actual data base of all the lectures (no symbolic links!). future is itself a symbolic link to lectures/future, and it also holds real files, and not symbolic links. So beware, you who wishes to delete those!
The Scripts
- make_site.pl
- Takes as arguments names of files ending with htm, and
combines them in a given
an outline. It creates matching
*.html files, in a sub directory called gen (which stands for generated files).
The script sets the
title of the page according to the heading of the *.htm
file. The usual usage of the script is
./make_site.pl *.htm
- combine_external.pl
- Combine lecture lists from external sources using means such as RSS
feeds. Done using Gabor Szabo's script:
read.pl.
- combine_lectures.pl
- Takes as arguments names of
directories containing lectures,
with matching heading stubs, and combines them to a *.htm
source file, using the following combination (given for a
collection of lectures called "collection"):
- A heading stub, called collection.1.
- A standard stub, table_open
which opens the table of lectures
- The lecture table rows, as listed in directory
collection.
- An ending stub, lectures_lists,
which contains the links to other lecture collections, as
well as closes the table
The collection.htm file (which of course uses as a stub later on for the make_site.pl script) is created in the current directory.
- gen_index.pl
- is used to create
a listing of the source directories. This is done to bypass the http server blocking directory listing. Thus, anyone can see how this site is built.
- make_friendly
- Simply verify all haifuxmasters can edit all the lecture file.
The Outline
The
outline.html file contains a
table, whose left cell is the menu, and its right cell contains
the page, coming from a stub. The outline contains various
reserved strings, which are replaced by parts of the stub:
- InsertTitleHere is replaced by the name of
the project, hard-coded in the make_site.pl script, combined
the heading of the stub.
- InsertHeadHere is replaced by the heading of the stub
- InsertTextHere is replaced by the rest of the stub.
The outline uses the haifux.css style.
The outline includes a button to check the html validity of the page, using the great service w3 validator provides.
The Stubs
Each of the stubs, for example
index.htm, must
contain in its first line a
< h1>
heading. This will
be transformed into a title (without any tags it may contain),
and into a heading (withthose tags). the rest of the stub needs
to be an html ecerpt, namely standard html, as should appear
within the body of the document.
Combining it all together
In order not to forget anything, the whole procedure is glued together using the
make_everything shell script.