Monday, 6 December 2010

Week14

12/Dec/2010

Finished my documents. Hope everything is fine. Once again, I checked the consistency of them and I also need to check other people's documents. It will be bit hard. I didn't think about this consistency when I started to make the first document so it may be bit confusing structure and format.



11/Dec/2010


Matching with requirement list, I added some UMLs which are still not yet created. I realized only reminder function is just as same as the beginning. We discussed a lot and lot but indeed, the system turned to be more simple than what we thought at the beginning. it might be because of the change requirements or might be we thought too much. Anyway finalizing (or updating) UMLs is almost done. A few days to go.



10/Dec/2010


After one day off, Back to the documentation. We struggled to create UMLs about 2 months ago because of misunderstanding of the concept, however, this time I feel it not such hard to create during updating them. One this is the application has already done. And also I understand the concept now. Hope I can finish it by tomorrow and spend some time to review and modify all document's consistency.


8/Dec/2010


Updating Proposal and Planning is almost done. What is left is updating Analysis. I have been trying to learn Rational Rose but not so easy and what is worst is the use case diagrams I created last Monday seem to be gone. It was OK yesterday but today it's got some problem and not showing. The reason may be because I didn't use the package so the same name of actor and use case repeated again and again. I have just got the idea of this package last night and I was trying to use. Anyway fortunately I already got copies of the diagrams on the document.



7/Dec/2010


In the morning, I couldn't focus on my work because of the visitors. For the afternoon final presentation, some of my classmates were preparing the server in our room. I don't know why the server is in our room but it is anyway. And as I anticipated, it was noisy and I needed to help them. I could have relax time in the afternoon meeting because we already had acceptance for our project last week but still it was good time to learn from others. What I have leant from this regular meeting was the time management. No one cares how much each team spend though we cared. So it often ended up with lack of time. Not only students, but also more likely tutors come late and even some of the team still need to present, when time's up, gone. This meeting is the chance to present what we have learn and share it within fellows and tutors. By managing time, all should have shared I believe. I have almost finish three of documents I need to create. I asked my supervisor to have a look on my documents what I have created so far and I was advised to modify some parts. I don't know the importance of the document in academic point of view but he teaches us the proper industrial way of documentation. It's quite good chance to know it.



6/Dec/2010

I am learning Rational Rose software because our supervisor advised us. It is the graphical modelling tool just like MS Visio but not easy to understand. For example, I still cannot fin boundary to use in use case. It should be there but not. Swimlane for activity diagram also. Someone knows? So at the moment I use rectangular shapes for them but it's definitely wrong.  And also I have been researching how to export ERD from MS SQL server to any other application. Because we have got more than 40 tables and if we view it with SQL server, they are too small to see. Or do I need to transfer it manually?

Tuesday, 30 November 2010

Week13

5/Dec/2010


To update document is not such easy. Some of the functions of the system has changed based on the client's requirements but been there without updating. I cannot remember why "Contact Person" was the one of the individual function. It's not more than one part of the client details. Why it was stand alone? This kind of weird things are everywhere. It is good chance to know how to write documents but these are all for academic purpose. I wonder what is the documentation in industry? As reference, I would like to see the real ones.



4/Dec/2010

Working on documents. My tasks are project proposal, analysis report and planning report. Honestly I don't like them. But I gotta do. Proposal is almost done already but I need to update it as of the project closing. Analysis document, I need to update some of the UML because they were changed at the end of the project but we didn't update them. Planning report, why we need it in addition to proposal? Anyway, I updated the Gantt chart.



3/Dec/2010


Final presentation day. In the morning, we got problem. One of the two network cards of the server worn out. It seemed everyone tried to make our project so thrilling which we don't want. 10:00am was starting time but fortunately some people were late and we got another 10 minutes and at the very last moment, all fixed. Our final presentation went pretty well and I am quite happy. Though after the presentation we got good reputation from all audience, I made a small and big mistake. It was 10:10am. I started the presentation with the word "Good afternoon!" Oh, god!! Actually I noticed I might say something wrong. Anyway, the system development is over now though there are still some academic documentation left. Thank you my awesome team mates.



