You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-cvs@tcl.apache.org by da...@apache.org on 2003/05/28 11:17:27 UTC
cvs commit: tcl-site/sources index.rvt index.ttml
davidw 2003/05/28 02:17:27
Modified: . common.tcl comparison.rvt contributing.rvt
index.rvt newnav.html style.css
mod_dtcl documentation.html navbar.html
mod_dtcl/documentation documentation.html
neowebscript navbar.html
presentations/apache-tcl .htaccess common.tcl
rivetexample1.rvt
presentations/dtcl .htaccess common.tcl
presentations/tcl .htaccess common.tcl
Added: mod_dtcl contact.html contributing.html credits.html
download.html examples.html index.html news.html
neowebscript about.html index.html
presentations index.rvt
presentations/apache-tcl anotherphoto.rvt apache1.rvt
apache2.rvt apache_tcl.rvt apachec.rvt asf.rvt
bored.rvt conclusion.rvt current_products.rvt
end.rvt examples.rvt goodlanguage.rvt index.rvt
initialization.rvt integration.rvt integration2.rvt
intro.rvt list.rvt mod_dtcl.rvt mod_tcl.rvt
moreexamples.rvt neowebscript.rvt otherproducts.rvt
ousterhout.rvt outputproc.rvt rivet.rvt
rivetexample2.rvt servingpages.rvt strategies.rvt
survey.rvt survey2.rvt systems.rvt tcl1.rvt
tclchannels.rvt tclcoverview.rvt tclexample1.rvt
tclfeatures.rvt tcloverview.rvt tclweb.rvt
tclweb1.rvt tclweb2.rvt tclweb3.rvt tclweb4.rvt
tclwebhistory.rvt template.rvt websh.rvt
presentations/dtcl advantages.rvt cacheing.rvt cgi.rvt
channel.rvt comparisons.rvt conclusion.rvt
example1.rvt example2.rvt future.rvt how.rvt
htmltcl.rvt index.rvt interpreter.rvt java.rvt
mod_perl.rvt mod_tcl.rvt other.rvt php.rvt
results.rvt rivet.rvt smalllight.rvt template.rvt
what.rvt zope.rvt
presentations/tcl ccommand.rvt comanche.rvt commercial.rvt
contact.rvt easy.rvt embeddable.rvt example1.rvt
extensible.rvt flexibility.rvt history.rvt
index.rvt lightweight.rvt motivation.rvt
multiplatform.rvt powerful.rvt tcloverview.rvt
template.rvt timeline.rvt tk.rvt tkintro.rvt
tksimple.rvt webserver.rvt
sources index.rvt
Removed: mod_dtcl contact.ttml contributing.ttml credits.ttml
documentation.ttml download.ttml examples.ttml
index.ttml news.ttml
neowebscript about.ttml index.ttml
presentations/apache-tcl anotherphoto.ttml apache1.ttml
apache2.ttml apache_tcl.ttml apachec.ttml asf.ttml
bored.ttml conclusion.ttml current_products.ttml
end.ttml examples.ttml goodlanguage.ttml index.ttml
initialization.ttml integration.ttml
integration2.ttml intro.ttml list.ttml
mod_dtcl.ttml mod_tcl.ttml moreexamples.ttml
neowebscript.ttml otherproducts.ttml
ousterhout.ttml outputproc.ttml rivet.ttml
rivetexample1.ttml rivetexample2.ttml
servingpages.ttml strategies.ttml survey.ttml
survey2.ttml systems.ttml tcl1.ttml
tclchannels.ttml tclcoverview.ttml tclexample1.ttml
tclfeatures.ttml tcloverview.ttml tclweb.ttml
tclweb1.ttml tclweb2.ttml tclweb3.ttml tclweb4.ttml
tclwebhistory.ttml template.ttml websh.ttml
presentations/dtcl advantages.ttml cacheing.ttml cgi.ttml
channel.ttml comparisons.ttml conclusion.ttml
example1.ttml example2.ttml future.ttml how.ttml
htmltcl.ttml index.ttml interpreter.ttml java.ttml
mod_perl.ttml mod_tcl.ttml other.ttml php.ttml
results.ttml rivet.ttml smalllight.ttml
template.ttml what.ttml zope.ttml
presentations/tcl ccommand.ttml comanche.ttml
commercial.ttml contact.ttml easy.ttml
embeddable.ttml example1.ttml extensible.ttml
flexibility.ttml history.ttml index.ttml
lightweight.ttml motivation.ttml multiplatform.ttml
powerful.ttml tcloverview.ttml template.ttml
timeline.ttml tk.ttml tkintro.ttml tksimple.ttml
webserver.ttml
sources index.ttml
Log:
Switched to Rivet from mod_dtcl. Made the mod_dtcl pages static.
Updated site look and feel.
Revision Changes Path
1.8 +2 -29 tcl-site/common.tcl
Index: common.tcl
===================================================================
RCS file: /home/cvs/tcl-site/common.tcl,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- common.tcl 17 Jan 2003 20:16:29 -0000 1.7
+++ common.tcl 28 May 2003 09:17:21 -0000 1.8
@@ -5,38 +5,11 @@
}
proc title { {txt "Apache Tcl Project"} } {
- puts {
- <table align="center" width="63%" border="0">
- <tr>
- <td align="center" valign="top">
- <h1 style="padding: .3em;">
- }
- puts "$txt"
- puts {
- </h1>
- </td>
- </tr>
- </table>
- <hr>
- }
+ puts {<p style="margin: 0; border: 0;" align="center"><img style="margin-bottom: -2.5em; " src="/logos/medium_logo.gif" alt="Apache Tcl"></p>}
}
proc rivettitle { {txt "Apache Rivet"} } {
- puts {
- <table align="center" width="100%" border="0">
- <tr>
- <td align="left"><img src="Rivetlogo_small.png"></td>
- <td align="center" valign="top" width="100%">
- <h1 style="padding: .3em;">
- }
- puts "$txt"
- puts {
- </h1>
- </td>
- </tr>
- </table>
- <hr>
- }
+ puts {<p align="center"><img src="Rivetlogo_smaller.png" alt="Apache Rivet"></p>}
}
proc powered { } {
1.3 +1 -1 tcl-site/comparison.rvt
Index: comparison.rvt
===================================================================
RCS file: /home/cvs/tcl-site/comparison.rvt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- comparison.rvt 1 Nov 2002 08:49:54 -0000 1.2
+++ comparison.rvt 28 May 2003 09:17:21 -0000 1.3
@@ -6,7 +6,7 @@
</head>
<body>
- <? title "Apache Tcl Project Comparison" ?>
+ <? title ?>
Which project does what? Which of mod_dtcl, neowebscript or
mod_tcl is right for your needs?
1.4 +0 -6 tcl-site/contributing.rvt
Index: contributing.rvt
===================================================================
RCS file: /home/cvs/tcl-site/contributing.rvt,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- contributing.rvt 1 Nov 2002 08:49:54 -0000 1.3
+++ contributing.rvt 28 May 2003 09:17:21 -0000 1.4
@@ -19,12 +19,6 @@
to the Apache Tcl group, please see the contacts page.
</p>
<p>
- <b>Apache Tcl needs a logo</b>! If you feel graphically
- inclined, please see the contacts page and send in your
- work. We're looking for something that combines the Tcl
- and Apache feathers.
- </p>
- <p>
If you are interested in working on or improving this
website, the code is available from Apache's anonymous
CVS. You will need mod_dtcl, Apache Rivet, and Websh.
1.7 +0 -14 tcl-site/index.rvt
Index: index.rvt
===================================================================
RCS file: /home/cvs/tcl-site/index.rvt,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- index.rvt 1 Nov 2002 08:49:54 -0000 1.6
+++ index.rvt 28 May 2003 09:17:21 -0000 1.7
@@ -25,20 +25,6 @@
</p>
<h3>Current Projects</h3>
- <p>
- <a href="mod_dtcl/">mod_dtcl</a> enables the use of Tcl
- as an HTML-embedded scripting language, similar to PHP,
- as well as executing pure Tcl files. It is fast, light,
- and lets you use the extensive codebase of existing Tcl
- code on the web. For Apache 1.3.
- </p>
- <p>
- <a href="neowebscript/">neowebscript</a> also enables
- the use of Tcl as an HTML-embedded scripting language.
- It uses safe interpreters for security, supports db
- files, can generate graphics on-the-fly, and other
- stuff. For Apache 1.3.
- </p>
<p>
<a href="mod_tcl/">mod_tcl</a>, With mod_tcl
it is possible to write Apache modules entirely in TCL
1.11 +0 -10 tcl-site/newnav.html
Index: newnav.html
===================================================================
RCS file: /home/cvs/tcl-site/newnav.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- newnav.html 18 Nov 2002 23:31:31 -0000 1.10
+++ newnav.html 28 May 2003 09:17:21 -0000 1.11
@@ -53,16 +53,6 @@
</tr>
<tr>
<td>
- <a href="/mod_dtcl/index.ttml">mod_dtcl</a>
- </td>
- </tr>
- <tr>
- <td>
- <a href="/neowebscript/">neowebscript</a>
- </td>
- </tr>
- <tr>
- <td>
<a href="/mod_tcl/">mod_tcl</a>
</td>
</tr>
1.9 +3 -7 tcl-site/style.css
Index: style.css
===================================================================
RCS file: /home/cvs/tcl-site/style.css,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- style.css 4 Nov 2002 19:02:52 -0000 1.8
+++ style.css 28 May 2003 09:17:21 -0000 1.9
@@ -22,7 +22,7 @@
h1 {
font-family: Arial, sans-serif;
- background-color: #003399;
+ background-color: #405871;
color: #cc3300;
}
@@ -73,15 +73,11 @@
}
table.nav {
- border-left-width: thick;
- border-right-width: 0;
- border-top-width: 0;
- border-bottom-width: 0;
- border-style: solid;
+
}
table.nav td {
- background-color: #aaaaff;
+// background-color: #aaaaff;
font-weight: bold;
padding: .3em;
font-size: smaller;
1.10 +2 -2 tcl-site/mod_dtcl/documentation.html
Index: documentation.html
===================================================================
RCS file: /home/cvs/tcl-site/mod_dtcl/documentation.html,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- documentation.html 21 Jul 2001 14:39:08 -0000 1.9
+++ documentation.html 28 May 2003 09:17:21 -0000 1.10
@@ -390,7 +390,7 @@
</p>
<p>
See the <a
- href="http://tcl.apache.org/mod_dtcl/contact.ttml">Contact</a>
+ href="http://tcl.apache.org/mod_dtcl/contact.html">Contact</a>
page for information on sending
mail/subscribing.
</p>
1.8 +7 -7 tcl-site/mod_dtcl/navbar.html
Index: navbar.html
===================================================================
RCS file: /home/cvs/tcl-site/mod_dtcl/navbar.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- navbar.html 1 Nov 2002 08:49:55 -0000 1.7
+++ navbar.html 28 May 2003 09:17:21 -0000 1.8
@@ -5,20 +5,20 @@
</div><div class="box">
<hr></hr>
</div><div class="box">
- <a href="index.ttml">mod_dtcl Home</a>
+ <a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
- <a href="examples.ttml">mod_dtcl examples</a>
+ <a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
- <a href="download.ttml">Download mod_dtcl</a>
+ <a href="download.html">Download mod_dtcl</a>
</div><div class="box">
- <a href="news.ttml">News & Status</a>
+ <a href="news.html">News & Status</a>
</div><div class="box">
- <a href="contributing.ttml">Contributing</a>
+ <a href="contributing.html">Contributing</a>
</div><div class="box">
- <a href="contact.ttml">Contact/Mailing list</a>
+ <a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
- <a href="credits.ttml">Credits</a>
+ <a href="credits.html">Credits</a>
</div>
</td>
1.1 tcl-site/mod_dtcl/contact.html
Index: contact.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Contact information for mod_dtcl</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<h2>Contact information for mod_dtcl</h2>
<p>
All enquiries regarding mod_dtcl (both usage and
development) should be directed towards the mailing list
at <a
href="mailto:mod_dtcl@tcl.apache.org">mod_dtcl@tcl.apache.org</a>.
It is not necessary to be subscribed to the mailing list
to post, although you might want to set a reply-to.
</p>
<p>To subscribe to the mailing list, send an empty email
to <a
href="mailto:mod_dtcl-subscribe@tcl.apache.org">mod_dtcl-subscribe@tcl.apache.org</a>.</p>
<p>
The list archives can be found (for now) at <a
href="http://marc.theaimsgroup.com/?l=apache-moddtcl&r=1&w=2">marc.theaimsgroup.com</a>.
</p>
</td>
</tr>
</table>
<table align="center" width="100%">
<tr>
<td align="left">
<a href="http://www.apache.org/"><img src="/apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</td>
<td align="right">
<a href="http://www.tcl.tk/"><img src="/tclp.gif"
alt="Powered by Tcl" border="0"
width="42"
height="64"></a>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/mod_dtcl/contributing.html
Index: contributing.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Contributing to mod_dtcl</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<h2>Contributing to mod_dtcl</h2>
<p>
mod_dtcl is in maintenance mode, and new development is
being done on <a href="../rivet/">Apache Rivet</a>.
Anything you may wish to contribute is still welcome,
but any major changes will only be undertaken in Rivet.
</p>
</td>
</tr>
</table>
<table align="center" width="100%">
<tr>
<td align="left">
<a href="http://www.apache.org/"><img src="/apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</td>
<td align="right">
<a href="http://www.tcl.tk/"><img src="/tclp.gif"
alt="Powered by Tcl" border="0"
width="42"
height="64"></a>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/mod_dtcl/credits.html
Index: credits.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>mod_dtcl Credits</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<h2>Credits for mod_dtcl</h2>
<p>
The following have contributed code, time, ideas and
suggestions:
</p>
<ul>
<li>Rolf Ade</li>
<li>Paolo Brutti</li>
<li><a href="mailto:valerio@most.it">Valerio Gionco</a></li>
<li><a href="mailto:Simon.Greaves@bigfoot.com">Simon Greaves</a></li>
<li>Craig Huckabee</li>
<li>Jorgen Frojk Kjaersgaard</li>
<li><a href=mailto:wojciech@kocjan.org>Wojtek
Kocjan</a></li>
<li>Charles Lecoufle</li>
<li><a href="http://www.perki.org">Pierre-Mikael Legris</a></li>
<li>Rasmus Lerdorf</li>
<li><a href=mailto:cl@us-bo.dk>Claus Bo Nielsen</a></li>
<li>Jan Nijtmans</li>
<li>Daniel Ridruejo</li>
<li><a href=mailto:mi@aldan.algebra.com>Mikhail Teterin</a></li>
<li><a href="http://www.dedasys.com/davidw/">David
Welton</a> (Author and maintainer)</li>
</ul>
<p>
Hosting services and equipment provided by <b><a href="http://www.covalent.net">Covalent Technologies</a></b>.
</p>
</td>
</tr>
</table>
<table align="center" width="100%">
<tr>
<td align="left">
<a href="http://www.apache.org/"><img src="/apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</td>
<td align="right">
<a href="http://www.tcl.tk/"><img src="/tclp.gif"
alt="Powered by Tcl" border="0"
width="42"
height="64"></a>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/mod_dtcl/download.html
Index: download.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Download mod_dtcl</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<h2>Download mod_dtcl</h2>
<p>
<b>Pre-built packages</b>:
</p>
<ul>
<li>Debian GNU/Linux: <a
href="http://www.debian.org/Packages/unstable/web/libapache-mod-dtcl.html">http://www.debian.org/Packages/unstable/web/libapache-mod-dtcl.html</a>
</li>
<li>Redhat GNU/Linux: <a
href="Error: invalid command name "hputs"
1.1 tcl-site/mod_dtcl/examples.html
Index: examples.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<html>
<!-- $Id: examples.html,v 1.1 2003/05/28 09:17:21 davidw Exp $ -->
<title>mod_dtcl examples</title>
<link rel="stylesheet" href="../style.css">
<body bgcolor=white>
<table bgcolor=black width=100%>
<tr>
<td align=center>
<font size=40 color=#ffffff>
<b>mod_dtcl examples</b>
</font>
</td>
</tr>
</table>
<p>
These are some examples, rather limited ones, of what can be done with
mod_dtcl. <b>Note:</b> because mod_dtcl is no longer part of the main
Apache Tcl site (see <a href="../rivet">Rivet</a> instead), this page
is no longer a live mod_dtcl script.
<p>
<table>
<tr><td><hr><b>Hello world</b></td></tr>
<tr><td bgcolor=gray><pre>
<?
headers setcookie "foo" "bar" # we have to put this before any 'puts' statements
# once buffering is switched off, it is no longer possible to
# maninuplate headers
buffered off
puts "Hello world"
?>
</pre>
</td></tr>
<tr><td>
Produces:
<p>
hello world
<p>
</td></tr>
<tr><td><hr>
<b>Conditionals:</b>
</td></tr>
<tr><td bgcolor=gray><pre>
<? if { 1 } { ?>
<h2> True </h2>
<? } ?>
</td></tr></pre>
<tr><td>
Produces:
<p>
<h2> True </h2>
</td></tr>
<tr><td><hr><b>Loops:</b>
</td></tr>
<tr><td bgcolor=gray><pre>
<?
set x 0
while { $x < 5 } {
puts "\$x = $x<br>"
incr x
?>
LOOP<br>
<? } ?>
</pre>
</td></tr>
<tr><td>Produces:<p>
$x = 0<br>
LOOP<BR>
$x = 1<br>
LOOP<BR>
$x = 2<br>
LOOP<BR>
$x = 3<br>
LOOP<BR>
$x = 4<br>
LOOP<BR>
</td></tr>
<tr><td><hr><b>Variables (environmental as well as those passed to the script)</b><p>
</td></tr>
<tr><td bgcolor=gray><pre>
<?
hgetvars
if { [ array exists VARS ] } {
puts "< ul>"
foreach { var val } [ var all ] {
puts "<li>(VARS) $var = $val"
}
puts "</ul>"
}
if { [ array exists ENVS ] } {
puts "<ul>"
foreach { vr } [ array names ENVS ] {
puts "<li>(ENVS) $vr = $ENVS($vr)"
}
puts "</ul>"
}
if { [ array exists COOKIES ] } {
puts "<ul>"
foreach { vr } [ array names COOKIES ] {
puts "<li>(COOKIES) $vr = $COOKIES($vr)"
}
puts "</ul>"
}
?>
</pre>
</td></tr>
<tr><td>Produces:<p>
<ul>
<li>(ENVS) DATE_LOCAL = Saturday, 24-May-2003 18:05:46 CEST
<li>(ENVS) SERVER_ADDR = 127.0.0.1
<li>(ENVS) DOCUMENT_ROOT = /var/www/tcl-site/
<li>(ENVS) GATEWAY_INTERFACE = CGI/1.1
<li>(ENVS) SERVER_PORT = 80
<li>(ENVS) HTTP_HOST = tclsite
<li>(ENVS) DATE_GMT = Saturday, 24-May-2003 16:05:46 GMT
<li>(ENVS) REMOTE_ADDR = 127.0.0.1
<li>(ENVS) DOCUMENT_URI = /mod_dtcl/examples.ttml
<li>(ENVS) SERVER_NAME = tclsite
<li>(ENVS) HTTP_CONNECTION = keep-alive
<li>(ENVS) SERVER_SIGNATURE =
<li>(ENVS) SERVER_PROTOCOL = HTTP/1.1
<li>(ENVS) REQUEST_URI = /mod_dtcl/examples.ttml
<li>(ENVS) REMOTE_PORT = 59939
<li>(ENVS) HTTP_ACCEPT_CHARSET = ISO-8859-1, utf-8;q=0.66, *;q=0.66
<li>(ENVS) SERVER_SOFTWARE = Apache/1.3.26 (Unix) Debian GNU/Linux Rivet mod_dtcl
<li>(ENVS) REQUEST_METHOD = GET
<li>(ENVS) HTTP_ACCEPT_LANGUAGE = en, it;q=0.50
<li>(ENVS) UNIQUE_ID = Ps@YWn8AAAEAACiR-24
<li>(ENVS) QUERY_STRING =
<li>(ENVS) HTTP_USER_AGENT = Mozilla/5.0 Galeon/1.2.5 (X11; Linux ppc; U;) Gecko/20020622 Debian/1.2.5-0.woody.1
<li>(ENVS) HTTP_KEEP_ALIVE = 300
<li>(ENVS) LAST_MODIFIED = Friday, 25-Oct-2002 07:21:04 CEST
<li>(ENVS) SCRIPT_NAME = /mod_dtcl/examples.ttml
<li>(ENVS) SCRIPT_FILENAME = /var/www/tcl-site/mod_dtcl/examples.ttml
<li>(ENVS) PATH = /bin:/usr/bin:/sbin:/usr/sbin
<li>(ENVS) HTTP_ACCEPT_ENCODING = gzip, deflate, compress;q=0.9
<li>(ENVS) DOCUMENT_PATH_INFO =
<li>(ENVS) SERVER_ADMIN = webmaster@ashland
<li>(ENVS) USER_NAME = davidw
<li>(ENVS) DOCUMENT_NAME = examples.ttml
<li>(ENVS) HTTP_ACCEPT = text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
</ul>
</td></tr>
<tr><td><hr><b>Create a table on the fly</b><p>
</td></tr>
<tr><td bgcolor=gray><pre>
<?
set i 1
puts "<table>\n"
while { $i <= 8 } {
puts "<tr>\n"
for {set j 1} {$j <= 8} {incr j} {
set num [ expr $i * $j * 4 - 1]
puts [ format "<td bgcolor=%2x%2x%2x > $num $num $num </td>\n" $num $num $num ]
}
incr i
puts "</tr>\n"
}
puts "</table>\n"
?>
</pre>
</td></tr>
<tr><td>Produces:<p>
<table>
<tr>
<td bgcolor= 3 3 3 > 3 3 3 </td>
<td bgcolor= 7 7 7 > 7 7 7 </td>
<td bgcolor= b b b > 11 11 11 </td>
<td bgcolor= f f f > 15 15 15 </td>
<td bgcolor=131313 > 19 19 19 </td>
<td bgcolor=171717 > 23 23 23 </td>
<td bgcolor=1b1b1b > 27 27 27 </td>
<td bgcolor=1f1f1f > 31 31 31 </td>
</tr>
<tr>
<td bgcolor= 7 7 7 > 7 7 7 </td>
<td bgcolor= f f f > 15 15 15 </td>
<td bgcolor=171717 > 23 23 23 </td>
<td bgcolor=1f1f1f > 31 31 31 </td>
<td bgcolor=272727 > 39 39 39 </td>
<td bgcolor=2f2f2f > 47 47 47 </td>
<td bgcolor=373737 > 55 55 55 </td>
<td bgcolor=3f3f3f > 63 63 63 </td>
</tr>
<tr>
<td bgcolor= b b b > 11 11 11 </td>
<td bgcolor=171717 > 23 23 23 </td>
<td bgcolor=232323 > 35 35 35 </td>
<td bgcolor=2f2f2f > 47 47 47 </td>
<td bgcolor=3b3b3b > 59 59 59 </td>
<td bgcolor=474747 > 71 71 71 </td>
<td bgcolor=535353 > 83 83 83 </td>
<td bgcolor=5f5f5f > 95 95 95 </td>
</tr>
<tr>
<td bgcolor= f f f > 15 15 15 </td>
<td bgcolor=1f1f1f > 31 31 31 </td>
<td bgcolor=2f2f2f > 47 47 47 </td>
<td bgcolor=3f3f3f > 63 63 63 </td>
<td bgcolor=4f4f4f > 79 79 79 </td>
<td bgcolor=5f5f5f > 95 95 95 </td>
<td bgcolor=6f6f6f > 111 111 111 </td>
<td bgcolor=7f7f7f > 127 127 127 </td>
</tr>
<tr>
<td bgcolor=131313 > 19 19 19 </td>
<td bgcolor=272727 > 39 39 39 </td>
<td bgcolor=3b3b3b > 59 59 59 </td>
<td bgcolor=4f4f4f > 79 79 79 </td>
<td bgcolor=636363 > 99 99 99 </td>
<td bgcolor=777777 > 119 119 119 </td>
<td bgcolor=8b8b8b > 139 139 139 </td>
<td bgcolor=9f9f9f > 159 159 159 </td>
</tr>
<tr>
<td bgcolor=171717 > 23 23 23 </td>
<td bgcolor=2f2f2f > 47 47 47 </td>
<td bgcolor=474747 > 71 71 71 </td>
<td bgcolor=5f5f5f > 95 95 95 </td>
<td bgcolor=777777 > 119 119 119 </td>
<td bgcolor=8f8f8f > 143 143 143 </td>
<td bgcolor=a7a7a7 > 167 167 167 </td>
<td bgcolor=bfbfbf > 191 191 191 </td>
</tr>
<tr>
<td bgcolor=1b1b1b > 27 27 27 </td>
<td bgcolor=373737 > 55 55 55 </td>
<td bgcolor=535353 > 83 83 83 </td>
<td bgcolor=6f6f6f > 111 111 111 </td>
<td bgcolor=8b8b8b > 139 139 139 </td>
<td bgcolor=a7a7a7 > 167 167 167 </td>
<td bgcolor=c3c3c3 > 195 195 195 </td>
<td bgcolor=dfdfdf > 223 223 223 </td>
</tr>
<tr>
<td bgcolor=1f1f1f > 31 31 31 </td>
<td bgcolor=3f3f3f > 63 63 63 </td>
<td bgcolor=5f5f5f > 95 95 95 </td>
<td bgcolor=7f7f7f > 127 127 127 </td>
<td bgcolor=9f9f9f > 159 159 159 </td>
<td bgcolor=bfbfbf > 191 191 191 </td>
<td bgcolor=dfdfdf > 223 223 223 </td>
<td bgcolor=ffffff > 255 255 255 </td>
</tr>
</table>
</td></tr>
<tr><td><hr> <b>In addition</b><br>
There are many, many other things you can do with mod_dtcl. You can,
if everything is compiled right, load tcl modules, like libpgtcl.so
(the Postgresql interface), so that you can interact with a database!
<p>
</td></tr>
</table>
<table border=0 bgcolor=green><tr><td>
<table border=0 bgcolor="#000000">
<tr><td align=center bgcolor=blue><font color="#ffffff" size="+2">dtcl_info</font><br></td></tr>
<tr><td><font color="#ffffff">Free cache size: 9</font><br></td></tr>
<tr><td><font color="#ffffff">PID: 10385</font><br></td></tr>
</table>
</td></tr></table>
<p>
<a href="index.ttml">Return to the mod_dtcl homepage</a>
</p>
</body>
</html>
1.1 tcl-site/mod_dtcl/index.html
Index: index.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Apache Tcl</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<p>
<b>mod_dtcl</b> is an Open Source implementation of server
parsed Tcl, running under Apache. It is a flexible
platform that allows you to integrate Tcl and HTML
however you choose; you can tightly interweave them,
in order to write powerful dynamic web pages quickly, or
you can also follow different programming models, such
as the "Model View Controller" framework, should you
wish to create a large, complex web system which
seperates content from code.
</p>
<p>
<a href="http://www.tcl.tk/">Tcl</a> is a very
widely used and available scripting language with many
years of development invested in it. Because Tcl is such
a well known language, there is a large amount of
documentation for it, both on the net and books. There
are also many external Tcl modules that you can load
into mod_dtcl, to create images, access databases, and
so forth.
</p>
<p>
<b>Note:</b> mod_dtcl is still supported, but no longer
under development. <b>You should use <a
href="/rivet/">Rivet</a></b> if you are starting a new
project. Otherwise, consider upgrading when it is
convenient.
</p>
</td>
</tr>
</table>
<table align="center" width="100%">
<tr>
<td align="left">
<a href="http://www.apache.org/"><img src="/apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</td>
<td align="right">
<a href="http://www.tcl.tk/"><img src="/tclp.gif"
alt="Powered by Tcl" border="0"
width="42"
height="64"></a>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/mod_dtcl/news.html
Index: news.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>mod_dtcl News & Status</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
mod_dtcl
</h1>
</td>
</tr>
</table>
<hr>
<table class="main">
<tr>
<td bgcolor="#cccccc" valign="top" align="left">
<b>
<div class="box">
<a href="../">Apache Tcl Home</a>
</div><div class="box">
<hr></hr>
</div><div class="box">
<a href="index.html">mod_dtcl Home</a>
</div><div class="box">
<a href="documentation/">mod_dtcl documentation</a>
</div><div class="box">
<a href="examples.html">mod_dtcl examples</a>
</div><div class="box">
<a href="download.html">Download mod_dtcl</a>
</div><div class="box">
<a href="news.html">News & Status</a>
</div><div class="box">
<a href="contributing.html">Contributing</a>
</div><div class="box">
<a href="contact.html">Contact/Mailing list</a>
</div><div class="box">
<a href="credits.html">Credits</a>
</div>
</td>
<td valign="top">
<h2>News & Status</h2>
<p>
<b>August 13, 2002</b> <a href="../rivet/">Apache
Rivet</a> is now on the Apache Tcl site. mod_dtcl will
at some point be phased out in favor of Rivet.
</p>
<p>
<b>January 29, 2002:</b> The Apache Tcl mailing list
archives are now available from: <a
href="http://www.apachelabs.org">www.apachelabs.org</a>.
Thanks to Justin Erenkrantz!
</p>
<p>
<b>December 9, 2001:</b> Added mod_dtcl and tcl <a
href="/presentations/">presentations</a>.
</p>
<p>
<b>November 26, 2001:</b> The mailing list archives can
be found at <a
href="http://marc.theaimsgroup.com/?l=apache-moddtcl&r=1&w=2">marc.theaimsgroup.com</a>.
Hopefully the ASF will create a solution for all ASF
project mailing lists.
</p>
<p>
<b>Noverber 3, 2001:</b> mod_dtcl 0.11.5 release -
Small content-type bug fixed.
</p>
<p>
<b>October 15, 2001:</b> mod_dtcl 0.11.4 release -
Parse bug fixed, windows makefile updates, Debian script updates.
</p>
<p>
<b>October 10, 2001:</b> mod_dtcl 0.11.3 release -
updates are mainly relevant to internationalization.
</p>
<p>
<b>August 30, 2001:</b> mod_dtcl 0.11.2 has been
released, without any major changes.
</p>
<p>
<b>August 4, 2001:</b> New documentation is available on
line - check out the documentation link. In addition, a
new version of mod_dtcl is out.
</p>
<p>
<b>March 18, 2001:</b> mod_dtcl version 0.10.0 has been released!
</p>
<p>
<b>December 24, 2000</b> Mailing list archives for
mod_dtcl are available here: <a
href="http://archive.covalent.net/">http://archive.covalent.net/</a>,
at the bottom of the page.
</p>
<p>
<b>December 8, 2000:</b> The mod_dtcl code in CVS has
file upload capabilities, as well as support for
per-virtual-server Tcl interpreters.
</p>
<p>
<b>December 8, 2000:</b> tcl.apache.org is now linked
from the Apache site!
</p>
<p>
<b>November 10, 2000:</b> mod_dtcl is released as an official
Apache Software Foundation project under the umbrella of
Apache Tcl.
</p>
</td>
</tr>
</table>
<table align="center" width="100%">
<tr>
<td align="left">
<a href="http://www.apache.org/"><img src="/apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</td>
<td align="right">
<a href="http://www.tcl.tk/"><img src="/tclp.gif"
alt="Powered by Tcl" border="0"
width="42"
height="64"></a>
</td>
</tr>
</table>
</body>
</html>
1.3 +2 -2 tcl-site/mod_dtcl/documentation/documentation.html
Index: documentation.html
===================================================================
RCS file: /home/cvs/tcl-site/mod_dtcl/documentation/documentation.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- documentation.html 19 Oct 2001 16:42:21 -0000 1.2
+++ documentation.html 28 May 2003 09:17:21 -0000 1.3
@@ -475,7 +475,7 @@
</p>
<p>
See the <a
- target="_top" href="http://tcl.apache.org/mod_dtcl/contact.ttml">Contact</a>
+ target="_top" href="http://tcl.apache.org/mod_dtcl/contact.html">Contact</a>
page for information on sending
mail/subscribing.
</p>
1.3 +2 -2 tcl-site/neowebscript/navbar.html
Index: navbar.html
===================================================================
RCS file: /home/cvs/tcl-site/neowebscript/navbar.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- navbar.html 18 Nov 2002 23:35:44 -0000 1.2
+++ navbar.html 28 May 2003 09:17:22 -0000 1.3
@@ -2,8 +2,8 @@
<b>
<a href="../">Apache Tcl Home</a><br></br>
<hr></hr>
- <a href="index.ttml">Home</a><br></br>
- <a href="about.ttml">About</a><br></br>
+ <a href="index.html">Home</a><br></br>
+ <a href="about.html">About</a><br></br>
<a href="http://nws.sourceforge.net/">Website</a><br></br>
<a href="http://sourceforge.net/projects/nws/">SF Project</a><br></br>
</td>
1.1 tcl-site/neowebscript/about.html
Index: about.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>NeoWebScript</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
NeoWebScript
</h1>
</td>
</tr>
</table>
<hr>
<table width="75%" border="0">
<tr>
<td bgcolor="#cccccc" width="20%" valign="top" align="left">
<b>
<a href="../">Apache Tcl Home</a><br></br>
<hr></hr>
<a href=".">Home</a><br></br>
<a href="about.html">About</a><br></br>
<a href="http://nws.sourceforge.net/">Website</a><br></br>
<a href="http://sourceforge.net/projects/nws/">SF Project</a><br></br>
</td>
<td valign="top">
<p>
Using NeoWebScript, you can create web applications of enormous power
and flexibility. You can create interfaces between sophisticated webpages
developed with cutting edge design tools and backend applications,
including Oracle and Postgres, among many others.
</p><p>
NeoWebScript is a plug-in module for the Apache webserver.
</p><p>
Once you install it, the webserver will execute the NeoWebScript code
contained in a webpage each time it is requested.
</p><p>
You can make your webpages customize themselves in response to user input,
database lookups, etc., creating a unique Internet experience.
</p><p>
As such, it can be used on any of the tens of millions of Apache servers
on the Internet.
</p><p>
NeoWebScript uses the Tool command language (Tcl) as its programming
language, allowing you to leverage hundreds of third party Tcl extensions.
</p><p>
NeoWebScript-enabled pages run with much less overhead than CGI programs.
Also, since NeoWebScript scripts are embedded into webpages, the static
content of the webpage can be designed and created with webpage creation
tools, rather than having to be output by the program like CGI does.
</p><p>
Web hosters and ISPs love NeoWebScript, because its default security settings
allow their customers to write programs without giving them full shell access,
the ability to run arbitrary programs and inspect arbitrary files on the system.
</p>
<p align="center">
<a href="http://www.apache.org/"><img src="../apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</p>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/neowebscript/index.html
Index: index.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>NeoWebScript</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<table align="center" width="63%" border="0">
<tr>
<td align="center" valign="top">
<h1 style="padding: .3em;">
NeoWebScript
</h1>
</td>
</tr>
</table>
<hr>
<table width="75%" border="0">
<tr>
<td bgcolor="#cccccc" width="20%" valign="top" align="left">
<b>
<a href="../">Apache Tcl Home</a><br></br>
<hr></hr>
<a href=".">Home</a><br></br>
<a href="about.html">About</a><br></br>
<a href="http://nws.sourceforge.net/">Website</a><br></br>
<a href="http://sourceforge.net/projects/nws/">SF Project</a><br></br>
</td>
<td width="5%"> </td>
<td valign="top">
<p>
NeoWebScript is an open source scripting module for the Apache webserver.
Based on the Tcl programming language, it has a number of powerful features,
including the ability to embed Tcl code into HTML pages, access and manipulate
databases, and generate graphics on-the-fly, among many others.
</p>
<p>
NeoWebScript is currently hosted at SourceForge.
</p>
<p align="center">
<a href="http://www.apache.org/"><img src="../apache_pb.gif"
alt="Powered by Apache" border="0"
width="259"
height="32"></a>
</p>
</td>
</tr>
</table>
</body>
</html>
1.1 tcl-site/presentations/index.rvt
Index: index.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Apache Tcl Presentations</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<? title ?>
<table>
<tr>
<? include [file join .. newnav.html] ?>
<td valign="top">
<p>
Tcl presentations on line. These presentations are made
with HTML, style sheets, and mod_dtcl. This means they
are very portable (although a modern browser that
handles style sheets is necessary), and you can use them
from a networked computer, with just a browser!
</p>
<p>
The presentations are released under the Apache Software
License, which means you need to give credit if you use
these - but please feel free to take them, modify,
redistribute, or otherwise do as you wish.
</p>
<ul>
<li>Tcl Presentation: <a href="tcl/">(live)</a> <a
href="tcl.tgz">(tarball)</a><br>
Presentation on the Tcl programming language and the Tk toolkit.
</li>
<li>mod_dtcl Presentation: <a href="dtcl/">(live)</a> <a
href="dtcl.tgz">(tarball)</a><br>
mod_dtcl presentation.
</li>
<li>
Apache Tcl Presentation: <a
href="apache-tcl/">(live)</a><br>
The present and future of Apache Tcl, and why Tcl is
such a logical fit for doing web content.
</li>
</ul>
</td>
</tr>
</table>
<? powered ?>
</body>
</html>
1.2 +1 -1 tcl-site/presentations/apache-tcl/.htaccess
Index: .htaccess
===================================================================
RCS file: /home/cvs/tcl-site/presentations/apache-tcl/.htaccess,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .htaccess 11 Oct 2002 15:37:24 -0000 1.1
+++ .htaccess 28 May 2003 09:17:22 -0000 1.2
@@ -1,3 +1,3 @@
-Dtcl_Script BeforeScript "source [file join [pwd] common.tcl]"
+RivetUserConf BeforeScript "source [file join [pwd] common.tcl]"
1.4 +4 -5 tcl-site/presentations/apache-tcl/common.tcl
Index: common.tcl
===================================================================
RCS file: /home/cvs/tcl-site/presentations/apache-tcl/common.tcl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- common.tcl 15 Oct 2002 15:24:18 -0000 1.3
+++ common.tcl 28 May 2003 09:17:22 -0000 1.4
@@ -15,7 +15,7 @@
proc ::makeindex {} {
puts "<ul>"
foreach fl [getorder] {
- set flttml "$fl.ttml"
+ set flttml "$fl.rvt"
puts [subst {
<li style="font-size:small ; list-style-type:square ; list-style-image: none"><a href="$flttml">$fl</a></li>
}]
@@ -24,15 +24,14 @@
}
proc ::nexturl { } {
- return "[lindex $::urls $::next].ttml?index=$::next"
+ return "[lindex $::urls $::next].rvt?index=$::next"
}
proc ::prevurl { } {
- return "[lindex $::urls $::prev].ttml?index=$::prev"
+ return "[lindex $::urls $::prev].rvt?index=$::prev"
}
proc ::prevnext { title } {
- hgetvars
set ::urls [getorder]
if { [var exists index] } {
set ::index [var get index]
@@ -70,7 +69,7 @@
proc ::footer {} {
puts {
<p align="center" style="font-size:small">
- <a href="list.ttml">INDEX</a>
+ <a href="list.rvt">INDEX</a>
</p>
}
}
1.2 +39 -5 tcl-site/presentations/apache-tcl/rivetexample1.rvt
Index: rivetexample1.rvt
===================================================================
RCS file: /home/cvs/tcl-site/presentations/apache-tcl/rivetexample1.rvt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- rivetexample1.rvt 11 Oct 2002 07:17:06 -0000 1.1
+++ rivetexample1.rvt 28 May 2003 09:17:22 -0000 1.2
@@ -1,11 +1,45 @@
-<? puts "<table>\n"
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>Rivet Example</title>
+ <link rel="stylesheet" href="style.css">
+ </head>
+
+ <body>
+ <? prevnext "<h1>Rivet Example</h1>" ?>
+
+<pre>
+<? puts "<table>\n"
+
+for {set i 1} { $i <= 8 } {incr i} {
+ puts "<tr>\n"
+ for {set j 1} {$j <= 8} {incr j} {
+ set num [ expr $i * $j * 4 - 1]
+ puts [ format "<td bgcolor=%2x%2x%2x > $num $num $num </td>\n" \
+ $num $num $num ]
+ }
+ puts "</tr>\n"
+}
+
+puts "</table>\n" ?>
+</pre>
+
+<?
+puts {<table align="center" style="font-size:20%">}
+
for {set i 1} { $i <= 8 } {incr i} {
puts "<tr>\n"
for {set j 1} {$j <= 8} {incr j} {
- set num [ expr $i * $j * 4 - 1]
- puts [ format "<td bgcolor=%2x%2x%2x > $num $num $num </td>\n" \
- $num $num $num ]
+ set num [ expr {$i * $j * 4 - 1} ]
+ puts [ format "<td bgcolor=%2x%2x%2x > $num $num $num </td>\n" $num $num $num ]
}
puts "</tr>\n"
}
-puts "</table>\n" ?>
+
+puts "</table>\n"
+?>
+</div>
+
+ <?footer?>
+ </body>
+</html>
1.1 tcl-site/presentations/apache-tcl/anotherphoto.rvt
Index: anotherphoto.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Chipmunk</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Almost there...</h1>" ?>
<p align="center">
<img src="chipmunk2.jpg" alt="Chipmunk in Oregon Cascades" align="middle">
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/apache1.rvt
Index: apache1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The Apache Web Server</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>The Apache Web Server</h1>" ?>
<ul>
<li>The world's most popular web server!</li>
<li>According to <a href="http://www.netcraft.com">netcraft</a>,
Apache accounts for around 60% of the web server market, putting
it ahead of all other contenders combined.</li>
<li>
Apache is:
<ul>
<li>flexible - can be configured to perform a variety of
tasks in disparate environments.</li>
<li>fast - quite competetive with other systems.</li>
<li>correct - standards compliant, part of standards committees.</li>
<li>secure - well tested, well known code.</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/apache2.rvt
Index: apache2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>About Apache</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>About Apache</h1>" ?>
<p>
The Apache web server was first created by a group of sysadmins
who were using the NCSA server and had created patches to enhance
and improve it. Thus, "A Patchy" web server.
</p>
<p>
The Apache Software Foundation now encompasses a large variety
of diverse projects in addition to Tcl: the web server, XML,
Java, Perl, PHP, APR, Python, and is a non-profit corporation
registered in the U.S., with members throughout the world.
</p>
<p>
The ASF consists of 60-some members, and hundreds of
"committers" - those who have the rights to make changes to
different projects' code.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/apache_tcl.rvt
Index: apache_tcl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache Tcl</h1>" ?>
<p>
Our projects aren't just related by the fact that we all use Tcl
- the Apache Tcl projects share a common philosophy that "simple
things should be easy, and hard things should be possible" (to
borrow a quote - it works well for them!). We all arrived at
Tcl not because it's the only tool in our box, but because for
us it is the right tool.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/apachec.rvt
Index: apachec.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache C Highlights</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache C Highlights</h1>" ?>
<p>
Apache's C API is quite extensive, and merits one or more talks
of its own, but here are a few things we have found particularly
useful. A big thanks to all the httpd developers!
</p>
<ul>
<li>pools
<ul>
<li>A memory management system that simplifies life a
lot for the module author!</li>
</ul>
</li>
<li>apreq
<ul>
<li>good system for dealing with user-supplied data -
cookies, GET and POST variables, etc...</li>
</ul>
</li>
<li>apxs
<ul>
<li>Useful for building extensions - gives you the compile
options you need to find and use the same build environment
as Apache.</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/asf.rvt
Index: asf.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache Tcl</h1>" ?>
<ul>
<li>Apache Tcl was officially launched early in 2001, as an Apache
Software Foundation project, with David Welton as the "Vice
President". It now includes 5 different projects and 7
developers.</li>
<li>All the projects are run as "Free Software" or "Open Source"
projects - they are a meritocracy. Anyone is welcome to help out,
and efforts of all kinds are appreciated.
</li>
<li>
How does one get involved? It's easy - read the mailing lists,
learn about what needs doing, and then start working. When
you are recognized as having made significant contributions,
you get write access in the CVS repository. After sustained
and important contributions, you may then become a member of
the ASF.
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/bored.rvt
Index: bored.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Bored Yet?</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Bored Yet?</h1>" ?>
<p align="center">
<img src="clouds1.jpg" alt="Clouds in Padova" align="middle">
</p>
<p align="center" style="font-size:smaller">
Piazza delle Erbe, Padova, Italia
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/conclusion.rvt
Index: conclusion.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Conclusion</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Conclusion</h1>" ?>
<p>Thanks for listening!</p>
<p>More information is available here:
</p>
<ul>
<li><a href="http://tcl.apache.org">http://tcl.apache.org</a></li>
<li><a href="http://www.tcl.tk">http://www.tcl.tk</a></li>
</ul>
<p>I can be reached at <a
href="mailto:davidw@dedasys.com">davidw@dedasys.com</a> -
please feel free to write.</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/current_products.rvt
Index: current_products.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Current Offerings</h1>" ?>
The "Apache Tcl Project" is currently comprised of 5 individual
projects, and is moving towards having 3, or less, in the future.
<p align="center">
<img src="future.gif" alt="">
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/end.rvt
Index: end.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The End</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>The End</h1>" ?>
<p align="center">
<img src="colli_e_campi.jpg" alt="Colli e Campi">
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/examples.rvt
Index: examples.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Example Tcl Code</title>
<link rel="stylesheet" href="style.css">
<script language="javascript" type="text/javascript">
function MouseOn(el) {
el.OldBG = el.style.getPropertyValue("background-color");
el.OldColor = el.style.getPropertyValue("color");
el.style.setProperty("background-color", '#ffffff', "");
el.style.setProperty("color", '#000000', "");
}
function MouseOff(el) {
el.style.setProperty("color", el.OldColor, "");
el.style.setProperty("background-color", el.OldBG, "");
}
</script>
</head>
<body>
<? prevnext "<h1>Example Tcl Code</h1>" ?>
<?
proc dospan {txt} {
return [format {<span onmouseover="MouseOn(this)" onmouseout="MouseOff(this)">%s</span>} $txt]
}
proc pdospan {txt} {
puts -nonewline [dospan $txt]
}
set Code {
if { [var exists customerid] } {
array set customer [get_customer_info $customerid]
puts "Welcome, Mr. $customer(Surname)"
} else {
puts "Hi, would you like to register a new account?"
}
}
puts "<hr>"
foreach el $Code {
if {[llength $el] > 1} {
set el [string map {\n <br> " " } $el]
puts [dospan "{ $el }"]
} else {
puts "[dospan $el]"
}
}
puts "<hr>"
?>
So, Dave, show us the code...
<b>
<pre>
<? pdospan {if { [var exists customerid] }} ?> {
array set customer <? pdospan {[get_customer_info $customerid]} ?>
puts "Welcome, Mr. <? pdospan {$customer(Surname)} ?>"
} else {
puts "Hi, would you like to register a new account?"
}
</pre>
</b>
Simple enough!
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/goodlanguage.rvt
Index: goodlanguage.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Good Languages...</h1>" ?>
<p>
Tcl handles complexity just fine. The standard Tcl library,
tcllib has code to let you create and manage, easily, a variety
of data structures. Tcl is so flexible, that object orientation
comes from a loadable package!
</p>
<p>
There are Tcl extensions to do the things that you need to do to
get your job done.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/index.rvt
Index: index.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body class="splash">
<? prevnext {<h1 align="center" class="splash">Apache Tcl</h1>} ?>
<h2 align="center" class="splash">David N. Welton</h2>
<p align="center">
<a href="mailto:davidw@apache.org">davidw@apache.org</a>
</p>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/initialization.rvt
Index: initialization.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Initialization</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Initialization</h1>" ?>
<ul>
<li>Apache configuration directives.<br>
Rivet provides a variety of Apache configuration directives to
enable the user to run code at a variety of points in Apache's
life cycle.
<ul>
<li>Global Init and Exit</li>
<li>Child Init and Exit</li>
<li>"Before" and "After" scripts to run before and after
pages</li>
</ul>
</li>
<li>Multiple interpreters for different virtual hosts.</li>
<li>File upload control</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/integration.rvt
Index: integration.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Integrating Apache and Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Integrating Apache and Tcl</h1>" ?>
<p>
Both Apache and Tcl have C API's that provide the programmer
with low-level access to a large amount of the two systems'
functionality. They are both a pleasure to work with, and
linking them up has been a lot of fun! Specific examples from
Rivet follow.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/integration2.rvt
Index: integration2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Integration Information</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Integration Information</h1>" ?>
<p>
With all of these API's to work with, uniting them has been both
very pleasant, and not all that difficult. In all the Rivet .c
and .h files, there are around 5500 lines, total. Not bad,
considering Tcl is 150K lines, and Apache 1.3 is around 120K!
</p>
<p>
The ability to leverage so much power - linking together two
different, flexible, multipurpose systems - is a testament to
the strength and adaptability of both Tcl and Apache.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/intro.rvt
Index: intro.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Introduction</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache Tcl Introduction</h1>" ?>
Apache Tcl is, of course, the name for the projects which have the
Apache web server and Tcl language in common, but more than that, we
have all arrived at this junction between Apache and Tcl because we
have found it to be the optimal solution.
<p align="center"><img src="prato.jpg" alt="Prato della Valle"></p>
<? footer ?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/list.rvt
Index: list.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body class="splash">
<? prevnext {<h1 align="center" class="splash">Apache Tcl</h1>} ?>
<? makeindex ?>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/mod_dtcl.rvt
Index: mod_dtcl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mod_dtcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>mod_dtcl</h1>" ?>
<ul>
<li>Created in 1998 - one of the first open source Tcl/Web
products.</li>
<li>Apache Tcl created in late 2000.</li>
<li>To be replaced by Rivet</li>
<li>
Design goals:
<ul>
<li>Fast</li>
<li>Light</li>
<li>Simple</li>
<li>Incorporate the good ideas of PHP</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/mod_tcl.rvt
Index: mod_tcl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mod_tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>mod_tcl</h1>" ?>
mod_tcl was created by Michael Link, for Apache 2.0, with the goal
of exposing the Apache API in Tcl, in order to make it possible to
write Apache modules in Tcl.
<ul>
<li>
Design goals:
<ul>
<li>Complete Tcl and Apache integration</li>
<li>Apache 2.0</li>
</ul>
</li>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/moreexamples.rvt
Index: moreexamples.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Another Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Another Example</h1>" ?>
<PRE>
<B><FONT COLOR="#A020F0">proc</FONT></B> <B><FONT COLOR="#0000FF">greeting</FONT></B> {<FONT COLOR="#B8860B"></FONT>} {
<B><FONT COLOR="#A020F0">switch</FONT></B> $<FONT COLOR="#B8860B">HTTP_ACCEPT_LANGUAGE</FONT> {
en {
<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#BC8F8F">"Hello, how is it going?"</FONT></B>
}
it {
<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#BC8F8F">"Buon giorno, come va?"</FONT></B>
}
fr {
<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#BC8F8F">"Bonjour, comment ça va?"</FONT></B>
}
de {
<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#BC8F8F">"Guten Tag, wie geht's?"</FONT></B>
}
zt {
<B><FONT COLOR="#A020F0">return</FONT></B> <B><FONT COLOR="#BC8F8F">"Grüezi, wi gaat's?"</FONT></B>
}
}
}
<B><FONT COLOR="#A020F0">puts</FONT></B> [greeting]</PRE>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/neowebscript.rvt
Index: neowebscript.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>NeoWebScript</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>NeoWebScript</h1>" ?>
NeoWebScript was created by Karl Lehenbauer. NeoWebScript is
maintained by Damon Courtney. NWS, as it's known, became part of
the Apache Tcl project in early 2001, after having been released
as Free Software.
<ul>
<li>
Design goals:
<ul>
<li>Sandbox environment - good for multi-user
environments</li>
<li>Simple</li>
<li>Extensions built in</li>
</ul>
</li>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/otherproducts.rvt
Index: otherproducts.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Other Tcl/Web Products</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Other Tcl/Web Products</h1>" ?>
<ul>
<li>Vignette Storyserver - created by CNET, drives a lot of
high-profile sites. Non-Free.</li>
<li>tclhttpd - small, light server written completely in Tcl.
Extensible, portable, very flexible.</li>
<li>AOLserver - Complete, integrated, system. Now Free
Software!
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/ousterhout.rvt
Index: ousterhout.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The Reasoning Behind Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>The Reasoning Behind Tcl</h1>" ?>
<p>
The original idea behind Tcl is still very valid today: powerful
applications can be made much more so by letting the user access
parts of them programmatically. One-off languages are best
replaced by a more general solution. The answer: a reusable
library that provides a scripting language.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/outputproc.rvt
Index: outputproc.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Channel output proc</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Channel output proc</h1>" ?>
<p>A small example of the junction where Tcl and Apache meet.</p>
<pre>
static int
outputproc(ClientData instancedata, char *buf,
int toWrite, int *errorCodePtr)
{
rivet_server_conf *rsc = (rivet_server_conf *)instancedata;
rivet_interp_globals *globals =
Tcl_GetAssocData(rsc->server_interp, "rivet", NULL);
TclWeb_PrintHeaders(globals->req);
if (globals->req->content_sent == 0)
{
ap_rwrite(buf, toWrite, globals->r);
ap_rflush(globals->r);
}
return toWrite;
}
</pre>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/rivet.rvt
Index: rivet.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Rivet</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache Rivet</h1>" ?>
The most recent of the Apache Tcl projects, Rivet is the evolution
of mod_dtcl and NeoWebScript, together, being worked on by David
Welton and Damon Courtney.
<ul>
<li>
Design goals:
<ul>
<li>Fast</li>
<li>Light</li>
<li>Simple</li>
<li>Powerful</li>
<li>Extensions available</li>
<li>Take advantage of Tcl and Apache features</li>
</ul>
</li>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/rivetexample2.rvt
Index: rivetexample2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Rivet Example 2</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Rivet Example 2</h1>" ?>
<p>
An example where the HTML serves to define the look and feel of
the page, and the content is controlled via Tcl tags.
</p>
<table style="width:100%" frame="box" rules="all" align="left">
<tbody>
<tr>
<td align="left">
<pre>
<table style="font-size:30%">
<tbody>
<tr>
<? top "Header" ?>
</tr>
<tr>
<td style="width:30%">
<? navbar ?>
</td>
<td>
<? login ?>
</td>
</tr>
</tbody>
</table>
</pre>
</td>
<td align="center">
<table style="font-size:30%">
<tbody>
<tr>
<td style="background-color:#ffaaaa" colspan="2" align="center">Header</td>
</tr>
<tr>
<td style="width:30% ; background-color:#aaaaff">
<p>nav1</p>
<p>nav2</p>
<p>nav3</p>
<p>nav4</p>
</td>
<td style="background-color:#aaaaaa">
<form action="">
Login: <input size="10"><br>
Password: <input size="7">
</form>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/servingpages.rvt
Index: servingpages.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>How Rivet Serves Pages</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>How Rivet Serves Pages</h1>" ?>
<ul>
<li>Reentrant parser
<ul>
<li>Transforms HTML chunks into <b><tt>puts</tt></b>
statements, and leaves Tcl code alone.</li>
<li>Can be called from scripts to load other pages.</li>
</ul>
</li>
<li>Cacheing system
<ul>
<li>Configurable</li>
<li>Stores byte-compiled pages</li>
</ul>
</li>
</ul>
<p align="center">
<img src="requestflow.gif" alt="">
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/strategies.rvt
Index: strategies.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Strategies</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Strategies</h1>" ?>
<ul>
<li>Quick and Dirty<br>
Not good, but sometimes you just need to get it done.
</li>
<li>Seperate content from presentation <br> Make simple
procedures to include in HTML, and keep complex logic
elsewhere. Make 'dispatch' pages that call other pages.
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/survey.rvt
Index: survey.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Do you use Tcl?</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Do you use Tcl?</h1>" ?>
<form action="survey2.rvt">
<input type="hidden" name="index" value=<? puts $::index ?>>
<table>
<tbody>
<tr>
<td>How many people use Tcl?</td>
<td><input type="text" name="TclUsers"></td>
</tr>
<tr>
<td>How many people are there?</td>
<td><input type="text" name="Total"></td>
</tr>
</tbody>
</table>
<p align="center">
<input type="submit" name="Submit">
</p>
</form>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/survey2.rvt
Index: survey2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Users</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<?
prevnext "<h1>Tcl Users</h1>"
if { [var exists TclUsers] } {
set TclUsers [var get TclUsers]
} else {
set TclUsers 1
}
if { [var exists Total] } {
set Total [var get Total]
} else {
set Total 1
}
if { $TclUsers > $Total } {
set Total $TclUsers
}
puts "There are $TclUsers Tcl users and $Total
people in attendance, give or take a few."
?>
<p></p>
<table width="%100" border="0" cellspacing="0">
<tbody>
<tr>
<?
set i 0
while { $i < $TclUsers } {
puts {<td bgcolor="red"> </td>}
incr i
}
while {$i < $Total } {
puts {<td bgcolor="blue"> </td>}
incr i
}
?>
</tr>
</tbody>
</table>
<table width="%100">
<tbody>
<tr>
<td align="left">%0</td>
<td align="right">%100</td>
</tr>
</tbody>
</table>
<!-- <img src="graph.tcl?TclUsers=<? puts -nonewline $TclUsers ?>&Total=<? puts -nonewline $Total ?>" alt="Pie Chart"> -->
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/systems.rvt
Index: systems.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache Tcl Products</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache Tcl Products</h1>" ?>
<ul>
<li>mod_dtcl</li>
<li>mod_tcl</li>
<li>NeoWebScript</li>
<li>WebSH</li>
<li>Apache Rivet</li>
</ul>
All free software covered by the Apache Software Foundation license.
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tcl1.rvt
Index: tcl1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl</h1>" ?>
<p>
Tcl stands for "Tool Command Language". It was created in the
late 80'ies, by John Ousterhout, then a professor at the
University of California at Berkeley, as a replacement for the
many small extension languages he was writing for his
applications. From the very beginning, Tcl was engineered to be
combined with other systems.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclchannels.rvt
Index: tclchannels.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Channels</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Channels</h1>" ?>
<p>
This feature is especially interesting. Tcl channels let us use
regular Tcl 'stdout' channel from scripts, instead of using a
special command! Channels support Close, Input, Output, Seek,
Set and Get Option, GetHandle, Block, Flush, and EventHandler
functions.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclcoverview.rvt
Index: tclcoverview.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Overview of Tcl C Features</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Overview of Tcl C Features</h1>" ?>
<table style="font-size: 40%;">
<tbody>
<tr valign="top">
<td>
<ul>
<li>Variables
<ul>
<li>From C</li>
<li>To C</li>
<li>Tie Tcl variable to C variable</li>
<li>Trace variables</li>
</ul>
</li>
</ul>
<ul><li>Interpreters
<ul>
<li>Seperate interpreters</li>
<li>Slave interpreters/shared resources</li></ul>
</li></ul>
<ul><li>Threads
<ul>
<li>Create/Destroy</li>
<li>Associate data</li></ul>
</li></ul>
</td>
<td>
<ul><li>IO/Channels
<ul>
<li>Create new channel types</li>
<li>Stacked channels</li>
<li>Buffering</li>
<li>Asyncronous</li></ul>
</li>
</ul>
<ul><li>Event Loop
<ul>
<li>Associate events with actions</li>
<li>Idle events</li></ul>
</li></ul>
<ul><li>Operating System Interaction
<ul>
<li>Filesystem</li>
<li>Processes</li></ul>
</li></ul>
</td>
<td>
<ul><li>Timers
<ul>
<li>Schedule events</li></ul>
</li></ul>
<ul><li>Commands
<ul>
<li>Create commands</li></ul>
</li></ul>
<ul><li>Hash Tables
<ul>
<li>Create and use hash tables at the C level</li></ul>
</li></ul>
<ul>
<li>Internationalization
<ul>
<li>Translate to/from different character sets</li>
</ul>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclexample1.rvt
Index: tclexample1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Examples</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Examples</h1>" ?>
<pre>
set seconds [clock seconds]
puts "The time is [clock format $seconds]"
proc greeting {lang} {
switch $lang {
en {
return "Hello, how is it going?"
}
it {
return "Buon giorno, come va?"
}
fr {
return "Bonjour, .......?"
}
de {
return "Guten Tag, wie gehts?"
}
zt {
return "Grüezi, wi gaat's?"
}
}
}
</pre>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclfeatures.rvt
Index: tclfeatures.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Overview</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Overview</h1>" ?>
<ul>
<li>Easy, Flexible
<ul>
<li>Tcl is easy to learn, it has a very simple syntax. It's
also very flexible, allowing you to mold it to your needs.
</li>
</ul>
</li>
<li>Extensible, Embeddable
<ul>
<li>
You can extend Tcl in many ways, both in Tcl and in C, or
embed it directly in your applications.
</li>
</ul>
</li>
<li>Powerful, Lightweight
<ul>
<li>Tcl does many things, easily, and has a small core.</li>
</ul>
</li>
<li>Multiplatform, Free
<ul>
<li>Tcl runs on UNIX, Windows and Mac OS. Tcl is distributed under a BSD license.</li>
</ul>
</li>
<li>Tk toolkit
<ul>
<li>Seperate from Tcl, althought it was also developed by
Ousterhout, and very well integrated with Tcl.</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tcloverview.rvt
Index: tcloverview.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Overview</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Overview</h1>" ?>
<ul>
<li>Easy, Flexible
<ul>
<li>Tcl is easy to learn, it has a very simple syntax. It's
also very flexible, allowing you to mold it to your needs.
</li>
</ul>
</li>
<li>Extensible, Embeddable
<ul>
<li>
You can extend Tcl in many ways, both in Tcl and in C, or
embed it directly in your applications.
</li>
</ul>
</li>
<li>Powerful, Lightweight
<ul>
<li>Tcl does many things, easily, and has a small core.</li>
</ul>
</li>
<li>Multiplatform, Free
<ul>
<li>Tcl runs on UNIX, Windows and Mac OS. Tcl is distributed under a BSD license.</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclweb.rvt
Index: tclweb.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl and the Web</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl and the Web</h1>" ?>
<p>
The web (and XML, for that matter) is primarily text oriented,
so a language that's good at dealing with text is well suited to
the web, and much, much faster to develop with than a low-level
language like C.
</p>
<p>
There are a lot of people out there who just want to create
simple dynamic web pages. A good language should accomodate
them, as well as more experienced programmers.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclweb1.rvt
Index: tclweb1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl and the Web</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl and the Web</h1>" ?>
<p align="center">
Question: why should I use Tcl on the web?
</p>
<p align="center">
Answer #1: the web is text.
</p>
<ul>
<li>Everything that goes into a web page is text.</li>
<li>Almost everything that comes out is text.</li>
<li>So it would make sense to use a language that's good with
text.</li>
<li>Scripting languages are good at text processing.</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclweb2.rvt
Index: tclweb2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl and the Web</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl and the Web</h1>" ?>
<p>
I don't just want to do simple things! Don't I need a "real"
language?
</p>
<p>
No - Tcl handles complexity well.
</p>
<ul>
<li>Data structures - graphs, trees, queues, stacks...</li>
<li>Object oriented programming. The most common OO system is
[incr Tcl]</li>
<li>Support for different programming styles, and
abstraction.</li>
<li>Easy to combine with C.</li>
</ul>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclweb3.rvt
Index: tclweb3.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl and the Web</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl and the Web</h1>" ?>
<p>
Tcl is easy to learn, yet quite powerful.
</p>
<p>
If you just want to make a simple site, or if you have
inexperienced programmers working, ease of use is a very
positive aspect of Tcl. New users can get up to speed quickly,
and be doing useful work in no time.
</p>
<p>
If you have a very complex, database driven site, Tcl is able to
handle it with no problems. Remember - it's not just a language
for web sites, so it's generic and modular enough to work for
large, complex programs.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclweb4.rvt
Index: tclweb4.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Libraries and Extensions</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Libraries and Extensions</h1>" ?>
<p>A good language is important, but if you are trying to do
something in a hurry, you need good libraries (any Scheme fans
here?).</p>
<p>
Tcl has a lot of code available! And what's more, you can use
it with your web-based programs (XML, database access, image
libraries), but you can then take the same code, and use it
elsewhere.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/tclwebhistory.rvt
Index: tclwebhistory.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Since the Beginning</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Since the Beginning</h1>" ?>
<p>
Tcl has been used for advanced web content systems since 1995!
AOLserver (now Free Software) and Vignette's Storyserver were
created "back in the day". Both were (and are) a mixture of C
and Tcl code, as opposed to the simple CGI systems that were
common at the time.
</p>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/template.rvt
Index: template.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1></h1>" ?>
<?footer?>
</body>
</html>
1.1 tcl-site/presentations/apache-tcl/websh.rvt
Index: websh.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>WebSH</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>WebSH</h1>" ?>
WebSH was born in 1995 as a C++ library incorporating a Tcl
interpreter, and gradually migrated to being a Tcl extension. It
became Free Software in 2000, and was contributed to the ASF in
2001. Andrej Vckovski was the original author, with major work
done by Ronnie Brunner (WebSH 2) and Simon Hefti (WebSH 3).
<ul>
<li>Design Goals:
<ul>
<li>Rapid Application Development using Tcl</li>
<li>Provide complete Web Application Environment</li>
<li>Independant of Apache (it also works as a CGI)</li>
</ul>
</li>
</ul>
<?footer?>
</body>
</html>
1.2 +1 -1 tcl-site/presentations/dtcl/.htaccess
Index: .htaccess
===================================================================
RCS file: /home/cvs/tcl-site/presentations/dtcl/.htaccess,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .htaccess 9 Dec 2001 16:02:34 -0000 1.1
+++ .htaccess 28 May 2003 09:17:24 -0000 1.2
@@ -1,3 +1,3 @@
-Dtcl_Script BeforeScript "source [file join [pwd] common.tcl]"
+RivetUserConf BeforeScript "source [file join [pwd] common.tcl]"
1.3 +4 -5 tcl-site/presentations/dtcl/common.tcl
Index: common.tcl
===================================================================
RCS file: /home/cvs/tcl-site/presentations/dtcl/common.tcl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- common.tcl 9 Dec 2001 16:13:53 -0000 1.2
+++ common.tcl 28 May 2003 09:17:24 -0000 1.3
@@ -8,27 +8,26 @@
foreach ln $data {
lappend ret [string trim $ln]
}
-
+
return $ret
}
proc ::nexturl { } {
- return "[lindex $::urls $::next].ttml?index=$::next"
+ return "[lindex $::urls $::next].rvt?index=$::next"
}
proc ::prevurl { } {
- return "[lindex $::urls $::prev].ttml?index=$::prev"
+ return "[lindex $::urls $::prev].rvt?index=$::prev"
}
proc ::prevnext { title } {
- hgetvars
set ::urls [getorder]
if { [var exists index] } {
set ::index [var get index]
} else {
set ::index 0
}
-
+
set ::next [expr $::index + 1]
set ::prev [expr $::index - 1]
if { $::next >= [llength $::urls] } {
1.1 tcl-site/presentations/dtcl/advantages.rvt
Index: advantages.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Advantages</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Advantages</h1>" ?>
<ul>
<li>Avoid reinventing the wheel!</li>
<li>Lots of existing Tcl code.</li>
<li>Use code both for web projects, and elsewhere.</li>
<li>Lightweight.</li>
<li>Easy to use.</li>
<li>Fast!</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/dtcl/cacheing.rvt
Index: cacheing.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Cacheing</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Cacheing</h1>" ?>
When a .ttml page is first loaded, the byte-compiled Tcl code is
inserted into a cache, so that the next time the page is hit, it
is not necessary to recompile the code, or even open the file
again.
</body>
</html>
1.1 tcl-site/presentations/dtcl/cgi.rvt
Index: cgi.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>CGI</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>CGI</h1>" ?>
CGI is a bit dated, and is inefficient, unless the process being
run is so heavy as to make the overhead of running it seem
insignificant. Should it be your only option, it should be noted
that Don Libes' <code>cgi.tcl</code> is a great CGI package for
Tcl.
</body>
</html>
1.1 tcl-site/presentations/dtcl/channel.rvt
Index: channel.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Apache IO Channel</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Apache IO Channel</h1>" ?>
When creating mod_dtcl, it was considered desirable to be able to
run normal Tcl scripts with as little modifications as possible.
In order to deal with standard output, mod_dtcl uses an in-memory
file channel that then uses Apache's output functions. 'puts
"foobar"' works in mod_dtcl.
</body>
</html>
1.1 tcl-site/presentations/dtcl/comparisons.rvt
Index: comparisons.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Comparisons with other systems</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Comparisons with other systems</h1>" ?>
Flame war!
<ul>
<LI>CGI</LI>
<LI>PHP</LI>
<li>mod_perl</li>
<Li>Zope</Li>
<Li>Java</Li>
<li>Other Tcl solutions</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/dtcl/conclusion.rvt
Index: conclusion.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Conclusion</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Conclusion</h1>" ?>
Tcl is an excellent language for the web. As a generalized,
embeddable "command language", it is a natural for the web, giving
the user a powerful language with years of history and many
capabilities, in an environment tuned for use with the web.
<h2 align="center">Links</h2>
<table align="center" width="80%">
<tbody>
<tr>
<th align="left">mod_dtcl:</th>
<td align="right"><a href="http://tcl.apache.org/mod_dtcl/">http://tcl.apache.org/mod_dtcl/</a></td>
</tr>
<tr>
<th align="left">Apache Tcl:</th>
<td align="right"><a href="http://tcl.apache.org/">http://tcl.apache.org/</a></td>
</tr>
<tr>
<th align="left">Tcl Web Site:</th>
<td align="right"><a href="http://www.tcl.tk/">http://www.tcl.tk/</a></td>
</tr>
<tr>
<th align="left">Presentation:</th>
<td align="right"><a href="http://tcl.apache.org/presentations/tcl/">http://tcl.apache.org/presentations/dtcl/</a></td>
</tr>
<tr>
<th align="left">David N. Welton:</th>
<td align="right"><a href="mailto:davidw@dedasys.com">davidw@dedasys.com</a></td>
</tr>
</tbody>
</table>
</body>
</html>
1.1 tcl-site/presentations/dtcl/example1.rvt
Index: example1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Example</h1>" ?>
<PRE>
<B><FONT COLOR="#A020F0"><h1></FONT></B>Some HTML<B><FONT COLOR="#A020F0"></h1></FONT></B>
<B><FONT COLOR="#A020F0"><?
hputs </FONT></B><B><FONT COLOR="#BC8F8F">"hello world"</FONT></B><B><FONT COLOR="#A020F0">
?></FONT></B>
<B><FONT COLOR="#A020F0"><? if { $foo == 1 } { ?></FONT></B>
More Html
...
<B><FONT COLOR="#A020F0"><? } ?></FONT></B>
...
</PRE>
</body>
</html>
1.1 tcl-site/presentations/dtcl/example2.rvt
Index: example2.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Another Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Another Example</h1>" ?>
<PRE>
<?
<B><FONT COLOR="#A020F0">set</FONT></B> i 1
puts <B><FONT COLOR="#BC8F8F">"<table>"</FONT></B>
<B><FONT COLOR="#A020F0">while</FONT></B> { $<FONT COLOR="#B8860B">i</FONT> <= 8 } {
puts <B><FONT COLOR="#BC8F8F">"<tr>"</FONT></B>
<B><FONT COLOR="#A020F0">for</FONT></B> {<B><FONT COLOR="#A020F0">set</FONT></B> j 1} {$<FONT COLOR="#B8860B">j</FONT> <= 8} {<B><FONT COLOR="#A020F0">incr</FONT></B> j} {
<B><FONT COLOR="#A020F0">set</FONT></B> num [ <B><FONT COLOR="#A020F0">expr</FONT></B> {$<FONT COLOR="#B8860B">i</FONT> * $<FONT COLOR="#B8860B">j</FONT> * 4 - 1} ]
puts [ <B><FONT COLOR="#A020F0">format</FONT></B> <B><FONT COLOR="#BC8F8F">"<td bgcolor=%2x%2x%2x > $num $num $num </td>"</FONT></B> \
$<FONT COLOR="#B8860B">num</FONT> $<FONT COLOR="#B8860B">num</FONT> $<FONT COLOR="#B8860B">num</FONT> ]
}
<B><FONT COLOR="#A020F0">incr</FONT></B> i
puts <B><FONT COLOR="#BC8F8F">"</tr>"</FONT></B>
}
puts <B><FONT COLOR="#BC8F8F">"</table>"</FONT></B>
?>
</PRE>
</body>
</html>
1.1 tcl-site/presentations/dtcl/future.rvt
Index: future.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>The Future</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>The Future</h1>" ?>
<ul>
<li>mod_tcl
<ul>
<li>
mod_tcl is the Tcl equivalent of mod_perl - it gives us
access to the Apache API through Tcl. It is currently
available for Apache 2.0.
</li>
</ul>
</li>
<li>Apache Rivet
<ul>
<li>Apache Rivet is a descendant of mod_dtcl and
NeoWebscript, and an attempt to combine the best of both,
and leave behind some extra baggage.</li>
</ul>
</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/dtcl/how.rvt
Index: how.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>How does it work?</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>How does it work?</h1>" ?>
<ul>
<li>Embedded Tcl interpreter.</li>
<li>Pages run in separate namespaces.</li>
<li>Cached byte-compiled scripts.</li>
<li>Memory IO channel / cached output.</li>
<li>HTML/Tcl integration.</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/dtcl/htmltcl.rvt
Index: htmltcl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Mixing HTML and Tcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>HTML and Tcl</h1>" ?>
Tcl and HTML can be mixed as much as is necessary. The mod_dtcl
parser replaces sections of HTML as "hputs" statements. This lets
you put bits of HTML in the middle of loops, in conditional
statements, and so on.
</body>
</html>
1.1 tcl-site/presentations/dtcl/index.rvt
Index: index.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mod_dtcl</title>
<link rel="stylesheet" href="style.css">
</head>
<body class="splash">
<? prevnext {<h1 align="center" class="splash">Programming for the Web with Tcl</h1>} ?>
<h2 align="center" class="splash">David N. Welton</h2>
<p align="center">
<a href="mailto:davidw@dedasys.com">davidw@dedasys.com</a>
</p>
<a></a>
</body>
</html>
1.1 tcl-site/presentations/dtcl/interpreter.rvt
Index: interpreter.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Interpreter</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Interpreter</h1>" ?>
One Tcl interpreter runs in each Apache process, and each .ttml
file is run within a separate Tcl namespace. This lets .ttml
files share variables, if necessary, but makes it difficult for
pages to interfere with one another.
</body>
</html>
1.1 tcl-site/presentations/dtcl/java.rvt
Index: java.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Java</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Java</h1>" ?>
Buzzwords galore!
Java isn't a higher level language. Strings are what "goes into"
and "comes out of" web pages, so why not use a language adept at
dealing with them? Java is harder to use, set up, and you may
have licensing issues.
</body>
</html>
1.1 tcl-site/presentations/dtcl/mod_perl.rvt
Index: mod_perl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mod_perl</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>mod_perl</h1>" ?>
mod_perl takes a different approach - it lets you access all the
functionality of Apache with Perl. This makes it rather large,
and at times difficult to install and use for simple things, like
templates. It is very powerful, but with this power comes a lot
of complexity, and responsibility...
</body>
</html>
1.1 tcl-site/presentations/dtcl/mod_tcl.rvt
Index: mod_tcl.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1></h1>" ?>
</body>
</html>
1.1 tcl-site/presentations/dtcl/other.rvt
Index: other.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Other</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Other Tcl Web Platforms</h1>" ?>
AOLserver is a very nice package which demonstrates the power of
Tcl. It is impressive to think that it (along with the
proprietary StoryServer) were created in 1995, when most people
were using Perl CGI's. It is a complete server from the ground
up, and so doesn't ride on Apache. NeoWebScript, by Karl
Lehenbauer, is similar to mod_dtcl, but does a few things
differently, and in the future will be merged with mod_dtcl as
'Apache Rivet'. WebSH is another web Tcl platform that deserves
mention, as it has been used in commercial environments for some
time.
</body>
</html>
1.1 tcl-site/presentations/dtcl/php.rvt
Index: php.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>PHP</h1>" ?>
PHP is the example that mod_dtcl follows, but has a big
limitation: it only runs on the web! It has a number of good
features - it is small, light, reasonably fast, and is easy for
non programmers to use. However, it has the disadvantage of being
originally created for one and only one use, making it difficult
to use elsewhere.
</body>
</html>
1.1 tcl-site/presentations/dtcl/results.rvt
Index: results.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Produces</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Produces...</h1>" ?>
<?
set i 1
puts "<table>"
while { $i <= 8 } {
puts "<tr>"
for {set j 1} {$j <= 8} {incr j} {
set num [ expr {$i * $j * 4 - 1} ]
puts [ format "<td bgcolor=%2x%2x%2x > $num $num $num </td>" \
$num $num $num ]
}
incr i
puts "</tr>"
}
puts "</table>"
?>
</body>
</html>
1.1 tcl-site/presentations/dtcl/rivet.rvt
Index: rivet.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1></h1>" ?>
</body>
</html>
1.1 tcl-site/presentations/dtcl/smalllight.rvt
Index: smalllight.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Small and light</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Small and light</h1>" ?>
<ul>
<li><code>ls -l mod_dtcl.so</code> is about 45K on a Linux PPC system.</li>
<li><code>wc -l *.[ch]</code> is 3010 lines.</li>
<li>Runtime Apache processes grow by about a meg with mod_dtcl, on a PPC Linux system.</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/dtcl/template.rvt
Index: template.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1></h1>" ?>
</body>
</html>
1.1 tcl-site/presentations/dtcl/what.rvt
Index: what.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>What is it?</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>What is it?</h1>" ?>
mod_dtcl integrates the Tcl scripting language with the Apache web
server, so that it is possible to use Tcl for server-side web
scripting. It is similar to PHP, in functionality.
</body>
</html>
1.1 tcl-site/presentations/dtcl/zope.rvt
Index: zope.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Zope</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Zope</h1>" ?>
Zope is another large, and somewhat complex system. It may work
well for larger sites that need some of the order and structure it
imposes, but it is difficult to compare to mod_dtcl, which is
aimed at a different target. It must be said, though, that Python
is a nice language.
</body>
</html>
1.2 +1 -1 tcl-site/presentations/tcl/.htaccess
Index: .htaccess
===================================================================
RCS file: /home/cvs/tcl-site/presentations/tcl/.htaccess,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .htaccess 6 Dec 2001 11:30:50 -0000 1.1
+++ .htaccess 28 May 2003 09:17:26 -0000 1.2
@@ -1,3 +1,3 @@
-Dtcl_Script BeforeScript "source [file join [pwd] common.tcl]"
+RivetUserConf BeforeScript "source [file join [pwd] common.tcl]"
1.3 +2 -3 tcl-site/presentations/tcl/common.tcl
Index: common.tcl
===================================================================
RCS file: /home/cvs/tcl-site/presentations/tcl/common.tcl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- common.tcl 9 Dec 2001 16:13:53 -0000 1.2
+++ common.tcl 28 May 2003 09:17:26 -0000 1.3
@@ -13,15 +13,14 @@
}
proc ::nexturl { } {
- return "[lindex $::urls $::next].ttml?index=$::next"
+ return "[lindex $::urls $::next].rvt?index=$::next"
}
proc ::prevurl { } {
- return "[lindex $::urls $::prev].ttml?index=$::prev"
+ return "[lindex $::urls $::prev].rvt?index=$::prev"
}
proc ::prevnext { title } {
- hgetvars
set ::urls [getorder]
if { [var exists index] } {
set ::index [var get index]
1.1 tcl-site/presentations/tcl/ccommand.rvt
Index: ccommand.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>C Tcl Command</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl Command in C</h1>" ?>
<pre>
<B><FONT COLOR="#228B22">int</FONT></B>
<B><FONT COLOR="#0000FF">GetPW</FONT></B>(ClientData clientData, Tcl_Interp *interp,
<B><FONT COLOR="#228B22">int</FONT></B> objc, Tcl_Obj *CONST objv[])
{
<B><FONT COLOR="#228B22">struct</FONT></B> passwd *passwd;
passwd = getpwuid(getuid());
Tcl_SetVar2(interp, passwd->pw_name, <B><FONT COLOR="#BC8F8F">"passwd"</FONT></B>, passwd->pw_passwd, 0);
Tcl_SetVar2(interp, passwd->pw_name, <B><FONT COLOR="#BC8F8F">"name"</FONT></B>, passwd->pw_gecos, 0);
Tcl_SetVar2(interp, passwd->pw_name, <B><FONT COLOR="#BC8F8F">"home"</FONT></B>, passwd->pw_dir, 0);
Tcl_SetVar2(interp, passwd->pw_name, <B><FONT COLOR="#BC8F8F">"shell"</FONT></B>, passwd->pw_shell, 0);
Tcl_SetResult(interp, passwd->pw_name, NULL);
<B><FONT COLOR="#A020F0">return</FONT></B> TCL_OK;
}
</pre>
</body>
</html>
1.1 tcl-site/presentations/tcl/comanche.rvt
Index: comanche.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Comanche</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Comanche</h1>" ?>
<p>
<img src="console-apache.png" alt="Comanche configurator">
</p>
</body>
</html>
1.1 tcl-site/presentations/tcl/commercial.rvt
Index: commercial.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Free, Commercial</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Free and Commercial</h1>" ?>
Tcl is distributed under a BSD-style license, meaning you are
truly free to do pretty much anything you want with it, as long as
you give credit.
Because of this, and it's high quality, Tcl is used by a variety
of corporations and organizations, including Oracle, Sybase,
Cisco, AOL, NASA, CNET, Cygnus (Redhat) and many more...
</body>
</html>
1.1 tcl-site/presentations/tcl/contact.rvt
Index: contact.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>References</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>References</h1>" ?>
<table align="center" width="75%">
<tbody>
<tr>
<th>Web Site:</th>
<td><a href="http://www.tcl.tk/">http://www.tcl.tk/</a></td>
</tr>
<tr>
<th>Presentation:</th>
<td><a href="http://tcl.apache.org/presentations/tcl/">http://tcl.apache.org/presentations/tcl/</a></td>
</tr>
<tr>
<th>David N. Welton:</th>
<td><a href="mailto:davidw@dedasys.com">davidw@dedasys.com</a></td>
</tr>
</tbody>
</table>
</body>
</html>
1.1 tcl-site/presentations/tcl/easy.rvt
Index: easy.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Easy!</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl is Easy</h1>" ?>
Tcl is easy to learn. It has a very simple, yet powerful syntax:
<ul>
<li><code>cmd arg arg arg </code></li>
<li><code>$foo</code></li>
<li><code>[clock seconds]</code></li>
<li><code>"some stuff as a string"</code></li>
<li><code>{group of things}</code></li>
<li><code>\</code></li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/tcl/embeddable.rvt
Index: embeddable.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Embeddable</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Embeddable</h1>" ?>
This is a bit more complicated, and requires some knowledge of C,
but it's very powerful - trust me!
<p>
Let's create a Tcl command:
<pre>
<B><FONT COLOR="#228B22">int</FONT></B> <B><FONT COLOR="#0000FF">Getpw_Init</FONT></B>(Tcl_Interp *interp)
{
Tcl_CreateObjCommand(interp,
<B><FONT COLOR="#BC8F8F">"getpw"</FONT></B>,
GetPW,
NULL,
(Tcl_CmdDeleteProc *)NULL);
<B><FONT COLOR="#A020F0">return</FONT></B> TCL_OK;
}
</PRE>
</pre>
</body>
</html>
1.1 tcl-site/presentations/tcl/example1.rvt
Index: example1.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Example 1</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Example 1</h1>" ?>
<p></p>
<table align=center>
<tbody>
<tr>
<td>
<PRE>
<B><FONT COLOR="#A020F0">proc</FONT></B> <B><FONT COLOR="#0000FF">fac</FONT></B> {<FONT COLOR="#B8860B">x</FONT>} {
<B><FONT COLOR="#A020F0">if</FONT></B> { $<FONT COLOR="#B8860B">x</FONT> <= 1 } { <B><FONT COLOR="#A020F0">return</FONT></B> 1 }
<B><FONT COLOR="#A020F0">expr</FONT></B> { $<FONT COLOR="#B8860B">x</FONT> * [fac [<B><FONT COLOR="#A020F0">expr</FONT></B> $<FONT COLOR="#B8860B">x</FONT> - 1]] }
}
</PRE>
</td>
</tr>
</tbody>
</table>
</body>
</html>
1.1 tcl-site/presentations/tcl/extensible.rvt
Index: extensible.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Extensible</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Extensible</h1>" ?>
Tcl is easy to extend in C, and extremely powerful - you get
access to lots of things:
<table style="font-size: 38%;">
<tbody>
<tr valign="top">
<td>
<ul>
<li>Variables
<ul>
<li>From C</li>
<li>To C</li>
<li>Tie Tcl variable to C variable</li>
<li>Trace variables</li>
</ul>
</li>
</ul>
<ul><li>Interpreters
<ul>
<li>Seperate interpreters</li>
<li>Slave interpreters/shared resources</li></ul>
</li></ul>
<ul><li>Threads
<ul>
<li>Create/Destroy</li>
<li>Associate data</li></ul>
</li></ul>
</td>
<td>
<ul><li>IO/Channels
<ul>
<li>Create new channel types</li>
<li>Stacked channels</li>
<li>Buffering</li>
<li>Asyncronous</li></ul>
</li>
</ul>
<ul><li>Event Loop
<ul>
<li>Associate events with actions</li>
<li>Idle events</li></ul>
</li></ul>
<ul><li>Operating System Interaction
<ul>
<li>Filesystem</li>
<li>Processes</li></ul>
</li></ul>
</td>
<td>
<ul><li>Timers
<ul>
<li>Schedule events</li></ul>
</li></ul>
<ul><li>Commands
<ul>
<li>Create commands</li></ul>
</li></ul>
<ul><li>Hash Tables
<ul>
<li>Create and use hash tables at the C level</li></ul>
</li></ul>
<ul>
<li>Internationalization
<ul>
<li>Translate to/from different character sets</li>
</ul>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</body>
</html>
1.1 tcl-site/presentations/tcl/flexibility.rvt
Index: flexibility.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Flexible</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Flexible</h1>" ?>
Tcl is an extremely flexible language. It has to be, to work as
an embedded language in the variety of environments in which it's
deployed.
<p></p>
<table align=center>
<tbody>
<tr>
<td>
<PRE>
<B><FONT COLOR="#A020F0">proc</FONT></B> <B><FONT COLOR="#0000FF">decr</FONT></B> {<FONT COLOR="#B8860B">varname</FONT>} {
<B><FONT COLOR="#A020F0">uplevel</FONT></B> [<B><FONT COLOR="#A020F0">list</FONT></B> <B><FONT COLOR="#A020F0">incr</FONT></B> $<FONT COLOR="#B8860B">varname</FONT> -1]
}
<B><FONT COLOR="#A020F0">set</FONT></B> a 5
decr a
<B><FONT COLOR="#A020F0">puts</FONT></B> $<FONT COLOR="#B8860B">a</FONT></PRE>
</td>
</tr>
</tbody>
</table>
</p>
</body>
</html>
1.1 tcl-site/presentations/tcl/history.rvt
Index: history.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>History</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>History</h1>" ?>
John Ousterhout, then a professor at the University of California,
Berkeley, created the Tcl programming language to embed in
applications he was writing. He realized that it made more sense to
create one good control language, and package it is a library, than to
create individual languages for each of his programs. These origins
explain a lot about Tcl, as we will see...
</body>
</html>
1.1 tcl-site/presentations/tcl/index.rvt
Index: index.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl, Un Grande Piccolo Linguaggio</title>
<link rel="stylesheet" href="style.css">
</head>
<body class="splash">
<? prevnext {<h1 align="center" class="splash">Tcl, Un Grande Piccolo Linguaggio</h1>} ?>
<h2 align="center" class="splash">David N. Welton</h2>
<p align="center">
<a href="mailto:davidw@dedasys.com">davidw@dedasys.com</a>
</p>
<a></a>
</body>
</html>
1.1 tcl-site/presentations/tcl/lightweight.rvt
Index: lightweight.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Lightweight</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Lightweight</h1>" ?>
Tcl is relatively easy on system resources:
<p>
ls:<br>
<code>
1036724 /usr/lib/libperl.so.5.6.1<br>
790044 /usr/lib/libpython2.1.so.0.0<br>
648648 /usr/lib/libtcl8.3.so.1<br>
</code>
</p>
<p>
ps:<br>
<code>
VSZ RSS<br>
3856 1860 python<br>
3476 1200 perl<br>
2916 1252 tclsh<br>
</code>
</p>
It has to be, if it's going to be embedded in your program!
</body>
</html>
1.1 tcl-site/presentations/tcl/motivation.rvt
Index: motivation.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ousterhout's Motivation</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Ousterhout's Motivation</h1>" ?>
Notes from Ousterhout.
<ul>
<li>Interactive programs need command languages:
<ul>
<li>Typically redone for each application.</li>
<li>Result: weak, quirky.</li>
<li>emacs and csh powerful, but can't reuse.</li>
</ul>
</li>
<li>Solution: reusable scripting language.
<ul>
<li>Interpreter is a C library.</li>
<li>Provides basic features: variables, procedures, etc.</li>
<li>Applications extend with additional features.</li>
</ul>
</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/tcl/multiplatform.rvt
Index: multiplatform.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Multiplatform, Multilingual</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Multiplatform, Multilingual</h1>" ?>
<table>
<tbody>
<tr>
<td>
Tcl is very adaptable - that's one of its goals - to be
able to run anywhere. Sure, we've heard that before,
somewhere, but Tcl really does:
<ul>
<li>Unix</li>
<li>Windows</li>
<li>MacOS</li>
<li>Others:
<ul>
<li>VMS</li>
<li>DOS</li>
<li>Amiga</li>
<li>QNX</li>
<li>VxWorks</li>
</ul>
</li>
</ul>
</td>
<td valign="bottom">Tcl also does very well in multilingual
environments. A great deal of effort has been put into
internationalization. Tcl uses and deals well with a
large variety of character sets, including, of course,
unicode.</td>
</tr>
</tbody>
</table>
</body>
</html>
1.1 tcl-site/presentations/tcl/powerful.rvt
Index: powerful.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Powerful</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl is Powerful</h1>" ?>
Tcl's power lies in its extensibility and flexibility.
<p>
The core language gives you a lot - and extensions give you the rest.
<p>
<ul>
<li>Object oriented programming: [incr Tcl]</li>
<li>Web: mod_dtcl, AOLServer, tclhttpd</li>
<li>Database: postgresql, oracle, mysql, etc...</li>
<li>Data structures: graphs, trees</li>
<li>Testing: tcltest</li>
<li>System Administration: expect, scotty (SNMP)</li>
<li>Unix facilities: TclX</li>
</ul>
Tcl is fast - it's byte compiled at run time, like Python. It
also has a lot of high level things that you would expect in a
scripting language - lists, hash tables, easy to use socket
commands, etc...
</body>
</html>
1.1 tcl-site/presentations/tcl/tcloverview.rvt
Index: tcloverview.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl: Tool Command Language</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tcl: Tool Command Language</h1>" ?>
<ul>
<li>Easy, Flexible
<ul>
<li>Tcl is easy to learn, it has a very simple syntax. It's
also very flexible, allowing you to mold it to your needs.
</li>
</ul>
</li>
<li>Extensible, Embeddable
<ul>
<li>
You can extend Tcl in many ways, both in Tcl and in C, or
embed it directly in your applications.
</li>
</ul>
</li>
<li>Powerful, Lightweight
<ul>
<li>Tcl does many things, easily, and has a small core.</li>
</ul>
</li>
<li>Multiplatform, Free
<ul>
<li>Tcl runs on UNIX, Windows and Mac OS. Tcl is distributed under a BSD license.</li>
</ul>
</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/tcl/template.rvt
Index: template.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1></h1>" ?>
</body>
</html>
1.1 tcl-site/presentations/tcl/timeline.rvt
Index: timeline.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Timeline</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Timeline</h1>" ?>
<ul>
<li>1988 Tcl created</li>
<li>1990
Tk toolkit usable. Ousterhout presents Tcl at the Usenix conference.</li>
<li>1994
Ousterhout heads a Tcl/Tk research team ("SunScript")
at Sun Microsystems.</li>
<li>1998 ACM Software System Award, USENIX Software Tools User Group (STUG) Award</li>
<li>1998
Scriptics Inc. formed by Ousterhout.</li>
<li>2000
Scriptics becomes Ajuba Solutions, which is sold to Interwoven.</li>
<li>2000
Tcl team heads north, to ActiveState.</li>
</ul>
</body>
</html>
1.1 tcl-site/presentations/tcl/tk.rvt
Index: tk.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tk!</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tk!</h1>" ?>
But that's only the beginning... now we look at the Tk toolkit.
<p>
Ousterhout realized that some of the same scripting concepts that
applied to Tcl applied to graphical toolkits as well - you can make
the pieces in a low level language like C, and then fit them together
with a scripting language. This makes it very quick to develop
graphical applications. And thus was born the Tk toolkit for the Tcl
scripting language...
</body>
</html>
1.1 tcl-site/presentations/tcl/tkintro.rvt
Index: tkintro.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tk Intro</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Tk Introduction</h1>" ?>
Tk was (and still is) a revolutionary concept - it allows you to
quickly and easily create graphical tools, in a semi object oriented
fashion.
<PRE>
<B><FONT COLOR="#A020F0">label</FONT></B> .result -textvariable Result -anchor e
<B><FONT COLOR="#A020F0">entry</FONT></B> .input -textvariable Input
<B><FONT COLOR="#A020F0">pack</FONT></B> .result -fill both -expand 1
<B><FONT COLOR="#A020F0">pack</FONT></B> .input -fill both -expand 1
<B><FONT COLOR="#A020F0">bind</FONT></B> .input <Return> {
<B><FONT COLOR="#A020F0">if</FONT></B> { [<B><FONT COLOR="#A020F0">catch</FONT></B> {
<B><FONT COLOR="#A020F0">set</FONT></B> Result [<B><FONT COLOR="#A020F0">expr</FONT></B> $<FONT COLOR="#B8860B">Input</FONT>]
} err] } {
<B><FONT COLOR="#A020F0">set</FONT></B> Result $<FONT COLOR="#B8860B">err</FONT>
}
}</PRE>
<p align="center">
<img src="calc.png" alt="very simple calculator">
</p>
</body>
</html>
1.1 tcl-site/presentations/tcl/tksimple.rvt
Index: tksimple.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tk is Simple</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Simple, eh?</h1>" ?>
That's the point! But there are a lot more complicated things you can
do. A good example of the power of Tcl may be found in Comanche, a
graphical user interface that makes use of [incr Tcl] and XML to
configure Apache, as well as other programs, like Samba. It runs out
of the box on both Linux and Windows!
</body>
</html>
1.1 tcl-site/presentations/tcl/webserver.rvt
Index: webserver.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Simple Web Server</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<? prevnext "<h1>Example: Mini Web Server</h1>" ?>
<PRE>
<B><FONT COLOR="#A020F0">proc</FONT></B> <B><FONT COLOR="#0000FF">Serve</FONT></B> {<FONT COLOR="#B8860B">chan addr port</FONT>} {
<B><FONT COLOR="#A020F0">fconfigure</FONT></B> $<FONT COLOR="#B8860B">chan</FONT> -translation {auto binary}
<B><FONT COLOR="#A020F0">set</FONT></B> line [<B><FONT COLOR="#A020F0">gets</FONT></B> $<FONT COLOR="#B8860B">chan</FONT>]
<B><FONT COLOR="#A020F0">if</FONT></B> { [<B><FONT COLOR="#A020F0">catch</FONT></B> { <B><FONT COLOR="#A020F0">set</FONT></B> fl [<B><FONT COLOR="#A020F0">open</FONT></B> <B><FONT COLOR="#BC8F8F">".[lindex $line 1]"</FONT></B> r] } err] } {
<B><FONT COLOR="#A020F0">puts</FONT></B> $<FONT COLOR="#B8860B">chan</FONT> <B><FONT COLOR="#BC8F8F">"HTTP/1.0 404 Not Found\r\n"</FONT></B>
} else {
<B><FONT COLOR="#A020F0">puts</FONT></B> $<FONT COLOR="#B8860B">chan</FONT> <B><FONT COLOR="#BC8F8F">"HTTP/1.0 200 OK\r
Content-Type: text/html\r\n\r\n[read $fl]"</FONT></B>
}
close $<FONT COLOR="#B8860B">chan</FONT>
}
<B><FONT COLOR="#A020F0">set</FONT></B> sk [<B><FONT COLOR="#A020F0">socket</FONT></B> -server Serve 5151]
<B><FONT COLOR="#A020F0">fconfigure</FONT></B> $<FONT COLOR="#B8860B">sk</FONT> -buffering line
<B><FONT COLOR="#A020F0">vwait</FONT></B> forever
</PRE>
</body>
</html>
1.1 tcl-site/sources/index.rvt
Index: index.rvt
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tcl Source Code</title>
<link rel="stylesheet" href="../style.css">
</head>
<body>
<? title "Tcl Source Code" ?>
<p>
This is a collection of HTMLized source code trees.
</p>
<p>
<a href="tcl/">Tcl</a>: The Tcl core itself.
</p>
<p>
<a href="tcl-moddtcl/">mod_dtcl</a>: mod_dtcl - Tcl for Apache 1.3.
</p>
<p>
<a href="tcl-modtcl/">mod_tcl</a>: mod_tcl - Tcl for Apache 2.0.
</p>
<p>
<a href="tcl-rivet/">Rivet</a>: Rivet - the next generation of
mod_dtcl + NeoWebScript.
</p>
<p>
<a href="tcl-websh/">WebSH</a>: WebSH.
</p>
<p>Return to the <a href="/">Apache Tcl site</a>.</p>
<? powered ?>
</body>
</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: site-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: site-cvs-help@tcl.apache.org