Dear Sir,
http://lucrosol.com/node/40 <-- Updated with new flow graphic at bottom of page on 1/16/2017 1:30:40 PM
The above link describes the project. Please review the page and confirm you are comfortable with the scope.
http://fc.lucrosol.com/index_SiteExample.html
Note: Please, approach this project as a partner, a trusted partner, who will assist us with their Perl expertise. We know the end user and "usage" of this very specific program. We believe a strong programmer is a valuable asset and intend on treating them as such.
This (above) link is the initial version of a UI. We know the UI may change, knowing users will mis-use and mis-understand a program this link starts the discussion of:
How do you present the user with a minimalist UI
Permit some flexibility when a user begins to define his rules
Pre-filter usage and input with the goal of Quality Control and error omission
Present the user with a version that is really easy to use
Afford the advanced user options – To a point
Limit the program to specifics in terms of number of fields, character type, delimiters and more as discovery occurs.
We believe the UI is in reasonable shape.
What I would like:
Your firm US dollar estimate (lump sum) of a working alpha version of:
PERL code takes HTML form input of: 1) ASCII file lists of allowable content in designated field, 2) ASCII file listing filename with extension to be checked, 3) submitted rule or definition of delimiter, characters allowed are Alpha, Numeric, or both.
Executes or checks the submitted file against the field rule files & character rules for each position.
Lists mismatches as log file – which is provided to user.
Please direct all questions to me, I will post them to this page in order to keep a record of the issues resolved in one place.
I'm aware you would like to review the Perl code I have to date. I would like present that in the next step where we can better refine the scope, approach and cost of the alpha. My only rationale for not posting the code is to have you engineer your approach without considering how I implemented the initial solution.
In conclusion, please verify your interest by emailing me a firm estimate of a working "Alpha Version" with any conditions, restrictions, guidelines, etc. you would like to include.
Thanks! Greg
January 17 clarifications
1. Is the password login information already dealt with, or do you need me to implement that as well using encryption algorithms?
Answer: No it has not been implemented. But it is not in this alpha scope.
3. Will I be able to log into your server to do the Perl development, or do I need to use mine and then port the code over?
Answer: Yes, programmer may have access to the server in use via FTP.
5. From what I read it seemed to me that you wanted the UI to be recreated at the same time, and not necessarily use the forms that were already present. Is that correct?
Answer: Sorry you “interpreted” that, I must revise any written word that led to that conclusion. While the alpha will required a number of changes to the HTML forms our position is "a very large percentage is usable". As interaction between HTML form and Perl becomes more defined we can address the programmers concerns, or suggestions. We believe the UI will change as the alpha develops, this is a natural and accepted development aspect.
7. Although this is fairly straight forward, there are still a lot of moving parts. Is there a small subset of something you could define that I could work on so I could 1) become more familiar with your requirements, and 2) you could see the quality of work I can do?
Answer: I/we acknowledge scope creep and definition interpretation. If you need more than the help file tab and other materials provided which define the functionality for an alpha version we may not be capable of providing you everything you need to proceed with the level of comfort you require.
===
To get out ahead of the initial questions, the Alpha is a hard bid. After that we believe we’ll have selected our core Perl project developer because that person have worked well to develop alpha. A level of trust has developed and we move into more interactive relationship as we co-develop the beta.
===
The key part is the rules defined by users. A file name has the format (1-9 fields).(extension):
extension: specified alpha letters(e.g. txt, dwg, rvt, dxf, could contain numeric characters, etc)
number of fields: 1-9
each field:
length: 1-9
type: alpha(not case sensitive), numeric, or alpha numeric
value: (optional, not in the form)
for example: length=2, type=alpha, value="AB", means the field is 'AB' only
length=2, type=alpha, value='', means the field can be 'AB', 'AC', 'BC', any two alpha letters.
However, user can define files containing one entry per line. Each file represents a rule. Each rule can be assigned to a field. Each field is checked against the assigned rule file. Each field separated by the delimiter is compared to the file containing legitimate entries for each field in the file being checked. The UI and Help document should indicate this functionality.
=
1Why is the error occurring in the first place?
Answer: Human typing error – or human is adding a feature to track a file difference.
2. Do we really need file names? Could we not store them by sequential number and then have a database generate or keep track of a file name? I know this sounds more complicated at first, but it prevents these sort of errors from happening and makes file name duplication and corruption impossible.
Answer: Yes we need file names this will not change.
3. Are these large files? If they are small, it might be more practical to store the entire file in a database and just skip the file system all together.
Answer: The files to be processed are ASCII and will be small. There are examples in the help section.
4. What is your transnational volume? Is this one or two times being accessed by a few people or something much larger?
Answer: Initial project usage is estimated to be 255 users for 18 months on three day cycles of ten file names in a four groups.
5. Are you trying to build an enterprise product or just looking for something to handle some back office work only for your company?
Answer: Files from 14 sub contractors.
=
What I am seeing is I upload my "file check" files and "files to be checked" files and then it gives me a pass/fail. ...what happens after that is anyone's guess. We need to hammer out work flow and error handling.
Answer: Errors shall be logged. Log files will be provided to users. If no error occurs, i.e. no entries are in log file, that is provided to user.
= Orig Ad
Development of a program generally described as a file syntax checker or validation parser has been started. While limited core code has been created and a first pass at the UI was preformed, an alpha followed by beta needs to occur.
I may need a web programmer as there is a HTML form to execute the Perl code. While we describe this as "a file syntax checker" we’ve been advised that it’s more of a validation tool. Our program should read the contents of a file and verifies whether each line, containing a file name and extension, contains valid data as defined by a rule. We have been advised we might be looking for a BNF tool, Backus normal form. The de facto standard for defining syntax. Most programming languages (like Perl) and many data file formats have a BNF definition. (Thank you Scott)
https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form
We are asking for interested parties to review the current concept, core code, and UI then provide their dollar estimate and schedule for an Alpha release.
A copy of our UI is available for your review as is our core code - upon request.
We would like to complete our alpha ASAP.
Thanks in advance.
= End orig Ad
January 18, 2017
Contract deliverable One
Code takes three arguments. 1) name of file as filename.org. 2) name of file.rul. 3) Positive Integer in form of one thru nine. Another description of the arguments is: filename.ext where filename are valid windows operating system ASCII characters permitted to be used in a filename. A period as the delimiter. Three ASCII characters as the extension (as allowed by Windows OS).
Argument One
This file will contain a list of delimited file names with an extension. One per line. A typical entry would be: “CAT806-1-F12-P1272-WE1-MCCM-HHI.dwg”
A typical file would look like:
EST354-3-F32-P1272-WE2-ACCM-BNA.dwg
GST301-3-F32-P1272-WE2-ACCM-BNA.dwg
NST703-1-F32-P1272-WE2-ACCM-BNA.dwg
OC12-SST531-5-2FB-S0-000-MW-DM.dwg
PRT103-4-F12-P1272-WE1-DCCM-TFS.dwg
Argument Two
Line one of the above file contains:
Seven fields, Seven delimiters defined as six hyphens and one period. Hyphens separate “fields” the period distinguishes the extension.
EST354 Field1
3 Field2
F32 Field3
P1272 Field4
WE2 Field5
ACCM Field6
BNA Field7
Argument Three
A positive integer one through nine. I.E. 1,2,3,4,5,6,7,8,9
Functionality, procedures, methods (what the code does with the arguments).
Code will compare the contents of a specified field, as determined by the integer argument, to any entry in the second argument.
Consider:
Myperlprogram.pl “testmycontent.txt” “validcontent.txt” 3
Myperlprogram.pl is:
#!/usr/bin/perl
# Perl v5.14.2 Last Edit GSR 11/10/2016 7:40:57 PM for Site5 Use
#
# Create subroutine to make directories from ASCII file containing
# a line of text without spaces representing the directories
use strict;
use warnings;
use diagnostics;
use 5.10.1
…
testmycontent.txt is:
EST354-3-F32-P1272-WE2-ACCM-BNA.dwg
GST301-3-F32-P1272-WE2-ACCM-BNA.dwg
NST703-1-F32-P1272-WE2-ACCM-BNA.dwg
OC12-SST531-5-2FB-S0-000-MW-DM.dwg
PRT103-4-F12-P1272-WE1-DCCM-TFS.dwg
validcontent.txtis:
F32
F20
F12
Last argument is:
3
Program will compare third field in each line of testmycontent.txt against any line in validcontent.txt for an exact match. Case insensitive. In the table above line number four has a character “5” in field three. This is a fail event. A message is containing “error detected “ the contents of the line and the position of the field will be written to a log file. If there is no errors a message “Pass” will be written to the log file.
Code processes every line of the file to be processed - BUT – a limit is coded into the program for example, 999 is a hard limit to the number of lines a file can contain as well as the number of entries contained in the second argument.