<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.opendap.org/index.php?action=history&amp;feed=atom&amp;title=Wiki_Testing%2FOPeNDAPUserGuide5-2</id>
	<title>Wiki Testing/OPeNDAPUserGuide5-2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://docs.opendap.org/index.php?action=history&amp;feed=atom&amp;title=Wiki_Testing%2FOPeNDAPUserGuide5-2"/>
	<link rel="alternate" type="text/html" href="https://docs.opendap.org/index.php?title=Wiki_Testing/OPeNDAPUserGuide5-2&amp;action=history"/>
	<updated>2026-04-20T12:15:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://docs.opendap.org/index.php?title=Wiki_Testing/OPeNDAPUserGuide5-2&amp;diff=1695&amp;oldid=prev</id>
		<title>Yuan: New page: ==Installing an OPeNDAP Server==   Most of the task of installing an OPeNDAP server consists of getting the required Web server installed and running. The intricacies of this task, and the...</title>
		<link rel="alternate" type="text/html" href="https://docs.opendap.org/index.php?title=Wiki_Testing/OPeNDAPUserGuide5-2&amp;diff=1695&amp;oldid=prev"/>
		<updated>2008-01-05T12:27:24Z</updated>

		<summary type="html">&lt;p&gt;New page: ==Installing an OPeNDAP Server==   Most of the task of installing an OPeNDAP server consists of getting the required Web server installed and running. The intricacies of this task, and the...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Installing an OPeNDAP Server==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the task of installing an OPeNDAP server consists of getting the&lt;br /&gt;
required Web server installed and running. The intricacies of this&lt;br /&gt;
task, and the variety of available Web servers make this task beyond&lt;br /&gt;
the scope of this guide. Proceed with the following steps only after&lt;br /&gt;
the Web server itself is operational.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing the OPeNDAP CGI programs and the data to be served is a&lt;br /&gt;
 relatively simple operation. After&lt;br /&gt;
