Computers and Programming

Statistical Software:     R   (Old Splus tips)     WinBUGS     SAS     Stata     SPSS     Maple     ggobi     XGobi     iPlots for R

General: Essential Software Skills for Research Scientists   Computing Books at Free Book Centre       Unix (incl. Emacs)     Linux     LaTex     Home Networking

Programming:   Guide to Programming Languages       C/C++     MPI (Parallel computing)     Java     Visual Basic     Perl     HTML     Postscript     Python     Lua
Free programming for beginners: Small Basic     Webucator Tutorials     Visual Studio Express (Basic, C++, C#)   (Learn VB   Learn VB (MS)   VB Graphics Tutorial)
Visual Basic for Microsoft Office applications

Specialty Plotting:  Cart: cartogram software     Highcharts: pre-made graphs on a web page     Shiny: custom interactive graphics on a web page

Utilities:   Simple version control: archive (commented csh script file)    My useful R functions    An R program for comparing files when using double data entry

Tutorials:   Automated Culling of Information from the Internet     UCLA tutorials on many topics     Matlab Tutorial     Mathematica Tutorials
Subsetting Large Datasets: Two methods
Powerpoint posters: How To     At CMU    Print at FedEx (link to free software)

Other Info:   Regular Expressions   (Cheatsheet)     File Extensions   (Wikipedia list)   Problems with computers doing math: Numerical Nonsense


Security


More Links


Web-based Datasets Using CGI: cgiwrite/cgiread/cgisetup/cgihtml

Here is a simple system for constructing databases from user input on web forms (tested on Linux):

  1. Get your system administrator to set up a "cgi" directory for you.
  2. Make a web form on any web page in any public_html directory. Buttons, radio buttons, checkboxes and textboxes are all allowed (max. of 26 can be changed in cgiwrite.c). See instructions here. A simple example is here (use view page source to examine this). The minimal requirement is a form with a post method with action equal to the compiled C program "cgiwrite" (including a full URL showing its location in your CGI directory), and with at least one input field, plus a hidden field called "dbname" with value equal to the name of the (text) database filename which will hold the users input. (You can have as many forms as you like for different projects.)
  3. Make sure the C program "cgiwrite" is in your cgi directory. The PC/Linux version is here. The source file cgiwrite.c is only needed if you want to make changes or work on a different platform.
  4. For security purposes you must either run cgisetup or do the following:
    1. In your cgi directory create a file called dbPermissions.txt and be sure that others in your group can read from it, but not write to it (chmod g+r dbPermissions.txt and chmod g-w dbPermissions.txt).
    2. For each project add one line to this file consisting of the name of the text data file (dbname, above) that will hold users' input, then a space, then a number (no commas) that is the maximum number of bytes allowed for this file. This will prevent an evil user from overloading your file system.
    3. For each new dbname, create the file using touch mydbname where mydbname is the actual file name you defined. Then allow users to write to it with chmod g+w mydbname. You may want to also execute the Unix command chmod g-r mydbname to keep users from reading other users' input.
  5. For convenience, you probably want to put cgiread and cgiread.R in your cgi directory. The first of these is a c-shell file, so you may need to execute chmod u+x cgiread and rehash the first time you download it. The second file contains R commands used by the first file. Together these files convert the text database into a .csv file that can be loaded into R or Excel. Just execute cgiread mydbname and you will get a message telling you that a corresponding .csv file was created.
  6. Optionally, you can convert the stored database directly to a web page. This is done by running cgihtml (which runs cgihtml.R behind the scenes). The Linux runstring to convert the current database to html is something like:
     cgihtml foobar.db myresults.html mytemplate.html 
    where the command is run from your cgi directory and "foobar.db" stands for your cgiwrite database, "myresults.html" is the name of the html file to be created, and "mytemplate.html" is a template for creating the html file. The template is any html code that somewhere has a line containing only "TABLE" at the place where you want the table to appear.
    Note: be sure that cgihtml is executable (chmod u+x cgihtml)
    Note: if the database has a field called "category", the table will be sorted by that field.
    Note: it is convenient to setup a csh script file containing the full cgihtml command, then add a line to the unix "cron" facility using crontab to have the html file automatically updated from the database by running the script file at periodic intervals.


All links active 5/15/2014. Please report missing links to


up Back to My Home Page