2/Dec/2010


Important day before the big day. We planed for the tomorrow's presentation and practised a couple of times. There were small errors which we hadn't realized but solved. When displaying our system on a big screen, I thought "we did well" and am happy with the project. Our supervisor gave us great help, great tips. It' absolutely good experience. One more step to go.




1/Dec/2010


We still keep working on the project for error-free. Basically my part has done already so I help my team mate's page by reforming it. His part is pretty complexed but he understood his code so it may be hard to think unexpected way of use for him. And we all has been worked individually, separately so some parts haven't got consistency still yet. So reforming works pretty well I think. And to see other people's work is quite interesting. I normally use C# code behind but he uses ASP.Net controls. Different ways, different solutions.




30/Nov/2010


Subversion must be really handy software but we don't know how to deal with it. We found many files were not updated and broken. We needed to prepare for the final presentation but spent full morning to fix the problems. And besides that, there was server problem as well. We were asked to upload our system to server for the final presentation but what the college prepared for us was an empty box. Even OS wasn't there. Through the last three months we have learnt organization skill is important. We didn't have any enough information for this semester so we are in trouble. It seems the college is trying to confuse us.  Anyway because of these reason, the final presentation is postponed to this Friday. Three more days to go.




29/Nov/2010

Last week hopefully. There were three stuff we need to solve in the system. One was the feedback from the last presentation. Auto generate invoice number. Not hard. Done. Second one is the auto complete text box for the client search. I tried to do that but not easy. I spent whole night yesterday. It seemed nearly achieved but something wrong. And finally this morning, I achieved. Good. I couldn't get the reason but after many try with many resources, succeeded. Last one is not solved yet. PDF. Basically ASP.Net works at the web server and controls are the same. But PDF should work at the client side. So that it's not easy. I keep trying tonight. For the tomorrow's final presentation, we got many tips from our supervisor and I need to be the final presenter. So I spent a few hours to think about the structure and what we need to speak tomorrow. Important day. I have to do my best otherwise my team member's effort will be disturbed.

Monday, 22 November 2010

Week12

28/Nov/2010

Had been struggling about the file upload function. When I realized it, it didn't work. What was wrong with it? The cording is really simple. But,,,. After a couple of hours, it solved. Upload panel. When the file upload control is in the upload panel, it doesn't work. Upload panel is quite cool but on the other hand, not easy to manage. I need more research after this project. I finished my testing. Hopefully all work without any error now.


27/Nov/2010


I thought that javascript worked but not. That maximum length one. So I used another one.
<script language="javascript" type="text/javascript">
    function textMaxLength(obj, maxLength, evt) {
        var charCode = (evt.which) ? evt.which : event.keyCode
        var max = maxLength - 0;
        var text = obj.value;
        if (text.length > max) {
            obj.value = text.substring(0, max);
            return false;
        }
        else {
            return true;
        }
    }
</script>
 <asp:TextBox ID="txtPostal_Note" runat="server" Width="200px" ValidationGroup="Address"
  onkeypress="return textMaxLength(this, '200', event);"
 onkeyup="return textMaxLength(this, '200', event);"></asp:TextBox>
 
 Works OK. I set 15 maximum length for phone numbers but wait. How much needed for international call? +81(123)12 1234...better make it 20. Small things are everywhere.



26/Nov/2010


To decide the maximum length of each textbox is also not easy for novices. I don't know how much will the users expect for each textbox. What I think it's enough may not be enough for the others. Symbols. I don't think any cities or countries have special characters like #$%&@ and I thought the same for the company name but, my team mate said "What about $2 shop?". Oh, no. Better allow them to use it.



25/Nov/2010


Realized testing is much harder than cording. Headache. But at the same time, I also understand testing is pretty important. To avoid error I need to put constraint on every page, which means validators, on the other hands, to think about usability, constraint is not good. To distinguish both sides is hard for the novices like me. Cause never known about the real industrial way.  Not only the testing plan, I also need to update the other documents. Headache.



