Welcome

I'm a student and this blogg has been created to keep information on a daily to weekly basis about my project that i am doing to get my Bachelor of Information Technology. This is based on my progress, and a place to put all of my information, not entirely a proper blogg. Though sometimes i feel like i'll be talking to myself... Any ways, enjoy and feel free to comment. If your wondering what this project is and dont want to read every single post, just go to the Proposal link, or any of the "posts worth looking at" below.

Friday, October 10, 2008

10/10 Problems

1 Reflections on Learning (no figures shown)

All significant problems or issues will be discussed in this section. Problems and reflections are categorised by technical, personal and project management.

1.1 Technical

1.1.1 C Sharp & Programming

Because the authors programming skills were at a very low level when the project was started the C Sharp learning curve was quite high. The first step was taking what was known about a familiar language (specifically Visual Basic.NET) and learning how to do the same in C Sharp.

After the basics were known and the application started, a few problems came up with using lists, static variables and global classes. The normal lists were implemented but it was discovered that each user would be using a different set of data. The author talked to a more experienced C Sharp programmer and got answers to all of the confusing aspects of C Sharp and the problems faced. After understanding how to implement the features needed properly implementation carried on.

1.1.2 Web Service

Once the back end service structure was implemented and fake data inserted into the database it was time to create the web service methods. The adding, deleting and editing methods were easy to implemented and worked straight away. However once the author needed to pass a set of data to the interface a wall was hit. It was realised that the author was using the wrong container for storing data temporarily. A dictionary was being used, when a generic list should have been used. Once the dictionaries were changed to lists the .toArray method could be used to pass the list to the interface. The code for sending and retrieving and looping through the array is shown in section 6.1.1.

After the data was getting to the interface the author had to find a way to read the data out into the classes. After researching and getting nowhere an example of how to do this was provided by a technical supervisor of how they read the data out of the array. This was as simple as just grabbing the data from the array and creating a new instance of the wanted class and passing in each record.

1.1.3 Virtual Machine

Originally the virtual machine being used was given 10 Gigabytes space. This quickly filled up to a point where the author was trying to delete unnecessary data; however this couldn’t be done forever. Eventually when no files would save due to lack of space this issue needed to be dealt with properly. This majorly halted development as nothing could be saved and the author wanted to avoid loosing data. After researching the many ways to extend a virtual machines space it was decided to use an application provided by VMware that converts virtual machines and increases their size. So the virtual machine was copied to a new location with 5 more Gigabytes of hard drive space.

1.1.4 Logging In

At one stage logging in did not work any more. Originally the login authentication was based on active directory, but later on it was decided to use the from the internet option. This is safer to choose at this time because it is easy to create and manage users and roles without the complexity of using active directory. After changing the authentication type logging in still did not work. A long error was given, so one part was researched: "[HttpException]: Failed to start monitoring changes to C:\Inetpub\wwwroot because access is denied". After researching similar problems using the internet and trying many fixes, one for this error worked. This was by changing the IIS ASPNET settings to framework 2.0, a very simple error but an easy setting to forget.

1.1.5 JavaScript

The first mapping done was in the client address forms, which the Subgurim control was used for. Using the control made mapping very easy because the JavaScript was created dynamically behind the scenes. Once the author realised that the Subgurim control did not do the type of routing needed, an alternative way of mapping needed to be used. After asking around, and researching the internet on what other people have done with JavaScript and ASP.NET as well as Google Maps and ASP.NET, the Page.ClientScript.RegisterStartupScript method was used (more on this in section 6.2.6).

Once the method of using JavaScript was selected, the difficulty of making it run came up. At first this method was tried using a button which would trigger the JavaScript, however it still needed to be run straight after all of the other logic so that a list of latitude longitude points could be passed to Google. It was soon realised that the easiest way to run the JavaScript where it was needed was to insert the code for the registerstartupscript exactly where it needed to be inserted. So this was placed after the latitude longitude string is completed allowing the correct data to be passed to Google.

1.1.6 Job Paging

If there are enough jobs to be multiple pages it becomes a problem for checking items on multiple pages, as the state of the previous page is not kept (grid view shown in figure 8.1.1) (not shown here). Due to time constraints the easiest option was to extend the amount of records before paging started. In future however, this would be changed to keep the records selected checked.







1.1.7 Database Constraint

Deleting a client address is more complex than deleting a client or user because of the relationship between that database tables. Because the job table has a relationship with the client ID as well as the client address ID, the address ID can’t cascade delete a job when it is deleted because of an error:

“Introducing FOREIGN KEY constraint 'FK_job_clientAddress' on table 'job' may cause cycles or multiple cascade paths.”

Figure 8.1.

Due to time constraints this was not resolved, but would be fixed if the system were to move on from a proof of concept. The tables concerned are shown in Figure 8.1.2. (not shown here)

1.2 Project management

1.2.1 Travelling Salesman

The travelling salesman problem occurs when the most optimised and efficient route is needed between a very large number of locations. The algorithm needed for this calculation would become slower the larger the locations. There are a few algorithms to deal with this problem, however with current technology it is just not possible to quickly calculate on a large scale.

The author had to face the problem of how the routing was going to be done, and how efficient it was going to be. A small amount of time went into looking at this problem, however for this proof of concept a basic brute force algorithm was chosen for simplicity. This was by looping through each location and finding the nearest position until there are no locations left.

1.2.2 Task Management

Due to lack of experience in many of the fields of this project it was very hard to estimate exactly how long any particular task was going to take. It was decided to assign time limits based on how important a task was, for example the implementation stage was given the highest amount of time because of the author’s lack of confidence in programming. At some points the time given was not enough, but not far out enough to cause a panic. If a task couldn’t be completed by the milestone date a detailed summary of what still needed to be completed was put together and tackled straight away during the next milestone.

1.3 Personal

The only personal problem that majorly impacted this project was time management. This is the authors first long term project so it took some time to get used to consecutively putting time into one thing. The amount of hours needed to spend on the project per week was 30-40, which is a lot compared to the assignments previously completed. This problem was never fully resolved, however by spending time putting together time tables, task lists and recording hours spent per week or on a daily basis this skill was vastly improved.

No comments: