You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by da...@apache.org on 2003/06/12 15:51:35 UTC
cvs commit: tcl-rivet/doc/html commands.ru_UTF.html directives.ru_UTF.html examples.ru_UTF.html help.ru_UTF.html index.ru_UTF.html installation.ru_UTF.html internals.ru_UTF.html upgrading.ru_UTF.html help.html index.html installation.html internals.html upgrading.html
davidw 2003/06/12 06:51:35
Modified: src make.tcl TclWebapache.c
doc rivet.ru_UTF.xml rivet.xml
doc/html help.html index.html installation.html
internals.html upgrading.html
Added: doc Rivetlogo_smaller.png
doc/html commands.ru_UTF.html directives.ru_UTF.html
examples.ru_UTF.html help.ru_UTF.html
index.ru_UTF.html installation.ru_UTF.html
internals.ru_UTF.html upgrading.ru_UTF.html
Removed: doc rivet_utf_ru.xml
Log:
* src/TclWebapache.c (TclWeb_GetEnvVars): Use TCL_NAMESPACE_ONLY here
and in TclWeb_GetHeaderVars in order to set the variable in the
correct place.
* src/make.tcl: Added changes to build Russian documentation.
* doc/rivet.xml: Added link to Russian translation.
* doc/rivet.ru_UTF.xml: Added link back to English version.
Revision Changes Path
1.42 +7 -2 tcl-rivet/src/make.tcl
Index: make.tcl
===================================================================
RCS file: /home/cvs/tcl-rivet/src/make.tcl,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- make.tcl 23 May 2003 16:41:43 -0000 1.41
+++ make.tcl 12 Jun 2003 13:51:34 -0000 1.42
@@ -65,6 +65,8 @@
set XSLCHUNK [file join .. doc rivet-chunk.xsl]
set XSL [file join .. doc rivet.xsl]
set XML [file join .. doc rivet.xml]
+# Existing translations.
+set TRANSLATIONS ru_UTF
set PKGINDEX [file join .. rivet pkgIndex.tcl]
# ------------
@@ -265,8 +267,11 @@
# Create the HTML documentation from the XML document.
AddNode distdoc {
- depends $XML $XSL $HTML_DOCS
+ depends $XML $XSL
sh xsltproc --stringparam html.stylesheet rivet.css --nonet -o $HTML $XSLCHUNK $XML
+ foreach tr $TRANSLATIONS {
+ sh xsltproc --stringparam html.stylesheet rivet.css --stringparam html.ext ".${tr}.html" --nonet -o $HTML $XSLCHUNK [string map [list .xml ".${tr}.xml"] $XML]
+ }
}
# Create the distribution. This is a bit unix-specific for the
1.44 +4 -3 tcl-rivet/src/TclWebapache.c
Index: TclWebapache.c
===================================================================
RCS file: /home/cvs/tcl-rivet/src/TclWebapache.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- TclWebapache.c 30 Mar 2003 08:02:30 -0000 1.43
+++ TclWebapache.c 12 Jun 2003 13:51:34 -0000 1.44
@@ -397,7 +397,7 @@
val = TclWeb_StringToUtfToObj(env[i].val, req);
Tcl_IncrRefCount(key);
Tcl_IncrRefCount(val);
- Tcl_ObjSetVar2(req->interp, envvar, key, val, 0);
+ Tcl_ObjSetVar2(req->interp, envvar, key, val, TCL_NAMESPACE_ONLY);
Tcl_DecrRefCount(key);
Tcl_DecrRefCount(val);
}
@@ -425,7 +425,8 @@
Tcl_ObjSetVar2(req->interp, headersvar,
TclWeb_StringToUtfToObj(hdrs[i].key, req),
- TclWeb_StringToUtfToObj(hdrs[i].val, req), 0);
+ TclWeb_StringToUtfToObj(hdrs[i].val, req),
+ TCL_NAMESPACE_ONLY);
}
/* Transfer Apache internal CGI variables to TCL request namespace. */
1.2 +6 -1 tcl-rivet/doc/rivet.ru_UTF.xml
Index: rivet.ru_UTF.xml
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/rivet.ru_UTF.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- rivet.ru_UTF.xml 12 Jun 2003 10:21:19 -0000 1.1
+++ rivet.ru_UTF.xml 12 Jun 2003 13:51:34 -0000 1.2
@@ -15,6 +15,7 @@
<title>Apache Rivet</title>
<copyright>
<year>2002</year>
+ <year>2003</year>
<holder>Apache Software Foundation</holder>
</copyright>
<author>
@@ -41,11 +42,15 @@
<surname>Zuryanovich</surname>
<contrib>Russian Translation</contrib>
<affiliation>
- <address>dtz@xepb.ru</address>
+ <address><email>dtz@xepb.ru</email></address>
</affiliation>
</othercredit>
</articleinfo>
+ <para>
+ This document is also available in the following languages: <ulink
+ url="index.html">English</ulink>
+ </para>
<section>
<title>Введение в Apache Rivet</title>
1.23 +18 -7 tcl-rivet/doc/rivet.xml
Index: rivet.xml
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/rivet.xml,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- rivet.xml 22 May 2003 10:51:31 -0000 1.22
+++ rivet.xml 12 Jun 2003 13:51:34 -0000 1.23
@@ -38,6 +38,11 @@
</author>
</articleinfo>
+ <para>
+ This document is also available in the following languages: <ulink
+ url="index.ru_UTF.html">Russian</ulink>
+ </para>
+
<section>
<title>Introduction to Apache Rivet</title>
<para>
@@ -94,13 +99,19 @@
<step performance="optional">
<title>Get and Install Apache Sources</title>
<para>
- If you don't have them, or if you want to build Rivet as a
- static (built in) part of the Apache web server, you need
- the source code to Apache, which is available from <ulink
- url="http://httpd.apache.org/"/>. Otherwise, you don't need
- to perform this step. Infact, we recommend that you build
- Rivet as a shared object, and therefore, build it seperately
- from Apache.
+ Rivet needs some Apache include (.h) files in order to
+ build. The easiest way to get them is to download the
+ source code of the Apache web server, although some systems
+ (Debian GNU/Linux for example) make it possible to install
+ only the headers and other development files. If you intend
+ to build Rivet statically (compiled into the Apache web
+ server instead of loaded dynamically), you definitely need
+ the sources. We recommend that you build Rivet as a
+ loadable shared library, for maximum flexibility.</para>
+ <para>
+ The source code for the Apache web server may be found by
+ following the links here: <ulink
+ url="http://httpd.apache.org/"/>.
</para>
</step>
<step>
1.1 tcl-rivet/doc/Rivetlogo_smaller.png
<<Binary file>>
1.17 +3 -3 tcl-rivet/doc/html/help.html
Index: help.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/help.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- help.html 22 May 2003 10:57:12 -0000 1.16
+++ help.html 12 Jun 2003 13:51:35 -0000 1.17
@@ -1,5 +1,5 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Resources - How to Get Help</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="tcl_packages.html" title="Rivet Tcl Packages"><link rel="next" href="internals.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Resources - How to Get Help</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tcl_packages.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="internals.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="help"></a>Resources - How to Get Help</h2></div></div><div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396887"></a>Mailing Lists</h3></div></div><div></div></div><p style="width:90%">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Resources - How to Get Help</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="Apache Rivet"><link rel="up" href="index.html" title="Apache Rivet"><link rel="previous" href="tcl_packages.html" title="Rivet Tcl Packages"><link rel="next" href="internals.html" title="Rivet Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Resources - How to Get Help</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tcl_packages.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="internals.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="help"></a>Resources - How to Get Help</h2></div></div><div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396916"></a>Mailing Lists</h3></div></div><div></div></div><p style="width:90%">
The Rivet mailing list is the first place you should turn for
help, if you haven't found the solution to your problem in the
documentation. Send email to
@@ -10,7 +10,7 @@
<tt class="email"><<a href="mailto:rivet-list-subscribe@tcl.apache.org">rivet-<i class="replaceable"><tt>list</tt></i>-subscribe@tcl.apache.org</a>></tt>.
</p><p style="width:90%">
The mailing list archives are available at <a href="http://nagoya.apache.org/eyebrowse/SummarizeList?listId=118" target="_top">http://nagoya.apache.org/eyebrowse/SummarizeList?listId=118</a>
- </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396931"></a>Newsgroup</h3></div></div><div></div></div><p style="width:90%">
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396960"></a>Newsgroup</h3></div></div><div></div></div><p style="width:90%">
The <a href="news:comp.lang.tcl" target="_top">news:comp.lang.tcl</a> newsgroup is a good place to ask
about Tcl questions in general. Rivet developers also follow the
newsgroup, but it's best to ask Rivet-specific questions on the Rivet
@@ -32,7 +32,7 @@
</div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<a href="http://wiki.tcl.tk" target="_top">http://wiki.tcl.tk</a> is the Tcl'ers Wiki, a
free-form place to search for answers and ask for help.
- </div></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396631"></a>Bug Tracking System</h3></div></div><div></div></div><p style="width:90%">
+ </div></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396660"></a>Bug Tracking System</h3></div></div><div></div></div><p style="width:90%">
Apache Rivet uses the Apache Bug Tracking system at <a href="http://nagoya.apache.org/bugzilla/" target="_top">http://nagoya.apache.org/bugzilla/</a>. Here,
you can report problems, or check and see if existing issues
are already known and being dealt with.
1.17 +3 -1 tcl-rivet/doc/html/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/index.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- index.html 22 May 2003 10:57:12 -0000 1.16
+++ index.html 12 Jun 2003 13:51:35 -0000 1.17
@@ -3,7 +3,9 @@
��<tt class="email"><<a href="mailto:davidw@apache.org">davidw@apache.org</a>></tt><br>
</p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Damon</span> <span class="surname">Courtney</span></h3><div class="affiliation"><div class="address"><p><br>
��<tt class="email"><<a href="mailto:damonc@apache.org">damonc@apache.org</a>></tt><br>
- </p></div></div></div></div><div><p class="copyright">Copyright � 2002, 2003 Apache Software Foundation</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="index.html#id5391408">Introduction to Apache Rivet</a></dt><dt><a href="installation.html">Apache Rivet Installation</a></dt><dt><a href="directives.html">Rivet Apache Directives</a></dt><dt><a href="commands.html">Rivet Tcl Commands and Variables</a></dt><dt><a href="examples.html">Examples and Usage</a></dt><dt><a href="tcl_packages.html">Rivet Tcl Packages</a></dt><dt><a href="help.html">Resources - How to Get Help</a></dt><dd><dl><dt><a href="help.html#id5396887">Mailing Lists</a></dt><dt><a href="help.html#id5396931">Newsgroup</a></dt><dt><a href="help.html#websites">Web Sites</a></dt><dt><a href="help.html#id5396631">Bug Tracking System</a></dt></dl></dd><dt><a href="internals.html">Rivet Internals</a></dt><dd><dl><dt><a href="internals.html#id5396672">Initialization</a></dt><dt><a href="internals.html#id5396708">RivetChan</a></dt><dt><a href="internals.html#id5396737">Page Parsing, Execution and Cacheing</a></dt></dl></dd><dt><a href="upgrading.html">Upgrading from mod_dtcl or NeoWebScript</a></dt><dd><dl><dt><a href="upgrading.html#id5396814">mod_dtcl</a></dt><dt><a href="upgrading.html#id5396830">NeoWebScript</a></dt></dl></dd></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="id5391408"></a>Introduction to Apache Rivet</h2></div></div><div></div></div><p style="width:90%">
+ </p></div></div></div></div><div><p class="copyright">Copyright � 2002, 2003 Apache Software Foundation</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="index.html#id5393745">Introduction to Apache Rivet</a></dt><dt><a href="installation.html">Apache Rivet Installation</a></dt><dt><a href="directives.html">Rivet Apache Directives</a></dt><dt><a href="commands.html">Rivet Tcl Commands and Variables</a></dt><dt><a href="examples.html">Examples and Usage</a></dt><dt><a href="tcl_packages.html">Rivet Tcl Packages</a></dt><dt><a href="help.html">Resources - How to Get Help</a></dt><dd><dl><dt><a href="help.html#id5396916">Mailing Lists</a></dt><dt><a href="help.html#id5396960">Newsgroup</a></dt><dt><a href="help.html#websites">Web Sites</a></dt><dt><a href="help.html#id5396660">Bug Tracking System</a></dt></dl></dd><dt><a href="internals.html">Rivet Internals</a></dt><dd><dl><dt><a href="internals.html#id5396701">Initialization</a></dt><dt><a href="internals.html#id5396737">RivetChan</a></dt><dt><a href="internals.html#id5396766">Page Parsing, Execution and Cacheing</a></dt></dl></dd><dt><a href="upgrading.html">Upgrading from mod_dtcl or NeoWebScript</a></dt><dd><dl><dt><a href="upgrading.html#id5396843">mod_dtcl</a></dt><dt><a href="upgrading.html#id5396859">NeoWebScript</a></dt></dl></dd></dl></div><p style="width:90%">
+ This document is also available in the following languages: <a href="index.ru_UTF.html" target="_top">Russian</a>
+ </p><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="id5393745"></a>Introduction to Apache Rivet</h2></div></div><div></div></div><p style="width:90%">
Apache Rivet is a system for creating dynamic web content via a
programming language integrated with Apache Web Server. It is
designed to be fast, powerful and extensible, consume few system
1.12 +11 -6 tcl-rivet/doc/html/installation.html
Index: installation.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/installation.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- installation.html 22 May 2003 10:51:31 -0000 1.11
+++ installation.html 12 Jun 2003 13:51:35 -0000 1.12
@@ -10,12 +10,17 @@
have a FreeBSD port, Debian package, RPM's, and windows
binaries.
</p></li><li><p class="title"><b>Get and Install Apache Sources</b></p><p style="width:90%">
- If you don't have them, or if you want to build Rivet as a
- static (built in) part of the Apache web server, you need
- the source code to Apache, which is available from <a href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>. Otherwise, you don't need
- to perform this step. Infact, we recommend that you build
- Rivet as a shared object, and therefore, build it seperately
- from Apache.
+ Rivet needs some Apache include (.h) files in order to
+ build. The easiest way to get them is to download the
+ source code of the Apache web server, although some systems
+ (Debian GNU/Linux for example) make it possible to install
+ only the headers and other development files. If you intend
+ to build Rivet statically (compiled into the Apache web
+ server instead of loaded dynamically), you definitely need
+ the sources. We recommend that you build Rivet as a
+ loadable shared library, for maximum flexibility.</p><p style="width:90%">
+ The source code for the Apache web server may be found by
+ following the links here: <a href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>.
</p></li><li><p class="title"><b>Uncompress Sources</b></p><p style="width:90%">
We will assume that you have Apache installed at this point.
You must uncompress the Rivet sources in the directory where you
1.17 +3 -3 tcl-rivet/doc/html/internals.html
Index: internals.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/internals.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- internals.html 22 May 2003 10:57:12 -0000 1.16
+++ internals.html 12 Jun 2003 13:51:35 -0000 1.17
@@ -4,7 +4,7 @@
code is removed, and changes are made. The best place to look
is the source code itself. If you are interested in the changes
themselves FIXME.
- </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396672"></a>Initialization</h3></div></div><div></div></div><p style="width:90%">
+ </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396701"></a>Initialization</h3></div></div><div></div></div><p style="width:90%">
When Apache is started, (or when child Apache processes are
started if a threaded Tcl is used),
<tt class="function">Rivet_InitTclStuff</tt> is called, which
@@ -15,7 +15,7 @@
executes Rivet's <tt class="filename">init.tcl</tt>. The caching
system is also set up, and if there is a
<span style="font-family:monospace"><b class="command">GlobalInitScript</b></span>, it is run.
- </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396708"></a>RivetChan</h3></div></div><div></div></div><p style="width:90%">
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396737"></a>RivetChan</h3></div></div><div></div></div><p style="width:90%">
The <span class="structname">RivetChan</span> system was created in
order to have an actual Tcl channel that we could redirect
standard output to. This lets us use, for instance, the
@@ -25,7 +25,7 @@
Tcl's regular standard output is replaced with an instance of
this channel type, so that, by default, output will go to the
web page.
- </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396737"></a>Page Parsing, Execution and Cacheing</h3></div></div><div></div></div><p style="width:90%">
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396766"></a>Page Parsing, Execution and Cacheing</h3></div></div><div></div></div><p style="width:90%">
When a Rivet page is requested, it is transformed into an
ordinary Tcl script by parsing the file for the <? ?>
processing instruction tags. Everything outside these tags
1.17 +2 -2 tcl-rivet/doc/html/upgrading.html
Index: upgrading.html
===================================================================
RCS file: /home/cvs/tcl-rivet/doc/html/upgrading.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- upgrading.html 22 May 2003 10:57:12 -0000 1.16
+++ upgrading.html 12 Jun 2003 13:51:35 -0000 1.17
@@ -6,8 +6,8 @@
compatibility was not a primary goal when creating Rivet, but we
do provide this information which may be of use to those wishing
to upgrade from mod_dtcl or NWS installations.
- </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396814"></a>mod_dtcl</h3></div></div><div></div></div><p style="width:90%">
+ </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396843"></a>mod_dtcl</h3></div></div><div></div></div><p style="width:90%">
Rivet was originally based on the dtcl code, but it has
changed (improved!) quite a bit. The concepts remain the
same, but many of the commands have changed.
- </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396830"></a>NeoWebScript</h3></div></div><div></div></div><p style="width:90%">TODO</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Rivet Internals�</td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
+ </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396859"></a>NeoWebScript</h3></div></div><div></div></div><p style="width:90%">TODO</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Rivet Internals�</td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/commands.ru_UTF.html
Index: commands.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Rivet Tcl: команды и переменные</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="directives.ru_UTF.html" title="Конфигурационные параметры Rivet Apache"><link rel="next" href="examples.ru_UTF.html" title="Примеры использования"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Rivet Tcl: команды и переменные</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="directives.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="examples.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="commands"></a>Rivet Tcl: команды и переменные</h2></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">var</span> (<span style="font-family:monospace; text-decoration:underline">get</span> | <span style="font-family:monospace; text-decoration:underline">list</span> | <span style="font-family:monospace; text-decoration:underline">exists</span> | <span style="font-family:monospace; text-decoration:underline">number</span> | <span style="font-family:monospace; text-decoration:underline">all</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Команда <span style="font-family:monospace"><b class="command">var</b></span>
предназначена для доступа к переменным которые были
переданы методами GET или POST, не делая между
ними никакой разницы. Стоит заметить что есть еще две
формы команды <span style="font-family:monospace"><b class="command">var</b></span>:
<span style="font-family:monospace"><b class="command">var_qs</b></span> и <span style="font-family:monospace"><b class="command">var_post</b></span>.
Эти команды рассматривают только переменные переданные
GETом и POSTом, соответсвенно.
</div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">get</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>?<span class="optional">default</span>?</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает значение переданной вам методом GET или POST переменной
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span></tt>
(даже если есть несколько значений). Если же такой переменной
не было передано - то возвращается
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>?<span class="optional">default</span>?</tt></i></span></tt>,
а если и оно не было указано - то "" - пустая строка.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">list</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает значение переменной
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span></tt>
как список, если для этой переменной было много значений.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">exists</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает 1 если
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>varname</tt></i></span></tt>
вам передана, и 0 если нет.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">number</span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает количество переменных.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">all</span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает список из имен переменных и их значений.
</div></div></dd></dl></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
См. так же <a href="examples.ru_UTF.html#variable_access" title="Example�3.�Доступ к переменным">Example�3</a>.
</div></div></dd></dl></div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">upload</span> (<span style="font-family:monospace; text-decoration:underline">channel</span> | <span style="font-family:monospace; text-decoration:underline">save</span> | <span style="font-family:monospace; text-decoration:underline">data</span> | <span style="font-family:monospace; text-decoration:underline">exists</span> | <span style="font-family:monospace; text-decoration:underline">size</span> | <span style="font-family:monospace; text-decoration:underline">type</span> | <span style="font-family:monospace; text-decoration:underline">filename</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex"> Команда upload предназначена для обработки закачанных (uploaded)
файлов. Обратите внимание что поведение этой команды зависит от конфигурации
Apache и Rivet.
</div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">channel</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Если передано имя закачанного файла, то
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></tt>,
возвращает Tcl handle (как open (?)) для обращения
к этому файлу.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">save</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>filename</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Сохраняет
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></tt> в
файле
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>filename</tt></i></span></tt>.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">data</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает данные загруженные на сервер. Должно
работать так же и с бинарными файлами.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">size</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает размер закачанного файла.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">type</span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает значение <tt class="varname">Content-type</tt>, если оно установлено,
или пустую строчку, если нет.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">filename</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uploadname</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает имя закачанного файла на клиентской машине.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">names</span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Возвращает список имен переменных для всех закачанных файлов
</div></div></dd></dl></div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
См. так же <a href="examples.ru_UTF.html#upload" title="Example�4.�Закачка файлов (Upload)">Example�4</a>.
</div></div></dd></dl></div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_env</span> ?<span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>array_name</tt></i></span>?</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Загружает в указанный массив переменные окружения. По умолчанию
делает это в массив <tt><span style="text-decoration:underline">::request::env</span></tt>
</div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Так как страницы выполняются в пространстве имен
<tt><span style="text-decoration:underline">::request</span></tt>, то нет необходимости
обращатся к этому массиву по полному имени - вполне
можно ограничиться просто
<tt><span style="text-decoration:underline">env</span></tt> (примечание переводчика: щааааз!).
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_headers</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>array_name</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Загужает клиентские HTTP заголовки в указанный массив, или в
<tt><span style="text-decoration:underline">headers</span></tt> если имя массива не указано.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">load_cookies</span> ?<span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>array_name</tt></i></span>?</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Загужает переданные клиентом Cookie в указанный массив, или в
<tt><span style="text-decoration:underline">headers</span></tt> если имя массива не указано.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">include</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>filename_name</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Подгружает файл без обратки тэгов
<? и ?>. Это лучший способ включить HTML файл
или другой статический контент.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">parse</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>filename</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Почти то же что и команда Tcl <span style="font-family:monospace"><b class="command">source</b></span>, но только
с учетом тегов <? и ?>, используемых Rivetом. Этой командой можно
загружать один .rvt файл в другой.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">headers</span> (<span style="font-family:monospace; text-decoration:underline">set</span> | <span style="font-family:monospace; text-decoration:underline">redirect</span> | <span style="font-family:monospace; text-decoration:underline">add</span> | <span style="font-family:monospace; text-decoration:underline">type</span> | <span style="font-family:monospace; text-decoration:underline">numeric</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Команда <span style="font-family:monospace"><b class="command">headers</b></span> предназначена для работы с заголовками http.
</div><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">redirect</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>uri</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Перенаправление (redirect) с текущей страницы на новый URI.
<span class="emphasis"><em>Обязана</em></span> быть в самом начале кода (?)
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">setcookie</span> <span style="font-family:monospace; text-decoration:underline">-name</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>cookie-name</tt></i></span> <span style="font-family:monospace; text-decoration:underline">-value</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>cookie-value</tt></i></span> ?<span style="font-family:monospace; text-decoration:underline">-expires <i class="replaceable"><tt>date/time</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-domain <i class="replaceable"><tt>domain</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-path <i class="replaceable"><tt>path</tt></i></span>? ?<span style="font-family:monospace; text-decoration:underline">-secure</span>?</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Эта команда преденазаначена для установки Cookies, которые
будут посланы сервером клиенту.
<tt><span style="text-decoration:underline">cookie-name</span></tt> - это имя Cookie,
<tt><span style="text-decoration:underline">cookie-value</span></tt> - это значение,
<tt><span style="text-decoration:underline">-expires</span></tt> устанавливает дату протухания
Cookie, и обязана быть в виде
<tt class="constant">'DD-Mon-YY HH:MM:SS'</tt>,
<tt><span style="text-decoration:underline">-path</span></tt> устанавливает путь,
а <tt><span style="text-decoration:underline">-secure</span></tt> указывает что эта Cookie
должна передаваться только по HTTPS
</div></div></dd><dt><span class="term"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">type</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>content-type</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Эта команда устанавливает HTTP заголовок
<tt class="constant">Content-type</tt> который выозвращается
клиенту при обращении к странице. Это полезно если вы
отдаете содержимое отличное от text/html или
указываете кодировку.
</div></div></dd><dt><span class="term"><div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">set</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>headername</tt></i></span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>value</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Устанавливает любые имена и значения http заголовков
</div></div></dd></dl></div>
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">makeurl</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>filename</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Создает URL который ссылается сам на себя из имени файла. Например:
<pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">makeurl /tclp.gif</pre>
вернет
<tt class="constant">http://[hostname]:[port]/tclp.gif</tt>.
где hostname и port - это имя хоста и порт той страницы
которая была указана при запросе.
</div></div></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="directives.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="examples.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Конфигурационные параметры Rivet Apache�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Примеры использования</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/directives.ru_UTF.html
Index: directives.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Конфигурационные параметры Rivet Apache</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="installation.ru_UTF.html" title="Установка Apache Rivet"><link rel="next" href="commands.ru_UTF.html" title="Rivet Tcl: команды и переменные"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Конфигурационные параметры Rivet Apache</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="installation.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="commands.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="directives"></a>Конфигурационные параметры Rivet Apache</h2></div></div><div></div></div><p style="width:90%">
Это - разнообразный набор установок которые могут быть
сделаны в конфигурационнном файле Apache с целью
изменения поведения Rivet.
Их формат такой: <span style="font-family:monospace"><b class="command">RivetDirConf</b></span>,
<span style="font-family:monospace"><b class="command">RivetUserConf</b></span>,
<span style="font-family:monospace"><b class="command">RivetServerConf</b></span>,
что означает что DirConf имеет более высокий приоритет и перебивает
установки в UserConf, что в свою очередь перебивает ServerConf.
</p><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetServerConf</span> (<span style="font-family:monospace; text-decoration:underline">CacheSize</span> | <span style="font-family:monospace; text-decoration:underline">GlobalInitScript</span> | <span style="font-family:monospace; text-decoration:underline">ChildInitScript</span> | <span style="font-family:monospace; text-decoration:underline">ChildExitScript</span> | <span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span> | <span style="font-family:monospace; text-decoration:underline">UploadMaxSize</span> | <span style="font-family:monospace; text-decoration:underline">UploadFilesToVar</span> | <span style="font-family:monospace; text-decoration:underline">SeperateVirtualInterps</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex"><span style="font-family:monospace"><b class="command">RivetServerConf</b></span>
Устанавливает глобальные опции для всего сервера
</div><div class="variablelist"><dl><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">CacheSize</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>size</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Устанавливает опции для внутреннего кеша для страниц, где
<tt><span style="text-decoration:underline"><i class="replaceable"><tt>size</tt></i></span></tt>
- количество компилированных страниц которые будут
хранится в кеше для испозьзования в будущем. По умолчанию -
<span style="font-family:monospace"><b class="command">MaxRequestsPerChild</b></span> / 5, или 50,
если <span style="font-family:monospace"><b class="command">MaxRequestsPerChild</b></span> установлен в 0.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">GlobalInitScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Tcl скрипт который должен быть запущен для каждого
интерпретатора.<i class="replaceable"><tt><tt><span style="text-decoration:underline">script</span></tt></tt></i>
- обычный Tcl скрипт, поэтому чтобы запустить файл -
<pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">RivetServerConf GlobalInitScript "source /var/www/foobar.tcl"</pre>
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ChildInitScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Скрипт который будет запущен для каждого дочернего
процесса в Apache. Это идельное место чтобы загружать
модули, создавать глобальные переменные, соединяться
с базами данных и все такое.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ChildExitScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Скрипт который будет выполняться когда каждый
порожденный Apache процесс оканчивает работу.
Это идеальное место чтобы освобождать все ресурсы
занятые в
<tt><span style="text-decoration:underline">ChildInitScript</span></tt>.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">BeforeScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Скрипт который будет выполняться перед тем как сервер
запустит .rvt страницу. Может быть использован для
того, чтобы, например, создавать стандарный header
(в терминологии http, например - image/png). Также
может быть использован для того чтобы подгружать
код который будет использоваться на каждой странице,
если вы не хотите это делать в
<tt><span style="text-decoration:underline">GlobalInitScript</span></tt>
<tt><span style="text-decoration:underline">ChildInitScript</span></tt> когда вы
разрабатываете веб сайт в первый раз (примечание переводчика: не понимаю, о чем это
он? последняя строка - построчник)
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td colspan="2" align="left" valign="top">
Этот код исполняется на глобальном уровне, а не
в том namespace в котором исполняются страницы
</td></tr></table></div>
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">AfterScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Скрипт который будет вызываться после каждой (.rvt) страницы.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">ErrorScript</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>script</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Если внутри rivet произойдет ошибка, то он
сооружает некую html-страницу с информацией о том, что
собственно, произошло. Если же <tt><span style="text-decoration:underline">ErrorScript</span></tt>
указан, то можно создать свою страницу, которая будет
вызываться в этом случае. Это может быть полезно
когда вы не хотите показывать пользователю свой
код с ошибками.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadDirectory</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>directory</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Директория в которую надо складывать загруженые (uploaded) пользователем файлы.</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadMaxSize</span> <span style="font-family:monospace; text-decoration:underline"><i class="replaceable"><tt>size</tt></i></span></span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">Максимальный размер для загруженных (uploaded) файлов.</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">UploadFilesToVar</span> (<span style="font-family:monospace; text-decoration:underline">yes</span> | <span style="font-family:monospace; text-decoration:underline">no</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Эта установка регулирует возможность закачки (upload)
файлов прямо в Tcl переменную. Если у вас установлено
ограничение по размеру на закачиваемые файлы, а вам
не особенно хочется общаться со слишком большими файлами,
то эта установка позволяет вам складывать их на диск.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-family:monospace; text-decoration:underline">SeperateVirtualInterps</span> (<span style="font-family:monospace; text-decoration:underline">yes</span> | <span style="font-family:monospace; text-decoration:underline">no</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Если эта опция установлена, то rivet будет создавать
отдельный интерпретатор Tcl на каждый VirtualHost
в терминологии Apache. Это полезно в ситуации когда
вы - хостер и надо чтобы для каждого клиента был свой
собственный интерпретатор, чтобы они друг с другом
не конфликтовали.
</div></div></dd></dl></div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetDirConf</span> (<span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Эта установка - тоже самое что
<span style="font-family:monospace"><b class="command">RivetServerConf</b></span>,
кроме того что они касаются только той директории
в которой они указаны, и ее поддиректорий.
Можно использовать в
<span style="font-family:monospace"><b class="command">Directory</b></span> разделах.
</div></div></dd><dt><span class="term">
<div class="cmdsynopsis" style="width:80%"><span style="background:#bbbbff ; margin:1ex ; padding:.4ex ; word-spacing:1ex "><span style="font-weight:bold ; font-family:monospace">RivetUserConf</span> (<span style="font-family:monospace; text-decoration:underline">BeforeScript</span> | <span style="font-family:monospace; text-decoration:underline">AfterScript</span> | <span style="font-family:monospace; text-decoration:underline">ErrorScript</span> | <span style="font-family:monospace; text-decoration:underline">UploadDirectory</span>)</span></div>
</span></dt><dd><div style="padding:4 ; margin-top:3 ; margin-bottom:3 ; width:75%"><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
Эти опции - то же самое что и
<span style="font-family:monospace"><b class="command">RivetServerConf</b></span>,
кроме лишь того что они действуют только для указанной
директории, и ее поддиректорий
</div></div></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="installation.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="commands.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Установка Apache Rivet�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Rivet Tcl: команды и переменные</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/examples.ru_UTF.html
Index: examples.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Примеры использования</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="commands.ru_UTF.html" title="Rivet Tcl: команды и переменные"><link rel="next" href="help.ru_UTF.html" title="Ресурсы и как получить помощь"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Примеры использования</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="commands.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="help.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="examples"></a>Примеры использования</h2></div></div><div></div></div><p style="width:90%">
Далее - примеры использования Rivet. Подразумевается что
читатель имеет некоторые знания Tcl. Если же вы его не знаете -
не волнуйтесь, это простой язык, и множество как минимум англоязычной
документации и учебников доступно в сети.
Посмотрите например <a href="help.ru_UTF.html#websites" title="Web Sites"> сюда </a>.
</p><div class="example"><a name="hello world"></a><p class="title"><b>Example�1.�Hello World</b></p><p style="width:90%">
Естественно, первым примером будет "Hello World".
</p><p style="width:90%">
Мы предполагаем что к этому моменту Apache сконфигурирован и понимает
.rvt файлы, создадим файл
<tt class="filename">hello.rvt</tt> в месте где Apache сможет
его найдти со следующим содержимым:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><?
puts "Hello World"
?>
</pre><p style="width:90%">
Если вы обратитесь к этому файлу через броузер, вы должны увидеть
практически чистую страницу с надписью "Helo World" (без кавычек).
</p></div><div class="example"><a name="table"></a><p class="title"><b>Example�2.�Создание таблицы</b></p><p style="width:90%">
В следующем, тоже простом примере мы покажем как создать таблицы:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><? 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=\"%02x%02x%02x\" > $num $num $num </td>\n" \
$num $num $num ]
}
puts "</tr>\n"
}
puts "</table>\n" ?>
</pre><p style="width:90%">
Если вы вчитаетесь в код, то убедитесь что это чистейший Tcl. Мы можем
запустить этот код и вне Rivet - и он будет генерировать такой же HTML!
</p><p style="width:90%">
Результат должен быть похож на:
</p><div><img src="table.png"></div></div><div class="example"><a name="variable_access"></a><p class="title"><b>Example�3.�Доступ к переменным</b></p><p style="width:90%">
А тут мы продемонстрируем как обращаться с переменными
переданными вам методом POST или GET.
</p><p style="width:90%">
Из такой HTML формы:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><form action="vars.rvt">
<p>
<input name="title">
<input name="salary">
<input name="boss">
<select name="skills" multiple="multiple">
<option>c</option>
<option>java</option>
<option>Tcl</option>
<option>Perl</option>
</select>
</p>
</form>
</pre><p style="width:90%">
Мы можем использовать rivet скрипт чтобы получить доступ к
этим переменным:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><?
set errlist {}
if { [var exists title] } {
set salary [var get title]
} else {
set errlist "You need to enter a title"
}
if { [var exists salary] } {
set salary [var get salary]
if { ! [string is digit $salary] } {
lappend errlist "Salary must be a number"
}
} else {
lappend errlist "You need to enter a salary"
}
if { [var exists boss] } {
set boss [var get boss]
} else {
set boss "Mr. Burns"
}
if { [var exists skills] } {
set skills [var list skills]
} else {
lappend errlist "You need to enter some skills"
}
if { [llength $errlist] != 0 } {
foreach err $errlist {
puts "<b> $err </b>"
}
} else {
puts "Thanks for the information!"
}
?></pre><p style="width:90%">
Первый оператор проверяет что переменная
<tt class="varname">boss</tt> была переданна скрипту, и потом
что-то делает с этой информацией.
Если же такой нет - то в список ошибок добавляется сообщение
об этом прискорбном факте.
</p><p style="width:90%">
Во втором куске кода, переменная
<tt class="varname">salary</tt> обрабатывается примерно таким же
образом, и к тому же еще и проверяется на то является ли она
числом.
</p><p style="width:90%">
Если переменная <tt class="varname">boss</tt> не введена - то она
заменяется на "Mr. Burns".
</p><p style="width:90%">
А последний кусок кода немножко хитрее, потому что переменная
<tt class="varname">skills</tt> - это listbox, и в принципе
может иметь несколько значений, и тут мы покажем как с ними
поступать.
</p><p style="width:90%">
Скрипт в последствии проверяет что
<tt class="varname">errlist</tt> пустой (а если нет - то информирует
вас об ошибках) и говорит что спасибо и все такое.
</p></div><div class="example"><a name="upload"></a><p class="title"><b>Example�4.�Закачка файлов (Upload)</b></p><p style="width:90%">
Пусть есть такой HTML код
<tt class="filename">upload.html</tt>
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><form action="foo.rvt" enctype="multipart/form-data"
method="post">
<input type="file" name="MyUpload"></input>
</form></pre><p style="width:90%">
Из такого Tcl кода, например,
(под названием <tt class="filename">upload.rvt</tt>)
мы получаем доступ к загруженному файлу.
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting"><?
upload save MyUpload /tmp/uploadfiles/file1
puts "Saved file [upload filename MyUpload] \
([upload size MyUpload] bytes) to server"
?></pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="commands.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="help.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Rivet Tcl: команды и переменные�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Ресурсы и как получить помощь</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/help.ru_UTF.html
Index: help.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Ресурсы и как получить помощь</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="examples.ru_UTF.html" title="Примеры использования"><link rel="next" href="internals.ru_UTF.html" title="Внутренности Rivet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Ресурсы и как получить помощь</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="examples.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="internals.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="help"></a>Ресурсы и как получить помощь</h2></div></div><div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5397233"></a>Mailing Lists</h3></div></div><div></div></div><p style="width:90%">
Mailing List (список рассылка) - это первейшее место куда
надо обращаться за помощью, если, конечно, вы не нашли ответа
в документации. Пишите на
<tt class="email"><<a href="mailto:rivet-user@tcl.apache.org">rivet-user@tcl.apache.org</a>></tt>. Если у вас
есть мысли, идеи, или просто соображения о Rivet и его коде, то
пишите на <tt class="email"><<a href="mailto:rivet-dev@tcl.apache.org">rivet-dev@tcl.apache.org</a>></tt>.
Чтобы подписаться на оба листа, пишите email на
<tt class="email"><<a href="mailto:rivet-list-subscribe@tcl.apache.org">rivet-<i class="replaceable"><tt>list</tt></i>-subscribe@tcl.apache.org</a>></tt>.
</p><p style="width:90%">
Архивы списка рассылки доступны тут <a href="http://nagoya.apache.org/eyebrowse/SummarizeList?listId=118" target="_top">http://nagoya.apache.org/eyebrowse/SummarizeList?listId=118</a>
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="websites"></a>Web Sites</h3></div></div><div></div></div><p style="width:90%">
Есть некоторое количество полезных веб сайтов про Apache и Tcl.
</p><div class="itemizedlist"><ul type="disc"><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<a href="http://tcl.apache.org" target="_top">http://tcl.apache.org</a>
это домашняя страница проекта Apache Tcl. Сюда надо ходить за
свежими версиями софта.
</div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<a href="http://httpd.apache.org/docs/" target="_top">http://httpd.apache.org/docs/</a>
по всем вопросам касающимся Apache
</div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<a href="http://www.tcl.tk/" target="_top">http://www.tcl.tk/</a>
классическое место где гнездится Tcl.
</div></li><li><div style=" margin:1ex ; margin-bottom:1.5ex ; padding .5ex">
<a href="http://wiki.tcl.tk" target="_top">http://wiki.tcl.tk</a>
Tcl's Wiki, весьма полезный ресурс для задавания вопросов,
получения ответов и отвечания на них для тех кто крут.
</div></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396261"></a>Система отлова ошибок</h3></div></div><div></div></div><p style="width:90%">
Apache Rivet использует ВсеАпачную Систему Отлова Ошибок (ВАСОО) <a href="http://nagoya.apache.org/bugzilla/" target="_top">http://nagoya.apache.org/bugzilla/</a>.
Всякие проблемы пишите сюда, или - что тоже полезно - вы можете
выяснить опыт ее решения, если кто-то уже с ней сталкивался.
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="examples.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="internals.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Примеры использования�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Внутренности Rivet</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/index.ru_UTF.html
Index: index.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Apache Rivet</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="next" href="installation.ru_UTF.html" title="Установка Apache Rivet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Apache Rivet</th></tr><tr><td width="20%" align="left">�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="installation.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id5336302"></a>Apache Rivet</h1></div><div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Welton</span></h3><div class="affiliation"><div class="address"><p><br>
����������<tt class="email"><<a href="mailto:davidw@apache.org">davidw@apache.org</a>></tt><br>
��������</p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Damon</span> <span class="surname">Courtney</span></h3><div class="affiliation"><div class="address"><p><br>
����������<tt class="email"><<a href="mailto:damonc@apache.org">damonc@apache.org</a>></tt><br>
��������</p></div></div></div></div><div><p class="othercredit"><span class="contrib">Russian Translation</span>: <span class="firstname">Dmitry</span> <span class="othername">the</span> <span class="surname">Zuryanovich</span></p><div class="affiliation"><div class="address"><p><tt class="email"><<a href="mailto:dtz@xepb.ru">dtz@xepb.ru</a>></tt></p></div></div></div><div><p class="copyright">Copyright � 2002, 2003 Apache Software Foundation</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="index.ru_UTF.html#id5393384">Введение в Apache Rivet</a></dt><dt><a href="installation.ru_UTF.html">Установка Apache Rivet</a></dt><dt><a href="directives.ru_UTF.html">Конфигурационные параметры Rivet Apache</a></dt><dt><a href="commands.ru_UTF.html">Rivet Tcl: команды и переменные</a></dt><dt><a href="examples.ru_UTF.html">Примеры использования</a></dt><dt><a href="help.ru_UTF.html">Ресурсы и как получить помощь</a></dt><dd><dl><dt><a href="help.ru_UTF.html#id5397233">Mailing Lists</a></dt><dt><a href="help.ru_UTF.html#websites">Web Sites</a></dt><dt><a href="help.ru_UTF.html#id5396261">Система отлова ошибок</a></dt></dl></dd><dt><a href="internals.ru_UTF.html">Внутренности Rivet</a></dt><dd><dl><dt><a href="internals.ru_UTF.html#id5396321">Инициализация</a></dt><dt><a href="internals.ru_UTF.html#id5396898">RivetChan</a></dt><dt><a href="internals.ru_UTF.html#id5396946">Обработка страниц, выполнение и кеширование</a></dt></dl></dd><dt><a href="upgrading.ru_UTF.html">Переход с mod_dtcl или NeoWebScript (NWS)</a></dt><dd><dl><dt><a href="upgrading.ru_UTF.html#id5397071">mod_dtcl</a></dt><dt><a href="upgrading.ru_UTF.html#id5397093">NeoWebScript</a></dt></dl></dd></dl></div><p style="width:90%">
This document is also available in the following languages: <a href="index.html" target="_top">English</a>
</p><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="id5393384"></a>Введение в Apache Rivet</h2></div></div><div></div></div><p style="width:90%">
Apache Rivet - это система для генерации динамических веб
страниц, встроенная модулем в http сервер Apache. Она задумывалась
как система быстрая, мощная, расширяемая и достаточно простая для
внедрения. Стоит заметить что с Apache Rivet вы получаете надежную
платформу которая не только может интегрироваться в web, но
и может быть использована вне его. GUI и приложения командной
строки (command line) могут использовать тот же код, который используется
при разработках web-приложений.
Это достигается применением языка TCL - вне и внутри Apache сервера.
</p><p style="width:90%">
В этом документе мы постараемся помочь вам быстро разобраться как
можно создавать web- приложения, и показать вам дальнейшие
пути для разработки приложений используя rivet для самых
разнообразных применений.
</p><p style="width:90%">
Эта документация - как и весь rivet, и тем более ее перевод на
русский - это работа, которая не заврешена, и будем надеяться
будет продолжаться еще очень долго.
Если вы видите что что-то где-то почему-то не так - то пишите
об этом, мы сами за всем не углядим без вашей помощи.
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">�</td><td width="20%" align="center">�</td><td width="40%" align="right">�<a accesskey="n" href="installation.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">�</td><td width="20%" align="center">�</td><td width="40%" align="right" valign="top">�Установка Apache Rivet</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/installation.ru_UTF.html
Index: installation.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Установка Apache Rivet</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="index.ru_UTF.html" title="Apache Rivet"><link rel="next" href="directives.ru_UTF.html" title="Конфигурационные параметры Rivet Apache"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Установка Apache Rivet</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="directives.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="installation"></a>Установка Apache Rivet</h2></div></div><div></div></div><div class="procedure"><ol type="1"><li><p class="title"><b>Check Dependencies/Проверка связей между программным обеспечением</b></p><p style="width:90%">
Для того чтобы установить rivet, вам в первую очередь понадобится
сам Tcl, версии 8.2 или выше. Известно что все должно работать
на Linux, FreeBSD,OpenBSD, Solaris и HPUX. Возможно что
можно заставитиь работать даже на Windows NT - читайте далее
и экспериментируйте.
</p></li><li><p class="title"><b>Скачайте себе Rivet</b></p><p style="width:90%">
Возьмите исходники отсюда <a href="http://tcl.apache.org/rivet/download" target="_top">http://tcl.apache.org/rivet/download</a>.
На данный момент это единственный способ получить rivet.
Возможно в дальнейшем появится FreeBSD port, Debian package,
RPM и бинарники под Windows.
</p></li><li><p class="title"><b>Скачайте и соберите Apache</b></p><p style="width:90%">
Если у вас нет исходников Apache, или вы хотите собрать
rivet как статический модуль, то вам придется скачать
исходники apache отсюда
<a href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>.
Но если вы не собираетесь собирать rivet как статический модуль -
то вам этого не придется делать. Мы рекомендуем собирать
rivet как динамическую библиотеку (shared object), и соответсвенно
собирать его отдельно от Apache.
</p></li><li><p class="title"><b>Разархивация исходников</b></p><p style="width:90%">
Сейчас мы будем считать что apache вами был каким-то образом
установлен. Теперь вы должны разархивировать исходники
rivet там где вы хотите их собирать.
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">gunzip tcl-rivet-X.X.X.tar.gz
tar -xvf tcl-rivet-X.X.X.tar.gz</pre><p style="width:90%">
</p></li><li><p class="title"><b>Компиляция Rivet</b></p><p style="width:90%">
Rivet использует некую свою уникальную систему компиляции
которую мы специально придумали именно для него. Она
использует информацию из инсталяций Apache и Tcl, для того
чтобы собрать себя саму через набор Tcl скриптов,
которые находятся
<tt class="filename">buildscripts/</tt> тут.
</p><ol type="a"><li><p class="title"><b>Редактирование src/make.tcl</b></p><p style="width:90%">
Возможно вам придется отредактировать
<tt class="filename">src/make.tcl</tt> при некоторых условиях.
Сначала попробуйте следующий шаг, и только если он у вас
не получится - то вам придется действительно поредактировать
этот файл.
</p></li><li><p style="width:90%"> Сейчас вы должны быть готовы к сборке всего вместе:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">cd src/
./make.tcl <i class="replaceable"><tt>option</tt></i></pre><p style="width:90%">where <i class="replaceable"><tt>option</tt></i> can be
either <tt><span style="text-decoration:underline">shared</span></tt> or
<tt><span style="text-decoration:underline">static</span></tt>.
</p></li><li><p class="title"><b>Установка</b></p><p style="width:90%">
Сейчас самое время запустить
<span style="font-family:monospace"><b class="command">./make.tcl
install</b></span> чтобы все установить.
Эта команда должна скопировать получившийся .so
файл (типа
<tt class="filename">mod_rivet.so</tt>), если он конечно
скомпилируется, в директорию
Apache
<tt class="filename">libexec</tt>, а так же установит
некоторое количество полезных скриптов и прочего кода.
</p></li></ol></li><li><p class="title"><b>Конфигурация Apache</b></p><p style="width:90%">
Конфигурировать Rivet достаточно просто - начнем с того что
добавим сам модуль:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">LoadModule rivet_module <i class="replaceable"><tt>/usr/lib/apache/1.3/mod_rivet.so</tt></i></pre><p style="width:90%">
После этого Apache должен знать что ему надо загрузить
Rivet как shared object, чтобы иметь возможность его использовать.
Далее мы должны объяснить Apache какие файлы надо обрабатывать
Rivetом и как это делать:
</p><pre style="background:#bbffbb ; width:90ex ; margin: 2ex ; padding: 1ex; border: solid black 1px ; white-space: pre; font-family:monospace ; " class="programlisting">AddType application/x-httpd-rivet .rvt
AddType application/x-rivet-tcl .tcl</pre><p style="width:90%">
Эти директивы объяснят Apache что файлы с расширением
<tt class="filename">.rvt</tt> и <tt class="filename">.tcl</tt>
надо обрабатывать Rivetом.
</p><p style="width:90%">
Все остальные директивы описаны тут
<a href="directives.ru_UTF.html" title="Конфигурационные параметры Rivet Apache">Section�, “Конфигурационные параметры Rivet Apache”</a>.
</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="directives.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Apache Rivet�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Конфигурационные параметры Rivet Apache</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/internals.ru_UTF.html
Index: internals.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Внутренности Rivet</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="help.ru_UTF.html" title="Ресурсы и как получить помощь"><link rel="next" href="upgrading.ru_UTF.html" title="Переход с mod_dtcl или NeoWebScript (NWS)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Внутренности Rivet</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="help.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�<a accesskey="n" href="upgrading.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="internals"></a>Внутренности Rivet</h2></div></div><div></div></div><p style="width:90%">
Эта секция давно устарела, поскольку новый код добавляется, а
старый убирается. Так что лучше читайте исходники - они рулез!.
И вообще если хотите чего-нибудь написать - FIXME.
</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396321"></a>Инициализация</h3></div></div><div></div></div><p style="width:90%">
Когда apavhe запускается (или когда запускается использующий TCL
дочерний процесс Apache ), вызывается
<tt class="function">Rivet_InitTclStuff</tt>,
который создает новый интерпретатор, по одному на каждый
виртуальный хост, в зависимости от конфигурации. Также инициализируются
всякие вещи типа
<span class="structname">RivetChan</span> канальная система (channel system),
создаются специфичные для Rivet Tcl команды и исполняется Rivetовский
channel system, creates the Rivet-specific Tcl commands, and
<tt class="filename">init.tcl</tt>. Система кеширования, опять же, и если
есть
<span style="font-family:monospace"><b class="command">GlobalInitScript</b></span>, то и он запускается.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396898"></a>RivetChan</h3></div></div><div></div></div><p style="width:90%">
Система <span class="structname">RivetChan</span> была создана для того чтобы
перенаправлять стандартный поток вывода (stdout). По этой причине вы можете
использовать стандартную команду
<span style="font-family:monospace"><b class="command">puts</b></span> в страницах .rvt.
(примечание переводчика: и <span style="font-family:monospace"><b class="command">fconfigure</b></span> тоже, что полезно).
Она также создает канал который буферизует output, и перенаправляет его в
систему ввода-вывода Apache.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5396946"></a>Обработка страниц, выполнение и кеширование</h3></div></div><div></div></div><p style="width:90%">
Когда выполняется Rivet страница, она превращается в обычный Tcl
скрипт, опираясь на символы <? ?>. Все что вне их
рассматривается как большой большой аргумент для
<span style="font-family:monospace"><b class="command">puts</b></span>, а все что внутри - рассматривается
как Tcl код.
</p><p style="width:90%">
Каждый .rvt файл выполняется в простанстве имен
<tt class="constant">::request</tt>, по этому нет необходимости
каждый раз создавать по новому интерпретатору. По этой же
причине глобальные переменные
(примечание преводчика: звиняйте, не понял)
By running in its own namespace, though, each page will
not run afoul of local variables created by other scripts,
because they will be deleted automatically when the namespace
goes away after Apache finishes handling the request.
</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td><th align="left">Note</th></tr><tr><td colspan="2" align="left" valign="top">
Одна из существующих ныне проблем подобного подхода - это отсутсвие
механизма сборщика мусора, например, если вы не закрыли
хэндл файла - то это плохо. Поэтому будьте добры, закрывайте все
что наоткрывали.
</td></tr></table></div><p style="width:90%">
После того как скрипт загружен и преобразован в "чистый Tcl",
он опять же кешируется, и по этой причине может быть использован
в следующий раз без лишних преобразований и обращений к диску.
Количество кешируемых скриптов можно изменить в конфиге.
Таким образом можно значительно поднять производительность системы.
</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="help.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�<a accesskey="n" href="upgrading.ru_UTF.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Ресурсы и как получить помощь�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�Переход с mod_dtcl или NeoWebScript (NWS)</td></tr></table></div></body></html>
1.1 tcl-rivet/doc/html/upgrading.ru_UTF.html
Index: upgrading.ru_UTF.html
===================================================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Переход с mod_dtcl или NeoWebScript (NWS)</title><link rel="stylesheet" href="rivet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.ru_UTF.html" title="Apache Rivet"><link rel="up" href="index.ru_UTF.html" title="Apache Rivet"><link rel="previous" href="internals.ru_UTF.html" title="Внутренности Rivet"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Переход с mod_dtcl или NeoWebScript (NWS)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><th width="60%" align="center">�</th><td width="20%" align="right">�</td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><hr><h2 class="title" style="clear: both"><a name="upgrading"></a>Переход с mod_dtcl или NeoWebScript (NWS)</h2></div></div><div></div></div><p style="width:90%">
Обратная совместимость не была никогда особой целью разработчиков,
но мы ее все равно предоставляем по историческим причинам и
с учетом пожеланий тех кто переключается на Rivet с mod_dtcl и NeoWebScript (NWS).
</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5397071"></a>mod_dtcl</h3></div></div><div></div></div><p style="width:90%">
Rivet базируется на коде mod_dtcl, но достаточно хорошо переработан. Основная
идея осталась та же, но большое количетво команд изменилось.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id5397093"></a>NeoWebScript</h3></div></div><div></div></div><p style="width:90%">Потом.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="internals.ru_UTF.html"><img src="images/prev.png" alt="Prev"></a>�</td><td width="20%" align="center"><a accesskey="u" href="index.ru_UTF.html"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right">�</td></tr><tr><td width="40%" align="left" valign="top">Внутренности Rivet�</td><td width="20%" align="center"><a accesskey="h" href="index.ru_UTF.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top">�</td></tr></table></div></body></html>
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org