<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vkurup</id>
	<title>AOLserver Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://panoptic.com/mediawiki/aolserver/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vkurup"/>
	<link rel="alternate" type="text/html" href="https://panoptic.com/wiki/aolserver/Special:Contributions/Vkurup"/>
	<updated>2026-04-25T18:52:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Sites_That_Run_On_AOLserver&amp;diff=4933</id>
		<title>Sites That Run On AOLserver</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Sites_That_Run_On_AOLserver&amp;diff=4933"/>
		<updated>2006-03-30T15:54:28Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is (a probably incomplete) list of sites that run on AOLserver.  Some you will recognize, some you probably won't.&lt;br /&gt;
&lt;br /&gt;
Note: Please add entries in the following format:&lt;br /&gt;
* Site name | Version | URL | description (optional)&lt;br /&gt;
&lt;br /&gt;
In order to appear on this list, the server '''MUST''' respond with a &amp;quot;Server:&amp;quot; header in the HTTP response which indicates that it is running AOLserver, and what version.&lt;br /&gt;
&lt;br /&gt;
The following is a list of sites running some version of AOLserver at AOL:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| AOL.COM || AOLserver/3.4.2 || http://aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Netscape || AOLserver/3.5.5 || http://home.netscape.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Digital City || AOLserver/4.0 || http://home.digitalcity.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| AOL Mail || AOLserver/3.5.9 || http://webmail.aol.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Moviefone || ArtBlast/3.5.4 || http://www.moviefone.com/ ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These are non-AOL sites that also use some version of AOLserver:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;tabulardata&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- class=&amp;quot;header&amp;quot;&lt;br /&gt;
! Site name !! Version !! URL !! Description (optional)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.1.x'''&lt;br /&gt;
|-&lt;br /&gt;
| the CodeMill || AOLserver/4.1.0 || http://www.thecodemill.biz || host of the #aolserver IRC logs[http://www.thecodemill.biz/services/aolserver/irc/]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 4.0.x'''&lt;br /&gt;
|-&lt;br /&gt;
| [[Panoptic Computer Network]] || AOLserver/4.0.10a || http://panoptic.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| NS_SHUTDOWN || AOLserver/4.0.10a || http://www.nsshutdown.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| OpenACS || AOLserver/4.0.9 || http://openacs.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Creative Commons || AOLserver/4.0.8 || http://creativecommons.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Volunteer Solutions || AOLserver/4.0.8 || http://www.volunteersolutions.org/ ||&lt;br /&gt;
|-&lt;br /&gt;
| jongriffin.com || AOLserver/4.0.5 || http://www.jongriffin.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Salsa Blanca || AOLserver/4.0.5 || http://www.salsablanca.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Kurup.org || AOLserver/4.0.10 || http://kurup.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Seven Sisters Trading || AOLserver/4.0.3 || http://www.7-sisters.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| AIESEC.net || AOLserver/4.0 || http://www.aiesec.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| Don Baccus Photography || AOLserver/4.0 || http://donb.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| M³ Beratungsgesellschaft || AOLserver/4.0 || http://www.m3-beratung.de/ ||&lt;br /&gt;
|-&lt;br /&gt;
| photo.net || AOLserver/4.0 || http://www.photo.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| WhatsThisIP.com || AOLserver/4.0.10 || http://whatsthisip.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Treffpunkt || AOLserver/4.0.10 || http://www.treffpunktsystems.com/ ||&lt;br /&gt;
|-&lt;br /&gt;
| Uptime || Aolserver/4.0.10 || http://uptime.openacs.org||&lt;br /&gt;
|-&lt;br /&gt;
| Myturl || Aolserver/4.0.10 || http://myturl.com || tinyurl clone&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.5.x'''&lt;br /&gt;
|-&lt;br /&gt;
| OneWeek || AOLserver/3.5.10 || http://oneweek.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vitamist Spray Vitamins || AOLserver/3.5.6 || http://www.vitamist.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Anchor Baptist Church || AOLserver/3.5.0 || http://www.anchorbaptist.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Blue Ridge Amateur Radio Club || NaviServer/2.0 AOLserver/3.5.0 || http://www.radioclub.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Irish Tribute || AOLserver/3.5.0 || http://www.irishtribute.com/ || IrishAbroad's tribute site for the WTC dead and missing&lt;br /&gt;
|-&lt;br /&gt;
| online.ie || AOLserver/3.5.0 || http://www.online.ie/ || Irish news portal&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.4.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Polska.pl || AOLserver/3.4z4l || http://www.polska.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| AMTDA || AOLserver/3.4.2 || http://www.amtda.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| Away.com || AOLserver 3.4.2 || http://www.away.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Bayt.com || AOLserver/3.4.2 || http://www.bayt.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Onet.pl || AOLserver/3.4.2 || http://www.onet.pl/ || &lt;br /&gt;
|-&lt;br /&gt;
| Techspex || AOLserver/3.4.2 || http://www.techspex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| University of Hawaii Athletics || AOLserver/3.4.2 || http://uhathletics.hawaii.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Vivtek || AOLserver/3.4.2 || http://www.vivtek.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| unresponsive.net || AOLserver/3.4 || http://www.unresponsive.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.3.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Akoor || AOLserver/3.3.1+ad13 || http://www.akoor.com/ || a cultural french quiz site&lt;br /&gt;
|-&lt;br /&gt;
| Bitzi || AOLserver/3.3.1+ad13 || http://bitzi.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Caltech || AOLserver/3.3.1+ad13 || http://www.caltech.edu/ || &lt;br /&gt;
|-&lt;br /&gt;
| Greatest Networker dot.Community || AOLserver/3.3.1+ad13 || http://www.greatestnetworker.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Infogettable.net Backgammon || AOLserver/3.3.1+ad13 || http://backgammon.infogettable.net/ || &lt;br /&gt;
|-&lt;br /&gt;
| thedesignexperience || AOLserver/3.3.1+ad13 || http://www.thedesignexperience.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 3.2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Investsberbank || AOLserver/3.2 || http://www.isb.ru/ || Joint-Stock Bank &amp;quot;Investsberbank&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| MyWorkoutProgram || AOLserver/3.2+ad12 || http://www.myworkoutprogram.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | '''AOLserver 2.x'''&lt;br /&gt;
|-&lt;br /&gt;
| Asimba Trainer Pro || NaviServer/2.0 AOLserver/2.3.3 || http://www.asimbatrainerpro.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| Fitrex.com || NaviServer/2.0 AOLserver/2.3.3 || http://www.fitrex.com/ || &lt;br /&gt;
|-&lt;br /&gt;
| WGCR Radio || NaviServer/2.0 AOLserver/2.3.3 || http://www.wgcr.org/ || &lt;br /&gt;
|-&lt;br /&gt;
| British Cattle Movement Service || NaviServer/2.0 AOLserver/2.3.3 || http://www.bcms.gov.uk/ || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also, every website on this list is should be using AOLserver as well: http://openacs.org/community/sites/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
&lt;br /&gt;
'''Why MUST?''' Some people turn that off as part of their security principles. A known bug in Version 4.x would allow an attacker do simply grep through the following list. Could we please take that into consideration? How many sites would, e.g., introduce .adp pages just to get it on this _huge_ (irony) list?&lt;br /&gt;
&lt;br /&gt;
''If anyone takes &amp;quot;security through obscurity&amp;quot; seriously enough to obfuscate the Server: header that's returned, then they also shouldn't want to be included on this list for the same reasons, so that people don't know they run AOLserver.  Everyone else is free to advertise their sites here to try and ensure they get picked up by web server surveys like Netcraft, et. al.''&lt;br /&gt;
&lt;br /&gt;
Ok, good point. You're perfectly right. Maybe I was just annoyed by being deleted from the list without explanation about the reason (which was added later). But why reject sites that don't expose the Server header for whatever reason? It is very easy to test that a site is running AOLserver (as easy as testing if a bug exists, of course). Why should we insist on detailed versioning?&lt;br /&gt;
&lt;br /&gt;
''It makes maintaining the list easier.  It'd be annoying for folks to add sites to this list and claim they run AOLserver, and then three months later the site switches to Apache.  Who has the time to go poking and prodding to do server detection?  It's easy to automate a script that asks &amp;quot;do I get a Server: AOLserver/xxx in the HTTP response?&amp;quot; and have it automatically keep the list fresh, which is what I currently have and run periodically.  If folks running Apache/IIS want to falsely report AOLserver, that's annoying because the list will be inaccurate, but at least AOLserver will get the credit for the sites.  :-)''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Sites that claim to run AOLserver 3.x, because the person who entered it into this Wiki assured it at that point in time. It may happen that the site runs Apache when you visit it and that may result in immediate pain, suffering or death. You have been warned!'''&lt;br /&gt;
* removed&lt;br /&gt;
&lt;br /&gt;
''The links on the pages look awfully Vignette CURL-like.  Is this site really running AOLserver?  How can you prove it?''&lt;br /&gt;
&lt;br /&gt;
How does a label in the header prove it? But we had this already. I started this rubric ''Sites that claim to run...'' to go around it. But I have absolutely no problem to remove all my sites (including the ones who have the header) from this wiki page in order to satisfy this principle.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Useful_Links&amp;diff=4932</id>
		<title>Useful Links</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Useful_Links&amp;diff=4932"/>
		<updated>2006-03-30T15:12:42Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are a list of links to useful resources for AOLserver.&lt;br /&gt;
