.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="quisp_home.html">
<img src="img/quisp2.gif" border=0><br><small>quick server pages</a> &nbsp; &nbsp; </td></tr>
<td>
.>>

.TH FAQ TDH "16-FEB-2005   TDH scg@jax.org" 

.SH Frequently asked questions


.LP
\fBHow can I tell what QUISP version I am running?\fR
.IP \0
Use \fCquisputil -ver\fR.  Within a script the \fC@QUISP_VERSION\fR variable contains the version number.
SHSQL and QUISP use the same version number.
If you're using \fCquisp_pl\fR, \fC@PLVERSION\fR contains the ploticus version number
(after the \fC#endgraphic\fR statement).

.ig >>
<br><br>
.>>
.LP
\fBWhat about installation instructions, troubleshooting tips, and support?\fR
.IP \0
.ig >>
<a href="support.html">
.>>
\0Check here.
.ig >>
</a>
.>>


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

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

.ig >>
<br><br>
.>>
.LP
\fBIs there a way to connect QUISP page scripts with another SQL database such as MySQL?\fR
.IP \0
This is discussed
.ig >>
<a href="otherdb.html">
.>>
\0here.
.ig >>
</a>
.>>

.ig >>
<br><br>
.>>
.LP
\fBQUISP seems like a nice package, but I'm concerned that eventually I'll run into something
that I'm unable to do, a crippling bug, or some other limitation.\fR
.IP \0
QUISP is certainly a simpler package than mainstream fullblown systems and the inevitable trade-off
is in functionality and performance.  But why expect a single program to do everything including
the kitchen sink? When I run into something QUISP can't do by itself the first thing I consider is 
invoking an external program that can do the desired work, capturing the results using \fC#shell\fR
(the performance hit is minimal, unless this is done many times repeatedly).
Another option is writing a custom function in C (this is fairly easy to do).  As for other limitations, 
this must be decided based on individual project parameters.  Some working limitations are summarized
.ig >>
<a href="specs.html">
.>>
\0here.
.ig >>
</a>
.>>
In my own experience the existing parameters are generally sufficient; where they're not,
limits can sometimes be raised by modifying a parameter in a source code header file and rebuilding.
It seems likely that large, performance-critical or enterprise-critical projects will likely not
consider QUISP anyway for other reasons, such as IT standards compliance.
With regard to bugs, QUISP/SHSQL has been powering a medium-duty production system which I maintain,
for several years now and things are working smoothly.  I intend to do what I can to address problems 
that are reported to me.

.ig >>
<br><br>
.>>
.LP
\fBHow difficult would it be to port a QUISP/SHSQL web site to PHP/MySQL or similar?\fR
.IP \0
This would involve a thorough review and some rewriting.
While flow-of-control logic would likely be similar between PHP and QUISP page scripts,
the syntaxes and function libraries are quite different.  QUISP includes SHSQL, which 
resembles standard SQL for basic constructs... but all embedded SQL would need to be reviewed
with some revision likely.  The QUISP/SHSQL data is in whitespace-delimited ascii form,
which can be easily moved into other databases if necessary (convert spaces to tabs, and
convert embedded underscores to spaces).

.ig >>
<br><br>
.>>
.LP
\fBAre there security issues involved when updating a database using a CGI-based system such as QUISP?\fR
.IP \0
Known security issues are discussed
.ig >>
<a href="security.html">
.>>
\0here.
.ig >>
</a>
.>>

.ig >>
<br><br>
.>>
.LP
\fBCan QUISP be used with javascript, XML, or other client-side languages instead of, or embedded with, HTML?
.IP \0
Yes, QUISP markup can be used with any content.  The QUISP markup determines what content will be sent to the 
browser client.


.ig >>
<br><br>
.>>
.LP
\fBHow can I get uniform font and background color on all my pages?\fR
.IP \0
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>
.>>
.LP
\fBHow can I set some variables that will be available to all pages?\fR
.IP \0
By having all pages include a common preliminary or header file.  Another way is to use \fCvarvalue\fR
in your config file.

.ig >>
<br><br>
.>>
.LP
\fBHow can I keep a log of all web hits?\fR
.IP \0
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>
.>>
.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 \0
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>
.>>
.LP
\fBI need some math functions that aren't listed in the QUISP functions manual page.\fR
.IP \0
You can add in your own "C" functions by modifying \fCcustom.c\fR and rebuilding.


.ig >>
<br><br>
.>>
.LP
\fBWhat's the best way to work with dates?\fR
.IP \0
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>
.>>
.LP
\fBHow can I set up user access control?  I want only certain users to be able to update data.\fR
.IP \0
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. 
.ig >>
<a href="restricting.html">
.>>
\0More discussion.
.ig >>
</a>
.>>


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

.ig >>
<br><br>
.>>
.LP
\fBWhy should I keep two separate QUISP versions, one graphics-enabled and one not?\fR
.IP \0
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="quisp_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>
.>>