24/Nov/2010


Started testing. Need to work on a lot of pages. I know testing is important but even though it's not welcome. Basically we test the user inputs. I thought we coded many validators to avoid error but not enough maybe. Our system is not for the public so not such a big problem maybe but for improving the knowledge, SQL injection like stuff is needed to be considered also. In the event page, I used jQuery which means tags are HTML not ASP.Net. How to validate textboxes? I found javascript.
    <script language="javascript" type="text/javascript">
    <!--
        function imposeMaxLength(Object, MaxLen) {
            return (Object.value.length <= MaxLen);
        }
    -->
    </script>

<textarea id="Description" onkeypress="return imposeMaxLength(this, 300);">
I cannot validate the textarea by the property so this javascript works pretty well.



23/Nov/2010


First presentation in the last 3 weeks. My part is almost done. As far as I tested, no error would be there. We all knew that presentation was pretty important. We could get how much we could had achieved from the tutors feedback. Show time. I thought I should had written speech script but indeed no time to do that. During this semester, not only brushing up my IT skill but also presentation skill is needed to be improved. My goal. Even I couldn't spend much time for preparation I demonstrated how to make a presentation in my head. Ok. Not bad. It took more than 30min to explain all our system not including feedback time. I was ready to listen to the people's barb. I knew they normally ask many questions which is not easy to answer but it never happened. It was a touch anticlimactic. As it describes, CRM is not easy to understand, I understood. Anyway, we've cleared the first hurdle. I need to work on the documentation basically this week.



22/Nov/2010

Going well the unit testing and refining. I solved the problem of the event calendar. The point was casting. to insert the user ID, I used the data type integer as it was. Syntax point of view, I couldn't see any problem but when I changed it into string and the just before ADO.Net, converting it to integer, it worked. Good to know the point. Not only these, to deal with data types is kind of headache. And another headache I got. To merge the source code of three, I committed my source to SVN software but by some mistake, my latest source was gone to somewhere. So depressed. Didn't feel like doing anything. Good thing was I had backup of it this morning. So only 3 hours work has gone. I had kept backup before I committed before that, but not this time. It happens. However because of the instability of my laptop these days, I got backup. Anyway, I need to redo the three hours task. 

Monday, 15 November 2010

Week11

21/Nov/2010


Once I stop my part and help my team mate part. Payment. Because of his previous background, it should be hard for him to understand the need but he is doing quite well I think. Functionality is already there almost, only thing is the format. And also validations. Let's get started!,,,but I couldn't see anything on my laptop. I mean blackout! The machine is moving with small sound but with black screen. The reason is the out of the back light. It seems I need to replace whole the LCD and it will cost hundreds. Oh, god. It's not a time. I borrow the monitor from my team mate and work on this. A few weeks left to go.



20/Nov/2010


Testing my part one by one. Mostly what I need to check is validations and formatting like date and time. But I have too many text boxes to check. It's kind of headache even I know these stuff are necessary for error free programme. Basically I use ASP.Net validators and AJAX toolkit ones. I know this system so what is the difficulty is to imagine what the user may input unexpected data. Validation group is also important. For example, I have nearly 10 groups in the client details page because the page is for editing. Hope it's all OK.



19/Nov/2010


Sometimes, people makes silly mistake so do I. Clicking on the select link button of GridView but nothing happened. Why? I tried and tried again and again. Same. Getting tired and sicked of that. I don't know why but after an hour I found the GridView hadn't got selectedindexchenged action property. Maybe by mistake it had gone somewhere. I finished the client-side pages with basic function and committed my source to the Subversion server. This is the time for system testing. First, event page didn't show any event from the database. Oh, no. Why? I fixed and fixed again and again. It looks like the system feeling problem just like human.We need to fix all problem and make the system error free by next Monday.



18/Nov/2010


Going well on Client-side page. On the top page, there was a few things to display. So empty. So I got advice from my team mate and tried to implement RSS feed from IRD. ASP.Net has add-on RSS reader. So downloaded it. Looks good now. Next page is for sending email. Contact us. I have coded this function before but without attachment function. This time with it as an option. Also not so hard but need research and test again and again.


