Prospectus for your Midterm Project When: Due Friday, October 15 by 10am What: (1) a short summary of what you expect to accomplish Account Management System - database record types - 'account', 'sale', 'table', ... example data - an 'account' record will look like ... reports - mock up what sorts of reports you'll generate ... Cryptanalyst's Tool Kit - a method for selecting candidate partial substitution codes, ... a method forscoring partial candidate substitution codes, ... tools for using histograms, dictionary searches, partial matches ... Dynamic Web Content - given a directory containing images/photos produce, ... given a list of the names of image files, ... produce an HTML document containing a table, ... ... (2) a description of each command that you plan to write Account Management System - db_select - takes ... arguments, ... db_join - takes ... arguments, ... db_report - takes ... arguments, ... ... Cryptanalyst's Tool Kit - crypt_codes - takes ... arguments, ..., generates ... crypt_search - takes ... arguments, ..., prints ... crypt_score - takes ... arguments, ..., returns ... ... Dynamic Web Content - web_album - takes ... arguments, ..., generates ... web_thumbs - takes as an argument a directory ... web_table - takes ... arguments, ..., creates a table ... ... (3) the directory structure for the project ./README - THIS FILE ./doc/manual.txt - description of software and how to use it ./bin/README - annotated listing of all shell scripts ... - the shell scripts writen for the project ... ./tmp/... - directory for demonstrating your project ... ./data/README - annotated listing of all the data files ... - sample messages to encrypt and decrypt for ... the Cryptanalyst's Tool Kit, sample images ... for the Dynamic Web Content project, examples ... of file-based database records to show off ... the Account Management System project Suggestions: Define the basic core parts of the project - the most essential functions - and then describe additional features. You can start by building this minimal core and then add features as time permits. Professionals take 'snapshots' of their code from time to time; then if things get all snarled up they can revert back to a snapshot when things were working. Taking a snapshot can be as simple as just copying the directory tree that contains your work. % cp -R project backup Use the resources that we've provided you: Basic Unix Commands and Utilities - commands.txt The C-Shell Scripting Language - scripts.txt Some Tips on Debugging Scripts - debug.txt These files are in /u/tld/tmp/exercises/doc/. Also, make use of what you've learned to take full advantage of these resources. For example, suppose that you want to find the documentation on 'sed'; you might use 'grep' as follows: % grep -n "sed" ./doc/*.txt doc/commands.txt:10: 6. The 'sed' Utility doc/commands.txt:185: sed 's/PATTERN/REPLACEMENT/g' ... The '-n' option causes 'sed' to print out line numbers. You can open the file 'commands.txt' and then either search for 'sed' (use CTRL-s for interactive searching) or go directly to the line by typing: META-x then 'goto-line' followed by a carriage return and at the prompt enter the number of the line you want to look at. If you're trying to find an exercise that dealt with a particular command, e.g., 'sort', then the following might come in handy: % grep -n "sort" ./04/*/*/exercises.txt ./04/09/20/exercises.txt:43: # eliminate repeated lines in a sorted ./04/09/20/exercises.txt:62: % cat text.txt | sort -k1,1nr -k2 .. Finally remember that all the commands are in 'bin' directories; so here's how you might search for the name of a command that we used in class: % ls ./04/*/*/bin/* | grep "sorthat" ./04/09/27/bin/sorthat