.ig >>
<STYLE TYPE="text/css">
<!--
        A:link{text-decoration:none}
        A:visited{text-decoration:none}
        A:active{text-decoration:none}
        OL,UL,P,BODY,TD,TR,TH,FORM { font-family: arial,helvetica,sans-serif;; font-size:small; color: #333333; }

        H1 { font-size: x-large; font-family: arial,helvetica,sans-serif; }
        H2 { font-size: large; font-family: arial,helvetica,sans-serif; }
        H3 { font-size: medium; font-family: arial,helvetica,sans-serif; }
        H4 { font-size: small; font-family: arial,helvetica,sans-serif; }
-->
</STYLE>
<title>quisp: faq</title>
<body bgcolor=99cc99 vlink=0000FF>
<br>
<br>
<center>
<table cellpadding=2 bgcolor=FFFFFF width=550 ><tr>
<td align=right><a href="handbook_home.html">
<img src="img/quisp2.gif" border=0><br><small>quick server pages</a> &nbsp; &nbsp; </td></tr>
<td>
.>>

.TH FAQ TDH "08-MAR-2004   TDH scg@jax.org" 

.SH Frequently asked questions
.LP
See the 
.ig >>
<a href="installing.html">
.>>
\0install page
.ig >>
</a>
.>>
for initial set up.
.LP
Send questions to author Steve Grubb at \fCscg@jax.org\fR.



.ig >>
<br><br><br>
.>>
.LP
\fBWhat are the security issues involved when using something like QUISP as a CGI?\fR
.IP
Known security issues are discussed
.ig >>
<a href="security.html">
.>>
\0here.
.ig >>
</a>
.>>

.ig >>
<br><br><br>
.>>
.LP
\fBHow can I tell what QUISP version I am running?\fR
.IP
Use \fCquisp_util -ver\fR, or within a script,
display the contents of the variable \fC@QUISP_VERSION\fR.

.ig >>
<br><br><br>
.>>
.LP
\fBIs it possible to use QUISP without shsql?  I just need a cgi interface
that can append entries to a couple of flat files.\fR
.IP
Yes.  The quisp \fCMakefile\fR can be set to build without shsql.

.ig >>
<br><br><br>
.>>
.LP
\fBIs it possible to use shsql as an API, without QUISP?\fR
.IP
Yes.  Just go into the \fC./sqlsrc\fR and do a \fCmake\fR, and \fClibshsql.a\fR
only will be built.

.ig >>
<br><br><br>
.>>
.LP
\fBHow can I get uniform font and background color on all my pages?\fR
.IP
All pages in a project can \fC#include\fR
a common header file.  This allows style, layout, etc. to be standardized
across all pages, and also facilitates usage logging, and setting of
"global" variables that are to be available to all pages.

.ig >>
<br><br><br>
.>>
.LP
\fBHow can I set some variables that will be available to all pages?\fR
.IP
See above.  Another option for setting constants is to use \fCvarvalue:\fR
in your project config file.

.ig >>
<br><br><br>
.>>
.LP
\fBHow can I make it keep a hit log?\fR
.IP
There's no automatic logging feature, however you can easily write log
entries from your header file.  The
.ig >>
<a href="io.html">
.>>
\0#write
.ig >>
</a>
.>>
manual page includes an example that does this.


.ig >>
<br><br><br>
.>>
.LP
\fBI have some QUISP script code that needs to be shared by several different pages.
There doesn't seem to be a way to organize script code into procedures so that it can be
shared.
.IP
There is no provision for creating procedures containing QUISP script code (you can
write your own built-in functions in C, see below).
You can, however, use \fC#include\fR to share template code between pages, and pass parameters
by way of variables (which are always global).

.ig >>
<br><br><br>
.>>
.LP
\fBI need some math functions that aren't listed in the QUISP functions manual page.\fR
.IP
You can add in your own "C" functions by modifying \fCcustom.c\fR and rebuilding.


.ig >>
<br><br><br>
.>>
.LP
\fBWhat's the best way to work with dates?\fR
.IP
The most flexible and compact way to store dates is to convert user input to julian values
for storage, as done in the \fCpeople3\fR demo.  Another option is to use a date
notation that sorts naturally, such as \fCyyyy/mm/dd\fR.  QUISP includes a number of
.ig >>
<a href="functions.html#dates">
.>>
\0functions
.ig >>
</a>
.>>
for working with dates.

.ig >>
<br><br><br>
.>>
.LP
\fBHow can I set up user access control?  I want only certain users to be able to update data.\fR
.IP
With QUISP, all user access control is enforced by the page scripts (the middleware).
shsql does not use logins/password, although it does have the \fCIDENTITY\fR command
for setting user identity for purposes of record locking and transaction identification. 
Require your privileged users to enter a password, using an \fC<input type=password>\fR
form field.  In the form target page, use the entered password to set a cookie.
Then, on all restricted access pages (such as data entry forms), get the cookie and
check its validity using a database look-up.  If the password contained in the cookie
is invalid, do an \fC#exit\fR.


.ig >>
<br><br><br>
.>>
.LP
\fBHow do I set up to do dynamic data displays and plots?\fR
.IP
Build QUISP with the embedded ploticus graphics option.  The
.ig >>
<a href="graphic.html#setup">
.>>
\0graphics man page
.ig >>
</a>
.>>
describes the process.

.ig >>
<br><br><br>
.>>
.LP
\fBWhy should I keep two separate QUISP versions, one graphics-enabled and one not?\fR
.IP
Mainly because the graphics-enabled executable is more than twice the size of the other,
so you may get faster performance by using the small standard one for pages that don't 
contain graphics.


.ig >>
<br>
<br>
</td></tr>
<td align=right>
<a href="handbook_home.html">
<img src="img/quisp2.gif" border=0></a><br>
<small>quick server pages &nbsp; &nbsp;<br>
<a href="Copyright.html">Copyright Steve Grubb</a> &nbsp; &nbsp;
</td></tr>
</table>
.>>
