A website about Lisp programming and related topics
Various web development frameworks in Lisp will be described below.
The site is built using UnCommon Web, or UCW in short.
To avoid any compatibility problem and to have peace of mind, I use some stable albeit older instances of the recommended dependencies, which can be found at these places:
The following patches have to be applied:
This is the original version of UCW, which uses the Dojo toolkit, provides some Ajax features and some elaborate examples. By laziness, I still use an older release, which you can obtain with that command:
darcs get --to-patch="add safari support to import-ajax-received-xhtml-node" http://common-lisp.net/project/ucw/repos/ucw_ajax/You have then to apply these patches.
As the original UCW authors of ucw_ajax are no more involved in it's development, some UCW users have stepped forward to continue the work. At the beginning of 2009, Drew Crampsie has released a very simplified UCW branch called ucw-core. To avoid having to test every patch published, I use an older release, which you can obtain with that command:
This host is running Debian Squeeze (i386), using sbcl, mod_lisp and apache2. See the sbcl section as to why I don't use Squeeze sbcl package.
This host runs in the same sbcl instance 3 web servers:
(setf it.bese.ucw:*inspect-components* t)several of your Web sites may be affected.
Out of the box ucw-core is slightly incompatible with ucw_ajax, and can't exist along with ucw_ajax due to name collision. But if you take care of renaming the ucw_core packages, you can run them both in the same Lisp instance. How to do that is explained here.
Live examples of the ucw-core demo and manual examples:
# The root of paths to your static content DocumentRoot /var/www/lisp-site <IfModule mod_lisp2.c> # we let apache2 know where to contact UCW LispServer 127.0.0.1 3000 "Lisp" # and by default everything is handed to UCW SetHandler lisp-handler # except: <LocationMatch ".*\.(css|jpg|gif|png|js|ico)$"> SetHandler none </LocationMatch> <LocationMatch "/(files|icons)/.*$"> SetHandler none </LocationMatch> </IfModule>which has to be put in the configuration files of apache2.
Depending on your Web browser, some demos from the web site running ucw_ajax may not work exactly as expected; this is due to the very old Dojo version used by ucw_ajax. Common culprits are the "Dynamic Form demo" (you are thrown back to the main menu) and the time/date chooser (doesn't appear graphically).
In general, I am not sure all demos work as expected, but I must say that I don't understand them all either...
For security reasons, I had to modify the administration demo, which gives access to a repl.
By applying all the above patches you will clone my system, but you have also to get an accordingly correct directory structure. If /var/www/ucw-site/ is the apache2 DocumentRoot, you will need the following one:
/var/www/ucw-site/: -rw-r--r-- 1 34 Mar 3 00:29 robots.txt drwxr-xr-x 2 4096 Feb 14 00:49 shared-counter drwxr-xr-x 2 4096 Feb 14 00:49 admin drwxr-xr-x 2 4096 Feb 14 00:49 l10n drwxr-xr-x 2 4096 Feb 14 00:49 static lrwxrwxrwx 1 61 Feb 13 23:31 tal -> .../ucw_ajax/examples/wwwroot/tal /var/www/ucw-site/shared-counter: lrwxrwxrwx 1 9 Feb 14 00:49 static -> ../static /var/www/ucw-site/l10n: lrwxrwxrwx 1 9 Feb 14 00:49 static -> ../static /var/www/ucw-site/admin: lrwxrwxrwx 1 9 Feb 14 00:49 static -> ../static /var/www/ucw-site/static: lrwxrwxrwx 1 52 Feb 13 23:34 ucw -> .../ucw_ajax/wwwroot/ucw lrwxrwxrwx 1 53 Feb 13 23:34 dojo -> .../ucw_ajax/wwwroot/dojo -rw-r--r-- 1 2822 Sep 14 2007 examples.css -rw-r--r-- 1 3638 Sep 14 2007 favicon.ico
And finally my apache configuration stanza is here.
A Web framework in Scheme, with a nice look: http://hop.inria.fr