quisp: faq

quick server pages
| Manual page for FAQ(TDH)

## Frequently asked questions

How can I tell what QUISP version I am running?

  Use `quisputil -ver`. Within a script the `@QUISP_VERSION` variable contains the version number.`` SHSQL and QUISP use the same version number.`` If you're using `quisp_pl`, `@PLVERSION` contains the ploticus version number (after the `#endgraphic` statement).``

What about installation instructions, troubleshooting tips, and support?

  Check here.``

Is 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.

  Yes. The quisp `Makefile` can be set to build without SHSQL.``

Is it possible to use SHSQLas a standalone API (ie. without QUISP)?

  Yes. Just go into the `./sqlsrc` and do a `make`, and `libshsql.a` only will be built.``

Is there a way to connect QUISP page scripts with another SQL database such as MySQL?

  This is discussed here.``

QUISP 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.

  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 `#shell` (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 here.`` 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.``

How difficult would it be to port a QUISP/SHSQL web site to PHP/MySQL or similar?

  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).``

Are there security issues involved when updating a database using a CGI-based system such as QUISP?

  Known security issues are discussed here.``

Can QUISP be used with javascript, XML, or other client-side languages instead of, or embedded with, HTML?``

  Yes, QUISP markup can be used with any content. The QUISP markup determines what content will be sent to the browser client.``

How can I get uniform font and background color on all my pages?

  All pages in a project can `#include` 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.``

How can I set some variables that will be available to all pages?

  By having all pages include a common preliminary or header file. Another way is to use `varvalue` in your config file.``

How can I keep a log of all web hits?

  There's no automatic logging feature, however you can easily write log entries from your header file. The #write manual page includes an example that does this.``

I 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.``

  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 `#include` to share template code between pages, and pass parameters by way of variables (which are always global).``

I need some math functions that aren't listed in the QUISP functions manual page.

  You can add in your own "C" functions by modifying `custom.c` and rebuilding.``

What's the best way to work with dates?

  The most flexible and compact way to store dates is to convert user input to julian values for storage, as done in the `people3` demo. Another option is to use a date notation that sorts naturally, such as `yyyy/mm/dd`. QUISP includes a number of functions for working with dates.``

How can I set up user access control? I want only certain users to be able to update data.

  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 `IDENTITY` command for setting user identity for purposes of record locking and transaction identification. More discussion.``

How do I set up to do dynamic data displays and plots?

  Use quisp_pl, which is quisp with embedded ploticus graphics. The graphics man page describes the process.``

Why should I keep two separate QUISP versions, one graphics-enabled and one not?

  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.``
  quick server pages
  Copyright Steve Grubb

Markup created by unroff 1.0, `` `` February 16, 2005.