* TCL Performance Hints Page [http://mini.net/cgi-bin/wikit/348]&lt;br /&gt;
* Tcl Wiki [http://mini.net/cgi-bin/wikit/]&lt;br /&gt;
* Tcl for Web Nerds [http://philip.greenspun.com/tcl/index.adp]&lt;br /&gt;
* Article about XML processing in AOLserver using nsxml module [http://www.fifthgate.org/articles/aolserver/xml/ns_xml_doc.html]&lt;br /&gt;
* Article about implementing search in AOLserver with SWISH++ [http://www.fifthgate.org/articles/aolserver/search/swish_search.html]&lt;br /&gt;
* An introductory article to AOLserver [http://www.fifthgate.org/articles/aolserver/intro.html]&lt;br /&gt;
* TCL Quick Reference Manual [http://sdss.fnal.gov:8000/dss/doc/www/tcl/tcl.commands.html]&lt;br /&gt;
* Frequently Made Mistakes in Tcl [http://starbase.neosoft.com/~claird/comp.lang.tcl/fmm.html] '''(DOWN)'''&lt;br /&gt;
* RPG style &amp;quot;Level Break&amp;quot; functionality in TCL [http://www.walters.demon.co.uk/tcl/tcl_stuff.htm]&lt;br /&gt;
* Tcl in AOL Digital City The Architecture of a Multithreaded High-Performance Web Site (by [[Jim Davidson]]).  Many requests for this. [http://www.aolserver.com/docs/intro/tcl2k/]&lt;br /&gt;
* AOLServer Utils [http://dante.nailed.org/software/] '''(DOWN)'''&lt;br /&gt;
* Resources for ArsDigita Bootcampers, Home-Studiers, etc. [http://www.primenet.com/~cohen/arsdigita/index.html]&lt;br /&gt;
* Beginner's Guide to the Installation of the ArsDigita Community System [http://www.openknowledge.org/acs/acs-beginner-toc.html]&lt;br /&gt;
* AOLserver @ am.net New Parser and ODBC Instructions [http://aolserver.am.net/]&lt;br /&gt;
* Fixing Crashing AOLServers [http://www.badgertronics.com/writings/server-fix.html]&lt;br /&gt;
* AOLServer Articles at Linux World [http://linuxworld.com/linuxworld/lw-1999-09/lw-09-aolserver_1.html]&lt;br /&gt;
* Building Sites with AOLserver Scott G.'s New Documentation Site [http://www.scottg.net/aolserver/] '''(DOWN)'''&lt;br /&gt;
* SSL, SSLv3, and Client-side Certificates with AOLserver [http://www.arsdigita.com/asj/aolserver-ssl]&lt;br /&gt;
* [[How to generate self-signed SSL certificates]]&lt;br /&gt;
&lt;br /&gt;
* AOLServer Web Hosting : I could only find  zill.net [http://www.zill.net/openacs-pricing.html]&lt;br /&gt;
&lt;br /&gt;
* Some AOLserver programming hints from OpenACS [http://openacs.org/doc/current/programming-with-aolserver.html]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Welcome,_New_Visitors&amp;diff=4931</id>
		<title>Welcome, New Visitors</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Welcome,_New_Visitors&amp;diff=4931"/>
		<updated>2006-03-30T13:15:59Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi. Welcome to the [[AOLserver Wiki]]. This is a website geared towards the collaborative building of a resource for [[AOLserver]]. &lt;br /&gt;
&lt;br /&gt;
Once registered for a free account, '''Anyone can edit anything''', using these simple [[Formatting Rules]].  Therefore, please '''be conscientious''' and do not disturb what someone else has contributed, and '''take time and care to proofread''' what you're contributing as others will see it immediately. The wiki requires registration now since there was too much vandalism from spammers. That may change once we can add a CAPTCHA to the editing page.&lt;br /&gt;
&lt;br /&gt;
'''If you leave a comment''', please '''sign it''' (just your initials are sufficient) and maybe even '''date it''' (so that others can tell how old your comment is). A shortcut to sign your content is to enter 4 tildes (~) in a row. It's always awkward responding to a phantom commenteer, and usually frustrating to respond to something which turns out to be over a year old. *smile* &lt;br /&gt;
&lt;br /&gt;
Also, if you are creating a personal page (i.e., like the following page: [[Dossy Shiobara]]) please use your full real name.  If you want to sign comments with your initials as a wiki page, place in that page a pointer to your page consisting of your full name.&lt;br /&gt;
&lt;br /&gt;
If there are any problems, report them to me directly (I'm [[Dossy]]). I'll try and fix problems and resolve issues as soon as I can, but I won't make any promises. &lt;br /&gt;
&lt;br /&gt;
I hope this [[wiki]] makes a significant contribution to the AOLserver community, and that everyone finds it useful in some way. Most of all, I hope people will enjoy interacting with one another in this new medium and find enough commonality between one another that a truly wonderful collaborative product can be born here. &lt;br /&gt;
&lt;br /&gt;
-- [[Dossy]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:AOLserver_Wiki&amp;diff=4927</id>
		<title>Talk:AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Talk:AOLserver_Wiki&amp;diff=4927"/>
		<updated>2006-03-30T01:22:37Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_guesstype&amp;diff=4888</id>
		<title>Ns guesstype</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_guesstype&amp;diff=4888"/>
		<updated>2006-03-20T17:21:01Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.60.130.36, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_guesstype.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_guesstype - Lookup MIME type based on file extension.&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_guesstype''' ''filename''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command guesses and returns the MIME type of a file, based on the extension of ''filename''.  A large set of default extension to MIME type mappings is built into the command:&lt;br /&gt;
* .adp    returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .dci    returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .htm    returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .html   returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .sht    returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .shtml  returns &amp;quot;text/html; charset=iso-8859-1&amp;quot;&lt;br /&gt;
* .ai     returns &amp;quot;application/postscript&amp;quot;&lt;br /&gt;
* .aif    returns &amp;quot;audio/aiff&amp;quot;&lt;br /&gt;
* .aifc   returns &amp;quot;audio/aiff&amp;quot;&lt;br /&gt;
* .aiff   returns &amp;quot;audio/aiff&amp;quot;&lt;br /&gt;
* .ani    returns &amp;quot;application/x-navi-animation&amp;quot;&lt;br /&gt;
* .art    returns &amp;quot;image/x-art&amp;quot;&lt;br /&gt;
* .au     returns &amp;quot;audio/basic&amp;quot;&lt;br /&gt;
* .avi    returns &amp;quot;video/x-msvideo&amp;quot;&lt;br /&gt;
* .bin    returns &amp;quot;application/x-macbinary&amp;quot;&lt;br /&gt;
* .bmp    returns &amp;quot;image/bmp&amp;quot;&lt;br /&gt;
* .css    returns &amp;quot;text/css&amp;quot;&lt;br /&gt;
* .csv    returns &amp;quot;application/csv&amp;quot;&lt;br /&gt;
* .dcr    returns &amp;quot;application/x-director&amp;quot;&lt;br /&gt;
* .dir    returns &amp;quot;application/x-director&amp;quot;&lt;br /&gt;
* .dp     returns &amp;quot;application/commonground&amp;quot;&lt;br /&gt;
* .dxr    returns &amp;quot;application/x-director&amp;quot;&lt;br /&gt;
* .elm    returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .eml    returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .exe    returns &amp;quot;application/octet-stream&amp;quot;&lt;br /&gt;
* .gbt    returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .gif    returns &amp;quot;image/gif&amp;quot;&lt;br /&gt;
* .gz     returns &amp;quot;application/x-compressed&amp;quot;&lt;br /&gt;
* .hqx    returns &amp;quot;application/mac-binhex40&amp;quot;&lt;br /&gt;
* .jfif   returns &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
* .jpe    returns &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
* .jpg    returns &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
* .jpeg   returns &amp;quot;image/jpeg&amp;quot;&lt;br /&gt;
* .js     returns &amp;quot;application/x-javascript&amp;quot;&lt;br /&gt;
* .ls     returns &amp;quot;application/x-javascript&amp;quot;&lt;br /&gt;
* .map    returns &amp;quot;application/x-navimap&amp;quot;&lt;br /&gt;
* .mid    returns &amp;quot;audio/x-midi&amp;quot;&lt;br /&gt;
* .midi   returns &amp;quot;audio/x-midi&amp;quot;&lt;br /&gt;
* .mocha  returns &amp;quot;application/x-javascript&amp;quot;&lt;br /&gt;
* .mov    returns &amp;quot;video/quicktime&amp;quot;&lt;br /&gt;
* .mpe    returns &amp;quot;video/mpeg&amp;quot;&lt;br /&gt;
* .mpeg   returns &amp;quot;video/mpeg&amp;quot;&lt;br /&gt;
* .mpg    returns &amp;quot;video/mpeg&amp;quot;&lt;br /&gt;
* .nvd    returns &amp;quot;application/x-navidoc&amp;quot;&lt;br /&gt;
* .nvm    returns &amp;quot;application/x-navimap&amp;quot;&lt;br /&gt;
* .pbm    returns &amp;quot;image/x-portable-bitmap&amp;quot;&lt;br /&gt;
* .pdf    returns &amp;quot;application/pdf&amp;quot;&lt;br /&gt;
* .pgm    returns &amp;quot;image/x-portable-graymap&amp;quot;&lt;br /&gt;
* .pic    returns &amp;quot;image/pict&amp;quot;&lt;br /&gt;
* .pict   returns &amp;quot;image/pict&amp;quot;&lt;br /&gt;
* .pnm    returns &amp;quot;image/x-portable-anymap&amp;quot;&lt;br /&gt;
* .png    returns &amp;quot;image/png&amp;quot;&lt;br /&gt;
* .ps     returns &amp;quot;application/postscript&amp;quot;&lt;br /&gt;
* .qt     returns &amp;quot;video/quicktime&amp;quot;&lt;br /&gt;
* .ra     returns &amp;quot;audio/x-pn-realaudio&amp;quot;&lt;br /&gt;
* .ram    returns &amp;quot;audio/x-pn-realaudio&amp;quot;&lt;br /&gt;
* .ras    returns &amp;quot;image/x-cmu-raster&amp;quot;&lt;br /&gt;
* .rgb    returns &amp;quot;image/x-rgb&amp;quot;&lt;br /&gt;
* .rtf    returns &amp;quot;application/rtf&amp;quot;&lt;br /&gt;
* .sit    returns &amp;quot;application/x-stuffit&amp;quot;&lt;br /&gt;
* .snd    returns &amp;quot;audio/basic&amp;quot;&lt;br /&gt;
* .sql    returns &amp;quot;application/x-sql&amp;quot;&lt;br /&gt;
* .stl    returns &amp;quot;application/x-navistyle&amp;quot;&lt;br /&gt;
* .tar    returns &amp;quot;application/x-tar&amp;quot;&lt;br /&gt;
* .tcl    returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .text   returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .tgz    returns &amp;quot;application/x-compressed&amp;quot;&lt;br /&gt;
* .tif    returns &amp;quot;image/tiff&amp;quot;&lt;br /&gt;
* .tiff   returns &amp;quot;image/tiff&amp;quot;&lt;br /&gt;
* .txt    returns &amp;quot;text/plain&amp;quot;&lt;br /&gt;
* .xbm    returns &amp;quot;image/x-xbitmap&amp;quot;&lt;br /&gt;
* .xpm    returns &amp;quot;image/x-xpixmap&amp;quot;&lt;br /&gt;
* .xht    returns &amp;quot;application/xhtml+xml&amp;quot;&lt;br /&gt;
* .xhtml  returns &amp;quot;application/xhtml+xml&amp;quot;&lt;br /&gt;
* .xml    returns &amp;quot;text/xml&amp;quot;&lt;br /&gt;
* .xsl    returns &amp;quot;text/xml&amp;quot;&lt;br /&gt;
* .vrml   returns &amp;quot;x-world/x-vrml&amp;quot;&lt;br /&gt;
* .wav    returns &amp;quot;audio/x-wav&amp;quot;&lt;br /&gt;
* .wrl    returns &amp;quot;x-world/x-vrml&amp;quot;&lt;br /&gt;
* .z      returns &amp;quot;application/x-compressed&amp;quot;&lt;br /&gt;
* .zip    returns &amp;quot;application/x-zip-compressed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: The MIME type returned for an extension can be overriden in the AOLserver config file, and new mappings can be added, e.g.&lt;br /&gt;
&lt;br /&gt;
    ns_section &amp;quot;ns/mimetypes&amp;quot;&lt;br /&gt;
    ns_param  &amp;quot;.xls&amp;quot;        &amp;quot;application/vnd.ms-excel&amp;quot;      ;# Add a mapping for Excel files&lt;br /&gt;
    ns_param  &amp;quot;.sjis_html&amp;quot;  &amp;quot;text/html; charset=shift_jis&amp;quot;  ;# Adding a mapping, specifing charset&lt;br /&gt;
    ns_param  &amp;quot;.adp&amp;quot;        &amp;quot;text/html; charset=UTF-8&amp;quot;      ;# Overriding an existing mapping&lt;br /&gt;
&lt;br /&gt;
: The MIME type to be returned for files with unrecognized or missing extensions can also be specified in the &amp;quot;ns/mimetypes&amp;quot; section of the config file, e.g.&lt;br /&gt;
&lt;br /&gt;
    ns_section &amp;quot;ns/mimetypes&amp;quot;&lt;br /&gt;
    ns_param  default      &amp;quot;*/*&amp;quot;  ;# MIME type for unrecognized extension.&lt;br /&gt;
    ns_param  noextension  &amp;quot;*/*&amp;quot;  ;# MIME type for missing extension.&lt;br /&gt;
&lt;br /&gt;
: If default is not configured, &amp;quot;*/*&amp;quot; will be returned for files with unrecognized extensions.  If noextension is not configured, the MIME type configured as default (or &amp;quot;*/*&amp;quot;) will be used.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
: (Assuming configured with the examples above)&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype &amp;quot;hello.jpg&amp;quot;&lt;br /&gt;
    image/jpeg&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype &amp;quot;hello.xls&amp;quot;&lt;br /&gt;
    application/vnd.ms-excel&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype &amp;quot;hello.html&amp;quot;&lt;br /&gt;
    text/html; charset=iso-8859-1&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype &amp;quot;world.adp&amp;quot;&lt;br /&gt;
    text/html; charset=UTF-8&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype &amp;quot;world.doc&amp;quot;&lt;br /&gt;
*/*&lt;br /&gt;
&lt;br /&gt;
    % ns_guesstype somefile&lt;br /&gt;
*/*&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Configuring_AOLserver_4_and_PostgreSQL_on_Debian&amp;diff=4886</id>
		<title>Configuring AOLserver 4 and PostgreSQL on Debian</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Configuring_AOLserver_4_and_PostgreSQL_on_Debian&amp;diff=4886"/>
		<updated>2006-03-19T03:13:33Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.47.209.35, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some might say that AOLserver practically configures itself. But, since that isn't really the case, here are the steps you will go through after installing AOLserver and PostgreSQL.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Configuration ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/aolserver4/aolserver4.tcl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Uncomment the ''ns_section &amp;quot;ns/db/drivers&amp;quot;'' line.&lt;br /&gt;
* Uncomment the ''ns_param postgres_driver ...'' line.&lt;br /&gt;
* Uncomment the ''ns_section &amp;quot;ns/db/pools&amp;quot;'' line.&lt;br /&gt;
* Uncomment the ''ns_param postgres_pool ...'' line.&lt;br /&gt;
* Uncomment the entire ''ns_section &amp;quot;ns/db/pool/postgres_pool&amp;quot;'' section, modifying the datasource, user, and password parameters as applicable to your system.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver 4 on Debian]]&lt;br /&gt;
* [[PostgreSQL on Debian]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4885</id>
		<title>Ad13 vs. 3.5.1</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4885"/>
		<updated>2006-03-19T03:13:19Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 68.20.219.76, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unfinished comparison between AOLserver 3.5.1 and AOLserver 3.3.1 + ad13 + oacs1. [http://uptime.openacs.org/aolserver-openacs/] It is based on Rob Mayoff's AD13 distribution notes.  SourceForge patch #570072 brought the AD13 internationalization patches to 3.4.2, and would probably be a good starting point for integration.&lt;br /&gt;
&lt;br /&gt;
- Jamie Rasmussen&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+oacs1 patches'''&lt;br /&gt;
&lt;br /&gt;
Vinod's ns_uuencode patch (SourceForge #474259)&lt;br /&gt;
* The oacs1 patch has a major bug as discussed on SourceForge.  I believe my corrected patch works but it hasn't been tested.  This is not crucial because OpenACS tests for the desired behavior and falls back on (slow) TCL-based encoding.&lt;br /&gt;
&lt;br /&gt;
uid/gid from Jon Griffin&lt;br /&gt;
* This is SF Patch #509413.  Jon confirms it has been fixed in 3.5+.&lt;br /&gt;
&lt;br /&gt;
BSD exec patch&lt;br /&gt;
* Is this SF Patch #415475?  It's marked fixed.&lt;br /&gt;
&lt;br /&gt;
Merge some of Vinod's and Mat's changes for nsxml's makefile&lt;br /&gt;
* nsxml has changed since the oacs1 version so I'm not sure if these changes are needed.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+ad13 patches'''&lt;br /&gt;
&lt;br /&gt;
Numerous patches to support character encodings including Henry Minsky's patches to translate form data to multiple charsets within a single HTTP request.  Described in encoding-doc.html.  These should be fleshed out here.&lt;br /&gt;
&lt;br /&gt;
There is an additional encoding file, 8bit.enc (ascii, single-byte, 8 bits)&lt;br /&gt;
* Should this be added to TCL?&lt;br /&gt;
&lt;br /&gt;
Set system encoding to ns/server/$server/SystemEncoding (default utf-8) in modules/tcl/init.tcl.&lt;br /&gt;
* This is a 1 line change &lt;br /&gt;
&lt;br /&gt;
form.tcl and http.tcl are different, charsets.tcl needs to be added&lt;br /&gt;
&lt;br /&gt;
Added byte range support in fastpath.c and ns_returnfile.&lt;br /&gt;
* This is a HTTP/1.1 feature.  Patrick Spence asks if this could be made configurable to prevent abuse by download accelerators.&lt;br /&gt;
&lt;br /&gt;
Reset ADP exception before executing an ADP, in case previous ADP called ns_adp_break, etc.&lt;br /&gt;
* One-line changes in adp.c and tclstubs.cpp to reset the exception&lt;br /&gt;
* There are also stack checks throwing ADP_OVERFLOW.  The stack check function was in thread.c of the old threads lib, and is not in AOLserver 3.5.1  ADP_OVERFLOW is still caught in 3.5.1, but it doesn't appear to be thrown.&lt;br /&gt;
&lt;br /&gt;
Ns_QueryToSet will not allow parameters whose names end with &amp;quot;.tmpfile&amp;quot;.&lt;br /&gt;
* Looks like this could be added without much hassle.&lt;br /&gt;
&lt;br /&gt;
Added boolean database parameter &amp;quot;WarnEmpty&amp;quot;.  If this is set, then AOLserver will log a warning when the last handle in a database pool is empty, and when a thread tries to get a handle from an empty pool.  Set this in the ns/db/pool/poolname section.&lt;br /&gt;
* A simple change to dbinit.c  &lt;br /&gt;
&lt;br /&gt;
Added Tcl command &amp;quot;ns_db stats poolname&amp;quot;, which returns a two-element list.  The first element is the maximum number of handles in the pool (equal to the &amp;quot;connections&amp;quot; config parameter).  The second element is the number of handles currently available in the pool.&lt;br /&gt;
* Simple changes to dbinit.c, dbtcl.c, and ns.h&lt;br /&gt;
* It looks like the ad13 patch didn't add the command to the usage message where it should have.&lt;br /&gt;
* This command doesn't appear to be used in OpenACS (CVS HEAD anyway)&lt;br /&gt;
&lt;br /&gt;
Patch to op.c to not crash on bad HTTP request line if nsd.tcl has a 401 redirect.&lt;br /&gt;
* Test to see if this still happens.  A minor change.&lt;br /&gt;
&lt;br /&gt;
Patch to NsHandleSignals to actually exit on Linux if a SIGSEGV is received.&lt;br /&gt;
* Appears to be a straight-forward addition to unix.c&lt;br /&gt;
&lt;br /&gt;
Patch to ns_sourceproc to cache Tcl pages (including bytecodes) if nscache module is installed.&lt;br /&gt;
* Modifications in tcl/file.tcl, tcl/tclcache.tcl added&lt;br /&gt;
&lt;br /&gt;
Declare Ns_ConnWriteRawData in ns.h.&lt;br /&gt;
* This does not actually appear in ns.h.  I believe the notes mean Ns_ConnReturnRawData in ns.h (body in return.c)&lt;br /&gt;
&lt;br /&gt;
Add errorminsize to doc/config.txt.&lt;br /&gt;
* doc/config.txt was removed.  We could add this small documentation change to sample-config.tcl.&lt;br /&gt;
&lt;br /&gt;
Fix channel memory leak in tclIO.c.&lt;br /&gt;
* I'm assuming this memory leak is not in TCL 8.4, but someone should confirm. Not an AOLserver core problem anyway.&lt;br /&gt;
&lt;br /&gt;
Import fix for freeing of Tcl TSD from AOLserver 4.0 tree.&lt;br /&gt;
* I'm not sure what the fix was, but I'm assuming it made it into 3.5.1 as well.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_PHP_under_AOLserver&amp;diff=4884</id>
		<title>How to set up PHP under AOLserver</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_PHP_under_AOLserver&amp;diff=4884"/>
		<updated>2006-03-19T03:13:07Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.98.245.24, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'' '''Prerequisites:''' ''&lt;br /&gt;
* AOLserver 4.0.6 [http://www.aolserver.com/] (currently CVS aolserver_v40_bp branch)&lt;br /&gt;
* PHP 4.3.7 or 5.0.0 [http://www.php.net/] + interim patch&lt;br /&gt;
&lt;br /&gt;
Also works with AOLserver 4.0.10 and PHP 5.0.4 but has problems if multiple virtual hosts use PHP (crashes the nsd process on Solaris). This behavior is also documented on the mailinglist for PHP 4.x, so it is not a regression.&lt;br /&gt;
&lt;br /&gt;
'' '''Instructions:''' ''&lt;br /&gt;
&lt;br /&gt;
'''Step 1.  Build and install Tcl and AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
You can use a binary distribution of Tcl provided it is a threaded build of Tcl.  However, in order to build PHP, you will need to have AOLserver source available as PHP requires it in its own build process.  These instructions assume that you will install AOLserver into &amp;quot;/home/aolserver&amp;quot; and the source resides in &amp;quot;/src/aolserver-4.0.5&amp;quot;.  Replace these to reflect your environment as necessary.&lt;br /&gt;
&lt;br /&gt;
Building both Tcl and AOLserver is outside the scope of this document and should be covered in a separate document.&lt;br /&gt;
&lt;br /&gt;
'''Step 2.  Build and install PHP.'''&lt;br /&gt;
&lt;br /&gt;
The following is an example of how you will need to configure PHP for building:&lt;br /&gt;
&lt;br /&gt;
    $ ./configure  --with-aolserver=/home/aolserver --with-aolserver-src=/src/aolserver-4.0.5 --enable-shared&lt;br /&gt;
&lt;br /&gt;
&amp;quot;--with-aolserver=/home/aolserver&amp;quot; is the path to where AOLserver is installed (the --prefix option when you build AOLserver) and &amp;quot;--with-aolserver-src=/src/aolserver-4.0.5&amp;quot; is the path to where the AOLserver source lives.  &amp;quot;--enable-shared&amp;quot; may be turned on by default, which should build &amp;quot;libphp4.so&amp;quot; which we will need for AOLserver.&lt;br /&gt;
&lt;br /&gt;
Once configured, run &amp;quot;make&amp;quot; to compile PHP.  You do NOT need to do a &amp;quot;make install&amp;quot; or &amp;quot;make install-su&amp;quot; unless you want PHP to install the CLI executable and/or the PEAR stuff.  To install the necessary bits for AOLserver, simply copy &amp;quot;libs/libphp4.so&amp;quot; for PHP 4.3.7 or &amp;quot;libs/libphp5.so&amp;quot; for PHP 5.0.0 to your AOLserver module directory, and &amp;quot;php.ini-recommended&amp;quot; to your AOLserver home directory as &amp;quot;php.ini&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
    $ make&lt;br /&gt;
    ... lots of build output scrolls by ...&lt;br /&gt;
&lt;br /&gt;
    $ cp libs/libphp4.so /home/aolserver/bin&lt;br /&gt;
    $ cp php.ini-recommended /home/aolserver/php.ini&lt;br /&gt;
&lt;br /&gt;
The default php.ini file should be suitable at first: customize and tweak it later once you've confirmed that PHP is indeed working correctly.&lt;br /&gt;
&lt;br /&gt;
'''Step 3.  Configure AOLserver to load PHP support.'''&lt;br /&gt;
&lt;br /&gt;
Starting with the &amp;quot;sample-config.tcl&amp;quot; that comes with AOLserver, you need to make two simple changes.  The first is to set (or increase) the stack size to a minimum of 256KB.  The recommended value is 1MB.  Here is the relevant snippet from the sample-config.tcl, lines 139-143:&lt;br /&gt;
&lt;br /&gt;
    139 #&lt;br /&gt;
    140 # Thread library (nsthread) parameters&lt;br /&gt;
    141 #&lt;br /&gt;
    142 ns_section &amp;quot;ns/threads&amp;quot;&lt;br /&gt;
    143 #ns_param   stacksize [[expr 128*1024]] ;# Per-thread stack size.&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;quot;ns_param&amp;quot; line that sets stack-size is currently commented out.  Uncomment that line, and change it to:&lt;br /&gt;
&lt;br /&gt;
    143 ns_param   stacksize [[expr 256*1024]] ;# Per-thread stack size.&lt;br /&gt;
&lt;br /&gt;
(Do not include the line number, &amp;quot;143&amp;quot;, at the start of the line -- that is for illustrative purposes only.)&lt;br /&gt;
&lt;br /&gt;
We have changed the stack from 128KB (&amp;quot;128*1024&amp;quot;) to 256KB (&amp;quot;256*1024&amp;quot;) and uncommented the line.  Change it to &amp;quot;1024*1024&amp;quot; to set it to 1MB.&lt;br /&gt;
&lt;br /&gt;
The next step is to add the necessary configuration to instruct AOLserver to load the PHP module at server start-up.  We do this by adding the following lines to the bottom of the sample-config.tcl file:&lt;br /&gt;
&lt;br /&gt;
    #&lt;br /&gt;
    # PHP&lt;br /&gt;
    #&lt;br /&gt;
    &lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/module/php&amp;quot;&lt;br /&gt;
        ns_param map *.php&lt;br /&gt;
    &lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
        ns_param php    ${bindir}/libphp4.so&lt;br /&gt;
&lt;br /&gt;
This tells AOLserver to load our libphp4.so from the directory pointed to by $bindir, and indicates that files ending with the suffix &amp;quot;.php&amp;quot; contain PHP code and should be processed by the PHP module.&lt;br /&gt;
&lt;br /&gt;
You will also want the server to look for PHP index pages.  To do this, append &amp;quot;index.php&amp;quot; to the end of the directory file line in your AOLserver configuration file:&lt;br /&gt;
&lt;br /&gt;
    set directoryfile   index.adp,index.html,index.htm,index.xhtml,index.xht,index.php&lt;br /&gt;
&lt;br /&gt;
'''Step 4. Start AOLserver, and enjoy!'''&lt;br /&gt;
&lt;br /&gt;
That's all there is to it.  Start up your server, place some .php files in your pageroot (configured as &amp;quot;servers/server1/pages&amp;quot; by default in sample-config.tcl) and request them in a web browser.  Everything should be working.&lt;br /&gt;
&lt;br /&gt;
As of 22jun2004, the following apps have been at least lightly tested:&lt;br /&gt;
* phpBB2 2.0.8 [http://www.phpbb.com/]&lt;br /&gt;
* SquirrelMail 1.4.3a [http://www.squirrelmail.org/]&lt;br /&gt;
&lt;br /&gt;
Both phpBB2 and SquirrelMail store &amp;quot;sensitive&amp;quot; data that you probably don't want a user to browse.  These come with .htaccess files installed but since AOLserver doesn't support .htaccess these files are unprotected.  One option is to enable [[nsperm]] and create entries to grant access to a non-existent user (implicitly denying access to everyone else).  The file to edit will live somewhere like &amp;quot;/home/aolserver/servers/server1/modules/nsperm/perms&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For phpBB2, add an entry like:&lt;br /&gt;
&lt;br /&gt;
    allowuser inherit GET /phpBB2/cache notfound&lt;br /&gt;
&lt;br /&gt;
For SquirrelMail, add an entry like:&lt;br /&gt;
&lt;br /&gt;
    allowuser inherit GET /mail/data notfound&lt;br /&gt;
    allowuser inherit GET /mail/plugins/squirrelspell/modules notfound&lt;br /&gt;
 &lt;br /&gt;
There is nothing special about the user &amp;quot;notfound&amp;quot;.  Any string here that is not found in your [[nsperm]] &amp;quot;passwd&amp;quot; file will work.  Change the URLs in the above examples to match the actual location of where you've installed the applications.&lt;br /&gt;
&lt;br /&gt;
An alternative approach to explictly deny users access might look something like:&lt;br /&gt;
&lt;br /&gt;
    denyuser inherit GET /mail/data &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The downside of this second method is that it allows authenticated users (those users who are in the [[nsperm]] &amp;quot;passwd&amp;quot; file) to access these protected files. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Appendix A.  Patch to PHP 4.3.7/5.0.0.'''&lt;br /&gt;
&lt;br /&gt;
Before applying this patch, you may need to remove a single whitespace character from the beginning of every line (as they were added so that the patch appears as preformatted text on the wiki.)  Place the file in the &amp;quot;php-4.3.7/sapi/aolserver&amp;quot; or &amp;quot;php-5.0.0/sapi/aolserver&amp;quot; directory as &amp;quot;aolserver.c.patch&amp;quot; and apply it with GNU patch:&lt;br /&gt;
&lt;br /&gt;
    $ patch -p0 &amp;lt; aolserver.c.patch&lt;br /&gt;
&lt;br /&gt;
Patch follows:&lt;br /&gt;
&lt;br /&gt;
 --- aolserver.c.orig    2003-05-30 21:37:44.000000000 -0400&lt;br /&gt;
 +++ aolserver.c 2004-06-21 22:00:48.000000000 -0400&lt;br /&gt;
 @@ -88,21 +88,12 @@&lt;br /&gt;
  static int&lt;br /&gt;
  php_ns_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
 -       int n;&lt;br /&gt;
 -       uint sent = 0;&lt;br /&gt;
 -&lt;br /&gt;
 -       while (str_length &amp;gt; 0) {&lt;br /&gt;
 -               n = Ns_ConnWrite(NSG(conn), (void *) str, str_length);&lt;br /&gt;
 -&lt;br /&gt;
 -               if (n == -1)&lt;br /&gt;
 -                       php_handle_aborted_connection();&lt;br /&gt;
 -&lt;br /&gt;
 -               str += n;&lt;br /&gt;
 -               sent += n;&lt;br /&gt;
 -               str_length -= n;&lt;br /&gt;
 +    if (Ns_WriteConn(NSG(conn), str, str_length) != NS_OK) {&lt;br /&gt;
 +        php_handle_aborted_connection();&lt;br /&gt;
 +        return 0;&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
 -       return sent;&lt;br /&gt;
 +       return str_length;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /*&lt;br /&gt;
 @@ -148,7 +139,7 @@&lt;br /&gt;
  php_ns_sapi_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
         if(SG(sapi_headers).send_default_content_type) {&lt;br /&gt;
 -               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, 0);&lt;br /&gt;
 +               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, -1);&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
         Ns_ConnFlushHeaders(NSG(conn), SG(sapi_headers).http_response_code);&lt;br /&gt;
&lt;br /&gt;
'''Appendix B.  Testing with the PHP test cases.'''&lt;br /&gt;
&lt;br /&gt;
PHP comes with a pretty thorough suite of test cases that check for regressions and for basic functionality.  Many of these tests work in a webserver context as well (about 2/3 of them).  A perl script, [http://www.aolserver.com/files/webtest.pl webtest.pl], can be used execute these tests.  This script is not specific to AOLserver.  It is known to work with Apache and should work with any webserver.&lt;br /&gt;
&lt;br /&gt;
To test PHP:&lt;br /&gt;
&lt;br /&gt;
   1. Download the script.&lt;br /&gt;
   2. Place the script in the PHP source tree.&lt;br /&gt;
   3. Execute: perl webtest.pl -h hostname:port -d /path/to/document/root&lt;br /&gt;
&lt;br /&gt;
An example command line might look like:&lt;br /&gt;
&lt;br /&gt;
    $ perl webtest.pl -h localhost:8000 -d /home/aolserver/servers/server1/pages/&lt;br /&gt;
&lt;br /&gt;
This script has been tested with PHP 4.3.7 and PHP 5.0.0.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
php-5.0.5 patch&lt;br /&gt;
 --- aolserver.c 2005-09-14 22:18:03.000000000 -0400&lt;br /&gt;
 +++ aolserver.c.back    2005-09-14 22:14:44.000000000 -0400&lt;br /&gt;
 @@ -88,12 +88,21 @@&lt;br /&gt;
  static int&lt;br /&gt;
  php_ns_sapi_ub_write(const char *str, uint str_length TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
 -        if (Ns_WriteConn(NSG(conn), str, str_length) != NS_OK) {&lt;br /&gt;
 -            php_handle_aborted_connection();&lt;br /&gt;
 -             return 0;&lt;br /&gt;
 +       int n;&lt;br /&gt;
 +       uint sent = 0;&lt;br /&gt;
 +&lt;br /&gt;
 +       while (str_length &amp;gt; 0) {&lt;br /&gt;
 +               n = Ns_ConnWrite(NSG(conn), (void *) str, str_length);&lt;br /&gt;
 +&lt;br /&gt;
 +               if (n == -1)&lt;br /&gt;
 +                       php_handle_aborted_connection();&lt;br /&gt;
 +&lt;br /&gt;
 +               str += n;&lt;br /&gt;
 +               sent += n;&lt;br /&gt;
 +               str_length -= n;&lt;br /&gt;
         }&lt;br /&gt;
  &lt;br /&gt;
 -       return str_length;&lt;br /&gt;
 +       return sent;&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
 @@ -139,7 +148,7 @@&lt;br /&gt;
  php_ns_sapi_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)&lt;br /&gt;
  {&lt;br /&gt;
         if(SG(sapi_headers).send_default_content_type) {&lt;br /&gt;
 -               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, -1);&lt;br /&gt;
 +               Ns_ConnSetRequiredHeaders(NSG(conn), &amp;quot;text/html&amp;quot;, 0);&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         Ns_ConnFlushHeaders(NSG(conn), SG(sapi_headers).http_response_code);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
~p&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Tutorials]] - [[PHP]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_WiKit_under_AOLserver&amp;diff=4883</id>
		<title>How to set up WiKit under AOLserver</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_WiKit_under_AOLserver&amp;diff=4883"/>
		<updated>2006-03-19T03:12:55Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 68.100.158.95, changed back to last version by 64.236.208.25&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'' '''Prerequisites:''' ''&lt;br /&gt;
* AOLserver 4.0.6 [http://www.aolserver.com/] (currently CVS aolserver_v40_bp branch)&lt;br /&gt;
* Tclkit 8.4.6 [http://equi4.com/tclkit.html]&lt;br /&gt;
* Wikit 2004/06/08 00:57:42 19564-63131 [http://equi4.com/wikit.html]&lt;br /&gt;
&lt;br /&gt;
'' '''Instructions:''' ''&lt;br /&gt;
&lt;br /&gt;
'''Step 1.  Build and install Tcl and AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
You can use a binary distribution of Tcl provided it is a threaded build of Tcl, and build AOLserver with it.&lt;br /&gt;
&lt;br /&gt;
Building both Tcl and AOLserver is outside the scope of this document and should be covered in a separate document.&lt;br /&gt;
&lt;br /&gt;
'''Step 2.  Create directories for the wiki..'''&lt;br /&gt;
&lt;br /&gt;
Assuming that your AOLserver is installed in &amp;quot;/home/aolserver&amp;quot; (if it isn't, obviously replace that with the relevant path for your installation) and that you will start with the &amp;quot;sample-config.tcl&amp;quot; that comes standard with AOLserver, we should create a place to install the wiki-related files.  Lets do that now:&lt;br /&gt;
&lt;br /&gt;
    $ mkdir /home/aolserver/servers/server1/wiki&lt;br /&gt;
    $ mkdir /home/aolserver/servers/server1/wiki/data&lt;br /&gt;
&lt;br /&gt;
You will only need to make the &amp;quot;wiki/data&amp;quot; directory writable by the user that AOLserver will run as.  &lt;br /&gt;
&lt;br /&gt;
Note that these directories do NOT live under the pageroot (&amp;quot;servers/server1/pages&amp;quot; in the sample-config.tcl) but rather at the same level as the pageroot.  This is for security reasons.&lt;br /&gt;
&lt;br /&gt;
'''Step 3.  Download and install Tclkit and Wikit.'''&lt;br /&gt;
&lt;br /&gt;
Download the latest version of Tclkit and Wikit.  At the time of this writing, I tested with Tclkit 8.4.6.  You can download binaries for several platforms:&lt;br /&gt;
* http://equi4.com/pub/tk/8.4.6/&lt;br /&gt;
&lt;br /&gt;
In this example, the server is running on x86 Linux.  Here's how you might download the necessary files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ wget -O tclkit-8.4.6-static.gz http://equi4.com/pub/tk/8.4.6/tclkit-linux-x86-static.gz&lt;br /&gt;
    ... [ wget output ] ...&lt;br /&gt;
&lt;br /&gt;
    $ gunzip tclkit-8.4.6-static&lt;br /&gt;
&lt;br /&gt;
    $ chmod 755 tclkit-8.4.6-static&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install Wikit in a similar way:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ wget http://equi4.com/pub/sk/wikit.kit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need a thin wrapper script (see Appendix B at the bottom of this page) that will execute wikit.  Copy the script from Appendix B into a file named &amp;quot;wiki.sh&amp;quot; in the &amp;quot;wiki&amp;quot; directory then make it executable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    $ cd /home/aolserver/servers/server1/wiki&lt;br /&gt;
&lt;br /&gt;
    $ cat &amp;lt;&amp;lt;-'EOF' | sed -e 's/^ //' &amp;gt; wiki.sh&lt;br /&gt;
    ... copy and paste contents of Appendix B ...&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    $ chmod 755 wiki.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it!  Tclkit and Wikit are now downloaded and installed.&lt;br /&gt;
&lt;br /&gt;
'''Step 4.  Configure AOLserver to load CGI support.'''&lt;br /&gt;
&lt;br /&gt;
Starting with the &amp;quot;sample-config.tcl&amp;quot; that comes with AOLserver, you need to make a simple change to enable CGI and configure it to recognize requests for the wiki.&lt;br /&gt;
&lt;br /&gt;
Start by adding the following three lines to the [[nscgi]] module section in your sample-config.tcl:&lt;br /&gt;
&lt;br /&gt;
    ns_param   map &amp;quot;GET  /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
    ns_param   map &amp;quot;POST /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
    ns_param   map &amp;quot;HEAD /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This tells AOLserver to execute &amp;quot;wiki/wiki.sh&amp;quot; for requests to the server where the URL starts with &amp;quot;/wiki&amp;quot;.  This invokes our thin wrapper script.&lt;br /&gt;
&lt;br /&gt;
Next, we need to instruct AOLserver to actually load the [[nscgi]] module by uncommenting the appropriate line in the &amp;quot;modules&amp;quot; section (around line 449 after inserting the three ns_params above):&lt;br /&gt;
&lt;br /&gt;
    ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
        ...&lt;br /&gt;
        ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
'''Step 5. Start AOLserver, and enjoy!'''&lt;br /&gt;
&lt;br /&gt;
That's all there is to it.  Start up your server, fire up your web browser and point it at your server:&lt;br /&gt;
&lt;br /&gt;
    http://www.aolserver.com/wiki&lt;br /&gt;
&lt;br /&gt;
(Replace &amp;quot;www.aolserver.com&amp;quot; with your IP or the hostname of your server.)&lt;br /&gt;
&lt;br /&gt;
You should get back the home page of your new wiki!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Before using any of the files in the appendix, you will need to remove the first whitespace character from the beginning of each line, as those were inserted so that the wiki will display them as preformatted text.'''&lt;br /&gt;
&lt;br /&gt;
'''Appendix A.  Patch to sample-config.tcl.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 --- sample-config.tcl   2004-06-14 20:18:19.000000000 -0400&lt;br /&gt;
 +++ wiki-config.tcl     2004-06-23 16:48:23.000000000 -0400&lt;br /&gt;
 @@ -352,6 +352,9 @@&lt;br /&gt;
  #ns_param   map &amp;quot;GET  /cgi /usr/local/cgi&amp;quot;     ;# CGI script file dir (GET).&lt;br /&gt;
  #ns_param   map &amp;quot;POST /cgi /usr/local/cgi&amp;quot;     ;# CGI script file dir (POST).&lt;br /&gt;
  &lt;br /&gt;
 +ns_param   map &amp;quot;GET  /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
 +ns_param   map &amp;quot;POST /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
 +ns_param   map &amp;quot;HEAD /wiki ${homedir}/servers/${servername}/wiki/wiki.sh&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
  # Modules to load&lt;br /&gt;
 @@ -360,7 +363,7 @@&lt;br /&gt;
  ns_section &amp;quot;ns/server/${servername}/modules&amp;quot;&lt;br /&gt;
      ns_param nssock ${bindir}/nssock.so&lt;br /&gt;
      ns_param nslog ${bindir}/nslog.so&lt;br /&gt;
 -    #ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
 +    ns_param nscgi ${bindir}/nscgi.so&lt;br /&gt;
      #ns_param nsperm ${bindir}/nsperm.so&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Appendix B.  wiki.sh wrapper script.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 DIR=`dirname $0`&lt;br /&gt;
 cd $DIR/data&lt;br /&gt;
&lt;br /&gt;
 WIKIT_BASE=${WIKIT_BASE:-http://${HTTP_HOST}${SCRIPT_NAME}/}&lt;br /&gt;
 export WIKIT_BASE&lt;br /&gt;
 &lt;br /&gt;
 $DIR/tclkit-8.4.6-static $DIR/wikit.kit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_Sql-Ledger_to_serve_from_AOLserver&amp;diff=4882</id>
		<title>How to set up Sql-Ledger to serve from AOLserver</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=How_to_set_up_Sql-Ledger_to_serve_from_AOLserver&amp;diff=4882"/>
		<updated>2006-03-19T03:12:44Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.154.237.216, changed back to last version by 24.22.122.207&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Install SQL-Ledger with the following modifications:&lt;br /&gt;
&lt;br /&gt;
Note that I'm using this on an isolated LAN so have not done any testing  to verify the integrity of SQL-Ledger security on it.&lt;br /&gt;
&lt;br /&gt;
Be sure AOLserver is installed, and shutdown.&lt;br /&gt;
&lt;br /&gt;
* Get [http://sql-ledger.org/cgi-bin/nav.pl?page=source/index.html&amp;amp;title=Download SQL-Ledger].&lt;br /&gt;
&lt;br /&gt;
* Follow the directions for [http://sql-ledger.org/cgi-bin/nav.pl?page=source/readme.txt&amp;amp;title=README INSTALLATION WITHOUT setup.pl].  Be sure to '''skip''' using the sql-ledger supplied &amp;quot;setup.pl&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
We adapt the instructions for setting setting up httpd (aolserver's nsd in this case):&lt;br /&gt;
&lt;br /&gt;
* Download and build the AOLserver [[nscgi]] module.  Usually [[nscgi]] is already included with the AOLserver distribution.&lt;br /&gt;
&lt;br /&gt;
You can see examples of how to build AOLserver modules by reading the [http://openacs.org/doc/openacs-5-2/aolserver4.html AOLserver install docs for OpenACS 5.2].&lt;br /&gt;
&lt;br /&gt;
In the OpenACS config.tcl file, activate the [[nscgi]] module in this section:&lt;br /&gt;
&lt;br /&gt;
 ns_section ns/server/${server}/modules &lt;br /&gt;
 ns_param   nscgi              ${bindir}/nscgi.so&lt;br /&gt;
&lt;br /&gt;
And modify the nscgi module configuration in config.tcl to something like this:&lt;br /&gt;
&lt;br /&gt;
 ns_section &amp;quot;ns/server/${server}/module/nscgi&amp;quot;&lt;br /&gt;
 ns_param   map &amp;quot;GET  /sql-ledger /usr/local/sql-ledger&amp;quot;&lt;br /&gt;
 ns_param   map &amp;quot;GET  /sql-ledger/css /usr/local/sql-ledger/css&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ns_param   map &amp;quot;POST /sql-ledger /usr/local/sql-ledger&amp;quot;&lt;br /&gt;
 # ns_param   map &amp;quot;POST /sql-ledger/css /usr/local/sql-ledger/css&amp;quot;&lt;br /&gt;
 # there is no need to post to css files ;)&lt;br /&gt;
&lt;br /&gt;
 ns_param   Interps CGIinterps&lt;br /&gt;
 &lt;br /&gt;
 ns_section &amp;quot;ns/interps/CGIinterps&amp;quot;&lt;br /&gt;
 ns_param   .pl &amp;quot;/usr/bin/perl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Security: Jon Griffin has some advice about nscgi and security at http://jongriffin.com/static/consultant/nscgi  For greater security, map each .pl file individually that is in the directories mapped above.  For example:&lt;br /&gt;
                                                           &lt;br /&gt;
 #      ns_param   map &amp;quot;GET  /sql-ledger /usr/local/sql-ledger&amp;quot;                                                              &lt;br /&gt;
 # becomes:                                                      &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/admin.pl /usr/local/sql-ledger/admin.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/login.pl /usr/local/sql-ledger/login.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/am.pl /usr/local/sql-ledger/am.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ap.pl /usr/local/sql-ledger/ap.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ar.pl /usr/local/sql-ledger/ar.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/bp.pl /usr/local/sql-ledger/bp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ca.pl /usr/local/sql-ledger/ca.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/cp.pl /usr/local/sql-ledger/cp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ct.pl /usr/local/sql-ledger/ct.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/gl.pl /usr/local/sql-ledger/gl.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/hr.pl /usr/local/sql-ledger/hr.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ic.pl /usr/local/sql-ledger/ic.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ir.pl /usr/local/sql-ledger/ir.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/is.pl /usr/local/sql-ledger/is.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/jc.pl /usr/local/sql-ledger/jc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/menu.pl /usr/local/sql-ledger/menu.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/oe.pl /usr/local/sql-ledger/oe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/pe.pl /usr/local/sql-ledger/pe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/ps.pl /usr/local/sql-ledger/ps.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/rc.pl /usr/local/sql-ledger/rc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/rp.pl /usr/local/sql-ledger/rp.pl&amp;quot;&lt;br /&gt;
       # skipping: setup.pl                                             &lt;br /&gt;
       # have to specify images too:                                                                                                 &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/favicon.ico /usr/local/sql-ledger/favicon.ico&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/sql-ledger.gif /usr/local/sql-ledger/sql-ledger.gif&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/sql-ledger.png /usr/local/sql-ledger/sql-ledger.png&amp;quot;&lt;br /&gt;
                                                     &lt;br /&gt;
&lt;br /&gt;
 #       ns_param   map &amp;quot;GET  /sql-ledger/css /usr/local/sql-ledger/css/&amp;quot;                                                     &lt;br /&gt;
 # becomes:                                                      &lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-blue.css /usr/local/sql-ledger/css/sql-ledger-blue.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-brown.css /usr/local/sql-ledger/css/sql-ledger-brown.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-purple.css /usr/local/sql-ledger/css/sql-ledger-purple.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-red.css /usr/local/sql-ledger/css/sql-ledger-red.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger-yellow.css /usr/local/sql-ledger/css/sql-ledger-yellow.css&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;GET  /sql-ledger/css/sql-ledger.css /usr/local/sql-ledger/css/sql-ledger.css&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 #      ns_param   map &amp;quot;POST /sql-ledger /usr/local/sql-ledger&amp;quot;                                                             &lt;br /&gt;
 # becomes: &lt;br /&gt;
       ns_param   map &amp;quot;POST /sql-ledger/admin.pl /usr/local/sql-ledger/admin.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST /sql-ledger/login.pl /usr/local/sql-ledger/login.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/am.pl /usr/local/sql-ledger/am.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ap.pl /usr/local/sql-ledger/ap.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ar.pl /usr/local/sql-ledger/ar.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/bp.pl /usr/local/sql-ledger/bp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ca.pl /usr/local/sql-ledger/ca.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/cp.pl /usr/local/sql-ledger/cp.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ct.pl /usr/local/sql-ledger/ct.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/gl.pl /usr/local/sql-ledger/gl.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/hr.pl /usr/local/sql-ledger/hr.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ic.pl /usr/local/sql-ledger/ic.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ir.pl /usr/local/sql-ledger/ir.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/is.pl /usr/local/sql-ledger/is.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/jc.pl /usr/local/sql-ledger/jc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/menu.pl /usr/local/sql-ledger/menu.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/oe.pl /usr/local/sql-ledger/oe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/pe.pl /usr/local/sql-ledger/pe.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/ps.pl /usr/local/sql-ledger/ps.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/rc.pl /usr/local/sql-ledger/rc.pl&amp;quot;&lt;br /&gt;
       ns_param   map &amp;quot;POST  /sql-ledger/rp.pl /usr/local/sql-ledger/rp.pl&amp;quot;&lt;br /&gt;
       # skipping setup.pl                                                                                                   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do *not* put the SQL-Ledger directory in the AOLserver's pageroot directory. Put sql-ledger dir in the /usr/local directory per SL docs:&lt;br /&gt;
&lt;br /&gt;
 mv sql-ledger /usr/local/.&lt;br /&gt;
&lt;br /&gt;
 # set permissions to match the rest of the aolserver files, for example:&lt;br /&gt;
 cd /usr/local/&lt;br /&gt;
 chown -R nsadmin:web sql-ledger&lt;br /&gt;
 chmod -R 770 sql-ledger &lt;br /&gt;
&lt;br /&gt;
 cd /usr/local/sql-ledger&lt;br /&gt;
 chmod 640 *.gif&lt;br /&gt;
 chmod 640 *.png&lt;br /&gt;
 chmod 640 *.ico&lt;br /&gt;
 cd css&lt;br /&gt;
 chmod 660 *.css&lt;br /&gt;
&lt;br /&gt;
Follow the SL directions to create a SQL-Ledger database and user for PostgreSQL, and proceed with the configuration in the SL README.  Hopefully you see a login page at http://yourservername:port/sql-ledger/admin.pl and are able to follow standard SQL-Ledger configuration directions.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_adp_return&amp;diff=4881</id>
		<title>Ns adp return</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_adp_return&amp;diff=4881"/>
		<updated>2006-03-19T03:12:25Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 71.199.11.215, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_adp_return.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_adp_return - Stop processing of the current ADP and return up the call stack&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_adp_return''' ''?retval?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command ends processing of the current ADP and returns up the call stack, possibly to a previous ADP that had included the current one.  Returns ''retval'' or an empty string by default.&lt;br /&gt;
&lt;br /&gt;
: Note that this command returns only one level up the call stack.  To return all the way up the call stack, use [[ns_adp_break]]. &lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_adp_abort]], [[ns_adp_append]], [[ns_adp_argc]], [[ns_adp_argv]], [[ns_adp_bind_args]], [[ns_adp_break]], [[ns_adp_debug]], [[ns_adp_debuginit]], [[ns_adp_dir]], [[ns_adp_dump]], [[ns_adp_eval]], [[ns_adp_exception]], [[ns_adp_include]], [[ns_adp_mime]], [[ns_adp_mimetype]], [[ns_adp_parse]], [[ns_adp_puts]], [[ns_adp_registeradp]], [[ns_adp_registerproc]], [[ns_adp_registertag]], [[ns_adp_safeeval]], [[ns_adp_stats]], [[ns_adp_stream]], [[ns_adp_tell]], [[ns_adp_trunc]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_set&amp;diff=4880</id>
		<title>Ns set</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_set&amp;diff=4880"/>
		<updated>2006-03-19T03:12:12Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.37.179.235, changed back to last version by Caveman&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_set.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_set - Manipulate sets of key-value pairs&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_set''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command is used to manipulate sets of key-value pairs or &amp;quot;fields&amp;quot;.  The fields in the set are ordered by number.  The field numbers start at zero and increase by one, up to the total number of fields.  An '''ns_set''' is actually a multiset - in other words, the same key can appear multiple times in the same set.  This data structure is particularly useful for things like HTTP headers which have this same property.&lt;br /&gt;
&lt;br /&gt;
: The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
* '''ns_set array''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the contents of the ''setId'' in a string representation similar to Tcl's '''array get''' format.  This is useful for converting an '''ns_set''' to an '''array''' or for iterating over the key-value pairs with '''foreach'''.  Since '''ns_set'''s can contain the same key multiple times, converting an '''ns_set''' to an '''array''' can result in an array that is not exactly the same as the original '''ns_set''' as keys in an array are unique.&lt;br /&gt;
* '''ns_set cleanup'''&lt;br /&gt;
&lt;br /&gt;
: Frees all sets in the current interp.&lt;br /&gt;
* '''ns_set copy''' ''?-persist? setId''&lt;br /&gt;
&lt;br /&gt;
: Returns a new set that has the same name and contents as the set referenced in ''setId''.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set cput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value'', if the field does not already exist in the set.  If the field already exists in the set, the set is unchanged.  Returns the field number of the new field, or the field number of the existing field if it already exists in the set.&lt;br /&gt;
* '''ns_set create''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
* '''ns_set new''' ''?-persist? ?name? ?key? ?value? ...''&lt;br /&gt;
&lt;br /&gt;
: Allocates memory for a new set and returns the setId for the new set.  If ''-persist'' is specified, the new set will not be freed when the current transaction ends, and you can free it later with '''ns_set free'''.  If ''-persist'' is not specified, the new set is automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set delete''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Deletes the field in the set at field number ''fieldNumber''.&lt;br /&gt;
* '''ns_set delkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Removes the first field in the set whose key is ''key''.  Note that there could be multiple fields in the set with this key; this command only removes the first occurrence.&lt;br /&gt;
* '''ns_set find''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the index of the first field in the specified ''setId'' whose ''key'' matches the specified key.  Indexing starts at zero.  If no matching fields are found, '''ns_set find''' returns -1.&lt;br /&gt;
* '''ns_set free''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Frees the specified set.  Sets must be explicitly freed with '''ns_set free''' if the ''-persist'' option was used when creating the set.  Otherwise, sets are automatically freed when the transaction ends.&lt;br /&gt;
* '''ns_set get''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns the first value associated with ''key''.  If ''key'' isn't in the set, an empty string is returned.&lt;br /&gt;
* '''ns_set icput''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set cput'''.&lt;br /&gt;
* '''ns_set idelkey''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set delkey'''.&lt;br /&gt;
* '''ns_set ifind''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set find'''.&lt;br /&gt;
* '''ns_set iget''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set get'''.&lt;br /&gt;
* '''ns_set isnull''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the value of the field specified by ''fieldNumber'' is null and 0 if it is not.  Note that an empty string is not the same as a null.  '''ns_set isnull''' will return 0 if the value is an empty string.&lt;br /&gt;
* '''ns_set iunique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Case-insensitive counterpart of '''ns_set unique'''.&lt;br /&gt;
* '''ns_set key''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the key for the field numbered ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set in order.&lt;br /&gt;
* '''ns_set list''' ''?-shared?''&lt;br /&gt;
&lt;br /&gt;
: Returns the list of all non-persistent '''ns_set'''s.  If ''-shared'' is specified, this command returns only the list of persistent '''ns_set'''s.&lt;br /&gt;
* '''ns_set merge''' ''high low''&lt;br /&gt;
&lt;br /&gt;
: Merges two sets.  Any fields in the ''low'' set are appended to the ''high'' set if a field with the same key name does not already exist in the ''high'' set.&lt;br /&gt;
* '''ns_set move''' ''to from''&lt;br /&gt;
&lt;br /&gt;
: Moves all fields from the ''from'' set to the end of the ''to'' set, leaving the ''from'' set a valid, empty set.&lt;br /&gt;
* '''ns_set name''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the name of the set.  Returns an empty string if no name has been set.&lt;br /&gt;
* '''ns_set print''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Prints the specified set to stderr which should go to the server log.  This is useful for debugging, but '''ns_set array''' may be more useful in actual code.&lt;br /&gt;
* '''ns_set put''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Appends a new field to the set with ''key'' and ''value''.  Note that the field is appended so if a previous field has the same key as the new field, the previous field will be returned by '''ns_set get'''.  The field number of the new field is returned.&lt;br /&gt;
* '''ns_set size''' ''setId''&lt;br /&gt;
&lt;br /&gt;
: Returns the number of fields in the set.&lt;br /&gt;
* '''ns_set split''' ''?-persist? setId ?splitChar?''&lt;br /&gt;
&lt;br /&gt;
: Splits one set into multiple sets based on the ''splitChar'' as described below and returns a Tcl list of IDs for the newly-allocated sets.  It assumes that the keys in the source ''setId'' contain a specific character (''splitChar'') that can be used to separate the name of a new set and the key in the new set.  The default ''splitChar'' is a period &amp;quot;.&amp;quot;.&lt;br /&gt;
* '''ns_set truncate''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Removes any fields with index ''fieldNumber'' or greater and frees any memory allocated for them.&lt;br /&gt;
* '''ns_set unique''' ''setId key''&lt;br /&gt;
&lt;br /&gt;
: Returns 1 if the specified key is unique in the specified set and 0 if it is not.  For example, a web browser could send multiple &amp;quot;Accept:&amp;quot; headers which would end up in the header set for the connection.  '''ns_set unique''' would return 0 for the &amp;quot;Accept:&amp;quot; key, because there are multiple fields with the key &amp;quot;Accept:&amp;quot;.  The test for uniqueness is performed case-sensitively.&lt;br /&gt;
* '''ns_set update''' ''setId key value''&lt;br /&gt;
&lt;br /&gt;
: Updates the first field in the specified set whose key is ''key'' and replaces its value with ''value''.  This is equivalent to '''ns_set delkey''' followed by '''ns_set put''' if there is only one field with the key of ''key''.&lt;br /&gt;
* '''ns_set value''' ''setId fieldNumber''&lt;br /&gt;
&lt;br /&gt;
: Returns the value of the set at field number ''fieldNumber''.  This command is useful when looping through all the key-value pairs in the set.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % set mySet [ns_set create mySetName a b c d e f A Joe B John C Jeff]&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set size $mySet&lt;br /&gt;
    6&lt;br /&gt;
&lt;br /&gt;
    % ns_set name $mySet&lt;br /&gt;
    mySetName&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    a b c d e f A Joe B John C Jeff&lt;br /&gt;
&lt;br /&gt;
    % ns_set get $mySet A&lt;br /&gt;
    Joe&lt;br /&gt;
&lt;br /&gt;
    % ns_set iget $mySet a&lt;br /&gt;
    b&lt;br /&gt;
&lt;br /&gt;
    % ns_set unique $mySet a&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set iunique $mySet a&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set truncate $mySet 3&lt;br /&gt;
   &lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            c = d&lt;br /&gt;
            e = f&lt;br /&gt;
&lt;br /&gt;
    % ns_set update $mySet c &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $mySet&lt;br /&gt;
    mySetName:&lt;br /&gt;
            a = b&lt;br /&gt;
            e = f&lt;br /&gt;
            c = Hello World!&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet c&lt;br /&gt;
    2&lt;br /&gt;
&lt;br /&gt;
    % ns_set find $mySet nokey&lt;br /&gt;
    -1&lt;br /&gt;
&lt;br /&gt;
    % ns_set delete $mySet 0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % set anotherSet [ns_set create]&lt;br /&gt;
    d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set list&lt;br /&gt;
    d0 d1&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet dog.food &amp;quot;Yummy dog food!&amp;quot;&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
    % ns_set put $anotherSet cat.food &amp;quot;Yummy cat food!&amp;quot;&lt;br /&gt;
    1&lt;br /&gt;
&lt;br /&gt;
    % ns_set print $anotherSet&lt;br /&gt;
    &amp;lt;Unamed set&amp;gt;:&lt;br /&gt;
            dog.food = Yummy dog food!&lt;br /&gt;
            cat.food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % set newSets [ns_set split $anotherSet]&lt;br /&gt;
    d2 d3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    % foreach s $newSets { ns_set print $s }&lt;br /&gt;
    dog:&lt;br /&gt;
            food = Yummy dog food!&lt;br /&gt;
    cat:&lt;br /&gt;
            food = Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set key $anotherSet 0&lt;br /&gt;
    dog.food&lt;br /&gt;
&lt;br /&gt;
    % ns_set value $anotherSet 1&lt;br /&gt;
    Yummy cat food!&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $mySet $anotherSet&lt;br /&gt;
    d0&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $mySet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $anotherSet&lt;br /&gt;
&lt;br /&gt;
    % set thirdSet [ns_set new]&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set move $thirdSet $mySet&lt;br /&gt;
    d4&lt;br /&gt;
&lt;br /&gt;
    % ns_set array $thirdSet&lt;br /&gt;
    e f c {Hello World!} dog.food {Yummy dog food!} cat.food {Yummy cat food!}&lt;br /&gt;
&lt;br /&gt;
    % array set testArray [ns_set array $thirdSet]&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
: The ns_set command currently reports that it accepts two additional subcommands, idelete and purge.  These are both noops (idelete may be a mistake as delete is already case-irrelevant).&lt;br /&gt;
&lt;br /&gt;
: NULL values, distinct from the empty string, are useful when representing a database row as an ns_set.  Currently, it is difficult to get a NULL value in an ns_set through the TCL API.  You may get a NULL value in the set created by [[ns_parsequery]] or by omitting the last value when seeding the ns_set in the create/new subcommand, etc.  It is possible to create NULL-valued fields through the C API.&lt;br /&gt;
&lt;br /&gt;
: ns_set is intended for relatively ''small'' amounts of data.  (Keys are found by a ''linear'' search through the whole underlying C array.)  If you stuff very large amounts of data into an ns_set, performance will be very poor - use a Tcl Array instead for that.&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_findset]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnnotfound&amp;diff=4879</id>
		<title>Ns returnnotfound</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_returnnotfound&amp;diff=4879"/>
		<updated>2006-03-19T03:11:56Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 67.183.149.64, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_returnnotfound.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_returnnotfound - Return a 404 (Not Found) status message to the client&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_returnnotfound''' ''?connid?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command informs the client that the content they requested could not be located given the URL that was requested.&lt;br /&gt;
&lt;br /&gt;
: The optional ''connid'' parameter is deprecated and should not be used.&lt;br /&gt;
&lt;br /&gt;
: '''Note:''' The script does not end at the time this command is invoked.  [[ns_adp_abort]] or [[ns_adp_return]] should be called to end script processing after '''ns_returnnotfound'''.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    ns_returnnotfound&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_return]], [[ns_returnadminnotice]], [[ns_returnbadrequest]], [[ns_returnerror]], [[ns_returnfile]], [[ns_returnforbidden]], [[ns_returnfp]], [[ns_returnnotice]], [[ns_returnok]], [[ns_returnredirect]], [[ns_returnunauthorized]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Jk-voting-template&amp;diff=4878</id>
		<title>Jk-voting-template</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Jk-voting-template&amp;diff=4878"/>
		<updated>2006-03-19T03:11:43Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 71.130.196.168, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;proc template {fn keyset} { &lt;br /&gt;
    set h [[open &amp;quot;[ns_info pageroot]]/templates/$fn&amp;quot; r]&lt;br /&gt;
    set cont [[read $h]]&lt;br /&gt;
    close $h&lt;br /&gt;
&lt;br /&gt;
    set keymap &amp;quot;&amp;quot;&lt;br /&gt;
    for {set x 0} {$x &amp;lt; [[ns_set size $keyset]]} {incr x} {&lt;br /&gt;
        set key [[ns_set key $keyset $x]]&lt;br /&gt;
        set value [[ns_set value $keyset $x]]&lt;br /&gt;
        lappend keymap &amp;quot;%%%%$key%%%%&amp;quot;&lt;br /&gt;
        lappend keymap $value&lt;br /&gt;
    }&lt;br /&gt;
    if {$keymap != &amp;quot;&amp;quot;} {&lt;br /&gt;
        set cont [[string map $keymap $cont]]&lt;br /&gt;
    }&lt;br /&gt;
    return $cont&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Jk-voting&amp;diff=4877</id>
		<title>Jk-voting</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Jk-voting&amp;diff=4877"/>
		<updated>2006-03-19T03:11:16Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: rollback&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Database Backed Voting Booth&lt;br /&gt;
&lt;br /&gt;
In theory, this is a well commented walk-through of how one might impliment a flexible voting booth in AOLserver.  My purpose isn't to provide a plug-in voting booth module but rather to demonstrate one style of AOLserver programming.  I don't know what the best way to present this is, so feel free to edit (after all, that's what a wiki is all about).&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting vote_subjects'''&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting/new_subject new_subject'''&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting/place_vote place_vote'''&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting/delete_subject delete_subject'''&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting/dovote dovote'''&lt;br /&gt;
&lt;br /&gt;
'''ns_register_proc GET /voting/view view_vote'''&lt;br /&gt;
&lt;br /&gt;
Ok, mockery of my questionably named procedures aside here is the overview.  My preference is to have each .tcl file impliment one collection of related functions.  In this case all the code specific to the Voting booth is in one file.  I like to put all the ns_register_proc's right at the top so I always know where to look when correlating a URL with it's procedure.&lt;br /&gt;
&lt;br /&gt;
Six URL's for a voting booth might seem excessive, let me explain the purpose of each first and then we'll get to the code itself (the code is the easy part).&lt;br /&gt;
&lt;br /&gt;
''/voting'' -- this is the top-level url for the voting booth.  It presents the first voting-related page I want the end users to see.  Some folks might prefer /voting.html (which has some advantages, even the dumbest browsers won't have any trouble mime-typing it) but I like to only use .html extentions for static pages.  Maybe that's weird.&lt;br /&gt;
&lt;br /&gt;
''/voting/new_subject'' -- When a user wants to add a new subject for voting this is the URL called in the &amp;lt;form action= field (lets see how the wiki handles broken html...).  The relevant form values are described in the comments near the &amp;quot;new_subject&amp;quot; procedure.  I used to comment form values up here near the ns_register_proc but I've found that when I do that, they don't stay current (my lazyness or an inherent inefficiency problem, I'll declare the latter rather than risking the former).&lt;br /&gt;
&lt;br /&gt;
''/voting/place_vote'' -- this is a badly named url/procedure.  It's badly named because it's actually presenting all the possible voting choices, not placing an actual vote.  A better name would be &amp;quot;present_choices&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''/voting/delete_subject'' -- I really like to empower users to maintain a web site by themselves.  If I leave for a month, I don't want to see piles of cruft.  So the voting booth allows whichever user created a given topic to delete it.  This is the &amp;lt;form action reciever for a user deleting one of their voting topics.&lt;br /&gt;
&lt;br /&gt;
''/voting/dovote'' -- actually place_vote would be better but I already mis-used that one.  This does the actual voting.  It's somewhat complex because I want users to be able to change their votes after the fact.  The method I'm using to allow for such changes is highly questionable (it works, but I have every reason to believe it doesn't scale).  The ability of a site to scale nicely is really underrated.  Bad algorithms (like the one I'm using here) can work for a small site with fifty hits a day, but if you get pounded for some reason (slashdot-effect) you're dead in the water.  Another important scaling concern isn't hits, but expandability.  In this case, if there are more than a couple dozen voting subjects the page gets so cluttered and some of the DB lookups get so slow that the usability of the site is flushed.&lt;br /&gt;
&lt;br /&gt;
''/voting/view'' -- finally a nice simple one.  view_vote displays a quick summary of the voting results for a given subject.  I tossed in a hack to allow this to also display results immediatly after someone votes with their vote highlighted.  Yes, it's a hack.  I call it that not because I'm risking DMCA violations but rather because it breaks the paradygm under which the module was designed.   /voting/dovote doesn't actually ns_return anything.  Instead it hands off to /voting/view; a dangerous choice because a problem might be more difficult to track down (it may not be immediatly apparant if the problem is in dovote or view), resulting in a potential for extra work down the road.&lt;br /&gt;
&lt;br /&gt;
'''Database Schema'''&lt;br /&gt;
&lt;br /&gt;
I can hear the database experts out there groaning.  There are a number of flaws (one glaring flaw) in these two tables.  I like to create procedures like this because when you're coding by the seat of your pants the schema is going to get tweaked.  Dropping the tables and sequences by hand is quick but recreating them is a hassle.&lt;br /&gt;
&lt;br /&gt;
[[jk-voting-force_voting_exist]]&lt;br /&gt;
&lt;br /&gt;
Now for the procedures that make up the voting booth.  First the entire vote_subjects procedure then I'll pull it apart and explain the odd parts.&lt;br /&gt;
&lt;br /&gt;
[[jk-voting-vote_subjects]]&lt;br /&gt;
&lt;br /&gt;
I'll be deliriously optimistic and assume that the entire procedure make sense with the exception of these two lines:&lt;br /&gt;
&lt;br /&gt;
  set userrow [[user $db $conn]]&lt;br /&gt;
  append subject_lines [[template &amp;quot;voting_subject.html&amp;quot; $content_set]]&lt;br /&gt;
&lt;br /&gt;
The first calls the &amp;quot;user&amp;quot; procedure which actually checks against a cookie to see who is logged on, validates their password and returns an ns_set of information about the user (simple enough).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;template&amp;quot; procedure is outragously useful.  Here it is:&lt;br /&gt;
&lt;br /&gt;
[[jk-voting-template]]&lt;br /&gt;
&lt;br /&gt;
That's it.  It takes a file and an ns_set of key-value pairs.  It replaces every instance of %%%%key%%%% with the corresponding value from the ns_set.  This lets you create your page in _any_ html editor, just put %%%%keyname%%%% in for anything that needs to be dynamic.  The alternatives are ADP or hardcoding html.  ADP is a pretty good solution but I like to have a stronger barrier between code and data.  Actually the latest Dr Dobbs (Feb 2002) has an article about Zope's approach to this very question.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''Why do your own variable interpolation yourself, when you could have just used ns_adp_include of your template files, and used &amp;lt;% ns_set get key %&amp;gt; wherever appropriate, instead?  Just curious ...'' -- [[Dossy]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I ought to. ;)  It's possible my template procedure is a little faster (no eval), and I can give users access to editing the template files without huge potential for destruction.  But I still ought to switch. [[Jason Kane]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
In case that wasn't quite clear, here are the templates themselves:&lt;br /&gt;
&lt;br /&gt;
[[jk-voting-voting_subject_page.html]]&lt;br /&gt;
&lt;br /&gt;
[[jk-voting-voting_subject.html]]&lt;br /&gt;
&lt;br /&gt;
Now that we know how to display all the voting topics, we need to actually let people ''vote''.  But before they can vote, they need to know what the options are.  Since this is slick-n-smooth voting booth, they also need to be able to add new voting options.  While we're at it, if this user has already voting on this subject we want to re-present all of the options but default to whatever they chose last time.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=See_if_it_happens_again&amp;diff=4864</id>
		<title>See if it happens again</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=See_if_it_happens_again&amp;diff=4864"/>
		<updated>2006-03-18T21:59:47Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 67.183.149.64, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A systems engineer, mechanical engineer, and a software engineer are in a car careening down a mountainous road without brakes.  The driver is furiously pumping the pedal while he steers the speeding car around the treacherous turns - stones flying and passengers gasping.  Finally, he finds an incline and the car coasts to a stop.  All three get out and, thanking their lucky stars, begin to assess the situation.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Oh,&amp;quot; says the mechanical engineer, &amp;quot;the brake lines are leaking - lets patch the hole, bleed the brakes and be on our way!&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
The systems engineer said &amp;quot;maybe we should consult with the manufacturer and the dealer to ensure that is really the problem.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
The software engineer said &amp;quot;why don't we get back in and see if it happens again?&amp;quot;&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_db&amp;diff=4863</id>
		<title>Ns db</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_db&amp;diff=4863"/>
		<updated>2006-03-18T21:59:32Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.239.124.88, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_db.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_db - Standard database access API.&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_db''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
This command provides a mechanism to access databases.  The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
* '''ns_db bindrow''' ''dbhandle''&lt;br /&gt;
* '''ns_db bouncepool''' ''poolname''&lt;br /&gt;
&lt;br /&gt;
: Marks all database handles for the specified database pool as stale. When any database handle currently open is put back into the pool, its connection to the database will be reset.&lt;br /&gt;
* '''ns_db cancel''' ''dbhandle''&lt;br /&gt;
* '''ns_db close''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Closes the connection. Use this function only on handles that were obtained by the '''ns_db open''' function.  The server automatically close handles when the operation is complete, so you don't normally have to call this function.&lt;br /&gt;
* '''ns_db connected''' ''dbhandle''&lt;br /&gt;
* '''ns_db datasource''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Returns the datasource for the database pool.&lt;br /&gt;
* '''ns_db dbtype''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Returns the database type for the database pool.&lt;br /&gt;
* '''ns_db dml''' ''dbhandle sql''&lt;br /&gt;
* '''ns_db driver''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Returns the name of the driver of the handle.&lt;br /&gt;
* '''ns_db exception''' ''dbhandle''&lt;br /&gt;
* '''ns_db exec''' ''dbhandle sqlcommand''&lt;br /&gt;
&lt;br /&gt;
: Executes the specified SQL command. It returns either NS_DML (if the SQL command is a DML or DDL command) or NS_ROWS (if the SQL command returns rows, such as a SELECT).  This function can be used for ad hoc querying, where you don't know what kind of SQL command will be executed.  &lt;br /&gt;
* '''ns_db flush''' ''dbhandle''&lt;br /&gt;
* '''ns_db gethandle''' ''?-timeout timeout? poolname ?nhandles?''&lt;br /&gt;
* '''ns_db getrow''' ''dbhandle setId''&lt;br /&gt;
* '''ns_db open''' ''driver datasource user password''&lt;br /&gt;
* '''ns_db poolname''' ''dbhandle''&lt;br /&gt;
* '''ns_db pools'''&lt;br /&gt;
* '''ns_db releasehandle''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Puts the handle back in the pool.  The server will automatically return any open handles to the pool after a page has finished executing.&lt;br /&gt;
* '''ns_db 1row''' ''dbhandle sql''&lt;br /&gt;
&lt;br /&gt;
: This command expects the SQL to be a select statement that returns exactly one row and returns that row as an ns_set.  An error is returned if zero or more than one row is returned.&lt;br /&gt;
* '''ns_db 0or1row''' ''dbhandle sql''&lt;br /&gt;
&lt;br /&gt;
: This command expects the SQL to be a select statement that returns exactly zero or one row. On zero rows, a null string is returned. On one row, a newly allocated ns_set is returned.  An error is thrown if more then one row is returned.&lt;br /&gt;
* '''ns_db password''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Returns the password of the user for the database pool.&lt;br /&gt;
* '''ns_db select''' ''dbhandle sql''&lt;br /&gt;
* '''ns_db setexception''' ''dbhandle code message''&lt;br /&gt;
* '''ns_db sp_exec''' ''dbhandle''&lt;br /&gt;
* '''ns_db sp_getparams'''&lt;br /&gt;
* '''ns_db sp_returncode''' ''dbhandle''&lt;br /&gt;
* '''ns_db sp_setparam''' ''dbhandle varname vartype inout value''&lt;br /&gt;
* '''ns_db sp_start''' ''dbhandle procname''&lt;br /&gt;
* '''ns_db user''' ''dbhandle''&lt;br /&gt;
&lt;br /&gt;
: Returns the user for the database pool.&lt;br /&gt;
* '''ns_db verbose''' ''dbhandle ?on | off?''&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_buildsqldate]], [[ns_buildsqltime]], [[ns_buildsqltimestamp]], [[ns_dbquotename]], [[ns_dbquotevalue]], [[ns_localsqltimestamp]], [[ns_parsesqldate]], [[ns_parsesqltime]], [[ns_parsesqltimestamp]], [[ns_writecsv]]&lt;br /&gt;
&lt;br /&gt;
: The tutorial [[Accessing A Database]] shows some very simple '''ns_db''' usage&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_cp&amp;diff=4861</id>
		<title>Ns cp</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_cp&amp;diff=4861"/>
		<updated>2006-03-18T21:59:05Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.37.179.235, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man page: http://aolserver.com/docs/tcl/ns_cp.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
ns_cp - Copy one file to another.&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
'''ns_cp''' ''?-preserve? file1 file2''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
ns_cp copies the contents of ''file1'' to ''file2'', just like the Unix &amp;quot;cp&amp;quot; command. The default directory is the home directory for the server.&lt;br /&gt;
&lt;br /&gt;
If ''-preserve'' is specified, the copied file will retain the creation time, modification time, owner, and mode of the original file, just like the Unix &amp;quot;cp -p&amp;quot; command. &lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
Tcl [file copy], [[ns_cpfp]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Daniel_P._Stasinski&amp;diff=4860</id>
		<title>Daniel P. Stasinski</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Daniel_P._Stasinski&amp;diff=4860"/>
		<updated>2006-03-18T21:58:32Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.239.124.88, changed back to last version by 207.224.16.158&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Daniel P. Stasinski (mailto:daniels@mayorlabs.com, mailto:daniels@avenues.org)&lt;br /&gt;
&lt;br /&gt;
I'm Daniel P. Stasinski, and am currently lead Software Engineer and Internet Development Administrator for Mayor Pharmaceutical Laboratories in Phoenix, AZ. Prior to that I ran a software publishing company (DSE Software Publishing) for about 15 years in a small Northern California town. Needing a change, I sold the product line to various publishers and moved to hot Phoenix.&lt;br /&gt;
&lt;br /&gt;
I've always believed that instead of going only with what you know or which way the wind blows, you use the tool that best suits the project at hand. For my web development needs, AOLserver and TCL have been best. For other needs I usually choose between 80x86 assembler, BASIC, C, Delphi Pascal, java, or perl. A lifetime ago I even chose Prolog for a project solution.&lt;br /&gt;
&lt;br /&gt;
My latest TCL related project is x10bot, a home automation daemon for x10 CM11A appliance controller and accessories under Linux. If you're interested, it can be found at http://www.scriptkitties.com/x10bot/&lt;br /&gt;
&lt;br /&gt;
Other completed projects are the [[ns_encrypt]] module for AOLserver and a TCL plugin for the XChat IRC client.&lt;br /&gt;
&lt;br /&gt;
My most recent AOLserver TCL project was bringing back the old AOLserver Administration Pages to v3.x. These can be found at http://www.scriptkitties.com/ too. Other AOLserver projects included building blowfish and twofish encryption as a shared module and also a Windows DLL. Other assorted projects include a couple megs of custom C and TCL code.&lt;br /&gt;
&lt;br /&gt;
Next on the agenda is a TCL enabled sendmail milter (filter), inspired by the perl sendmail::milter.&lt;br /&gt;
&lt;br /&gt;
My current project is developing my newest site at:&lt;br /&gt;
&lt;br /&gt;
   http://www.saidsimple.com/&lt;br /&gt;
&lt;br /&gt;
[[Dossy]] 26apr04: ''Nice blend of wiki, MovableType and Gallery.  Looks like you rolled your own WikiEngine?  Hope you get lots of mileage out of SaidSimple -- good job.''&lt;br /&gt;
&lt;br /&gt;
[[Category:Person|Stasinski, Daniel P.]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Kriston_J._Rehberg&amp;diff=4859</id>
		<title>Kriston J. Rehberg</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Kriston_J._Rehberg&amp;diff=4859"/>
		<updated>2006-03-18T21:58:13Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: revert to correct version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;mailto:Kriston@AOL.COM&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Worked for America Online as a Software Engineer from 1996 through 2002.&lt;br /&gt;
He can be found at http://kriston.net/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Home Page]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Kriston_J._Rehberg&amp;diff=4858</id>
		<title>Kriston J. Rehberg</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Kriston_J._Rehberg&amp;diff=4858"/>
		<updated>2006-03-18T21:57:36Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.246.172.124, changed back to last version by 24.20.162.126&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4857</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4857"/>
		<updated>2006-03-18T21:56:47Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.115.25.69, changed back to last version by 82.135.77.129&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
* [[AOLserver Jobs]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Private_C_API&amp;diff=4856</id>
		<title>Private C API</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Private_C_API&amp;diff=4856"/>
		<updated>2006-03-18T21:56:19Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.154.233.104, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When hacking on the core AOLserver itself, the functions defined in the nsd.h header are available, listed below.  People writing loadable modules should use the public [[C API]] and [[Tcl API]].&lt;br /&gt;
* [[NsAdpCache()]]&lt;br /&gt;
* [[NsAdpProc()]]&lt;br /&gt;
* [[NsBlockSignals()]]&lt;br /&gt;
* [[NsCacheArgProc()]]&lt;br /&gt;
* [[NsCachePurge()]]&lt;br /&gt;
* [[NsCloseAllFiles()]]&lt;br /&gt;
* [[NsClosePreBound()]]&lt;br /&gt;
* [[NsClsCleanup()]]&lt;br /&gt;
* [[NsComputeEncodingFromType()]]&lt;br /&gt;
* [[NsConfigEval()]]&lt;br /&gt;
* [[NsConfigRead()]]&lt;br /&gt;
* [[NsConfUpdate()]]&lt;br /&gt;
* [[NsConnArgProc()]]&lt;br /&gt;
* [[NsConnectService()]]&lt;br /&gt;
* [[NsConnRunProxyRequest()]]&lt;br /&gt;
* [[NsConnThread()]]&lt;br /&gt;
* [[NsCreatePidFile()]]&lt;br /&gt;
* [[NsEnableDNSCache()]]&lt;br /&gt;
* [[NsFastGet()]]&lt;br /&gt;
* [[NsFastpathCache()]]&lt;br /&gt;
* [[NsFreeConn()]]&lt;br /&gt;
* [[NsGetBuf()]]&lt;br /&gt;
* [[NsGetCallbacks()]]&lt;br /&gt;
* [[NsGetInitServer()]]&lt;br /&gt;
* [[NsGetInterp()]]&lt;br /&gt;
* [[NsGetScheduled()]]&lt;br /&gt;
* [[NsGetServer()]]&lt;br /&gt;
* [[NsGetSockCallbacks()]]&lt;br /&gt;
* [[NsGetTypeEncodingWithDef()]]&lt;br /&gt;
* [[NsHandleSignals()]]&lt;br /&gt;
* [[NsInitBinder()]]&lt;br /&gt;
* [[NsInitCache()]]&lt;br /&gt;
* [[NsInitConf()]]&lt;br /&gt;
* [[NsInitDrivers()]]&lt;br /&gt;
* [[NsInitEncodings()]]&lt;br /&gt;
* [[NsInitListen()]]&lt;br /&gt;
* [[NsInitLog()]]&lt;br /&gt;
* [[NsInitMimeTypes()]]&lt;br /&gt;
* [[NsInitModLoad()]]&lt;br /&gt;
* [[NsInitProcInfo()]]&lt;br /&gt;
* [[NsInitQueue()]]&lt;br /&gt;
* [[NsInitRequests()]]&lt;br /&gt;
* [[NsInitSched()]]&lt;br /&gt;
* [[NsInitServer()]]&lt;br /&gt;
* [[NsInitTcl()]]&lt;br /&gt;
* [[NsInitUrlSpace()]]&lt;br /&gt;
* [[NsInstallService()]]&lt;br /&gt;
* [[NsInterp()]]&lt;br /&gt;
* [[NsIsIdConn()]]&lt;br /&gt;
* [[NsLoadModules()]]&lt;br /&gt;
* [[NsLogOpen()]]&lt;br /&gt;
* [[NsMapPool()]]&lt;br /&gt;
* [[NsPreBind()]]&lt;br /&gt;
* [[NsQueueConn()]]&lt;br /&gt;
* [[NsRemovePidFile()]]&lt;br /&gt;
* [[NsRemoveService()]]&lt;br /&gt;
* [[NsRestoreSignals()]]&lt;br /&gt;
* [[NsRunAtClose()]]&lt;br /&gt;
* [[NsRunAtExitProcs()]]&lt;br /&gt;
* [[NsRunAtReadyProcs()]]&lt;br /&gt;
* [[NsRunCleanups()]]&lt;br /&gt;
* [[NsRunFilters()]]&lt;br /&gt;
* [[NsRunPreStartupProcs()]]&lt;br /&gt;
* [[NsRunSignalProcs()]]&lt;br /&gt;
* [[NsRunStartupProcs()]]&lt;br /&gt;
* [[NsRunTraces()]]&lt;br /&gt;
* [[NsSendSignal()]]&lt;br /&gt;
* [[NsServer()]]&lt;br /&gt;
* [[NsSockClose()]]&lt;br /&gt;
* [[NsSockSend()]]&lt;br /&gt;
* [[NsStartDrivers()]]&lt;br /&gt;
* [[NsStartJobsShutdown()]]&lt;br /&gt;
* [[NsStartSchedShutdown()]]&lt;br /&gt;
* [[NsStartServers()]]&lt;br /&gt;
* [[NsStartShutdownProcs()]]&lt;br /&gt;
* [[NsStartSockShutdown()]]&lt;br /&gt;
* [[NsStopDrivers()]]&lt;br /&gt;
* [[NsStopScheduledProcs()]]&lt;br /&gt;
* [[NsStopServers()]]&lt;br /&gt;
* [[NsStopSockCallbacks()]]&lt;br /&gt;
* [[NsTclArgProc()]]&lt;br /&gt;
* [[NsTclCallback()]]&lt;br /&gt;
* [[NsTclConnId()]]&lt;br /&gt;
* [[NsTclCreateBuckets()]]&lt;br /&gt;
* [[NsTclCreateCmds()]]&lt;br /&gt;
* [[NsTclInitAddrType()]]&lt;br /&gt;
* [[NsTclInitObjs()]]&lt;br /&gt;
* [[NsTclInitQueueType()]]&lt;br /&gt;
* [[NsTclInitServer()]]&lt;br /&gt;
* [[NsTclInitTimeType()]]&lt;br /&gt;
* [[NsTclSchedProc()]]&lt;br /&gt;
* [[NsTclSignalProc()]]&lt;br /&gt;
* [[NsTclSockArgProc()]]&lt;br /&gt;
* [[NsTclSockProc()]]&lt;br /&gt;
* [[NsTclThread()]]&lt;br /&gt;
* [[NsTclThreadArgProc()]]&lt;br /&gt;
* [[NsUpdateEncodings()]]&lt;br /&gt;
* [[NsUpdateMimeTypes()]]&lt;br /&gt;
* [[NsUpdateUrlEncode()]]&lt;br /&gt;
* [[NsWaitDriversShutdown()]]&lt;br /&gt;
* [[NsWaitJobsShutdown()]]&lt;br /&gt;
* [[NsWaitSchedShutdown()]]&lt;br /&gt;
* [[NsWaitShutdownProcs()]]&lt;br /&gt;
* [[NsWaitSockShutdown()]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Private C API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=C_API&amp;diff=4855</id>
		<title>C API</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=C_API&amp;diff=4855"/>
		<updated>2006-03-18T21:55:39Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.119.228.55, changed back to last version by Caveman&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AOLserver public C API for people writing [[modules]].&lt;br /&gt;
* [[Ns_AdpParserProc()]]&lt;br /&gt;
* [[Ns_ArgProc()]]&lt;br /&gt;
* [[Ns_AuthorizeRequest()]]&lt;br /&gt;
* [[Ns_AuthorizeUser()]]&lt;br /&gt;
* [[Ns_BindSock()]]&lt;br /&gt;
* [[Ns_Cache()]]&lt;br /&gt;
* [[Ns_CacheCreate()]]&lt;br /&gt;
* [[Ns_CacheCreateSz()]]&lt;br /&gt;
* [[Ns_CacheFind()]]&lt;br /&gt;
* [[Ns_CacheSearch()]]&lt;br /&gt;
* [[Ns_Callback()]]&lt;br /&gt;
* [[Ns_Cancel()]]&lt;br /&gt;
* [[Ns_ClearSockErrno()]]&lt;br /&gt;
* [[Ns_CloseOnExec()]]&lt;br /&gt;
* [[Ns_Cls()]]&lt;br /&gt;
* [[Ns_ConfigGetBool()]]&lt;br /&gt;
* [[Ns_ConfigGetInt()]]&lt;br /&gt;
* [[Ns_ConfigGetInt64()]]&lt;br /&gt;
* [[Ns_ConfigGetPath()]]&lt;br /&gt;
* [[Ns_ConfigGetSection()]]&lt;br /&gt;
* [[Ns_ConfigGetSections()]]&lt;br /&gt;
* [[Ns_ConfigGetValue()]]&lt;br /&gt;
* [[Ns_ConfigGetValueExact()]]&lt;br /&gt;
* [[Ns_Conn()]]&lt;br /&gt;
* [[Ns_ConnCondSetHeaders()]]&lt;br /&gt;
* [[Ns_ConnFlushHeaders()]]&lt;br /&gt;
* [[Ns_ConnPrintfHeader()]]&lt;br /&gt;
* [[Ns_ConnPuts()]]&lt;br /&gt;
* [[Ns_ConnReplaceHeaders()]]&lt;br /&gt;
* [[Ns_ConnResetReturn()]]&lt;br /&gt;
* [[Ns_ConnReturnAdminNotice()]]&lt;br /&gt;
* [[Ns_ConnReturnBadRequest()]]&lt;br /&gt;
* [[Ns_ConnReturnFile()]]&lt;br /&gt;
* [[Ns_ConnReturnForbidden()]]&lt;br /&gt;
* [[Ns_ConnReturnHtml()]]&lt;br /&gt;
* [[Ns_ConnReturnInternalError()]]&lt;br /&gt;
* [[Ns_ConnReturnNoResponse()]]&lt;br /&gt;
* [[Ns_ConnReturnNotFound()]]&lt;br /&gt;
* [[Ns_ConnReturnNotice()]]&lt;br /&gt;
* [[Ns_ConnReturnNotImplemented()]]&lt;br /&gt;
* [[Ns_ConnReturnNotModified()]]&lt;br /&gt;
* [[Ns_ConnReturnOk()]]&lt;br /&gt;
* [[Ns_ConnReturnOpenFile()]]&lt;br /&gt;
* [[Ns_ConnReturnRedirect()]]&lt;br /&gt;
* [[Ns_ConnReturnStatus()]]&lt;br /&gt;
* [[Ns_ConnReturnUnauthorized()]]&lt;br /&gt;
* [[Ns_ConnSetExpiresHeader()]]&lt;br /&gt;
* [[Ns_ConnSetHeaders()]]&lt;br /&gt;
* [[Ns_ConnSetLastModifiedHeader()]]&lt;br /&gt;
* [[Ns_ConnSetLengthHeader()]]&lt;br /&gt;
* [[Ns_ConnSetRequiredHeaders()]]&lt;br /&gt;
* [[Ns_ConnSetTypeHeader()]]&lt;br /&gt;
* [[Ns_DecodeUrlCharset()]]&lt;br /&gt;
* [[Ns_DRand()]]&lt;br /&gt;
* [[Ns_Driver()]]&lt;br /&gt;
* [[Ns_DriverCmd()]]&lt;br /&gt;
* [[Ns_DriverInit()]]&lt;br /&gt;
* [[Ns_DriverInitData()]]&lt;br /&gt;
* [[Ns_DriverProc()]]&lt;br /&gt;
* [[Ns_DString()]]&lt;br /&gt;
* [[Ns_DStringAppend()]]&lt;br /&gt;
* [[Ns_DStringAppendElement()]]&lt;br /&gt;
* [[Ns_DStringFree()]]&lt;br /&gt;
* [[Ns_DStringInit()]]&lt;br /&gt;
* [[Ns_DStringLength()]]&lt;br /&gt;
* [[Ns_DStringNAppend()]]&lt;br /&gt;
* [[Ns_DStringPop()]]&lt;br /&gt;
* [[Ns_DStringSetLength()]]&lt;br /&gt;
* [[Ns_DStringTrunc()]]&lt;br /&gt;
* [[Ns_DStringValue()]]&lt;br /&gt;
* [[Ns_DupHigh()]]&lt;br /&gt;
* [[Ns_ElemTestProc()]]&lt;br /&gt;
* [[Ns_ElemValProc()]]&lt;br /&gt;
* [[Ns_ElemVoidProc()]]&lt;br /&gt;
* [[Ns_EncodeUrlCharset()]]&lt;br /&gt;
* [[Ns_Encrypt()]]&lt;br /&gt;
* [[Ns_Entry()]]&lt;br /&gt;
* [[Ns_EqualProc()]]&lt;br /&gt;
* [[Ns_ExecArgblk()]]&lt;br /&gt;
* [[Ns_ExecArgv()]]&lt;br /&gt;
* [[Ns_ExecProc()]]&lt;br /&gt;
* [[Ns_ExecProcess()]]&lt;br /&gt;
* [[Ns_Fatal()]]&lt;br /&gt;
* [[Ns_FilterProc()]]&lt;br /&gt;
* [[Ns_FreeRequest()]]&lt;br /&gt;
* [[Ns_GenSeeds()]]&lt;br /&gt;
* [[Ns_GetCharsetEncoding()]]&lt;br /&gt;
* [[Ns_GetConn()]]&lt;br /&gt;
* [[Ns_GetEncoding()]]&lt;br /&gt;
* [[Ns_GetEnviron()]]&lt;br /&gt;
* [[Ns_GetFileEncoding()]]&lt;br /&gt;
* [[Ns_GetGid()]]&lt;br /&gt;
* [[Ns_GetMimeType()]]&lt;br /&gt;
* [[Ns_GetProcInfo()]]&lt;br /&gt;
* [[Ns_GetRequest()]]&lt;br /&gt;
* [[Ns_GetSockAddr()]]&lt;br /&gt;
* [[Ns_GetSockErrno()]]&lt;br /&gt;
* [[Ns_GetTemp()]]&lt;br /&gt;
* [[Ns_GetThreadServer()]]&lt;br /&gt;
* [[Ns_GetTypeEncoding()]]&lt;br /&gt;
* [[Ns_GetUid()]]&lt;br /&gt;
* [[Ns_GetUserGid()]]&lt;br /&gt;
* [[Ns_GetVersion()]]&lt;br /&gt;
* [[Ns_HeaderCaseDisposition()]]&lt;br /&gt;
* [[Ns_HtuuDecode()]]&lt;br /&gt;
* [[Ns_HtuuEncode()]]&lt;br /&gt;
* [[Ns_Index()]]&lt;br /&gt;
* [[Ns_IndexCmpProc()]]&lt;br /&gt;
* [[Ns_IndexCount()]]&lt;br /&gt;
* [[Ns_InfoAddress()]]&lt;br /&gt;
* [[Ns_InfoBootTime()]]&lt;br /&gt;
* [[Ns_InfoBuildDate()]]&lt;br /&gt;
* [[Ns_InfoConfigFile()]]&lt;br /&gt;
* [[Ns_InfoErrorLog()]]&lt;br /&gt;
* [[Ns_InfoHomePath()]]&lt;br /&gt;
* [[Ns_InfoHostname()]]&lt;br /&gt;
* [[Ns_InfoLabel()]]&lt;br /&gt;
* [[Ns_InfoNameOfExecutable()]]&lt;br /&gt;
* [[Ns_InfoPid()]]&lt;br /&gt;
* [[Ns_InfoPlatform()]]&lt;br /&gt;
* [[Ns_InfoServerName()]]&lt;br /&gt;
* [[Ns_InfoServersStarted()]]&lt;br /&gt;
* [[Ns_InfoServerVersion()]]&lt;br /&gt;
* [[Ns_InfoShutdownPending()]]&lt;br /&gt;
* [[Ns_InfoStarted()]]&lt;br /&gt;
* [[Ns_InfoTag()]]&lt;br /&gt;
* [[Ns_InfoUptime()]]&lt;br /&gt;
* [[Ns_IntPrint()]]&lt;br /&gt;
* [[Ns_List()]]&lt;br /&gt;
* [[Ns_ListCons()]]&lt;br /&gt;
* [[Ns_ListFirst()]]&lt;br /&gt;
* [[Ns_ListPush()]]&lt;br /&gt;
* [[Ns_ListRest()]]&lt;br /&gt;
* [[Ns_LocationProc()]]&lt;br /&gt;
* [[Ns_LogRoll()]]&lt;br /&gt;
* [[Ns_LogSeverity()]]&lt;br /&gt;
* [[Ns_LogTime()]]&lt;br /&gt;
* [[Ns_LogTime2()]]&lt;br /&gt;
* [[Ns_Match()]]&lt;br /&gt;
* [[Ns_ModuleGetSymbol()]]&lt;br /&gt;
* [[Ns_ModuleInit()]]&lt;br /&gt;
* [[Ns_ModuleInitProc()]]&lt;br /&gt;
* [[Ns_ModuleLoad()]]&lt;br /&gt;
* [[Ns_ModuleSymbol()]]&lt;br /&gt;
* [[Ns_NextWord()]]&lt;br /&gt;
* [[Ns_NoCloseOnExec()]]&lt;br /&gt;
* [[Ns_OpContext()]]&lt;br /&gt;
* [[Ns_OpProc()]]&lt;br /&gt;
* [[Ns_PageRoot()]]&lt;br /&gt;
* [[Ns_ParseHttpTime()]]&lt;br /&gt;
* [[Ns_ParseRequest()]]&lt;br /&gt;
* [[Ns_ParseUrl()]]&lt;br /&gt;
* [[Ns_PathIsAbsolute()]]&lt;br /&gt;
* [[Ns_Pause()]]&lt;br /&gt;
* [[Ns_PreQueueProc()]]&lt;br /&gt;
* [[Ns_PurgeFiles()]]&lt;br /&gt;
* [[Ns_QueueWaitProc()]]&lt;br /&gt;
* [[Ns_RegisterFilter()]]&lt;br /&gt;
* [[Ns_RegisterProcDesc()]]&lt;br /&gt;
* [[Ns_RegisterRequest()]]&lt;br /&gt;
* [[Ns_RegisterReturn()]]&lt;br /&gt;
* [[Ns_RelativeUrl()]]&lt;br /&gt;
* [[Ns_ReleaseTemp()]]&lt;br /&gt;
* [[Ns_Request()]]&lt;br /&gt;
* [[Ns_RequestAuthorizeProc()]]&lt;br /&gt;
* [[Ns_Resume()]]&lt;br /&gt;
* [[Ns_RollFile()]]&lt;br /&gt;
* [[Ns_RollFileByDate()]]&lt;br /&gt;
* [[Ns_SchedProc()]]&lt;br /&gt;
* [[Ns_Select()]]&lt;br /&gt;
* [[Ns_ServerInitProc()]]&lt;br /&gt;
* [[Ns_ServerSpecificAlloc()]]&lt;br /&gt;
* [[Ns_ServerSpecificDestroy()]]&lt;br /&gt;
* [[Ns_ServerSpecificGet()]]&lt;br /&gt;
* [[Ns_ServerSpecificSet()]]&lt;br /&gt;
* [[ns_set()]]&lt;br /&gt;
* [[Ns_SetCreate()]]&lt;br /&gt;
* [[Ns_SetField()]]&lt;br /&gt;
* [[Ns_SetKey()]]&lt;br /&gt;
* [[Ns_SetLast()]]&lt;br /&gt;
* [[Ns_SetName()]]&lt;br /&gt;
* [[Ns_SetRequestAuthorizeProc()]]&lt;br /&gt;
* [[Ns_SetSize()]]&lt;br /&gt;
* [[Ns_SetSockErrno()]]&lt;br /&gt;
* [[Ns_SetThreadServer()]]&lt;br /&gt;
* [[Ns_SetValue()]]&lt;br /&gt;
* [[Ns_Sock()]]&lt;br /&gt;
* [[Ns_SockAccept()]]&lt;br /&gt;
* [[Ns_SockAsyncConnect()]]&lt;br /&gt;
* [[Ns_SockAsyncConnect2()]]&lt;br /&gt;
* [[Ns_SockBind()]]&lt;br /&gt;
* [[Ns_SockCancelCallback()]]&lt;br /&gt;
* [[Ns_SockCloseLater()]]&lt;br /&gt;
* [[Ns_SockConnect()]]&lt;br /&gt;
* [[Ns_SockConnect2()]]&lt;br /&gt;
* [[Ns_SockErrno()]]&lt;br /&gt;
* [[Ns_SockError()]]&lt;br /&gt;
* [[Ns_SockListen()]]&lt;br /&gt;
* [[Ns_SockListenEx()]]&lt;br /&gt;
* [[Ns_SockPortBound()]]&lt;br /&gt;
* [[Ns_SockProc()]]&lt;br /&gt;
* [[Ns_SockRecv()]]&lt;br /&gt;
* [[Ns_SockSend()]]&lt;br /&gt;
* [[Ns_SockSetBlocking()]]&lt;br /&gt;
* [[Ns_SockSetNonBlocking()]]&lt;br /&gt;
* [[Ns_SockStrError()]]&lt;br /&gt;
* [[Ns_SockTimedConnect()]]&lt;br /&gt;
* [[Ns_SockTimedConnect2()]]&lt;br /&gt;
* [[Ns_SockWait()]]&lt;br /&gt;
* [[Ns_SortProc()]]&lt;br /&gt;
* [[Ns_StrCaseFind()]]&lt;br /&gt;
* [[Ns_StringPrint()]]&lt;br /&gt;
* [[Ns_StrNStr()]]&lt;br /&gt;
* [[Ns_StrToLower()]]&lt;br /&gt;
* [[Ns_StrToUpper()]]&lt;br /&gt;
* [[Ns_StrTrim()]]&lt;br /&gt;
* [[Ns_StrTrimLeft()]]&lt;br /&gt;
* [[Ns_StrTrimRight()]]&lt;br /&gt;
* [[Ns_TclAllocateInterp()]]&lt;br /&gt;
* [[Ns_TclCreateInterp()]]&lt;br /&gt;
* [[Ns_TclDeAllocateInterp()]]&lt;br /&gt;
* [[Ns_TclDeferProc()]]&lt;br /&gt;
* [[Ns_TclDestroyInterp()]]&lt;br /&gt;
* [[Ns_TclDetachedThread()]]&lt;br /&gt;
* [[Ns_TclFreeSet()]]&lt;br /&gt;
* [[Ns_TclGetConn()]]&lt;br /&gt;
* [[Ns_TclGetOpenChannel()]]&lt;br /&gt;
* [[Ns_TclGetOpenFd()]]&lt;br /&gt;
* [[Ns_TclGetSet()]]&lt;br /&gt;
* [[Ns_TclInit()]]&lt;br /&gt;
* [[Ns_TclInitModule()]]&lt;br /&gt;
* [[Ns_TclInterpInitProc()]]&lt;br /&gt;
* [[Ns_TclInterpServer()]]&lt;br /&gt;
* [[Ns_TclLibrary()]]&lt;br /&gt;
* [[Ns_TclLogError()]]&lt;br /&gt;
* [[Ns_TclMarkForDelete()]]&lt;br /&gt;
* [[Ns_TclTraceProc()]]&lt;br /&gt;
* [[Ns_Thread()]]&lt;br /&gt;
* [[Ns_Time()]]&lt;br /&gt;
* [[Ns_TraceProc()]]&lt;br /&gt;
* [[Ns_UnRegisterRequest()]]&lt;br /&gt;
* [[Ns_UnscheduleProc()]]&lt;br /&gt;
* [[Ns_UrlIsDir()]]&lt;br /&gt;
* [[Ns_UrlIsFile()]]&lt;br /&gt;
* [[Ns_UrlSpecificAlloc()]]&lt;br /&gt;
* [[Ns_UrlSpecificDestroy()]]&lt;br /&gt;
* [[Ns_UrlSpecificGet()]]&lt;br /&gt;
* [[Ns_UrlSpecificGetExact()]]&lt;br /&gt;
* [[Ns_UrlSpecificGetFast()]]&lt;br /&gt;
* [[Ns_UrlSpecificSet()]]&lt;br /&gt;
* [[Ns_UrlToFileProc()]]&lt;br /&gt;
* [[Ns_UserAuthorizeProc()]]&lt;br /&gt;
* [[Ns_WaitForProcess()]]&lt;br /&gt;
* [[Ns_WaitForStartup()]]&lt;br /&gt;
* [[Ns_WaitProcess()]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Category Documentation]] - [[Category Core Public C API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4844</id>
		<title>Ad13 vs. 3.5.1</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4844"/>
		<updated>2006-03-18T18:06:41Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.140.117.84, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unfinished comparison between AOLserver 3.5.1 and AOLserver 3.3.1 + ad13 + oacs1. [http://uptime.openacs.org/aolserver-openacs/] It is based on Rob Mayoff's AD13 distribution notes.  SourceForge patch #570072 brought the AD13 internationalization patches to 3.4.2, and would probably be a good starting point for integration.&lt;br /&gt;
&lt;br /&gt;
- Jamie Rasmussen&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+oacs1 patches'''&lt;br /&gt;
&lt;br /&gt;
Vinod's ns_uuencode patch (SourceForge #474259)&lt;br /&gt;
* The oacs1 patch has a major bug as discussed on SourceForge.  I believe my corrected patch works but it hasn't been tested.  This is not crucial because OpenACS tests for the desired behavior and falls back on (slow) TCL-based encoding.&lt;br /&gt;
&lt;br /&gt;
uid/gid from Jon Griffin&lt;br /&gt;
* This is SF Patch #509413.  Jon confirms it has been fixed in 3.5+.&lt;br /&gt;
&lt;br /&gt;
BSD exec patch&lt;br /&gt;
* Is this SF Patch #415475?  It's marked fixed.&lt;br /&gt;
&lt;br /&gt;
Merge some of Vinod's and Mat's changes for nsxml's makefile&lt;br /&gt;
* nsxml has changed since the oacs1 version so I'm not sure if these changes are needed.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+ad13 patches'''&lt;br /&gt;
&lt;br /&gt;
Numerous patches to support character encodings including Henry Minsky's patches to translate form data to multiple charsets within a single HTTP request.  Described in encoding-doc.html.  These should be fleshed out here.&lt;br /&gt;
&lt;br /&gt;
There is an additional encoding file, 8bit.enc (ascii, single-byte, 8 bits)&lt;br /&gt;
* Should this be added to TCL?&lt;br /&gt;
&lt;br /&gt;
Set system encoding to ns/server/$server/SystemEncoding (default utf-8) in modules/tcl/init.tcl.&lt;br /&gt;
* This is a 1 line change &lt;br /&gt;
&lt;br /&gt;
form.tcl and http.tcl are different, charsets.tcl needs to be added&lt;br /&gt;
&lt;br /&gt;
Added byte range support in fastpath.c and ns_returnfile.&lt;br /&gt;
* This is a HTTP/1.1 feature.  Patrick Spence asks if this could be made configurable to prevent abuse by download accelerators.&lt;br /&gt;
&lt;br /&gt;
Reset ADP exception before executing an ADP, in case previous ADP called ns_adp_break, etc.&lt;br /&gt;
* One-line changes in adp.c and tclstubs.cpp to reset the exception&lt;br /&gt;
* There are also stack checks throwing ADP_OVERFLOW.  The stack check function was in thread.c of the old threads lib, and is not in AOLserver 3.5.1  ADP_OVERFLOW is still caught in 3.5.1, but it doesn't appear to be thrown.&lt;br /&gt;
&lt;br /&gt;
Ns_QueryToSet will not allow parameters whose names end with &amp;quot;.tmpfile&amp;quot;.&lt;br /&gt;
* Looks like this could be added without much hassle.&lt;br /&gt;
&lt;br /&gt;
Added boolean database parameter &amp;quot;WarnEmpty&amp;quot;.  If this is set, then AOLserver will log a warning when the last handle in a database pool is empty, and when a thread tries to get a handle from an empty pool.  Set this in the ns/db/pool/poolname section.&lt;br /&gt;
* A simple change to dbinit.c  &lt;br /&gt;
&lt;br /&gt;
Added Tcl command &amp;quot;ns_db stats poolname&amp;quot;, which returns a two-element list.  The first element is the maximum number of handles in the pool (equal to the &amp;quot;connections&amp;quot; config parameter).  The second element is the number of handles currently available in the pool.&lt;br /&gt;
* Simple changes to dbinit.c, dbtcl.c, and ns.h&lt;br /&gt;
* It looks like the ad13 patch didn't add the command to the usage message where it should have.&lt;br /&gt;
* This command doesn't appear to be used in OpenACS (CVS HEAD anyway)&lt;br /&gt;
&lt;br /&gt;
Patch to op.c to not crash on bad HTTP request line if nsd.tcl has a 401 redirect.&lt;br /&gt;
* Test to see if this still happens.  A minor change.&lt;br /&gt;
&lt;br /&gt;
Patch to NsHandleSignals to actually exit on Linux if a SIGSEGV is received.&lt;br /&gt;
* Appears to be a straight-forward addition to unix.c&lt;br /&gt;
&lt;br /&gt;
Patch to ns_sourceproc to cache Tcl pages (including bytecodes) if nscache module is installed.&lt;br /&gt;
* Modifications in tcl/file.tcl, tcl/tclcache.tcl added&lt;br /&gt;
&lt;br /&gt;
Declare Ns_ConnWriteRawData in ns.h.&lt;br /&gt;
* This does not actually appear in ns.h.  I believe the notes mean Ns_ConnReturnRawData in ns.h (body in return.c)&lt;br /&gt;
&lt;br /&gt;
Add errorminsize to doc/config.txt.&lt;br /&gt;
* doc/config.txt was removed.  We could add this small documentation change to sample-config.tcl.&lt;br /&gt;
&lt;br /&gt;
Fix channel memory leak in tclIO.c.&lt;br /&gt;
* I'm assuming this memory leak is not in TCL 8.4, but someone should confirm. Not an AOLserver core problem anyway.&lt;br /&gt;
&lt;br /&gt;
Import fix for freeing of Tcl TSD from AOLserver 4.0 tree.&lt;br /&gt;
* I'm not sure what the fix was, but I'm assuming it made it into 3.5.1 as well.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AIP_1&amp;diff=4843</id>
		<title>AIP 1</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AIP_1&amp;diff=4843"/>
		<updated>2006-03-18T18:06:23Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 24.140.117.84, changed back to last version by Vkurup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;     AIP: 1&lt;br /&gt;
   Title: AOLserver Improvement Proposal Guidelines&lt;br /&gt;
 Version: 1.0&lt;br /&gt;
 Authors: Dossy Shiobara &amp;lt;dossy at panoptic dot com&amp;gt;&lt;br /&gt;
          incl. [http://www.tcl.tk/cgi-bin/tct/tip/2.html].&lt;br /&gt;
   State: Draft &lt;br /&gt;
    Type: Process &lt;br /&gt;
    Vote: Pending &lt;br /&gt;
 Created: 04 September 2003&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&lt;br /&gt;
&lt;br /&gt;
This document describes and defines the editorial process a TCT document (TIP) has to go through before accepted as official.&lt;br /&gt;
&lt;br /&gt;
'''What is a TIP?'''&lt;br /&gt;
&lt;br /&gt;
TIP stands for Tcl Improvement Proposal. A TIP is a design document providing information to the Tcl community, or describing a new feature for Tcl. The TIP should provide a concise technical specification of the feature and a rationale for the feature.&lt;br /&gt;
&lt;br /&gt;
We intend TIPs to be the primary mechanisms for proposing new features, for collecting community input on an issue, and for documenting the design decisions that have gone into Tcl. The TIP author is responsible for building consensus within the community and documenting dissenting opinions.&lt;br /&gt;
&lt;br /&gt;
Because the TIPs are maintained as text files under revision control, their history is the historical record of the feature proposal. This historical record is available by the normal (CVS?) commands for retrieving older revisions. For those without direct access to the CVS tree, you can browse the current and past TIP revisions via http://www.cs.man.ac.uk/fellowsd-bin/TIP/ .&lt;br /&gt;
&lt;br /&gt;
Further details on the arguments behind the evolution of the TIP concept and formatting can be found in the archive of the tclcore mailing list at http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/tcl-core .&lt;br /&gt;
&lt;br /&gt;
'''Kinds of TIPs'''&lt;br /&gt;
&lt;br /&gt;
There are three kinds of TIPs. A project TIP describes a new (or significantly updated) feature or implementation for Tcl. An informative TIP describes a Tcl design issue, or provides general guidelines or information to the Tcl community, but does not propose a new feature. A process TIP is like an informative TIP but the provided guidelines are mandatory in a certain context (as specified in the TIP itself).&lt;br /&gt;
&lt;br /&gt;
Voting by the TCT as per the charter (see TIP #0) is required to make a project or process TIP official.&lt;br /&gt;
&lt;br /&gt;
'''TIP Workflow'''&lt;br /&gt;
&lt;br /&gt;
The TIP editor, Donal K. Fellows &amp;lt;fellowsd at cs dot man dot ac dot uk&amp;gt; pro tem, assigns numbers for each TIP and changes its status.&lt;br /&gt;
&lt;br /&gt;
Everyone in the community can submit a TIP to the TIP editor. It should contain at least a proposed title and a rough, but fleshed out, draft of the TIP.&lt;br /&gt;
&lt;br /&gt;
If the TIP editor approves, he will assign the TIP a number, label it as either project, process or informational, give it status Draft, and create and check-in the initial draft of the TIP. The TIP editor will not unreasonably deny a TIP. Reasons for denying TIP status include gross malformatting, inappropriate copyright, duplication of effort, being technically unsound, or not in keeping with the Tcl philosophy; the TCT and after that John Ousterhout &amp;lt;ouster at pacbell dot net&amp;gt; is the final arbitrator of the latter, as defined in the charter (TIP #0).&lt;br /&gt;
&lt;br /&gt;
Discussion concerning a TIP should initially be kept out of the tclcore and tct mailing lists. Instead, comments should be sent to, and collected by, the TIP author, who has the responsibility to incorporate these comments into the document.&lt;br /&gt;
&lt;br /&gt;
Note: It has been proposed to create a new mailing list for each TIP to handle its discussion. Rejection and finalization of the TIP closes the mailing list, but not the archive. Together with the CVS history a complete record of the development of a TIP will be available.&lt;br /&gt;
&lt;br /&gt;
The authors of the TIP are responsible for writing the TIP and marshaling community support for it. The structure of a TIP is described in detail in TIP #3.&lt;br /&gt;
&lt;br /&gt;
A project TIP consists of two parts, a design document and a reference implementation. The TIP should be reviewed and accepted before a reference implementation is begun, unless a reference implementation will aid people in studying the TIP. The implementation can be given in the form of code, patch, or URL to same - before it can be considered Final; small reference implementations may be placed inside the TIP itself, and large reference implementations should be held externally and linked to by reference (typically URL.)&lt;br /&gt;
&lt;br /&gt;
Process and Informational TIPs do not need an implementation.&lt;br /&gt;
&lt;br /&gt;
TIP authors are responsible for collecting community feedback on a TIP before submitting it for review (the creation of a TIP is a part of that review process.) However, wherever possible, long open-ended discussions on public mailing lists should be avoided. A better strategy is to encourage public feedback directly to the TIP author, who collects and integrates the comments back into the TIP.&lt;br /&gt;
&lt;br /&gt;
Once the authors have completed a TIP, they must inform the Tcl Core Team that it is ready for review. TIPs are reviewed by the Tcl Core Team and (for Project TIPs) the maintainers for the relevant parts of the core, who may accept or reject a TIP or send it back to the author(s) for revision (as detailed in TIP #0.) The acceptance or rejection of a TIP will cause its state to be changed accordingly to Accepted or Rejected.&lt;br /&gt;
&lt;br /&gt;
Once a TIP requiring a reference implementation has been accepted, the reference implementation must be completed. When the reference implementation is complete and accepted by the TCT (who can reject it if they feel the implementation would damage the rest of the core) the status will be changed to Final.&lt;br /&gt;
&lt;br /&gt;
A TIP can also be assigned status Deferred. The TIP author or the editor can assign the TIP this status when no progress is being made on the TIP. Once a TIP is deferred, the TIP editor can re-assign it to Draft status.&lt;br /&gt;
&lt;br /&gt;
A TIP can also be Withdrawn by the author. Perhaps after all is said and done, the author believes it was not a good idea. It is still important to have a record of this fact. It is expected that Accepted TIPs will only be withdrawn very rarely, and Final TIPs only under exceptional circumstances.&lt;br /&gt;
&lt;br /&gt;
TIP workflow is as follows:&lt;br /&gt;
&lt;br /&gt;
[http://www.tcl.tk/cgi-bin/tct/tip/2workflow.gif]&lt;br /&gt;
&lt;br /&gt;
Some informative TIPs may also have a status of Active if they are never meant to be completed. For example: TIP #1.&lt;br /&gt;
&lt;br /&gt;
'''What belongs in a successful TIP?'''&lt;br /&gt;
&lt;br /&gt;
Each TIP should have the following parts:&lt;br /&gt;
&lt;br /&gt;
1. Title - a short, descriptive title.&lt;br /&gt;
&lt;br /&gt;
2. Author(s) - names and contact info (email addresses) for each author.&lt;br /&gt;
&lt;br /&gt;
3. Abstract - a short (typically &amp;lt;200 word) description of the technical issue being addressed.&lt;br /&gt;
&lt;br /&gt;
4. Copyright/public domain - Each TIP must either be explicitly labelled in the public domain (the preferred 'license') or the Open Publication License (http://www.opencontent.org/openpub/). It is recommended that this be done by making the last section of the document be a copyright heading, with the body describing what copyright (if any) the document is released under.&lt;br /&gt;
&lt;br /&gt;
5. Specification - Project TIPs should have a technical specification that should describe the syntax and semantics of any new language feature. The specification should be detailed enough to allow (competing) interoperable implementations for any of the current Tcl platforms.&lt;br /&gt;
&lt;br /&gt;
6. Rationale - The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages.&lt;br /&gt;
&lt;br /&gt;
The rationale should provide evidence of consensus within the community and discuss important objections or concerns raised during discussion.&lt;br /&gt;
&lt;br /&gt;
7. Reference Implementation - The reference implementation must be completed before any TIP requiring such is given status Final, but it need not be completed before the TIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code.&lt;br /&gt;
&lt;br /&gt;
The final implementation must include test code and documentation appropriate for either the Tcl language reference or the standard library reference.&lt;br /&gt;
&lt;br /&gt;
'''TIP Style'''&lt;br /&gt;
&lt;br /&gt;
TIPs are written in plain ASCII text with an RFC822-like header and embedded sequences suitable for Wiki-like processing as indicated in TIP #3.&lt;br /&gt;
&lt;br /&gt;
There are Tcl scripts that convert the TIP into HTML for viewing on the web. Scripts for producing other formats are available too, for example LaTeX and plain ASCII.&lt;br /&gt;
&lt;br /&gt;
'''Sample Project TIP'''&lt;br /&gt;
&lt;br /&gt;
(With thanks to William H. Duquette &amp;lt;William dot H dot Duquette at jpl dot nasa dot gov&amp;gt; for suggesting this.) Note that the TIP Editor is responsible for allocating TIP numbers, so you can leave that unfilled.&lt;br /&gt;
&lt;br /&gt;
 TIP:           ???&lt;br /&gt;
 Title:         The TIP Title as Plain Text&lt;br /&gt;
 Version:       $Revision: 1.21 $&lt;br /&gt;
 Author:        Author Name &amp;lt;author@somewhere.com&amp;gt;&lt;br /&gt;
 State:         Draft&lt;br /&gt;
 Type:          Project&lt;br /&gt;
 Tcl-Version:   8.4&lt;br /&gt;
 Vote:          Pending&lt;br /&gt;
 Created:       31-Feb-1999&lt;br /&gt;
 Post-History:&lt;br /&gt;
&lt;br /&gt;
 '''~ Abstract'''&lt;br /&gt;
&lt;br /&gt;
 This is an example of how to write a simple project TIP.  This is the&lt;br /&gt;
 abstract which should consist of a single paragraph of under 200&lt;br /&gt;
 words.  If you need more than this, you should stop and think about&lt;br /&gt;
 writing a real abstract, not a whole section!  :^)&lt;br /&gt;
&lt;br /&gt;
 '''~ Some Sections'''&lt;br /&gt;
&lt;br /&gt;
 Yada yada yada.  Look at the sources to the various TIPs for tricks&lt;br /&gt;
 on how to do various things.  ''Note that for complete legal safety,&lt;br /&gt;
 you must specify what copyright is used.''  We prefer public domain,&lt;br /&gt;
 as it allows others (notably the TIP editor(s)) to maintain the TIP&lt;br /&gt;
 as necessary without having to seek permission.&lt;br /&gt;
&lt;br /&gt;
 I also prefer to make sure TIP and section titles are capitalized&lt;br /&gt;
 according to the usual rules of English.&lt;br /&gt;
&lt;br /&gt;
 '''~ Copyright'''&lt;br /&gt;
&lt;br /&gt;
 This document has been placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
A more complex example is TIP #7 by Kevin Kenny &amp;lt;kennykb at acm dot org&amp;gt; (the source is at http://www.cs.man.ac.uk/fellowsd-bin/TIP/7.tip) and which includes demonstrations of how to use advanced features like figures and verbatim text. His is a very high quality TIP though, and it has been though several revisions; don't feel too put off if your first attempt isn't quite as good...&lt;br /&gt;
&lt;br /&gt;
'''Patches'''&lt;br /&gt;
&lt;br /&gt;
For preference, patches to Tcl should be stored separately on another website or submitted as a separate file. This is because (quite rightly) the news:comp.lang.tcl.announce moderator does not allow patches to be posted on that newsgroup. If you want a patch to be incorporated into the archive, please contact the TIP Editor.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Comments'''&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4840</id>
		<title>Ad13 vs. 3.5.1</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ad13_vs._3.5.1&amp;diff=4840"/>
		<updated>2006-03-16T17:28:40Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 69.121.200.97, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an unfinished comparison between AOLserver 3.5.1 and AOLserver 3.3.1 + ad13 + oacs1. [http://uptime.openacs.org/aolserver-openacs/] It is based on Rob Mayoff's AD13 distribution notes.  SourceForge patch #570072 brought the AD13 internationalization patches to 3.4.2, and would probably be a good starting point for integration.&lt;br /&gt;
&lt;br /&gt;
- Jamie Rasmussen&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+oacs1 patches'''&lt;br /&gt;
&lt;br /&gt;
Vinod's ns_uuencode patch (SourceForge #474259)&lt;br /&gt;
* The oacs1 patch has a major bug as discussed on SourceForge.  I believe my corrected patch works but it hasn't been tested.  This is not crucial because OpenACS tests for the desired behavior and falls back on (slow) TCL-based encoding.&lt;br /&gt;
&lt;br /&gt;
uid/gid from Jon Griffin&lt;br /&gt;
* This is SF Patch #509413.  Jon confirms it has been fixed in 3.5+.&lt;br /&gt;
&lt;br /&gt;
BSD exec patch&lt;br /&gt;
* Is this SF Patch #415475?  It's marked fixed.&lt;br /&gt;
&lt;br /&gt;
Merge some of Vinod's and Mat's changes for nsxml's makefile&lt;br /&gt;
* nsxml has changed since the oacs1 version so I'm not sure if these changes are needed.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------&lt;br /&gt;
'''+ad13 patches'''&lt;br /&gt;
&lt;br /&gt;
Numerous patches to support character encodings including Henry Minsky's patches to translate form data to multiple charsets within a single HTTP request.  Described in encoding-doc.html.  These should be fleshed out here.&lt;br /&gt;
&lt;br /&gt;
There is an additional encoding file, 8bit.enc (ascii, single-byte, 8 bits)&lt;br /&gt;
* Should this be added to TCL?&lt;br /&gt;
&lt;br /&gt;
Set system encoding to ns/server/$server/SystemEncoding (default utf-8) in modules/tcl/init.tcl.&lt;br /&gt;
* This is a 1 line change &lt;br /&gt;
&lt;br /&gt;
form.tcl and http.tcl are different, charsets.tcl needs to be added&lt;br /&gt;
&lt;br /&gt;
Added byte range support in fastpath.c and ns_returnfile.&lt;br /&gt;
* This is a HTTP/1.1 feature.  Patrick Spence asks if this could be made configurable to prevent abuse by download accelerators.&lt;br /&gt;
&lt;br /&gt;
Reset ADP exception before executing an ADP, in case previous ADP called ns_adp_break, etc.&lt;br /&gt;
* One-line changes in adp.c and tclstubs.cpp to reset the exception&lt;br /&gt;
* There are also stack checks throwing ADP_OVERFLOW.  The stack check function was in thread.c of the old threads lib, and is not in AOLserver 3.5.1  ADP_OVERFLOW is still caught in 3.5.1, but it doesn't appear to be thrown.&lt;br /&gt;
&lt;br /&gt;
Ns_QueryToSet will not allow parameters whose names end with &amp;quot;.tmpfile&amp;quot;.&lt;br /&gt;
* Looks like this could be added without much hassle.&lt;br /&gt;
&lt;br /&gt;
Added boolean database parameter &amp;quot;WarnEmpty&amp;quot;.  If this is set, then AOLserver will log a warning when the last handle in a database pool is empty, and when a thread tries to get a handle from an empty pool.  Set this in the ns/db/pool/poolname section.&lt;br /&gt;
* A simple change to dbinit.c  &lt;br /&gt;
&lt;br /&gt;
Added Tcl command &amp;quot;ns_db stats poolname&amp;quot;, which returns a two-element list.  The first element is the maximum number of handles in the pool (equal to the &amp;quot;connections&amp;quot; config parameter).  The second element is the number of handles currently available in the pool.&lt;br /&gt;
* Simple changes to dbinit.c, dbtcl.c, and ns.h&lt;br /&gt;
* It looks like the ad13 patch didn't add the command to the usage message where it should have.&lt;br /&gt;
* This command doesn't appear to be used in OpenACS (CVS HEAD anyway)&lt;br /&gt;
&lt;br /&gt;
Patch to op.c to not crash on bad HTTP request line if nsd.tcl has a 401 redirect.&lt;br /&gt;
* Test to see if this still happens.  A minor change.&lt;br /&gt;
&lt;br /&gt;
Patch to NsHandleSignals to actually exit on Linux if a SIGSEGV is received.&lt;br /&gt;
* Appears to be a straight-forward addition to unix.c&lt;br /&gt;
&lt;br /&gt;
Patch to ns_sourceproc to cache Tcl pages (including bytecodes) if nscache module is installed.&lt;br /&gt;
* Modifications in tcl/file.tcl, tcl/tclcache.tcl added&lt;br /&gt;
&lt;br /&gt;
Declare Ns_ConnWriteRawData in ns.h.&lt;br /&gt;
* This does not actually appear in ns.h.  I believe the notes mean Ns_ConnReturnRawData in ns.h (body in return.c)&lt;br /&gt;
&lt;br /&gt;
Add errorminsize to doc/config.txt.&lt;br /&gt;
* doc/config.txt was removed.  We could add this small documentation change to sample-config.tcl.&lt;br /&gt;
&lt;br /&gt;
Fix channel memory leak in tclIO.c.&lt;br /&gt;
* I'm assuming this memory leak is not in TCL 8.4, but someone should confirm. Not an AOLserver core problem anyway.&lt;br /&gt;
&lt;br /&gt;
Import fix for freeing of Tcl TSD from AOLserver 4.0 tree.&lt;br /&gt;
* I'm not sure what the fix was, but I'm assuming it made it into 3.5.1 as well.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AIP_1&amp;diff=4839</id>
		<title>AIP 1</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AIP_1&amp;diff=4839"/>
		<updated>2006-03-16T17:28:22Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 68.79.55.193, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;     AIP: 1&lt;br /&gt;
   Title: AOLserver Improvement Proposal Guidelines&lt;br /&gt;
 Version: 1.0&lt;br /&gt;
 Authors: Dossy Shiobara &amp;lt;dossy at panoptic dot com&amp;gt;&lt;br /&gt;
          incl. [http://www.tcl.tk/cgi-bin/tct/tip/2.html].&lt;br /&gt;
   State: Draft &lt;br /&gt;
    Type: Process &lt;br /&gt;
    Vote: Pending &lt;br /&gt;
 Created: 04 September 2003&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Abstract'''&lt;br /&gt;
&lt;br /&gt;
This document describes and defines the editorial process a TCT document (TIP) has to go through before accepted as official.&lt;br /&gt;
&lt;br /&gt;
'''What is a TIP?'''&lt;br /&gt;
&lt;br /&gt;
TIP stands for Tcl Improvement Proposal. A TIP is a design document providing information to the Tcl community, or describing a new feature for Tcl. The TIP should provide a concise technical specification of the feature and a rationale for the feature.&lt;br /&gt;
&lt;br /&gt;
We intend TIPs to be the primary mechanisms for proposing new features, for collecting community input on an issue, and for documenting the design decisions that have gone into Tcl. The TIP author is responsible for building consensus within the community and documenting dissenting opinions.&lt;br /&gt;
&lt;br /&gt;
Because the TIPs are maintained as text files under revision control, their history is the historical record of the feature proposal. This historical record is available by the normal (CVS?) commands for retrieving older revisions. For those without direct access to the CVS tree, you can browse the current and past TIP revisions via http://www.cs.man.ac.uk/fellowsd-bin/TIP/ .&lt;br /&gt;
&lt;br /&gt;
Further details on the arguments behind the evolution of the TIP concept and formatting can be found in the archive of the tclcore mailing list at http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/tcl-core .&lt;br /&gt;
&lt;br /&gt;
'''Kinds of TIPs'''&lt;br /&gt;
&lt;br /&gt;
There are three kinds of TIPs. A project TIP describes a new (or significantly updated) feature or implementation for Tcl. An informative TIP describes a Tcl design issue, or provides general guidelines or information to the Tcl community, but does not propose a new feature. A process TIP is like an informative TIP but the provided guidelines are mandatory in a certain context (as specified in the TIP itself).&lt;br /&gt;
&lt;br /&gt;
Voting by the TCT as per the charter (see TIP #0) is required to make a project or process TIP official.&lt;br /&gt;
&lt;br /&gt;
'''TIP Workflow'''&lt;br /&gt;
&lt;br /&gt;
The TIP editor, Donal K. Fellows &amp;lt;fellowsd at cs dot man dot ac dot uk&amp;gt; pro tem, assigns numbers for each TIP and changes its status.&lt;br /&gt;
&lt;br /&gt;
Everyone in the community can submit a TIP to the TIP editor. It should contain at least a proposed title and a rough, but fleshed out, draft of the TIP.&lt;br /&gt;
&lt;br /&gt;
If the TIP editor approves, he will assign the TIP a number, label it as either project, process or informational, give it status Draft, and create and check-in the initial draft of the TIP. The TIP editor will not unreasonably deny a TIP. Reasons for denying TIP status include gross malformatting, inappropriate copyright, duplication of effort, being technically unsound, or not in keeping with the Tcl philosophy; the TCT and after that John Ousterhout &amp;lt;ouster at pacbell dot net&amp;gt; is the final arbitrator of the latter, as defined in the charter (TIP #0).&lt;br /&gt;
&lt;br /&gt;
Discussion concerning a TIP should initially be kept out of the tclcore and tct mailing lists. Instead, comments should be sent to, and collected by, the TIP author, who has the responsibility to incorporate these comments into the document.&lt;br /&gt;
&lt;br /&gt;
Note: It has been proposed to create a new mailing list for each TIP to handle its discussion. Rejection and finalization of the TIP closes the mailing list, but not the archive. Together with the CVS history a complete record of the development of a TIP will be available.&lt;br /&gt;
&lt;br /&gt;
The authors of the TIP are responsible for writing the TIP and marshaling community support for it. The structure of a TIP is described in detail in TIP #3.&lt;br /&gt;
&lt;br /&gt;
A project TIP consists of two parts, a design document and a reference implementation. The TIP should be reviewed and accepted before a reference implementation is begun, unless a reference implementation will aid people in studying the TIP. The implementation can be given in the form of code, patch, or URL to same - before it can be considered Final; small reference implementations may be placed inside the TIP itself, and large reference implementations should be held externally and linked to by reference (typically URL.)&lt;br /&gt;
&lt;br /&gt;
Process and Informational TIPs do not need an implementation.&lt;br /&gt;
&lt;br /&gt;
TIP authors are responsible for collecting community feedback on a TIP before submitting it for review (the creation of a TIP is a part of that review process.) However, wherever possible, long open-ended discussions on public mailing lists should be avoided. A better strategy is to encourage public feedback directly to the TIP author, who collects and integrates the comments back into the TIP.&lt;br /&gt;
&lt;br /&gt;
Once the authors have completed a TIP, they must inform the Tcl Core Team that it is ready for review. TIPs are reviewed by the Tcl Core Team and (for Project TIPs) the maintainers for the relevant parts of the core, who may accept or reject a TIP or send it back to the author(s) for revision (as detailed in TIP #0.) The acceptance or rejection of a TIP will cause its state to be changed accordingly to Accepted or Rejected.&lt;br /&gt;
&lt;br /&gt;
Once a TIP requiring a reference implementation has been accepted, the reference implementation must be completed. When the reference implementation is complete and accepted by the TCT (who can reject it if they feel the implementation would damage the rest of the core) the status will be changed to Final.&lt;br /&gt;
&lt;br /&gt;
A TIP can also be assigned status Deferred. The TIP author or the editor can assign the TIP this status when no progress is being made on the TIP. Once a TIP is deferred, the TIP editor can re-assign it to Draft status.&lt;br /&gt;
&lt;br /&gt;
A TIP can also be Withdrawn by the author. Perhaps after all is said and done, the author believes it was not a good idea. It is still important to have a record of this fact. It is expected that Accepted TIPs will only be withdrawn very rarely, and Final TIPs only under exceptional circumstances.&lt;br /&gt;
&lt;br /&gt;
TIP workflow is as follows:&lt;br /&gt;
&lt;br /&gt;
[http://www.tcl.tk/cgi-bin/tct/tip/2workflow.gif]&lt;br /&gt;
&lt;br /&gt;
Some informative TIPs may also have a status of Active if they are never meant to be completed. For example: TIP #1.&lt;br /&gt;
&lt;br /&gt;
'''What belongs in a successful TIP?'''&lt;br /&gt;
&lt;br /&gt;
Each TIP should have the following parts:&lt;br /&gt;
&lt;br /&gt;
1. Title - a short, descriptive title.&lt;br /&gt;
&lt;br /&gt;
2. Author(s) - names and contact info (email addresses) for each author.&lt;br /&gt;
&lt;br /&gt;
3. Abstract - a short (typically &amp;lt;200 word) description of the technical issue being addressed.&lt;br /&gt;
&lt;br /&gt;
4. Copyright/public domain - Each TIP must either be explicitly labelled in the public domain (the preferred 'license') or the Open Publication License (http://www.opencontent.org/openpub/). It is recommended that this be done by making the last section of the document be a copyright heading, with the body describing what copyright (if any) the document is released under.&lt;br /&gt;
&lt;br /&gt;
5. Specification - Project TIPs should have a technical specification that should describe the syntax and semantics of any new language feature. The specification should be detailed enough to allow (competing) interoperable implementations for any of the current Tcl platforms.&lt;br /&gt;
&lt;br /&gt;
6. Rationale - The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages.&lt;br /&gt;
&lt;br /&gt;
The rationale should provide evidence of consensus within the community and discuss important objections or concerns raised during discussion.&lt;br /&gt;
&lt;br /&gt;
7. Reference Implementation - The reference implementation must be completed before any TIP requiring such is given status Final, but it need not be completed before the TIP is accepted. It is better to finish the specification and rationale first and reach consensus on it before writing code.&lt;br /&gt;
&lt;br /&gt;
The final implementation must include test code and documentation appropriate for either the Tcl language reference or the standard library reference.&lt;br /&gt;
&lt;br /&gt;
'''TIP Style'''&lt;br /&gt;
&lt;br /&gt;
TIPs are written in plain ASCII text with an RFC822-like header and embedded sequences suitable for Wiki-like processing as indicated in TIP #3.&lt;br /&gt;
&lt;br /&gt;
There are Tcl scripts that convert the TIP into HTML for viewing on the web. Scripts for producing other formats are available too, for example LaTeX and plain ASCII.&lt;br /&gt;
&lt;br /&gt;
'''Sample Project TIP'''&lt;br /&gt;
&lt;br /&gt;
(With thanks to William H. Duquette &amp;lt;William dot H dot Duquette at jpl dot nasa dot gov&amp;gt; for suggesting this.) Note that the TIP Editor is responsible for allocating TIP numbers, so you can leave that unfilled.&lt;br /&gt;
&lt;br /&gt;
 TIP:           ???&lt;br /&gt;
 Title:         The TIP Title as Plain Text&lt;br /&gt;
 Version:       $Revision: 1.21 $&lt;br /&gt;
 Author:        Author Name &amp;lt;author@somewhere.com&amp;gt;&lt;br /&gt;
 State:         Draft&lt;br /&gt;
 Type:          Project&lt;br /&gt;
 Tcl-Version:   8.4&lt;br /&gt;
 Vote:          Pending&lt;br /&gt;
 Created:       31-Feb-1999&lt;br /&gt;
 Post-History:&lt;br /&gt;
&lt;br /&gt;
 '''~ Abstract'''&lt;br /&gt;
&lt;br /&gt;
 This is an example of how to write a simple project TIP.  This is the&lt;br /&gt;
 abstract which should consist of a single paragraph of under 200&lt;br /&gt;
 words.  If you need more than this, you should stop and think about&lt;br /&gt;
 writing a real abstract, not a whole section!  :^)&lt;br /&gt;
&lt;br /&gt;
 '''~ Some Sections'''&lt;br /&gt;
&lt;br /&gt;
 Yada yada yada.  Look at the sources to the various TIPs for tricks&lt;br /&gt;
 on how to do various things.  ''Note that for complete legal safety,&lt;br /&gt;
 you must specify what copyright is used.''  We prefer public domain,&lt;br /&gt;
 as it allows others (notably the TIP editor(s)) to maintain the TIP&lt;br /&gt;
 as necessary without having to seek permission.&lt;br /&gt;
&lt;br /&gt;
 I also prefer to make sure TIP and section titles are capitalized&lt;br /&gt;
 according to the usual rules of English.&lt;br /&gt;
&lt;br /&gt;
 '''~ Copyright'''&lt;br /&gt;
&lt;br /&gt;
 This document has been placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
A more complex example is TIP #7 by Kevin Kenny &amp;lt;kennykb at acm dot org&amp;gt; (the source is at http://www.cs.man.ac.uk/fellowsd-bin/TIP/7.tip) and which includes demonstrations of how to use advanced features like figures and verbatim text. His is a very high quality TIP though, and it has been though several revisions; don't feel too put off if your first attempt isn't quite as good...&lt;br /&gt;
&lt;br /&gt;
'''Patches'''&lt;br /&gt;
&lt;br /&gt;
For preference, patches to Tcl should be stored separately on another website or submitted as a separate file. This is because (quite rightly) the news:comp.lang.tcl.announce moderator does not allow patches to be posted on that newsgroup. If you want a patch to be incorporated into the archive, please contact the TIP Editor.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Comments'''&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_configsection&amp;diff=4836</id>
		<title>Ns configsection</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_configsection&amp;diff=4836"/>
		<updated>2006-03-15T21:44:41Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 81.215.178.184, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;manpage&amp;gt;ns_configsection&amp;lt;/manpage&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
ns_configsection - Return a handle to an [[ns_set]] for a section of the server's configuration&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
'''ns_configsection''' ''section''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
 &lt;br /&gt;
This command returns a handle for an [[ns_set]] which contains all the parameter key-value pairs for the ''section'' from the server's configuration.  If the ''section'' is not defined, this command returns an empty string.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
  % set setId [ns_configsection ns/parameters]&lt;br /&gt;
  t0&lt;br /&gt;
&lt;br /&gt;
  % ns_set name $setId&lt;br /&gt;
  ns/parameters&lt;br /&gt;
&lt;br /&gt;
  % array set a [ns_set array $setId]&lt;br /&gt;
  % array names a&lt;br /&gt;
  EnableAdmin MailHost Home Group User debug&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
[[ns_config]], [[ns_configsections]], [[ns_set]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_time&amp;diff=4835</id>
		<title>Ns time</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_time&amp;diff=4835"/>
		<updated>2006-03-15T21:44:14Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of 81.215.178.184, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;manpage&amp;gt;ns_time&amp;lt;/manpage&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_time - Perform various time-related functions&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_time''' ''?option? ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command provides various time-related functions.  The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
&lt;br /&gt;
* '''ns_time adjust''' ''time''&lt;br /&gt;
&lt;br /&gt;
: Adjusts ''time'' so that it is within the valid range of values for a time.  ''(TODO:  Figure out how this is actually useful.)''&lt;br /&gt;
&lt;br /&gt;
* '''ns_time diff''' ''time1 time2''&lt;br /&gt;
&lt;br /&gt;
: Computes the time difference between ''time1'' to ''time2''.  It does this by subtracting ''time1'' from ''time2'' and returns a string in &amp;quot;sec:usec&amp;quot; format.&lt;br /&gt;
&lt;br /&gt;
* '''ns_time get'''&lt;br /&gt;
&lt;br /&gt;
: Returns the current time in &amp;quot;sec:usec&amp;quot; format.&lt;br /&gt;
&lt;br /&gt;
* '''ns_time incr''' ''time sec ?usec?''&lt;br /&gt;
&lt;br /&gt;
: Increments ''time'' by ''sec'' seconds and optionally ''usec'' microseconds.  Returns a string in &amp;quot;sec:usec&amp;quot; format.&lt;br /&gt;
&lt;br /&gt;
* '''ns_time make''' ''sec ?usec?''&lt;br /&gt;
&lt;br /&gt;
: Returns a string in the form &amp;quot;sec:usec&amp;quot;.  ''usec'' defaults to zero.  If ''usec'' is zero, the colon and ''usec'' are not returned.  If ''sec'' is zero, however, it is returned as part of the time string.&lt;br /&gt;
&lt;br /&gt;
* '''ns_time seconds''' ''time''&lt;br /&gt;
&lt;br /&gt;
: Parses a time in &amp;quot;sec:usec&amp;quot; format and returns the seconds portion.&lt;br /&gt;
&lt;br /&gt;
* '''ns_time microseconds''' ''time''&lt;br /&gt;
&lt;br /&gt;
: Parses a time in &amp;quot;sec:usec&amp;quot; format and returns the microseconds portion.  It assumes zero microseconds if ''time'' only contains seconds.&lt;br /&gt;
&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
: All times are relative to 00:00:00 UTC, January 1, 1970 aka the Unix epoch.  '''ns_time''' called with no option returns the current time in seconds.&lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
    % ns_time&lt;br /&gt;
    1087006685&lt;br /&gt;
&lt;br /&gt;
    % set time [[ns_time get]]&lt;br /&gt;
    1087013247:598897&lt;br /&gt;
&lt;br /&gt;
    % ns_time seconds $time&lt;br /&gt;
    1087013247&lt;br /&gt;
&lt;br /&gt;
    % ns_time microseconds $time&lt;br /&gt;
    598897&lt;br /&gt;
&lt;br /&gt;
    % set time2 [[ns_time incr $time 5 30]]&lt;br /&gt;
    1087013252:598927&lt;br /&gt;
&lt;br /&gt;
    % ns_set diff $time2 $time&lt;br /&gt;
    5:30&lt;br /&gt;
&lt;br /&gt;
    % set time3 [[ns_time make 1087013240 598890]]&lt;br /&gt;
    1087013240:598890&lt;br /&gt;
&lt;br /&gt;
    % ns_time diff $time $time3&lt;br /&gt;
    7:7&lt;br /&gt;
&lt;br /&gt;
    % ns_time diff $time3 $time&lt;br /&gt;
    -8:999993&lt;br /&gt;
&lt;br /&gt;
    % set time3 [[ns_time incr $time3 7 7]]&lt;br /&gt;
    1087013247:598897&lt;br /&gt;
&lt;br /&gt;
    % ns_time diff $time $time3&lt;br /&gt;
    0&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_fmttime]], [[ns_gmtime]], [[ns_httptime]], [[ns_localtime]], [[ns_parsehttptime]], [[ns_parsetime]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Improvement_Proposals&amp;diff=4774</id>
		<title>AOLserver Improvement Proposals</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Improvement_Proposals&amp;diff=4774"/>
		<updated>2006-03-09T13:05:41Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of Zvgdab, changed back to last version by 87.236.29.207&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as the main index for all AOLserver Improvement Proposals (or, AIPs).  The idea and format for AIPs has been shamelessly stolen from the Tcl project and their Tcl Improvement Proposal (TIP) format [http://www.tcl.tk/cgi-bin/tct/tip/].&lt;br /&gt;
* [[AIP 1]]: AOLserver Improvement Proposal Guidelines&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Nsmaverix&amp;diff=4752</id>
		<title>Nsmaverix</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Nsmaverix&amp;diff=4752"/>
		<updated>2006-03-03T13:13:52Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of Ldjwum, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Authors: [[Vlad Seryakov]] [[Eric Dean]]&lt;br /&gt;
&lt;br /&gt;
This is AOLserver module that implements SMTP protocol and acts as SMTP proxy with anti-spam and anti-virus capabilities. It includes Web interface to manage quarantined messages and administrative interface based on [[OSSWEB]].&lt;br /&gt;
&lt;br /&gt;
Download: http://www.crystalballinc.com/vlad/software/maverix/&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Improvement_Proposals&amp;diff=4747</id>
		<title>AOLserver Improvement Proposals</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Improvement_Proposals&amp;diff=4747"/>
		<updated>2006-02-28T19:01:52Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of Kexxcn, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as the main index for all AOLserver Improvement Proposals (or, AIPs).  The idea and format for AIPs has been shamelessly stolen from the Tcl project and their Tcl Improvement Proposal (TIP) format [http://www.tcl.tk/cgi-bin/tct/tip/].&lt;br /&gt;
* [[AIP 1]]: AOLserver Improvement Proposal Guidelines&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Category:Person&amp;diff=4746</id>
		<title>Category:Person</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Category:Person&amp;diff=4746"/>
		<updated>2006-02-28T19:01:34Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of Iwezdm, changed back to last version by Dossy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category lists all of the pages on this wiki that refers to actual people.&lt;br /&gt;
&lt;br /&gt;
To add a page to this category, add a link to this page, e.g., &amp;lt;nowiki&amp;gt;[[Category:Person|Lastname, Firstname]]&amp;lt;/nowiki&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Nssqlite3&amp;diff=4745</id>
		<title>Nssqlite3</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Nssqlite3&amp;diff=4745"/>
		<updated>2006-02-28T19:01:00Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Reverted edit of Krqtum, changed back to last version by WikiSysop&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See: [http://cvs.sourceforge.net/viewcvs.py/*checkout*/aolserver/nssqlite3/nssqlite3.html?rev=HEAD SF CVS: nssqlite3/nssqlite3.html]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=User_talk:Vkurup&amp;diff=4704</id>
		<title>User talk:Vkurup</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=User_talk:Vkurup&amp;diff=4704"/>
		<updated>2006-01-18T02:06:33Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, Vinod, I've gone and added you to the &amp;quot;sysop&amp;quot; group on the wiki, which will allow you to rollback changes made by others, since it seems you're really quick to hit the wiki spam (thanks again, by the way).  You can only roll back the most recent change, by going to the diff screen for it (easiest is off the [[Special:Recentchanges]] page, on the top-most edit, clicking the &amp;quot;diff&amp;quot; link on the left-hand side) and on the right-side showing the &amp;quot;current version&amp;quot; will be a little link &amp;quot;[rollback]&amp;quot;).  Let me know if you have any questions.  Thanks again. ''-- [[User:Dossy|Dossy]] 07:50, 13 January 2006 (EST)''&lt;br /&gt;
&lt;br /&gt;
Thanks Dossy,&lt;br /&gt;
&lt;br /&gt;
Hopefully I'll be able to add something more valuable down the road, but in the meantime, it's easy enough to monitor for spam... [[User:Vkurup|Vkurup]] 21:06, 17 January 2006 (EST)&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Help:Contents&amp;diff=4682</id>
		<title>Help:Contents</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Help:Contents&amp;diff=4682"/>
		<updated>2006-01-10T01:47:17Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: removed spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For help with MediaWiki, please see the [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide MediaWiki User's Guide] or the [http://en.wikipedia.org/wiki/Wikipedia:Tutorial Wikipedia:Tutorial].&lt;br /&gt;
&lt;br /&gt;
{{:Formatting Rules}}&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4681</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4681"/>
		<updated>2006-01-10T01:44:16Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: removed junk&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Roadmap&amp;diff=4667</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Roadmap&amp;diff=4667"/>
		<updated>2006-01-05T17:15:28Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: remove spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''AOLserver 2005 Roadmap'''&lt;br /&gt;
&lt;br /&gt;
[[Jim Davidson]] has offered the following summary [http://listserv.aol.com/cgi-bin/wa?A2=ind0506&amp;amp;L=aolserver&amp;amp;P=6872] based on the ChangeLog that describes the changes going into AOLserver 4.5:&lt;br /&gt;
&lt;br /&gt;
We should put a page on aolserver.com with some details.  We've moved&lt;br /&gt;
the version to 4.5 from 4.1 to reflect the scope of changes.&lt;br /&gt;
Scanning the ChangeLog and from what I can recall:&lt;br /&gt;
* New connection management features including the ns_limits and&lt;br /&gt;
ns_pools commands:&lt;br /&gt;
&lt;br /&gt;
-- ns_limits: control # of threads executing and/or waiting for&lt;br /&gt;
execution by method/URL&lt;br /&gt;
&lt;br /&gt;
-- ns_pools: map method/URL's to specific thread pools&lt;br /&gt;
&lt;br /&gt;
The idea is to use the two together, e.g., map slow-running db&lt;br /&gt;
requests to specific pools and set limits to avoid overload. The&lt;br /&gt;
result would be to trap cases where impatient folks press reload when&lt;br /&gt;
things are slow, generating quick &amp;quot;try later&amp;quot; responses instead of&lt;br /&gt;
gumming up the server.&lt;br /&gt;
* I/O features including:&lt;br /&gt;
&lt;br /&gt;
-- A new &amp;quot;Ns_QueueWait&amp;quot; API to enable event-driven callbacks in the&lt;br /&gt;
driver thread before dispatching to pools for processing.  The model&lt;br /&gt;
is to augment data received from the client (headers, request,&lt;br /&gt;
content) with additional data fetched over the network (likely stored&lt;br /&gt;
in the new Ns_Cls &amp;quot;connection local storage&amp;quot; API's) before&lt;br /&gt;
dispatching to the connection threads. An example would be to add&lt;br /&gt;
certain personalization data received via a web service. The&lt;br /&gt;
rationale here is that I/O events are cheap so do those upfront&lt;br /&gt;
instead of having expensive connection threads burdened with wasteful&lt;br /&gt;
blocking I/O.  This is a somewhat obscure and technical interface.&lt;br /&gt;
&lt;br /&gt;
-- Ability to manage larger file uploads by spooling to a temp file.&lt;br /&gt;
This keeps many of the useful functions folks utilize from working&lt;br /&gt;
for these large files, in particular auto-parsing of input available&lt;br /&gt;
via ns_conn form, but is available for custom apps willing to deal&lt;br /&gt;
with the complexity.&lt;br /&gt;
* ADP improvements including:&lt;br /&gt;
&lt;br /&gt;
-- A new execution caching technique at the ns_adp_include level&lt;br /&gt;
which allows you to save the results of execution of an included ADP&lt;br /&gt;
(and includes below that) for reuse on subsequent connections up to a&lt;br /&gt;
specified time.  Embedded ns_adp_include's with the -nocache flag at&lt;br /&gt;
lower levels allow you to still execute dynamic code within cached&lt;br /&gt;
blocks if necessary.  The goal is to improve performance of pages&lt;br /&gt;
which are nearly dynamic, i.e., pages where underlying data really&lt;br /&gt;
isn't personalized but instead may change every few minutes or so.&lt;br /&gt;
We prototyped this technique at AOL for an app which had these&lt;br /&gt;
characteristics and drove transaction throughput from less than 50/&lt;br /&gt;
second to well over 400 while still maintaining certain personalized&lt;br /&gt;
features of the page.&lt;br /&gt;
&lt;br /&gt;
-- New &amp;quot;singlescript&amp;quot; config option which turns ADP pages into a&lt;br /&gt;
single script enabling syntax such as &amp;quot;&amp;lt;% foreach e $list { %&amp;gt;&lt;br /&gt;
element &amp;lt;%= $e %&amp;gt; here &amp;lt;% } %&amp;gt;&amp;quot; and treating an error anywhere on the&lt;br /&gt;
pages as an error for the full page.  Evidently this is more similar&lt;br /&gt;
to other execution environments such as JSP.  It's a matter of&lt;br /&gt;
opinion whether this is a better or worse approach to ADP execution -&lt;br /&gt;
the default is off.&lt;br /&gt;
* Output buffer improvements via new Ns_ConnFlush:&lt;br /&gt;
&lt;br /&gt;
-- Automatic UTF-8 to output charset encoding&lt;br /&gt;
&lt;br /&gt;
-- Gzip compression&lt;br /&gt;
&lt;br /&gt;
-- Streaming output in chunked-encoding format instead of the&lt;br /&gt;
previous &amp;quot;response with no length&amp;quot; HTTP/1.0 method.&lt;br /&gt;
&lt;br /&gt;
Much of the code for Ns_ConnFlush was previously private to ADP.  ADP&lt;br /&gt;
has been modified to use Ns_ConnFlush and will also automatically&lt;br /&gt;
switch into streaming mode when output buffer limits are exceeded&lt;br /&gt;
(the previous behavior is to simply keep buffering without limit).&lt;br /&gt;
Ns_ConnFlush could be useful to simplify and standardize output from&lt;br /&gt;
other execution environments as well, e.g., PHP and Java servlets.&lt;br /&gt;
* Tcl improvements including:&lt;br /&gt;
&lt;br /&gt;
-- Cleaned up and well commented core code so folks can understand&lt;br /&gt;
the arcane config/resource management approach of Tcl within AOLserver.&lt;br /&gt;
&lt;br /&gt;
-- A new Ns_TclRegisterTrace API to enable callbacks at key state&lt;br /&gt;
transition points in a much more natural way.  The ns_ictl command&lt;br /&gt;
has been updated to support script-level traces.&lt;br /&gt;
* A new Ns_Task API designed to replace the old Ns_SockCallback API&lt;br /&gt;
which didn't do a very good job at managing timeouts along with I/O&lt;br /&gt;
events.  The ns_http command has been modified to use Ns_Task (the&lt;br /&gt;
old Ns_SockCallback-based ns_http is also still available via&lt;br /&gt;
configuration for the paranoid).&lt;br /&gt;
* Numerous bug fixes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, no comprehensive list is maintained of these changes&lt;br /&gt;
and the documentation is not yet up to date.  Actually, the&lt;br /&gt;
documentation hasn't been up to date since version 2.3 which is a&lt;br /&gt;
great disappointment for me.  However, the ChangeLog has been&lt;br /&gt;
maintained quite well so it's possible to get an overview of the&lt;br /&gt;
various bug fixes and other minor updates from there.&lt;br /&gt;
&lt;br /&gt;
Dossy and Zoran may recall other new features as they've been active&lt;br /&gt;
on the release as well.  Overall, I believe we're done with 4.5 and&lt;br /&gt;
should tag it, complete the documentation, produce some quality&lt;br /&gt;
release notes, and move on to 5.0.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''AOLserver project 2004 Roadmap'''&lt;br /&gt;
 &lt;br /&gt;
This document will serve as the roadmap for the AOLserver project and Open Source community for 2004.&lt;br /&gt;
 &lt;br /&gt;
N.B.:  There is no designation whether any of the tasks necessary to complete items on the roadmap must be performed by an AOL employee or someone from the larger AOLserver community.  Ideally, tasks will be completed by whoever is enthusiastic about the work, has the necessary time to commit to completing it as well as the capability.  There is no explicit limit to the amount of contribution that can come from any participant in the project.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Goals and milestones for Q3 2004'''&lt;br /&gt;
&lt;br /&gt;
'''1)  Feature roadmap for AOLserver through 2004 and into 2005'''&lt;br /&gt;
&lt;br /&gt;
In order to enable the Open Source community to better participate, it is important that we have a clear list of [[Features]] that should be worked on.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
'''Goals and milestones for Q2 2004'''&lt;br /&gt;
 &lt;br /&gt;
'''1)  www.aolserver.com website revamp'''&lt;br /&gt;
&lt;br /&gt;
The project website deserves a more modern look and feel while maintaining the crisp, clean design aspects of the site.  The site needs to clearly represent the most current releases and recent changes.&lt;br /&gt;
&lt;br /&gt;
Specific information that should be easily accessible on the website initially:&lt;br /&gt;
* what it is&lt;br /&gt;
* how it's different&lt;br /&gt;
* where is useful, where it's not&lt;br /&gt;
* how to get started - basic guide, notes for apache users&lt;br /&gt;
* latest source and binary bundles&lt;br /&gt;
* basic intro docs and extensive, complete, accurate manpages&lt;br /&gt;
&lt;br /&gt;
''Update on 6/25: aolserver.org and aolserver.net should both point to aolserver.com by the week of 6/28.''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''2)  Freshen up documentation'''&lt;br /&gt;
&lt;br /&gt;
Currently available documentation for AOLserver mixes information for 2.3, 3.x and 4.x.  All of the documentation needs to be evaluated for correctness and updated where appropriate.  Documentation should be made available in at least three formats: plain text, HTML and PDF.  All documentation should be readily available from the project website.  &lt;br /&gt;
&lt;br /&gt;
The goal is to have a list of all documentation, both what exists and what we still need, by 5/26.  From there, the plan is to spend the next 4 weeks verifying or updating documentation.  Targeting 6/25 to have documentation for AOLserver 4.0 complete.&lt;br /&gt;
&lt;br /&gt;
''Update on 6/25:  [[Tcl API]] effort: 142 out of 228 commands or 62% complete.  Work on the [[Tutorials]] and HOWTO sections have also begun.  See the [[Documentation]] page for more.''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''3)  SourceForge bug and support trackers'''&lt;br /&gt;
&lt;br /&gt;
There are currently 56 open bugs, 3 open support requests, 29 open patches and 8 open feature requests in SourceForge.  Attention to these trackers is minimal at best which sends the wrong message about the project's commitment to supporting itself.  &lt;br /&gt;
&lt;br /&gt;
The current goal is to ensure that opened requests get assigned to someone within 24-48 hours and resolved in a reasonable timeframe.  Resolutions for common problems should be properly documented and published appropriately.&lt;br /&gt;
&lt;br /&gt;
''Update on 6/25:  78 open bugs, 4 open support tickets, 37 open patches, 14 open feature requests.''&lt;br /&gt;
&lt;br /&gt;
''Update on 7/2:  Bugs: 78 &amp;gt; 39 (-39 / -50%).  Support Requests: 4 &amp;gt; 2 (-2 / -50%).  Patches: 39 &amp;gt; 37 (-2 / -5%).  RFEs: 14 &amp;gt; 16 (+2 / +13%).  Current open bug breakdown by year: 2001 (7), 2002 (4), 2003 (20), 2004 (8).''&lt;br /&gt;
&lt;br /&gt;
''Update on 7/9:  Bugs: 39 &amp;gt; 66 (+27 / +41%).  Support Requests: 2 &amp;gt; 3 (+1 / 33%).  RFEs: 16 &amp;gt; 56 (+40 / +71%).  Current open bug breakdown: 2001 (8), 2002 (7), 2003 (24), 2004 (10).  The &amp;quot;Patches&amp;quot; tracker at SourceForge has been retired.''&lt;br /&gt;
&lt;br /&gt;
''Update on 7/16:  Bugs: 66 &amp;gt; 44 (-22 / -33%).  Support Requests: 2 &amp;gt; 2 (0 / NC).  RFEs: 56 &amp;gt; 40 (-16 / -28%).  Current open bug breakdown: 2001 (8), 2002 (5), 2003 (20), 2004 (11).''&lt;br /&gt;
&lt;br /&gt;
''Update on 7/23:  Bugs: 44 &amp;gt; 47 (+3 / 6%).  Support Requests: 2 &amp;gt; 2 (0 / NC).  RFEs: 40 &amp;gt; 41 (+1 / 2%).  Current open bug breakdown: 2001 (8), 2002 (5), 2003 (19), 2004 (15).''&lt;br /&gt;
&lt;br /&gt;
''Update on 9/1:  Bugs: 41.  Support Requests: 0.  Feature Requests: 49.  Current open bug breakdown: 2001 (7), 2002 (4), 2003 (13), 2004 (17).''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''4)  Better release management of AOLserver'''&lt;br /&gt;
&lt;br /&gt;
While maintaining a ChangeLog and tagging code periodically may be suitable for the developer community, the larger user audience of AOLserver has a varying degree of technical background.  Releases need to be managed such that a clear communication accessible to a non-technical background should be able to understand the value contained in the latest code release providing clear and compelling reasons to keep their installations up to date.  This same information should also be be published on the project website as well as distributed to the AOLSERVER-ANNOUNCE mailing list.&lt;br /&gt;
&lt;br /&gt;
We need to ensure that changes since the previous release will be collated and prepared along with the actual code release, then published on the wiki and the aolserver.com website.  Official releases will be published in source and binary form (when applicable) on the project website via the Project Files section in SourceForge.  An update to the AOLserver project record on Freshmeat.net should also be done.&lt;br /&gt;
&lt;br /&gt;
''Update on 7/16:  With the bug that slipped into the 4.0.6 release, it's obvious that even a simple automated test suite would prove useful.  With that, it's time to start documenting: [[How are releases tested]].''&lt;br /&gt;
&lt;br /&gt;
Release announcements:&lt;br /&gt;
* 07 Sep 2004: [http://listserv.aol.com/cgi-bin/wa?A2=ind0409&amp;amp;L=aolserver-announce&amp;amp;P=66 AOLserver 4.0.8]&lt;br /&gt;
* 19 Jul 2004: [http://listserv.aol.com/cgi-bin/wa?A2=ind0407&amp;amp;L=aolserver-announce&amp;amp;P=163 AOLserver 4.0.7]&lt;br /&gt;
* 16 Jul 2004: [http://listserv.aol.com/cgi-bin/wa?A2=ind0407&amp;amp;L=aolserver-announce&amp;amp;P=61 AOLserver 4.0.6]&lt;br /&gt;
* 07 Jun 2004: [http://listserv.aol.com/cgi-bin/wa?A2=ind0406&amp;amp;L=aolserver&amp;amp;P=4884 AOLserver 4.0.5]&lt;br /&gt;
* 26 Mar 2004: AOLserver 4.0.3&lt;br /&gt;
* 23 Nov 2003: AOLserver 4.0.2&lt;br /&gt;
* 20 Nov 2003: AOLserver 4.0.1&lt;br /&gt;
* 03 Nov 2003: AOLserver 4.0.0&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''5)  Establish metrics for measuring success and publish reports on a regular basis'''&lt;br /&gt;
&lt;br /&gt;
There are several simple measurements that we can take that can be automated on a regular schedule (daily, weekly, monthly) and published on the project website.  The first metric will be:&lt;br /&gt;
&lt;br /&gt;
Commit frequency per username: number of files affected, lines of code affected.&lt;br /&gt;
&lt;br /&gt;
This serves the purpose of making clear to the community where activity is taking place within the project as well as which individuals are actively involved and participating.  Without this, it is unclear from a high level what kind of progress is being made on the project, if any at all, giving people a sense that the project is inactive when that may not actually be the case.  Having this metric measured regularly and published will either confirm or dispel this belief and allow us to better manage this issue.&lt;br /&gt;
&lt;br /&gt;
''Update on 7/9:  The first [http://article.gmane.org/gmane.comp.web.aolserver/10810 CVS commit stats for June 2004] were posted to the AOLserver mailing list.''&lt;br /&gt;
&lt;br /&gt;
''Update on 9/1:  CVS commit stats for [http://article.gmane.org/gmane.comp.web.aolserver/11299 July 2004] and [http://article.gmane.org/gmane.comp.web.aolserver/11300 August 2004] have been posted to the AOLserver mailing list.''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''6)  Regular and open communications to the world'''&lt;br /&gt;
&lt;br /&gt;
In order to raise awareness about AOLserver to both attract users and developers, we need regular and open communication with the world.  The messages need to be clear, concise and accessible to a wide audience.  They need to be sent out regularly to keep the attention of our audience as well as to show steady progress.    &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''7)  Tighter integration of Java into the core execution environment'''&lt;br /&gt;
&lt;br /&gt;
With tighter Java integration into AOLserver, we will be able to leverage more available talent as well as more third-party developed software under AOLserver.  There are several efforts to bring Java into AOLserver but the project could benefit from having these separate efforts aligned and deliver a single solution.&lt;br /&gt;
&lt;br /&gt;
Currently, the [[nsjk2]] module is under active development, especially at AOL, for supporting Java/Tomcat with AOLserver.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''8)  Win32 platform becomes a first-class citizen again'''&lt;br /&gt;
&lt;br /&gt;
While even the more recent releases of AOLserver can still be built on Win32, the commitment of official support for it was left to the community to resolve.  Consider this the resolution: the audience for AOLserver on Win32 should not be diminished without good reason.&lt;br /&gt;
&lt;br /&gt;
''Update on 7/22:  The availability of [http://article.gmane.org/gmane.comp.web.aolserver/10927 experimental Win32 binaries] of AOLserver 4.0.7 was sent to the mailing list.  Links to downloads are on the [[Downloads]] page.''&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Implementing_a_Mutex_Pool&amp;diff=4651</id>
		<title>Implementing a Mutex Pool</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Implementing_a_Mutex_Pool&amp;diff=4651"/>
		<updated>2005-12-21T17:49:08Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: remove spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In a multi-threaded application, there may be a need to &amp;quot;dynamically&amp;quot; create mutexes for short-lived operations and the natural desire to destroy them once you are done.  Creating and destroying mutexes may be a relatively cheap operation, it's still not the best way to do this.  Instead, we can simply implement mutex pools and allocate mutexes out of it.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Note that this is ''not'' just about performance.  Because of the way&lt;br /&gt;
the underlying POSIX thread API works, there are strong correctness&lt;br /&gt;
reasons for avoiding the regular use of &amp;quot;ns_mutex destroy&amp;quot;.&lt;br /&gt;
TODO:  Add more details about that.&lt;br /&gt;
--[[atp]]@piskorski.com, 2004/05/28 19:02 EDT&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
First, we have to determine the size of our mutex pool.  We must decide that &amp;quot;we will never handle more than X concurrent requests&amp;quot;, where X may be 1000.  At server start-up, create 1001 mutexes.  Store 1000 of them in a single NSV, where the key is the mutex ID, value an empty string.  Store the 1001th mutex in another NSV, with the key being some constant string and the mutex ID being the value.  The code may look something like this:&lt;br /&gt;
&lt;br /&gt;
  nsv_set guardMutex guard [[ns_mutex create]]&lt;br /&gt;
  for {set i 0} {$i &amp;lt; 1000} {incr i} {&lt;br /&gt;
    nsv_set mutexPool [[ns_mutex create]] {}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Whenever you need to grab a mutex, you use the NSV to get the mutex ID of that 1001th (guard) mutex, and lock it.  Then, you pop a mutex out of the pool, then release the guard mutex.  You can then use that popped mutex for the particular request you want to perform:&lt;br /&gt;
&lt;br /&gt;
  ns_mutex lock [[nsv_get guardMutex guard]]&lt;br /&gt;
  set mutex [[lindex [nsv_array names mutexPool]] 0]&lt;br /&gt;
  nsv_unset mutexPool $mutex&lt;br /&gt;
  ns_mutex unlock [[nsv_get guardMutex guard]]&lt;br /&gt;
&lt;br /&gt;
(Obviously, you want to add some error checking to make sure that [llength [[nsv_array names mutexPool]]] is not 0 -- in which case, you've exhausted your mutex pool and should either spinwait for a mutex to be returned to the pool, or handle the error however appropriate.)&lt;br /&gt;
&lt;br /&gt;
When the request is done and you're done with the mutex, instead of destroying it, return it to the pool:&lt;br /&gt;
&lt;br /&gt;
  ns_mutex lock [[nsv_get guardMutex guard]]&lt;br /&gt;
  nsv_set mutexPool $mutex {}&lt;br /&gt;
  ns_mutex unlock [[nsv_get guardMutex guard]]&lt;br /&gt;
&lt;br /&gt;
No destroying of mutexes.  Except, at server shutdown, you may want to grab the guard mutex and foreach over all the mutexes in mutexPool and destroy them all.  You might want to check the size of the pool and if it's not 1000, you know that not all mutexes have been returned to the pool and you can handle that however you please.&lt;br /&gt;
&lt;br /&gt;
Doing this, we no longer have to create and destroy mutexes all the time.  We serialize the mutex pool through a single global guard mutex, but that's not as bad as constantly creating and destroying mutexes.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4646</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4646"/>
		<updated>2005-12-15T03:19:31Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: removed spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=User_talk:Dossy&amp;diff=4623</id>
		<title>User talk:Dossy</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=User_talk:Dossy&amp;diff=4623"/>
		<updated>2005-12-13T13:09:17Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: removed spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please feel free to leave comments for me here.  Thanks.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4622</id>
		<title>AOLserver Wiki</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Wiki&amp;diff=4622"/>
		<updated>2005-12-13T13:08:38Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: removed spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[http://www.aolserver.com AOLserver] is a high performance web server with a powerful customization API.  The AOLserver Wiki is a comprehensive resource for all things AOLserver.'''&lt;br /&gt;
&lt;br /&gt;
If you're new to [[wiki]]'s, then [[Welcome, New Visitors]]!  Before you start editing, you may want to read over the [[Formatting Rules]].  To find pages grouped by category, [[Special:Categories|start here]].&lt;br /&gt;
&lt;br /&gt;
== Topics of Conversation ==&lt;br /&gt;
&lt;br /&gt;
* [[What is AOLserver]]?&lt;br /&gt;
* What [[Web Applications for AOLserver]] would you like to see? &lt;br /&gt;
* What [[AOLserver Bugs and Problems]] are you experiencing? &lt;br /&gt;
* What features does AOLserver need? Add them to the [[AOLserver Wishlist]]. &lt;br /&gt;
&lt;br /&gt;
== AOLserver Resources: ==&lt;br /&gt;
&lt;br /&gt;
* [[Downloads]] -- Access to various AOLserver files and resources.&lt;br /&gt;
* [[Modules]] -- Complete list of '''over 70''' AOLserver extension modules and other [[AOLserver Contributed Software]].&lt;br /&gt;
* [[Toolkits]] -- Everything you need to build a complete website, fast.&lt;br /&gt;
* [[Languages]] -- Build websites in a varierty of different programming languages.&lt;br /&gt;
* [[Documentation]] -- Tcl and C API references, tutorials and guides.&lt;br /&gt;
* [[FAQ]] -- Frequently Asked Questions about AOLserver.&lt;br /&gt;
* [[AOLserver Improvement Proposals]]&lt;br /&gt;
* The [[AOLserver Cookbook]] -- A collection of questions, and code examples to answer them.&lt;br /&gt;
* [[AOLserver Packages]] -- Binary distributions of AOLserver in popular package management formats.&lt;br /&gt;
* [[Useful Links]]&lt;br /&gt;
* [http://panoptic.com/wiki/aolserver/Special:Recentchanges?feed=rss RSS 2.0 syndication] of this wiki's recent changes.&lt;br /&gt;
&lt;br /&gt;
== Developers' Guide (A Work In Progress) ==&lt;br /&gt;
&lt;br /&gt;
* [[AOLserver Developer's Guide]] -- A growing, community generated guide on how to develop, deploy and maintain applications using AOLserver including discussions of internals, troubleshooting, debugging, testing and tuning.&lt;br /&gt;
&lt;br /&gt;
== AOLserver Community ==&lt;br /&gt;
&lt;br /&gt;
* The AOLserver project [[Roadmap]], as well as the planned [[Features]] and changes.&lt;br /&gt;
* The [[People]] who work on and contribute to AOLserver, organized into [[Project Teams]].&lt;br /&gt;
* Come join us in our [http://www.aolserver.com/chat/ online chat], or just read the [http://panoptic.com/aolserver/chat/ chat logs].  You can participate on the chat either via IRC (irc.freenode.net:6667 #aolserver) or via AIM.&lt;br /&gt;
* There's also an [http://www.livejournal.com/community/aolserver/ AOLserver LiveJournal community].&lt;br /&gt;
* [[Sites That Run On AOLserver]]&lt;br /&gt;
* The [[OpenACS]] Project.&lt;br /&gt;
* [[AOLserver User Groups]]&lt;br /&gt;
&lt;br /&gt;
== AOLserver Core Developers ==&lt;br /&gt;
&lt;br /&gt;
* [[Vision Statement]]&lt;br /&gt;
* [[CVS Commit Guidelines]]&lt;br /&gt;
* [http://www.aolserver.com/docs/devel/tech/standards.html AOLserver Engineering Standards Manual]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Packages&amp;diff=4544</id>
		<title>AOLserver Packages</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=AOLserver_Packages&amp;diff=4544"/>
		<updated>2005-12-07T02:22:35Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Added Darwinports link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'd like to see the following package formats supported for AOLserver binary distributions:&lt;br /&gt;
* RedHat RPM  (Some older releases in RPM format are available here [http://openacs.org/software/])&lt;br /&gt;
* [[AOLServer 4 on Debian|Debian]] .deb for AOLserver 3 [http://packages.qa.debian.org/a/aolserver.html] and AOLserver 4 [http://packages.qa.debian.org/a/aolserver4.html]&lt;br /&gt;
* Solaris .pkg (both /usr/local and /opt)&lt;br /&gt;
* FreeBSD ports collection&lt;br /&gt;
* NetBSD pkgsrc collection, available for Linux, NetBSD, Solaris, etc [http://www.netbsd.org/Documentation/software/packages.html] The AOLServer package is still in pkgsrc-wip, but builds and runs on NetBSD and Solaris 9 [http://cvs.sourceforge.net/viewcvs.py/pkgsrc-wip/wip/aolserver4/])&lt;br /&gt;
* Win32 binaries are available from the [[Downloads]] page&lt;br /&gt;
* Darwinports for MacOS X [http://darwinports.opendarwin.org/ports/?by=name&amp;amp;substr=aolserver&amp;amp;Search=Submit+Query]&lt;br /&gt;
&lt;br /&gt;
If you know the names of the popular package mangement facility for other platforms that AOLserver is supported on, please add them to this page.  Thanks.  '''-D'''&lt;br /&gt;
&lt;br /&gt;
''I have done some reading and can't find any type of windows version, a windows version would be good for testing and dev of sites. I only ask that at some point windows such as NT, 2000 and XP Pro have a version of AOLServer. You guys are working hard and please don't stop. ~sudha''&lt;br /&gt;
&lt;br /&gt;
[[Dossy]] 17feb2005: Sudha, if you look on the [[Downloads]] page, you'll notice two Win32 binary builds are available.  They're somewhat outdated now, but I will periodically update the Win32 binary builds.&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Vat&amp;diff=4422</id>
		<title>Vat</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Vat&amp;diff=4422"/>
		<updated>2005-11-28T20:53:59Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: Not that kind of VAT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tcl virtual hosting module, by [[Tom Jackson]].&lt;br /&gt;
&lt;br /&gt;
Has some support for content negotiation and templating[http://zmbh.com/vat/].&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=User:Vkurup&amp;diff=4415</id>
		<title>User:Vkurup</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=User:Vkurup&amp;diff=4415"/>
		<updated>2005-11-14T13:08:46Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Vinod Kurup]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
	<entry>
		<id>https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_chan&amp;diff=4414</id>
		<title>Ns chan</title>
		<link rel="alternate" type="text/html" href="https://panoptic.com/mediawiki/aolserver/index.php?title=Ns_chan&amp;diff=4414"/>
		<updated>2005-11-14T13:07:35Z</updated>

		<summary type="html">&lt;p&gt;Vkurup: remove spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manpage|ns_chan}}&lt;br /&gt;
&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
: ns_chan - Share Tcl channels between threads and interpreters&lt;br /&gt;
&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
: '''ns_chan''' ''option ?arg arg ...?''&lt;br /&gt;
&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
: This command lets you transfer ownership of Tcl channels between threads and interpreters within the AOLserver process. &lt;br /&gt;
&lt;br /&gt;
: AOLserver maintains several internal tables to implement the channel-transfer capability.  Each virtual server maintains a private table of shared Tcl channels which are not associated to any particular thread.  Each Tcl interpreter maintains a table of currently attached shared channels.  Consequently, a shared channel can be in the per-virtual-server private table, or it can be in the interpreter private table, but not both at the same time.&lt;br /&gt;
&lt;br /&gt;
: Furthermore, each shared channel has a user-supplied name.  This name is used to track the channel handle in the tables mentioned above.  By using the various '''ns_chan''' commands, you can create shared Tcl channels and move them back and forth between the current Tcl interpreter and per-virtual-server private table. &lt;br /&gt;
&lt;br /&gt;
: The legal ''option''s (which may be abbreviated) are:&lt;br /&gt;
&lt;br /&gt;
* '''ns_chan cleanup''' ''?-shared?''&lt;br /&gt;
   &lt;br /&gt;
: Closes all shared channels found in the per-virtual-server private table or current Tcl interpreter table, depending on the ''-shared'' flag.  If the ''-shared'' flag is not specified, this command will close all channels from the current interpreter which were attached to it by the '''ns_chan get''' command.  If the ''-shared'' flag is specified, this command will close all channels from the per-virtual-server private table, i.e., all those which are currently not attached in any Tcl interpreter or thread. &lt;br /&gt;
&lt;br /&gt;
* '''ns_chan create''' ''channel name''&lt;br /&gt;
   &lt;br /&gt;
: Given an existing Tcl ''channel'' handle, '''ns_chan create''' &amp;quot;unplugs&amp;quot; this channel from the current interpreter, and stores it under the ''name'' in the per-virtual-server private table.  Any further attempt to use this ''channel'' from the current interpreter will fail by throwing a Tcl error.  On success, this command will return an empty string.  The command also throws an error if the channel cannot be found in the current Tcl interpreter or if an entry already exists with the same ''name'' in the per-virtual-server private table. &lt;br /&gt;
&lt;br /&gt;
* '''ns_chan get''' ''name''&lt;br /&gt;
   &lt;br /&gt;
: Retrieves a channel from the per-virtual-server private table for the entry ''name'' and makes it available within the current interpreter.  On success, the command will return the handle for the channel.  This handle can be used in any regular Tcl or AOLserver command that operates on Tcl channels, like puts, read, fconfigure, etc.  The command will throw an error if the channel cannot be plugged in for current interpreter or if the entry ''name'' could not be found in the per-virtual-server private table. &lt;br /&gt;
&lt;br /&gt;
* '''ns_chan list''' ''?-shared?''&lt;br /&gt;
   &lt;br /&gt;
: Returns a list of all shared channels found in the per-virtual-server private table or current Tcl interpreter, depending on the ''-shared'' flag.  If the ''-shared'' flag is not specified, this command will report all channels from the current interpreter which were attached to it by the '''ns_chan get''' command.  If the ''-shared'' flag is specified, this command will report all channels from the per-virtual-server private table, i.e., all those which are currently not attached in any Tcl interpreter or thread. &lt;br /&gt;
&lt;br /&gt;
* '''ns_chan put''' ''name''&lt;br /&gt;
   &lt;br /&gt;
: Unplugs a channel from the current interpreter matching entry ''name'' and returns it to the per-virtual-server private table.  Any further attempt to use the named channel from the current interpreter will fail by throwing a Tcl error.  On success, command will return an empty string.  The command will also throw an error if the named channel was never attached to the current interpreter by some previous '''ns_chan get''' command or if the entry ''name'' is already found in the per-virtual-server private table. &lt;br /&gt;
&lt;br /&gt;
'''EXAMPLES'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    # In thread #1, create the shared entry.&lt;br /&gt;
    ns_chan create [open /tmp/ns_chan w] test&lt;br /&gt;
&lt;br /&gt;
    # Attach to it in thread #1, and write something to it.&lt;br /&gt;
    set fd [ns_chan get test]&lt;br /&gt;
    puts $fd &amp;quot;this is thread #1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Detach from it in thread #1.&lt;br /&gt;
    ns_chan put test&lt;br /&gt;
&lt;br /&gt;
    # Now, in thread #2, attach to the channel and write something to it.&lt;br /&gt;
    set fd [ns_chan get test]&lt;br /&gt;
    puts $fd &amp;quot;this is thread #2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # See it in the attached state in thread #2.&lt;br /&gt;
    ns_chan list  ;# =&amp;gt; test&lt;br /&gt;
&lt;br /&gt;
    # Detach from it in thread #2.&lt;br /&gt;
    ns_chan put test&lt;br /&gt;
&lt;br /&gt;
    # See it back in the per-virtual-server private table.&lt;br /&gt;
    ns_chan list -shared  ;# =&amp;gt; test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
: [[ns_cleanupchans]], [[ns_getchannels]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Core Tcl API]]&lt;/div&gt;</summary>
		<author><name>Vkurup</name></author>
		
	</entry>
</feed>