This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
haas:spring2018:unix:projects:upf1 [2018/02/26 12:50] – wedge | haas:spring2018:unix:projects:upf1 [2018/03/17 12:59] (current) – [Process] wedge | ||
---|---|---|---|
Line 8: | Line 8: | ||
=====Errata===== | =====Errata===== | ||
- | * any bugfixes or project updates will be posted here | + | * revision: unittools now all list **-I** argument (input delimiter) on help; **hm2Dm** link should also connect correctly (20180308) |
=====Objective===== | =====Objective===== | ||
Line 44: | Line 44: | ||
* unittools-20170201-09.tar.gz | * unittools-20170201-09.tar.gz | ||
- | You would select the " | + | From visual inspection, you would select the " |
+ | |||
+ | Note, however, that visual inspection alone is not good enough for your steps file. New versions may be released, and your steps file needs to obtain the most recent version available. To facilitate this task, the latest and greatest version of unittools will be listed in a file called LATEST (which you should see near the top of the directory index listing). You can make use of this file to assist you in automating the process of determining and downloading the latest version of the unittools tools. | ||
Once those two steps are complete, you can begin on the tasks listed in your **TASK** file. | Once those two steps are complete, you can begin on the tasks listed in your **TASK** file. | ||
Line 58: | Line 60: | ||
* **ft2yd** - convert feet to yards | * **ft2yd** - convert feet to yards | ||
* **hm2dm** - convert hectometers to decimeters | * **hm2dm** - convert hectometers to decimeters | ||
- | * **hm2Dm** - convert hectometers to Decameters | + | * **hm2Dm** - convert hectometers to Decameters |
* **in2cu** - convert inches to cubits | * **in2cu** - convert inches to cubits | ||
* **in2ft** - convert inches to feet | * **in2ft** - convert inches to feet | ||
Line 71: | Line 73: | ||
The tools by default expect input via STDIN, and will output to STDOUT. | The tools by default expect input via STDIN, and will output to STDOUT. | ||
- | These tools have command-line arguments which can alter their default behavior. You may want to review the options and defaults. | + | These tools have command-line arguments which can alter their default behavior. You may want to review the options and defaults |
=====Process===== | =====Process===== | ||
Line 96: | Line 98: | ||
lab46: | lab46: | ||
1.15 ft | 1.15 ft | ||
+ | lab46: | ||
+ | </ | ||
+ | |||
+ | But that's not very optimized. We could instead do something better, like: | ||
+ | |||
+ | <cli> | ||
+ | lab46: | ||
+ | 35.000 cm >> 13.780 in >> 1.148 ft | ||
lab46: | lab46: | ||
</ | </ | ||
Line 111: | Line 121: | ||
</ | </ | ||
- | Basically, each task# | + | Basically, each task# |
=====upf1steps===== | =====upf1steps===== | ||
- | You will once again be creating a steps file that can automate your project. | + | You will once again be creating a steps file that can automate your project |
As in previous projects, **upf1steps** will contain the steps you took from the point of copying the numbers suite and downloading the unittools suite up until the submit step (hint: just run the task#.cli scripts within the steps script). | As in previous projects, **upf1steps** will contain the steps you took from the point of copying the numbers suite and downloading the unittools suite up until the submit step (hint: just run the task#.cli scripts within the steps script). | ||
Line 123: | Line 133: | ||
* your script should not produce ANY STDERR output | * your script should not produce ANY STDERR output | ||
* your script should ONLY produce STDOUT output in conformance with the below stated requirements. Any other output needs to be silenced. | * your script should ONLY produce STDOUT output in conformance with the below stated requirements. Any other output needs to be silenced. | ||
+ | * You will want one unified command-line producing the end result, not separate one-step transitions. The idea is to utilize pipes. | ||
+ | * semi-colons used to separate commands do not constitute one command-line, | ||
* For each task, you'll want to display things as follows: | * For each task, you'll want to display things as follows: | ||
* "Task X conversion chain: CHAIN" | * "Task X conversion chain: CHAIN" | ||
Line 128: | Line 140: | ||
* where CHAIN is the conversion chain output matching the TASK file result requested (ie, you must run your task#.cli script to produce this output). | * where CHAIN is the conversion chain output matching the TASK file result requested (ie, you must run your task#.cli script to produce this output). | ||
* note that the task#.cli output appears on the SAME line as the "Task X conversion chain:" | * note that the task#.cli output appears on the SAME line as the "Task X conversion chain:" | ||
- | * note there is no space between value and unit | + | * there is NO space between value and unit |
For example, a sample output of your **upf1steps** script should appear like follows (but your # values will of course be different based on your individual **TASK** file): | For example, a sample output of your **upf1steps** script should appear like follows (but your # values will of course be different based on your individual **TASK** file): | ||
Line 163: | Line 175: | ||
< | < | ||
78: | 78: | ||
- | *: | + | *: |
- | *: | + | *: |
- | *: | + | *: |
- | *: | + | *: |
- | *:upf1:task0.cli produces correct result [2/2] | + | *:upf1:upf1steps only displays |
- | *: | + | *:upf1:upf1steps resiliently creates local project directory |
- | *:upf1:task0.cli uses specified input_unit | + | *:upf1:upf1steps copies public dir data with absolute path [4/4] |
- | *:upf1:task0.cli solution in specified output_unit | + | *:upf1:upf1steps makes clear, effective use of wildcards |
- | *:upf1:task0.cli solution using specified precision | + | *:upf1:upf1steps defines and uses custom variables |
- | *:upf1:task0.cli solution using specified delimiter [1/1] | + | *:upf1:upf1steps |
- | *: | + | *:upf1:upf1steps |
- | *: | + | *:upf1:upf1steps automates the task when run [4/4] |
- | *:upf1:task1.cli | + | *:upf1:all files are organized, clear, and easy to read [4/4] |
- | *:upf1:task1.cli solution in specified output_unit [2/2] | + | *:upf1:task#.cli files output |
- | *: | + | *:upf1:task#.cli files output |
- | *: | + | *:upf1:task#.cli files output only correct |
- | *: | + | *:upf1:task#.cli files output |
- | *: | + | *:upf1:task#.cli files display no STDERR output |
- | *: | + | *:upf1:task#.cli files have solution |
- | *: | + | *:upf1:task#.cli files only contain the solution |
- | *:upf1:task2.cli solution using specified precision | + | |
- | *:upf1:task2.cli solution using specified delimiter | + | |
- | *:upf1:task3.cli produces correct result [2/2] | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *:upf1:task3.cli solution | + | |
- | *:upf1:task4.cli produces | + | |
- | *:upf1:task4.cli uses specified input_value [1/1] | + | |
- | *: | + | |
- | *: | + | |
- | *:upf1:task4.cli solution using specified precision | + | |
- | *:upf1:task4.cli solution | + | |
- | *:upf1:task5.cli produces correct result [2/2] | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
- | *: | + | |
</ | </ | ||
+ | |||
+ | Additionally: | ||
+ | * Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction | ||
+ | * Solutions not utilizing indentation to promote scope and clarity will be subject to a 25% overall deduction |