User Tools

Site Tools


haas:spring2016:unix:projects:gfo0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
haas:spring2016:unix:projects:gfo0 [2016/04/12 12:26] – created wedgehaas:spring2016:unix:projects:gfo0 [2016/04/12 13:27] (current) – [Useful tools] wedge
Line 50: Line 50:
 <code> <code>
     [UNIX] 019 021 026 028 033 035 040 042 054 056 061 063 068 070 075 077 082 084 096 098      [UNIX] 019 021 026 028 033 035 040 042 054 056 061 063 068 070 075 077 082 084 096 098 
-[dburns12] 019 021 026 033 035 040 042 054 063 068 070 075 077 084 096 098+[username] 019 021 026 033 035 040 042 054 063 068 070 075 077 084 096 098
 </code> </code>
  
Line 150: Line 150:
  
 <cli> <cli>
-lab46:~/src/unix/gfo0$ ./mygrade+lab46:~/src/unix/gfo0$ ./mygrade.sh
 =============================================================================== ===============================================================================
-UNIX      uxi0 pbx0 cus0 pbx1 arc0 wpa0 udr0 sfp0 bns prjct+attnd+jrnal= result+UNIX      uxi0 pbx0 cus0 pbx1 arc0 wpa0 udr0 sfp0 bns prjct+ptcpn+jrnal= result
 =============================================================================== ===============================================================================
 username: 100  86   91   79   99      0    83     23/36+28/28+31/36= 82/100 username: 100  86   91   79   99      0    83     23/36+28/28+31/36= 82/100
Line 159: Line 159:
 </cli> </cli>
  
 +NOTE that in the above, "username" should actually display YOUR USERNAME.
 +
 +And note that the actual scores are left justified underneath the column heading listing the project name.
 +====Bonus====
 +As a bonus opportunity, I offer you the following:
 +
 +Despite how much automation I may have on the backend of things to generate all this data, there is still a considerable amount of manual interaction on my part (as much as I'd love to entirely script the process, evaluation still very much requires that human element), and that means there's always the chance of errors creeping in.
 +
 +I will consider for bonus points the implementation of a "check" argument, which if provided on your script's command-line, will perform necessary tallys and sanity checks (for example, if a project is out of 39 points, do all your values check out; similarly, do all the line-by-line point items add up to the reported total you have?), and nicely displays any inconsistencies (so that you can report them to me for potential correction).
 +
 +=====Useful tools=====
 +By no means an exhaustive nor implied list, you may want to ensure familiarity with the following tools/concepts when performing this project:
 +
 +  * cat(1)
 +  * bc(1)
 +  * printf(1)
 +  * echo(1)
 +  * grep(1)
 +  * head(1)
 +  * tail(1)
 +  * sed(1)
 +  * cut(1)
 +  * tr(1)
 +  * wc(1)
 +  * I/O redirection (found in bash(1))
 +  * variables/variable expansion (found in bash(1))
 +  * command expansion (found in bash(1))
 +  * selection structures and evaluation facilities
 +    * if statements (found in bash(1))
 +    * <nowiki>[</nowiki>(1)
 +  * loops (found in bash(1))
 +  * arrays (found in bash(1))
 +
 +Often times related and potentially useful commands you may want to know about can be found in the "SEE ALSO" section near the bottom of many manual pages.
 +
 +There are some sample scripts available for viewing in the **scripts/** subdirectory of the class public directory.
 +
 +====bash debugging====
 +If you add a **-x** argument to bash (in the shabang, or on the command-line if running your script that way), it will be immensely more verbose, reporting more precisely on its actions. This can prove most useful when trying to figure out various problems, be it syntax errors in your script or spurious logic errors.
 +=====Submission=====
 +Successful completion will result in the following criteria being met:
 +
 +  * When all is said and done, you will submit your script, which:
 +    * runs the **status** tool and creates a snapshot of its output. Have your script process this snapshot vs. running **status** 20 million times during the run of your script (the data may change over time, but it isn't going to change that fast- cache the output to improve performance).
 +    * should be an organized presentation of the requested information as specified above.
 +      * spacing is important. I want to see column justification just like in my examples above.
 +    * is functional, displaying no errors of any kind.
 +    * utilizes shell logic prodominantly
 +      * for those who can, do **not** write a C program that does it all; that doesn't mean you cannot write small programs to assist with pieces of the process though
 +      * use the various pattern matchers, filters, and text manipulation tools we've been playing with all semester (as well as new ones you find as you look for ways of performing this task).
 +    * is WELL and CONSISTENTLY COMMENTED.
 +      * and I don't just want to see "this is an if statement"-style comments. I want to see explanations of why you are doing things, especially the central processes.
 +    * is CONSISTENTLY INDENTED according to logic level (don't have everything riding the left margin, indent code inside if statments, loops, functions, etc.)
 +      * see how this bulleted list is consistent and indented?
 +    * no line exceeds 80 characters in width.
 +    * the script should entirely automate the process; all you should have to do is run the script, and it will do all the work to output the necessary information.
 +
 +====Submit====
 +Please submit as follows:
 +
 +<cli>
 +lab46:~/src/unix/gfo0$ submit unix gfo0 mygrade.sh
 +Submitting unix project "gfo0":
 +    -> mygrade.sh(OK)
 +
 +SUCCESSFULLY SUBMITTED
 +lab46:~/src/unix/gfo0$ 
 +</cli>
haas/spring2016/unix/projects/gfo0.1460464019.txt.gz · Last modified: 2016/04/12 12:26 by wedge