installing the OPeNDAP source tree and building the software, (See&lt;br /&gt;
[[Wiki_Testing/OPeNDAPUserGuideAppendix|Appendix]]), the user need only copy the CGI program from the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;etc&amp;lt;/font&amp;gt; directory in the OPeNDAP source tree (&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;(DODS_ROOT)/etc&amp;lt;/font&amp;gt;)&lt;br /&gt;
to one of the directories where the Web server expects to find its CGI&lt;br /&gt;
programs. The exact name of this directory is an implementation detail&lt;br /&gt;
of the Web server itself.&lt;br /&gt;
&lt;br /&gt;
The service programs used by the CGI are generally kept in the same&lt;br /&gt;
directory as the CGI itself, although this can be changed by modifying&lt;br /&gt;
the OPeNDAP CGI dispatch script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The server programs come with release notes and installation&lt;br /&gt;
notes, in files &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;README&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;INSTALL&amp;lt;/font&amp;gt;, among others.  These&lt;br /&gt;
will be found in the distribution directories for the particular&lt;br /&gt;
server.  For example, the documentation for the JGOFS server will be&lt;br /&gt;
found in &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/src/http/jg-dods&amp;lt;/font&amp;gt;.  See [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;] for&lt;br /&gt;
additional information about server documentation.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing the CGI program and the services, the data to be&lt;br /&gt;
provided must be put in some location where it may be served to&lt;br /&gt;
clients. Again, the location of the data depends on the configuration&lt;br /&gt;
of the Web server and the API used by the CGI services. Most often,&lt;br /&gt;
data that is served by a Web server is kept in the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;&lt;br /&gt;
directory, the exact pathname of which is specified in the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt;.configuration file. A server may also be enabled to search&lt;br /&gt;
a user&amp;#039;s home directory tree or may follow links from the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;&lt;br /&gt;
directory (if the server is enabled to follow symbolic links). There&lt;br /&gt;
may be yet other options provided by the specific server used in a&lt;br /&gt;
particular installation, so there is really no way to avoid consulting&lt;br /&gt;
the configuration instructions of the Web server.&lt;br /&gt;
&lt;br /&gt;
As noted, the location of the data depends not only on the&lt;br /&gt;
configuration of the Web server, but also on the API used to access&lt;br /&gt;
the data requested.  For example, the netCDF server simply&lt;br /&gt;
stores data in a path relative to the working directory of the CGI&lt;br /&gt;
program, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;, while the JGOFS server uses its data&lt;br /&gt;
dictionary to specify the location of its data. Refer to the specific&lt;br /&gt;
installation notes for each API for more information about the&lt;br /&gt;
location of the data.&lt;br /&gt;
&lt;br /&gt;
===Configuring the Server===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The issues of server configuration depend to a large extent on the&lt;br /&gt;
particular server in question.  The OPeNDAP server for JGOFS data is&lt;br /&gt;
configured differently than the OPeNDAP server for netCDF data.  Each&lt;br /&gt;
server comes with its own installation and configuration instructions.&lt;br /&gt;
These can be found in a file called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;INSTALL&amp;lt;/font&amp;gt; in the distribution&lt;br /&gt;
directory for the server.  The server distribution directories are in&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/src&amp;lt;/font&amp;gt;.  Here is a checklist of items that need to be&lt;br /&gt;
attended in order to install any OPeNDAP server:  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Is the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server configured to execute CGI programs?&lt;br /&gt;
*Are the main CGI and subsidiary CGI programs installed in the&lt;br /&gt;
server&amp;#039;s CGI directory?  For the netCDF API, these will be called&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nph-nc&amp;lt;/font&amp;gt;, and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nc_das&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nc_dds&amp;lt;/font&amp;gt;, and so on.  The&lt;br /&gt;
server CGI&amp;#039;s for other API&amp;#039;s will have comparable names.&lt;br /&gt;
*Is the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;gzip&amp;lt;/font&amp;gt; program installed in the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;PATH&amp;lt;/font&amp;gt; of the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server?  This is used to compress data messages returned&lt;br /&gt;
to the client.&lt;br /&gt;
&lt;br /&gt;
===Constructing the URL===&lt;br /&gt;
&lt;br /&gt;
After a dataset has been installed, and the server programs installed,&lt;br /&gt;
you need to know what its address is.  ([[Wiki_Testing/OPeNDAPUserGuide2|Section 2.1]])&lt;br /&gt;
contains an explanation of the various parts of the OPeNDAP URL,&lt;br /&gt;
including a diagram in figure 2.1.  Refer&lt;br /&gt;
to this section, with a copy of the Web server configuration data&lt;br /&gt;
readily available.  Using the configuration data, you should be able&lt;br /&gt;
to determine the appropriate URL for the data you are serving.&lt;br /&gt;
&lt;br /&gt;
Remember that the web server will have its own definition of the root&lt;br /&gt;
directory for data, and another definition for CGI programs, depending&lt;br /&gt;
on the configuration.&lt;br /&gt;
&lt;br /&gt;
===Documenting Your Data===&lt;br /&gt;
&lt;br /&gt;
OPeNDAP contains provisions for supplying documentation to users about a&lt;br /&gt;
server, and also about the data that server provides.  When a server&lt;br /&gt;
receives an information request (through the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;info&amp;lt;/font&amp;gt; service that&lt;br /&gt;
invokes the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;usage&amp;lt;/font&amp;gt; program), it&lt;br /&gt;
returns to the client an HTML document created from the DAS and DDS of&lt;br /&gt;
the referenced data.  It may also return information about the server,&lt;br /&gt;
and more detail about the dataset.&lt;br /&gt;
&lt;br /&gt;
If you would like to provide more information about a dataset than is&lt;br /&gt;
contained in the DAS and DDS, simply create an HTML document (without&lt;br /&gt;
the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;lt;html&amp;gt;&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/font&amp;gt; tags, which are supplied by the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;info&amp;lt;/font&amp;gt; service), and store it in the same directory as the&lt;br /&gt;
dataset, with a name corresponding to the dataset filename.  For&lt;br /&gt;
example, the datasets &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc1.nc&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc2.nc&amp;lt;/font&amp;gt;, and&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc3.nc&amp;lt;/font&amp;gt; might be documented with a file called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc.html&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may prefer to override this method of creating documentation and&lt;br /&gt;
simply provide a single, complete HTML document that contains general&lt;br /&gt;
information for the server or for a group of datasets.  For example,&lt;br /&gt;
to force the info server to return a particular HTML document for all&lt;br /&gt;
its datasets, you would create a complete HTML document and give it&lt;br /&gt;
the name dataset &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.ovr&amp;lt;/font&amp;gt;, where dataset is the dataset&lt;br /&gt;
name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information about providing user information, including sample&lt;br /&gt;
HTML files, and a complete description of the search procedure for&lt;br /&gt;
finding the dataset documentation, is to be found in [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Testing the Installation===&lt;br /&gt;
&lt;br /&gt;
It is possible to test the OPeNDAP server to see whether an installation&lt;br /&gt;
has been properly done.  The easiest way to test the installation is&lt;br /&gt;
with a simple Web client like Netscape or Mosaic. (A simple Web client&lt;br /&gt;
called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;geturl&amp;lt;/font&amp;gt; is provided in the OPeNDAP core software which&lt;br /&gt;
can retrieve text from Web servers.  Look for it in the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;(DODS_ROOT)/etc&amp;lt;/font&amp;gt; directory.)&lt;br /&gt;
&lt;br /&gt;
The simplest test is simply to ask for the version of the server, or&lt;br /&gt;
the help message.  The OPeNDAP server uses helper programs to return the&lt;br /&gt;
DAS, DDS, and data.  If you want to test the server itself, and not&lt;br /&gt;
the configuration of the helper programs, the version, help, or info&lt;br /&gt;
services will suffice.  Issuing a URL with &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.ver&amp;lt;/font&amp;gt; on the end will&lt;br /&gt;
return the version information for this server, appending &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.info&amp;lt;/font&amp;gt;&lt;br /&gt;
will return the info message, and issuing a URL with a nonsense suffix&lt;br /&gt;
or &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.help&amp;lt;/font&amp;gt; will return a help message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.ver&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.info&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To return the data attribute structure of a dataset, use a URL such as&lt;br /&gt;
the following: ([[Wiki_Testing/OPeNDAPUserGuideFootNotes|15]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.das&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refer to ([[Wiki_Testing/OPeNDAPUserGuide6| Section 6.4.2]]) for a description of a data attribute&lt;br /&gt;
structure. You can compare the description against what is returned by&lt;br /&gt;
the above URL to test the operation of the OPeNDAP server.&lt;br /&gt;
&lt;br /&gt;
You can use your web client to test the OPeNDAP server by using it to&lt;br /&gt;
submit URLs that address specific services of the client.  See&lt;br /&gt;
([[Wiki_Testing/OPeNDAPUserGuide2| Section 2.2]]) for information about how to request&lt;br /&gt;
individual services.  If any of the services fail, you can check the&lt;br /&gt;
list of helper programs in ([[Wiki_Testing/OPeNDAPUserGuide5| Section 5.1.1]]) to find&lt;br /&gt;
out which is missing.  From the web browser, you can access all the&lt;br /&gt;
OPeNDAP services, except the (binary) data service.  However, if all the&lt;br /&gt;
others work, you can be relatively assured that one will, too.&lt;br /&gt;
&lt;br /&gt;
Using the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.html&amp;lt;/font&amp;gt; suffix produces the \ifh, providing a&lt;br /&gt;
forms-based interface with which a user can query the dataset using a&lt;br /&gt;
simple web browser.  There&amp;#039;s more about the \ifh in&lt;br /&gt;
([[Wiki_Testing/OPeNDAPUserGuide3| Chapter 3]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Displaying Information to the OPeNDAP User==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OPeNDAP contains a system that allows an OPeNDAP server a degree of control over the user&amp;#039;s graphic user&lt;br /&gt;
interface (GUI).  This system runs the&lt;br /&gt;
system progress indicator, that displays to the user the status of a&lt;br /&gt;
pending data request. However, a server may also use the GUI interface&lt;br /&gt;
to display messages to the user, such as error messages, and even to&lt;br /&gt;
query the user for information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===GUI Architecture===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since OPeNDAP is built inside a data access API, and since the&lt;br /&gt;
application program that has become the OPeNDAP client was presumably not&lt;br /&gt;
built with network I/O in mind, an OPeNDAP client will typically not do&lt;br /&gt;
any processing at all while it awaits a return message from a data&lt;br /&gt;
request. Any communication that must happen between the OPeNDAP software&lt;br /&gt;
and the user must occur without the involvement of the application&lt;br /&gt;
program that has invoked the OPeNDAP software. To avoid this limitation,&lt;br /&gt;
OPeNDAP starts up a GUI manager sub-process. This sub-process can&lt;br /&gt;
receive data from the OPeNDAP core software, and can operate the user&amp;#039;s&lt;br /&gt;
graphical user interface.   &lt;br /&gt;
&lt;br /&gt;
The operation of the GUI manager is illustrated in&lt;br /&gt;
[[:Image:wish.gif|figure 5.3.1]].  As seen in the figure, the client&lt;br /&gt;
application can usually control the user&amp;#039;s screen, but during a data&lt;br /&gt;
request, this communication is suspended. Until the request returns&lt;br /&gt;
control to the client application, messages returned from the OPeNDAP&lt;br /&gt;
server can be displayed to the user by passing them to the GUI manager&lt;br /&gt;
sub-process, who can display them in a window to the user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:wish.gif|actual size]] &lt;br /&gt;
&lt;br /&gt;
The Architecture of an OPeNDAP Client GUI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The GUI manager in \OPDversion uses a Tcl/Tk interpreter (the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;wish&amp;lt;/font&amp;gt; program is the default) to interpret messages from the&lt;br /&gt;
server. These messages usually contain Tcl programs to display&lt;br /&gt;
information to the user. However, the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;wish&amp;lt;/font&amp;gt; interpreter can also&lt;br /&gt;
be sent programs to query the user for more information, or draw&lt;br /&gt;
little rabbits on the screen or any other graphic function the server&lt;br /&gt;
needs to have displayed to the user. See Tcl and the Tk&lt;br /&gt;
Toolkit~\citel{osterhout:tcl} for more information about Tcl.&lt;br /&gt;
&lt;br /&gt;
By default, the GUI manager initializes by running the Tcl programs in&lt;br /&gt;
the files &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;dods_gui.tcl&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;error.tcl&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;progress.tcl&amp;lt;/font&amp;gt;.&lt;br /&gt;
(These are stored in &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/etc&amp;lt;/font&amp;gt;.) Server commands to the&lt;br /&gt;
GUI manager can use the functions defined in these files. Note also&lt;br /&gt;
that the user may be using a &amp;quot;safe&amp;quot; Tcl interpreter, with a&lt;br /&gt;
restricted subset of the usual array of Tcl commands available to it.&lt;br /&gt;
The user can control these features of the operation of the GUI by&lt;br /&gt;
changing several environment variables.  These are described in&lt;br /&gt;
([http://www &amp;lt;cite&amp;gt; opd-client,environment&amp;lt;/cite&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A server will use the features of the GUI manager to display error&lt;br /&gt;
messages to the user. A server may also use the GUI to query a user to&lt;br /&gt;
correct whatever condition caused the error. For example, if a user has&lt;br /&gt;
misspelled some part of a constraint expression in a URL submitted to a&lt;br /&gt;
server, the server can send the constraint expression back to the user in&lt;br /&gt;
an edit window, with instructions to fix it. The user can edit the&lt;br /&gt;
expression, and send it back, allowing the server to proceed without&lt;br /&gt;
submitting a new request. Consult the client and server toolkit manual&lt;br /&gt;
for more information about the \class{Error} object on this subject.&lt;br /&gt;
&lt;br /&gt;
==Building OPeNDAP Data Servers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Though servers are included in the OPeNDAP core software, some&lt;br /&gt;
users may wish to write their own OPeNDAP data servers. The architecture&lt;br /&gt;
of the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server and the OPeNDAP core software make this a&lt;br /&gt;
relatively simple task.&lt;br /&gt;
&lt;br /&gt;
A user may wish to write his or her own OPeNDAP server for any or all of&lt;br /&gt;
the following reasons:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The data to be served may be stored in a format not compatible&lt;br /&gt;
with one of the existing OPeNDAP servers.&lt;br /&gt;
*The data may be arranged in a fashion that allows a user to&lt;br /&gt;
optimize the access of those data by rewriting the service programs.&lt;br /&gt;
*The user may wish to provide ancillary data to OPeNDAP clients not&lt;br /&gt;
anticipated by the writers of the servers available.&lt;br /&gt;
&lt;br /&gt;
The design of the OPeNDAP library make the task a relatively simple one&lt;br /&gt;
for a programmer already familiar with the data access API to be used.&lt;br /&gt;
Also, though the servers provided with the OPeNDAP core software are&lt;br /&gt;
written in C++, they may be written in any language from which the&lt;br /&gt;
OPeNDAP libraries may be called.&lt;br /&gt;
&lt;br /&gt;
Once it is invoked, a CGI program scoops up whatever input is going to&lt;br /&gt;
the standard input stream of the Web server (&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt;) that invoked it.&lt;br /&gt;
Further, the standard output of the CGI is piped directly to the WWW&lt;br /&gt;
library, which sends it directly back to the requesting client. This means&lt;br /&gt;
that the CGI program itself need only read its input from standard input&lt;br /&gt;
and write its output to standard output.&lt;br /&gt;
&lt;br /&gt;
Most of the task of writing a server, then, consists of reading the data&lt;br /&gt;
with the data access API and loading it into the OPeNDAP classes. Method&lt;br /&gt;
functions defined for each class make it simple to output the data so that&lt;br /&gt;
it may be sent back to the requesting client.&lt;br /&gt;
Refer to [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;] for specific information about the classes and the&lt;br /&gt;
facilities of the OPeNDAP core software, and instructions about how to&lt;br /&gt;
write a new server.&lt;br /&gt;
==Installing an OPeNDAP Server==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the task of installing an OPeNDAP server consists of getting the&lt;br /&gt;
required Web server installed and running. The intricacies of this&lt;br /&gt;
task, and the variety of available Web servers make this task beyond&lt;br /&gt;
the scope of this guide. Proceed with the following steps only after&lt;br /&gt;
the Web server itself is operational.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installing the OPeNDAP CGI programs and the data to be served is a&lt;br /&gt;
 relatively simple operation. After&lt;br /&gt;
installing the OPeNDAP source tree and building the software, (See&lt;br /&gt;
[[Wiki_Testing/OPeNDAPUserGuideAppendix|Appendix]]), the user need only copy the CGI program from the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;etc&amp;lt;/font&amp;gt; directory in the OPeNDAP source tree (&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;(DODS_ROOT)/etc&amp;lt;/font&amp;gt;)&lt;br /&gt;
to one of the directories where the Web server expects to find its CGI&lt;br /&gt;
programs. The exact name of this directory is an implementation detail&lt;br /&gt;
of the Web server itself.&lt;br /&gt;
&lt;br /&gt;
The service programs used by the CGI are generally kept in the same&lt;br /&gt;
directory as the CGI itself, although this can be changed by modifying&lt;br /&gt;
the OPeNDAP CGI dispatch script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The server programs come with release notes and installation&lt;br /&gt;
notes, in files &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;README&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;INSTALL&amp;lt;/font&amp;gt;, among others.  These&lt;br /&gt;
will be found in the distribution directories for the particular&lt;br /&gt;
server.  For example, the documentation for the JGOFS server will be&lt;br /&gt;
found in &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/src/http/jg-dods&amp;lt;/font&amp;gt;.  See [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;] for&lt;br /&gt;
additional information about server documentation.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing the CGI program and the services, the data to be&lt;br /&gt;
provided must be put in some location where it may be served to&lt;br /&gt;
clients. Again, the location of the data depends on the configuration&lt;br /&gt;
of the Web server and the API used by the CGI services. Most often,&lt;br /&gt;
data that is served by a Web server is kept in the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;&lt;br /&gt;
directory, the exact pathname of which is specified in the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt;.configuration file. A server may also be enabled to search&lt;br /&gt;
a user&amp;#039;s home directory tree or may follow links from the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;&lt;br /&gt;
directory (if the server is enabled to follow symbolic links). There&lt;br /&gt;
may be yet other options provided by the specific server used in a&lt;br /&gt;
particular installation, so there is really no way to avoid consulting&lt;br /&gt;
the configuration instructions of the Web server.&lt;br /&gt;
&lt;br /&gt;
As noted, the location of the data depends not only on the&lt;br /&gt;
configuration of the Web server, but also on the API used to access&lt;br /&gt;
the data requested.  For example, the netCDF server simply&lt;br /&gt;
stores data in a path relative to the working directory of the CGI&lt;br /&gt;
program, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;htdocs&amp;lt;/font&amp;gt;, while the JGOFS server uses its data&lt;br /&gt;
dictionary to specify the location of its data. Refer to the specific&lt;br /&gt;
installation notes for each API for more information about the&lt;br /&gt;
location of the data.&lt;br /&gt;
&lt;br /&gt;
===Configuring the Server===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The issues of server configuration depend to a large extent on the&lt;br /&gt;
particular server in question.  The OPeNDAP server for JGOFS data is&lt;br /&gt;
configured differently than the OPeNDAP server for netCDF data.  Each&lt;br /&gt;
server comes with its own installation and configuration instructions.&lt;br /&gt;
These can be found in a file called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;INSTALL&amp;lt;/font&amp;gt; in the distribution&lt;br /&gt;
directory for the server.  The server distribution directories are in&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/src&amp;lt;/font&amp;gt;.  Here is a checklist of items that need to be&lt;br /&gt;
attended in order to install any OPeNDAP server:  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Is the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server configured to execute CGI programs?&lt;br /&gt;
*Are the main CGI and subsidiary CGI programs installed in the&lt;br /&gt;
server&amp;#039;s CGI directory?  For the netCDF API, these will be called&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nph-nc&amp;lt;/font&amp;gt;, and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nc_das&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;nc_dds&amp;lt;/font&amp;gt;, and so on.  The&lt;br /&gt;
server CGI&amp;#039;s for other API&amp;#039;s will have comparable names.&lt;br /&gt;
*Is the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;gzip&amp;lt;/font&amp;gt; program installed in the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;PATH&amp;lt;/font&amp;gt; of the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server?  This is used to compress data messages returned&lt;br /&gt;
to the client.&lt;br /&gt;
&lt;br /&gt;
===Constructing the URL===&lt;br /&gt;
&lt;br /&gt;
After a dataset has been installed, and the server programs installed,&lt;br /&gt;
you need to know what its address is.  ([[Wiki_Testing/OPeNDAPUserGuide2|Section 2.1]])&lt;br /&gt;
contains an explanation of the various parts of the OPeNDAP URL,&lt;br /&gt;
including a diagram in figure 2.1.  Refer&lt;br /&gt;
to this section, with a copy of the Web server configuration data&lt;br /&gt;
readily available.  Using the configuration data, you should be able&lt;br /&gt;
to determine the appropriate URL for the data you are serving.&lt;br /&gt;
&lt;br /&gt;
Remember that the web server will have its own definition of the root&lt;br /&gt;
directory for data, and another definition for CGI programs, depending&lt;br /&gt;
on the configuration.&lt;br /&gt;
&lt;br /&gt;
===Documenting Your Data===&lt;br /&gt;
&lt;br /&gt;
OPeNDAP contains provisions for supplying documentation to users about a&lt;br /&gt;
server, and also about the data that server provides.  When a server&lt;br /&gt;
receives an information request (through the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;info&amp;lt;/font&amp;gt; service that&lt;br /&gt;
invokes the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;usage&amp;lt;/font&amp;gt; program), it&lt;br /&gt;
returns to the client an HTML document created from the DAS and DDS of&lt;br /&gt;
the referenced data.  It may also return information about the server,&lt;br /&gt;
and more detail about the dataset.&lt;br /&gt;
&lt;br /&gt;
If you would like to provide more information about a dataset than is&lt;br /&gt;
contained in the DAS and DDS, simply create an HTML document (without&lt;br /&gt;
the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;lt;html&amp;gt;&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/font&amp;gt; tags, which are supplied by the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;info&amp;lt;/font&amp;gt; service), and store it in the same directory as the&lt;br /&gt;
dataset, with a name corresponding to the dataset filename.  For&lt;br /&gt;
example, the datasets &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc1.nc&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc2.nc&amp;lt;/font&amp;gt;, and&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc3.nc&amp;lt;/font&amp;gt; might be documented with a file called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;fnoc.html&amp;lt;/font&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may prefer to override this method of creating documentation and&lt;br /&gt;
simply provide a single, complete HTML document that contains general&lt;br /&gt;
information for the server or for a group of datasets.  For example,&lt;br /&gt;
to force the info server to return a particular HTML document for all&lt;br /&gt;
its datasets, you would create a complete HTML document and give it&lt;br /&gt;
the name dataset &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.ovr&amp;lt;/font&amp;gt;, where dataset is the dataset&lt;br /&gt;
name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information about providing user information, including sample&lt;br /&gt;
HTML files, and a complete description of the search procedure for&lt;br /&gt;
finding the dataset documentation, is to be found in [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Testing the Installation===&lt;br /&gt;
&lt;br /&gt;
It is possible to test the OPeNDAP server to see whether an installation&lt;br /&gt;
has been properly done.  The easiest way to test the installation is&lt;br /&gt;
with a simple Web client like Netscape or Mosaic. (A simple Web client&lt;br /&gt;
called &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;geturl&amp;lt;/font&amp;gt; is provided in the OPeNDAP core software which&lt;br /&gt;
can retrieve text from Web servers.  Look for it in the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;(DODS_ROOT)/etc&amp;lt;/font&amp;gt; directory.)&lt;br /&gt;
&lt;br /&gt;
The simplest test is simply to ask for the version of the server, or&lt;br /&gt;
the help message.  The OPeNDAP server uses helper programs to return the&lt;br /&gt;
DAS, DDS, and data.  If you want to test the server itself, and not&lt;br /&gt;
the configuration of the helper programs, the version, help, or info&lt;br /&gt;
services will suffice.  Issuing a URL with &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.ver&amp;lt;/font&amp;gt; on the end will&lt;br /&gt;
return the version information for this server, appending &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.info&amp;lt;/font&amp;gt;&lt;br /&gt;
will return the info message, and issuing a URL with a nonsense suffix&lt;br /&gt;
or &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.help&amp;lt;/font&amp;gt; will return a help message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.ver&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.info&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To return the data attribute structure of a dataset, use a URL such as&lt;br /&gt;
the following: ([[Wiki_Testing/OPeNDAPUserGuideFootNotes|15]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; geturl http://dods.gso.uri.edu/cgi-bin/nph-nc/data/test.nc.das&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refer to ([[Wiki_Testing/OPeNDAPUserGuide6| Section 6.4.2]]) for a description of a data attribute&lt;br /&gt;
structure. You can compare the description against what is returned by&lt;br /&gt;
the above URL to test the operation of the OPeNDAP server.&lt;br /&gt;
&lt;br /&gt;
You can use your web client to test the OPeNDAP server by using it to&lt;br /&gt;
submit URLs that address specific services of the client.  See&lt;br /&gt;
([[Wiki_Testing/OPeNDAPUserGuide2| Section 2.2]]) for information about how to request&lt;br /&gt;
individual services.  If any of the services fail, you can check the&lt;br /&gt;
list of helper programs in ([[Wiki_Testing/OPeNDAPUserGuide5| Section 5.1.1]]) to find&lt;br /&gt;
out which is missing.  From the web browser, you can access all the&lt;br /&gt;
OPeNDAP services, except the (binary) data service.  However, if all the&lt;br /&gt;
others work, you can be relatively assured that one will, too.&lt;br /&gt;
&lt;br /&gt;
Using the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;.html&amp;lt;/font&amp;gt; suffix produces the \ifh, providing a&lt;br /&gt;
forms-based interface with which a user can query the dataset using a&lt;br /&gt;
simple web browser.  There&amp;#039;s more about the \ifh in&lt;br /&gt;
([[Wiki_Testing/OPeNDAPUserGuide3| Chapter 3]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Displaying Information to the OPeNDAP User==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OPeNDAP contains a system that allows an OPeNDAP server a degree of control over the user&amp;#039;s graphic user&lt;br /&gt;
interface (GUI).  This system runs the&lt;br /&gt;
system progress indicator, that displays to the user the status of a&lt;br /&gt;
pending data request. However, a server may also use the GUI interface&lt;br /&gt;
to display messages to the user, such as error messages, and even to&lt;br /&gt;
query the user for information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===GUI Architecture===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Since OPeNDAP is built inside a data access API, and since the&lt;br /&gt;
application program that has become the OPeNDAP client was presumably not&lt;br /&gt;
built with network I/O in mind, an OPeNDAP client will typically not do&lt;br /&gt;
any processing at all while it awaits a return message from a data&lt;br /&gt;
request. Any communication that must happen between the OPeNDAP software&lt;br /&gt;
and the user must occur without the involvement of the application&lt;br /&gt;
program that has invoked the OPeNDAP software. To avoid this limitation,&lt;br /&gt;
OPeNDAP starts up a GUI manager sub-process. This sub-process can&lt;br /&gt;
receive data from the OPeNDAP core software, and can operate the user&amp;#039;s&lt;br /&gt;
graphical user interface.   &lt;br /&gt;
&lt;br /&gt;
The operation of the GUI manager is illustrated in&lt;br /&gt;
[[:Image:wish.gif|figure 5.3.1]].  As seen in the figure, the client&lt;br /&gt;
application can usually control the user&amp;#039;s screen, but during a data&lt;br /&gt;
request, this communication is suspended. Until the request returns&lt;br /&gt;
control to the client application, messages returned from the OPeNDAP&lt;br /&gt;
server can be displayed to the user by passing them to the GUI manager&lt;br /&gt;
sub-process, who can display them in a window to the user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:wish.gif|actual size]] &lt;br /&gt;
&lt;br /&gt;
The Architecture of an OPeNDAP Client GUI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The GUI manager in \OPDversion uses a Tcl/Tk interpreter (the&lt;br /&gt;
&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;wish&amp;lt;/font&amp;gt; program is the default) to interpret messages from the&lt;br /&gt;
server. These messages usually contain Tcl programs to display&lt;br /&gt;
information to the user. However, the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;wish&amp;lt;/font&amp;gt; interpreter can also&lt;br /&gt;
be sent programs to query the user for more information, or draw&lt;br /&gt;
little rabbits on the screen or any other graphic function the server&lt;br /&gt;
needs to have displayed to the user. See Tcl and the Tk&lt;br /&gt;
Toolkit~\citel{osterhout:tcl} for more information about Tcl.&lt;br /&gt;
&lt;br /&gt;
By default, the GUI manager initializes by running the Tcl programs in&lt;br /&gt;
the files &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;dods_gui.tcl&amp;lt;/font&amp;gt;, &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;error.tcl&amp;lt;/font&amp;gt; and &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;progress.tcl&amp;lt;/font&amp;gt;.&lt;br /&gt;
(These are stored in &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;&amp;amp;#36;DODS_ROOT/etc&amp;lt;/font&amp;gt;.) Server commands to the&lt;br /&gt;
GUI manager can use the functions defined in these files. Note also&lt;br /&gt;
that the user may be using a &amp;quot;safe&amp;quot; Tcl interpreter, with a&lt;br /&gt;
restricted subset of the usual array of Tcl commands available to it.&lt;br /&gt;
The user can control these features of the operation of the GUI by&lt;br /&gt;
changing several environment variables.  These are described in&lt;br /&gt;
([http://www &amp;lt;cite&amp;gt; opd-client,environment&amp;lt;/cite&amp;gt;]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A server will use the features of the GUI manager to display error&lt;br /&gt;
messages to the user. A server may also use the GUI to query a user to&lt;br /&gt;
correct whatever condition caused the error. For example, if a user has&lt;br /&gt;
misspelled some part of a constraint expression in a URL submitted to a&lt;br /&gt;
server, the server can send the constraint expression back to the user in&lt;br /&gt;
an edit window, with instructions to fix it. The user can edit the&lt;br /&gt;
expression, and send it back, allowing the server to proceed without&lt;br /&gt;
submitting a new request. Consult the client and server toolkit manual&lt;br /&gt;
for more information about the \class{Error} object on this subject.&lt;br /&gt;
&lt;br /&gt;
==Building OPeNDAP Data Servers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Though servers are included in the OPeNDAP core software, some&lt;br /&gt;
users may wish to write their own OPeNDAP data servers. The architecture&lt;br /&gt;
of the &amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt; server and the OPeNDAP core software make this a&lt;br /&gt;
relatively simple task.&lt;br /&gt;
&lt;br /&gt;
A user may wish to write his or her own OPeNDAP server for any or all of&lt;br /&gt;
the following reasons:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The data to be served may be stored in a format not compatible&lt;br /&gt;
with one of the existing OPeNDAP servers.&lt;br /&gt;
*The data may be arranged in a fashion that allows a user to&lt;br /&gt;
optimize the access of those data by rewriting the service programs.&lt;br /&gt;
*The user may wish to provide ancillary data to OPeNDAP clients not&lt;br /&gt;
anticipated by the writers of the servers available.&lt;br /&gt;
&lt;br /&gt;
The design of the OPeNDAP library make the task a relatively simple one&lt;br /&gt;
for a programmer already familiar with the data access API to be used.&lt;br /&gt;
Also, though the servers provided with the OPeNDAP core software are&lt;br /&gt;
written in C++, they may be written in any language from which the&lt;br /&gt;
OPeNDAP libraries may be called.&lt;br /&gt;
&lt;br /&gt;
Once it is invoked, a CGI program scoops up whatever input is going to&lt;br /&gt;
the standard input stream of the Web server (&amp;lt;font color=&amp;#039;green&amp;#039;&amp;gt;httpd&amp;lt;/font&amp;gt;) that invoked it.&lt;br /&gt;
Further, the standard output of the CGI is piped directly to the WWW&lt;br /&gt;
library, which sends it directly back to the requesting client. This means&lt;br /&gt;
that the CGI program itself need only read its input from standard input&lt;br /&gt;
and write its output to standard output.&lt;br /&gt;
&lt;br /&gt;
Most of the task of writing a server, then, consists of reading the data&lt;br /&gt;
with the data access API and loading it into the OPeNDAP classes. Method&lt;br /&gt;
functions defined for each class make it simple to output the data so that&lt;br /&gt;
it may be sent back to the requesting client.&lt;br /&gt;
Refer to [http://www.opendap.org/support/docs.html/api/pguide-html/&amp;lt;cite&amp;gt;The OPeNDAP Programmer&amp;#039;s Guide&amp;lt;/cite&amp;gt;] for specific information about the classes and the&lt;br /&gt;
facilities of the OPeNDAP core software, and instructions about how to&lt;br /&gt;
write a new server.&lt;/div&gt;</summary>
		<author><name>Yuan</name></author>
	</entry>
</feed>