<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8640320162062183023</id><updated>2011-07-09T00:53:03.379+08:00</updated><category term='Exercise 10'/><category term='Exercise 24'/><category term='Workshop 6'/><category term='Exercise 26'/><category term='Workshop 2'/><category term='Exercise 3'/><category term='Exercises'/><category term='Exercise 22'/><category term='Exercise 15'/><category term='Exercise 5'/><category term='Exercise 17'/><category term='Workshop'/><category term='Workshop 4'/><category term='Exercise 12'/><category term='Exercise 2'/><category term='Exercise 20'/><category term='Exercise 18'/><category term='Exercise 7'/><category term='Workshop 7'/><category term='Exercise 9'/><category term='Exercise 14'/><category term='Exercise 23'/><category term='Workshop 5'/><category term='Workshop 1'/><category term='Exercise 4'/><category term='Asking and Answering'/><category term='Workshop 3'/><category term='Exercise 21'/><category term='Exercise 25'/><category term='Exercise 1'/><category term='miscATwork'/><category term='Exercise 16'/><category term='Exercise 6'/><category term='Evaluation Report'/><category term='Introducing myself'/><category term='Exercise 13'/><category term='Exercise 11'/><category term='Workshop 8'/><category term='Exercise 8'/><category term='New Starting Point'/><category term='Exercise 19'/><title type='text'>Raymond Tang's Blog</title><subtitle type='html'>ITC594 E-Systems Infrastructure Development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-5815605246907786105</id><published>2009-11-14T07:08:00.004+08:00</published><updated>2009-11-14T07:11:11.391+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Starting Point'/><title type='text'>The new starting point.</title><content type='html'>I am happy to share that I have finished the course. This blog site will stop from updating. Don't worry, I will create the other blog site soon to share other things that may be interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-5815605246907786105?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/5815605246907786105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/11/new-starting-point.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5815605246907786105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5815605246907786105'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/11/new-starting-point.html' title='The new starting point.'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7109799467789464063</id><published>2009-05-27T21:33:00.006+08:00</published><updated>2009-05-29T10:27:49.636+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Evaluation Report'/><title type='text'>Evaluation Report 2</title><content type='html'>Audio file is uploaded to EAST&lt;br /&gt;&lt;br /&gt;Evaluation Report (Audio) also can be accessed with Sky Drive:&lt;br /&gt;http://cid-df4d3bf95db02d9e.skydrive.live.com/self.aspx/.Public/A2.mp3&lt;br /&gt;&lt;br /&gt;Script of the Evaluation Report:&lt;br /&gt;&lt;br /&gt;I am Raymond TANG. I worked as a technical support in educational field, the exercises and workshops broader my view on latest programming approach and current technologies on business and e-commerce.&lt;br /&gt;&lt;br /&gt;I heard the Enterprise Resource Planning (ERP) system but not the Customer Relationship Management (CRM) system and Supply Chain Management (SCM) system. This is a new experience for me know more about them.&lt;br /&gt;&lt;br /&gt;The most interesting part of the exercise is the security part. For example, I knew cookies in browser can be collected by advertiser for sending junk email, but I don’t know the actual mechanism. With the exercise, I realized the way the cookies work on the advertiser.&lt;br /&gt;&lt;br /&gt;Before workshops, I know the way to write a program, two tiers, three tiers, but not considering about the framework. Ruby on Rails provided me a chance, not only to learn the way to write a program, but also creating the MVC approach framework.&lt;br /&gt;&lt;br /&gt;To sum up, no matter it is B2B or B2C, e-commerce is around us. Security is the most concerned topic between the e-commerce, to provide a safe and convenience way for planning, communicating, delivering, merchandising and purchasing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7109799467789464063?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7109799467789464063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/evaluation-report-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7109799467789464063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7109799467789464063'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/evaluation-report-2.html' title='Evaluation Report 2'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7019421320761316376</id><published>2009-05-27T17:42:00.002+08:00</published><updated>2009-05-27T17:47:10.207+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscATwork'/><title type='text'>My Computer is down again. &gt;_&lt;</title><content type='html'>My computer suddenly cannot startup after I press the switch yesterday morning.&lt;br /&gt;&lt;br /&gt;I just become crazy because all the information including study guides, ebooks, the project files are stored in that hard drive.&lt;br /&gt;&lt;br /&gt;The system is found to be certified (dead). Bad Luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7019421320761316376?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7019421320761316376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/my-computer-is-down-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7019421320761316376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7019421320761316376'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/my-computer-is-down-again.html' title='My Computer is down again. &gt;_&lt;'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-3310580749943728815</id><published>2009-05-19T23:18:00.012+08:00</published><updated>2009-05-28T11:24:03.220+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 8'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 8: Evaluation and Report</title><content type='html'>1. List what you consider to be the three strengths of Ruby on Rails workshop series&lt;br /&gt;&lt;br /&gt;a. Learn a new programming language for e-commerce&lt;br /&gt;b. Learn the new kind of framework on software development&lt;br /&gt;c. Practical the RoR skill on the workshops&lt;br /&gt;&lt;br /&gt;2. List what you consider to be the three weaknesses of Ruby on Rails workshop series:&lt;br /&gt;&lt;br /&gt;a. RoR version changes with its language, it is difficult to follow up.&lt;br /&gt;b. Setup and configure the server will be difficult if no experience.&lt;br /&gt;c. Difficult to classify if we should do both the “To do:” and “Challenge Problem:” or only “To do:”&lt;br /&gt;&lt;br /&gt;3. List what aspects of Ruby on Rails workshop series that you found to be most difficult.&lt;br /&gt;&lt;br /&gt;a.. Install and configure the server in the UNIX/Linux environment, it is not allowed in my workplace.&lt;br /&gt;b. Instead of the text mode, if a GUI IDE introduced for RoR may improve the work for workshops.&lt;br /&gt;c. The AJAX (not encounted before)&lt;br /&gt;d. Lots of time used in the workshop&lt;br /&gt;e. The work including exercises and workshops were too much for the part time student.&lt;br /&gt;&lt;br /&gt;4. List what improvements could be made to the Ruby on Rails workshop series:&lt;br /&gt;&lt;br /&gt;a. Introduce the GUI IDE.&lt;br /&gt;b. Clear clarify if we should work on both "To do:" and “Challenge Problem:” or else.&lt;br /&gt;&lt;br /&gt;Free response and reflective questions:&lt;br /&gt;5. The MVC framework separates three type of work at place. It is found to be effective framework for development.&lt;br /&gt;&lt;br /&gt;6. No. It is because the RoR can give me challenges and fulfillment.&lt;br /&gt;&lt;br /&gt;7. No further comments&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-3310580749943728815?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/3310580749943728815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3310580749943728815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3310580749943728815'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-8.html' title='Workshop 8: Evaluation and Report'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-5583049411335722637</id><published>2009-05-19T23:18:00.010+08:00</published><updated>2009-05-28T07:34:22.121+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 7: DEVELOPER’S THREAD (RED team)</title><content type='html'>Workshop 7&lt;br /&gt;&lt;br /&gt;I would like to choose the UNIX platform to deploy the system. I have been using the Linux platform to provide service as production server such as Webmail, FTP in my workplace for years. The stability and the performance of the system are excellent. In terms of the system maintenance, the patch or fix packages release rapidly when bugs were found. Absolutely, it is important that it is free.&lt;br /&gt;I would like to use the Mongrel and Mongrel cluster for deployment. In my experience in the workshop with InstantRails, it is a easy to use plugins to the RoR. Furthermore, Mongrel is a single-threaded application (Wikipedia 2009), with the management of the Mongrel with Mongrel-cluster plugins, the load of the system will be balanced on production server.&lt;br /&gt;&lt;br /&gt;Microsoft platforms and development platform like JAVA and JRuby are not considered. Although it is more easy to configure the system with Microsoft platforms, the stability is not as well as UNIX for deployment as production server. JAVA and JRuby are not choosen. Although JAVA or JRuby can provide cross platform capability, but the performance of the system may not to be as good as just using the Apache with Mongrel. The other reason is that WiFi are popular, people can use their PDA phones or Smartphone to go Internet and browse the website directly deploying JAVA like platform may lead a slow performance on the client side.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Wikipedia (2009), Mongrel (web server), Retrieved 27 May 2009 form http://en.wikipedia.org/wiki/Mongrel_(web_server)&lt;br /&gt;&lt;br /&gt;Debian (n.d.), Mongrel plugin to manage a cluster of Mongrel servers, Retrieved 27 May 2009 from http://packages.debian.org/zh-cn/squeeze/mongrel-cluster&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-5583049411335722637?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/5583049411335722637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5583049411335722637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5583049411335722637'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-7.html' title='Workshop 7: DEVELOPER’S THREAD (RED team)'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-3399290061691529205</id><published>2009-05-19T23:17:00.025+08:00</published><updated>2009-05-28T23:11:22.183+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 6'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 6: Enjoying the Ride: Web framework alternatives, scalability and flexibility</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uEZdORZI/AAAAAAAAAQ8/D5p_Jd6tW7k/s1600-h/2.gensite.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uEZdORZI/AAAAAAAAAQ8/D5p_Jd6tW7k/s320/2.gensite.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340756861195797906" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. Generate the site&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4uECqBOmI/AAAAAAAAAQ0/ZPSYNiAoTCo/s1600-h/3.result.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 255px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4uECqBOmI/AAAAAAAAAQ0/ZPSYNiAoTCo/s320/3.result.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340756855075453538" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Result of site generation&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uECtvv-I/AAAAAAAAAQs/xEc-lzb4XFY/s1600-h/4.changeroute.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 220px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uECtvv-I/AAAAAAAAAQs/xEc-lzb4XFY/s320/4.changeroute.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340756855091085282" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 3. Change the route&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uDypwMMI/AAAAAAAAAQk/8yLS5Y4XCgA/s1600-h/5welwomeSCR.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 228px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uDypwMMI/AAAAAAAAAQk/8yLS5Y4XCgA/s320/5welwomeSCR.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340756850779369666" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 4. Welcome screen&lt;br /&gt;&lt;br /&gt;At this stage, the file index.html in public folder is removed, the file index.erb in OTBS\app\views\site removed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4uDt6LVTI/AAAAAAAAAQc/qN7CxSd1PeE/s1600-h/6.aftercode_onview.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 228px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4uDt6LVTI/AAAAAAAAAQc/qN7CxSd1PeE/s320/6.aftercode_onview.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340756849506080050" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 5. Screen after added link at the top of page&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4wJ_USxeI/AAAAAAAAARE/8MlXZZ8sK-k/s1600-h/7css.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4wJ_USxeI/AAAAAAAAARE/8MlXZZ8sK-k/s320/7css.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340759156281492962" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 6. Screen after implementation of CSS &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfza0nMI/AAAAAAAAARc/yt2FxLiIN7U/s1600-h/9.config_mysql_create_db.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfza0nMI/AAAAAAAAARc/yt2FxLiIN7U/s320/9.config_mysql_create_db.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340890372928478402" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 7. Change MySQL password and create database&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfkU50iI/AAAAAAAAARU/kpoi51zYFWY/s1600-h/10_create_table.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 242px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfkU50iI/AAAAAAAAARU/kpoi51zYFWY/s320/10_create_table.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340890368877122082" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 8. Database structure at MySQL administrator&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfT7OnjI/AAAAAAAAARM/cGhPNWicQNE/s1600-h/12register_screen.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 198px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh6nfT7OnjI/AAAAAAAAARM/cGhPNWicQNE/s320/12register_screen.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5340890364474465842" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 9. Register screen&lt;br /&gt;&lt;br /&gt;Due to my computer system failure, it is required to rebuild the stuffs from scratch.&lt;br /&gt;As the time constraint, the rebuild of the workshop was unsuccessful. I will do my best to try it again even passed the deadline of assessment.&lt;br /&gt;&lt;br /&gt;I do not have any experience on writing AJAX program. According to the Wikipedia (2009), with the AJAX, the data exchange asynchronously between browser and server, the performance is much faster than always connected. The AJAX programming avoiding page reloads, that part of the screen is refreshed as it required. The load of the server reduced.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;br /&gt;Wikipedia (2009), Ajax (programming), Retrieved 27 May 2009 from http://en.wikipedia.org/wiki/Ajax_(programming)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-3399290061691529205?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/3399290061691529205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3399290061691529205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3399290061691529205'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-6.html' title='Workshop 6: Enjoying the Ride: Web framework alternatives, scalability and flexibility'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4uEZdORZI/AAAAAAAAAQ8/D5p_Jd6tW7k/s72-c/2.gensite.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-3529880836582139562</id><published>2009-05-19T23:17:00.017+08:00</published><updated>2009-05-25T10:46:29.239+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 5'/><title type='text'>Workshop 5: Admiring the scenery Forms, AJAX screen layout and mobile interfaces</title><content type='html'>I am joining the RED TEAM - DEVELOPER. It is because like to create programs, from concept to product.&lt;br /&gt;&lt;br /&gt;Part A&lt;br /&gt;&lt;br /&gt;1. Create the Rails application framework in the projects folder: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlVNalQ-aI/AAAAAAAAAPs/GAxR1rBQlUo/s1600-h/1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlVNalQ-aI/AAAAAAAAAPs/GAxR1rBQlUo/s320/1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339392522186717602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Running  the application on localhost:3000 using the WeBrick ruby server (or Mongrel as alternative) and access via Web browser at http://localhost:3000/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlVNFyIZjI/AAAAAAAAAPk/pzi-1GytO7o/s1600-h/2startserver.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 300px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlVNFyIZjI/AAAAAAAAAPk/pzi-1GytO7o/s320/2startserver.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339392516603536946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlVM6bSLAI/AAAAAAAAAPc/NfQZ5R4vS1s/s1600-h/3startserver2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlVM6bSLAI/AAAAAAAAAPc/NfQZ5R4vS1s/s320/3startserver2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339392513554918402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlUSlVZfZI/AAAAAAAAAPU/sJ1BnZ9lAVc/s1600-h/4.webbrowser.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlUSlVZfZI/AAAAAAAAAPU/sJ1BnZ9lAVc/s320/4.webbrowser.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339391511460674962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Create the controller to make the application do an action. This is under the controller-action/model-view structure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlUSUa6ZKI/AAAAAAAAAPM/YSHOTQtjNh0/s1600-h/5script_generate.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlUSUa6ZKI/AAAAAAAAAPM/YSHOTQtjNh0/s320/5script_generate.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339391506920400034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlUSAX1_HI/AAAAAAAAAPE/ybtPOkP3f9I/s1600-h/6mammal_controller.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlUSAX1_HI/AAAAAAAAAPE/ybtPOkP3f9I/s320/6mammal_controller.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339391501538819186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result from browser&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlUSPWU7QI/AAAAAAAAAO8/e2jCqqPIPIc/s1600-h/7noaction.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlUSPWU7QI/AAAAAAAAAO8/e2jCqqPIPIc/s320/7noaction.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339391505558990082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Create an action by editing and saving the mammal_controller.rb class in projects\animals\app\controllers using your text editor to add the method &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlURwH22eI/AAAAAAAAAO0/5XTjyIcYBnM/s1600-h/8codeadd.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 121px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlURwH22eI/AAAAAAAAAO0/5XTjyIcYBnM/s320/8codeadd.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339391497176799714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Start the WEBrick server and browse at http://localhost:3000/mammals/breathe where you will get a “missing template” message since it is missing a view for the breathe method. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlTtx2scAI/AAAAAAAAAOs/Pxa1OQyzRR0/s1600-h/9missingtemplate.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlTtx2scAI/AAAAAAAAAOs/Pxa1OQyzRR0/s320/9missingtemplate.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339390879166394370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. Create and save a view in that directory by using a text editor to create a view called breathe.rhtml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlTt1JPQSI/AAAAAAAAAOk/q3yK0dlKgXQ/s1600-h/10breathe.rthml.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 160px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlTt1JPQSI/AAAAAAAAAOk/q3yK0dlKgXQ/s320/10breathe.rthml.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339390880049479970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result from browser&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlTtoE_b3I/AAAAAAAAAOc/TOwxsJL5HXQ/s1600-h/11webbrower_rhtml.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlTtoE_b3I/AAAAAAAAAOc/TOwxsJL5HXQ/s320/11webbrower_rhtml.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339390876542005106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Try Ruby code and HTML in the action view by using the &lt;%....%&gt; wrapper around the inserted Ruby code. Here are some snippets to try from workshop 4:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlTtsHgjII/AAAAAAAAAOU/qgdeU1-Ro14/s1600-h/12trycode.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 282px; height: 320px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlTtsHgjII/AAAAAAAAAOU/qgdeU1-Ro14/s320/12trycode.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339390877626305666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result from browser&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlTtor7jFI/AAAAAAAAAOM/7LEN_s_nlT8/s1600-h/13trycoderesults.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlTtor7jFI/AAAAAAAAAOM/7LEN_s_nlT8/s320/13trycoderesults.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339390876705328210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part B&lt;br /&gt;&lt;br /&gt;1. Create a new application called scenery in the same projects directory to demonstrate the use of an active view.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlQXt1cjcI/AAAAAAAAAOE/VmJABSbWDYM/s1600-h/1.createview.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlQXt1cjcI/AAAAAAAAAOE/VmJABSbWDYM/s320/1.createview.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339387201595411906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Create a controller called Demo in scenery\app\controllers&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlQXYhPkKI/AAAAAAAAAN8/EtxvdCCEc7Q/s1600-h/2gencontrol.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlQXYhPkKI/AAAAAAAAAN8/EtxvdCCEc7Q/s320/2gencontrol.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339387195873530018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Add an action to demo_controller.rb as the method called rubycode&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlQXZwwAjI/AAAAAAAAAN0/H4s-BvPUpLE/s1600-h/3.edit_action.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlQXZwwAjI/AAAAAAAAAN0/H4s-BvPUpLE/s320/3.edit_action.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339387196207006258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlQXByP3fI/AAAAAAAAANs/5dQgvcY150Y/s1600-h/4addaction.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 135px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlQXByP3fI/AAAAAAAAANs/5dQgvcY150Y/s320/4addaction.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339387189770837490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Add a view template - scenery\app\views\demo\rubycode.rhtml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlMSGZa9aI/AAAAAAAAANk/0orL10tSeJs/s1600-h/5.edit_view.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 49px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlMSGZa9aI/AAAAAAAAANk/0orL10tSeJs/s320/5.edit_view.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339382707063027106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlMR72LpmI/AAAAAAAAANc/_J3JyovkARo/s1600-h/6addcode_nopass.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 308px; height: 258px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlMR72LpmI/AAAAAAAAANc/_J3JyovkARo/s320/6addcode_nopass.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339382704230868578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result at browser&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlMR9sgh4I/AAAAAAAAANU/75Sxir_navE/s1600-h/7addcoderesult.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlMR9sgh4I/AAAAAAAAANU/75Sxir_navE/s320/7addcoderesult.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_&lt;br /&gt;5339382704727164802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Then modify and save the corresponding view template&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlMRvEPCvI/AAAAAAAAANM/jTWye3RhDiY/s1600-h/8code_pass_val.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 308px; height: 258px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlMRvEPCvI/AAAAAAAAANM/jTWye3RhDiY/s320/8code_pass_val.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339382700800150258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. Restart the Web server and navigate the browser&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlMRsYCENI/AAAAAAAAANE/pOiG6Tl_qPA/s1600-h/9.pass_val_result.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 171px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlMRsYCENI/AAAAAAAAANE/pOiG6Tl_qPA/s320/9.pass_val_result.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339382700077879506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part C&lt;br /&gt;&lt;br /&gt;1. Create a new application called cabs in the same projects directory to demonstrate the use of an active view.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJCxjvjVI/AAAAAAAAAMU/4nRPKZVOhss/s1600-h/1createcabs.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJCxjvjVI/AAAAAAAAAMU/4nRPKZVOhss/s320/1createcabs.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379145236254034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Create a controller called Vehicle in cabs\app\controllers&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJChYccRI/AAAAAAAAAMM/ETEqI7uNLlU/s1600-h/2gencontroller.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJChYccRI/AAAAAAAAAMM/ETEqI7uNLlU/s320/2gencontroller.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379140893896978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Add an action to vehicle_controller.rb as the method called cabtype&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlJCRQniLI/AAAAAAAAAME/PJim3INxJqs/s1600-h/3addaction.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 105px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ShlJCRQniLI/AAAAAAAAAME/PJim3INxJqs/s320/3addaction.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379136566102194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View result&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJCViAcTI/AAAAAAAAAL8/UXcjnqTbcVU/s1600-h/4.resultaddaction.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJCViAcTI/AAAAAAAAAL8/UXcjnqTbcVU/s320/4.resultaddaction.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379137712779570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Create a file in the public directory - \cabs\public called input.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJCTiELHI/AAAAAAAAAL0/tTM-wM24Sfk/s1600-h/5input_html.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 274px; height: 320px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJCTiELHI/AAAAAAAAAL0/tTM-wM24Sfk/s320/5input_html.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379137176153202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. Edit the vehicle_controller.rb here is a start. The data in each form element in the Rails application can be accessed via its name and a hash called params&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlJk2F8JDI/AAAAAAAAAM8/U0JbKlLAuss/s1600-h/6controller.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 154px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShlJk2F8JDI/AAAAAAAAAM8/U0JbKlLAuss/s320/6controller.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379730568979506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Edit the view template cabtype.rhtml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJkvb_KVI/AAAAAAAAAM0/IistrzT9fhw/s1600-h/7.viewtemplate.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 305px; height: 320px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlJkvb_KVI/AAAAAAAAAM0/IistrzT9fhw/s320/7.viewtemplate.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379728782403922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. Start the Web server and go to the opening page of this application at http://localhost:3000/input.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJkR9JeuI/AAAAAAAAAMk/VhIUBoOEt6I/s1600-h/9inputdata.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJkR9JeuI/AAAAAAAAAMk/VhIUBoOEt6I/s320/9inputdata.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379720868428514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJkAnGrvI/AAAAAAAAAMc/pcyUB_uc1U8/s1600-h/10results.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShlJkAnGrvI/AAAAAAAAAMc/pcyUB_uc1U8/s320/10results.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5339379716212567794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10. Submit form data. What do you find?&lt;br /&gt;I found error in the program. The if statement can not progress with the (=) equal to symbol when using boolean type of variable.&lt;br /&gt;&lt;br /&gt;After fix the webpage and link. The information pass from webpage and to the controller vehicle_controller.rb and to the result page - cabtype.rhtml for output.&lt;br /&gt;&lt;br /&gt;11. Report your progress or findings in your Developers Blog.&lt;br /&gt;&lt;br /&gt;The select list use array. It is because the selection from user is the index value but not the text itself. So, the array is used to collect the text back from the index value.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-3529880836582139562?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/3529880836582139562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3529880836582139562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3529880836582139562'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/workshop-5.html' title='Workshop 5: Admiring the scenery Forms, AJAX screen layout and mobile interfaces'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/ShlVNalQ-aI/AAAAAAAAAPs/GAxR1rBQlUo/s72-c/1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-898228853192126751</id><published>2009-05-11T17:17:00.019+08:00</published><updated>2009-05-29T10:23:18.898+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 26'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 26: End of the Line: Systems integration</title><content type='html'>I choose the Business process analysis.&lt;br /&gt;&lt;br /&gt;2. Business process analysis&lt;br /&gt;Organisations can use several systems to monitor, record business process transactions such as:&lt;br /&gt;•Enterprise Resource Planning (ERP),&lt;br /&gt;•Customer Relationship Management (CRM)&lt;br /&gt;•Workflow Management,&lt;br /&gt;These software systems store data on instances of business processes transactions and can be analysed using data or process mining (PM) and reverse business engineering (RBE). In the case of ERP systems, integration of all data and processes goes into a single database as system components – the ultimate integration notion, perhaps.&lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;I chose business process analysis and scattered bits together. According to the Sagebusiness.com (2008), "ERP systems for functions such as managing receivables, inventory, and finance, and CRM systems are used to manage contact relationships, cross-sells, and up-sells."&lt;br /&gt;&lt;br /&gt;Although ERP and CRM are different systems, Sagebussiness.com (2008) stated that properly integration of the system increase the profitability and productivity than investment and efforts involved.&lt;br /&gt;&lt;br /&gt;George (2008) suggested the following points for the system integrations:&lt;br /&gt;1. Take a business process view of ERP-CRM integration&lt;br /&gt;He suggested considering the benefit to the business than the individual business.&lt;br /&gt;&lt;br /&gt;2. Determine how ERP-CRM integration can benefit end users&lt;br /&gt;He suggested the users should gain improvement on experience the new integrated system.&lt;br /&gt;&lt;br /&gt;3. Reduce fears around loss of control&lt;br /&gt;He suggested that integration should reduce the duplication of the customer information.&lt;br /&gt;&lt;br /&gt;4. Cultivating the right ERP-CRM integration team&lt;br /&gt;According to the organization size, the integration team should be from different department with limited number of people to reduce conflicts.&lt;br /&gt;&lt;br /&gt;5. Assigning process ownership for an ERP-CRM integration project&lt;br /&gt;Due to the system is different in ERP and CRM, the new system should allow to manage different kind of data. The integration can be into single or multi instances strategies.&lt;br /&gt;&lt;br /&gt;I don’t work on the ERP and CRM. As I studied the passages of system integration on both systems, when a relation of the planning of the resource to the customer needs, the "order-to-cash processes" (Sagebusiness.com 2008) leads the reduction of the cost. On the other hand, as the CRM can analysis for the market trend, the ERP can allocate more resources to the market that expanding for more profits.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Walia S. (2008), CRM and E-Commerce: The Integration Payoff, Retrieved 25 May 2009 from http://www.crmbuyer.com/story/64103.html?wlc=1243405763&lt;br /&gt;&lt;br /&gt;Sagebusiness.com.au (2008), ERP &amp; CRM  Integration Tips, Retrieved 25 May 2009 from http://www.sagebusiness.com.au/pg-news-erp-crm-software-integration-top-tips.seo&lt;br /&gt;&lt;br /&gt;George L. (2008), Benefits of ERP-CRM integration, Retrieved 25 May 2009 from http://searchcrm.techtarget.com/generic/0,295582,sid11_gci1320412,00.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-898228853192126751?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/898228853192126751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/898228853192126751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/898228853192126751'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-26.html' title='Exercise 26: End of the Line: Systems integration'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-5503668885945276916</id><published>2009-05-11T17:17:00.014+08:00</published><updated>2009-05-19T11:19:03.401+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 24'/><title type='text'>Exercise 24: Virtual business worlds and cyberagents</title><content type='html'>1. Differentiate the various type of software agents&lt;br /&gt;&lt;br /&gt;According to Ince (2004), There are eleven type of software agents and described as follows:&lt;br /&gt;&lt;br /&gt;a. Chatterbots&lt;br /&gt;converses with the user in some restricted form of natural language.&lt;br /&gt;&lt;br /&gt;b. Commerce agents&lt;br /&gt;In B2B environment, this agents process invoices, checking arrival of material for process, notifying the product arrival and create financial information.&lt;br /&gt;&lt;br /&gt;c. Data management agents&lt;br /&gt;Associated with corpora of data that processing text on web site into a summary.&lt;br /&gt;&lt;br /&gt;d. Government agents&lt;br /&gt;Used to search for government regulations or extracting government statistics.&lt;br /&gt;&lt;br /&gt;e. News agents&lt;br /&gt;Display the breaking news.&lt;br /&gt;Search for specified news by user.&lt;br /&gt;email the news story to user.&lt;br /&gt;Personalize the newspaper according to users' preference.&lt;br /&gt;&lt;br /&gt;f. Newsgroup agents&lt;br /&gt;Sorting out, prioritise and display the posting according to the users keywords.&lt;br /&gt;Search the FAQ list for answers to a specified question. Notify the user of the new information is discussed in newsgroup.&lt;br /&gt;&lt;br /&gt;g. Shopping agents&lt;br /&gt;Carry out tasks associated with the accessing of retail sites. It is used to compare prices on the retails sites and auction sites on the internet for the products.&lt;br /&gt;&lt;br /&gt;h. Software agents&lt;br /&gt;Carry out tasks associated with software&lt;br /&gt;e.g. Notify for software update&lt;br /&gt;&lt;br /&gt;i. Stock agents&lt;br /&gt;Associated with the purchasing and selling stocks and shares.&lt;br /&gt;&lt;br /&gt;j. Update agents&lt;br /&gt;Notify the user when a change has occured which is of significance to the user&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Describe how techniques such as artificial intellgence and statistical techniques are used in software agents.&lt;br /&gt;&lt;br /&gt;Fuzzy agents is a kind of artificial intellgence which implements fuzzy logic. This agent uses a rule based system to deal and make decision with the conditions it adopt. (Wikipedia 2009)&lt;br /&gt;&lt;br /&gt;In statistical techniques, the software agents uses data mining algorithms to analyse the rules and common behaviours from the  information rich environments.&lt;br /&gt;&lt;br /&gt;3. Identify various activities in e-commerce where software agents are curently in use.&lt;br /&gt;&lt;br /&gt;According to Clurman, W., Foley, T., Guttman, R., Kupres, K. (1997), the following activities are currently in use.&lt;br /&gt;&lt;br /&gt;i. Personalization&lt;br /&gt;This is the sense in which it is literally an “agent” taking action in the interests of another just as a real estate agent is understood to represent the interests of a buyer or seller. The outcome of the agent’s primary task is controlled by specific information supplied by the user, the agent is personalized for that user.&lt;br /&gt;&lt;br /&gt;ii. Brokering&lt;br /&gt;Brokering is different from personalization in that brokering is the function of information retrieval and delivery, given personalized instructions. Again, the search engine that delivers query results is a simple example of a broker, as it gathers and delivers results based on personalized input. So-called “meta-indexes” perform this function on more than one data source.&lt;br /&gt;&lt;br /&gt;iii. Negotiation&lt;br /&gt;Negotiating agents may be empowered to execute transactions on behalf their users. The “program-trading” accepting and reviewing information supplied by the activity of an agent and determine the user threshold to make buying or selling decisions financial markets.&lt;br /&gt;&lt;br /&gt;4. Computing ethics and bot programming case study: rocky&lt;br /&gt;a.&lt;br /&gt;An account username: train1 and password: train1 is obtained.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sg_efM73bjI/AAAAAAAAAKs/0LxxszqDd-4/s1600-h/1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sg_efM73bjI/AAAAAAAAAKs/0LxxszqDd-4/s200/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5336728711086960178" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. Login Screen&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sg_eewmCXaI/AAAAAAAAAKk/XeysgjCZ7gg/s1600-h/2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sg_eewmCXaI/AAAAAAAAAKk/XeysgjCZ7gg/s200/2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5336728703479209378" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. After login&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sg_ee4c-nZI/AAAAAAAAAKc/9NWfs9G3oXw/s1600-h/3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sg_ee4c-nZI/AAAAAAAAAKc/9NWfs9G3oXw/s200/3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5336728705588698514" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 3. Starting the bot&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sg_fvA6OwpI/AAAAAAAAAK0/QKP3wwngCzs/s1600-h/4.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sg_fvA6OwpI/AAAAAAAAAK0/QKP3wwngCzs/s200/4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5336730082248409746" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 4. Normal Option&lt;br /&gt;&lt;br /&gt;In the screen of normal option, the bot does not seems to know anything and does not response to the user typing. It always says "I don't understand that."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sg_iNLkusXI/AAAAAAAAAK8/8nLf-qEjOtU/s1600-h/5.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sg_iNLkusXI/AAAAAAAAAK8/8nLf-qEjOtU/s200/5.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5336732799530348914" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 5. Say Option&lt;br /&gt;&lt;br /&gt;In the screen with say option, the bot response, but it usually give uncertain or unexpect answer or asking unexpected questions.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sg_nc7C1XlI/AAAAAAAAALE/P9rjv3-eBqc/s1600-h/6.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sg_nc7C1XlI/AAAAAAAAALE/P9rjv3-eBqc/s200/6.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5336738567529258578" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 6. emote Option&lt;br /&gt;&lt;br /&gt;In the screen with emote option, the bot response, the response is much better especially on the postive and negative matter and illness . It still give some uncertain or unexpect answer or asking unexpected questions. When the answer from user is short. Sometimes it gives no response at all.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sg_oLFZDG6I/AAAAAAAAALM/ZPhhY96ggMI/s1600-h/7.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sg_oLFZDG6I/AAAAAAAAALM/ZPhhY96ggMI/s200/7.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5336739360580770722" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 7. Stop the Rocky&lt;br /&gt;&lt;br /&gt;c.&lt;br /&gt;Accroding to Wikipedia (15 May 2009), ELIZA was a computer program of primitive natural language processing. It uses simple pattern matching techniques to response to its users.&lt;br /&gt;As I chatted with the Rocky about, the Rocky is trying to match the pattern for postiive and negative attitude of the users. It seems not response the long and complex sentance well.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Nwana H. S. (1996), Software Agents: An Overview, Retrieved 13 May 2009 from http://www.sce.carleton.ca/netmanage/docs/AgentsOverview/ao.html&lt;br /&gt;&lt;br /&gt;Wikipedia (2009), ELIZA, Retrieved 18 May 2009 from http://en.wikipedia.org/wiki/ELIZA&lt;br /&gt;&lt;br /&gt;Grossklags J., Schmidt C. (2003), Artificial Software Agents on Thin Double Auction Markets -  A Human Trader Experiment, Retrieved 15 May 2009 from http://www.sfb504.uni-mannheim.de/~cschmidt/paper/IAT2003-grossklags-schmidt.pdf&lt;br /&gt;&lt;br /&gt;Wroclaw (2007), Using Data Mining Algorithms for Statistical Learning of a Software Agent, Retrieved 17 May 2009 from http://portal.acm.org/citation.cfm?id=1482853&lt;br /&gt;&lt;br /&gt;Zhang S., Hu Q., Wang D. (2007), Application of Software Agent to e-Commerce Consumer Buying Support, Retrieved 18 May 2009 from http://ieeexplore.ieee.org/Xplore/login.jsp?url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F4318334%2F4318335%2F04318860.pdf%3Farnumber%3D4318860&amp;authDecision=-203&lt;br /&gt;&lt;br /&gt;Clurman, W., Foley, T., Guttman, R., Kupres, K. (1997), Electronic Commerce with Software Agents, Retrieved 18 May 2009 from http://alumni.media.mit.edu/~guttman/research/commerce/papers/commerce.pdf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;xxxxxx OLD ANSWER for Question 3 xxxxxx&lt;br /&gt;i. Supporting&lt;br /&gt;a. Consumer Buying Support&lt;br /&gt;According to Zhang, Hu and Wang (2007), "Facing the flood of information and increasing competitive environment, the e-Commerce seller must make its software facility more customer-oriented, more intelligent, and build one-to-one marketing. A new e-Commerce model is presented to support consumer buying decision making."&lt;br /&gt;&lt;br /&gt;b. Health Care Support&lt;br /&gt;Moreno, A., Nealon, J. L. (n.d.) stated that "software agents technology is being applied in very diverse problems in health care, ranging from community care to management of organ transplants."&lt;br /&gt;xxxxxx END xxxxxx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-5503668885945276916?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/5503668885945276916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-24.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5503668885945276916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5503668885945276916'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-24.html' title='Exercise 24: Virtual business worlds and cyberagents'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/Sg_efM73bjI/AAAAAAAAAKs/0LxxszqDd-4/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-8533191738536767151</id><published>2009-05-11T17:17:00.006+08:00</published><updated>2009-05-14T23:15:38.181+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 25'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 25: M-commerce and the e-wallet and mobile devices</title><content type='html'>1. What is meant by a location based service?&lt;br /&gt;&lt;br /&gt;When doing the e-commerce or m-commerce. The technologies tries to locate the region of the user stay and provide information on the product and shop nearby according to the user need.&lt;br /&gt;&lt;br /&gt;For example, when typing the www.yahoo.com to the URL at browser, the system of Yahoo will redirect the user to the local website instead of the global or website of other countries.&lt;br /&gt;&lt;br /&gt;When a user purchase a produce through e-commerce or m-commerce. The system will locate the shop nearby the user for product delivery instead of sending from the other countries. This promotes the speed of product delivery, reduce cost by reducing the transportation cost, increase customer satification by better local customer service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-8533191738536767151?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/8533191738536767151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8533191738536767151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8533191738536767151'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-25.html' title='Exercise 25: M-commerce and the e-wallet and mobile devices'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6046160849646476808</id><published>2009-05-11T17:16:00.018+08:00</published><updated>2009-05-23T14:21:58.159+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 21'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 21: Shopping cart specifications</title><content type='html'>Develop the class diagram for the following shopping cart specifications: &lt;br /&gt; &lt;br /&gt;A shoppingCart object is associated with only one creditCard and &lt;br /&gt;customer and to items in itemToBuy object.  Persistent customer &lt;br /&gt;information such as name, billing address, delivery address, e-mail address &lt;br /&gt;and credit rating is stored in the customer object.  The credit card object is &lt;br /&gt;associated with a frequentShopper discount object, if the credit rating &lt;br /&gt;for the customer is good.  The customer can make or cancel orders as well &lt;br /&gt;as add and delete items to the shopping cart product.  The credit card &lt;br /&gt;object contains the secure method for checking that the charge is authentic. &lt;br /&gt;&lt;br /&gt;Class Diagram for shopping cart&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SheV7BjznwI/AAAAAAAAALs/wShyHDk_gxc/s1600-h/output.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 140px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SheV7BjznwI/AAAAAAAAALs/wShyHDk_gxc/s200/output.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5338900724534451970" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6046160849646476808?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6046160849646476808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6046160849646476808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6046160849646476808'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-21.html' title='Exercise 21: Shopping cart specifications'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/SheV7BjznwI/AAAAAAAAALs/wShyHDk_gxc/s72-c/output.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-438687869092884532</id><published>2009-05-11T17:16:00.017+08:00</published><updated>2009-05-22T15:23:07.261+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 20'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 20: Modeling with UML</title><content type='html'>Use Case, Class, Sequence, Collaboration, State chart, Activity, Component and Deployment diagrams are used in UML. Describe each of the eight (8) main diagrams used in UML.&lt;br /&gt;&lt;br /&gt;According to the Ambler (2007), the main diagrams used in UML are as following:&lt;br /&gt;&lt;br /&gt;Use Case diagram&lt;br /&gt;"Shows use cases, actors, and their interrelationships. "&lt;br /&gt;&lt;br /&gt;Class diagram&lt;br /&gt;"Shows a collection of static model elements such as classes and types, their contents, and their relationships. "&lt;br /&gt;&lt;br /&gt;Sequence diagram&lt;br /&gt;"Models the sequential logic, in effect the time ordering of messages between classifiers."&lt;br /&gt;&lt;br /&gt;Collaboration diagram&lt;br /&gt;"Shows instances of classes, their interrelationships, and the message flow between them. Communication diagrams typically focus on the structural organization of objects that send and receive messages.  Formerly called a Collaboration Diagram."&lt;br /&gt;&lt;br /&gt;State chart&lt;br /&gt;"Describes the states an object or interaction may be in, as well as the transitions between states. Formerly referred to as a state diagram, state chart diagram, or a state-transition diagram."&lt;br /&gt;&lt;br /&gt;Activity diagram&lt;br /&gt;"Depicts high-level business processes, including data flow, or to model the logic of complex logic within a system."&lt;br /&gt;&lt;br /&gt;Component diagram &lt;br /&gt;"Depicts the components that compose an application, system, or enterprise. The components, their interrelationships, interactions, and their public interfaces are depicted."&lt;br /&gt;&lt;br /&gt;Deployment diagram&lt;br /&gt;"Shows the execution architecture of systems.  This includes nodes, either hardware or software execution environments, as well as the middleware connecting them."&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Ambler, S. W. (2007), Introduction to the Diagrams of UML 2.0, Retrieved 20 May 2009 from http://www.agilemodeling.com/essays/umlDiagrams.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-438687869092884532?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/438687869092884532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/438687869092884532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/438687869092884532'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-20.html' title='Exercise 20: Modeling with UML'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-5428929534495442394</id><published>2009-05-11T17:16:00.015+08:00</published><updated>2009-05-19T23:15:10.497+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 22'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 22: Differentiate between software systems</title><content type='html'>Customer Relationship Management (CRM)&lt;br /&gt;&lt;br /&gt;CRM is a strategy used to learn more about customers' needs and behaviors in order to develop stronger relationships with them&lt;br /&gt;&lt;br /&gt;a. providing services and products that are exactly what your customers want&lt;br /&gt;b. offering better customer service&lt;br /&gt;c. cross selling products more effectively&lt;br /&gt;d. helping sales staff close deals faster&lt;br /&gt;e. retaining existing customers and discovering new ones&lt;br /&gt;&lt;br /&gt;Supply Chain Management (SCM)&lt;br /&gt;&lt;br /&gt;There are five major functions in Supply Chain Management software. Most of the companies requires only some component in their business, so the software for SCM is usually fragmented.&lt;br /&gt;&lt;br /&gt;According to Wailgum (2007), the five components are:&lt;br /&gt;a. Plan&lt;br /&gt;&lt;br /&gt;i. planning is developing a set of metrics to monitor the supply chain so that it is efficient, costs less and delivers high quality and value to customers.&lt;br /&gt;&lt;br /&gt;b. Source&lt;br /&gt;&lt;br /&gt;i. develop a set of product pricing, delivery and payment processes with suppliers and create metrics for monitoring and improving the relationships&lt;br /&gt;&lt;br /&gt;ii. processes for managing their goods and services inventory, including receiving and verifying shipments, transferring them to the manufacturing facilities and authorizing supplier payments.&lt;br /&gt;&lt;br /&gt;c. Make&lt;br /&gt;&lt;br /&gt;i. schedule the activities necessary for production, testing, packaging and preparation for delivery.&lt;br /&gt;&lt;br /&gt;d. Deliver&lt;br /&gt;&lt;br /&gt;i. coordinate the receipt of orders from customers, develop a network of warehouses, pick carriers to get products to customers and set up an invoicing system to receive payments.&lt;br /&gt;&lt;br /&gt;e. Return&lt;br /&gt;&lt;br /&gt;i. Supply chain planners have to create a responsive and flexible network for receiving defective and excess products back from their customers and supporting customers who have problems with delivered products.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conclustion:&lt;br /&gt;To sum up, both software performing different functions. CRM trends to collect information on customer behavor and habits for designing strategy for selling products while SCM trends to plan for the production, testing and delivery of the products.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;br /&gt;Wailgum T. (March 06, 2007), CRM Definition and Solutions, Retrieved 19 May 2009 from http://www.cio.com/article/40295/CRM_Definition_and_Solutions&lt;br /&gt;&lt;br /&gt;Wailgum T. (March 19, 2007), Supply Chain Management Definition and Solutions, Retrieved 19 May 2009 from http://www.cio.com/article/40940/Supply_Chain_Management_Definition_and_Solutions&lt;br /&gt;&lt;br /&gt;Business Link (2007), Customer relationship management, Retrieved 19 May 2009 from http://www.businesslink.gov.uk/bdotg/action/detail?r.l1=1073861197&amp;r.l3=1075422922&amp;r.lc=en&amp;type=RESOURCES&amp;itemId=1075422931&amp;r.l2=1075422920&amp;r.s=sc#&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-5428929534495442394?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/5428929534495442394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5428929534495442394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5428929534495442394'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-22.html' title='Exercise 22: Differentiate between software systems'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-8386664976874330646</id><published>2009-05-11T17:16:00.013+08:00</published><updated>2009-05-18T18:37:18.678+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 23'/><title type='text'>Exercise 23: Searching mechanisms</title><content type='html'>1. What is a spider? What does it do?&lt;br /&gt;&lt;br /&gt;Schneider (2006) stated that spider is a part of the search engine. It is used to search the webpage and website which interesting to people automatically.&lt;br /&gt;Awad (2004) defined that "spider: a software tool that prowls the internet looking for new sites where information is likely to reside."&lt;br /&gt;&lt;br /&gt;During the search, the spider will collect information from the page such as the links contained on the page, keywords, title, content and also "meta" tag for user to search in the future.&lt;br /&gt;&lt;br /&gt;2. What is a meta-search engine? Provide some examples.&lt;br /&gt;meta is the keywords that describe the webpages but not part of the web content. (Schneider)&lt;br /&gt;Rosen (2002) pointed that the meta-search engine looks for the meta tag in the webpages only. It then locates the website to the user by keyword matching.&lt;br /&gt;&lt;br /&gt;Examples of meta-search engine:&lt;br /&gt;&lt;a href="clusty.com"&gt;Clusty&lt;/a&gt; &lt;br /&gt;&lt;a href="www.dogpile.com"&gt;Dogpile&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. How can you get your site listed at major search sites; and how could you improve your site ranking?&lt;br /&gt;&lt;br /&gt;a. Register a suitable domain name for the website.&lt;br /&gt;b. Register the website to the major search engine.&lt;br /&gt;c. Put the website into subitable category.&lt;br /&gt;d. Use suitable meta in the website for spider to locate.&lt;br /&gt;e. Better design and content of web to make it a popular search.&lt;br /&gt;e. Paid or sponsor to the company of search engine to increase its rank.&lt;br /&gt;f. Advertise on the search engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Schneider, G. P. (2006), Electronic Commerce Sixth Annual Edition, Thomson, Canada, p. 203-205&lt;br /&gt;&lt;br /&gt;Awad, E. M. (2004), Electronic Commerce (2nd ed), Pearson Education, NJ, p. 44&lt;br /&gt;&lt;br /&gt;Rosen A. (2002), The e-commerce question and answer book: a survival guide for business managers (2nd ed), American Management Association, NY, p. 182&lt;br /&gt;&lt;br /&gt;Meta-Search Engines, Retrieved 16 May 2009 from http://www.lib.berkeley.edu/TeachingLib/Guides/Internet/MetaSearch.html&lt;br /&gt;&lt;br /&gt;Ince, D. (2004), Developing Distributed and E-commerce Applications (2nd ed.), Pearson, p. 438-439&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-8386664976874330646?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/8386664976874330646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-23.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8386664976874330646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8386664976874330646'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-23.html' title='Exercise 23: Searching mechanisms'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-1541039395683475142</id><published>2009-05-11T17:15:00.007+08:00</published><updated>2009-05-19T16:20:55.842+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 19'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 19: TP monitors and transaction protocols</title><content type='html'>1. Give a description in your own words of the ACID proprtties of a transaction.&lt;br /&gt;&lt;br /&gt;Atomicity (A)&lt;br /&gt;Atomicity is used to ensure the transaction is successfully completed or not to prevent incomplete transactions.&lt;br /&gt;In case of transaction success and completed. For example, the client paid for goods and the merchant is received his money.&lt;br /&gt;In case of transaction failed and incomplete. For example, the client money remains in his account and the merchant do not receive any money.&lt;br /&gt;&lt;br /&gt;Consistency (C)&lt;br /&gt;When a transaction transforms from one state to another, intermediate points may be produced in database before the transaction commit and complete. Consistency is that the transaction does not require the intermediate points to transform from one state to another.&lt;br /&gt;&lt;br /&gt;Isolation (I)&lt;br /&gt;When there are concurrent transactions are running, the tranaction assigned to process should be complete and commit before another transaction to start process.&lt;br /&gt;&lt;br /&gt;Durability (D)&lt;br /&gt;The commited transaction should be availible at any time it is being used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Describe a TP monitor environment. How can a TP monitor stop an operating system being overwhelmed?&lt;br /&gt;&lt;br /&gt;The softwareag.com (2006) stated that the TP monitor environment contains user session data is referred to as thread. The session data used for the user session.&lt;br /&gt;&lt;br /&gt;Figure 1. Environment of the TP monitor, Natural is a program running in the operating system (softwareag.com 2006)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShJgGyN_yiI/AAAAAAAAALc/Z_cQqAFyk0c/s1600-h/tp_mon_mf.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 142px; height: 200px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShJgGyN_yiI/AAAAAAAAALc/Z_cQqAFyk0c/s200/tp_mon_mf.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5337434178063419938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As all administrative tasks of an operating system involving time must be created by TP monitor which is used to allocate the resources basis on the request each time such as process allocation and storage allocation. The load of the operating system is prevented from being overwhelmed. (Gray J., Reuter A., 1993)&lt;br /&gt;&lt;br /&gt;3. What is difference in load balancing with traditional and transactional MOM, RPC and conversations?&lt;br /&gt;&lt;br /&gt;In traditional RPC model, the request from user should be queued and wait synchronously for the server to execute and return the reply where the client and server should be free at the same time.&lt;br /&gt;&lt;br /&gt;Messge-oriented middleware help to resolve the problem of the wait time. It acts as a middleware  between the client and server, buffering the requests from user and replies from servers. As it runs in asynchronous model, it is no need to wait for client and server to be free at the same time.&lt;br /&gt;&lt;br /&gt;In transactional MOM and RPC, the message queue is divided, distributed into queues and maintained at queue managers. The messages queues can be integrated for direct transaction processing and allow to commit or undone.&lt;br /&gt;&lt;br /&gt;As a result, as the queue is divided, the load of the servers is then evenly distributed. (Mahmoud 2004)&lt;br /&gt;&lt;br /&gt;4. Why is a two-phase commit protocol better than a one-phrase commit protocol?&lt;br /&gt;&lt;br /&gt;The two-phrase commit protocol is better than one-phrase protocol. It is because the two phrase protocol confirm the transaction is received and recoverable before the transaction transofrm and commit. In case of the system fail, the transaction can be recovered or processed through the protocol. (Zurich)&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;PCMAG.COM (n.d.), Definition of: TP monitor,Retrieved 14 May 2009 from http://www.pcmag.com/encyclopedia_term/0,2542,t=TP+monitor&amp;i=53022,00.asp&lt;br /&gt;&lt;br /&gt;PCMAG.COM (n.d.), Definition of: two-phase commit, Retrieved 14 May 2009 from http://www.pcmag.com/encyclopedia_term/0,2542,t=two-phase+commit&amp;i=53281,00.asp&lt;br /&gt;&lt;br /&gt;Zurich, ETH (n.d.), Message Oriented Middleware (MOM), Retrieved 15 May 2009 from http://www.iks.inf.ethz.ch/education/ws04/eai/Lecture-8.pdf&lt;br /&gt;&lt;br /&gt;Zurich, ETH (n.d.), Message Oriented Middleware (MOM), Retrieved 15 May 2009 from http://www.iks.inf.ethz.ch/education/ws03/eai/Lecture-5.pdf&lt;br /&gt;&lt;br /&gt;Kenneth M. A. (2006), http://www.cs.colorado.edu/~kena/classes/7818/f06/lectures/03/index.html&lt;br /&gt;&lt;br /&gt;softwareag.com (2006), TP/OS Interface, Retrieved 15 May 2009 from https://cis.tamu.edu/systems/database/manuals/NAT421/arc/tp_mf_0040.htm&lt;br /&gt;&lt;br /&gt;PCMAG.COM (2009), Definition of: TP monitor,  Retrieved 15 May 2009 from http://www.pcmag.com/encyclopedia_term/0,2542,t=TP+monitor&amp;i=53022,00.asp&lt;br /&gt;&lt;br /&gt;Gray J., Reuter A. (1993), Transaction Processing: Concepts and Techniques, Morgan Kaufmann Publisher, p. 363&lt;br /&gt;&lt;br /&gt;Mahmoud Q. H. (2004), Middleware for communications, John Wiley and Sons, p. 65-66&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-1541039395683475142?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/1541039395683475142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-19.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/1541039395683475142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/1541039395683475142'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-19.html' title='Exercise 19: TP monitors and transaction protocols'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PRSkEjMOAcs/ShJgGyN_yiI/AAAAAAAAALc/Z_cQqAFyk0c/s72-c/tp_mon_mf.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-8308026905571304108</id><published>2009-05-11T17:14:00.009+08:00</published><updated>2009-05-19T00:42:23.195+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 18'/><title type='text'>Exercise 18: Threading demostration in Python</title><content type='html'>Source Code of the threaddemo.py&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShGK63DLqNI/AAAAAAAAALU/lJYuqUxHYU0/s1600-h/ex18.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 100px; height: 200px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/ShGK63DLqNI/AAAAAAAAALU/lJYuqUxHYU0/s200/ex18.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5337199777225091282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Process Explain:&lt;br /&gt;In this demo, the first part is defining the objects, variables and values.&lt;br /&gt;&lt;br /&gt;The second part defining the common variable which will be access by the threads.&lt;br /&gt;The third part is the major part of the threaddemo.&lt;br /&gt;During the main program runs, the program acquire the lock for the the common variable and add a value into it. A delay of a random time is started just after the release of the common variable. At this moment, the other thread can be created by the main program. After the delay is end, the thread acquire the lock again and reduce the variable for the number of running processes.&lt;br /&gt;&lt;br /&gt;Findings:&lt;br /&gt;According to the result provided with the exercise, the longer the wait time o the thread, the later end of the process. This program favor the smaller program. The smaller thread uses the waiting time of the long waited thread to get its job done. Thread in this program simulate the multi-tasking environment to a common resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-8308026905571304108?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/8308026905571304108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-18.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8308026905571304108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8308026905571304108'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-18.html' title='Exercise 18: Threading demostration in Python'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PRSkEjMOAcs/ShGK63DLqNI/AAAAAAAAALU/lJYuqUxHYU0/s72-c/ex18.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6343246323420531794</id><published>2009-05-11T17:14:00.006+08:00</published><updated>2009-05-13T13:51:27.835+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 17'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 17: Concurrency terms</title><content type='html'>Find definitions for eight terms and concepts used in threaded programming: &lt;br /&gt;&lt;br /&gt;1. Thread Synchronisation &lt;br /&gt;&lt;br /&gt;Daelin stated that thread synchronization helps to prevent the threads created to change the value of a variable at the same time. A 'lock' is applied for the process which gain the right to use the variable. The other thread will wait till the 'lock' applied on the variable to release. In multiple threads environment, it is used to prevent the corruption of program data.&lt;br /&gt;&lt;br /&gt;2. Locks &lt;br /&gt;&lt;br /&gt;There are two types of lock, read and write lock. It is used to ensuring only one thread can access the resource at a time to prevent conflict. (Ince)&lt;br /&gt;&lt;br /&gt;3. Deadlock &lt;br /&gt;&lt;br /&gt;According to Ince (2004), deadlock is defined as "where two threads cannot proceed becuse each is holding resources required by the other."&lt;br /&gt;&lt;br /&gt;4. Semaphores &lt;br /&gt;&lt;br /&gt;"A semaphore is a protected variable or abstract data type which constitutes the classic method for restricting access to shared resources such as shared memory in a multiprogramming environment." (Wikipedia)&lt;br /&gt;&lt;br /&gt;5. Mutex (mutual exclusion) &lt;br /&gt;&lt;br /&gt;Galvin (1994) defined that mutual exclusion condition exists "If process Pi is executing in its critical section, then no other processes can be executing in their critical section."&lt;br /&gt;&lt;br /&gt;6. Thread &lt;br /&gt;&lt;br /&gt;Ince (2004) stated that thread is "An independent execution of some program code."&lt;br /&gt;&lt;br /&gt;7. Event &lt;br /&gt;&lt;br /&gt;The Microsoft Developer Network stated that event is "Represents the state of an event, such as the element in which the event occurred, the state of the keyboard keys, the location of the mouse, and the state of the mouse buttons."&lt;br /&gt;&lt;br /&gt;8. Waitable timer.&lt;br /&gt;&lt;br /&gt;In Microsoft Developer Network, it defined waitable timer as "a waitable timer object is a synchronization object whose state is set to signaled when the specified due time arrives."&lt;br /&gt;&lt;br /&gt;It also stated that there are three types of timer - manual-reset, synchronization and periodic timer and is defined in MSDN as follows.&lt;br /&gt;&lt;br /&gt;"manual-reset timer - A timer whose state remains signaled until SetWaitableTimer is called to establish a new due time.&lt;br /&gt;&lt;br /&gt;synchronization timer - A timer whose state remains signaled until a thread completes a wait operation on the timer object.&lt;br /&gt;&lt;br /&gt;periodic timer - A timer that is reactivated each time the specified period expires, until the timer is reset or canceled. A periodic timer is either a periodic manual-reset timer or a periodic synchronization timer."&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Galvin, S. (1994), Operating System Concepts 4ed, Addison Wesley&lt;br /&gt;&lt;br /&gt;Ince, D. (2004), Developing distributed and e-commerce applications 2nd edition, Pearson education limited&lt;br /&gt;&lt;br /&gt;Microsoft Developer Network (n.d.), event Object, Retrieved 11 May 2009 from http://msdn.microsoft.com/en-us/library/ms535863(VS.85).aspx&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Semaphore (programming), Retrieved 11 May 2009 from http://en.wikipedia.org/wiki/Semaphores&lt;br /&gt;&lt;br /&gt;WikiAnswer (n.d.), What is Thread Synchronization?, Retrieved 12 May 2009 from http://wiki.answers.com/Q/What_is_Thread_Synchronization&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6343246323420531794?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6343246323420531794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6343246323420531794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6343246323420531794'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-17.html' title='Exercise 17: Concurrency terms'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-8608327965911878511</id><published>2009-05-11T17:13:00.013+08:00</published><updated>2009-05-29T17:26:33.835+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 16'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 16: Authentication and Encryption systems</title><content type='html'>1. Visit an e-commerce website and survey the mode of payment allowed. Would you trust the site with your business?&lt;br /&gt;&lt;br /&gt;I have visited the eBay. In the &lt;a href="http://pages.ebay.com/help/pay/methods.html"&gt;eBay help page&lt;/a&gt;, it list the following payment methods:&lt;br /&gt;&lt;br /&gt;a. PayPal&lt;br /&gt;b. Credit cards and debit cards&lt;br /&gt;c. Moneybookers&lt;br /&gt;d. Paymate &lt;br /&gt;e. ProPay&lt;br /&gt;f. Pay upon pickup&lt;br /&gt;g. Escrow&lt;br /&gt;&lt;br /&gt;I would like to trust the eBay and PayPal for the business. It is because they are well known and famous company. The most important point is that they protect both merchant and buyer for business in its ecommerce website.&lt;br /&gt;&lt;br /&gt;2. What measures should e-commerce provide to create trust among their potential customers? What measures can be verified by the customer?&lt;br /&gt;&lt;br /&gt;a. Payment and its status should be traceable. (traceability)&lt;br /&gt;b. Provide purchase protection &lt;br /&gt;c. Prevent seller to obtain buyer's credit card number when using international wire payment such as PayPal (anonymous)&lt;br /&gt;d. Provide encryption and authentication for information transfer.&lt;br /&gt;&lt;br /&gt;3. Visit the Verisign web site - what solutions does it offer for e-commerce?&lt;br /&gt;&lt;br /&gt;The versign provide SSL certification for authentication. The certification is used to certify the identity of the individuals and website. By using the PKI infrastructure, it is possible to authenticate the website and individual through the certificate and the three way handshare mechanism.&lt;br /&gt;&lt;br /&gt;4. Visit the TRUSTe web site. Describe what services and solutions are offered.&lt;br /&gt;&lt;br /&gt;The TRUSTe web site provides online privacy services to individual and businesses.&lt;br /&gt;According to the &lt;a href="http://www.truste.org/pdf/TRUSTe_Programs_Sheet.pdf"&gt;factsheet&lt;/a&gt; from TRUSTe, they provide the following solutions for protecting privacy.&lt;br /&gt;&lt;br /&gt;"Web Privacy Seal Marks companies that adhere to TRUSTe’s strict privacy principles and comply with the TRUSTe Watchdog Dispute Resolution System. &lt;br /&gt;&lt;br /&gt;EUSafe Harbor Seal Certifies compliance with the EU Directive on Data Protection, specifically the Safe Harbor Framework, to avoid trade disruptions resulting from international privacy laws. &lt;br /&gt;&lt;br /&gt;Email Privacy Seal Reinforces companies’ commitments to good email practices by certifying email disclosures, reputation, and unsubscribe policies. &lt;br /&gt;&lt;br /&gt;Trusted Download Program Provides market incentives for adware and other software companies to clearly and unavoidably communicate key functionalities and obtain informed consumer consent prior to download. &lt;br /&gt;&lt;br /&gt;Site Reputation Services Reduces the risk of attack by using technology to scan user-generated or third-party content for potential malicious content before it’s uploaded to a Web site"&lt;br /&gt;&lt;br /&gt;5. Get the latest PGP software from http://web.mit.edu/network/pgp.html; install it on two machines and encrypt a message on one machine and decrypt it on the other. Report your findings.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShPQW_Z-J4I/AAAAAAAAALk/SDp5UxqHrcw/s1600-h/pgp.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ShPQW_Z-J4I/AAAAAAAAALk/SDp5UxqHrcw/s200/pgp.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5337839076760233858" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. PGP software is not found at URL provided&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1qT7LMI/AAAAAAAAAQU/cxyL_FcgBUM/s1600-h/image001.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1qT7LMI/AAAAAAAAAQU/cxyL_FcgBUM/s320/image001.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5340730219743096002" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Install screen of PGP Desktop&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1VQGsJI/AAAAAAAAAQM/wBtUQq9ysC8/s1600-h/image003.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1VQGsJI/AAAAAAAAAQM/wBtUQq9ysC8/s320/image003.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5340730214089928850" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 3. Key Generation Assistant&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1Rg2BZI/AAAAAAAAAQE/Rn4A1ClRHsg/s1600-h/image005.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 294px; height: 320px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1Rg2BZI/AAAAAAAAAQE/Rn4A1ClRHsg/s320/image005.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5340730213086397842" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 4. Encryption settings for keys&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1HjNybI/AAAAAAAAAP8/YASSppkzs54/s1600-h/image006.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh4V1HjNybI/AAAAAAAAAP8/YASSppkzs54/s320/image006.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5340730210411989426" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 5. Enter passphrase for private key&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh4V07GzXYI/AAAAAAAAAP0/kzMX4giArxM/s1600-h/image007.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh4V07GzXYI/AAAAAAAAAP0/kzMX4giArxM/s320/image007.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5340730207071591810" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 6. Generate the key and sub key&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phogniUI/AAAAAAAAASE/xtF7Zg49UtE/s1600-h/1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 228px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phogniUI/AAAAAAAAASE/xtF7Zg49UtE/s320/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174078359701826" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 7. Secure a plain text file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phb7ctSI/AAAAAAAAAR8/Ga2-7gf4jAo/s1600-h/2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phb7ctSI/AAAAAAAAAR8/Ga2-7gf4jAo/s320/2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174074982577442" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 8. Add key to secure file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh-phWI7LaI/AAAAAAAAAR0/Zcdy8J9JXYk/s1600-h/3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sh-phWI7LaI/AAAAAAAAAR0/Zcdy8J9JXYk/s320/3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174073428487586" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 9. Sign and Save the secured file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phPpRbbI/AAAAAAAAARs/yngl_5RLczI/s1600-h/4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 163px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-phPpRbbI/AAAAAAAAARs/yngl_5RLczI/s320/4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174071685115314" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 10. Compare plain text and encrypted file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-pg5LmmZI/AAAAAAAAARk/8cY0jGxP2i8/s1600-h/5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 225px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-pg5LmmZI/AAAAAAAAARk/8cY0jGxP2i8/s320/5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174065655093650" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 11. Decrypt the encrypted file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-ptSUc_gI/AAAAAAAAASc/9u6Dihcw8l4/s1600-h/6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 227px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sh-ptSUc_gI/AAAAAAAAASc/9u6Dihcw8l4/s320/6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174278561529346" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 12. Enter the key to decrypt&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh-pl73jrAI/AAAAAAAAASM/sJGycefxj7I/s1600-h/7.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 281px; height: 287px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sh-pl73jrAI/AAAAAAAAASM/sJGycefxj7I/s320/7.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5341174152275667970" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 13. Decrypted file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've download the trial version at &lt;a href="http://www.pgp.com"&gt;www.pgp.com&lt;/a&gt;. When I install the PGP program, it generates two keys, one of them is private and one is for public. During the encryption of the plain text file I made, it asked to add a signature on to the encrypted file.&lt;br /&gt;&lt;br /&gt;6. The use of digital certificates and passports are just two examples of many tools for validating legitimate users and avoiding consequences such as identity theft. What others exist?&lt;br /&gt;&lt;br /&gt;Biometrics&lt;br /&gt;It is used to identify the person by recognizing the physiological charactertics such as retina, fingerprint, face recognition.&lt;br /&gt;&lt;br /&gt;Smart Card&lt;br /&gt;It is a chip with integrated circuit with non-volatile and volatile storage components and microprocessor components. It is used to authenticate himself/herself to sign-on the company.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-8608327965911878511?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/8608327965911878511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8608327965911878511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8608327965911878511'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/exercise-16.html' title='Exercise 16: Authentication and Encryption systems'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PRSkEjMOAcs/ShPQW_Z-J4I/AAAAAAAAALk/SDp5UxqHrcw/s72-c/pgp.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7922224699638419303</id><published>2009-05-08T19:24:00.000+08:00</published><updated>2009-05-08T19:31:45.091+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscATwork'/><title type='text'>Not my week</title><content type='html'>During these weeks, my computer is down (the mainboard is dead) and need to be rebuilt.&lt;br /&gt;At work, a special guess is going to visit the office. We are busying to prepare the things such as posters, computer labs for the visitor such that I actually do not have time to work on the blog.&lt;br /&gt;All I can do is try to rebuild my computer as fast as I can and do some of the work during lunch time at office.&lt;br /&gt;&lt;br /&gt;Just not my day and week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7922224699638419303?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7922224699638419303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/05/not-my-week.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7922224699638419303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7922224699638419303'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/05/not-my-week.html' title='Not my week'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-520433763147986464</id><published>2009-04-27T12:00:00.005+08:00</published><updated>2009-05-13T22:56:59.235+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Protecting and archiving data</title><content type='html'>1. What makes a firewall a good security investment? Accessing the Internet, find two or three firewall vendors. Do they provide hardware, software or both?&lt;br /&gt;&lt;br /&gt;Elias (2003) described that firewall acts as a sheild to prevent data and information inside the network to the public. Firewall is a hardware and software tool defines control and access of network and computers.&lt;br /&gt;&lt;br /&gt;Firewall vendors:&lt;br /&gt;&lt;a href="http://www.checkpoint.com/"&gt;Check Point Firewall&lt;/a&gt;&lt;br /&gt;It is a security vendor, it sells hardware appliance and software firewall.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kerio.com/"&gt;Kerio Technologies&lt;/a&gt;&lt;br /&gt;It is a security vendor, it sells software firewall only.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.comodo.com/"&gt;Comodo&lt;/a&gt;&lt;br /&gt;It is a security vendor, it sells software firewall and integrated security solutions.&lt;br /&gt;&lt;br /&gt;2. Find out if your university or workplace has a backup policy in place. Is it followed and enforced?&lt;br /&gt;&lt;br /&gt;In my workplace, there is a backup policy for the main servers. It is a enforced policy. In the policy, all files and data are backup daily to the backup server. As the backup server uses hard drives to store data, RAID-5 system is used and the backup server is located away from the main servers.&lt;br /&gt;&lt;br /&gt;A tape backup system is also implemented to some of the servers. It backup data in a full backup manner. The tapes are rotated and changed every two weeks and the tape with the data is stored away from the server and tape backup system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Most of the antivirus software perform an active scanning of the user activity on the Internet, detecting downloads and attachments in e-mails. Hackers have readily available resources to create new viruses. How easy is it to find a virus writing kit? Search the Internet and find such a tool. For example, see what you can find at http://vx.netlux.org/dat/vct.shtml.&lt;br /&gt;&lt;br /&gt;In the http://vx.netlux.org, the virus can be easily generated with the generator.&lt;br /&gt;Each of them generate different kind of virus.&lt;br /&gt;&lt;br /&gt;As I searched with keyword "create computer virus", I found a blog from Bendib (Nov 22, 2008. 6:35 PM) posted a virus source code in his &lt;a href="http://www.instructables.com/community/How-do-you-make-a-computer-virus-that-deletes-prog/&lt;br /&gt;"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As I search again in Google with keyword "computer virus generator", one of the computer security &lt;a href-"http://www.secureurpc.com/secureurpc-articles/create-computer-virus.php"&gt;website&lt;/a&gt; shows the name of the generator. I then search again with the name listed in the security website. It is easy to find the generator with the search engines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-520433763147986464?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/520433763147986464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-15-protecting-and-archiving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/520433763147986464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/520433763147986464'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-15-protecting-and-archiving.html' title='Exercise 15: Protecting and archiving data'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-5696912042140284987</id><published>2009-04-27T11:59:00.002+08:00</published><updated>2009-04-27T13:42:42.246+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 14'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 14: Electronic payments and security II</title><content type='html'>1. What are cookies and how are they used to improve security?&lt;br /&gt;&lt;br /&gt;As the web pages from the web servers are stateless, cookies is developed to store the information in users' computer for maintaining the interaction between the web page changes within a website and revisit of the web site by user. (W3.org)&lt;br /&gt;&lt;br /&gt;According to W3.org, there is a attribute in cookies. The attribute validates the information send and through from the users' browser to the originating server/website but not others, this mechanism prevents the information in cookies not to be collected by others.&lt;br /&gt;&lt;br /&gt;2. Can the use of cookies be a security risk?&lt;br /&gt;&lt;br /&gt;The common information contained in cookies are:&lt;br /&gt;a. the session ID or authorization information&lt;br /&gt;b. issue time and date of the cookie&lt;br /&gt;c. time of expiration&lt;br /&gt;d. the IP address of the browser the cookie was issued to&lt;br /&gt;e. a message authenticity check (MAC) code &lt;br /&gt;&lt;br /&gt;Although the mechanism prevents the information send to other servers, there is still security risk when browsing the websites. The adverising agent in the internet promote the website holder to post advertisement in their website. As a result, when a user browse the website which subscribe the agent, the information will be logged in their cookies. The collected information in the cookies with the IP address contained can be used to analyze for the user habbits and interests. The privacy of the user is affected.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Lincoln D. S., John N. S. (2003), The World Wide Web Security FAQ, Retrieved 27 April 2009 from http://www.w3.org/Security/Faq/wwwsf2.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-5696912042140284987?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/5696912042140284987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-14-electronic-payments-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5696912042140284987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/5696912042140284987'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-14-electronic-payments-and.html' title='Exercise 14: Electronic payments and security II'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7354515407079569940</id><published>2009-04-27T11:58:00.004+08:00</published><updated>2009-05-23T15:08:28.925+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 13'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 13: Electronic payments and security I</title><content type='html'>1. List and describe your experiences with a secure Web site. Some examples may be:&lt;br /&gt;• University enrolment;&lt;br /&gt;• online banking, auctions, real estate;&lt;br /&gt;• booking a cheap air ticket or concert ticket;&lt;br /&gt;• shopping online for a book, software or a CD.&lt;br /&gt;&lt;br /&gt;I have tried to apply jobs with the secure website. The website is established by the Hong Kong government with Hong Kong University. The sys tem is named &lt;a href="http://hkucsb.hku.hk:8080/advertsys/allvacancyE.html&lt;br /&gt;"&gt;Government Vacancies Enquiry System &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When I enter the application form at the site, a lock liked symbol is located on the status bar of the browser. The system does not allow to use the forward and backward button on the browser to go back or forth. Changes can be made by selecting the page before the end of entering information.&lt;br /&gt;&lt;br /&gt;Finally, a agreement is to be signed by selecting the check box and press SUBMIT button to send the form.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. What is SET and how does it compare to SSL as a platform for secure electronic &lt;br /&gt;transaction? Is SET in common use?&lt;br /&gt;&lt;br /&gt;Based on the Bernstein, Bhimani, Schultz, Siegel (1996), In term of protocol the SSL is a general purpose protocol between browser and server while SET is a special protocol to link up between customer, merchant, card issuing bank and merchant’s bank.&lt;br /&gt;&lt;br /&gt;Interm of keys and signatures, SSL uses a pair of keys for encryption and digital signature but SET uses two pairs of keys for separating encryption and digital signature.&lt;br /&gt;&lt;br /&gt;The SET is not a common use protocol becsue it only works with credit/debit card.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Bernstein T., Bhimani A. B., Schultz E., Siegel C. A. (1996), Internet Security for Business, Wiley, p.332-351&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7354515407079569940?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7354515407079569940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-13-electronic-payments-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7354515407079569940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7354515407079569940'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-13-electronic-payments-and.html' title='Exercise 13: Electronic payments and security I'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7634049688056448955</id><published>2009-04-27T11:57:00.005+08:00</published><updated>2009-05-27T20:32:46.948+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 12'/><title type='text'>Exercise 12: Designing for a secure framework</title><content type='html'>1. Find out about SET and the use of RSA 128-bit encryption for e-commerce.&lt;br /&gt;&lt;br /&gt;SET stands for Secure Electronic Transaction. It is a protocol designed for secure credit and debit card transaction between customers and merchants. With this protocol, all messages including ordering and payment information are encrypted. As both parties using SET requires digital certificate, any modification of the data and information can be altered. As the merchants complete the transaction with the bank but not the customer directly, the privacy of customer is retained.&lt;br /&gt;&lt;br /&gt;RSA 128-bit encryption is a encryption method for symmertic keys for the certificate issued to merchants and clients who uses SET for transactions.&lt;br /&gt;&lt;br /&gt;RSA recommended that the 128-bits as a minimum symmetric security level till 2013 and beyond. This level requires the minimum RSA key size to be at 3072bits.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. What can you find out about network and host-based intrusion detection systems?&lt;br /&gt;&lt;br /&gt;Wikipedia (2009) stated that "A network intrusion detection system (NIDS) is an independent platform which identifies intrusions by examining network traffic and monitors multiple hosts. Network Intrusion Detection Systems gain access to network traffic by connecting to a hub, network switch configured for port mirroring, or network tap. An example of a NIDS is Snort."&lt;br /&gt;It is found to be a packet level analyzer for intrusion.&lt;br /&gt;&lt;br /&gt;Wikipedia (2009) stated that "A host-based intrusion detection system (HIDS) consists of an agent on a host which identifies intrusions by analyzing system calls, application logs, file-system modifications (binaries, password files, capability/acl databases) and other host activities and state. An example of a HIDS is OSSEC."&lt;br /&gt;It is found to be a application level analyzer for intrusion.&lt;br /&gt;&lt;br /&gt;3. What is ‘phishing’?&lt;br /&gt;Phishing is a kind of technique to collect victim's user name and password for criminal activities.&lt;br /&gt;&lt;br /&gt;It always uses emails that pretent itself as an enterprise or organization and send to the users. The email mostly used to acknowledge the user to change his/her password with a specified web address that similar to the real address.&lt;br /&gt;&lt;br /&gt;When user click on the web address provided by that email, it leads the user to a fake website, which look and feel as the real website to collect the personal information such as user name and password of a bank account. It usually lead financial loss on victim user. (webopedia, Wikipedia)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Wikipedia (2009), Intrusion detection system, Retrieved 24 May 2009 from http://en.wikipedia.org/wiki/Intrusion-detection_system&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Phishing, Retrieved 28 April 2009 from http://en.wikipedia.org/wiki/Intrusion-detection_system&lt;br /&gt;&lt;br /&gt;webopedia (n.d.), All About Phishing, Retrieved 28 April 2009 from http://www.webopedia.com/DidYouKnow/Internet/2005/phishing.asp&lt;br /&gt;&lt;br /&gt;Secure Electronic Transaction (SET), Retrieved 4 May 2009 from http://lyle.smu.edu/~nair/courses/7349/SET.ppt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7634049688056448955?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7634049688056448955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-12-designing-for-secure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7634049688056448955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7634049688056448955'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/exercise-12-designing-for-secure.html' title='Exercise 12: Designing for a secure framework'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6068195987876611110</id><published>2009-04-15T13:05:00.001+08:00</published><updated>2009-04-15T13:06:19.280+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asking and Answering'/><title type='text'>About Elevator pitch</title><content type='html'>I just wanna to know if we need to put the script into our blog?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6068195987876611110?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6068195987876611110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/about-elevator-pitch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6068195987876611110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6068195987876611110'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/about-elevator-pitch.html' title='About Elevator pitch'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6586730449153639671</id><published>2009-04-15T11:16:00.003+08:00</published><updated>2009-04-15T11:20:47.060+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Asking and Answering'/><title type='text'>Asking and Answering</title><content type='html'>This is asking and answering section, lets discuss the problems on the exercises and workshops!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6586730449153639671?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6586730449153639671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/asking-and-answering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6586730449153639671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6586730449153639671'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/asking-and-answering.html' title='Asking and Answering'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6473610397054997379</id><published>2009-04-15T05:38:00.005+08:00</published><updated>2009-05-27T21:32:25.266+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Evaluation Report'/><title type='text'>Evaluation Report 1</title><content type='html'>Script is finished, Audio file prepared.&lt;br /&gt;Fail to put into MS Word for upload.&lt;br /&gt;I uploaded MP3 formatted file to EAST instead.&lt;br /&gt;&lt;br /&gt;Evaluation Report also can be accessed with Sky Drive:&lt;br /&gt;http://cid-df4d3bf95db02d9e.skydrive.live.com/browse.aspx/.Public?lc=1033&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6473610397054997379?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6473610397054997379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6473610397054997379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6473610397054997379'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/blog-post.html' title='Evaluation Report 1'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-3530909385051092729</id><published>2009-04-14T09:36:00.001+08:00</published><updated>2009-04-15T01:00:25.669+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 0: Developer ot Project manager decision</title><content type='html'>I have decision to be a developer on the project team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-3530909385051092729?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/3530909385051092729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-0-riding-rails-with-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3530909385051092729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/3530909385051092729'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-0-riding-rails-with-ruby.html' title='Workshop 0: Developer ot Project manager decision'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6853672016607755932</id><published>2009-04-13T06:33:00.022+08:00</published><updated>2009-04-15T22:42:04.027+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 3'/><title type='text'>Workshop 3: Online Taxi Booking System: MySQL and Database design</title><content type='html'>a. Create passengers table&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXvL8j7hoI/AAAAAAAAAJ8/r3TyacTCDxE/s1600-h/3-1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXvL8j7hoI/AAAAAAAAAJ8/r3TyacTCDxE/s200/3-1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324925122949908098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b. Structure of the table passengers&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXvLpajzCI/AAAAAAAAAJ0/621oCILdwus/s1600-h/3-2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXvLpajzCI/AAAAAAAAAJ0/621oCILdwus/s200/3-2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324925117810330658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;c. Create data 1&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXuTX8tGdI/AAAAAAAAAJs/gMqNvRd8pnE/s1600-h/3-3+add+data.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXuTX8tGdI/AAAAAAAAAJs/gMqNvRd8pnE/s200/3-3+add+data.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324924151049034194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;d. Create data 2&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeXuTez-0EI/AAAAAAAAAJk/La9m_DgKc6c/s1600-h/3-3.2+add+data.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeXuTez-0EI/AAAAAAAAAJk/La9m_DgKc6c/s200/3-3.2+add+data.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324924152891494466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e. Read&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXuTAOk0uI/AAAAAAAAAJc/kKwjZXmbwSg/s1600-h/3-4+select.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXuTAOk0uI/AAAAAAAAAJc/kKwjZXmbwSg/s200/3-4+select.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324924144681538274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;f. Update&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXuTCVNaLI/AAAAAAAAAJU/6xXRFtDEXUc/s1600-h/3-5+update.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXuTCVNaLI/AAAAAAAAAJU/6xXRFtDEXUc/s200/3-5+update.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324924145246234802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;g. Destroy&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeXuS2l0V8I/AAAAAAAAAJM/esbTkKqEXCQ/s1600-h/3-6+delete.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeXuS2l0V8I/AAAAAAAAAJM/esbTkKqEXCQ/s200/3-6+delete.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324924142094669762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Set up the MySQL tools&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeSxPmePbSI/AAAAAAAAAIU/O7_Ym6-yHQI/s1600-h/1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeSxPmePbSI/AAAAAAAAAIU/O7_Ym6-yHQI/s200/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324575541042310434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Rails will setup a new application directory for each of your web application projects.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeSxPU3093I/AAAAAAAAAIM/4UmDrDKT4pY/s1600-h/2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 110px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeSxPU3093I/AAAAAAAAAIM/4UmDrDKT4pY/s200/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324575536317790066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. One Rails is running you at http://localhost:3000, you need to configure database access. Connect to the database is specified in the config/database.yml file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSxPQomZxI/AAAAAAAAAIE/jIzHk5nhP_Y/s1600-h/3.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSxPQomZxI/AAAAAAAAAIE/jIzHk5nhP_Y/s200/3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324575535180179218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;MySQL GUI connection settings&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXxsh5U0hI/AAAAAAAAAKU/KwCo7hzVj_U/s1600-h/mysql+connect+set.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 155px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXxsh5U0hI/AAAAAAAAAKU/KwCo7hzVj_U/s200/mysql+connect+set.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324927881750827538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;MySQL Administror window&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXxsm3--TI/AAAAAAAAAKM/rX7N9_zcGhk/s1600-h/mysql+admin.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 138px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXxsm3--TI/AAAAAAAAAKM/rX7N9_zcGhk/s200/mysql+admin.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324927883087378738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Run select SQL command in MySQL GUI&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXxsdmrdSI/AAAAAAAAAKE/GVbLh9xcTRw/s1600-h/mysql+select.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 117px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeXxsdmrdSI/AAAAAAAAAKE/GVbLh9xcTRw/s200/mysql+select.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324927880598877474" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6853672016607755932?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6853672016607755932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6853672016607755932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6853672016607755932'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-3.html' title='Workshop 3: Online Taxi Booking System: MySQL and Database design'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXvL8j7hoI/AAAAAAAAAJ8/r3TyacTCDxE/s72-c/3-1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-4691624864504616542</id><published>2009-04-13T06:33:00.020+08:00</published><updated>2009-04-15T16:06:26.974+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 4'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 4: Riding the Rails with Ruby</title><content type='html'>To do:&lt;br /&gt;&lt;br /&gt;1. Spend some time moving your way through the 46 Ruby coding examples in the Ruby tutorial with code from http://www.fincher.org/tips/Languages/Ruby/&lt;br /&gt;&lt;br /&gt;In this website, there are a lot of example for coding with Ruby.&lt;br /&gt;&lt;br /&gt;2. What are the syntax difference in the way that Ruby and Javascript use the if statement?&lt;br /&gt;&lt;br /&gt;In Javascript, the syntax of the if statement is as follows:&lt;br /&gt;&lt;br /&gt;if (condition)&lt;br /&gt;{&lt;br /&gt;code to be executed if condition is true&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;code to be executed if condition is not true&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;if (time&lt;10) &lt;br /&gt;{&lt;br /&gt;document.write("&lt;b&gt;Good morning&lt;/b&gt;");&lt;br /&gt;}&lt;br /&gt;or&lt;br /&gt;if (time==11) &lt;br /&gt;{&lt;br /&gt;document.write("&lt;b&gt;Lunch-time!&lt;/b&gt;");&lt;br /&gt;}&lt;br /&gt;or&lt;br /&gt;if(visitor == "teacher"){&lt;br /&gt; document.write("My dog ate my homework...");&lt;br /&gt;}else if(visitor == "principal"){&lt;br /&gt; document.write("What stink bombs?");&lt;br /&gt;} else {&lt;br /&gt; document.write("How do you do?");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In Ruby, the if statement is as follow:&lt;br /&gt;&lt;br /&gt;if( x &lt; 7 &amp;&amp; x &gt; 12 ) { ... }&lt;br /&gt;or&lt;br /&gt;if x.between?(7,12) do ...&lt;br /&gt;or&lt;br /&gt;if income &lt; 10000&lt;br /&gt;  rate = 0.02&lt;br /&gt;elsif income &lt; 30000&lt;br /&gt;  rate = 0.28&lt;br /&gt;else&lt;br /&gt;  rate = 0.5&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;The else if used in the Javascript, in Ruby, it uses elsif. The Ruby language does not requires to user {} mark in beginning and the end of the if statement. There is no function x.between?(7, 12) in Javascript.&lt;br /&gt;&lt;br /&gt;3. While Ruby and Python are quite similar, can you find some similarities between Ruby and Javascript?&lt;br /&gt;&lt;br /&gt;Both Ruby and Javascript are requiring interpeter to run. Both are object-oriented.&lt;br /&gt;Both language like C++ and Java.&lt;br /&gt;&lt;br /&gt;Challenge Problems:&lt;br /&gt;&lt;br /&gt;1. Create, test and debug a Ruby program called dognames.rb or catnames.rb to accept 3 names from the keyboard and to display each name on the screen in alphabetical order WITHOUT using a data structure such as a list.&lt;br /&gt;&lt;br /&gt;Code of the dognames.rb&lt;br /&gt;&lt;br /&gt;def dognames&lt;br /&gt;  puts "Enter first dog name : "&lt;br /&gt;  name1 = gets&lt;br /&gt;  puts "Enter second dog name : "&lt;br /&gt;  name2 = gets&lt;br /&gt;  puts "Enter third dog name : "&lt;br /&gt;  name3 = gets&lt;br /&gt;&lt;br /&gt;  myarray=[name1,name2,name3]&lt;br /&gt;&lt;br /&gt;  puts "Sorted dogs names:"&lt;br /&gt;  print "First dog is ", myarray.sort[0]&lt;br /&gt;  print "Second dog is ", myarray.sort[1]&lt;br /&gt;  print "Third dog is ", myarray.sort[2]&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;dognames&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Write a Ruby program called fizzbuzz.rb that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;def fizzbuzz&lt;br /&gt;  1.upto(100) do |temp|&lt;br /&gt;    if temp % 5 == 0 and temp % 3 == 0&lt;br /&gt;      puts "FizzBuzz"&lt;br /&gt;    elsif temp % 5 == 0&lt;br /&gt;      puts "Buzz"&lt;br /&gt;    elsif temp % 3 == 0&lt;br /&gt;      puts "Fizz"&lt;br /&gt;    else&lt;br /&gt;      puts temp&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;fizzbuzz&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeWVcblYOmI/AAAAAAAAAIs/LzhmZQ785XY/s1600-h/w4ch2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 128px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeWVcblYOmI/AAAAAAAAAIs/LzhmZQ785XY/s200/w4ch2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324826450108889698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Compare the Ruby and Python versions of the dog years calculator:&lt;br /&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;# The Dog year calculator program called dogyears.rb&lt;br /&gt;&lt;br /&gt;def dogyears&lt;br /&gt;# get the original age&lt;br /&gt;  puts “Enter your age (in human years): "&lt;br /&gt;  age = gets # gets is a method for input from keyboard&lt;br /&gt;  puts # is a method or operator for screen output&lt;br /&gt;&lt;br /&gt;#do some range checking, then print result&lt;br /&gt;  if age &lt; 0&lt;br /&gt;    puts "Negative age?!?  I don't think so."&lt;br /&gt;  elsif age &lt; 3 or age &gt; 110&lt;br /&gt;    puts "Frankly, I don't believe you."&lt;br /&gt;  else&lt;br /&gt;    puts "That's", age*7, "in dog years."&lt;br /&gt;  end&lt;br /&gt;dogyears&lt;br /&gt;&lt;br /&gt;Python&lt;br /&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;# The Dog year calculator program called dogyears.py&lt;br /&gt;&lt;br /&gt;def dogyears():&lt;br /&gt;# get the original age&lt;br /&gt;    age = input("Enter your age (in human years): ")&lt;br /&gt;    print       # print a blank line&lt;br /&gt;&lt;br /&gt;# do some range checking, then print result&lt;br /&gt;    if age &lt; 0:&lt;br /&gt;       print "Negative age?!?  I don't think so."&lt;br /&gt;    elif age &lt; 3 or age &gt; 110:&lt;br /&gt;       print "Frankly, I don't believe you."&lt;br /&gt;    else:&lt;br /&gt;       print "That's", age*7, "in dog years."&lt;br /&gt;&lt;br /&gt;### pause for Return key (so window doesn't disappear)&lt;br /&gt;    raw_input('press Return&gt;')&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    dogyears()&lt;br /&gt;main()&lt;br /&gt;&lt;br /&gt;By comparing both program, &lt;br /&gt;a. The Python version is longer than the Ruby version.&lt;br /&gt;b. The Ruby version does not require to define the main program to call the routine.&lt;br /&gt;c. It is required to provide a mechanism to pause the program to hold teh result in Python while Ruby is not.&lt;br /&gt;d. There is no function parameter required in Ruby program.&lt;br /&gt;e. Line break or no line break output are different reserved word (puts, print) in Ruby.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;br /&gt;Ruby Tutorial with Code Samples (n.d.), http://www.fincher.org/tips/Languages/Ruby/&lt;br /&gt;&lt;br /&gt;Selina D’S. (n.d.), T New Product Development with Ruby on Rails, Retrieve 10 April 2009 from www.aspiresys.com/WhitePapers/whitepaper_new_product_development-RoR_paper.pdf&lt;br /&gt;&lt;br /&gt;w3school (2009), JavaScript If...Else Statements, Retrieve 10 April 2009 from http://www.w3schools.com/JS/js_if_else.asp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-4691624864504616542?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/4691624864504616542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/4691624864504616542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/4691624864504616542'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-4.html' title='Workshop 4: Riding the Rails with Ruby'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/SeWVcblYOmI/AAAAAAAAAIs/LzhmZQ785XY/s72-c/w4ch2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-2023158316464046199</id><published>2009-04-13T06:33:00.016+08:00</published><updated>2009-04-15T13:20:19.797+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 2'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 2: Model View Controller design appraoch</title><content type='html'>To do:&lt;br /&gt;&lt;br /&gt;1. Setup a focus group (like a study group for peer learning) to work on the Ruby on Rails workshops via Interact tools as a class.&lt;br /&gt;&lt;br /&gt;A focus group was set for to work on Ruby on Rails workshops at &lt;a href="http://ltang18.blogspot.com"&gt;http://ltang18.blogspot.com&lt;/a&gt;&lt;br /&gt;I also joined the focus group by Dennis at &lt;a href="http://railsfocusgroup.blogspot.com/"&gt;http://railsfocusgroup.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. What is meant by "convention over configuration" and how does it reduce coding?&lt;br /&gt;&lt;br /&gt;3. Further work on understanding MVC:&lt;br /&gt;a. See the wiki at http://wiki.rubyonrails.org/rails/pages/UnderstandingMVC&lt;br /&gt;&lt;em&gt;The content does not available!&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;b. Do the MVC tutorial at http://wiki.squeak.org/squeak/1767&lt;br /&gt;The file MVCTutorial.zip is downloaded and studied.&lt;br /&gt;&lt;br /&gt;Challenge Problems:&lt;br /&gt;&lt;br /&gt;1. How is Rails structured to follow the MVC pattern?&lt;br /&gt;&lt;br /&gt;Model (ActiveRecord ) :&lt;br /&gt;The relationship between Object and Database is  maintained by Model. It also handles validation, association and transactions. The tables in the database is binded with the ActiveRecord library inside the Model. It interfaces Ruby program code and table to manipulates database records.&lt;br /&gt;&lt;br /&gt;View ( ActionView )&lt;br /&gt;The format for data presentation which is controlled by the controller and usually integrated with AJAX technology.&lt;br /&gt;When connection to Rail application, the embedded Ruby based system inside the ActionView library set templates for displaying data as a view.&lt;br /&gt;&lt;br /&gt;Controller ( ActionController ): &lt;br /&gt;Querying models and oranizing the data for different views are handled by controller. &lt;br /&gt;&lt;br /&gt;The ActionController inside the controller breaks the data for ActiveRecord (the database interface) and ActionView (the presentation engine). (tutorialspoint.com)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeQxAlpjYLI/AAAAAAAAAHc/NtshBQcBfvM/s1600-h/rails-framework.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeQxAlpjYLI/AAAAAAAAAHc/NtshBQcBfvM/s200/rails-framework.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5324434545634926770" /&gt;&lt;/a&gt;&lt;br /&gt;to be continued.&lt;br /&gt;Figure 1. Rails Framework (tutorialspoint.com)&lt;br /&gt;&lt;br /&gt;In Rails, the folder structure seperate the model, controller and view as follows:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSmSCrHsCI/AAAAAAAAAHs/UT_CSiXro4c/s1600-h/app.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 189px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSmSCrHsCI/AAAAAAAAAHs/UT_CSiXro4c/s200/app.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324563488344354850" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Rails folder structure to follow the MVC pattern&lt;br /&gt;&lt;br /&gt;2. Apply the MVC design approach to our Project: Online Taxi Booking System.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSo8p-RX_I/AAAAAAAAAH8/4AeCwpekNd4/s1600-h/1create.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 184px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeSo8p-RX_I/AAAAAAAAAH8/4AeCwpekNd4/s200/1create.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5324566419471425522" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 3. Interface for managing rails applications&lt;br /&gt;&lt;br /&gt;Online Taxi Booking System application skeleton is created by applying command:&lt;br /&gt;&lt;em&gt;rails OTBS&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeSoaTqhGaI/AAAAAAAAAH0/iu6uEmKA8v0/s1600-h/2structure.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 171px; height: 200px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeSoaTqhGaI/AAAAAAAAAH0/iu6uEmKA8v0/s200/2structure.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324565829367437730" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 4. The folder structre after applying command in rails_apps folder.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;tutorialspoint.com (n.d.), Ruby on Rails Framework, Retrieved 12 April 2009 from http://www.tutorialspoint.com/cgi-bin/printversion.cgi?tutorial=ruby-on-rails&amp;file=rails-framework.htm&lt;br /&gt;&lt;br /&gt;tutorialspoint.com (n.d.), Ruby on Rails Framework, Retrieved 12 April 2009 from http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm&lt;br /&gt;&lt;br /&gt;RailsGuiders (n.d.), Getting Started with Rails, Retrieved 12 April 2009 from http://guides.rubyonrails.org/getting_started.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-2023158316464046199?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/2023158316464046199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2023158316464046199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2023158316464046199'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-2.html' title='Workshop 2: Model View Controller design appraoch'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/SeQxAlpjYLI/AAAAAAAAAHc/NtshBQcBfvM/s72-c/rails-framework.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6520963623090444381</id><published>2009-04-13T06:32:00.004+08:00</published><updated>2009-04-15T21:53:05.775+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop 1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1: Setting up the model railway</title><content type='html'>The Project&lt;br /&gt;&lt;br /&gt;a. Login MySQL, create database and passenger_origin&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXmHQzA33I/AAAAAAAAAJE/3llehVbSD-s/s1600-h/1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXmHQzA33I/AAAAAAAAAJE/3llehVbSD-s/s200/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324915146877886322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b. Structure of the passenger_origin&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXmHbAcNKI/AAAAAAAAAI8/0Qngq8tOHCM/s1600-h/2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXmHbAcNKI/AAAAAAAAAI8/0Qngq8tOHCM/s200/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324915149618558114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;c. Create table passenger_destination and list structure&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXmHeJ15BI/AAAAAAAAAI0/NXPUJP_3SDI/s1600-h/3.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 131px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeXmHeJ15BI/AAAAAAAAAI0/NXPUJP_3SDI/s200/3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324915150463296530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To do:&lt;br /&gt;&lt;br /&gt;1. I have subscribed the www.buildingwebapps.com for Learning Rails.&lt;br /&gt;&lt;br /&gt;2. I have downloaded and installed the Ruby, RubyGems and Rails from www.rubyonrails.org&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeP4qHpnqUI/AAAAAAAAAHM/BYCEWTQa2w0/s1600-h/pic1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeP4qHpnqUI/AAAAAAAAAHM/BYCEWTQa2w0/s200/pic1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324372586973866306" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. Screen Capture of the www.rubyonrails.org&lt;br /&gt;&lt;br /&gt;3. Due to the portability of the RoR, I have chosen to use the pre-packaged solutions - Instant Rails for Windows platform instead of the install version of the RoR.&lt;br /&gt;&lt;br /&gt;Challlenge Problems:&lt;br /&gt;&lt;br /&gt;1. Make a list of all programming languages and Web development tools used by you in prior experiences. describe what you know about Web application frameworks before we begins.&lt;br /&gt;&lt;br /&gt;Languages: VisualBASIC, VB.NET, C++, HTML, ASP, ASP.NET&lt;br /&gt;&lt;br /&gt;The web application framework I knew is that It is a 2-tier based web application. &lt;br /&gt;The first layer is the web interface interact with the users and the other layer is a server side application where the business logic and database systems are on the server(s).&lt;br /&gt;&lt;br /&gt;2. Ruby is "an interpreted scripting language" for quick and easy object-oriented programming". Find out about the Ruby language and discover what this means.&lt;br /&gt;&lt;br /&gt;Ruby is a language created by a Japanese - Yukihiro Matsumoto (matz). It is a object-oriented progarmming language with syntax like Perl and Smalltalk. Ruby is named because pearl is the birthstone for the month June and Ruby is the birthstone is July that means Ruby is powerful and as a successor of Perl language. (Wikipedia)&lt;br /&gt;&lt;br /&gt;3. What is Rails and how does it work with Ruby?&lt;br /&gt;&lt;br /&gt;Rails is a framework for programming web applications. It is developed with Ruby language. With its "Don't Repeat yourself (DRY)" philosohy,  Rails allowing the developer to program less code for web application development. (Wikipedia)&lt;br /&gt;&lt;br /&gt;4. What is meant by "convertion over configuration" in regards to the use of Rails in Web application development?&lt;br /&gt;&lt;br /&gt;The convertion over configuration means the system applies assumption to the components to reduce the developer to change the settings that not involved with the web application. This reduces the developer to tweaking the unconventional parts of the application and architecture. (Jeremy)&lt;br /&gt;&lt;br /&gt;5. When did Model-View-Controller begin and where is it used?&lt;br /&gt;&lt;br /&gt;The Model-View-Controller (MVC) begins in 1978. It was used to support the&lt;br /&gt;user's mental model to provide information for user checking and editing with its editor. (Trygve)&lt;br /&gt;&lt;br /&gt;6. Describe the steps involved with the MVC design approach.&lt;br /&gt;&lt;br /&gt;In Model-View-Controller design pattern, the web application is splitted into three seperate parts - Model, View and Controller.&lt;br /&gt;&lt;br /&gt;Model is used to handle data and logic where the representation of the data for business are handled. &lt;br /&gt;&lt;br /&gt;The View is used to handle the output to users. It retrieves information from model to output for users.&lt;br /&gt;&lt;br /&gt;The Controller is used to hand input from users. The input can effect to the model and/or view in order to response to user input. &lt;br /&gt;&lt;br /&gt;The relationship of the MVC and it structure is shown as follow:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeQLZVKm2sI/AAAAAAAAAHU/jOUsSuqAtfY/s1600-h/mvc-structure-generic.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 140px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeQLZVKm2sI/AAAAAAAAAHU/jOUsSuqAtfY/s200/mvc-structure-generic.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5324393189265038018" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Model-View-Controller pattern (java.sun.com 2002)&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;About Ruby, Retrived 12 April 2009 from http://www.ruby-lang.org/en/about/&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Ruby (programming language), Retrived 12 April 2009 from http://en.wikipedia.org/wiki/Ruby_(programming_language)&lt;br /&gt;&lt;br /&gt;Improving designs with the MVC design pattern (2004), Retrived 12 April 2009 from http://java.sun.com/developer/EJTechTips/2004/tt0324.html&lt;br /&gt;&lt;br /&gt;Java BluePrints: Model-View-Controller (2002),  Retrived 12 April 2009 from  http://java.sun.com/blueprints/patterns/MVC-detailed.html&lt;br /&gt;&lt;br /&gt;Trygve, M. H. R. (n.d.), MVC XEROX PARC 1978-79, Retrived 12 April 2009 from http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html&lt;br /&gt;&lt;br /&gt;Jeremy M. (February 2009), Patterns in Practice: Convention Over Configuration, Retrived 12 April 2009 from http://msdn.microsoft.com/en-us/magazine/dd419655.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6520963623090444381?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6520963623090444381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6520963623090444381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6520963623090444381'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/04/workshop-1.html' title='Workshop 1: Setting up the model railway'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/SeXmHQzA33I/AAAAAAAAAJE/3llehVbSD-s/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6422419881288761786</id><published>2009-03-29T15:34:00.023+08:00</published><updated>2009-04-15T05:47:19.612+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 9'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 9: Web form design and processing: A basis for e-commerce interaction</title><content type='html'>1. Design the form&lt;br /&gt;&lt;br /&gt;"Retrofit the form data string above for buying some French perfume into the HTML fields and submit button on the web page form.&lt;br /&gt;&lt;br /&gt;Code of the form:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBKQ3mucjI/AAAAAAAAAFk/O2dFWYBP09A/s1600-h/ex9page1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBKQ3mucjI/AAAAAAAAAFk/O2dFWYBP09A/s200/ex9page1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323336413216666162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBKQjCbmuI/AAAAAAAAAFc/n1CgYGpZo6U/s1600-h/ex9page2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBKQjCbmuI/AAAAAAAAAFc/n1CgYGpZo6U/s200/ex9page2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323336407695727330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBKQizFmNI/AAAAAAAAAFU/4hhgdJ9VUbw/s1600-h/ex9page3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 145px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBKQizFmNI/AAAAAAAAAFU/4hhgdJ9VUbw/s200/ex9page3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323336407631370450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Display result of the form:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeBKQbkhiOI/AAAAAAAAAFM/wJ_8QDOHON0/s1600-h/ex9run1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeBKQbkhiOI/AAAAAAAAAFM/wJ_8QDOHON0/s200/ex9run1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323336405691238626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Write the script&lt;br /&gt;Script archive exists for PERL, Python and Javascript. Search the Web for a script that processes the HTML forms data. Read the code and list the steps involoved in processing the form.&lt;br /&gt;&lt;br /&gt;The source code to process the form is found in the tutorialspoint.com. It uses the PERL as language to process form at server side.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeBubAp2Z9I/AAAAAAAAAF0/a8nH0P5SMNw/s1600-h/orghtml.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 46px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeBubAp2Z9I/AAAAAAAAAF0/a8nH0P5SMNw/s200/orghtml.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323376169862981586" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. HTML code from tutorialspoint.com&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBuZxICpwI/AAAAAAAAAFs/vZcJlRB-ND0/s1600-h/orgperl.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 192px; height: 200px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBuZxICpwI/AAAAAAAAAFs/vZcJlRB-ND0/s200/orgperl.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323376148514776834" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. PERL code from tutorialspoint.com&lt;br /&gt;&lt;br /&gt;The first line is the header of the program which locates the PERL interpeter.&lt;br /&gt;&lt;br /&gt;The second part is to extract the information from the string from the form and put them into variables.&lt;br /&gt;&lt;br /&gt;The string send from the FORM to PERL program after clicking submit:&lt;br /&gt;http://127.0.0.1/cgi-bin/checkout.pl?name=Raymond+TANG&amp;email=ray@hotmail.com&amp;item=French+Perfume&amp;qty=2&amp;paym=VISA&amp;cname=Raymond+Tang&amp;cno=00123456789&amp;submit=Checkout&lt;br /&gt;&lt;br /&gt;The final part displays the information according to the user to screen as normal webpage.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Can you modify the script to process the form?&lt;br /&gt;&lt;br /&gt;The script is modified as follows:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBxCqFZ4WI/AAAAAAAAAF8/3bAQQ9meyGM/s1600-h/ex9modifiedcode.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 125px; height: 200px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBxCqFZ4WI/AAAAAAAAAF8/3bAQQ9meyGM/s200/ex9modifiedcode.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323379050022560098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Due to the difference in the platform (Operating System), the starting part (Header) for perl language is changed. The perl interpeter in use is called strawberryperl from strawberryperl.com. It is a perl interpeter for Windows platform. The version I used to run the script is 5.10.0.3.&lt;br /&gt;&lt;br /&gt;Result of the trial run with the designed form:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBKQEDzmxI/AAAAAAAAAFE/1g1qn_n5eOI/s1600-h/ex9run2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 178px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeBKQEDzmxI/AAAAAAAAAFE/1g1qn_n5eOI/s200/ex9run2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323336399379995410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;TutorialsPoint.com (2009), PERL and CGI Tutorial, Retrieved 8 April 2009 from http://www.tutorialspoint.com/perl/perl_cgi.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6422419881288761786?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6422419881288761786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-9.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6422419881288761786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6422419881288761786'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-9.html' title='Exercise 9: Web form design and processing: A basis for e-commerce interaction'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/SeBKQ3mucjI/AAAAAAAAAFk/O2dFWYBP09A/s72-c/ex9page1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6785448418250264619</id><published>2009-03-29T15:34:00.022+08:00</published><updated>2009-04-15T05:46:24.422+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 10'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Application server platfoms in e-commerce</title><content type='html'>1. Go to  the website of IBM, Oracle, Microsoft and Sybase. Is there any mention of  e-commerce associated with their database products? What suite or partnership do they list with related e-commerce offerings? How do they compare with open source product like MySQL?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;IBM&lt;/em&gt;&lt;br /&gt;In the website of IBM, the product associated to e-commerce is WebSphere Commerce.&lt;br /&gt;This product comes with three difference versions: Enterprise, Professional and Express. Each version is designed for difference size of companies and the business use.&lt;br /&gt;&lt;br /&gt;The database associated with the WebSphere Commerce is the DB2 database from IBM.&lt;br /&gt;The DB2 is the unique choice for the express version of Websphere. In the Professional and Enterprise version of the WebSphere, Oracle Database can be chosen as the database backend as shown in Figure 1.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeJ022q5knI/AAAAAAAAAGE/giJJbxKnzR8/s1600-h/ibmdb.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 182px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeJ022q5knI/AAAAAAAAAGE/giJJbxKnzR8/s200/ibmdb.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5323946195242553970" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1. Database Choice for Websphere (IBM)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Oracle&lt;/em&gt;&lt;br /&gt;In Oracle website, the product found for the e-commerce is E-Business Suite.&lt;br /&gt;However, the E-Business suite provide Oracle's database product to their customers only.&lt;br /&gt;&lt;br /&gt;During 2002, &lt;a href="http://www.oracle.com/global/in/pressroom/redhatpartner.html"&gt;Red Hat India partner with Oracle&lt;/a&gt; to deploy the products into Linux platform.&lt;br /&gt;&lt;br /&gt;There are several &lt;a href"http://www.oracle.com/solutions/mid/accelerate-partners.html"&gt;partners&lt;/a&gt; with Oracle including Independent software vendor, Platform partners, System integrator and reseller and distribution Alliances.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Microsoft&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The Micrsoft provide e-commerce solution with &lt;a href="http://www.microsoft.com/commerceserver/en/us/overview.aspx"&gt;Microsoft Commerce Server&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;According to Microsoft (2009), the commerce server requires Microsoft SQL server as its database (Figure 2).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeK5zW06JaI/AAAAAAAAAGM/2sJDYNnxD3I/s1600-h/msdb.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeK5zW06JaI/AAAAAAAAAGM/2sJDYNnxD3I/s200/msdb.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5324022001457309090" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Partial requirement of the Commerce Server 2009 (Microsoft MSDN)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sybase&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Sybase provides Sybase Enterprise Application Server as its product for e-commerce.&lt;br /&gt;The database system used by the server is the Sybase Adaptive Server.&lt;br /&gt;&lt;br /&gt;The database comes with three editions: express, developer, small business and enterprise (Figure 3).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeLIN0C4h6I/AAAAAAAAAGU/2zhcSUiSkxo/s1600-h/sydb.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 94px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeLIN0C4h6I/AAAAAAAAAGU/2zhcSUiSkxo/s200/sydb.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5324037849139939234" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 3. Sybase Adaptive Server Enterprise Editions (Sybase 2007)&lt;br /&gt;&lt;br /&gt;Comparasion between databases:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeLQBhM9cjI/AAAAAAAAAGs/6kJK5TuG2qE/s&lt;br /&gt;1600-h/1hardware.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 140px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/SeLQBhM9cjI/AAAAAAAAAGs/6kJK5TuG2qE/s200/1hardware.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5324046434016522802" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 4. Hardware requirement of the database (Alesheikh, A. A., Dodge, S.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeLQBiQYesI/AAAAAAAAAGk/_PQkwW3JP0c/s1600-h/2feature.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 83px; height: 200px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/SeLQBiQYesI/AAAAAAAAAGk/_PQkwW3JP0c/s200/2feature.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5324046434299312834" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 5. Comparasion on features of database (Alesheikh, A. A., Dodge, S.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeLQBdarJ_I/AAAAAAAAAGc/5u8moYotAUw/s1600-h/breifreview.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 83px; height: 200px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeLQBdarJ_I/AAAAAAAAAGc/5u8moYotAUw/s200/breifreview.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5324046433000302578" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 6. Comparasion on database as review (Alesheikh, A. A., Dodge, S.)&lt;br /&gt;&lt;br /&gt;MySQL is a free SQL server with minimum system reqirement and resources. Oracle and DB2 and MySQL database can run on all operating systems. By comparing the storage space and easy to use, Microsoft's SQL Server provide friendly-to-use interface while DB2 and Oracle database can support terabytes data. (Alesheikh, A. A., Dodge, S.)&lt;br /&gt;&lt;br /&gt;2. Why is the perception getting stronger that integration will become critical factor in coming days? What is the role of AJAX within enterprise software architecture?&lt;br /&gt;&lt;br /&gt;The traditional way (Figure 7) which only use the web server to handle the users requests for dynamic information leads heavy server requests. The loading time and response time of the web application become long and may be unacceptable. When there is a web application require user to interact frequently, the web application server and web server may not be able to handle with. &lt;br /&gt;&lt;br /&gt;With the use AJAX, the faster response time is made and a large number of the server requests decreases. It is because of the use the AJAX engine. The AJAX engine like a hidden layer to both web server and user interface. It is used to handle the requests which does not transfer back to server, for example, simple data validation and editing data in memory. When there is a request requiring servers' response, the request will be handled asynchronously. (Garrett 2005)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeL0cCxtmYI/AAAAAAAAAHE/TnzY4wt7WRg/s1600-h/tradwebapp.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 123px; height: 200px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeL0cCxtmYI/AAAAAAAAAHE/TnzY4wt7WRg/s200/tradwebapp.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5324086472124242306" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 7. Classic Web Application Architecture (Denis)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeL0cPj4sbI/AAAAAAAAAG8/8k3TPG-T3nE/s1600-h/ajax-fig1_small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 192px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeL0cPj4sbI/AAAAAAAAAG8/8k3TPG-T3nE/s200/ajax-fig1_small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5324086475555910066" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 8. The traditional model for web applications (left) compared to the Ajax model (right). (Garrett 2005)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeL0bYD71II/AAAAAAAAAG0/BZZ_nRcVMIg/s1600-h/ajax-fig2_small.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 159px; height: 200px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeL0bYD71II/AAAAAAAAAG0/BZZ_nRcVMIg/s200/ajax-fig2_small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5324086460657947778" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 9. The synchronous interaction pattern of a traditional web application (top) compared with the asynchronous pattern of an Ajax application (bottom). (Garrett 2005)&lt;br /&gt;&lt;br /&gt;3. What are the similarities between the object-oriented developemnt using model-view-controller (MVC) in Ruby on Rail 2.0 and Action Script 2.0 (Flash Animations)?&lt;br /&gt;&lt;br /&gt;There are several similarities between them:&lt;br /&gt;&lt;br /&gt;Both emphize DRY (don't repeat yourself) / code reuse concept.&lt;br /&gt;&lt;br /&gt;According to Colin (2004), the classes and interfaces of the mvc in Adobe Actionscript 2.0 are:&lt;br /&gt;&lt;br /&gt;View: An interface all views must implement&lt;br /&gt;Controller: An interface all controllers must implement&lt;br /&gt;AbstractView: A generic implementation of the View interface&lt;br /&gt;AbstractController: A generic implementation of the Controller interface&lt;br /&gt; &lt;br /&gt;According to Michael (2007), the classes and interfaces of the MVC in Ruby on Rails are:&lt;br /&gt;&lt;br /&gt;Controller: Interacts with Model and View.&lt;br /&gt;Model: Data representation and business logic.&lt;br /&gt;View: Rends the Model in to a View&lt;br /&gt;&lt;br /&gt;Model: ActiveRecord&lt;br /&gt;Contains business logics&lt;br /&gt;&lt;br /&gt;View: ActionView&lt;br /&gt;It is used to renders the view&lt;br /&gt;&lt;br /&gt;Controller: ActionController&lt;br /&gt;It is used to control application flow and the view to use&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;IBM (n.d.),   &lt;br /&gt;WebSphere Commerce V6.0 software requirements - Windows, Retrieved 10 April 2009 from http://www-01.ibm.com/support/docview.wss?rs=3046&amp;uid=swg27007591&lt;br /&gt;&lt;br /&gt;Microsoft (n.d.), Commerce Server 2009, Retieved 10 April 2009 from http://www.microsoft.com/commerceserver/en/us/overview.aspx&lt;br /&gt;&lt;br /&gt;Oracle (2002), Red Hat India Partners With Oracle India,&lt;br /&gt;Retrieved 10 April 2009 from http://www.oracle.com/global/in/pressroom/redhatpartner.html&lt;br /&gt;&lt;br /&gt;Oracle (n.d.), Oracle E-Business Suite Tools and Technology,&lt;br /&gt;Retrieved 10 April 2009 from http://www.oracle.com/technology/products/applications/ebs/index.html&lt;br /&gt;&lt;br /&gt;Sybase (n.d.), Sybase EAServer 6.0 Data Sheet, Retrieved 10 April 2009 from http://www.sybase.com/detail?id=1061861&lt;br /&gt;&lt;br /&gt;Sybase (2007), Sybase Adaptive Server Enterprise Editions, Retrieved 10 April 2009 from http://www.sybase.com/files/Data_Sheets/ase_clusters_ds.pdf&lt;br /&gt;&lt;br /&gt;Alesheikh, A. A., Dodge, S. (n.d.), Evaluating different approaches of spatial database management for moving objects, Retrieved 10 April 2009 from http://www.gisdevelopment.net/technology/gis/me05_021b.htm&lt;br /&gt;&lt;br /&gt;Interakt (10 November 2005), AJAX: Asynchronously Moving Forward, Retrieved 10 April 2009 from http://www.interaktonline.com/support/articles/Details/AJAX%3A+Asynchronously+Moving+Forward-Introduction.html?id_art=36&amp;id_asc=306&lt;br /&gt;&lt;br /&gt;Garrett, J. J. (18 February 2005), Retrieved 10 April 2009 from http://www.adaptivepath.com/ideas/essays/archives/000385.php&lt;br /&gt;&lt;br /&gt;Denis, H. (n.d.), Software Architecture, Retrieved 10 April 2009 from http://coronet.iicm.tugraz.at/sa/s5/sa_www.html&lt;br /&gt;&lt;br /&gt;Colin, M. (2004), Essential ActionScript 2.0 [Electronic verion], O'Reilly, Retrieved 10 April 2009 from http://www.adobe.com/devnet/flash/articles/mv_controller/as2ess_ch18.pdf&lt;br /&gt;&lt;br /&gt;Michael P. J. (2007), MVC Demystified: Essence of Ruby on Rails, Retrieved 10 April 2009 from http://www.slideshare.net/codeinmotion/mvc-demystified-essence-of-ruby-on-rails&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6785448418250264619?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6785448418250264619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6785448418250264619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6785448418250264619'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-10.html' title='Exercise 10: Application server platfoms in e-commerce'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_PRSkEjMOAcs/SeJ022q5knI/AAAAAAAAAGE/giJJbxKnzR8/s72-c/ibmdb.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-1031350243984317540</id><published>2009-03-29T15:34:00.021+08:00</published><updated>2009-04-15T05:45:50.704+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 11'/><title type='text'>Exercise 11: XML Introduction</title><content type='html'>1. Conduct research on the Internet to find out what tools can be used to parse an XML document and encure the document is well formed and valid.&lt;br /&gt;&lt;br /&gt;XML parsers are used to paese an XML document. There are two type of parsers, validating and non-validating.&lt;br /&gt;&lt;br /&gt;According to the Ken (2000), the two type of parsers are:&lt;br /&gt;&lt;br /&gt;"non-validating: the parser does not check a document against any DTD (Document Type Definition); only checks that the document is well-formed (that it is properly markedup according to XML syntax rules) &lt;br /&gt;&lt;br /&gt;validating: in addition to checking well-formedness, the parser verifies that the document conforms to a specific DTD (either internal or external to the XML file being parsed)."&lt;br /&gt;&lt;br /&gt;There are several tools can be used to parse an XML document and ensure that the document is well formed and valid.&lt;br /&gt;&lt;br /&gt;Xerces&lt;br /&gt;There are several version for Xerces which are written in different language for different platforms.&lt;br /&gt;&lt;br /&gt;Apache Xerces C++ is written in C++&lt;br /&gt;Apache Xerces2 Java is written in Java&lt;br /&gt;Apache Xerces Perl is written in Perl&lt;br /&gt;&lt;br /&gt;IBM's XML Parser for Java &lt;br /&gt;IBM stated that it is a validating XML parser, written in Java to allow applications to read and write XML data.&lt;br /&gt;&lt;br /&gt;MSXML &lt;br /&gt;Microsoft XML Core Services (MSXML) allows Microsoft Development tools to run as native XML-based applications.&lt;br /&gt;&lt;br /&gt;2. What are the benefits of adopting a schema standardized for a business sector?&lt;br /&gt;&lt;br /&gt;The w3schools.com stated that the benefits of using the schema standardized are in FOUR sectors:&lt;br /&gt;&lt;br /&gt;a. XML Schemas Support Data Types&lt;br /&gt;By defining the data formats in the schema, the correctness of data can be checked. Some of the restricted information can be restricted from viewing by others. The conversion of the data become easier. (W3schools)&lt;br /&gt;&lt;br /&gt;b. XML Schemas use XML Syntax&lt;br /&gt;As the schema uses XML syntax, it is not necessary to learn a new programming language. By changing the content of the schema and parse it, the schema can be converted into other format such as XSLT and XML DOM easily. (W3schools)&lt;br /&gt;&lt;br /&gt;c. XML Schemas Secure Data Communication&lt;br /&gt;With the Schema, the information is standardized in a proper format and can easily be understand. For example: the format of the date, in XML data type, the format of date is "YYYY-MM-DD". (W3schools)&lt;br /&gt;&lt;br /&gt;d. XML Schemas are Extensible&lt;br /&gt;Due to the fact that the schemas are written in XML, the schema can be reused. Different schemas can be reference to a docuemnt. (W3schools)&lt;br /&gt;&lt;br /&gt;3. SMIL is an application of XML. What is the purpose of this technology? Where does it apply?&lt;br /&gt;&lt;br /&gt;SMIL is stand for Synchronized Multimedia Integration Language. It is used for  presenting and interacting the synchronize multimedia such as video, audio and pictures.&lt;br /&gt;The SMIL control the timing of the medias, produce different versions of products by controlling the bandwidth and languages. (SOA Definitions)&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Apache.org (27 March 2009), The Apache Xerces Project, Retrieved 10 April 2009 from http://xerces.apache.org/&lt;br /&gt;&lt;br /&gt;Ken S. (29 July 2000), XML Software Guide: XML Parsers, Retrieved 10 April 2009 from http://wdvl.internet.com/Software/XML/parsers.html&lt;br /&gt;&lt;br /&gt;SOA Definitions (31 July 2001), SMIL, Retrieved 10 April 2009 from http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci214217,00.html&lt;br /&gt;&lt;br /&gt;W3Schools (n.d.), Why Use XML Schemas?, Retrieved 10 April 2009 from http://www.w3schools.com/Schema/schema_why.asp&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-1031350243984317540?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/1031350243984317540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/1031350243984317540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/1031350243984317540'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-11.html' title='Exercise 11: XML Introduction'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-2181271098454904779</id><published>2009-03-29T15:33:00.015+08:00</published><updated>2009-04-15T06:25:05.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 6'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 6: Some server practice with PHP</title><content type='html'>1. Try the code by replaceing with $REMOTE_ADDR, $SERVER_NAME or $PHP_SELF&lt;br /&gt;&lt;br /&gt;Replace with $REMOTE_ADDR&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1mV_HB38I/AAAAAAAAABs/-VCBzMT8yD0/s1600-h/6.1.1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 100px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1mV_HB38I/AAAAAAAAABs/-VCBzMT8yD0/s200/6.1.1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322522862525996994" /&gt;&lt;/a&gt;\&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1ms5jzhsI/AAAAAAAAACE/U8U-uzV7ork/s1600-h/ex6.1fig2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 148px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1ms5jzhsI/AAAAAAAAACE/U8U-uzV7ork/s200/ex6.1fig2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322523256173070018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Replace with $SERVER_NAME&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1mabeUtkI/AAAAAAAAAB0/Uk90tiBsk4M/s1600-h/6.1.2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 100px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1mabeUtkI/AAAAAAAAAB0/Uk90tiBsk4M/s200/6.1.2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322522938859370050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1qmFamfII/AAAAAAAAACM/ppq7iAhf2Js/s1600-h/6.1.2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 90px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1qmFamfII/AAAAAAAAACM/ppq7iAhf2Js/s200/6.1.2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322527537143118978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Replace with $PHP_SELF&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1mf7oqMjI/AAAAAAAAAB8/-Hwnsf0dJn0/s1600-h/6.1.3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 99px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1mf7oqMjI/AAAAAAAAAB8/-Hwnsf0dJn0/s200/6.1.3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322523033392001586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1quEZ0dnI/AAAAAAAAACU/LmYTpsTVRyw/s1600-h/6.1.3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1quEZ0dnI/AAAAAAAAACU/LmYTpsTVRyw/s200/6.1.3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322527674310358642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Create application "hello_world.php" which contains in the body:&lt;br /&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1lNRjVrHI/AAAAAAAAABc/UPsWhPh-qqE/s1600-h/hello_world.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 154px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1lNRjVrHI/AAAAAAAAABc/UPsWhPh-qqE/s200/hello_world.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322521613346122866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1ldFMpzjI/AAAAAAAAABk/_O2GpVY7siw/s1600-h/ex6.2fig3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 102px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1ldFMpzjI/AAAAAAAAABk/_O2GpVY7siw/s200/ex6.2fig3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322521884907654706" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-2181271098454904779?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/2181271098454904779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2181271098454904779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2181271098454904779'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-6.html' title='Exercise 6: Some server practice with PHP'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1mV_HB38I/AAAAAAAAABs/-VCBzMT8yD0/s72-c/6.1.1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-2563220315359417228</id><published>2009-03-29T15:33:00.013+08:00</published><updated>2009-04-15T05:48:03.325+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 7: User input for database access with PHP</title><content type='html'>1. Create an HTML page with the form:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1r-zblr_I/AAAAAAAAAC0/09K2SdmJCdw/s1600-h/7form.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 100px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1r-zblr_I/AAAAAAAAAC0/09K2SdmJCdw/s200/7form.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322529061323780082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. create PHP file named submit.php with code:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1r5cWYRKI/AAAAAAAAACs/MufUFBTLC30/s1600-h/7php.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 52px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd1r5cWYRKI/AAAAAAAAACs/MufUFBTLC30/s200/7php.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322528969228567714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result input form:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd1rI5a4KuI/AAAAAAAAACc/UajNyH5VpRE/s1600-h/ex7.1fig1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 101px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd1rI5a4KuI/AAAAAAAAACc/UajNyH5VpRE/s200/ex7.1fig1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322528135218473698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result after submit:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1rPOfazII/AAAAAAAAACk/lJBLDAHXMI8/s1600-h/ex7.1fig2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 101px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd1rPOfazII/AAAAAAAAACk/lJBLDAHXMI8/s200/ex7.1fig2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322528243953880194" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-2563220315359417228?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/2563220315359417228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2563220315359417228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2563220315359417228'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-7.html' title='Exercise 7: User input for database access with PHP'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd1r-zblr_I/AAAAAAAAAC0/09K2SdmJCdw/s72-c/7form.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7555138267787888667</id><published>2009-03-29T15:33:00.012+08:00</published><updated>2009-04-15T05:47:41.022+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 8'/><title type='text'>Exercise 8: PHP and MySQL database access</title><content type='html'>&lt;b&gt;Setup and Create database and table in MySQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;a. Change the root password&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2rFwid3vI/AAAAAAAAAE8/pTRtAG_BH2s/s1600-h/1.changepassword.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2rFwid3vI/AAAAAAAAAE8/pTRtAG_BH2s/s200/1.changepassword.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598450038955762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b. Login MySQL database system&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2rASRSuEI/AAAAAAAAAE0/YNfJHtqRkG8/s1600-h/2.loginmysql.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2rASRSuEI/AAAAAAAAAE0/YNfJHtqRkG8/s200/2.loginmysql.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598356014512194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;c. Create database named "mydatabase"&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2rAOB1HzI/AAAAAAAAAEs/CAB4bnM1a10/s1600-h/3.createdb.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2rAOB1HzI/AAAAAAAAAEs/CAB4bnM1a10/s200/3.createdb.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598354875916082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;d. Access the created database with command "USE"&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_6DR6SI/AAAAAAAAAEk/8-DY_20G4Ws/s1600-h/4.assigndatabase.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_6DR6SI/AAAAAAAAAEk/8-DY_20G4Ws/s200/4.assigndatabase.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598349513287970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e. Create table named "employees"&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_lkSnaI/AAAAAAAAAEc/CziXykWx5sU/s1600-h/5.createtable.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_lkSnaI/AAAAAAAAAEc/CziXykWx5sU/s200/5.createtable.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598344014601634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;f. Assign privileges to a user to access the database&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_SQqePI/AAAAAAAAAEU/ZyBN5Nv2o-A/s1600-h/6.assignprivileges.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2q_SQqePI/AAAAAAAAAEU/ZyBN5Nv2o-A/s200/6.assignprivileges.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322598338832005362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Questions in exercise 8&lt;/b&gt;&lt;br /&gt;1. Start with a simple table in the database:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2qiedMtYI/AAAAAAAAAEM/PxC4gtMmJ7A/s1600-h/q1.select.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 129px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2qiedMtYI/AAAAAAAAAEM/PxC4gtMmJ7A/s200/q1.select.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322597843889599874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Create a web page with the following PHP:&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2puq3YGoI/AAAAAAAAAEE/eLAjKjkbLKY/s1600-h/0query.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 87px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2puq3YGoI/AAAAAAAAAEE/eLAjKjkbLKY/s200/0query.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322596953867426434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2nANdt7wI/AAAAAAAAAC8/cPsQMoRfptg/s1600-h/ex8run0.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 130px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2nANdt7wI/AAAAAAAAAC8/cPsQMoRfptg/s200/ex8run0.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322593956677938946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Create a file called add_record.html&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2omc97DcI/AAAAAAAAAD8/Y1-SONi7GG8/s1600-h/add_recordweb.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 88px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2omc97DcI/AAAAAAAAAD8/Y1-SONi7GG8/s200/add_recordweb.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322595713186205122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2nASAh64I/AAAAAAAAADE/yzuBMD0_cHQ/s1600-h/ex8run1.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 130px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2nASAh64I/AAAAAAAAADE/yzuBMD0_cHQ/s200/ex8run1.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322593957897694082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Create a PHP file caleed add_record.php for POST method in web page.&lt;br /&gt;Code: &lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2omejUhMI/AAAAAAAAAD0/uf8Uz7oK-iE/s1600-h/add_record.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 81px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/Sd2omejUhMI/AAAAAAAAAD0/uf8Uz7oK-iE/s200/add_record.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322595713611498690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAoVsHQI/AAAAAAAAADM/QA4LIBPGiyc/s1600-h/ex8run2.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 130px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAoVsHQI/AAAAAAAAADM/QA4LIBPGiyc/s200/ex8run2.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322593963892022530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Show multiple records as webpage.&lt;br /&gt;Code:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2omDNYZfI/AAAAAAAAADs/s-EV_yXfR7A/s1600-h/disp_record_inc.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 87px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2omDNYZfI/AAAAAAAAADs/s-EV_yXfR7A/s200/disp_record_inc.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322595706271720946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAuXaREI/AAAAAAAAADU/tPB2KJAclzI/s1600-h/ex8run3err.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 130px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAuXaREI/AAAAAAAAADU/tPB2KJAclzI/s200/ex8run3err.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322593965509854274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've found that the result is not as expected, I make changes to the code as follow:&lt;br /&gt;that the field start from the left and the index is start from zero.&lt;br /&gt;&lt;br /&gt;Fixed Code:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2omPBa97I/AAAAAAAAADk/dkUpOqPvMQY/s1600-h/disp_record.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 88px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/Sd2omPBa97I/AAAAAAAAADk/dkUpOqPvMQY/s200/disp_record.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322595709442783154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAvh1jSI/AAAAAAAAADc/cbaquY1cp4k/s1600-h/ex8run3.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 130px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sd2nAvh1jSI/AAAAAAAAADc/cbaquY1cp4k/s200/ex8run3.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5322593965822020898" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7555138267787888667?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7555138267787888667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7555138267787888667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7555138267787888667'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-8.html' title='Exercise 8: PHP and MySQL database access'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_PRSkEjMOAcs/Sd2rFwid3vI/AAAAAAAAAE8/pTRtAG_BH2s/s72-c/1.changepassword.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6407891117387226066</id><published>2009-03-24T15:44:00.010+08:00</published><updated>2009-04-15T10:09:53.191+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 5'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 5: Network and programming frameworks</title><content type='html'>1. Investigate a simple chat client/server system. Look at some program code and describe how it works with multiple users.&lt;br /&gt;&lt;br /&gt;Source code of Chat Client Server by Boby, T. P., (2006)&lt;br /&gt;&lt;br /&gt;Server Side Main program:&lt;br /&gt;&lt;font size="-1"&gt;&lt;br /&gt;**********************************************************************************&lt;br /&gt;int main(int argc, char* argv[])&lt;br /&gt;{&lt;br /&gt;    int nRetCode = 0;&lt;br /&gt; char buf[4096];&lt;br /&gt; &lt;br /&gt;    cout &lt;&lt; "This is written by Boby Thomas.\r\n";&lt;br /&gt; cout &lt;&lt; "This aplication act as a chat server.\n";&lt;br /&gt; cout &lt;&lt; "Messages from any pc will be broadcasted to all connected pcs.\n";&lt;br /&gt; cout &lt;&lt; "Connect to the server pc port 8084(Digital BOBY).\n";&lt;br /&gt;    cout &lt;&lt; "Press ONLY ENTER to quit.\n";&lt;br /&gt; cout &lt;&lt; "=================================================\n";&lt;br /&gt;&lt;br /&gt; if(!CServerObj.IsConnected())&lt;br /&gt; {&lt;br /&gt;  cout&lt;&lt;"\nFailed to initialise server socket";&lt;br /&gt;  cout&lt;&lt;"\nThis is boby signing off : Bye";&lt;br /&gt;  getch();&lt;br /&gt;  return 1;&lt;br /&gt; }&lt;br /&gt; AfxBeginThread(ServerListenThread,0);&lt;br /&gt;&lt;br /&gt; while(gets(buf))&lt;br /&gt; {&lt;br /&gt;  if(strlen(buf) == 0)&lt;br /&gt;   break;&lt;br /&gt;  if(CServerObj.SendMessagePort(buf))&lt;br /&gt;  {&lt;br /&gt;   cout&lt;&lt;"Problem in connecting to server. Check whether server is running\n";&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; cout&lt;&lt;"This is Boby signing off.";&lt;br /&gt; getch();&lt;br /&gt; &lt;br /&gt;    return nRetCode;&lt;br /&gt;}&lt;br /&gt;**********************************************************************************&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Client Side Main program:&lt;br /&gt;&lt;font size="-1"&gt;&lt;br /&gt;**********************************************************************************&lt;br /&gt;int main(int argc, char* argv[])&lt;br /&gt;{&lt;br /&gt; char buf[4096];&lt;br /&gt; cout&lt;&lt;"This is a client TCP/IP application\nConnecting to port 8084\n";&lt;br /&gt; cout&lt;&lt;"\nPress ONLY ENTER to quit";&lt;br /&gt; cout&lt;&lt;"\nWritten by Boby Thomas";&lt;br /&gt; cout&lt;&lt;"\n===============================================\n";&lt;br /&gt;&lt;br /&gt; FILE *fp = fopen("server.ini","r");&lt;br /&gt; if(fp == NULL)&lt;br /&gt; {&lt;br /&gt;  cout&lt;&lt;"\nUnable to open server.ini. Please specify server IPsddress in server.ini";&lt;br /&gt;  return 1; // main failed&lt;br /&gt; }&lt;br /&gt; string sServerAddress;&lt;br /&gt; while((fgets(buf,4096,fp)) != NULL)&lt;br /&gt; {&lt;br /&gt;  if(buf[0] == '#')&lt;br /&gt;   continue;&lt;br /&gt;  sServerAddress = buf;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; fclose(fp);&lt;br /&gt;&lt;br /&gt; if(sServerAddress.size() == 0)&lt;br /&gt; {&lt;br /&gt;  cout&lt;&lt;"\nUnable to find server IPaddress in server.ini";&lt;br /&gt;  cout&lt;&lt;"\nPlease set server IPaddress";&lt;br /&gt;  cout&lt;&lt;"\nThis is Boby Signing off. BYE:";&lt;br /&gt;  getch();&lt;br /&gt;  return 0;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; MyMessObj.Init(sServerAddress.c_str(),8084);&lt;br /&gt; if(!MyMessObj.IsConnected())&lt;br /&gt; {&lt;br /&gt;  cout&lt;&lt;"\nUnable to connect to the IPaddress specified in server.ini";&lt;br /&gt;  cout&lt;&lt;"\nPlease check server IPaddress";&lt;br /&gt;  cout&lt;&lt;"\nThis is Boby Signing off. BYE:";&lt;br /&gt;  getch();&lt;br /&gt;  return 0; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; AfxBeginThread(MessageRecThread,0);&lt;br /&gt; while(gets(buf))&lt;br /&gt; {&lt;br /&gt;  if(strlen(buf) == 0)&lt;br /&gt;   break;&lt;br /&gt;  if(MyMessObj.SendMessagePort(buf))&lt;br /&gt;  {&lt;br /&gt;   cout&lt;&lt;"Problem in connecting to server. Check whether server is running\n";&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; cout&lt;&lt;"\nThis is Boby Signing off. BYE:";&lt;br /&gt; getch();&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;**********************************************************************************&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The chat program uses thread to serve multiple users. The server starts and listen to the network for client. The client side locates the server and starts chat. While each client connected to the server, a new thread creates in the server side for that client. As multiple threads created in the server side, multiple users can be served.&lt;br /&gt;&lt;br /&gt;2. Describe the important and distinguishing properties of Peer to Peer computing and the Grid. How is this peer to peer and the Grid architecture changing work flow and service-oriented applications?&lt;br /&gt;&lt;br /&gt;There are two common use of Grid computing. Both uses several computer to solve a problem. One of the usage is that the problem is complex and require a lot of computer cycle to complete such as a scientific problem.&lt;br /&gt;&lt;br /&gt;The other usage is to handle a large amount of data. When a single server cannot handle all the requests, by using the grid computing, the servers are linked up to form a cluster, the transaction are distributed to the server members and is handled in parallel manner. (Wikipedia)&lt;br /&gt;&lt;br /&gt;This is important for service-oriented applications. In e-commerce, all the transactions are handled in server. The server's power for handling the transaction become important. Instead of the security concern, the user or customer requires fast and efficient service via e-commerce. The slow transaction time leads the wait of customers or users, there will be a bad impact to the company goodwill and customer satisfaction.&lt;br /&gt;&lt;br /&gt;Peer to Peer computing (P2P) links the computers in a ad hoc manner to increase the total bandwidth for sharing common interests such as audio, video and data files.&lt;br /&gt;&lt;br /&gt;There are two roles for each computer that is linked up in Peer to Peer computing - server and client. It is a full duplex (two ways) communications to all computers that linked up. When a computer a linked to the P2P network, for example, download a Linux distribution, the computer downloads portions of the file from all the computers that it connected to, at the same time, the downloaded portions is uploaded to someone else who is connected and requiring that portion of file. (Wikipedia)&lt;br /&gt;&lt;br /&gt;This is useful when a company cannot provide enough bandwidth for distribute their files. For example: RedHat and Novell SUSE, their files are in DVD format, if it provides only FTP service for download the file, there are not enough bandwidth to serve all the customers and users. By using the P2P techniques, the file can be distribute faster than the FTP to the customers and users.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Frameworks for development. Compare and contrast any TWO of:&lt;br /&gt;a. Java&lt;br /&gt;b. .NET&lt;br /&gt;c. Ruby on Rails&lt;br /&gt;d. Google Gears&lt;br /&gt;f. AJAX frameworks&lt;br /&gt;&lt;br /&gt;I would like to discuss on the frameworks for Java and Ruby on Rails.&lt;br /&gt;&lt;br /&gt;The Ruby on Rails (RoR) providing Model-View-Controller approach as its development framework. It is the unique framework for the development platform. JAVA can adopt itself to different kind of the development frameworks. Some of the frameworks for Java are MVC framework. &lt;br /&gt;&lt;br /&gt;While some of the development framework supporting Pull and Push architecture, the RoR only support Push technology. There is a weak point to the Java, most of the framework for Java is not able migrate with the database, but RoR does.&lt;br /&gt;&lt;br /&gt;Most of the framework for Java supports AJAX while RoR does not support or still in prototype.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeU7w_QDI0I/AAAAAAAAAIk/TSNrrHtKxqg/s1600-h/table1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeU7w_QDI0I/AAAAAAAAAIk/TSNrrHtKxqg/s200/table1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324727847233987394" /&gt;&lt;/a&gt;&lt;br /&gt;Table 1. Comparison of web application frameworks on Java and Ruby on Rails (Wikipedia)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeU7wvgL1aI/AAAAAAAAAIc/PmA5AbVRk7k/s1600-h/table2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 154px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/SeU7wvgL1aI/AAAAAAAAAIc/PmA5AbVRk7k/s200/table2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324727843006698914" /&gt;&lt;/a&gt;&lt;br /&gt;Table 2. Comparison of web application frameworks components on Java and Ruby on Rails (Wikipedia)&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Boby, T. P., (2006), Chat Client Server, Retrieved 24 March 2009, from http://www.codeproject.com/KB/cpp/chat_client_server.aspx&lt;br /&gt;&lt;br /&gt;GridCafe, (n.d.), How does grid computing work?, Retrieved 25 March 2009, from http://www.gridcafe.org/version1/gridatwork/architecture.html&lt;br /&gt;&lt;br /&gt;Joseph, J., Ernest, M., Fellenstein, C. (2004) ,Evolution of grid computing architecture and grid adoption models, Retrieved 25 March 2009, from http://www.research.ibm.com/journal/sj/434/joseph.html&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Peer-to-peer, Retrieved 25 March 2009, from http://en.wikipedia.org/wiki/Peer-to-peer&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Grid computing, Retrieved 25 March 2009, from http://en.wikipedia.org/wiki/Grid_computing_infrastructure&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Comparison of web application frameworks, Retrieved 30 March 2009, from http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6407891117387226066?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6407891117387226066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-5-network-and-programming.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6407891117387226066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6407891117387226066'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-5-network-and-programming.html' title='Exercise 5: Network and programming frameworks'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_PRSkEjMOAcs/SeU7w_QDI0I/AAAAAAAAAIk/TSNrrHtKxqg/s72-c/table1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-2512497971637894244</id><published>2009-03-24T14:59:00.013+08:00</published><updated>2009-04-15T06:25:50.827+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 4'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 4: Virtual private networks</title><content type='html'>Describe the IP Protocol. What is DNS?&lt;br /&gt;&lt;br /&gt;IP stands for Internet Protocol. It is a protocol on network layer and responsible for packet delivery from host to host. It is a connectionless and unreliable protocol for data transmission (Hollinger, 2001). It represents the host and network addressing. It is an unique identifier for the computer to the network for data and information transmission. When a computer connects to the internet, a unique IP is required.&lt;br /&gt;&lt;br /&gt;There are two version of the IP Protocol, version 4 (IPv4) and version 6 (IPv6). The IPv4 uses 32-bits to address itself and according to the Brendan (2009), it supports more than four billion unique addresses. As the internet population growth during the years and each computer required to have a unique IP address for direct internet connection, the number of the IP address reduces. The IPv6 provides two to the one-hundred twenty-eighth power of unique addresses which is enough for the future growth of the internet population. (Brendan, 2009)&lt;br /&gt;&lt;br /&gt;DNS stands for Domain Name System. It is a service on the top of the Internet Protocol. The DNS is used to resolve the name entered at browser to IP and vesa visa. DNS is used because user requires meaningful name to browse the internet instead of browsing a website by entering non-meaningful IP address. (Brendan, Webopedia 2009) &lt;br /&gt;&lt;br /&gt;Describe the TCP protocol. How is it related to the IP protocol?&lt;br /&gt;&lt;br /&gt;TCP stands for Transmission Control Protocol. It is a protocol on transport layer. The TCP is connection-oriented and reliable protocol to make the completeness of data transfer.&lt;br /&gt;&lt;br /&gt;A three way handshake and virtual connection is made before transmission. With it packet structure, the lost of packets by lost or error in connection can be detectd by its sequence number and request number. The corruption of the packet also detected with the checksum of the segment in TCP packet (Hollinger, 2001).  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sc8joO3ZcuI/AAAAAAAAABU/dUOsx5v5C-g/s1600-h/tcpip.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/Sc8joO3ZcuI/AAAAAAAAABU/dUOsx5v5C-g/s200/tcpip.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5318508859040035554" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1: TCP segment structure (Hollinger, 2001)&lt;br /&gt;&lt;br /&gt;What do you know about building e-business application as an Intranet, Extranet, Web portal, B2B, B2C or Virtual Private Network (VPN)? Find some examples on the web.&lt;br /&gt;&lt;br /&gt;Intranet is a network can be accessed by authorized personnel within an organization only such as employees. With the use networking technologies such as TCP/IP, the user shares the current informaiton such as calendars, sending internal emails and even access the employee contact information. (Randolph)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeRFbfVCRMI/AAAAAAAAAHk/HtCk0FLCmm8/s1600-h/intranet.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 194px;" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SeRFbfVCRMI/AAAAAAAAAHk/HtCk0FLCmm8/s200/intranet.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5324456998027281602" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 2. Intranet (Randolph)&lt;br /&gt;&lt;br /&gt;Extranet is intranet network that mapped to the internet or specificed private network. (Wikipedia)&lt;br /&gt;&lt;br /&gt;FedEx&lt;br /&gt;http://customcritical.fedex.com/us/owneroperator/signin.shtml&lt;br /&gt;&lt;br /&gt;Web portal is a managed online system providing different kind of service via single point of access. It usually manage the information into customable channels for users to subscribe.&lt;br /&gt;&lt;br /&gt;HKU SPACE&lt;br /&gt;http://soul.hkuspace.org/&lt;br /&gt;&lt;br /&gt;CSU&lt;br /&gt;http://my.csu.edu.au/&lt;br /&gt;&lt;br /&gt;According to the wikipedia, B2B is Business-to-Business that involve transactions between manufacturer and a wholesaler or between a wholesaler and a retailer. B2C is defined as Business to Customer that usually involve single transaction between them.&lt;br /&gt;&lt;br /&gt;Vitual Private Network uses the public network for transferring information with encryption for security purposes.&lt;br /&gt;&lt;br /&gt;What role can VPN play in business-to-business e-commerce?&lt;br /&gt;&lt;br /&gt;Vitual Private Network play the role for security in business-to-business in e-commerce. Since it uses encryption such as IPsec, hashing techniques, DES and AES for validation and data transfer, the security of the information is enchanced.&lt;br /&gt;&lt;br /&gt;Furthermore, there is a tunnel mode in VPN that allows to form a connection like a leased line in the internet between them, the capturing of the data stream from someone else is minimized. (Wikipedia)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Webopedia (2009), IP address, Retrieve 25 March 2009 from http://www.webopedia.com/TERM/I/IP_address.html&lt;br /&gt;&lt;br /&gt;Brendan M.G. (2009), What is IP or Internet Protocol?, Retrieved 25 March 2009, from http://www.wisegeek.com/what-is-ip-or-internet-protocol.htm&lt;br /&gt;&lt;br /&gt;Hollinger  D. (2001), Internet Protocol: The IP in TCP/IP&lt;br /&gt;Retrieved 29 March 2009 from http://www.cs.rpi.edu/~hollingd/javanetprog/notes/tcpip/tcpip.ppt&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Virtual private network, Retrieved 30 March 2009 from http://en.wikipedia.org/wiki/VPN&lt;br /&gt;&lt;br /&gt;Randolph B. (2004), Intranet v/s E-commerce sites, Retrieved 30 March 2009 from www.ischool.utexas.edu/~i385grb/Intranet_vs_E-commerce.ppt&lt;br /&gt;&lt;br /&gt;Wikipedia (n.d.), Extranet, Retrieved 30 March 2009 from http://en.wikipedia.org/wiki/Extranet&lt;br /&gt;&lt;br /&gt;SearchEnterpriseWAN.com (4 March 2009), extranet, Retrieved 1 April 2009 from http://searchenterprisewan.techtarget.com/sDefinition/0,,sid200_gci212089,00.html&lt;br /&gt;&lt;br /&gt;Indiana University (2 March 2009), What is a web portal?, Retrieved 1 April 2009 from http://kb.iu.edu/data/ajbd.html&lt;br /&gt;&lt;br /&gt;webopedia.com (7 June 2006), intranet, Retrieved 1 April 2009 from http://www.webopedia.com/TERM/I/intranet.html&lt;br /&gt;&lt;br /&gt;Dennis P. G. (n.d.), Finding Your Way Around E-commerce,  Retrieved 1 April 2009 from http://www.intranetjournal.com/features/Ecommercetut.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-2512497971637894244?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/2512497971637894244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-4-virtual-private-networks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2512497971637894244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/2512497971637894244'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-4-virtual-private-networks.html' title='Exercise 4: Virtual private networks'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PRSkEjMOAcs/Sc8joO3ZcuI/AAAAAAAAABU/dUOsx5v5C-g/s72-c/tcpip.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-7547543579861552952</id><published>2009-03-22T14:49:00.010+08:00</published><updated>2009-04-15T06:26:28.855+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 3'/><title type='text'>Exercise 3: Finding some common ground</title><content type='html'>&lt;em&gt;Steps involved with the Rapid Evolutionary Prototypng model&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScXlEePGsGI/AAAAAAAAABE/_5TjruVsIYU/s1600-h/evolutionary_model.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315906800179392610" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScXlEePGsGI/AAAAAAAAABE/_5TjruVsIYU/s200/evolutionary_model.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Figure 1: Steps involved in Evolutionary Prototyping model. Retrieved 21 March 2009 from http://www.wittmannclan.de/ptr/cs/slcycles.html &lt;br /&gt;&lt;br /&gt;&lt;p&gt;In developing web application, the requirements of each module within the web application may be different and may be unclear. The evolutionary prototyping model, divide the application into modules for development. Within the model, the prototype is coded. When there are changes with the requirements, codes are modified or added. &lt;br /&gt;&lt;br /&gt;Each module produces its prototype with its development cycle to meet the requirements for next phrase. Those including analysis of the requirements, design, implementation and test phrases. &lt;br /&gt;&lt;br /&gt;As a result, each module contains a prototype for their requirements. Each prototype is refined during the cycle. The project is completed with joining the prototype into a single web application. (Clan, 2009) &lt;br /&gt;&lt;br /&gt;Clan (2009) suggested the approach should be used on small projects rather than large projects. It is because the maintenance work is difficult for large projects. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;em&gt;How is it related to agile development?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_PRSkEjMOAcs/SchPo4r4_eI/AAAAAAAAABM/SwCFhiAgjr0/s1600-h/AMDD.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5316586923940707810" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 132px" alt="" src="http://2.bp.blogspot.com/_PRSkEjMOAcs/SchPo4r4_eI/AAAAAAAAABM/SwCFhiAgjr0/s200/AMDD.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Figure 2: Agile Model Driven Development Life cycle Retrieved 24 March 2009 from http://www.agilemodeling.com/essays/amdd.htm &lt;br /&gt;&lt;br /&gt;Both Rapid Evolutionary Prototyping and Agile Development sharing the same characteristics. &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Identify the basic requirements at initial phrase &lt;br /&gt;&lt;li&gt;Frequently change of the requirements or requirements is unclear. &lt;br /&gt;&lt;li&gt;Requiring customer involvement including face-to-face communication as technical team for the successful of the product. &lt;br /&gt;&lt;li&gt;Activities are broken down into individual module for development. &lt;br /&gt;&lt;li&gt;Features can be add or change during the development. &lt;br /&gt;&lt;li&gt;Each module development has its own development cycle. &lt;br /&gt;&lt;li&gt;Modules combined into a single application &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The different between them: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Agile development focus on the modeling the system but not coding on system. &lt;br /&gt;&lt;li&gt;Evolutionary Prototyping model focus on coding for user requirements not modeling the system. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Clan, W. (2009), Software Life-cycles, Retrieved 22 March 2009 from http://www.wittmannclan.de/ptr/cs/slcycles.html&lt;br /&gt;&lt;br /&gt;Wikipedia (2009), Agile web development, Retrieve 22 March 2009 from http://en.wikipedia.org/wiki/Agile_web_development&lt;br /&gt;&lt;br /&gt;Scott W. A.,(2007), Agile Modeling: Effective Practices for Extreme Programming and the Unified Process, John Wiley &amp; Sons&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-7547543579861552952?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/7547543579861552952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-3-finding-some-common-ground.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7547543579861552952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/7547543579861552952'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-3-finding-some-common-ground.html' title='Exercise 3: Finding some common ground'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PRSkEjMOAcs/ScXlEePGsGI/AAAAAAAAABE/_5TjruVsIYU/s72-c/evolutionary_model.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-8049257421082029770</id><published>2009-03-20T17:08:00.010+08:00</published><updated>2009-04-15T06:26:56.293+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 2'/><title type='text'>Exercise 2: Technology and the evolution of business options</title><content type='html'>&lt;b&gt;Online Shopping&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;YESASIA&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.yesasia.com/global/en/home.html"&gt;http://www.yesasia.com/global/en/home.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;HMV&lt;/em&gt;&lt;br /&gt;&lt;a href="http://hmv.com/"&gt;http://hmv.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;BizRate&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.bizrate.co.uk/"&gt;http://www.bizrate.co.uk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;OO Online Bargain Megastore&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.oo.com.au/"&gt;http://www.oo.com.au/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;dstore&lt;/em&gt;&lt;br /&gt;&lt;a href="http://dstore.com.au/"&gt;http://dstore.com.au/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Electronic Payment&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;PayPal&lt;/em&gt;&lt;br /&gt;&lt;a href="https://www.paypal.com/"&gt;https://www.paypal.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Asia Pay&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.asiapay.com.hk/"&gt;http://www.asiapay.com.hk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Pay Dollar&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.paydollar.com/"&gt;http://www.paydollar.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Worldpay&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.worldpay.com/"&gt;http://www.worldpay.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;NetPayments&lt;/em&gt;&lt;br /&gt;&lt;a href="http://www.netpayments.co.uk/"&gt;http://www.netpayments.co.uk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Database access&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;ZOHO Creator&lt;/em&gt;&lt;br /&gt;&lt;a href="http://creator.zoho.com/"&gt;http://creator.zoho.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;dabble db&lt;/em&gt;&lt;br /&gt;&lt;a href="http://dabbledb.com/"&gt;http://dabbledb.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Hong Kong Public Library Catalog&lt;/em&gt;&lt;br /&gt;&lt;a href="http://libcat.hkpl.gov.hk/webpac_eng/wgbroker.exe?200903241201170203403+-access+top.books-page"&gt;http://libcat.hkpl.gov.hk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The University of Hong Kong Libraries&lt;/em&gt;&lt;br /&gt;&lt;a href="http://lib.hku.hk/"&gt;http://lib.hku.hk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WAP sites for mobile phone&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Mobile Yahoo!&lt;/em&gt;&lt;br /&gt;&lt;a href="mobile.yahoo.com"&gt;mobile.yahoo.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Hong Kong Observatory WAP site&lt;/em&gt;&lt;br /&gt;&lt;a href="wap.hko.gov.hk"&gt;wap.hko.gov.hk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;XE&lt;/em&gt;&lt;br /&gt;&lt;a href="http://wap.xe.com"&gt;http://wap.xe.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;MSN WAP site&lt;/em&gt;&lt;br /&gt;&lt;a href="http://mobile.msn.com"&gt;http://mobile.msn.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Google WAP site&lt;/em&gt;&lt;br /&gt;&lt;a href="http://wap.google.com"&gt;http://wap.google.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Scottish Enterprise. Business Link.(2007), Trade Online Project, Retrieved 18 March 2009 from http://www.electronic-payments.co.uk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-8049257421082029770?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/8049257421082029770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8049257421082029770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/8049257421082029770'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exercise-2.html' title='Exercise 2: Technology and the evolution of business options'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6706654473434111692</id><published>2009-03-10T22:20:00.027+08:00</published><updated>2009-04-15T06:27:17.563+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 1'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exericse 1: Analysis of the online communities paradigm</title><content type='html'>&lt;b&gt;Question 1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Part A&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Online Community&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;There are different explaination on the word "community", the best I found in the &lt;a href="http://www.askoxford.com/concise_oed/community?view=uk"&gt;Oxford Dictionary&lt;/a&gt; is that community is "an interacting population of various kinds of individuals (as species) in a common location".&lt;br /&gt;&lt;br /&gt;Online community is a virtual community which grouping people with common interests and values together through the network and electronic means. The people within the community communicate and interact each other with words, picture, symbols and video clips, but not interacting face to face.&lt;br /&gt;&lt;br /&gt;The interaction within the community can be online and offline, instant and batch processing. With the network such as Internet, the community can be national and multinational.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Importance of Online Community to e-commerce&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;In term of the e-commerce, the online community is important for collecting the information, for example, the current trend of the community. Survey to collect information for improving product and inventing new products.&lt;br /&gt;&lt;br /&gt;The more important is to promote the products. As the community sharing common values, when a product a company found is suitable for them, they will become that target group of the product.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Part B&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;b&gt;(i)&lt;/b&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Common thread and local community sense in action at http://ebay.com, http://ebay.co.uk, http://ebay.com.au&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;By observing the websites, the look and feel of the eBay are similar.&lt;br /&gt;The category within the website is slightly different, it may be the results of the different habits in different countries. When looking for an item, the system will locate the items within the same country or region. The currency is exchanged into the local currency. It is found to be local community sense because the habits and trends are different throughout the countries.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(ii)&lt;/b&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Electronic payment systems and acceptability&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;In eBay, PayPal is the only electronic payment system used. According to the PayPal (2009), PayPal works with 190 countries and regions and 18 currencies.&lt;br /&gt;However, there are only 17 countries and regions provided with total payment solution. 48 countries and regions can send, receive and withdraw money via mostly US bank account. In the other countries it supports, PayPal can only send money.&lt;br /&gt;As a result, it is found to be not globally acceptable.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Beneifts of online auction sale to a buyer, a seller and eBay owner&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;In terms of the buyers, they can buy the goods with a lower cost or the cost within budget.&lt;br /&gt;In terms of the seller, they can post whatever used or unused items they want to sell to the site for auction. Some people seems it is a environmental friendly actions. When a new product is put to auction it can be used to test product to the market.&lt;br /&gt;In terms of the eBay owner, payment should be done on each transaction. According to eBay.au's FAQ, personal account should pay 3.4%+0.3 AUD for domestic transactions. Premier and business account should pay 1.1% to 2.4% + 0.3 AUD for domestic transactions.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Part C&lt;/b&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Three other examples of online business using online community approach.&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hk.auctions.yahoo.com/"&gt;hk.auctions.yahoo.com&lt;/a&gt;&lt;br /&gt;Yahoo Auctions links people for buying and selling of the things they are interested. The website grouped the products into different categories. The users can also leave comments and ask question through the system.&lt;br /&gt;&lt;br /&gt;The auctions and shopping site from yahoo are existing in some regions. Some of the regions provides either of them only. The &lt;a href="http://shopping.yahoo.com/"&gt;Yahoo Shopping&lt;/a&gt; site links different kind of shops such as traditional shops, chain shops and professional shops for users to find the product they needs and compare the price with the similar products.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.taobao.com/"&gt;taobao&lt;/a&gt;&lt;br /&gt;Taobao is business website from &lt;a href="http://www.alibaba.com/"&gt;Alibaba&lt;/a&gt;. It is a Chinese based trading website. It links with companies and individual for trading.&lt;br /&gt;&lt;br /&gt;Just like yahoo auctions, comments and rating of the seller are shown for users to see if the person can be trust or not.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.red-dots.com/"&gt;Red-dots&lt;/a&gt;&lt;br /&gt;Red-dots is a website for auctions and sellings, it provide two languages - Chinese and English for user to access.&lt;br /&gt;&lt;br /&gt;Like Taobao and Yahoo's services, the website links with the companies and individual for trading but serve mostly localized in Hong Kong.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Question 2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;a. Why www.amazon.com has been a successful site? How does the purchase of a book work?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The original Amazon website is a online book store. It become a successful site because it adds new kind of products such as Music CDs and videos. The more important change is that the users can write the review of the products/books on the website, let people who interested with the product to read for product evalution&lt;br /&gt;(Erny).&lt;br /&gt;&lt;br /&gt;When buying a book, first we enter the Amazon website, we move the mouse pointer to the book category from the upper left corner. We can see there are four kind of sub-categories - Books, Kindle Books, Textbooks and Magazines.&lt;br /&gt;&lt;br /&gt;Figure 1. Categories of products in Amazon.com&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScCho08RauI/AAAAAAAAAAM/LHMdw932_Tw/s1600-h/fig1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5314425283075468002" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 139px" alt="" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScCho08RauI/AAAAAAAAAAM/LHMdw932_Tw/s200/fig1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By selecting different category, the page change with its searching methods.&lt;br /&gt;&lt;br /&gt;Figure 2. Page for Search textbook&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_PRSkEjMOAcs/ScCqMfs9VbI/AAAAAAAAAA0/wHj6YeqrmtE/s1600-h/fig7.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://1.bp.blogspot.com/_PRSkEjMOAcs/ScCqMfs9VbI/AAAAAAAAAA0/wHj6YeqrmtE/s200/fig7.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314434691942405554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After we selecte the book as the category, the books which are best seller, New and Pre-order books are shown. At this point, we can also choose the kind of books available via the menu on the left such as Crafts &amp;amp; Hobbies and Entertainment.&lt;br /&gt;&lt;br /&gt;With a selected book, the user can see the product rating, details, price, versions such as hard cover, paperback, editorial and customer review and discussion available. User can know information by reading them.&lt;br /&gt;&lt;br /&gt;Figure 3. Selected a book&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCpsdXU0HI/AAAAAAAAAAs/62BWpSq9SYE/s1600-h/bkinfo.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCpsdXU0HI/AAAAAAAAAAs/62BWpSq9SYE/s200/bkinfo.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314434141558984818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Check out&lt;/em&gt; is required after books and products are added into &lt;em&gt;shopping cart&lt;/em&gt;, Amazon requires registered user to purchase books. Login or create a new account leads user to &lt;em&gt;Shipping and payment&lt;/em&gt; page. At this page, the product delivery method should be choose with decision of ordering gift. &lt;br /&gt;&lt;br /&gt;Figure 4. Delivery&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScConwHC0pI/AAAAAAAAAAk/8oPw-w947s4/s1600-h/fig8.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScConwHC0pI/AAAAAAAAAAk/8oPw-w947s4/s200/fig8.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314432961179996818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Figure 5. Wrap Gift&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScCobTXbAcI/AAAAAAAAAAc/qM0NWJaMM4E/s1600-h/fig9.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://3.bp.blogspot.com/_PRSkEjMOAcs/ScCobTXbAcI/AAAAAAAAAAc/qM0NWJaMM4E/s200/fig9.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314432747305632194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When the credit card information is entered, an order can be placed to user according the delivery method selected.&lt;br /&gt;&lt;br /&gt;Figure 6. Credit card information page&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCoHPNFuWI/AAAAAAAAAAU/soXwt5cL2dM/s1600-h/fig10.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCoHPNFuWI/AAAAAAAAAAU/soXwt5cL2dM/s200/fig10.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314432402591168866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;b. any secure transaction not involoving money?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Transaction on a downloadable game comes without money. It is quite unexpected that credit card information is required when checkout the $0 item.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCwIccgDZI/AAAAAAAAAA8/4DVxVZas8rg/s1600-h/0money.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 156px;" src="http://4.bp.blogspot.com/_PRSkEjMOAcs/ScCwIccgDZI/AAAAAAAAAA8/4DVxVZas8rg/s200/0money.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314441219418361234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;c. Range of item can buy in Amazon.com&lt;/em&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Movies, Music and Games&lt;br /&gt;&lt;li&gt;Digitial Downloads&lt;br /&gt;&lt;li&gt;Kindle&lt;br /&gt;&lt;li&gt;Computer and Office&lt;br /&gt;&lt;li&gt;Electronics&lt;br /&gt;&lt;li&gt;Home and Garden&lt;br /&gt;&lt;li&gt;Grocery, Health and Beauty&lt;br /&gt;&lt;li&gt;Toys, Kids and Baby&lt;br /&gt;&lt;li&gt;Apparel, Shoes and Jewelry&lt;br /&gt;&lt;li&gt;Sports and Outdoors&lt;br /&gt;&lt;li&gt;Tools, Auto and Industrial&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Question 3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With the comparison sites, the customers can compare the price, features and specification of the products with different manufacturers. User review, test reports of the product is also included with the product page for user to determine the product they need. (Kelli, 2008)&lt;br /&gt;&lt;br /&gt;Although, each website have different parameters on evulate the products. However, the customer can buy the product with better feature product with the new price comparison sites. (Kelli, 2008)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;Reference:&lt;br /&gt;AskOxford, Retrieved 11 March 2009 from http://www.askoxford.com/?view=uk&lt;br /&gt;&lt;br /&gt;PayPal, PayPal Worldwide, Retrieved 11 March 2009 from https://www.paypal.com/hk/cgi-bin/webscr?cmd=_display-approved-signup-countries-outside&amp;amp;dispatch=5885d80a13c0db1fa798f5a5f5ae42e779d4b5655493f6170e35f7dda078d0f4&lt;br /&gt;&lt;br /&gt;PayPal, PayPal FAQ, Retrieved 11 March 2009 from http://pages.ebay.com.au/useprotection/basic-faq.html#a5&lt;br /&gt;&lt;br /&gt;Erny, D. (n.d.), Internet History, Retrieved 15 March 2009 from http://www.internet-story.com/&lt;br /&gt;&lt;br /&gt;Kelli B. G. (10 October, 2008), Which Comparison Shopping Site Is Best?, Retrieved 18 March 2009, http://www.smartmoney.com/spending/deals/which-comparison-shopping-site-is-best/?hpadref=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6706654473434111692?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6706654473434111692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/exericses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6706654473434111692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6706654473434111692'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/exericses.html' title='Exericse 1: Analysis of the online communities paradigm'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_PRSkEjMOAcs/ScCho08RauI/AAAAAAAAAAM/LHMdw932_Tw/s72-c/fig1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8640320162062183023.post-6074916873772796223</id><published>2009-03-10T10:30:00.004+08:00</published><updated>2009-03-10T11:01:54.708+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introducing myself'/><title type='text'>Introducing Myself</title><content type='html'>&lt;p&gt;Dear All,&lt;/p&gt;&lt;p&gt;I am Raymond Tang. I am a student of the CSU for the MIT course.&lt;/p&gt;&lt;p&gt;I am a technician of a secondary school in Hong Kong. I am responsible to maintain the network and help teachers to solve the problems they encountered.&lt;/p&gt;&lt;p&gt;I have developed small website many years ago, but I have not create a blog site before. This is my first blog site, the structure may change from time to time.&lt;/p&gt;&lt;p&gt;There are two purposes of this blog site:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;To fulfill the requirements of the ITC594 in CSU&lt;/li&gt;&lt;li&gt;To share and discuss on the current technologies&lt;/li&gt;&lt;li&gt;To share my work and feelings&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Hope you enjoy this blog, lets share and discuss together!&lt;/p&gt;&lt;p&gt;Raymond TANG&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8640320162062183023-6074916873772796223?l=ltang17.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ltang17.blogspot.com/feeds/6074916873772796223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://ltang17.blogspot.com/2009/03/introducing-myself.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6074916873772796223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8640320162062183023/posts/default/6074916873772796223'/><link rel='alternate' type='text/html' href='http://ltang17.blogspot.com/2009/03/introducing-myself.html' title='Introducing Myself'/><author><name>Raymond Tang</name><uri>http://www.blogger.com/profile/15855938616006861510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