17/Nov/2010


Finally, once I finished my parts. Still there should be some small stuff left but hopefully all works well. Then needed to go on the client-side page. How much we could do without changing anything of the database? There will be the three points. Client information, Upcoming due date and Contact us. Started to create the pages. Only two pages but goo for refreshing from one month long work of client pages.


16/Nov/2010

My parts have been nearly finished but not. The pages themselves are quite general stuff but so complexed. And I want to make them 100% as my thought. We skipped the presentation this week again. Not ready to be there. Hopefully next week. I should say definitely. We use subversion software to keep track of our source code. It's quite handy. We don't need to merge three of our source code. We just need to commit the source code to the server.


15/Nov/2010

On the way to modify event calendar to make it personal for accountant, I noticed one thing. Description of event was not displayed. How comes? Though some setting was changed when I transferred it from the prototype, When? I checked all setting. Seemed OK. And I reviewed old versions. All fine. How comes? After a few hours, I got it. Because of the browser. Recently to check UI, I have been using Opera because of the fastest speed but some javascript is not compatible with it. Wast of time. And I tried to understand the classes of the calendar. I needed to retreive user id from cookie and store it in the database. Again I spent many hours to do it. It wasn't so simple because of the complexity of the structure. There are not only aspx and cs. I needed to pass value to the class file. Anyway, all solved by changing scope and creating class. It seemed to be the last client meeting. Because Mr.Client hasn't used any system, it might be hard for him to understand how much the system could do. Not enough time anyway.

Tuesday, 9 November 2010

Week10

14/Nov/2010

I thought ADO.Net can retrieve SELECT results and RETURN@parameter as the same time but it seems not possible. I may need to research more but the thing is no time. I changed the cording and now it's fine. My team mate has been working on invoice and payment sections and these are the functions of unclear to us. We tried to think the business logic behind and I suggested him what I thought it was the best. However, today I got it much more clear than ever. Sorry, my friend. I should have gotten it much earlier. This is because of the lack of experience. I always appreciate  your effort and I like your challenge but I always put you into not correct direction. Hope you understand me.


13/Nov/2010


New problem. DATETIME! To calculate working hours, I need to subtract EndTime from StartTime. User type these 2 times in textboxes and I thought I was going to code in C#. After researched a lot, I gave up. No error but no result.
        DateTime StartTime = DateTime.Parse(txtStartTime.Text);
        DateTime EndTime = DateTime.Parse(txtEndTime.Text);
        TimeSpan difference = EndTime.Subtract(StartTime);
        string TotalHours = new DateTime(difference.Ticks).ToString("hh:mm");
        lblTotalHours.Text = TotalHours;

This should work but not. So I changed to do this with SQL and succeeded!
        DATEDIFF(MINUTE,@StartTime,@EndTime)
Took to much time for this. I gotta go.



12/Nov/2010


I tried to solve the NULL value problem by creating the method but I couldn't. The difficulty is because of the data reader. So instead of that, I used like
                if (!rdr.IsDBNull(6)) { lblRemarks.Text = rdr.GetString(6); }
for each control. It works. I also couldn't solve the problem of something easy. Again SQL statement. Or I can say ADO.Net. I struggled with that through the last night. SQL itself is simple INSERT and UPDATE stuff. But I couldn't find the reason. This morning, with clear mind, I got it. Post back stuff. Post back ADO.Net wasn't in the if(!isPostBack) scope. OK.



11/Nov/2010

I have been feeling uncomfortable with Address table. In the current structure, whenever the user change any little thing, the data is deactivated and new one is inserted. The reason is to keep track of the address history. One address record consists of 3 addresses. There is no one correct answer there and it is too late to change but it is uncomfortable for me. I am still struggling with dealing with NULL value. I may be too lazy to code long but it may be the time to do it.


10/Nov/2010


