This week was relatively short, as the end of the week was the Eid Fitri holiday yet the week was so jammed with so many things needed to be accomplished. Like the past week the tasks were kind of unrelated to each other but eventually all of them are related to the main big project.
Temporary path files:
My first task of this week was to adjust or modify the current code so that all the transient operation will take place in temporary paths files. Previously the code was written in such way that all the transient files (the compilation files, extracted object file … etc ) will be stored in the Approot directory of the project but now I have Adjusted the code so all the transient operation happen in random named directory and only the final working versions of the files will be stored in the user directory in the Approot.
Changing from Cookies to parameters:
The system first relied on the “cookies” as a project identifier but since using cookies means that the user will only be able to work in one project at time in his browser (not be able to have multi-tabs) we have to change from cookies to some other things. At first I started adjusting the code so the “key” or the project identifier of each user project is passed to the backend as part of the pathInfo. This required me to add some function to process the pathInfo every time with every request and to extract the “key” from it. This actually worked very fine but I was told later by Dr. Shawn that the way I extracted could lead to some security holes. **
So at the end the method was changed so the “key” is now sent as a parameter with every request. What was holding me back from using this method was simply that some of our request are sent using put method which I thought is unable to accommodate any parameter in the url but apparently I was wrong as Witty function “getParameter()”was able to extract the parameter from the request url.
Previously all the user working code will simply disappear if he/she mistakenly refresh the page. This was simply because the latest user code was not copied to the file the page loads.
Adjusting the code so that the latest working code (free from syntax errors) will be written and saved and loaded whenever a refresh takes place.
Testing the system:
Plus working on all of that, I had also to test the whole system with its backend to make sure that the Verilog modules that were created last week are working fine. Moreover since we made a lot of changes in the code I had to make sure that everything is working in consistency with each other (the creation of the top module and the ucf file). Testing the new modules went pretty well but with so many errors that sometimes occurred because of some syntax errors in the design or the inconsistency of the names of the nets between the UCF file and the top module. (This really does piss me off as sometimes just small errors can lead to whole design synthesis failure). Finally I want to point out to one thing here: The necessity of adding notifying functionality with the errors that come from the backend. (As getting the design to fail get synthesized is a possibility).
Finally I want to conclude with two of the morals I get throughout my internship and specially in the last week. First one as Dr. Shawn always says nothing goes straight and worked from the first time although you think that you are aware of all sides of it. The second one is that NEVER underestimate the small things “tasks” as when the unite they will literally screw you OVER loolz 😀
That is all for this week 😀 Eid Mubark to all of you !!