I am struggling with sql statement. Suppose if there is a form to fill in and information will be stored in 3 different tables like Client, Address and Contact. And if all textbox are filled with something, it's fine but if some of them are left as blank, NULL values are trouble to deal with. I researched and what I found is several kinds of JOIN keywords.
  • (INNER)JOIN: Return rows when there is at least one match in both tables
  • LEFT (OUTER) JOIN: Return all rows from the left table, even if there are no matches in the right table
  • RIGHT (OUTER) JOIN: Return all rows from the right table, even if there are no matches in the left table
  • FULL (OUTER) JOIN: Return rows when there is a match in one of the tables
It's done but another problem is about IF statement in sql. I want to make it like
IF(@parameter !=NULL)
BEGIN
INSERT INTO....
END
This doesn't work well. I need to solve it ASAP!!



9/Nov/2010


Today was the first time we didn't present anything in a meeting. Nothing to show honestly. Some teams will finish their project in time so will not. My team will or will not? I prioritized functions. What we must finish? Mostly, we need to do anyway it seems. I keep working on my part. My part is all related to client table. Which means the core. And the core table structure has changed from the prototype. No stored procedure works as it was. it will take time.


8/Nov/2010

Implementation phase started. Still many things to be solved we have but anyway it's started. And we got one request (or order?) from our supervisor. "Finish the project by the next week presentation". One week to go? Gee. Never thought like that. Anyway we will try.  Also we discussed what we should do with the different types of the user's authorization. And the answer was to use ASP.Net membership function. Gotta research quick and well.

Monday, 1 November 2010

Week9

7/Nov/2010

How to differentiate normal accountant and super accountant? Normal accountant can view only page group A but super accountant can view page group A and B. There are user roles there. One option is in master pages, checking sessions of user name and user type. Another option is using ASP.Net membership function. We never used it before so we need to research more. It means that we need time. Though we don't have enough time, it's still worth trying. See how it works. I am working on reporting function. Researched a lot but still cannot get good solution.


6/Nov/2010

Working on the final database structure.  More think, more confused. There is not one correct answer. But I want to know it! Anyway there are 34 tables in the database at the moment. And moved back to the client page. I need to design the create new client form. What will be the good solution? How should I display it? And I got another question. There are two different type of users in our client's page. One is normal accountant. Another one is super user or we could say system administrator user. The super user will assign the normal accountant to the particular client as to Mr. Client idea. So who will create clients? Only super users? It's not handy. We need to ask Mr.Client again.


5/Nov/2010


Reviewed yesterday's client meeting. By updating ERD, tried to make all thing clear.Some parts get more simple like Case page but some parts get more complexed like Event page. Also we need to think what will be the most appropriate database structure around client. Normalize? or De-normalize? Unfortunately it's my area to work on. Anyway we need to complete the database during this weekend.



4/Nov/2010


Ajax control toolkit is great and easy. Some of them are similar with jQuery but cording is not required for most of the controls. I try to keep study them. One big issue has solved. Logout function. What we needed was only three line of C# cording.
           Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
           Response.Cache.SetCacheability(HttpCacheability.NoCache);
           Response.Cache.SetNoStore();

Now our login function is really secured. We had forth and second client meeting. Forth with our client and second with Mr.Client. Actually it was very nice meeting ever. By demonstrating our prototype system, he could understand and imagine what exactly the system would be. He looked happy with our work and finally we could get his real requirement. However some functionalities are bit different from what he wants so we need to re-design the system and the database structure. And it seems he often use Microsoft Outlook so I better study it.


3/Nov/2010


I know it is not a good idea as a project manager not to update the Gantt chart for long time but I haven' t done that. Today finally I decided to update. Using weekly journal, I updated it day by day. I use MS Project but it has got too many functions so it's quite hard to manage it. This application is not for ease, for stress it seems. Anyway, now it's updated.


2/Nov/2010


I tried to solve something. My friend asked me something. I helped him/her. Looked on my monitor back and found "What am I doing?". There is always dilemma there. I am always happy to help friends. I can learn a lot of thing by teaching. On the other hand, I loose myself. Or I can say I have problem of my concentration. Anyway, I need to improve my part. By improving my page, I try to think how can I use Ajex technology on my page. What will be the industrial way? My team mate has been struggling how to code for perfect logout function. Browser's back button is problem. There are two ways. Allow back or not at all even during logging in. I asked my brother who works as a programmer in Japan. He replied me quickly. First we should disable cache on  the browser. And in every member page, needed to check session. So that during logging in, even browser hasn't cache, as long as having session available, it will regenerate page again as if it is back to the previous page. Logical. How to do that?



1/Nov/2010

I have been thinking how to solve the problem of the database. One client may have many contact channels and address. So we created individual table for both of them. Normalization. But, to think about inserting and retrieving the data, in cording point of view, it's not efficient enough at all. Suppose the client has three phone numbers and one fax number and two email addresses. To insert these data, I need to write same things again and again. After we discussed with our supervisor, we decided to de-normalize them. In database point of view, it may not good but we also need to care about the performance of the system.It was good to discuss. I again updated the data dictionary and the ERD. Time to code full function of the client pages.

Monday, 25 October 2010

Week8

31/Oct/2010

Since the day we started this project, today was the first day we didn't gather for the project. All member had private schedule. My one was the Auckland marathon. It was my first try even it was the quarter marathon.  After the event, I finished updating the data dictionary and ERD. And back to work on the client page again but my right knee aches and I cannot concentrate on it. 



30/Oct/2010

Updating the data dictionary ERD. It takes more time than what I thought. And on the way, getting complicated. Gee. Client and Case pages updating is another complex. I could realize many thing I need to fix and update but how? Validation is one of them. Haven't got enough time!



29/Oct/2010

I installed Ajax control toolkit in the Visual Studio for implementing Ajax calendar control. It was really easy. Now in the system user do not need to input any date manually. He/she only needs to select the date from the calendar if needed to insert the date. During the team meeting, we had one issue. At the moment, we have ClientContact table to store all the contact channels one by one but when we think about retrieving the data, this way is not so handy.  What we should do? We need to solve it.



28/10/2010

I didn't like ASP.Net web controls because I couldn't get what is exactly going on in the controls so basically I tried to use c# coding. But I realized anyway they are handy and I changed my way to try to use ASP.Net controls as much as possible. What I have learnt in ASP.Net class last semester was like c# coding but when I started to use web controls this time, I thought that these are the ones I needed to learn.There are many properties I need to know and many ASP.Net tags should use. Today I learnt a lot by helping my friend. How to pass the parameter from one drop down list to another? Once it's done by using auto post back function, another problem came up. How to avoid  reloading the page when using auto post back? Ajax controls are the ones. Good stuff!



27/Oct/2010

I started to work on the document. During three months I need to complete at least 4 documents. Three are for the team and one is for myself. Basically these kind of document must be for the client but in this programme, all the document is for academic purpose. So when I read through the templates, I could easily feel weird. Yes, it's so weird! There is too many duplication section there. College says this is the real project for the real industry. Is it? Anyway I tried to finish a planning document but some sections are not understandable for me. If there is standards and procedures part there, what should I write?To whom shall I write these documents? Tough.



26/Oct/2010

Even I spent all night what I could achieve was a small stuff. I am getting used to ASP.Net controls and coding but not enough at all. I am interested more in JavaScript and jQuery now. We quickly made presentation script and performed it in the regular meeting. I thought we would get tough feedback again but indeed we had very silent feedback. Pity. Week 5 already and we really haven't got time. Still need to implement real product and to test it,,,headache again.



25/Oct/2010

Long weekend. Long struggling. To code with ASP.Net is so tough for me. Web controls may be handy but I cannot see how they work in a box from outside. Also there is a code behind there so I need to consider the connection between aspx and C#. Last week I divided tasks within my team but I realized it wasn't a good idea. For example, there is person in charge of stored procedures and another one works on interface. Former person cannot recognize what sort of parameters needed in a stored procedure and what would be a result needed. My mistake. Sorry friends. I provided new tasks for my team mates.  I still work on client and case functions. Struggling, really. Anyway I gotta do it.