<?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-514794011622163004</id><updated>2011-10-21T10:47:24.819+11:00</updated><category term='ruby'/><category term='Workshop3'/><category term='Site Security'/><category term='Exercise5'/><category term='Exercise 26'/><category term='Exercise1'/><category term='Workshop1'/><category term='Exercises'/><category term='Exercise 22'/><category term='Family'/><category term='Exercise 17'/><category term='Workshop'/><category term='Elevator Pitch'/><category term='general'/><category term='Exercise12'/><category term='Exercise 18'/><category term='Question1'/><category term='Exercise8'/><category term='Workshop7'/><category term='Exercise4'/><category term='Assessment'/><category term='Workshop4'/><category term='Exercise 21'/><category term='Exercise 16'/><category term='ITC565'/><category term='Assignment2'/><category term='ACID'/><category term='SPLOG'/><category term='Exercise7'/><category term='Exercise 19'/><category term='Exercise13'/><category term='code review'/><category term='database'/><category term='Exercise 24'/><category term='Exercise14'/><category term='Exercise3'/><category term='Exercise 15'/><category term='trigger'/><category term='UML'/><category term='Exercise10'/><category term='Workshop5'/><category term='Assignment1'/><category term='Exercise6'/><category term='Exercise 20'/><category term='Exercise9'/><category term='case'/><category term='Workshop8'/><category term='Exercise 23'/><category term='Malware'/><category term='Exercise15'/><category term='Workshop2'/><category term='auscert'/><category term='Exercise2'/><category term='Exercise11'/><category term='CSU'/><category term='Workshop6'/><title type='text'>ITC565 Developer's Blog</title><subtitle type='html'>A blog associated with the CSU ITC565 subject</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default?start-index=101&amp;max-results=100'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8289746559478892399</id><published>2009-08-25T09:45:00.002+10:00</published><updated>2009-08-25T09:52:02.386+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPLOG'/><title type='text'>Just because</title><content type='html'>Look, just as I am leaving this blog and am not using it does  not mean that I will allow it to be a Splog.&lt;br /&gt;&lt;br /&gt;To the SCUM who keep (attempted) posting crud regarding their crap products - I will be blocking and filtering ALL comments as usual.&lt;br /&gt;&lt;br /&gt;Sploggers are LOSERS!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8289746559478892399?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8289746559478892399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/08/just-because.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8289746559478892399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8289746559478892399'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/08/just-because.html' title='Just because'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-354185752531558293</id><published>2009-07-27T11:44:00.002+10:00</published><updated>2009-07-27T11:47:44.822+10:00</updated><title type='text'>Where to now?</title><content type='html'>The exam is looming and the assignments are submitted, so it is back to the &lt;a href="http://gse-compliance.blogspot.com/"&gt;former blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will be adding a number of posts on both the SANS forensic Blog as well as my own in the next few days. I am leaving this material live on the web (even after the close of the session) and I hope that it is of use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-354185752531558293?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/354185752531558293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/where-to-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/354185752531558293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/354185752531558293'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/where-to-now.html' title='Where to now?'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7332805688311483706</id><published>2009-07-27T11:20:00.002+10:00</published><updated>2009-07-27T11:24:42.371+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assignment2'/><title type='text'>Assessment item 2</title><content type='html'>This page links to the various sub-pages and posts associated with Assignment No.2.&lt;br /&gt;&lt;br /&gt;The second Assignment comprises of 14 exercises:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-12-designing-for-secure.html"&gt;Exercise 12&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-14.html"&gt;Exercise 13&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-14.html"&gt;Exercise 14&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15.html"&gt;Exercise 15&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16.html"&gt;Exercise 16&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-17.html"&gt;Exercise 17&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-18-threading-demonstration-in.html"&gt;Exercise 18&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-19-tp-monitors-and-transaction.html"&gt;Exercise 19&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-20-modeling-with-uml.html"&gt;Exercise 20&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-21-shopping-cart.html"&gt;Exercise 21&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-22.html"&gt;Exercise 22&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-23-searching-mechanisms.html"&gt;Exercise 23&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-24-virtual-business-worlds-and.html"&gt;Exercise 24&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-25-m-commerce-and-e-wallet.html"&gt;Exercise 25&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: black;" lang="EN-US"&gt;Ruby on Rails Workshops 5 to 8&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/workshop-5-admiring-scenery-forms-ajax.html"&gt;Workshop 5&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/workshop-6-enjoying-ride-web-framework.html"&gt;Workshop 6&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/workshop-7-end-of-line-production-site.html"&gt;Workshop 7&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/workshop-8-ruby-on-rails-workshops.html"&gt;Workshop 8&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: black;" lang="EN-US"&gt;And the second Elevator Pitch.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/elevator-pitch-1-on-progress-report-for.html"&gt;&lt;/a&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/elevator-pitch-2-as-final-critical.html"&gt;Elevator pitch 2 on progress report for assessment item 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Where needed, there are also additions to &lt;a href="http://itc565developersblog.blogspot.com/2009/05/assessment-item-1.html"&gt;Assignment 1&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7332805688311483706?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7332805688311483706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/assessment-item-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7332805688311483706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7332805688311483706'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/assessment-item-2.html' title='Assessment item 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4328844909863545414</id><published>2009-07-27T10:38:00.002+10:00</published><updated>2009-07-27T11:06:28.062+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='case'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>CASE (Computer Aided Software Engineering) Tools</title><content type='html'>Case tools can be a great aid to auditing database systems. CASE or Computer Assisted Software Engineering tools not only help in the development of software and database structures but can be used to reverse engineer existing databases and check them against a predefined schema. There are a variety of both open source and commercial CASE tools. In this chapter we’ll be looking at Xcase (&lt;a href="http://www.xcase.com/"&gt;http://www.xcase.com&lt;/a&gt;/).&lt;br /&gt;&lt;br /&gt;Many commercial databases can run into the gigabyte or terabyte in size. Standard command line SQL coding is unlikely to find all of the intricate relationships between these tables, stored procedures and other database functions. A CASE tool on the other hand can reverse engineer existing databases to produce diagrams that represent the database. These can first of all be compared with existing schema diagrams to ensure that the database matches the architecture that it is originally built from and to be able to quickly zoom in on selected areas.&lt;br /&gt;&lt;br /&gt;Visual objects, colors and better diagrams may all be introduced to further enhance the auditor’s capacity to analyze the structure. Reverse engineering a database will enable the auditor to find out the various structures that have been created within the database. Some of these include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The indexes,&lt;/li&gt;&lt;li&gt;Fields,&lt;/li&gt;&lt;li&gt;Relationships,&lt;/li&gt;&lt;li&gt;Sub-categories,&lt;/li&gt;&lt;li&gt;Views,&lt;/li&gt;&lt;li&gt;Connections,&lt;/li&gt;&lt;li&gt;Primary keys and alternate keys,&lt;/li&gt;&lt;li&gt;Triggers,&lt;/li&gt;&lt;li&gt;Constraints,&lt;/li&gt;&lt;li&gt;Procedures and functions,&lt;/li&gt;&lt;li&gt;Rules,&lt;/li&gt;&lt;li&gt;Table space and storage details associated with the database,&lt;/li&gt;&lt;li&gt;Sequences used and finally the entities within the database.&lt;/li&gt;&lt;/ul&gt;Each of the tables will also display detailed information concerning the structure of each of the fields that may be viewed at a single glance. In large databases a graphical view is probably the only method that will adequately determine if relationships between different tables and functions within a database actually meet the requirements. It may be possible in smaller databases to determine the referential integrity constraints between different fields, but in a larger database containing thousands of tables there is no way to do this in a simple manner using manual techniques.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz9W_OitXI/AAAAAAAAC0Q/MavWVHTKGCw/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 278px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz9W_OitXI/AAAAAAAAC0Q/MavWVHTKGCw/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5362939827662796146" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;Fig- Display database schema.&lt;/span&gt;&lt;br /&gt;When reviewing the database design, it is not just security functions such as cross site scripting and sequel injection that need to be considered. Relationships between various entities and the rights and associated privileges that are associated with various tables and roles also need to be considered. The CASE tools allow us to visualize the most important security features associated with a database. These are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Schemas restrict the views of the database for users,&lt;/li&gt;&lt;li&gt;Domains, assertions, checks and other integrity controls defined as database objects which may be enforced using the DBMS in the process of database queries and updates,&lt;/li&gt;&lt;li&gt;Authorization rules. These are rules which identify the users and roles associated with the database and may be used to restrict the actions that a user can take against any of the database features such as tables or individual fields,&lt;/li&gt;&lt;li&gt;Authentication schemes. These are schemes which can be used to identify users attempting to gain access to the database or individual features within the database.&lt;/li&gt;&lt;li&gt;User defined procedures which may define constraints or limitations on the use of the database,&lt;/li&gt;&lt;li&gt;Encryption processes. Many compliance regimes call for the encryption of selected data on the database. Most modern databases include encryption processes that can be used to ensure that the data is protected.&lt;/li&gt;&lt;li&gt;Other features such as backup, check point capabilities and journaling help to ensure recovery processes for the database. These controls aid in database availability and integrity, two of the three legs of security.&lt;/li&gt;&lt;/ol&gt;CASE tools also contain other functions that are useful when auditing a database. One function that is extremely useful is model comparison.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Smz9XI80bzI/AAAAAAAAC0Y/syB0R2UFenA/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 339px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Smz9XI80bzI/AAAAAAAAC0Y/syB0R2UFenA/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5362939830272814898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic; color: rgb(204, 0, 0);"&gt;Fig - Reverse Engineer existing databases into presentation quality diagrams in minutes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Case tools allow the developer to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Present clear data models at various levels of detail using visual objects, colors and embedded diagrams to organize database schemas, &lt;/li&gt;&lt;li&gt;Synchronize models with the database,&lt;/li&gt;&lt;li&gt;Compare a baseline model to the actual database (or to another model),&lt;/li&gt;&lt;/ul&gt;Case tools can generate code automatically and also store this for review and baselining. This includes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DDL Code to build and change the database structure&lt;/li&gt;&lt;li&gt;Triggers and Stored Procedures to safeguard data integrity&lt;/li&gt;&lt;li&gt;Views and Queries to extract data&lt;/li&gt;&lt;/ul&gt;The auditor can also document the database design using multiple reporting options. This allows for the printing of diagrams and reports and the addition of comments to the reports and user defined attributes to the model.&lt;br /&gt;&lt;br /&gt;Data management features allow the auditor to validate the data in the database being reviewed against the business rules and constraints defined in the model and generate detailed integrity reports. This can be extended further to access and edit the data relationally using automatic parent/child browsers and lookups and then to locate faulty data subsets using automatically generated SQL statements. These provide valuable sources of errors and help in database maintenance – making the audit all the more valuable.&lt;br /&gt;&lt;br /&gt;Model comparison involves comparing the model of the database with the actual database on the system. This can be used to ensure change control or to ensure that no unauthorized changes have been made for other purposes. To do this, a baseline of the database structure will be taken at some point in time. At a later time the database could be reverse engineered to create another model and these two models could be compared. Any differences, variations or discrepancies between these would represent a change. Any changes should be authorized changes and if not, should be investigated. Many of the tools also have functions that provide detailed reports of all discrepancies.&lt;br /&gt;&lt;br /&gt;Many modern databases run into the terabytes and contain tens of thousands of tables. A baseline and automated report of any differences, variations or discrepancies makes the job of auditing change on these databases much simpler. Triggers and stored procedures can be stored within the CASE tool itself. These can be used to safeguard data integrity. Selected areas within the database can be set up such as honeytoken styled fields or views that can be checked against a hash at different times to ensure that no-one has altered any of these areas of the database. Further in database tables it should not change. Tables of hashes may be maintained and validated using the offline model that has stored these hash functions already. Any variation would be reported in the discrepancy report.&lt;br /&gt;&lt;br /&gt;Next the capability to create a complex ERD or Entity Relationship Diagram in itself adds value to the audit. Many organizations do not have a detailed structure of the database and these are grown organically over time with many of the original designers having left the organization. In this event it is not uncommon for the organization to have no idea about the various tables that they have on their own database.&lt;br /&gt;&lt;br /&gt;Another benefit of CASE tools is their ability to migrate data. CASE tools have the ability to create detailed SQL statements and to replicate through reverse engineering the data structures. They can then migrate these data structures to a separate database. This is useful as the data can be copied to another system. That system may be used to interrogate tables without fear of damaging the data. In particular the data that has migrated to the tables does not need to be the actual data, meaning that the auditor does not have access to sensitive information but will know the defenses and protections associated with the database. This is useful as the auditor can then perform complex interrogations of the database that may result in damage to the database if it was running on the large system. This provides a capability for the auditor to validate the data in the database against the business rules and constraints that have been defined by the models and generate detailed integrity reports. This capability gives an organization advanced tools that will help them locate faulty data subsets through the use of automatically generated SQL statements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4328844909863545414?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4328844909863545414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/case-computer-aided-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4328844909863545414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4328844909863545414'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/case-computer-aided-software.html' title='CASE (Computer Aided Software Engineering) Tools'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz9W_OitXI/AAAAAAAAC0Q/MavWVHTKGCw/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3248771880508860450</id><published>2009-07-27T10:29:00.001+10:00</published><updated>2009-07-27T10:37:07.875+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 20'/><title type='text'>UML and Mapping Processes</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic; color: rgb(51, 0, 153);"&gt;Unified Modeling Language (UML) &lt;/span&gt;is a visual representation language designed for the purpose of modeling and communicating the information contained within systems. To do this it uses a series of diagrams and supporting text.&lt;br /&gt;&lt;br /&gt;It can provide details of many process fields such as the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Actors, examples could include a manager leading a team executing a project and staff members on the project team.&lt;/li&gt;&lt;li&gt;The various processes that occur.&lt;/li&gt;&lt;li&gt;Relationships between actors and entities.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Unified&lt;/span&gt;&lt;br /&gt;In UML, unified came about due to the Object Management Group (OMG) and Rational Software Corporation coming together to create an industry standard for engineering practices. This was a desire to create a common language.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Model&lt;/span&gt;&lt;br /&gt;A model is a depiction of a subject. A model is used to encapsulate a set of ideas (called &lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;abstractions&lt;/span&gt;) concerning a subject. A model provides a simple means to create a common understanding amongst different team members and other individuals. This helps create an understanding of the requirements of the system and to communicate the impact of changes that will occur to the system through development and use.&lt;br /&gt;&lt;br /&gt;The creation of a model should be done in stages. An attempt to create a model all in one go is likely to become overwhelming. This may be possible and small systems, but large systems with many thousands of tables are beyond the human capacity to comprehend at once.&lt;br /&gt;&lt;br /&gt;When modeling, good practice dictates that the auditor will capture the relevant information that is required to gain an understanding of the problem at hand. This information may then be used to solve problems are issues that have arisen and will aid in the recommendation of a solution. It is also necessary to exclude information that is not relevant to the task at hand. It is easy to be waylaid by immaterial facts that can in no way lead to a change in the system or are not related to the scope of a project.&lt;br /&gt;&lt;br /&gt;In order to effectively manage the overall complexity involved within the audit of complex systems such as mainframes, models are an effective tool to achieve our goal. This process is best completed through:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Managing the abstractions that make up the model,&lt;/li&gt;&lt;li&gt;Including enough detail to understand the abstraction but not so much as to sidetrack the audit,&lt;/li&gt;&lt;li&gt;Exclude irrelevant information, and&lt;/li&gt;&lt;li&gt;Work with multiple teams to ensure that the model is relevant.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Language&lt;/span&gt;&lt;br /&gt;A language enables both people and systems to communicate about a subject. The subject incorporates the requirements and the system with respect to system development and audit. Language simplifies the process of communicating between individual team members and allows for the successful completion of the project.&lt;br /&gt;&lt;br /&gt;Languages are not always composed of words. In fact, complex abstractions such as mathematics are in fact languages.&lt;br /&gt;&lt;br /&gt;UML is formally defined by its creators as a language for specifying, visualizing, constructing, and documenting the artifacts of a system-intensive process. This is a system-intensive process used as an approach that centers on a system. It includes the various stages used to both produce and maintain a system. This is based on the requirements needed by the system. The specification includes the creation of a model describing the system. This model simplifies the analysis of the system and allows even complex systems to be audited within a reasonable timeframe and scope.&lt;br /&gt;&lt;br /&gt;This process involves visualization through the use of diagrams designed to render the model into a simple form so that it can be communicated. This diagram is then an expression of the system. It could be likened to a blueprint for a building. Ideally, his blueprint is designed before the building, but like many system design projects, development of a model or blueprint has either been excluded or lost. The subsequent creation of this model through audit captures a baseline that can be used not only to understand the process at hand but also for use in future reviews and assessments. Documenting these systems captures the knowledge and requirements associated with the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UML and Processes&lt;/span&gt;&lt;br /&gt;UML is not a process, it as a tool to capture processes and system design. A process relates a series of stages that are illustrated through the use of a methodology in order to decipher an issue. It then enables the development of a system that is designed to satisfy the requirements of a system owner or users.&lt;br /&gt;&lt;br /&gt;Method addresses the following stages of the development process:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requirements or information gathering, &lt;/li&gt;&lt;li&gt;analysis, and&lt;/li&gt;&lt;li&gt;design. &lt;/li&gt;&lt;/ul&gt;Methodology addresses the entire development process starting with the requirements or information gathering through to the system being made live.&lt;br /&gt;&lt;br /&gt;The distinct means of collecting and using requirements, analyzing requirements and finally designing a system are the techniques utilized. Artifacts are the “work products” produced and used within a process. These include the documentation and the actual system.&lt;br /&gt;&lt;br /&gt;Each classification of UML diagram is known as a modeling technique.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz2KfswCCI/AAAAAAAAC0I/0NtECsnYXGM/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 322px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz2KfswCCI/AAAAAAAAC0I/0NtECsnYXGM/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5362931916459739170" border="0" /&gt;&lt;/a&gt;The use of a UML diagram (as depicted in the figure above) can greatly simplify the audit process for complex systems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Further information about UML&lt;/span&gt;&lt;br /&gt;The following sites are the principal sources for information about the UML standard:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Object Management Group (OMG), &lt;/li&gt;&lt;/ul&gt;o &lt;a href="http://www.omg.org"&gt;http://www.omg.org &lt;/a&gt;and &lt;a href="http://www.omg.org/uml"&gt;http://www.omg.org/uml &lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rational Software Corporation (IBM),&lt;/li&gt;&lt;/ul&gt;o &lt;a href="http://www.rational.com%20and%20http://www.rational.com/uml"&gt;http://www.rational.com and http://www.rational.com/uml &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The subsequent sites present information concerning the next major change to the UML (the OCL) and a variety of other information on the subject:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Object Constraint Language (OCL),&lt;/li&gt;&lt;/ul&gt;o &lt;a href="http://www.klasse.nl/ocl/index.html"&gt;http://www.klasse.nl/ocl/index.html &lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The UML Forum is a virtual community concerning the UML,&lt;/li&gt;&lt;/ul&gt;o &lt;a href="http://www.uml-forum.com"&gt;http://www.uml-forum.com &lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The Cetus Team provides UML tools, methodologies and processes, &lt;/li&gt;&lt;/ul&gt;o &lt;a href="http://www.cetus-links.org"&gt;http://www.cetus-links.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3248771880508860450?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3248771880508860450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/uml-and-mapping-processes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3248771880508860450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3248771880508860450'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/uml-and-mapping-processes.html' title='UML and Mapping Processes'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/Smz2KfswCCI/AAAAAAAAC0I/0NtECsnYXGM/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2077033956429760844</id><published>2009-07-27T10:23:00.002+10:00</published><updated>2009-07-27T10:28:27.558+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>Code Reviews and Testing Third Party Software</title><content type='html'>An in-depth study of software audit is beyond the scope of this book, it is however necessary to touch on the subject. In earlier chapters testing methodologies that also relate to software have been described. These range from the black box test commonly used when code is unavailable (such as in the case of third-party software reviews and reviews package software) through to white box and crystal box assessments. In the latter, all code is available and tested.&lt;br /&gt;&lt;br /&gt;It is not essential that the auditor understands the intricacies of coding. Rather, it is sufficient to understand how the various testing approaches function and to have sufficient understanding to be able to work with the test engineer who has designed the test cases associated with software in order to be able to understand their work. In particular, the auditor should be able to understand the reports produced by the test engineer.&lt;br /&gt;&lt;br /&gt;We shall quickly rehash the types of software audit and review before going further. At the extremes these are:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Black box testing&lt;/span&gt;&lt;br /&gt;Black box software testing does not require any understanding of internal behavior. No access to code is available, but rather the response to input is validated. UML diagrams may be available in some instances and in this case a test of functionality will be matched to the functional requirements in the specification. In any event, input will be matched to output to test for expected or unexpected behavior. Some of the various testing methods include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Equivalence partitioning, &lt;/li&gt;&lt;li&gt;Boundary value analysis, &lt;/li&gt;&lt;li&gt;All-pairs testing, &lt;/li&gt;&lt;li&gt;Fuzzing, &lt;/li&gt;&lt;li&gt;Model-based testing, and&lt;/li&gt;&lt;li&gt;Traceability matrix.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;White box testing&lt;/span&gt;&lt;br /&gt;This type of testing includes access to the internal data structures. At the extreme (crystal box tests), the tester has access to all code, algorithms and design notes. White box testing will include tests to ensure predefined criteria have been met. Some examples of this form and testing include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Static code testing,&lt;/li&gt;&lt;li&gt;Mutation testing,&lt;/li&gt;&lt;li&gt;Completeness testing,&lt;/li&gt;&lt;li&gt;Fault injection testing, and&lt;/li&gt;&lt;li&gt;Lexical code analysis.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Testing in Combination&lt;/span&gt;&lt;br /&gt;The most effective means of testing software comes from combination of methods being deployed together. Unfortunately, access to code is not always available. In cases of packaged software and many third-party products, access to the code is restricted. Access to code is also effective in increasing the capabilities of the traditional black box test (commonly called a grey box test when code is available to conduct the test using black box test methods).&lt;br /&gt;Correcting a software problem after the event is far more expensive than stopping it before it goes into production release. It is often stated that post-release fixes are in the order of hundreds of times more expensive to fix then when compared to correcting the issue in code and requirements reviews.&lt;br /&gt;&lt;br /&gt;When auditing software is necessary to consider the following aspects of development associated with the code:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Software Quality&lt;/li&gt;&lt;blockquote style="color: rgb(0, 51, 51);"&gt;&lt;li&gt;Correctness,&lt;/li&gt;&lt;li&gt;Completeness, &lt;/li&gt;&lt;li&gt;Integrity,&lt;/li&gt;&lt;/blockquote&gt;&lt;li&gt;Capability, &lt;/li&gt;&lt;li&gt;Reliability, &lt;/li&gt;&lt;li&gt;Efficiency, &lt;/li&gt;&lt;li&gt;Portability, &lt;/li&gt;&lt;li&gt;Maintainability, &lt;/li&gt;&lt;li&gt;Compatibility, and &lt;/li&gt;&lt;li&gt;Usability.&lt;/li&gt;&lt;/ul&gt;Test engineers will generally develop metrics to report on each of these aspects of software development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;The various Levels of Testing&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Unit testing&lt;/span&gt;&lt;br /&gt;Unit testing focuses on individual software modules (the components of the software). Each module is tested individually in order to validate the software implementation component by component. An example would be the testing of individual classes associated within an object-oriented development environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Integration testing&lt;/span&gt;&lt;br /&gt;Integration testing is designed to uncover defects in the interfaces and interaction amid the integrated software modules. This form of testing starts with individual modules and joins them to form progressively larger associative groups. Each phase works on larger groupings until the software architecture is tested as an entire system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Acceptance testing&lt;/span&gt;&lt;br /&gt;Acceptance testing is conducted by the end-user. The goal is to decide whether or not to accept the final software product. Acceptance testing may be conducted between development phases.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Regression testing&lt;/span&gt;&lt;br /&gt;Regression testing is a process where a previously conducted test is a rerun on the software. This type of testing is conducted in order to ensure that prior defects have not been reintroduced or regressed into the code. This type of testing is frequently automated.&lt;br /&gt;Some specific types of regression testing include sanity testing (this is a check for unexpected and unforeseen behavior) and smoke testing (which is a test to ensure that the product provides basic functionality).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test Cycles&lt;/span&gt;&lt;br /&gt;There are many ways of engineering software. Each of these comes with its own test methodologies. One of the more common ones is the Software Development Life Cycle (SDLC). Some of the common foes is involved with testing include many phases of the project that are analogous to many other audit processes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements analysis&lt;/span&gt;&lt;br /&gt;The first stage of testing generally starts with the creation of a document detailing what is necessary. In this phase both developers and testers will work together to determine what tests may be conducted.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test planning&lt;/span&gt;&lt;br /&gt;This phase includes the creation of a strategy and the scope of the testing. Like an audit, system testing should be conducted as a project. Some areas to consider include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The creation of a test strategy,&lt;/li&gt;&lt;li&gt;The formulation of a test plan, and&lt;/li&gt;&lt;li&gt;The creation of a test bed or other testing system.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Test development&lt;/span&gt;&lt;br /&gt;The development phase of testing involves the creation of a number of test procedures based on the requirements derived in the preceding stages. Some of the steps involved with this phase of testing include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The development of test procedures,&lt;/li&gt;&lt;li&gt;The creation test scenarios,&lt;/li&gt;&lt;li&gt;Creating test cases and populating simulated data,&lt;/li&gt;&lt;li&gt;The creation of test programs and scripts and possibly the sourcing of third-party testing software (such as the static analysis platforms by Fortify).&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Test execution&lt;/span&gt;&lt;br /&gt;The test execution phase involves the actual testing of the software based on the processors decided above. Any errors or defects in the code would then be reported to the development team.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test reporting&lt;/span&gt;&lt;br /&gt;Test metrics that were developed in the preceding stages coupled with data concerning errors and defects and possibly recommendations for improvement. This will also include recommendations whether the software needs further testing before being released.&lt;br /&gt;Retesting the defects&lt;br /&gt;&lt;br /&gt;Defects may be the result of either errors in the code or the test process itself. It is necessary to ensure that any defects that are a result of the testing process are rectified. Defects may or may not be corrected. Many defects do not have a security related consequence and could be left for future software versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2077033956429760844?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2077033956429760844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/code-reviews-and-testing-third-party.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2077033956429760844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2077033956429760844'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/code-reviews-and-testing-third-party.html' title='Code Reviews and Testing Third Party Software'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-320127871639030888</id><published>2009-07-27T09:47:00.002+10:00</published><updated>2009-07-27T09:51:49.147+10: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 25 - Q2</title><content type='html'>&lt;span style="font-style: italic;"&gt;Visit an airline Web site and search for information on WAP or SMS access to booking airline services. Do the same for WAP or SMS services in banking. How do both industries compare?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have used the NAB and Westpac SMS services. I have to stated that each sucks.&lt;br /&gt;&lt;br /&gt;I also use the QANTAS SMS service, there is some use in this. When waiting for a flight, having the data pushed is a good idea.&lt;br /&gt;&lt;br /&gt;Banking, well this was and is a waste of time, a solution looking for an issue. It adds little security as SMS is simple to spoof etc and is impracticable.&lt;br /&gt;&lt;br /&gt;WAP was dead before it was birthed. This still born technology was a cut down - yet slower - version of the web. As phones and mobile devices become more powerful (and I have been using full browsers on phones for 12 years now) complete rich browsers will become more common on the phone itself. Windows Mobile, iPhone etc all have moved towards the richer model and WAP is slowly fading into the obscurity it deserverd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-320127871639030888?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/320127871639030888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-25-q2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/320127871639030888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/320127871639030888'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-25-q2.html' title='Exercise 25 - Q2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1329861436623426656</id><published>2009-07-27T09:45:00.001+10:00</published><updated>2009-07-27T09:46:54.156+10: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'>Location based services</title><content type='html'>Location based services are used to market solutions (such as restaurants) that are generally restricted in a geographically centered way.&lt;br /&gt;&lt;br /&gt;They aim to let people know that there is a particular service offered in their current area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1329861436623426656?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1329861436623426656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/location-based-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1329861436623426656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1329861436623426656'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/location-based-services.html' title='Location based services'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2183324835806378751</id><published>2009-07-27T09:36:00.002+10:00</published><updated>2009-07-27T09:43:58.564+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 24'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='trigger'/><title type='text'>Database Triggers</title><content type='html'>Triggers are a method&lt;span&gt; that can be used to add some logic to the database system. When a set action occurs (such as the arrival of a certain type of data), a process can be automatically started. Some of the common database triggers include the following.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Check Triggers&lt;/span&gt;&lt;br /&gt;Database triggers are procedural code that is automatically executed in reaction to selected events on a particular table, row or field in a database. The auditor should check that these are used and where. Triggers need to be set to fire when events that are defined in policy occur.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;System triggers&lt;/span&gt;&lt;br /&gt;System triggers allow the activation of controls that start when system events take place. These events can include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The start- up and shutdown of the database,&lt;/li&gt;&lt;li&gt;Logon and logoff from users,&lt;/li&gt;&lt;li&gt;Privileged access, and&lt;/li&gt;&lt;li&gt;The creation, altering and dropping of schema objects.&lt;/li&gt;&lt;/ul&gt;Using autonomous transactions also allows a log to be written for the above system events. The audit should check what (if any) systems triggers exist and ensure that these are aligned with the policy of the organization.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update, delete, and insert triggers&lt;/span&gt;&lt;br /&gt;Defense in depth requires an understanding of the users' actions at multiple levels. This is not just access to the database, but access at the detailed row level for selected events and where there is sensitive data. Database triggers need to be written to capture changes at the column and row level.&lt;br /&gt;&lt;br /&gt;Where data is extremely sensitive and any and all changes must be recorded, the database can be configured to write entire rows of data detailing a change to the data (who, what, where and why). This can be done both ahead of and subsequent to the modification of data being made with a write of information to a log table in the database and to an alternate location. This class of logging is extremely resource intensive. It requires that at least as many extra records are written and stored as the planned change (and at times more).&lt;br /&gt;&lt;br /&gt;The one flaw in this technique is an inability to capture read access to a file using normal database triggers.&lt;br /&gt;&lt;br /&gt;Oracle (as an example) breaks audit into three areas that can be used for logging and in creating triggers:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Statement auditing (CREATE TABLE or CREATE SESSION),&lt;/li&gt;&lt;li&gt;Privilege auditing (ALTER USER), and &lt;/li&gt;&lt;li&gt;Object level auditing (SELECT TABLE).&lt;/li&gt;&lt;/ol&gt;These inbuilt levels of auditing can provide the auditor with a rich source of evidence in the form of logs.&lt;br /&gt;&lt;br /&gt;Triggers are also commonly used as a form of database control. They can be used to trigger the execution of other procedures. For instance, integrity controls may be used to place an entry into a log to record access to tables. In this way user access may be recorded. It is possible to record information across different tables.&lt;br /&gt;&lt;br /&gt;Database triggers are also effective in adding security controls to a database. A trigger can include an event, condition and action. Triggers may be more complex than an assertion but will allow the database to automatically prohibit inappropriate actions, automatically start handling procedures using stored procedures or other processes or write a row to a log file. This may be used to reflect information about the user and transaction that has been created. This log may then be displayed in a format that can be read by humans or using automated procedures and tools. Like any stored procedure domains and triggers can be used to enforce controls for all users and all database activities.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2183324835806378751?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2183324835806378751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/database-triggers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2183324835806378751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2183324835806378751'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/database-triggers.html' title='Database Triggers'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5886420051170860563</id><published>2009-07-27T09:18:00.001+10:00</published><updated>2009-07-27T09:20:00.922+10: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'>Splogs</title><content type='html'>Sploggers are one of the most common sources of plagiarism on the Internet. A small number of resolute and capable Sploggers can steal content from thousands of different sites, scraping RSS feeds from them and stealing the content. The change is that many “black hats” have taken up the art.  The profit motivation of Sploggers is obvious, how they make a profit is less perceptible.&lt;br /&gt;&lt;br /&gt;Splogs were certainly not intended for humans to view. Human-visited Splogs are high risk with little prospective gain. Rather, Splogs consist of links to other sites which are more often than not long junk domains burdened with keywords and metatags. The idea is to have search engines pick up their site. A Splogger’s site will typically consist of nothing but keywords and metatags loaded into the HTTP header with a small amount of random text (usually copied from another site) and numerous diverse groups of text ads arranged to look alternatively like search results or regular links. When time the site is ready to be used, over 90% of the site consists of ads from Adsense or a comparable service.&lt;br /&gt;&lt;br /&gt;With sufficient spam links to the site, it is anticipated that the Splogger will rank highly in the search rankings and be besieged by visitors to those sites who they expect will click on the links (Note: According to most SEO experts and my own research, this does NOT work. You can only expedite getting listed, not drastically improve your ranking, thus hundreds of junk posts are a waste). It is hoped that the targeted visitors will subsequently click on the ads, either out of curiosity or due to the mistaken belief that they are regular links. Splogging is a classic example of black hat search engine optimisation (SEO) that merely involves extensive plagiarism to make it work.&lt;br /&gt;&lt;br /&gt;The expression “splog” was popularized in August 2005 when it was termed publicly by Mark Cuban. The name was used a sporadically prior to this in describing spam blogs back to as a minimum, 2003. The “art” developed from many linkblogs that were attempting to manipulate search indexes and others attempting to Google-bomb every word in the dictionary.&lt;br /&gt;It has been estimated that about one in five blogs are spam blogs. These fake blogs waste disk space and bandwidth as well as pollute search engine results, ruining blog search engines and are detrimental to a blogger’s community networking.Google's search engine uses PageRank, which is susceptible to link flooding, especially from highly weighted bloggers. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RSS abuse&lt;/span&gt;&lt;br /&gt;Full content RSS feeds make the splog problem worse .As an RSS feed simplifies the coping of content from genuine blogs. Splog RSS feeds pollute RSS search engines, and are reproduced and propagated throughout the Internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Defences&lt;/span&gt;&lt;br /&gt;A number of splog reporting services have arisen, allowing Internet users to report splog with plans of offering these splog URLs to search engines so that they can be excluded from search results. These services started with Splog Reporter.  Some of the main services include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SplogSpot which actually maintains a large database of Splogs and makes it available to the public via APIs, &lt;/li&gt;&lt;li&gt;A2B blocks web server IP addresses that splog URLs resolve to.&lt;/li&gt;&lt;li&gt;A Feed Copyrighter plugin (for WordPress) allows for the automatic addition of copyright messages to feed, so Splogs can be easily spotted and reported by visitors or through Google search. &lt;/li&gt;&lt;li&gt;TrustRank attempts to automatically find Splogs. &lt;/li&gt;&lt;li&gt;Blogger has implemented a system that can detect Splogs and then force them to take a Captcha 'spell this word' test. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5886420051170860563?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5886420051170860563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/splogs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5886420051170860563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5886420051170860563'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/splogs.html' title='Splogs'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6735259879885021933</id><published>2009-07-27T08:07:00.006+10:00</published><updated>2009-07-27T09:21:06.689+10: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'>SEO's</title><content type='html'>There are "some" valid uses for SEO's, but in reality, this is an area that has degraded into the criminal and unwholesome for the most part.&lt;br /&gt;&lt;br /&gt;This varies from the physical attacks that come from human such as “&lt;span style="font-style: italic;"&gt;Paid to Read&lt;/span&gt;” and “&lt;span style="font-style: italic;"&gt;Pay to Click&lt;/span&gt;” sources. Looking at correlations from time and location, correlations on browsing patterns etc, one can oft find sources that are likely to be engaging in unacceptable activities that are deployed to promote sites engaged in "click-fraud" and other such actions - the world of the SEO. The more you are able to promote the site - no matter how useless it is, the more you get paid.&lt;br /&gt;&lt;br /&gt;If the cost of directly paying or coercing a human to click on a banner is less than the returns of clicking on the banner fraud will occur. Reference sources and referrers sites could be a pornographic site as well with many sites offering access to porn if they solve CAPTCHA’s for instance.&lt;br /&gt;&lt;br /&gt;Impression spam comes about as a consequence of HTTP requests for web pages that contain advertisements, but that do not inevitably match up to a user viewing the page. A web crawler or “scraping” program could be used to issue an HTTP re-quest for a web page that happens to contain a banner. Statistically, this variety of request could be distinguished from those requests issued by human users as the banner requests would not correlate to the other images and calls made by the page.&lt;br /&gt;&lt;br /&gt;Next there are invalid clicks – these occur due to malicious intent from either “advertiser competitor clicking” or “publisher click inflation”. I see advertiser competitor clicking being the type that is a problem in this instance. For this it would be necessary to analyse click sources against competitor keywords.&lt;br /&gt;&lt;br /&gt;Then there is the issue of Tor networks and open Proxies and also those that strip cookies, modify identifying information and change requests. Infected cyber-cafes are also an issue. However, source address location to client market may be used in many cases to determine fraud. Also, over time these are likely to succumb to analysis.&lt;br /&gt;&lt;br /&gt;And there are the particular robotic attacks that could be deployed. Analysis of this area involves checking for signs of “&lt;span style="font-weight: bold; font-style: italic;"&gt;bots&lt;/span&gt;”.  There is a possibility of invalid user-agent string or unlikely fields in the headers of the HTTP requests. The statistical distribution of the user-agent string should have some correlation to the distribution of browsers.&lt;br /&gt;&lt;br /&gt;Clickbot networks have a level of predictability as do for-sale/ for-rent botnets.&lt;br /&gt;“&lt;span style="font-style: italic;"&gt;Forced browser clicks&lt;/span&gt;” are more difficult. This is more likely to require offline detection. The aggregate set of clicks should correlate to the distribution of files on the web server.&lt;br /&gt;&lt;br /&gt;Next there are a number of other areas to consider:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Covert_TCP and other covert channel methods,&lt;/li&gt;&lt;li&gt; Rootkits&lt;/li&gt;&lt;li&gt; DNS rebinding attacks&lt;/li&gt;&lt;li&gt; Distributed malware&lt;/li&gt;&lt;li&gt; XSS, Flash with HTTP calls, etc&lt;/li&gt;&lt;li&gt; &lt;a href="http://itc565developersblog.blogspot.com/2009/07/splogs.html"&gt;Splogs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;One thing that has occurred in the past has been a strong correlation across the IP addresses in email spam blacklists and click-bots – thus infected hosts may be participating in email spam botnets as well.&lt;br /&gt;&lt;br /&gt;Some other considerations in detecting this type of activity would have to include p0wf (Passing Fingerprinting of Web Content Frameworks) and time based correlations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6735259879885021933?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6735259879885021933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/seos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6735259879885021933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6735259879885021933'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/seos.html' title='SEO&apos;s'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7915810564313938773</id><published>2009-07-27T08:07:00.004+10:00</published><updated>2009-07-27T09:16:09.461+10: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'>SPAM</title><content type='html'>SPAM is ANY unsolicited commercial email. The issue is commercial. As long as there is a way to make money it is SPAM, anything (such as activist emails for a cause) that does not make money for the parties involved is not by definition SPAM.&lt;br /&gt;&lt;br /&gt;So basically, Spamming can be defined as sending unsolicited commercial e-mails (UCE). The more common term for spam is junk mail. Spammers obtain e-mail addresses by harvesting them from Usenet, bots, postings, DNS listings, and/or Web pages. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/seos.html"&gt;See also the post on SEO&lt;/a&gt;s.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7915810564313938773?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7915810564313938773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/spam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7915810564313938773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7915810564313938773'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/spam.html' title='SPAM'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7435227549667849075</id><published>2009-07-27T07:46:00.002+10:00</published><updated>2009-07-27T08:56:35.100+10: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'>Web Spiders</title><content type='html'>I am going to write on two (2) web spiders that I commonly make use of in this post (there really but 2 are related).&lt;br /&gt;&lt;br /&gt;First we have &lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;Web Scarab&lt;/a&gt; or the "WebScarab web auditing tool". This is a project from the OWASP framework and toolsets. It is designed to help ensure that websites are secure by creating a tool to break them (in simple terms). WebScarab is a Java based framework and web proxy designed for analyzing applications that communicate using the HTTP and HTTPS protocols.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmzW5SXVLJI/AAAAAAAACzw/db5CPUZrXQg/s1600-h/ws.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 301px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmzW5SXVLJI/AAAAAAAACzw/db5CPUZrXQg/s400/ws.jpg" alt="" id="BLOGGER_PHOTO_ID_5362897535962000530" border="0" /&gt;&lt;/a&gt;The following list of features and functions taken directly from the OWASP site, and details explicitly why WebScarab is such a critical tool to the Web application tester. The any issue with this tool is that it is not for the faint of heart. You will probably find little value in this tool if you cannot already manually test a site. For those who can however this tool takes Web testing to the next level.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fragments - extracts Scripts and HTML comments from HTML pages as they are seen via the proxy, or other plugins &lt;/li&gt;&lt;li&gt;Proxy - observes traffic between the browser and the web server. The WebScarab proxy is able to observe both HTTP and encrypted HTTPS traffic, by negotiating an SSL connection between WebScarab and the browser instead of simply connecting the browser to the server and allowing an encrypted stream to pass through it. Various proxy plugins have also been developed to allow the operator to control the requests and responses that pass through the proxy. &lt;/li&gt;&lt;li&gt;Manual intercept - allows the user to modify HTTP and HTTPS requests and responses on the fly, before they reach the server or browser. &lt;/li&gt;&lt;li&gt;Beanshell - allows for the execution of arbitrarily complex operations on requests and responses. Anything that can be expressed in Java can be executed. &lt;/li&gt;&lt;li&gt;Reveal hidden fields - sometimes it is easier to modify a hidden field in the page itself, rather than intercepting the request after it has been sent. This plugin simply changes all hidden fields found in HTML pages to text fields, making them visible, and editable. &lt;/li&gt;&lt;li&gt;Bandwidth simulator - allows the user to emulate a slower network, in order to observe how their website would perform when accessed over, say, a modem. &lt;/li&gt;&lt;li&gt;Spider - identifies new URLs on the target site, and fetches them on command. &lt;/li&gt;&lt;li&gt;Manual request - Allows editing and replay of previous requests, or creation of entirely new requests. &lt;/li&gt;&lt;li&gt;SessionID analysis - collects and analyses a number of cookies (and eventually URL-based parameters too) to visually determine the degree of randomness and unpredictability. &lt;/li&gt;&lt;li&gt;Scripted - operators can use BeanShell to write a script to create requests and fetch them from the server. The script can then perform some analysis on the responses, with all the power of the WebScarab Request and Response object model to simplify things. &lt;/li&gt;&lt;li&gt;Parameter fuzzer - performs automated substitution of parameter values that are likely to expose incomplete parameter validation, leading to vulnerabilities like Cross Site Scripting (XSS) and SQL Injection. &lt;/li&gt;&lt;li&gt;Search - allows the user to craft arbitrary BeanShell expressions to identify conversations that should be shown in the list. &lt;/li&gt;&lt;li&gt;Compare - calculates the edit distance between the response bodies of the conversations observed, and a selected baseline conversation. The edit distance is "the number of edits required to transform one document into another". For performance reasons, edits are calculated using word tokens, rather than byte by byte. &lt;/li&gt;&lt;li&gt;SOAP - There is a plugin that parses WSDL, and presents the various functions and the required parameters, allowing them to be edited before being sent to the server. &lt;/li&gt;&lt;li&gt;Extensions - automates checks for files that were mistakenly left in web server's root directory (e.g. .bak, ~, etc). Checks are performed for both, files and directories (e.g. /app/login.jsp will be checked for /app/login.jsp.bak, /app/login.jsp~, /app.zip, /app.tar.gz, etc). Extensions for files and directories can be edited by user. &lt;/li&gt;&lt;li&gt;XSS/CRLF - passive analysis plugin that searches for user-controlled data in HTTP response headers and body to identify potential CRLF injection (HTTP response splitting) and reflected cross-site scripting (XSS) vulnerabilities.&lt;/li&gt;&lt;/ul&gt;The spider function of Web Scarab allows a tester to download an image of the site for offline tests.&lt;br /&gt;&lt;br /&gt;On the other hand, &lt;a href="http://softbytelabs.com/us/bw/index.html"&gt;Black Widow&lt;/a&gt; and &lt;a href="http://softbytelabs.com/us/br/index.html"&gt;Brown Recluse&lt;/a&gt; (each by SoftByte Labs) are dedicated spiders.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmzepL7ac1I/AAAAAAAAC0A/hAm7Dxc6dcQ/s1600-h/bw.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 291px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmzepL7ac1I/AAAAAAAAC0A/hAm7Dxc6dcQ/s400/bw.jpg" alt="" id="BLOGGER_PHOTO_ID_5362906055449408338" border="0" /&gt;&lt;/a&gt;Black widow provides a searchable spider with the ability to save page and site structure, it also has a RegEx (regular Expression) based search function.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/SmzepOPAw_I/AAAAAAAACz4/kBn-tOJPVgM/s1600-h/br.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 262px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/SmzepOPAw_I/AAAAAAAACz4/kBn-tOJPVgM/s400/br.jpg" alt="" id="BLOGGER_PHOTO_ID_5362906056068482034" border="0" /&gt;&lt;/a&gt;Brown Recluse is a programmable spider. It can be configured to search sites for selected strings or by server type.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7435227549667849075?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7435227549667849075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/web-spiders.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7435227549667849075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7435227549667849075'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/web-spiders.html' title='Web Spiders'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lPXDlv0_iG8/SmzW5SXVLJI/AAAAAAAACzw/db5CPUZrXQg/s72-c/ws.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-709859272311722810</id><published>2009-07-26T19:26:00.004+10:00</published><updated>2009-07-27T10:28:59.712+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop6'/><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;span style="font-weight: bold;"&gt;To Do:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Developers may continue to build upon work with the OTBS using the topic reading to help with user registration and advanced login features from Hartl et al (2008).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;o generate a controller and an action by adding a method(s) to a controller;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;o create a view template for each action and to link to actions from views;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;o use AJAX to improve the user experience;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Share your success by posting progress comments and links etc to the Developers sub-forum site that has been set up for the Red team.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As either a developer or as an IT manager, how can aspects of social networking be applied to the OTBS?&lt;br /&gt;&lt;br /&gt;Here I have the same issues as in &lt;a href="http://itc565developersblog.blogspot.com/2009/07/workshop-5-admiring-scenery-forms-ajax.html"&gt;exercise 5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can add social networking to the OTBS, but WHY? It seems like adding a monitor to the fridge. A good idea at the time maybe?&lt;br /&gt;&lt;br /&gt;Where I fail is in the creation of the user experience. I still like command lines, you may have top learn how it functions, but when you do it is faster. Adding to user experiences is not my forte.&lt;br /&gt;&lt;br /&gt;What I have however is a&lt;a href="http://itc565developersblog.blogspot.com/2009/07/code-reviews-and-testing-third-party.html"&gt; post on code reviews&lt;/a&gt; - something I believe (biased) is more important.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-709859272311722810?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/709859272311722810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-6-enjoying-ride-web-framework.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/709859272311722810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/709859272311722810'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-6-enjoying-ride-web-framework.html' title='Workshop 6 Enjoying the Ride: Web framework alternatives, scalability and flexibility'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4831345375110501250</id><published>2009-07-26T19:25:00.006+10:00</published><updated>2009-07-27T11:20:00.857+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop7'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 7 End of the Line: production site migration and maintenance</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;To Do:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Developers conclude their work with the OTBS and look at the options for deployment of the site. Examine the various platforms/software tools used for deployment such as UNIX environment suggested in the Discussion Notes, Mongrel or Mongrel cluster, Nginx, Subversion or Capistrano (during development stage), JRuby in the Java environment. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Which way?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;The choice is up to you as this workshop present just one option and you may like to use another, such as deploying the OTBS in a .NET or J2EE environment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Can you get the OTBS Running in production mode as a minimal production server?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Share your success by posting progress comments and links etc to the Developers sub-forum site that has been set up for the Red team.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Focus Question&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;As either a developer or as an IT manager, what are the options available when deploying and maintaining the Ruby on Rails application online?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;For me, there are two (2) options (a third if you include Solaris, but I have not tried Ruby on Solaris yet):&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 102);"&gt;This is as I use the following IDEs&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Eclipse (on Linux)&lt;/li&gt;&lt;li&gt;Visual Studio 2008 (Windows)&lt;/li&gt;&lt;/ul&gt;As you can see from the figure below, I have installed Ruby on Steele and Iron Ruby into Visual Studio 2008.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/Smz_mbj9VLI/AAAAAAAAC0g/V0rHydep-_k/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 224px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/Smz_mbj9VLI/AAAAAAAAC0g/V0rHydep-_k/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5362942291990107314" border="0" /&gt;&lt;/a&gt;On Linux add to this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://subversion.tigris.org/"&gt;Sunversion&lt;/a&gt;, &amp;amp;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;These are source code repositories. These are similar in function to Microsoft Windows with Visual SourceSafe, but they work.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;In addition to this, I have to mention something just as critical as the code SVN, a CASE tool that can also maintain the database. To this end I have included a post on Case tools and in particular the ones I use:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/case-computer-aided-software.html"&gt;XCase&lt;/a&gt;&lt;/li&gt;&lt;li&gt;DBAnalyser&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;The &lt;/span&gt;&lt;a style="color: rgb(0, 0, 102);" href="http://itc565developersblog.blogspot.com/2009/07/case-computer-aided-software.html"&gt;post can be found here&lt;/a&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;.&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4831345375110501250?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4831345375110501250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-7-end-of-line-production-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4831345375110501250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4831345375110501250'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-7-end-of-line-production-site.html' title='Workshop 7 End of the Line: production site migration and maintenance'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lPXDlv0_iG8/Smz_mbj9VLI/AAAAAAAAC0g/V0rHydep-_k/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3340848222083606963</id><published>2009-07-26T19:25:00.005+10:00</published><updated>2009-07-27T10:03:59.410+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop8'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 8 Ruby on Rails Workshops Report and Evaluation</title><content type='html'>Upon the completion of this workshop, developers or managers should be able to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identify and evaluate the Ruby on Rails workshop series&lt;/li&gt;&lt;li&gt;Think critically and analytically about what you knew before and after the experiences&lt;/li&gt;&lt;li&gt;Share and post your Report and Evaluation with peers via the subject forum.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Evaluation and Report&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please answer each question in this evaluation section. In your answer, please consider content/topics presented and the technologies and teaching strategies used during the Ruby on Rails Workshops. Results will be collated and used to modify the workshop series.&lt;br /&gt;This form is just a format guide to you evaluation and report. Thank you for your time to complete workshop 8.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. List what you consider to be the three strengths of Ruby on Rails workshop series&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Quick and simple&lt;/li&gt;&lt;li&gt;Graphically rich&lt;/li&gt;&lt;li&gt;Easy to read and decode&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;2. List what you consider to be the three weaknesses of Ruby on Rails workshop series:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Slow&lt;/li&gt;&lt;li&gt;Slow&lt;/li&gt;&lt;li&gt;Slow&lt;/li&gt;&lt;/ol&gt;In addition to this, it is easy to reverse engineer - a good point for me, but not to all developers. With the Steele integration platform for VisualStudio it is possible to compile Ruby and it does go faster this way, but not a good deal.&lt;br /&gt;&lt;br /&gt;There is also little focus on security or references on how to secure Ruby to an acceptable level.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. List what aspects of Ruby on Rails workshop series that you found to be most difficult.&lt;/span&gt;&lt;br /&gt;Graphics. The text ideas I can do well, but I have never been a graphically focused programmer, hence why I have ended up reversing malware and designing algorithms.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. List what improvements could be made to the Ruby on Rails workshop series:&lt;/span&gt;&lt;br /&gt;From the POV of Ruby, I have no complaints.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Free response and reflective questions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Reflect on your experiences with the other Web framework used in this subject: Was it effective? How can it be improved? Should other Web frameworks be used as well or instead of Ruby on Rails?&lt;/span&gt;&lt;br /&gt;PHP has a number of frameworks. Like it or not, these are common. I do not see them being replaced any time soon.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Did the Developer’s or IT managers Team that you joined after workshop 4 have a preference towards using other tools to facilitate collaboration? Comment on the differences between these use of the sub-forum or Interact wiki tools from your experiences in this subject.&lt;/span&gt;&lt;br /&gt;Not really, we sort of all went off on our own, seem much like a standard development project - herding cats.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Further comments to add?&lt;br /&gt;&lt;/span&gt;&lt;span&gt;I will stick to C&lt;/span&gt;&lt;span&gt; and C++.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3340848222083606963?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3340848222083606963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-8-ruby-on-rails-workshops.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3340848222083606963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3340848222083606963'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-8-ruby-on-rails-workshops.html' title='Workshop 8 Ruby on Rails Workshops Report and Evaluation'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3590893493102048234</id><published>2009-07-26T19:20:00.003+10:00</published><updated>2009-07-27T10:15:11.208+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop5'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 5 Admiring the scenery Forms, AJAX screen layout and mobile interfaces</title><content type='html'>Like the majority of the class, I started this session and workshop as a developer in place of choosing management. I thought of changing, but no.&lt;br /&gt;&lt;br /&gt;I have at this stage to report my findings. What I do have to state is that I would prefer not to leave the processes to the web server so much. I (being a dinosaur) like to set triggers in the database itself.&lt;br /&gt;&lt;br /&gt;I also find that there is too much trust in the Ruby world as to what people receive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NEVER trust the data from the client. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are ways to lock some of this down, but they are not defined nor taught. This is an area I have concerns with. I mentioned &lt;a href="http://itc565developersblog.blogspot.com/2009/07/web-spiders.html"&gt;web scarab&lt;/a&gt; in a previous post. This tool can allow a malicious user (or a tester for that matter) to alter the form fields and data that they receive.&lt;br /&gt;&lt;br /&gt;I find that there is little effort to teach good coding practice where errors are set and logged with alerts when this occurs. Just as the user does not have an option to select "&lt;span style="font-weight: bold;"&gt;barn&lt;/span&gt;" under the option "&lt;span style="font-style: italic; color: rgb(0, 51, 0);"&gt;What type of building is at your address?&lt;/span&gt;" on the example exercise page does not mean that the user can not attempt to send this.&lt;br /&gt;&lt;br /&gt;If this occurs, what happens. Does the database add it, is there an error, does it crash. All of these are the questions that we need to start to consider early.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3590893493102048234?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3590893493102048234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-5-admiring-scenery-forms-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3590893493102048234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3590893493102048234'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/workshop-5-admiring-scenery-forms-ajax.html' title='Workshop 5 Admiring the scenery Forms, AJAX screen layout and mobile interfaces'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5086587478593592175</id><published>2009-07-26T10:08:00.005+10:00</published><updated>2009-07-27T09:57:18.388+10: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 25: M-commerce and the e-wallet: Innovation and mobile devices</title><content type='html'>Explore some of the problems associated with mobile technology or their suppliers.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;What is meant by a &lt;a href="http://itc565developersblog.blogspot.com/2009/07/location-based-services.html"&gt;location based service&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-25-q2.html"&gt;Visit an airline Web site and search for information on WAP or SMS access to booking airline services. Do the same for WAP or SMS services in banking. How do both industries compare?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Lucent Technologies designs and delivers the systems, services and software that drive next-generation communications networks at: http://www.lucent.com&lt;/li&gt;&lt;li&gt;Visit the W3C website and find the status of the VoiceXML project. When do you think it will affect business on the Web and what will its impact be?&lt;/li&gt;&lt;li&gt;Investigate CDMA, GSM or other network technologies for mobile phones and circuit-switched and packet-switched data capabilities.&lt;/li&gt;&lt;li&gt;According to Nokia:&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;“&lt;span style="font-style: italic;"&gt;The Nokia One Mobile Connectivity Service provides easy and secure access to email, calendar, directory and more from a mobile phone, PDA, PC or fixed-line phone - take your corporate applications mobile.&lt;/span&gt;”&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Why is a company like Nokia – http://www.nokia.com – described as having end-to-end expertise?&lt;/span&gt;&lt;/blockquote&gt;According to Takeshi Natsuno, media director of Gateway Business Department, NTT Mobile Communications Network, Inc (NTT DoCoMo) of Japan:&lt;br /&gt;&lt;blockquote&gt;“&lt;span style="font-style: italic; color: rgb(0, 51, 51);"&gt;The mobile phone will be an electronic wallet.&lt;/span&gt;”&lt;br /&gt;&lt;/blockquote&gt;Parts 3, 4 and 6 are at present solutions without a niche to fill. VoIP may have a place (for Lucent) but the overall push to see what can be integrated is a typical technology centered approach to "if you build it they will come".&lt;br /&gt;&lt;br /&gt;The truth is that most technology fails.&lt;br /&gt;&lt;br /&gt;The reality is that we will move towards integrated mobile platforms, not the phone. CPU time gets cheaper, memory gets cheaper, soon the computer will replace the phone (in my case it to a certain extent has already).&lt;br /&gt;&lt;br /&gt;The great part of all this is that data will (and is becoming) be king. Who cares where traffic if going to or from with a data based session. This is an issue for the Telcos (eg Telstra) as this also means no more long distance call charges, but they will gradually move to a new model.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5086587478593592175?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5086587478593592175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-25-m-commerce-and-e-wallet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5086587478593592175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5086587478593592175'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-25-m-commerce-and-e-wallet.html' title='Exercise 25: M-commerce and the e-wallet: Innovation and mobile devices'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3187839085577474675</id><published>2009-07-26T10:08:00.004+10:00</published><updated>2009-07-26T19:07:22.836+10: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</title><content type='html'>To take the last forum quote,&lt;br /&gt;&lt;blockquote style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-style: italic;"&gt;Is it in Topic 12?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I will check. There may be just 25 during the last edit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-Ken  &lt;/span&gt;&lt;/blockquote&gt;It would appear that there is no exercise 26.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3187839085577474675?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3187839085577474675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3187839085577474675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3187839085577474675'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-26.html' title='Exercise 26'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6298058811187954595</id><published>2009-07-26T10:04:00.001+10:00</published><updated>2009-07-27T09:44:05.514+10: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'>&lt;span style="font-style: italic;"&gt;Search the Web for a site that uses a cyber character or cyber agent to host a business site. (If you create a successful cyber agent, you may be able to get large companies to use it to sell their products online.)&lt;/span&gt;&lt;br /&gt;&lt;ol style="font-style: italic;"&gt;&lt;li&gt;Describe what software agents are.&lt;/li&gt;&lt;li&gt;Differentiate the various types of software agents.&lt;/li&gt;&lt;li&gt;Describe how techniques such as artificial intelligence and statistical techniques are used in software agents.&lt;/li&gt;&lt;li&gt;List popular software agents currently in use in the commercial world.&lt;/li&gt;&lt;li&gt;Identify various activities in e-commerce where software agents are currently in use.&lt;/li&gt;&lt;/ol&gt;I have decided to approach these final couple exercises a little differently. I have added a little from the legal side of the issue and also (as others have covered this well directly), have approached the question a little askew.&lt;br /&gt;&lt;br /&gt;Dal Pont  recognizes three possible categories of agents:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;those that can create legal relations on behalf of a principal with a third party; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;those that can affect legal relations on behalf of a principal with a third party; and &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;a person who has authority to act on behalf of a principal.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;At the end of the day, an agent is a party who acts on the behalf of a principle. A software agent is simply but a set of programmed tasks that are set to be enacted by the agent.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Electronic agency issues&lt;/span&gt;&lt;br /&gt;The inclusion of electronic agents makes the traditional requirement for a "&lt;span style="font-style: italic;"&gt;meeting of minds&lt;/span&gt;" more difficult to prove. With many smaller vendors, hosting and creating their own e-commerce enabled web site requires the interaction of a third party. Often, this involves the use of an external service provider, which offloads the Internet shopping trolley function. In this way, smaller vendors can create an e-commerce enabled site quickly and simply.&lt;br /&gt;&lt;br /&gt;The issue, which arises in this instance, is in determining the contracting parties. Many small vendors provide little more than billboards style advertising through their web site. The complex task of maintaining the databases, transaction processing, and the shopping cart function becomes simplified when outsourced to another provider. In some instances, a redirection takes the customer to a completely new site or domain.&lt;br /&gt;&lt;br /&gt;In such cases, it may be necessary to investigate whether a contractual arrangement has resulted between the client browsing a web site and the transaction agent or if indeed the transaction facilitator is a contractual agent for the Web store vendor . Agency has become a specialized area of contract law in itself. As such it will not be covered in any depth in this paper, though it is an area that does require due consideration and may influence the process of offer and acceptance.&lt;br /&gt;&lt;br /&gt;Basically, an agent can be created for any purpose that can be completed using a set of logical (including fuzzy logic) processes. In a web 2.0 context, this would generally relate to database processes (but not necessarily). A database &lt;a href="http://itc565developersblog.blogspot.com/2009/07/database-triggers.html"&gt;trigger &lt;/a&gt;or SQL stored procedure are a couple ways of achieving this process.&lt;br /&gt;&lt;br /&gt;I have defined&lt;a href="http://itc565developersblog.blogspot.com/2009/07/database-triggers.html"&gt;&lt;span style="font-style: italic;"&gt; triggers in more detail in the linked post&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;G. E. Dal Pont, (2001) “Law of Agency”, Butterworths &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6298058811187954595?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6298058811187954595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-24-virtual-business-worlds-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6298058811187954595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6298058811187954595'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-24-virtual-business-worlds-and.html' title='Exercise 24: Virtual business worlds and cyberagents'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4794501881074563249</id><published>2009-07-26T10:03:00.003+10:00</published><updated>2009-07-27T08:12:58.438+10: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'>&lt;ol&gt;&lt;li&gt;How do search engines such as Alta Vista differ from information directories?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/web-spiders.html"&gt;What is a spider? What does it do&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;Describe a search situation where the requirement for recall is high?&lt;/li&gt;&lt;li&gt;What is a meta-search engine? Provide some examples.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/spam.html"&gt;What is spamming?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/seos.html"&gt;How can you get your site listed at major search sites; and how could you improve your site ranking?&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;See the links.&lt;br /&gt;&lt;br /&gt;As for the others...&lt;br /&gt;&lt;br /&gt;1. Information directories are a specialised repository of selected knowledge. The ACM library, IEEE paper archive and similar sites act in such a manner. Alta Vista, Google, Bing etc are search indexing services. These are databases of other sites and material that can be used for online seraches across the entire (or a large segment) of the Internet.&lt;br /&gt;&lt;br /&gt;3. High recall comes into play when the ability to find the information is critical. Such a situation occurs when using specialised search tools such as medical databases or legal precedence searchers. One such example is &lt;a href="http://west.thomson.com/"&gt;Westlaw&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. Meta-search engines are used to search across multiple Internet search providers. For the most part they are junk filled wastes of time that offer little and consume time. The underground engine, &lt;a href="http://www.astalavista.com/"&gt;Alstalavista &lt;/a&gt;(not to be confused with the more commonly known Alta Vista) is one such example.&lt;br /&gt;&lt;br /&gt;For security research, it can become necessary to search for "hacker" tools and this site aides in this process.&lt;br /&gt;&lt;br /&gt;As a reference to both web site optimization and SPAM, I have a &lt;a href="http://gse-compliance.blogspot.com/2008/03/splogging.html"&gt;&lt;span style="font-weight: bold;"&gt;post on Splogging&lt;/span&gt;&lt;/a&gt; that I wrote in the past on one of my other blogs. Follow the link to read it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4794501881074563249?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4794501881074563249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-23-searching-mechanisms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4794501881074563249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4794501881074563249'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-23-searching-mechanisms.html' title='Exercise 23: Searching mechanisms'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8485362773676451596</id><published>2009-07-26T10:01:00.001+10:00</published><updated>2009-07-26T21:25:31.016+10: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</title><content type='html'>&lt;ol&gt;&lt;li&gt;Use the coordination theory framework to describe the contribution of ERP software to organisational goals such as efficiency and flexibility.&lt;/li&gt;&lt;li&gt;Differentiate between software systems such as Customer Relationship Management (CRM) software, Business-to-Business e-commerce programs and Supply-Chain Management (SCM) software.&lt;/li&gt;&lt;li&gt;What are the limitations of the EDI platform? How does a web-based platform for inter-enterprise communication rectify these limitations?&lt;/li&gt;&lt;li&gt;Describe the CRM Life Cycle and the different segments of CRM software.&lt;/li&gt;&lt;/ol&gt;I will start by pointing to a post I have made in the past - &lt;a href="http://gse-compliance.blogspot.com/2007/12/principles-of-database-datawarehouse.html"&gt;Principles of Database, Datawarehouse and Repository Development&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This has a different focus to most of the group, but it is where I am interested and hence put my time.&lt;br /&gt;&lt;br /&gt;The text of the link follows:&lt;br /&gt;&lt;p&gt;&lt;a name="_Toc163978751"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;Introduction&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;As the main repository of an organisation’s historical data, the data warehouse is evolving into the memory of a corporation[1]. Through storage of a wide variety of data sources in an integrated format, the data warehouse is becoming both the storeroom of past events, and the central predictive engine.&lt;br /&gt;&lt;br /&gt;The data warehouse contains the unrefined substance that when fed through a decision support system can provide management with up-to-date analytics and corporate predictors. The data analyst can use this technology to perform complex queries and analysis of information without adversely impacting operational systems.&lt;br /&gt;&lt;br /&gt;Through both the rise in computational speed and power and the growth of data storage, data warehouses have pressed other technologies into greater levels of development[2]. Technologies such as data mining have grown symbiotically with data warehouses due to the benefits that they can provide. To understand data warehousing it is necessary to have knowledge of both data warehouse technologies and the associated analytical analysis methods used to access, report and present on the data.&lt;br /&gt;&lt;br /&gt;The data warehouse architecture illustrates the entire organisational process from a variety of points of view[3]. These include the data, processes and infrastructure of the organisation and can mirror the structure, function and interrelationships of each constituent element of the organisation.&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc163978752"&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;Data warehousing and Data analysis&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;The infrastructure or technology viewpoint reflects the choice of hardware and software products as they are implemented by the distinct components which derive the overall system. The data perspective characteristically epitomizes the source and target data formation and can assist the members of the organisation to comprehend the data assets and functional relationships which make up the organisation’s operations. The process viewpoint is principally focused on the communication of the progression of data from the originating source database through to the procedure to load the data into data warehouse and finally to analyse and extract data from the warehouse.&lt;br /&gt;&lt;br /&gt;To be able to explore the effect of the rise of data warehouses on business and society, one first needs to characterise what the concept encompasses. William H. Inmon[4], known as one of the fathers of data warehousing, has stated that data warehouses are required to be subject orientated. In this, the data and thus database is organised in a manner such that all data relations relating to the same event or object are associated correspondingly in a manner that is concurrently time variant, non-volatile and integrated.&lt;br /&gt;&lt;br /&gt;Whereas operational systems are necessarily optimised for ease of use and the rapidity of response, the data warehouse is optimised for reporting and analysis. Online transaction processing (OLTP), crucial to the operational system, is of less importance to the data warehouse. Rather, on line analytical processing (OLAP) and the necessity to access unusual data patterns results in heavily denormalised or dimension based models that may not be required to achieve acceptable query response times[5].&lt;br /&gt;&lt;br /&gt;By time variant, is meant that changes to the objects and tables within the database are tracked and evidenced. This process allows for the statistical analysis of the data over time to produce reports on time variant trends. Heteroscadastic (including ARIMA, GARCH and ARCH) time series analysis of data is one of the newer avenues of research.&lt;br /&gt;&lt;br /&gt;A data warehouse requires that once data is committed to the database, it is stored as read only. In this it is used for future reporting and any point in time data becomes an individual snapshot of the database over time. This process allows both for historical analysis and also future predictions.&lt;br /&gt;&lt;br /&gt;To be effective, and data warehouse needs to contain data from as many if not all of an organisations operational applications and individual databases[6]. Further, to be of any effective use, the data in the warehouse must be contained in a consistent manner. A failure to either constrain data consistently or to provide an adequate sample of the organisation’s data leads to the GIGO issue[7]. That is, garbage in, garbage out.&lt;br /&gt;&lt;br /&gt;Research into data warehousing has expanded into what has been termed the Corporate Information Factory (or "CIF"). A CIF[8] is an organisational data structure which encompasses ERP, eCommerce, customer relationship management (CRM) and many other formerly separate reporting structures. In some cases, a CIF has been known to encompass data marts, exploration warehouses, ODS, both nearline and secondary storage, and project warehouses.&lt;br /&gt;&lt;br /&gt;However, the volumes of data, expense and lack of enterprise support leave CIF implementations is an idea for the future. There are still a number of difficulties associated with data warehousing which make their implementation less widespread then maybe expected in the future. Of particular concern, the process of extracting, cleaning and processing data is both time-consuming and difficult. The failure to implement and adhere to corporate wide naming standards amongst many organisations as only exasperated this problem.&lt;br /&gt;&lt;br /&gt;Widespread incompatibility between many database products has slowed down the broadening of data warehousing across organisations. Technologies such as OLAP have aided in the development of Cross-application data warehouses[9], but issues of table structure, normalisation and the type of data stored within individual databases remains an issue.&lt;br /&gt;Another issue that has hampered the implementation of data warehousing is security. In a world that is increasingly becoming reliant on the Internet and the Web, security could develop into a serious issue. With links into the data warehouse from the Internet, an organisations key informational assets are at risk from both discovery and compromise.&lt;br /&gt;&lt;br /&gt;There are a number of clear advantages to the adoption of data warehouse technologies[10]. It is easy to see that organisations which adopt these new technologies successfully will gain a clear competitive advantage. These technologies enhance end user access to data and reports in a manner that allows for greater creativity and more informed evaluations.&lt;br /&gt;&lt;br /&gt;The ability to create trend reports and use statistical methods to accurately forecast probabilistic events based on the past occurrences and experience provides for more focused corporate activity[11]. For instance, marketing information from a particular sales push can be compared across different regions to evaluate the impact of differing advertising initiatives.&lt;br /&gt;Data warehousing technology can also significantly increase the effectiveness of several commercial business applications. In particular, customer relationship management (CRM) benefits greatly from this technology. The ability to both gain an overall view and to be able to drill down to specific areas and individuals provides a significant advantage to many organisations. CRM has been one of the principal applications to make early use of data warehousing.&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc163978753"&gt;&lt;strong&gt;Data Mining&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;Data mining is a relatively new development. The use of statistical methods to routinely investigate large capacities of data for patterns by using techniques including classification, decision trees[12], association rule mining, and clustering, has resulted in a new field of computational mathematics[13]. Data mining is a complex subject in itself and has associations with numerous core disciplines together with computer science and appends significance to influential computational techniques from statistics, information retrieval, machine learning and pattern recognition[14].&lt;br /&gt;&lt;br /&gt;Too many people, the key issue introduced through the use of data mining is not commercial or technological in nature. It is a social issue. The protection of individual privacy is a concern that has increased exponentially with the rise in data mining. Data mining increases the possibility of an individual’s privacy being violated in some manner.&lt;br /&gt;&lt;br /&gt;The processes used to analyse ordinary commercial transactions may be used to compile significant quantities of information about individuals from their purchasing behaviour and lifestyle preferences[15]. In particular, where data is compiled across multiple organisations that need to protect the privacy of individuals identity is compounded.&lt;br /&gt;&lt;br /&gt;There are five primary stages to data mining. Initially it is essential that the data is loaded into the data warehouse system. This phase includes the extraction of data from the source databases and any necessary transformations required to reformat the data or cleanse the data such that it is maintained consistently.&lt;br /&gt;&lt;br /&gt;The next phase involves storing and managing the data. In this, the data needs to be normalised and formatted such that it fulfils the requirements necessary to maintaining a multidimensional database system. This data must be accessible to the organisation’s business analysts. The process of providing access to the data is the third phase of data mining. No data warehouse project may be considered successful if the business is unable to access the data.&lt;br /&gt;The final two phases of data mining call for analysis and presentation. Using methods such as OLAP, ROLAP and MOLAP[16] to access the data, the business analyst will load the required information from the data base into specialised application software[17]. These products are then able to present the data contained in the data warehouse in a more usable format such as the graph or table.&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc163978754"&gt;&lt;strong&gt;The Types of Analysis&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;The data maintained in a data warehouse is of little use if it cannot be accessed and analysed. As a consequence, a number of analysis techniques have developed. Although not exclusive, the following provides a brief summary of the analysis techniques available for use against data warehouses.&lt;br /&gt;&lt;br /&gt;Decision tree methodology has been around for a long time as a probabilistic tool. This technique uses tree shaped structures to represent a variety of decisions and possible outcomes. This process generates rules for the classification of data sets. There are a number of specific decision tree methods including Classification and Regression Trees (CART) and Chi Square Automatic Interaction Detection (CHAID) which have been derived from probability theory[18]. These methods provide a set of rules which may be applied to the data set in order to predict or forecast a given outcome from the data.&lt;br /&gt;&lt;br /&gt;The CART methodology segments a dataset by creating 2-way splits[19], whereas the CHAID method segments using chi square tests to create multi-directional splits. CART methodologies are more common than CHAID methods as they typically require less data preparation. However, CHAID methods can provide a greater level of statistical precision[20].&lt;br /&gt;&lt;br /&gt;Another method is the nearest neighbour method. This technique classifies each record in the dataset using an arrangement of the classes of the “k”[21] records which are the most comparable to it in a historical dataset. This technique is also known as the k-nearest neighbour technique[22].&lt;br /&gt;&lt;br /&gt;Rule induction is common in organisations with a strong programming all logic background or focus. This technique uses a variety of predetermined statistical tests to extract data using “if-then-else” rules[23]. Analysis programs such as those provided by SAS and the open source product “R” make extensive use of this method.&lt;br /&gt;&lt;br /&gt;A further common method is “data visualisation”. In this involves the generation of crafts and reports which allow for the visual interpretation of compound associations in multidimensional data by the analyst. Graphics tools are used to illustrate relationships between the data in a manner that provides more straightforward reporting than many of the other methods.&lt;br /&gt;With the advances in both computational power and the development of new mathematical techniques, a couple of advanced analysis methodologies have developed including artificial neural networks and genetic algorithms. Artificial neural networks used non linear predictive models which “learn” using training algorithms to provide intricate statistical reports on the data. These techniques are so named as they resemble biological neural networks in their structure.&lt;br /&gt;&lt;br /&gt;Genetic algorithms which use optimisation techniques and algorithmic evolution are also developing. These processes use a combination of “genetic combination”, mutation and probabilistic methods to simulate natural selection. These methods commonly integrate stochastic techniques, such as Monte Carlo simulations to provide estimates and forecasts from the data contained in the data warehouse[24].&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc163978755"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;Due to the exponential growth in the volume of data and the continuing development of new techniques for data analysis, organisations are continuing to bring about changes in the methods they use to both store data and analyse it. Data warehouse architectures which are now primarily used to express the overall configuration of a Business Intelligence system have integrated decision support systems (DSS), management information systems (MIS), into their fold giving businesses access to more information and predictive capability than ever before.&lt;br /&gt;This rapid increase in data presents many problems for organisations, but at the same time provides opportunities for those who know how to use these new technologies and techniques. Those businesses and organisations which most effectively make use of this new technology are likely to gain significant competitive advantages. As a result, the implementation of data warehousing techniques and technologies is only likely to continue.&lt;br /&gt;&lt;br /&gt;Coupled with the advances in analytical technologies such as neural network analysis and genetic algorithms, organisations now have greater access to the data than ever before. This increasing level of access has become the new organisational paradigm.&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc163978756"&gt;&lt;strong&gt;Bibliography&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Agresti, A. (1990), “Categorical Data Analysis”, New York: John Wiley &amp;amp; Sons.&lt;/li&gt;&lt;li&gt;Amado, Carlos Armando (Miami, FL, US) (1997) “Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data” US Patent Office – Application No. 400355 - G06F 015/18 &lt;/li&gt;&lt;li&gt;Berson, A &amp;amp; Smith, A (1997) “Data Warehousing, Data Mining and OLAP” McGraw Hill USA&lt;/li&gt;&lt;li&gt;Beynon-Davis, P., 2004. Database systems, 3rd edn, Palgrave McMillan.&lt;/li&gt;&lt;li&gt;Codd, E &amp;amp; Codd, S (1993) “Providing OLAP to User-Analysts: An IT Mandate”, Comshare&lt;/li&gt;&lt;li&gt;Collett, D. (1991), “Modelling Binary Data”, London: Chapman &amp;amp; Hall.&lt;/li&gt;&lt;li&gt;Date, C.J., 2004. An introduction to database systems, 8th edn, Addison Wesley.\&lt;/li&gt;&lt;li&gt;Fair Issac (2003) “A Discussion of Data Analysis, Prediction and Decision Techniques” &lt;/li&gt;&lt;li&gt;Fair Isaac White Paper, May 2003; http:// &lt;a href="http://www.fairisaac.com/"&gt;http://www.fairisaac.com/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Frank M. (1994) “A Drill Down Analysis of Multi-dimensional Databases”, DBMS, July.&lt;/li&gt;&lt;li&gt;Hoffer, J., Prescott, M., McFadden, F., 2007. Modern database management, 8th edn, Prentice Hall.&lt;/li&gt;&lt;li&gt;Inmon, W. H. (1995) “What is a Data Warehouse” Prisim Solutions Inc, &lt;a href="http://www.cait.wustl.edu/cait/papers/prism/vol1_no1"&gt;http://www.cait.wustl.edu/cait/papers/prism/vol1_no1&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;Inmon, W. H. (1996) “What is a Data Mart”, Informatiques Magazine. Avril&lt;/li&gt;&lt;li&gt;Inmon, W.H.(1996-2) “User Reaction to the Data Warehouse.” DMR (December 1996).&lt;/li&gt;&lt;li&gt;Inmon, W. H. (2003) “Building the Data Warehouse” Wiley Computer Publishing, USA&lt;/li&gt;&lt;li&gt;Keith, Steven; Kaser, Owen &amp;amp; Lemire, Daniel (2005) “Analyzing Large Collections of Electronic Text Using OLAP”, UNBSJ CSAS, TR-05-001, 2005. &lt;/li&gt;&lt;li&gt;Kimball, Ralph &amp;amp; Ross, Margy (2002) “The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling” 2nd Ed. Wiley Computer Publishing, USA&lt;/li&gt;&lt;li&gt;Kimball R. (1997) “A Dimensional Modelling Manifesto” DBMS Online, &lt;a href="http://www.dbmsmag.com/9708d15.html"&gt;http://www.dbmsmag.com/9708d15.html&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Kroenke, D., (2003) “Database processing: Fundamentals, design and implementation”, 10th edn, Prentice Hall.&lt;/li&gt;&lt;li&gt;Lehn, R., Lambert, V. &amp;amp; Nachouki, M.-P. (1997) "Data warehousing tool's architecture: from multidimensional analysis to data mining," dexa, p. 636, 8th International Workshop on Database and Expert Systems Applications (DEXA '97).&lt;/li&gt;&lt;li&gt;Ma, Yao (1998) “Data Warehousing, OLAP and Data Mining; An Integrated Strategy for use at FAA”, M.Eng Thesis, MIT 2nd edn, McGraw-Hill.&lt;/li&gt;&lt;li&gt;Hegland, M (2001) “Data mining techniques” Acta Numerica (2001), Volume 10: Pp 313-355 Cambridge University Press&lt;/li&gt;&lt;li&gt;Mento, B &amp;amp; Rapple, B (2003) “Data Mining and Data Warehousing” Association of Research Libraries, US&lt;/li&gt;&lt;li&gt;Nguyen, Tho Manh &amp;amp; Tjoa, A Min (2006) “Zero-Latency Data Warehousing (ZLDWH): the State-of-the-art and experimental implementation approaches” Institute of Software Technology and Interactive Systems, Vienna University of Technology Favoritenstraße 9-11/188-3 (2. Stock), 1040 Vienna, Austria&lt;/li&gt;&lt;li&gt;Pokorny J. (1998) “Conceptual Modelling in OLAP”, Proceeding of ECIS’98, Aix-en-Provence, Pp 273-288.&lt;/li&gt;&lt;li&gt;Pratt, P. &amp;amp; Adamski, J., (2005). “The concepts of database management”, 5th edn, ITP.&lt;/li&gt;&lt;li&gt;Pulleyblank, W. R. (2002) “Mathematical sciences in the nineties” Systems Journal, IBM Journal of Research and Development, “Mathematical Sciences at 40” IBM, Vol. 47, No. 1, 2003&lt;/li&gt;&lt;li&gt;Service, R &amp;amp; Maddux, H, (1999) “Building competitive advantage through IS: the organizational Information Quotient”, Journal of Information Science25(1) Pp 51-65.&lt;/li&gt;&lt;li&gt;Sullivan, D. (2001) “Document Warehousing and Text Mining: Techniques for Improving Business Operations”, Marketing, and Sales, USA&lt;/li&gt;&lt;li&gt;Thalhammer, T; Schrefl, M. &amp;amp; Mohania, M (2001) “Active Data Warehouses: Complementing OLAP with Analysis Rules”, Data &amp;amp; Knowledge Engineering, Elsevier Science Ltd., Vol. 39(3), Pp. 241–269.&lt;/li&gt;&lt;li&gt;Vassiliadis, P; Quix, C; Vassiliou, Y &amp;amp; Jarke, M (2001) “DATA WAREHOUSE PROCESS MANAGEMENT” Informatik, De&lt;/li&gt;&lt;li&gt;Whitehouse, Peter R. (2006) “Case Studies in Database Design and Implementation” UQ Australia&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8485362773676451596?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8485362773676451596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8485362773676451596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8485362773676451596'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-22.html' title='Exercise 22'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3316128826898839688</id><published>2009-07-26T09:59:00.002+10:00</published><updated>2009-07-26T21:20:04.288+10: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'>&lt;span style="font-weight: bold;"&gt;Develop the class diagram for the following shopping cart specifications:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;A shoppingCart object is associated with only one creditCard and customer and to items in itemToBuy object. Persistent customer information such as name, billing address, delivery address, e-mail address and credit rating is stored in the customer object. The credit card object is associated with a frequentShopper discount object, if the credit rating for the customer is good. The customer can make or cancel orders as well as add and delete items to the shopping cart product. The credit card object contains the secure method for checking that the charge is authentic&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;Here I am using Altova's UModel again to create a class diagram (as was noted in &lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-20-modeling-with-uml.html"&gt;exercise 20&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Smw7szecpfI/AAAAAAAACzo/Qt2l3IrPg4U/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 301px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Smw7szecpfI/AAAAAAAACzo/Qt2l3IrPg4U/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5362726897209615858" border="0" /&gt;&lt;/a&gt;Quick and nasty, but I am not really designing this to last ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3316128826898839688?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3316128826898839688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-21-shopping-cart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3316128826898839688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3316128826898839688'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-21-shopping-cart.html' title='Exercise 21: Shopping cart specifications'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lPXDlv0_iG8/Smw7szecpfI/AAAAAAAACzo/Qt2l3IrPg4U/s72-c/2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7486860862845589025</id><published>2009-07-23T21:21:00.001+10:00</published><updated>2009-07-24T23:51:02.965+10: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'># What is difference in load balancing with traditional and transactional MOM, RPC and conversations?</title><content type='html'>I am going to take the easy way out on this one as a paper I read sums this up fairly succinctly.&lt;br /&gt;&lt;br /&gt;This paper was:&lt;br /&gt;&lt;br /&gt;Qiyang Chen, James Yao, and Rubin Xin (2006) "&lt;a href="http://informingscience.org/proceedings/InSITE2006/IISITChen162.pdf"&gt;&lt;span style="font-style: italic;"&gt;Middleware Components for E-commerce Infrastructure: An Analytical Review&lt;/span&gt;&lt;/a&gt;", Issues in Informing Science and Information Technology Volume 3, 2006.&lt;br /&gt;&lt;br /&gt;This paper has a fairly quick and simple summary of the various technologies.&lt;br /&gt;&lt;br /&gt;For instance, to take two (2) patent blockquotes from this (MOM and RPC) we have:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(51, 0, 51); font-style: italic;"&gt;Remote Procedure Calls (RPC) permits a client program to call procedures located on a remote server program. Remote procedure calls is not isolated as distinct middleware level and is entrenched into the application with calls embedded into the client portion of the client/server application program. Stubs are developed for both the client and the server to call up synchronously when the client makes a call to the server. The intricacies of distributed processing are reduced by remote procedure calls by maintaining the semantics of a remote call no matter the client and server are located on the same system or not. The synchronous nature of the remote procedure calls makes it most appropriate for smaller applications where all communications are one-to-one and not asynchronous (Slater 2002)&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;Which we can make a comparision against MOM from the above definition of RPC with that below:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 102); font-style: italic;"&gt;Message Oriented Middleware (MOM) or enterprise message technology (EMT), provides asynchronous message delivery. The messages are lined up, just as objects, permitting the application that sends messages, to carry out other tasks without getting blocked till it receives the response. Generally located at a higher level than that of remote procedure calls, MOM assembly provides more than simply passing information. MOM also offers provisions for translating data, security, broadcasting data to multiple program, error recovery, and prioritization of messages and requests.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-style: italic;"&gt;MOM enhances flexibility by allowing applications to switch messages without the requirement of knowing on which platform or processor the other application located. MOM facilitates communications across a range of messaging systems, such as request-response, prolonged conversation, application queues, publishing and subscribing, and broadcasting. Messages are processed asynchronously with appropriate priority levels. Examples of messaging middleware are IBM's MQSeries, BEA’s Message Q, and Microsoft’s MSMQ&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7486860862845589025?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7486860862845589025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/what-is-difference-in-load-balancing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7486860862845589025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7486860862845589025'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/what-is-difference-in-load-balancing.html' title='# What is difference in load balancing with traditional and transactional MOM, RPC and conversations?'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2164444207934725177</id><published>2009-07-23T21:20:00.001+10:00</published><updated>2009-07-24T23:38:32.764+10: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'>Why is a two-phase commit protocol better than a one-phase atomic commit protocol?</title><content type='html'>Basically, it is a fairly simple answer that leads to a complex means of integrating and creating this solution.&lt;br /&gt;&lt;br /&gt;This is integrity.&lt;br /&gt;&lt;br /&gt;Atomic solutions concern ones that work and are accepted in one instantiation, or are reversed in full. A two-phase commit protocol ensures (or at least should ensure) that there is a roll back process (such as transaction logs in SQL systems). Where the complete transaction has not been fulfilled, there is a record of the transaction state and ti can be rolled back to the state of the system as if it did not occur. This is a process that is far more difficult (and at time impractice) when using a one-phase transaction system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2164444207934725177?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2164444207934725177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/why-is-two-phase-commit-protocol-better.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2164444207934725177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2164444207934725177'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/why-is-two-phase-commit-protocol-better.html' title='Why is a two-phase commit protocol better than a one-phase atomic commit protocol?'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7700989434159926188</id><published>2009-07-23T15:41:00.004+10:00</published><updated>2009-07-23T17:15:50.820+10: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'>Event</title><content type='html'>In, Ferg (2006) we see "&lt;span style="font-style: italic;"&gt;a stream of data items called events (Yourdon and Constantine's "transactions")"&lt;/span&gt;. An event is any occurrence that can impact the program from entering a transaction to moving a mouse or a timer counting down.&lt;br /&gt;&lt;br /&gt;If you can get past the fact it is from a Mac system focus, also see:&lt;br /&gt;&lt;a href="http://www.mactech.com/articles/mactech/Vol.08/08.07/EventProgramming/index.html"&gt;http://www.mactech.com/articles/mactech/Vol.08/08.07/EventProgramming/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;Ferg, Stephen (2006) "&lt;span style="font-style: italic;"&gt;Event-Driven Programming: Introduction, Tutorial, History&lt;/span&gt;"&lt;br /&gt;http://Tutorial_EventDrivenProgramming.sourceforge.net&lt;br /&gt;(steve@ferg.org)&lt;br /&gt;&lt;a href="http://eventdrivenpgm.sourceforge.net/"&gt;http://eventdrivenpgm.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7700989434159926188?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7700989434159926188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/event.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7700989434159926188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7700989434159926188'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/event.html' title='Event'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6594612148686719382</id><published>2009-07-23T15:41:00.002+10:00</published><updated>2009-07-23T17:06:34.742+10: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'>Waitable timer</title><content type='html'>As defined by &lt;a href="http://msdn.microsoft.com/en-us/library/ms687012%28VS.85%29.aspx"&gt;Microsoft&lt;/a&gt;;&lt;br /&gt;&lt;blockquote&gt;"&lt;span style="font-style: italic;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms687012%28VS.85%29.aspx"&gt;A waitable timer object is a synchronization object whose state is set to signaled when the specified due time arrives. There are two types of waitable timers that can be created: manual-reset and synchronization. A timer of either type can also be a periodic timer&lt;/a&gt;.&lt;/span&gt;"&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6594612148686719382?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6594612148686719382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/waitable-timer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6594612148686719382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6594612148686719382'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/waitable-timer.html' title='Waitable timer'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-674507502969490422</id><published>2009-07-23T15:39:00.003+10:00</published><updated>2009-07-23T17:04:25.142+10: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'>Mutex (mutual exclusion)</title><content type='html'>A &lt;span style="font-weight: bold;"&gt;Mutual Exclusion&lt;/span&gt; or "&lt;span style="font-weight: bold;"&gt;mutex&lt;/span&gt;" algorithm is one that is designed to forbid (where possible) the  simultaneous use of a common resource in concurrent programming.  These resources can include global variables and shared memory.&lt;br /&gt;&lt;br /&gt;This is achieved through the use of critical sections (although the critical section itself does not forbid deadlocks or provide for mutual exclusion). These are sections of code in which the process or thread requires shared access to common resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-674507502969490422?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/674507502969490422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/mutex-mutual-exclusion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/674507502969490422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/674507502969490422'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/mutex-mutual-exclusion.html' title='Mutex (mutual exclusion)'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6206300890611036652</id><published>2009-07-23T15:39:00.002+10:00</published><updated>2009-07-23T16:58:50.246+10: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'>Semaphores</title><content type='html'>A semaphore is a protected variable or abstract data type that was defined by Turing prize winner, Edsger Dijkstra.&lt;br /&gt;&lt;br /&gt;Semaphores have become the classic method for restricting access to shared resources such as shared memory in multiprogramming environments.&lt;br /&gt;&lt;br /&gt;A counting semaphore is a counter for a set of available resources, rather than a locked/unlocked flag of a single resource.&lt;br /&gt;&lt;br /&gt;Semaphores are the classic solution to preventing race conditions in the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd882512.aspx"&gt;dining philosophers problem&lt;/a&gt; but they do not stop resource deadlocks from occurring.&lt;br /&gt;&lt;br /&gt;Semaphores can only be accessed through the operations listed below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;P(Semaphore s) // Acquire Resource&lt;/li&gt;&lt;li&gt;V(Semaphore s) // Release Resource&lt;/li&gt;&lt;li&gt;Init(Semaphore s, Integer v) &lt;/li&gt;&lt;/ul&gt;Where a semaphore is tagged as being atomic, it should not be interrupted. This is, the process should complete or not start. It should not be allowed to finish in the middle of an instruction set.&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;http://www.doc.ic.ac.uk/~jnm/concurrency/classes/Diners/Diners.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6206300890611036652?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6206300890611036652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/semaphores.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6206300890611036652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6206300890611036652'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/semaphores.html' title='Semaphores'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7509334754529069010</id><published>2009-07-23T15:38:00.002+10:00</published><updated>2009-07-23T16:47:19.426+10: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'>Deadlock</title><content type='html'>A deadlock is the situation where two or more processes each seek to access a resource at the same time. In this instance, the resource is locked, but neither process is set to release the resource.&lt;br /&gt;&lt;br /&gt;This can occur as the processes have ended up in a resource loop where each of them is locked until a required resource is released, forming a circular chain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7509334754529069010?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7509334754529069010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/deadlock.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7509334754529069010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7509334754529069010'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/deadlock.html' title='Deadlock'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-135286468311810427</id><published>2009-07-23T15:36:00.002+10:00</published><updated>2009-07-23T16:44:02.925+10: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'>Locks</title><content type='html'>Simply put, a lock is a synchronization mechanism that can be used in order to place and control and thus limit that amount of access that is available to a resource in a multi-threaded environment.&lt;br /&gt;&lt;br /&gt;Hence, a locks enforces the concurrency of the system and maintains its control policies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-135286468311810427?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/135286468311810427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/locks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/135286468311810427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/135286468311810427'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/locks.html' title='Locks'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3560052488983848751</id><published>2009-07-23T08:30:00.002+10:00</published><updated>2009-07-23T16:04:55.242+10: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'>Thread Synchronisation</title><content type='html'>The entire notion and issue with threads comes from working within a multitasking environment. Windows systems time-slice, they are not truly running parallel processes in separate environments (as some old iron used to do). As processes are swapped back and forth at blindingly fast rates, the system is required to manage these. That is, it is crucial that the operating system coordinates the execution of multiple threads that may lie over one or more processes that are running on the system at any given time.&lt;br /&gt;&lt;br /&gt;The management of these tasks and the allocation of time slices (small fragments of CPU time and other resources) make the operation of the OS seem (at least conceptually) to run as a concurrent process. In newer multicore systems and SMP (symmetric multi-processor) systems, processes can truly run concurrently as the individual cores or processors act without direct reference to the others. This of course requires that the threads created by the programmer are carefully managed.&lt;br /&gt;&lt;br /&gt;To do this, systems provide a scheduler. The scheduler can pre-empt a thread at any time. This can be a major problem as the scheduler can cause a to access data without regard to serialisation leading to race conditions and other security concerns. An example would be a system that returned data before the authorisation process had completed – hence allowing unauthorised access to data.“Serially reusable resources” (SRR’s) are prone to such problems. If SRR’s are not used “one thread at a time”, data can become corrupted, system deadlocks can occur, or worse, race conditions can lead to security failures.&lt;br /&gt;&lt;br /&gt;As such, the coordination of coordinate threads is critical to not only the performance of the process, but also the security of the application. Whenever any thread is required to wait for the completion of another thread, a failure to control the order that the threads are processed could create errors. For instance, consider the following algorithmic operations:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;(A+B)*C&lt;/li&gt;&lt;li&gt;A+B*C&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;In case (1), we obtain a result that is rarely equal to that in case (2). Just as in math order can be important, so is order in the execution of threads.&lt;br /&gt;&lt;br /&gt;A process, known as “arbitration” or as it is alternatively termed, “mutual exclusion” is used by subsystems in order to make certain that an SRR can only be accessed by a single thread at a time and that only the correct thread is accessing the system. This thread coordination process is termed as thread synchronization.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;But what is a Thread?&lt;/span&gt;&lt;br /&gt;If we are going to discuss thread syncronisation, we really need to look into what a thread actually is.&lt;br /&gt;&lt;br /&gt;Basically, a thread is a fork of an execution path. This is, when a computer program needs to run multiple (two or more) processes simultaneously (this is concurrently) , it creates a fork.  Multiple threads are capable of existing within the same process. These can even share resources (including disk, memory, etc). This differs from separate processes which do not generally share these resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3560052488983848751?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3560052488983848751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/thread-synchronisation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3560052488983848751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3560052488983848751'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/thread-synchronisation.html' title='Thread Synchronisation'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-632591587753991099</id><published>2009-07-21T10:51:00.002+10:00</published><updated>2009-07-21T10:53:54.118+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 19'/><category scheme='http://www.blogger.com/atom/ns#' term='ACID'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>ACID</title><content type='html'>The goal of maintaining database transaction integrity is to ensure that no unauthorized changes occur either through user interaction or system error. In general process following well accepted properties is called the ACID principle.&lt;br /&gt;&lt;br /&gt;The ACID principle stands for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Atomic, &lt;/li&gt;&lt;li&gt;Consistent, &lt;/li&gt;&lt;li&gt;Isolated, and &lt;/li&gt;&lt;li&gt;Durable. &lt;/li&gt;&lt;/ul&gt;This means that the &lt;span style="font-weight: bold;"&gt;individual transactions cannot be subdivided, hence atomic. &lt;/span&gt;A process must be included in its entirety or not at all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next a transaction needs to be consistent.&lt;/span&gt; This means that any database constraints must be true. Before the transaction must also be true post the transaction.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next transactions should be isolated. &lt;/span&gt;This means that changes to the database are not revealed to users until the transaction is committed to the database. And finally transactions need to be durable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Durable transactions means the change has to be permanent&lt;/span&gt;. Once a transaction is committed no subsequent failure of the database will end up in reversing the effect of the transaction. This is important in case of failures where transactions may be lost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-632591587753991099?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/632591587753991099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/acid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/632591587753991099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/632591587753991099'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/acid.html' title='ACID'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5922767603524278621</id><published>2009-07-21T10:33:00.003+10:00</published><updated>2009-07-21T10:44:06.399+10: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'>Browser security</title><content type='html'>FireFox 3.x has incorporated a series of tools designed to aid in providing some level of built-in phishing and malware protection. When a site has been reported to be a forgery of a valid site (phishing) or is known to contain malicious applications (malware), FireFox has been configured to alert the user. This works well for sophisticated users but can be problematic with less-experienced people. This protection can be used to help restrict known “bad” sites from installing malicious code on a user’s system, extending the phishing protection provided in FireFox 2.x.&lt;br /&gt;&lt;br /&gt;This feature worked well previously when sites were reported. Blacklists are automatically downloaded and updated to the browser at what approximates to a 30-minute interval. This does require that the phishing and malware protection features of the browser are enabled. Unfortunately, the versatility of FireFox and its lack of integration directly into Microsoft Active Directory increase the likelihood that a local user could bypass these features. The protocol used to update the &lt;a href="http://code.google.com/p/google-safe-browsing/wiki/Protocolv2Spec"&gt;blacklist is publicly available&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mozilla has co-ordinated with Google to provide this list. The blacklist is managed by StopBadware.  The blacklist contains known Spyware, Adware and other malware vendors and sites. StopBadware is sponsored via funding from Google, Lenovo and Sun.&lt;br /&gt;&lt;br /&gt;This feature communicates with both Mozilla hosts and a number of partner systems. List updates do not communicate information about sites that are being visited by the user. In the event that the user attempts to browse a website that is included on the blacklist, the browser will verify that the site is still on the blacklist and has not been removed since the last update. Subsequent to this check, this site will be blocked if it remains on the list. This process will send the user’s cookies associated with “google.com” as a part of the request.&lt;br /&gt;&lt;br /&gt;Phishing and malware protection features are enabled on the browser by default. They will run unless the system user or administrator disables them. The phishing and malware protection options are located under FireFox’s Security Preferences pane. To select this, the following menu options are available by “Operating System:”&lt;br /&gt;&lt;br /&gt;Overall, FireFox’s blacklist functionality operates in an analogous fashion to that of most e-mail servers and existing anti-spam software. It is necessary that a website has previously been reported to the list as a malicious site and tested before it will be blocked. Once this has occurred, FireFox will warn or block others from accessing this site. The difficulty comes with the less advanced integration of the controls into Active Directory. In a large Windows domain environment, management of the features is difficult.&lt;br /&gt;&lt;br /&gt;FireFox’s developing utilization of Vista parental controls is useful for the home user. However, this feature is of little use in a network environment with the difficulty of controlling it over a large network of systems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Third-Party Add-Ons&lt;/span&gt;&lt;br /&gt;Browser extensions pose an immense threat to the security of a user’s system. The ease with which a malicious control can be used to subvert an inexperienced or unconcerned user’s browser is only increasing. As such, both IE8 and FireFox 3.x have implemented controls that are designed to manage which extensions can be loaded and run in the browser.&lt;br /&gt;&lt;br /&gt;The aspect of FireFox 3.x that demonstrates the clearest advantage over IE8 is in the ability to manage add-on and extension versioning. FireFox is configured to validate and update all extensions to the browser, automatically patching supported extensions whenever the browser is started. Users can also select “Tools -&gt; Add-Ons” and click “Update” to have FireFox check the Web for updates and install these.&lt;br /&gt;&lt;br /&gt;The FireCat project  for FireFox is designed as a “mindmap collection of the most efficient and useful FireFox extensions oriented application security auditing and assessment.” With the forthcoming version 2.0 of this project, FireCAT will incorporate an advanced “management of plug-ins, instant download from security-database, ability to add new extension, extension version checker, FireFox 3.X compatible extensions.”&lt;br /&gt;&lt;br /&gt;For information on FireCat, see:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://toolbar.netcraft.com/&lt;/li&gt;&lt;li&gt;http://www.security-database.com/toolswatch/IMG/png/FireCAT1.4.png&lt;/li&gt;&lt;li&gt;http://www.security-database.com/toolswatch for the FireCat project.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;No-Script&lt;/span&gt;&lt;br /&gt;The security controls and extensions developed both commercially and as open-source releases for FireFox are multitudinous. Extensions such as No-Script (see the image below) and Firebug  can be used to turn the browser into a Malware analysis platform. These extensions (and others of the same class) allow a sophisticated user to finely control the actions of scripts and active code in their browsers.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmUPPhpKFxI/AAAAAAAACzQ/jBNuu3-F8Zc/s1600-h/NoScript.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 380px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmUPPhpKFxI/AAAAAAAACzQ/jBNuu3-F8Zc/s400/NoScript.jpg" alt="" id="BLOGGER_PHOTO_ID_5360707690857895698" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5922767603524278621?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5922767603524278621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/browser-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5922767603524278621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5922767603524278621'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/browser-security.html' title='Browser security'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/SmUPPhpKFxI/AAAAAAAACzQ/jBNuu3-F8Zc/s72-c/NoScript.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3272039102132404640</id><published>2009-07-21T10:23:00.001+10:00</published><updated>2009-07-21T10:30:10.807+10: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'>Identification and Authentication</title><content type='html'>Identification for the purposes of these standards relates to the way an individual is identified to the system. Logon security is the method commonly used to identify the user accessing the system.&lt;br /&gt;&lt;br /&gt;The purpose of authentication is to verify that the person trying to access a system are who they say they are.  Authentication is typically verified by the user supplying a password. Other methods of Authentication may be defined as well.&lt;br /&gt;&lt;br /&gt;So of these other methods include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Certificates and smartcards.&lt;/li&gt;&lt;li&gt;OTP (one time pads).&lt;/li&gt;&lt;li&gt;Secure Tokens (e.g. Securid by RSA).&lt;/li&gt;&lt;li&gt;Biometrics (e.g. fingerprint scanners).&lt;/li&gt;&lt;li&gt;Site trusts (this could be something as easy to spoof as an IP address - see rhost)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Access Control&lt;/span&gt;&lt;br /&gt;Access controls are provided by software protection measures or procedures to control access to system applications and information according to an organisation’s specified rules.&lt;br /&gt;&lt;br /&gt;Access controls are prevention measures designed to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;prevent and minimise threats; &lt;/li&gt;&lt;li&gt;ensure only authorised users have access to systems and information; and&lt;/li&gt;&lt;li&gt;ensure information is protected according to the classification levels.&lt;/li&gt;&lt;/ul&gt;Passwords are problematic as they are rarely chosen well. This allows tools such as the  ones listed below to attempt to crack them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Brutus: A network brute-force authentication cracker&lt;/span&gt;&lt;br /&gt;This Windows-only cracker bangs against network services of remote systems trying to guess passwords by using a dictionary and permutations thereof. It supports HTTP, POP3, FTP, SMB, TELNET, IMAP, NTP, and more. No source code is available. UNIX users should take a look at THC-Hydra.&lt;br /&gt;Available from&lt;a href="http://www.hoobie.net/brutus/"&gt; http://www.hoobie.net/brutus/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THC-Hydra: Parallized network authentication cracker&lt;/span&gt;&lt;br /&gt;This tool allows for rapid dictionary attacks against network login systems, including FTP, POP3, IMAP, Netbios, Telnet, HTTP Auth, LDAP NNTP, VNC, ICQ, Socks5, PCNFS, and more. It includes SSL support and is apparently now part of Nessus.&lt;br /&gt;Available from &lt;a href="http://www.thc.org/releases.php"&gt;http://www.thc.org/releases.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3272039102132404640?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3272039102132404640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/identification-and-authentication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3272039102132404640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3272039102132404640'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/identification-and-authentication.html' title='Identification and Authentication'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4738549301928027065</id><published>2009-07-21T10:10:00.005+10:00</published><updated>2009-07-21T10:24:53.561+10: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, Part 3</title><content type='html'>Finally for Exercise 16, Part 3.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get the latest PGP software from &lt;a href="http://web.mit.edu/network/pgp.html"&gt;http://web.mit.edu/network/pgp.html&lt;/a&gt;; install it on two machines and encrypt a message on one machine and decrypt it on the other.&lt;/li&gt;&lt;li&gt;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;/li&gt;&lt;/ol&gt;Personally, I use PGP desktop these days for PGP. A screenshot is displayed below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/SmUIWm9k-GI/AAAAAAAACzA/dMpZsoKd0m8/s1600-h/pgp.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 147px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/SmUIWm9k-GI/AAAAAAAACzA/dMpZsoKd0m8/s400/pgp.jpg" alt="" id="BLOGGER_PHOTO_ID_5360700115963410530" border="0" /&gt;&lt;/a&gt;The version of PGP from MIT is horribly outdated. They state this themself:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmUIuTtnYuI/AAAAAAAACzI/vXQe6Qjp28w/s1600-h/pgp2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 102px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmUIuTtnYuI/AAAAAAAACzI/vXQe6Qjp28w/s400/pgp2.jpg" alt="" id="BLOGGER_PHOTO_ID_5360700523113046754" border="0" /&gt;&lt;/a&gt;On the other hand, the SRPMS (Source RPM - hence the source code) is available for RHEL 5.3 (which is what I use on my other laptops and prefer to Windows. This is a simple (relatively) build and compile process (assuming that you have GCC and the required libraries).&lt;br /&gt;&lt;br /&gt;For the most part it is a simple process of:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102);"&gt;./configure&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102);"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 102);"&gt;make install&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;But again, this all depends on how your host is configured.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/identification-and-authentication.html"&gt;Now to authentication&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4738549301928027065?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4738549301928027065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4738549301928027065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4738549301928027065'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-3.html' title='Exercise 16, Part 3'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lPXDlv0_iG8/SmUIWm9k-GI/AAAAAAAACzA/dMpZsoKd0m8/s72-c/pgp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5923546903727022871</id><published>2009-07-21T09:49:00.002+10:00</published><updated>2009-07-21T10:36:40.121+10: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, Part 2</title><content type='html'>Exercise 16, Part 2.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Visit 10 e-commerce websites. How many mention security on their home page? Is privacy mentioned? How many of them belong to the TRUSTe association?&lt;/li&gt;&lt;li&gt;Visit the Verisign web site - what solutions does it offer for e-commerce?&lt;/li&gt;&lt;li&gt;Visit your e-mail or WWW browser provider site and search for security. What technologies does your particular product support?&lt;/li&gt;&lt;li&gt;Visit the TRUSTe web site. Describe what services and solutions are offered.&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-3.html"&gt;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 othe&lt;/a&gt;r.&lt;/li&gt;&lt;li&gt;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;/li&gt;&lt;/ol&gt;All of the sites I go to for ecommerce purposes (even the slightly dodgy ones) mention security. This does not mean they are secure, only that they espouse that they are.&lt;br /&gt;&lt;br /&gt;Verisign is a all in one shop these days. They sell software, services and solutions. Ecommerce in a box. Some of these solutions and services are excellent (e.g. iDefense's offerings) other wane.&lt;br /&gt;&lt;br /&gt;TRUSTe offers fluff plus. They talk about all they offer, but at the end of the day it does little if anything (I am biased).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/browser-security.html"&gt;As for the offerings of the web browser I am using (Mozilla in this case with No-Script enabled) click here for a separate post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-3.html"&gt;And Part 3.&lt;/a&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5923546903727022871?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5923546903727022871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5923546903727022871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5923546903727022871'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html' title='Exercise 16, Part 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2734247597403100904</id><published>2009-07-21T09:40:00.003+10:00</published><updated>2009-07-21T09:47:35.625+10: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'>Security Concerns and International Business</title><content type='html'>Global e-commerce presents challenges exempt from domestic e-commerce. What security concerns add to the complexity of international e-business?&lt;br /&gt;&lt;br /&gt;The primary concern is the disparity of international law. International provisions (such as EU Privacy regulations or SOX in the US) can impact orgainsations with no physical presece in a country that they trade with.&lt;br /&gt;&lt;br /&gt;On top of this, IP (Intellectual Property) theft is made far simpler using the Internet. Many existing types of crimes can be replicated and transacted with the aid of an online environment.  Further, novel new crimes designed to exploit the features and advantages of the Internet and other digital networks have emerged and are likely to continue to emerge in the future. Some examples of criminal activities that have benefited from the advances in digital technology include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Computer break-ins (or Trespass) including the unauthorized admission to the whole or any element of a computer system without the right to do so;&lt;/li&gt;&lt;li&gt;Illegal interception without authority, created using technical methods of the non-public communication of computer data to, from or within a computer system;&lt;/li&gt;&lt;li&gt;Interference with or the damaging, deletion, deterioration, alteration or suppression of computer data without authorization;&lt;/li&gt;&lt;li&gt;Interfering with a system or the serious obstruction (without authority) of the execution of a computer system through the input, transmission, damage, deletion, deterioration, alteration or suppression of any and all electronically maintained data;&lt;/li&gt;&lt;li&gt;Possession of obscenity/prohibited pornography (e.g., child pornography and bestiality);&lt;/li&gt;&lt;li&gt;Industrial espionage;&lt;/li&gt;&lt;li&gt;Harassment;&lt;/li&gt;&lt;li&gt;Electronic Fraud (including email);&lt;/li&gt;&lt;li&gt;Web page defacements (cyber vandalism);&lt;/li&gt;&lt;li&gt;Theft of commercial documents.&lt;/li&gt;&lt;/ul&gt;While none of these crimes is wholly new, the ease in which they may be committed and the difficulty in capturing the offender has added a new dimension to crime. For instance, it is unlikely that law enforcement officials will be able to take action against many cyber-criminals unless the majority of countries first enact laws that criminalize the behavior of the offenders.&lt;br /&gt;Some of the primary issues that face law enforcement in cybercrime cases include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Increased Investigative Costs due to the need for high priced specialists;&lt;/li&gt;&lt;li&gt;The difficulties of conducting “Real Time” Investigations;&lt;/li&gt;&lt;li&gt;The ease of Anonymity on the Internet;&lt;/li&gt;&lt;li&gt;Difficulties with Jurisdictional issues;&lt;/li&gt;&lt;li&gt;The rate at which Technology is evolving; and &lt;/li&gt;&lt;li&gt;The Irrelevance of geographic distance.&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2734247597403100904?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2734247597403100904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/global-e-commerce-presents-challenges.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2734247597403100904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2734247597403100904'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/global-e-commerce-presents-challenges.html' title='Security Concerns and International Business'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7454158183337294838</id><published>2009-07-20T23:16:00.002+10:00</published><updated>2009-07-27T10:30:42.799+10: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'>&lt;span style="font-style: italic;"&gt;Use Case, Class, Sequence, Collaboration, State chart, Activity, Component and Deployment diagrams are used in UML.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Describe each of the eight (8) main diagrams used in UML...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my case I have completed subjects such as CSU's &lt;a href="http://www.csu.edu.au/handbook/handbook07/subjects/ITC442.html"&gt;"ITC442   Object Modelling   (8)&lt;/a&gt;" where the goal of the class was to:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;The basic concepts of Object Orientation Systems are Class, Object and Message and these are studied extensively via diagrams, exercises and case studies.  Object Diagrams are used to provide an introduction to the more abstract ideas of Classes and Inheritance.  To study how an Object Orientation System works, messages are added to an Object Diagram to represent the processing of an example transaction.  The main goal of the subject is to produce Class Diagrams that would be adequate to form the basis for further work in a computer project&lt;/span&gt;.&lt;/blockquote&gt;In this class a little while back I spent a fair amount of time on UML as this was the primary focus of the course. So rather than rehashing this or to even to make a summary of the many good resources on this topic (such as [1]), I have decided to go into how I do this process.&lt;br /&gt;&lt;br /&gt;I Have first of all included a &lt;a href="http://itc565developersblog.blogspot.com/2009/07/uml-and-mapping-processes.html"&gt;post on UML here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I create UML and psudeo-code models when I reverse malware packers with work. To do this, I work in the opposite direction as to what many people would be used to. As such, I thought that I would approach this topic and exercise a little differently. I am going to go into running one of the tools I use, &lt;a href="http://www.altova.com/products/umodel/uml_tool.html"&gt;Altova UModel&lt;/a&gt;. This product is useful in creating models (and hence UML based case diagrams) from source code (and it is also useful when reversing binaries, but I am not covering that here in detail).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smw0ohrjbkI/AAAAAAAACzg/RJKamYAhskQ/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 279px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Smw0ohrjbkI/AAAAAAAACzg/RJKamYAhskQ/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5362719127131876930" border="0" /&gt;&lt;/a&gt;The tools can take source fragments and the parts you have reversed (using other tools - such as Rec Studio or even step by step with IDA Pro and OllyDebug) and create working models. There is a good deal of manual intervention, so you can not state that reversing is at all automated, but the UML tools do help.&lt;br /&gt;&lt;br /&gt;The issue is that they do not do all languages. Altova does Java, VB, C#, but you also need other tools for C, C++ etc.&lt;br /&gt;&lt;br /&gt;In addition, Mapforce (see the image below) can take UML basec case diagrams and create code (for those who do not want to do this themself) based on existing templates.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Smw0oTYL-0I/AAAAAAAACzY/0d73RJ5ukc8/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 344px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Smw0oTYL-0I/AAAAAAAACzY/0d73RJ5ukc8/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5362719123292552002" border="0" /&gt;&lt;/a&gt;In my case, UML is a useful means of keeping track of what the program (in my case Malware or Packer) does when you are reversing it.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;[1] Bell, D. (2004) "UML's Sequence Diagram" IBM Software Group Technical Library. &lt;a href="http://www.ibm.com/developerworks/rational/library/3101.html"&gt;http://www.ibm.com/developerworks/rational/library/3101.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7454158183337294838?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7454158183337294838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-20-modeling-with-uml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7454158183337294838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7454158183337294838'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-20-modeling-with-uml.html' title='Exercise 20: Modeling with UML'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/Smw0ohrjbkI/AAAAAAAACzg/RJKamYAhskQ/s72-c/2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6878212932083866630</id><published>2009-07-20T23:15:00.003+10:00</published><updated>2009-07-23T21:31:03.373+10: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'>Exercise 19 has a few questions that I will answer from prior papers and books with a little tweaking. A little self plagiarism, but if you want to see the entire passages - &lt;a href="http://www.amazon.com/Regulatory-Standards-Compliance-Handbook-Information/dp/1597492663"&gt;buy my book&lt;/a&gt; :).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;See and follow the link for a description in my own words of the &lt;a href="http://itc565developersblog.blogspot.com/2009/07/acid.html"&gt;ACID properties of a transaction&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Describe a TP monitor environment. How can a TP monitor stop an operating system being overwhelmed?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/what-is-difference-in-load-balancing.html"&gt;What is difference in load balancing with traditional and transactional MOM, RPC and conversations?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;How can TP Monitors save money?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/why-is-two-phase-commit-protocol-better.html"&gt;Why is a two-phase commit protocol better than a one-phase atomic commit protocol?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;What is CICS by IBM?&lt;/li&gt;&lt;/ol&gt;Firstly, see the inline links for the other answers. Next and last, &lt;a href="http://www-01.ibm.com/software/htp/cics/"&gt;CICS by IBM&lt;/a&gt; is a:&lt;br /&gt;&lt;blockquote&gt;"&lt;span style="font-style: italic;"&gt;CICS (Customer Information Control System) is a family of application servers and connectors that provides industrial-strength, online transaction management and connectivity for mission-critical applications.&lt;/span&gt;"&lt;/blockquote&gt;More simply put, it is a mainframe transaction processing solution that primarily runs on the IBM z/OS and z/VSE systems.&lt;br /&gt;&lt;br /&gt;TP solutions are based on an architecture that is derived and consists of a TP-Monitor environment that is used to partition the workflow engine into a number of separate resource managers (RMs). Each of these is separately managed using a TP-Monitor environment. Together, the RMs together create a workflow engine that can be used to serve user requests.&lt;br /&gt;&lt;br /&gt;By dividing the processing into discrete instances and running these on separate systems, individual hosts and servers are less likely to suffer from performance issues. This can save an organisation money in the long term. Better managed system provide the organisation with a means of controlling their systems. This allows better planning and lower downtime. These operational savings offset the increased hardware costs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6878212932083866630?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6878212932083866630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-19-tp-monitors-and-transaction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6878212932083866630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6878212932083866630'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-19-tp-monitors-and-transaction.html' title='Exercise 19: TP monitors and transaction protocols'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4419554407153026745</id><published>2009-07-20T23:13:00.001+10:00</published><updated>2009-07-26T09:57:45.011+10: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 demonstration in Python</title><content type='html'>Here we investigate a simple demonstration of the threading module in Python that uses both a lock and semaphore to control concurrency is by Ted Herman at the University of Iowa.&lt;br /&gt;&lt;br /&gt;This exercise was looking at a python demo script. My preferred platform is RHEL and many security tools are python based, so this was not anything particularly new...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4419554407153026745?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4419554407153026745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-18-threading-demonstration-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4419554407153026745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4419554407153026745'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-18-threading-demonstration-in.html' title='Exercise 18: Threading demonstration in Python'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-763557955824048646</id><published>2009-07-20T23:11:00.004+10:00</published><updated>2009-07-23T15:49:58.669+10: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</title><content type='html'>Here we add definitions for eight terms and concepts used in threaded programming:&lt;br /&gt;1.&lt;a href="http://itc565developersblog.blogspot.com/2009/07/thread-synchronisation.html"&gt; Thread Synchronisation&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/locks.html"&gt;Locks&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/deadlock.html"&gt;Deadlock&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/semaphores.html"&gt;Semaphores&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/mutex-mutual-exclusion.html"&gt;Mutex (mutual exclusion)&lt;/a&gt;&lt;br /&gt;6. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/thread-synchronisation.html"&gt;Thread&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/event.html"&gt;Event&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/waitable-timer.html"&gt;Waitable timer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Follow the links.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-763557955824048646?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/763557955824048646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-17.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/763557955824048646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/763557955824048646'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-17.html' title='Exercise 17'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8096287968287225492</id><published>2009-07-20T21:58:00.003+10:00</published><updated>2009-07-20T23:09:35.189+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Malware'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise 15'/><title type='text'>Malware Analysis</title><content type='html'>In order to really get to the roots of malware (this is Trojans, virii, etc) we need to perform in-depth analysis of malware samples, including capabilities, structure, and map the  relationships to other samples and use these to train our inputs. This has been the focus of much of my research.&lt;br /&gt;&lt;br /&gt;To define the issue, “Malware” varietals include virus, worm, trojan, and backdoor programs.&lt;br /&gt;&lt;br /&gt;The way I have been researching this is in the creation of perceptrons that utilize a combination of static and dynamic analysis techniques. Such a process is defined in the figure below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmRqWaDtWoI/AAAAAAAACy4/3WUb_mmVq2A/s1600-h/malware.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 370px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/SmRqWaDtWoI/AAAAAAAACy4/3WUb_mmVq2A/s400/malware.jpg" alt="" id="BLOGGER_PHOTO_ID_5360526389662276226" border="0" /&gt;&lt;/a&gt;Here, we go through the following stages:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pre-Processing, this is the process used to process the raw packet data, memory segments etc. This process can be defined using existing technologies (e.g. Snort for packet capture, BPFs etc.),&lt;/li&gt;&lt;li&gt;Feature Construction. In this phase we construct the model statistics. This is we take the basic features of the data and extract values that could be of use,&lt;/li&gt;&lt;li&gt;Apply Algorithims. Here we use rule learnign techniques to find the malware.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;This is an iterative process. This involves both behavioural and static analysis of code with the primary constraint being time. Users want to access their systems quickly. If the process is too slow, accuracy will not matter as the user will find a way to bypass it and subvert the protection.&lt;br /&gt;&lt;br /&gt;&lt;img style="font-weight: bold;" src="file:///C:/Users/CRAIGW%7E1.INF/AppData/Local/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;Wenke Lee, Sal Stolfo, &amp;amp; Kui Mok., (1999)&lt;br /&gt;“A Data Mining Framework for Building Intrusion Detection Models”,&lt;br /&gt;Proceedings of the 1999 IEEE Symposium on Security and Privacy, Oakland, CA, May 1999&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8096287968287225492?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8096287968287225492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/malware-analysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8096287968287225492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8096287968287225492'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/malware-analysis.html' title='Malware Analysis'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lPXDlv0_iG8/SmRqWaDtWoI/AAAAAAAACy4/3WUb_mmVq2A/s72-c/malware.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8454134344133375905</id><published>2009-07-20T21:40:00.003+10:00</published><updated>2009-07-20T21:45:12.709+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 7 - 10</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Download a virus checker and read the documentation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am contracted to a large anti-malware firm to write unpacker code. I will skip this one.&lt;br /&gt;&lt;br /&gt;As for the operation, the AV engine unpacks the malware and checks it against a signature base. This is then checked against set heuristic behaviors.&lt;br /&gt;&lt;br /&gt;I will not go into detail in this post, but will add a separate post on this topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8454134344133375905?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8454134344133375905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8454134344133375905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8454134344133375905'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html' title='Exercise 15: Part 7 - 10'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2832621920807057551</id><published>2009-07-20T21:36:00.001+10:00</published><updated>2009-07-20T21:38:03.714+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 5</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Find out if your university or workplace has a backup policy in place. Is it followed and enforced?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, we have both a GFS (grandfather father son) and an online mirror.&lt;br /&gt;&lt;br /&gt;This is as we value information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2832621920807057551?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2832621920807057551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2832621920807057551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2832621920807057551'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-5.html' title='Exercise 15: Part 5'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7128081109849529374</id><published>2009-07-20T21:31:00.002+10:00</published><updated>2009-07-20T21:36:05.977+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 4</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Does the company you work for (or the school you attend) utilise a proxy server for Internet access? Is the proxy server intended to keep hackers out of the network, or control employees’ access to the Internet?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Both of my companies (Information Defense and Integyrs) use a Proxy server. We use SQUID. We have moved from ISA from Microsoft. These are for Web traffic access. They are not used for may of the otherInternet protocols (although some Proxies are available for this reason).&lt;br /&gt;&lt;br /&gt;These are not for "keeping out hackers" etc. They are a monitoring and measurement device with an added feature of some cached information.&lt;br /&gt;&lt;br /&gt;We have a dual Cisco/IPTables Firewall system with inline devices and a combination of OSSIM and SNORT IDS with some IPS functionality. If it makes the Proxy, it has done all it is going to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7128081109849529374?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7128081109849529374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7128081109849529374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7128081109849529374'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-4.html' title='Exercise 15: Part 4'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4099866434489269316</id><published>2009-07-20T21:28:00.001+10:00</published><updated>2009-07-20T21:31:02.828+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 3</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Accessing a firewall vendor site, find out what solutions are offered?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to define what we can get from a firewall, we first we need to define a firewall.  A firewall is an application, device, system, or a group of systems that controls the flow of traffic between two networks based on a set of rules, protects systems from external (internet) as well as internal threats, separates a sensitive are of a private network from less sensitive areas, encrypts internal and external networks that transmit sensitive data, or hides internal network addresses from external networks (Network Address Translation).  A firewall picks up where the border router leaves off and makes a much more thorough pass at filtering traffic.  It comes in different types, including static packet filters (ex. Nortel Accelllar router), statefull firewalls (e.g. Cisco PIX), and proxy firewalls (e.g. Secure Computing Sidewinder).&lt;br /&gt;&lt;br /&gt;Similar to routers, a firewall uses different filtering technologies or methods to ensure security. These methods include packet filtering, statefull inspection, proxy or application gateway, and deep packet inspection. A firewall can use just one of these methods, or it can combine different methods to produce the most appropriate and robust configuration. &lt;br /&gt;&lt;br /&gt;I have not added quotes, as this is taken from a few of my own published papers and books.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4099866434489269316?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4099866434489269316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4099866434489269316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4099866434489269316'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-3.html' title='Exercise 15: Part 3'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8831489923104697013</id><published>2009-07-20T21:20:00.002+10:00</published><updated>2009-07-20T21:27:59.348+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;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;/span&gt;&lt;br /&gt;&lt;br /&gt;For vendors, there are today many. Firewalls are a mature market. Some of these include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FWSM, &lt;/li&gt;&lt;li&gt;ipfilter,&lt;/li&gt;&lt;li&gt;ipfw, &lt;/li&gt;&lt;li&gt;iptables, &lt;/li&gt;&lt;li&gt;PF, &lt;/li&gt;&lt;li&gt;Cisco PIX (now really ASA, but I am showing my age); &lt;/li&gt;&lt;/ul&gt;I helped write a Checkpoint book, so I will plug them here as well.&lt;br /&gt;&lt;br /&gt;Many vendors (e.g. Cisco) focus on Hardware, but others (including GPL'd software such as IPTables) are solely software based.&lt;br /&gt;&lt;br /&gt;Simple put, a good firewall is one that gives a positive return on investment. This is measured by testing.&lt;br /&gt;&lt;br /&gt;This comes from the firewalls ability to maintain and monitor security with a low level of maintance. This is all about the configuration of the firewall platform itself. All firewalls have an operating system (OS). Do not be fooled by vendor assertions that they have an appliance. Firewalls and routers are all software driven; all they do is make it more difficult to see the code. Next it is important to ensure good practice occurs in respect of system administration (user management, patch updates, change control and configuration backups). If the firewall is not patched it will eventually be compromised. Just as it is a security device does not make it automatically secure. Finally, it is necessary to validate that the firewall rulebase matches the organizational policy.&lt;br /&gt;&lt;br /&gt;Testing the firewall should be coordinated with testing the other components of the organization’s defense-in-depth methodology.  The organization should not only rely on a single line of defense otherwise this is a red flag that needs to be raised. Firewalls are not the panacea for all security ills. They slow attackers and log.&lt;br /&gt;&lt;br /&gt;The overall result of the testing or audit of the firewall would be the identification of any security vulnerabilities as well as an assessment of whether the firewall is fulfilling its function in relation to the security policy of the company.  An assessment should be made on whether the set up, configuration and operation of the firewall is secured sufficiently to protect the information or services that it is intended to guard, considering the risks that were identified and the likelihood of occurrence.&lt;br /&gt;&lt;br /&gt;Center for Internet Security also provides benchmarks for several specific brands of firewalls devices.  The benchmarks (available at http://www.cisecurity.org) greatly aid in developing an audit program for firewalls. These are the source of our checklist frameworks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8831489923104697013?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8831489923104697013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8831489923104697013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8831489923104697013'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-2.html' title='Exercise 15: Part 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1523116619710562831</id><published>2009-07-20T21:10:00.002+10:00</published><updated>2009-07-20T21:20:16.278+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Part 1</title><content type='html'>Can a simple firewall be designed from standard computer equipment? What hardware components would you need for a proxy server?&lt;br /&gt;&lt;br /&gt;The answer to this is and for the last 20 years has been of course. It is also how long is a piece of string for it all comes to what you need it for, this is correct and adequate provisioning.&lt;br /&gt;&lt;br /&gt;There are many Proxies from the venerable Netscape of the past to some of the more common modern proxies -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft Proxy (now a part of the Forefront Suit of Products)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.squid.org/"&gt;Squid &lt;/a&gt;(Linux to begin, but now on Windows as well).&lt;/li&gt;&lt;li&gt;Tiny Proxy&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In fact, even Apache can run as a Proxy. Linux comes with support for IPTables, a simple stateful firewall.&lt;br /&gt;&lt;br /&gt;Since the fundamental purpose of the firewall is to manage the flow of information between two networks, it by nature must provide such function through a detailed configurationthat filters or allows traffic to pass through as consistent with the security policy.  In developing a firewall, some of the critical things to look at are as to whether:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The access rules (authentication, authorization and accounting) for the firewall is in line with the security policy and best practices&lt;/li&gt;&lt;li&gt;access to the firewall system for management and maintenance is provided using an encrypted channel&lt;/li&gt;&lt;li&gt;physical access to the device is restricted&lt;/li&gt;&lt;li&gt;the firewall is configured to hide internal restricted DNS information from external networks&lt;/li&gt;&lt;li&gt;external firewall restricts incoming SNMP queries&lt;/li&gt;&lt;li&gt;the firewall is configured as “fail closed”&lt;/li&gt;&lt;li&gt;the firewall hides the internal information from external sources&lt;/li&gt;&lt;li&gt;the firewall is configured to “deny all services, unless explicitly allowed”&lt;/li&gt;&lt;li&gt;all security–related patches are applied to the firewall system&lt;/li&gt;&lt;li&gt;configuration settings are properly backed up and accessible to authorized personnel only &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1523116619710562831?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1523116619710562831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1523116619710562831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1523116619710562831'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-1.html' title='Exercise 15: Part 1'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2100615084512347240</id><published>2009-07-20T21:04:00.003+10:00</published><updated>2009-07-20T21:46:52.160+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 15: Review questions</title><content type='html'>Today we have a number of smaller questions to answer. These are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-1.html"&gt;Can a simple firewall be designed from standard computer equipment? What hardware components would you need for a proxy server?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-2.html"&gt;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;/a&gt;?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-3.html"&gt;Accessing a firewall vendor site, find out what solutions are offered&lt;/a&gt;:&lt;/li&gt;&lt;br /&gt;&lt;a href="http://www.checkpoint.com/"&gt;&lt;i&gt;http://www.checkpoint.com&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/catalog/display.asp?subid=22&amp;amp;site=10538&amp;amp;x=44&amp;amp;y=21"&gt;&lt;i&gt;http://www.microsoft.com/catalog/display.asp?subid=22&amp;amp;site=10538&amp;amp;x=44&amp;amp;y=21&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;D&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-4.html"&gt;oes the company you work for (or the school you attend) utilise a proxy server for Internet access? Is the proxy server intended to keep hackers out of the network, or control employees’ access to the Internet&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-5.html"&gt;Find out if your university or workplace has a backup policy in place. Is it followed and enforced?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;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;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html"&gt;Download a virus checker and read the documentation.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html"&gt;How does it operate?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html"&gt;What is the process of updating the virus signature file?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-15-part-7.html"&gt;How does the publisher charge for the product/service?&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;Click the question itself to go to the answers.&lt;br /&gt;&lt;br /&gt;For question 6 and other parts of this question, I shall write a separate post. The answer is that it is simple to find malware creation tools. The issue is that these are the easier ones to find as part signatures are still signatures. The issue is when a completely new code is published.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2100615084512347240?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2100615084512347240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-review-questions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2100615084512347240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2100615084512347240'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15-review-questions.html' title='Exercise 15: Review questions'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3394405532332622850</id><published>2009-07-20T20:56:00.002+10:00</published><updated>2009-07-20T20:59:10.113+10:00</updated><title type='text'>Unexpected User Input</title><content type='html'>No matter where a page or who you believe your clients to be, you cannot trust any information that is sent to website. All import to any application or database must always be sanitized. It may be possible to limit the size of restrictions on import rules, but they need to exist.&lt;br /&gt;&lt;br /&gt;Additionally, as we have noted above is essential to send any information that you require to remain private using POST and not GET methods. Were special characters are sent to the Web server they should be stripped or escaped and if necessary mapped to an alternative but safe character.&lt;br /&gt;&lt;br /&gt;Next, users do not need detailed output and diagnostics. This may be necessary for development teams but it is not advisable to send this information to the client. If an unhandled error occurs send a generic error page. Customized pages allow an attacker to find out what exactly went wrong and to tailor their attacks.&lt;br /&gt;&lt;br /&gt;If you are sending sensitive information always use encryption. This includes both information from the user and returns from the server. Additionally, although these methods may be bypassed by an attacker, some anti-caching techniques should be included where possible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Input validation&lt;/span&gt;&lt;br /&gt;Good practice within put validation requires that you trust nothing from the client. Most security people understand this aspect but what they also forget is that you should also trust nothing from your own database. The Web application should only trust that information which is explicitly set and loaded into the application itself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sanitization&lt;/span&gt;&lt;br /&gt;Anything at all that is received through a Web front end or application should be validated. Any event that there are any potentially unsafe characters, regular expressions and filters should be used to sanitize this information. This requires either deleting the offending characters or re-mapping them to an alternative but safe alternative.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Error checking&lt;/span&gt;&lt;br /&gt;When designing a site in need to contend with errors from the website, database, application and the network itself. It is generally easy to predict certain errors; the problem is that many errors will be unexpected. Error checking needs to handle all possible conditions and if an uncalled for event occurs the error needs to be sent in explicit detail to the site administrators or returning a generic error message to the user who experienced the error.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Browser Security &lt;/span&gt;&lt;br /&gt;There is little that most sites can do to secure the web browsers used by their clients. In the event that a Web application is running internally (or even to protect your own users browsing experience), the following site presents an introductory methodology that will aid in protecting many of the attacks against your systems. When talking about internal Web browsing is the responsibility of the organization to ensure the security of their clients systems. The methodology used by Cert in the following site goes long way to achieving this goal.&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cert.org/tech_tips/securing_browser"&gt;http://www.cert.org/tech_tips/securing_browser &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;REMEMBER&lt;/span&gt;&lt;br /&gt;Your clients can chnage ANY value they recieve or send. Never trust a web broswer. There are MANY ways to interect (e.g. a Proxy) and modify any value that comes from a client.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3394405532332622850?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3394405532332622850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/unexpected-user-input.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3394405532332622850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3394405532332622850'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/unexpected-user-input.html' title='Unexpected User Input'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8945259260802254480</id><published>2009-07-20T20:53:00.001+10:00</published><updated>2009-07-20T20:55:30.503+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Site Security'/><title type='text'>Session tracking and management</title><content type='html'>As I have noted in other posts, GET is problematic when it comes to managing ongoing sessions.&lt;br /&gt;&lt;br /&gt;Apart from the character length limitations there are security concerns. Using PUT is not without its own issues. Entity authentication is generally a problem and this is reflected within the OWASP Top 10 (the 2007 top 10 list rated this as number seven). Are the only way to solve this issue is to ensure secure communication and credential storage and creation.&lt;br /&gt;&lt;br /&gt;This begins with the generation of strong session IDs are based on random values. Incrementing values in a sequential manner is a sure way to allow attackers to determine your security model.  OWASP (http://www.owasp.org/index.php/Top_10_2007-A7) contains numerous considerations that should be addressed when considering the manning session management.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Tokens&lt;/span&gt;&lt;br /&gt;A number of important issues concerning session management are listed in the section below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cryptographic Algorithms for Session Tokens&lt;/span&gt;&lt;br /&gt;Always create session tokens that are user unique, non-predictable, and resistant to reverse engineering. Utilise a trusted source of randomness when creating the token (a pseudo-random number generator is recommended). Session tokens need to be associated with a particular HTTP client instance to prevent hijacking and replay attacks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Appropriate Key Space&lt;/span&gt;&lt;br /&gt;The token's key space should be suitably sufficient to prevent brute force attacks. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Time-out&lt;/span&gt;&lt;br /&gt;Session tokens that are not set to expire at the HTTP server can permit an attacker guess or brute force a valid authenticated session token indefinitely. In the event that a user's cookie is intercepted or brute-forced, an attacker could use static-session tokens to access to that user's accounts. Session tokens can also be captured by logging and proxy cache servers. Any which could be compromised leading to a compromise of many accounts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Regeneration of Session Tokens&lt;/span&gt;&lt;br /&gt;It is recommended that the HTTP server automatically expire and regenerate tokens. If set up frequently enough this will reduce the time window in which an attacker can instigate a replay exploit if they capture a legitimate token. This will aid in preventing social hijacking and brute force attacks against an active session.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Forging/Brute-Forcing Detection and/or Lockout&lt;/span&gt;&lt;br /&gt;A session token brute-force attack can allow an attacker to attempt sending many thousand possible session tokens that embedded in a legitimate URL or cookie. Intrusion-detection systems frequently do not alert on this type of attack and it is commonly overlooked during penetration tests. The answer to this is a requirement to lock out accounts. Web developers should implement honey cookies (these are "booby trapped" session tokens that a desire not to be assigned to a user but will send out alerts if they used).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Re-Authentication&lt;/span&gt;&lt;br /&gt;Considerate re-authenticate users for critical actions like as money transfers or purchases involving considerable sums of money. This would require the user to re-authenticate or be reissued another session token directly preceding taking a material action.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Token Transmission&lt;/span&gt;&lt;br /&gt;In the event that a session token is captured using a network sniffer, a web application account is then extremely vulnerable to a replay or hijacking attack. Always use web encryption technologies (such as Secure Sockets Layer (SSLv2/v3) and Transport Layer Security (TLS v1) protocols) to protect the state mechanism token in transit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Session Tokens on Logout&lt;/span&gt;&lt;br /&gt;Many users will access the site from an insecure computer (such as an Internet Kiosk). For this reason it is a good idea to have the application overwrite and destroy session cookies either when the user logs out of the application or after a timeout period.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Page Tokens&lt;/span&gt;&lt;br /&gt;Page specific tokens or "&lt;span style="font-style: italic;"&gt;nonces&lt;/span&gt;" should be used in combination with session specific tokens. This helps provide an additional measure of protection for client requests. Page tokens can be used to reduce the impact of MITM (monkey/man in the middle attacks). Page tokens can be stored in cookies or query strings. It is essential that an effective means of randomized in the values used on a page token is employed. Page tokens also make brute force session attacks more difficult.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8945259260802254480?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8945259260802254480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/session-tracking-and-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8945259260802254480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8945259260802254480'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/session-tracking-and-management.html' title='Session tracking and management'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2940889915618282712</id><published>2009-07-02T20:42:00.003+10:00</published><updated>2009-07-21T09:56:11.633+10: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</title><content type='html'>Answering exercise 16 we have the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Visit an e-commerce website and survey the mode of payment allowed. Would you trust the site with your business?&lt;/li&gt;&lt;li&gt;Global e-commerce presents challenges exempt from domestic e-commerce. &lt;a href="http://itc565developersblog.blogspot.com/2009/07/global-e-commerce-presents-challenges.html"&gt;What security concerns add to the complexity of international e-business&lt;/a&gt;?&lt;/li&gt;&lt;li&gt;What measures should e-commerce provide to create trust among their potential customers? What measures can be verified by the customer?&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;Visit 10 e-commerce websites. How many mention security on their home page? Is privacy mentioned? How many of them belong to the TRUSTe association?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;Visit the Verisign web site - what solutions does it offer for e-commerce?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;Visit your e-mail or WWW browser provider site and search for security. What technologies does your particular product support?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;Visit the TRUSTe web site. Describe what services and solutions are offered.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;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.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;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;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;To answer these, I started by going to EBay. I registered an account, supplying a pile of useless information and going through "captures" that can be easily deciphered by computers (usually quicker than by humans these days). It took around 4 tries to have eBay happy with the information, including having to make some up in fields that would otherwise not apply to me.&lt;br /&gt;&lt;br /&gt;I also had to run a number of scripts. I was not happy with this. I run no-script in Mozilla. Then  to the email, a simple clear text means of intercepting user accounts. Too bad so many firms do this REALLY poor method of validation for e-commerce.&lt;br /&gt;&lt;br /&gt;Next it is the wait for the code. A long convoluted process that does nothing but fool people into a false belief that this has done ANYTHING to help secure your site.&lt;br /&gt;&lt;br /&gt;So far, I have logged into eBay and I am still in an SSL session. but wait, I click to search or look at an item and I drop to plain HTTP. This is I lose the encryption. My session data is still being sent, so not I can have a session hijack take over my information. My bidding it all clear text. This means it can be intercepted.&lt;br /&gt;&lt;br /&gt;So, would I use eBay, No! Nor do I. There are MANY far better and more secure auction sites that this popular but low in the heap provider.&lt;br /&gt;&lt;br /&gt;Trust really needs to be earnt. Many sites (even high end well known ones such as eBay) pray on the ignorance of their users. Rather than creating the perception of security, what an organisation should do is to create a safe site.&lt;br /&gt;&lt;br /&gt;The purpose of information security is to preserve:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Confidentiality &lt;/span&gt;- Data is only accessed by those with the right to view the data.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(51, 0, 153);"&gt;Integrity &lt;/span&gt;- Data can be relied upon to be accurate and processed correctly.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;Availability &lt;/span&gt;-Data can be accessed when needed.&lt;/li&gt;&lt;/ul&gt;Consequently, the securing of information and thus the role of the Security professional requires the following tasks to be completed in a competent manner:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The definition and maintenance of security policies/strategies. &lt;/li&gt;&lt;li&gt;Implementing and ensuring compliance to Policies and Procedures within the organization: &lt;/li&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; The IT security organization needs a clear statement of mission and strategy. Definition of security roles &amp;amp; processes. &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; Users, administrators and managers should have clearly defined roles/responsibilities and aware of them. &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;c.&lt;/span&gt; User / support staff may require training to be able to assume the responsibilities assigned to them. &lt;/i&gt;&lt;li&gt;Effective use of mechanisms and controls to enforce security &lt;/li&gt;&lt;li&gt;Well defined Technical Guidelines and controls for the systems used within the organization&lt;/li&gt;&lt;li&gt;Assurance (audits and regular risk assessments).&lt;/li&gt;&lt;/ol&gt;IT security is not about making a perfect system, it is about making a system that is resilient and that can survive the rigors it is exposed to. Compliance comes down to due diligence.  If you can show that your system is resilient to attack and that it has a baseline of acceptable controls, you will be compliant with nearly any standard or regulation. This will help build trust. The idea is not just to meet the minimum, but to actually show due care.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-16-part-2.html"&gt;On to part 2..&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2940889915618282712?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2940889915618282712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2940889915618282712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2940889915618282712'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-16.html' title='Exercise 16'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1602817770092830407</id><published>2009-07-02T20:41:00.004+10:00</published><updated>2009-07-02T21:05:40.010+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise14'/><title type='text'>Exercise 14</title><content type='html'>&lt;span style="font-style: italic;"&gt;1. You can learn more about Cookies at: http://home.netscape.com/newsref/std/cookie_spec.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even better, I have my own primer on cookies (and a few other posts) at&lt;br /&gt;&lt;a href="http://gse-compliance.blogspot.com/2007/12/cookie-primer.html"&gt;http://gse-compliance.blogspot.com/2007/12/cookie-primer.html &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;2. You can learn mo&lt;/span&gt;&lt;span style="font-style: italic;"&gt;re about electronic payment systems with Reading 9 on Electronic Reserve on the CSU Library Service Web site at: http://www.csu.edu.au/division/library/eservices/ereserve.htm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The article is by Schneider, P &amp;amp; Perry, JT 2001, ‘Electronic payment systems’, Chapter 7, in Electronic Commerce, Course Technology, Boston.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We have moved a long way from this model...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1602817770092830407?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1602817770092830407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1602817770092830407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1602817770092830407'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-14.html' title='Exercise 14'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8468372885235504086</id><published>2009-07-02T20:41:00.002+10:00</published><updated>2009-07-02T20:42:27.787+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise15'/><title type='text'>Exercise 15</title><content type='html'>1. Can a simple firewall be designed from standard computer equipment? What hardware components would you need for a proxy server?&lt;br /&gt;&lt;br /&gt;2. 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;3. Accessing a firewall vendor site, find out what solutions are offered:&lt;br /&gt;http://www.checkpoint.com&lt;br /&gt;http://www.microsoft.com/catalog/display.asp?subid=22&amp;amp;site=10538&amp;amp;x=44&amp;amp;y=21&lt;br /&gt;&lt;br /&gt;4. Does the company you work for (or the school you attend) utilise a proxy server for Internet access? Is the proxy server intended to keep hackers out of the network, or control employees’ access to the Internet?&lt;br /&gt;&lt;br /&gt;5. Find out if your university or workplace has a backup policy in place. Is it followed and enforced?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8468372885235504086?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8468372885235504086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8468372885235504086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8468372885235504086'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-15.html' title='Exercise 15'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-233771736824035968</id><published>2009-07-02T20:39:00.002+10:00</published><updated>2009-07-20T21:00:44.040+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise13'/><title type='text'>Exercise 13</title><content type='html'>1. List and describe your experiences with a secure Web site. Begin by defining some security issues in Reading 8. Some examples may be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;University enrollment;&lt;/li&gt;&lt;li&gt;online banking, auctions, real estate;&lt;/li&gt;&lt;li&gt;booking a cheap air ticket or concert ticket;&lt;/li&gt;&lt;li&gt;shopping online for a book, software or a CD.&lt;/li&gt;&lt;/ul&gt;2. What is SET and how does it compare to SSL as a platform for secure electronic transaction? Is SET in common use?&lt;br /&gt;&lt;br /&gt;First, see&lt;a href="http://itc565developersblog.blogspot.com/2009/07/exercise-12-designing-for-secure.html"&gt; exercise 12. &lt;/a&gt;SET is long dead and all that remains is for it to be buried.&lt;br /&gt;&lt;br /&gt;As for my experiences with "secure" web sites, the first issue is the terminology itself. SSL is not secure, it is an encrypted tunnel, one which can be intercepted (as we rarely use client side certificates). Strangely enough, the ASIC (&lt;a href="http://www.asic.gov.au/"&gt;Australian Securities and Investment Corp&lt;/a&gt;) has one of the better secure sites. The signing site for company directors is fairly well designed. Something unusual for a .gov organisation.&lt;br /&gt;&lt;br /&gt;This site uses a client certificate for authentication. This allows the user to lodge company statements minus the MiTM attack problem. There is an issue of protecting the certificate that is not addressed and which is left to the client, but nothing is perfect.&lt;br /&gt;&lt;br /&gt;The links below address a few issues with secure site design:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/session-tracking-and-management.html"&gt;Session tracking and management &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/07/unexpected-user-input.html"&gt;User Input&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;What is really essential to remember is that it matters what the client can see and alter. A web browser is NOT secure and either a client or an attacker can intercept and change values going to and from a web session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-233771736824035968?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/233771736824035968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/233771736824035968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/233771736824035968'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-13.html' title='Exercise 13'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4146894772786534599</id><published>2009-07-02T20:33:00.004+10:00</published><updated>2009-07-21T11:55:07.209+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise12'/><title type='text'>Exercise 12: Designing for a secure framework</title><content type='html'>&lt;ol&gt;&lt;li&gt;Find out about SET and the use of RSA 128-bit encryption for e-commerce.&lt;/li&gt;&lt;li&gt;Design a Web application form for a new credit card.&lt;/li&gt;&lt;li&gt;What can you find out about network and host-based intrusion detection systems?&lt;/li&gt;&lt;/ol&gt;I have to state that SET is the walking dead. It was raised by Visa, Mastercard and a few other card makers in the late 1990's and died a slow painful death. It is the walking dead as they keep trying to revive it.&lt;br /&gt;&lt;br /&gt;Just like the walking dread from one of Lovecraft's novels, SET is a walking corpse. Setco has gone a long time ago and there remains little but the smell.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-9-web-form-design-and.html"&gt;Point 2&lt;/a&gt; (and this is the second time I am writing this as Windows has again blue-screened due to issues with drivers in a typical Microsoft poorly conceived and executed manner), was conducted in &lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-9-web-form-design-and.html"&gt;exercise 9&lt;/a&gt; fro accepting cards. This was far from ideal and secure and did not meet many of the requirements of a PCI based site, but it did take cards. The process to actually apply is far more complex (and to some extent more complex than it needs to be). Having just completed a process that required a 1 minute phone call and a single fax'd signiture, I was suppriused at the OnLine alternative that I co9uld have used (over around 30 minutes). The online process needs to be as simple as the paper one.&lt;br /&gt;&lt;br /&gt;Part 3 is where I have really spent my time and effort. I have been working on databases for both host and network based Intrusion Detection systems and in fact an integrated solution.&lt;br /&gt;&lt;br /&gt;This process has involved the basic Snort MySQL dataset which I have been including IPTables logs and system logs into. I manage the database using XCase. This is an tool that allows me to manage the ERD (or entity relationship diagram) and hence the associations between the tables.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmRDl7t22EI/AAAAAAAACyw/6sP3we_2gMg/s1600-h/xcase.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/SmRDl7t22EI/AAAAAAAACyw/6sP3we_2gMg/s400/xcase.jpg" alt="" id="BLOGGER_PHOTO_ID_5360483775441983554" border="0" /&gt;&lt;/a&gt;As you can see from the daigram above, there are a large number of tables that I am in te process of linking. These match attack signitures by default. The idea is to use simple neural and learning networks to match associations and improve the results - hence minimising false negatives and wasted time on false positives.&lt;br /&gt;&lt;br /&gt;For the most part, network based IDS (see www.snort.org) or host based IDS (see Tripwire) are based on signiture matching. This is slowly changing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4146894772786534599?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4146894772786534599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-12-designing-for-secure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4146894772786534599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4146894772786534599'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/07/exercise-12-designing-for-secure.html' title='Exercise 12: Designing for a secure framework'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/SmRDl7t22EI/AAAAAAAACyw/6sP3we_2gMg/s72-c/xcase.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-468066239603869368</id><published>2009-06-21T15:00:00.001+10:00</published><updated>2009-06-21T15:59:32.574+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assignment1'/><title type='text'>Assessment Item 1</title><content type='html'>For this subject we have an ongoing assessment schedule. This can made for some hectic periods (with work and all) but it does mean that you have to focus on the topic over the entire period and not simply cram.&lt;br /&gt;&lt;br /&gt;The first assessment item for this subject is the combination of the Exercises for the initial six (6) topics, the first four (4) Ruby language Workshops and an elevator pitch. These items are linked below.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Exercises 1-11 (of 26)&lt;/b&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-1-analysis-of-online.html"&gt;Exercise 1&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-2-technology-and-evolution-of.html"&gt;Exercise 2&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-3-finding-some-common-ground.html"&gt;Exercise 3&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-4-chapter-2-review-questions.html"&gt;Exercise 4&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-5-binding-sockets-in-chat-room.html"&gt;Exercise 5&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-7-user-input-for-database.html"&gt;Exercise 6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-7-user-input-for-database.html"&gt;Exercise 7&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-8-php-and-mysql-database.html"&gt;Exercise 8&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-9-web-form-design-and.html"&gt;Exercise 9&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Exercise 10&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-11-xml-introduction.html"&gt;Exercise 11&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Ruby on Rails Workshops 1-8&lt;/b&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/ruby-on-rails-workshop-1.html"&gt;Workshop 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-2.html"&gt;Workshop 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-3.html"&gt;Workshop 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-4.html"&gt;Workshop 4&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Elevator pitch No. 1&lt;/b&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/elevator-pitch-1-on-progress-report-for.html"&gt;Elevator pitch 1 on progress report for assessment item 1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;For the next week I am not likely to post anything at all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-468066239603869368?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/468066239603869368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/assessment-item-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/468066239603869368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/468066239603869368'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/assessment-item-1.html' title='Assessment Item 1'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2635417019463824986</id><published>2009-06-21T14:54:00.009+10:00</published><updated>2009-06-21T15:55:51.898+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop4'/><title type='text'>Ruby on Rails - Workshop 4 (Solution - Part 2)</title><content type='html'>&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Solution...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here is how to do this workshop. The results are posted in the sections below. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0); font-style: italic;"&gt;3. &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0); font-style: italic;"&gt;Compare the Ruby and Python versions of the dog years calculator:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-style: italic;"&gt;#!/usr/bin/ruby&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0); font-style: italic;"&gt;# The Dog year calculator program called dogyears.rb&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(0, 0, 102);"&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;&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;&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;/blockquote&gt;The most obvious difference is the interpreter used. Ruby and Python have  their own interpreters and of course point to these respectively.&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;We have the following differences:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width: 12px; height: 3px;" border="1"&gt;&lt;tbody&gt;&lt;tr style="font-weight: bold;"&gt;&lt;td style="text-align: center;"&gt;Ruby&lt;/td&gt;&lt;td style="text-align: center; font-weight: bold;"&gt;Python&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td  style="font-family:courier new;"&gt;&lt;span style="font-style: italic;"&gt;Keyboard &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;gets&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;if-else&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;: is optional&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;keyword&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;elsif&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;Main&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Not necessary&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;Output&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;puts&lt;/span&gt;&lt;br /&gt;______________&lt;/td&gt;&lt;td  style="font-family:courier new;"&gt;&lt;span style="font-style: italic;"&gt;Input&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;input()&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;if else&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;: is required&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;keyword&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;elif&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;function&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Is required&lt;/span&gt;&lt;br /&gt;______________&lt;br /&gt;Output&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;print()&lt;/span&gt;&lt;br /&gt;______________&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;There are more differences (e.g. Ruby calls "Def dogyears" and Python requires "Def dogyears()" with the brackets following the function call).&lt;br /&gt;&lt;br /&gt;This will do for now though.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-4.html"&gt;&lt;span style="font-weight: bold;"&gt;Click to return to the main page of this Workshop.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2635417019463824986?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2635417019463824986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-4-solution-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2635417019463824986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2635417019463824986'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-4-solution-part.html' title='Ruby on Rails - Workshop 4 (Solution - Part 2)'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3435415857273897058</id><published>2009-06-21T12:57:00.005+10:00</published><updated>2009-06-21T14:21:47.473+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop3'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Ruby on Rails - Workshop 3 (Solution) - Part 2</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;This is Part 2 of the Workshop 3 solution. Click&lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(102, 0, 0);" href="http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution.html"&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;here to see part 1 of the solution&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My preference is to use "&lt;a href="http://www.minq.se/products/dbvis/"&gt;DbVisualiser&lt;/a&gt;" (below) or &lt;a href="http://www.xcase.com/"&gt;XCase &lt;/a&gt;- this is instead of the MySQL tools (listed in part 1 of the workshop). I use MS SQL and Oracle databases more then MySQL, so I want a tool that connects to many types of database server. These tools also have a reverse engineering feature to map existing databases and create schema diagrams.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2laJVpJCI/AAAAAAAACu4/j5ygQxMQA6o/s1600-h/step2-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2laJVpJCI/AAAAAAAACu4/j5ygQxMQA6o/s400/step2-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349613800987894818" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;br /&gt;&lt;/span&gt;&lt;span&gt;First, let's create the OTBS database using DbVisualiser (we have already logged into the database before using our new credentials).&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2oPczaGKI/AAAAAAAACvI/eAWZzuvbSyU/s1600-h/step2-db.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2oPczaGKI/AAAAAAAACvI/eAWZzuvbSyU/s400/step2-db.jpg" alt="" id="BLOGGER_PHOTO_ID_5349616915769333922" border="0" /&gt;&lt;/a&gt;Then we add the table and column.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2rDa4QOjI/AAAAAAAACvQ/q7e5_vrMkJQ/s1600-h/step2-db1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 345px; height: 400px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2rDa4QOjI/AAAAAAAACvQ/q7e5_vrMkJQ/s400/step2-db1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349620007629240882" border="0" /&gt;&lt;/a&gt;Which gives us a simple database.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2rYFzmopI/AAAAAAAACvY/pori3CxC0kQ/s1600-h/step2-db2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2rYFzmopI/AAAAAAAACvY/pori3CxC0kQ/s400/step2-db2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349620362749846162" border="0" /&gt;&lt;/a&gt;Now we have a database that we can link into our web application. In reality and in a real situation, we should really look at the table a little more. I have guessed (poorly) the column types and lengths. These contraints and the data fields should be configured better than this.&lt;br /&gt;&lt;br /&gt;SQL Database attacks (e.g. SQL injection) are one of the most common attacks today. Ruby does not protect you from this. This is the job of the coder to make secure code. We really should be starting to think of this in advance and teach this.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Step 2&lt;/span&gt;&lt;br /&gt;Lets go back to our Passenger directory. Using the data from the workshop, we first use the following command:&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(0, 0, 102);"&gt;ruby script/generate scaffold Passenger name:string job_id:integer contact_number:string suburb_origin:string street:string street_number:string building:string suburb_destination:string passenger_number:string taxi_type:string date:string time_required:string&lt;/blockquote&gt;As can also be seen in the command line image below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2mRZQpwtI/AAAAAAAACvA/nxLOBLVMLNQ/s1600-h/step2-3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 241px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2mRZQpwtI/AAAAAAAACvA/nxLOBLVMLNQ/s400/step2-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5349614750154736338" border="0" /&gt;&lt;/a&gt;This creates our scaffold in Ruby.&lt;br /&gt;&lt;br /&gt;Alternatively, with the database defined (see step 1 above) we can simplly issue the command:&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(0, 0, 102);"&gt;ruby script/generate model Passenger&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2tAMryD9I/AAAAAAAACvg/uKxJisnFzAs/s1600-h/step2-cm2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 109px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2tAMryD9I/AAAAAAAACvg/uKxJisnFzAs/s400/step2-cm2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349622151302483922" border="0" /&gt;&lt;/a&gt;This is not needed in our case and you should only do this in one way (not create and re-create). But I just wanted to demonstrate that there are multiple ways that you can create your model.&lt;br /&gt;&lt;br /&gt;Now we have our tables and a small ruby web server. Next we start in integrate these and make something a little more useful.&lt;br /&gt;&lt;br /&gt;At this point I have gone back and tidied the database a little. I have set constraints on a few fields.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;taxi_type - set to only the following options (sedan, wagon, disabled, maxi)&lt;/li&gt;&lt;li&gt;passenger_number - set to allow values 1 to 4&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;font-size:100%;" &gt;This is Part 2 of the Workshop 3 solution.&lt;br /&gt;Click&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;a style="color: rgb(102, 0, 0);" href="http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution.html"&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;here to see part 1 of the solution&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;font-size:100%;" &gt;. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3435415857273897058?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3435415857273897058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3435415857273897058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3435415857273897058'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution-part.html' title='Ruby on Rails - Workshop 3 (Solution) - Part 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2laJVpJCI/AAAAAAAACu4/j5ygQxMQA6o/s72-c/step2-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1845776321265213144</id><published>2009-06-21T11:25:00.002+10:00</published><updated>2009-06-21T15:31:59.184+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop4'/><title type='text'>Ruby on Rails - Workshop 4 (Solution)</title><content type='html'>&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Solution...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here is how to do this workshop. The results are posted in the sections below. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0); font-style: italic;"&gt;1.  &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0); font-style: italic;"&gt;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;/span&gt;&lt;br /&gt;&lt;br /&gt;We start with the code that requires input (the dogyears) and have a play:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj3B2FRQdqI/AAAAAAAACvw/B3K1G_qJnu8/s1600-h/DY.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj3B2FRQdqI/AAAAAAAACvw/B3K1G_qJnu8/s400/DY.jpg" alt="" id="BLOGGER_PHOTO_ID_5349645067257673378" border="0" /&gt;&lt;/a&gt;Then we code up a small program to do the required steps (notice this is still not securely coded):&lt;br /&gt;And running this we see:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj3EY_h-w7I/AAAAAAAACv4/IGCV7gAjvsk/s1600-h/dogname-out.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 204px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj3EY_h-w7I/AAAAAAAACv4/IGCV7gAjvsk/s400/dogname-out.jpg" alt="" id="BLOGGER_PHOTO_ID_5349647866035880882" border="0" /&gt;&lt;/a&gt;Nothing really pretty.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hwvcheng.wordpress.com/category/workshops/workshop04/"&gt;Vince Cheng did this in another subject and has a different code sample that also works&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 0, 0); font-style: italic;"&gt;2.  &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0); font-style: italic;"&gt;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;/span&gt;&lt;br /&gt;&lt;br /&gt;Being that we have a working copy of this, I just played with the existing code.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj3EZPjSWzI/AAAAAAAACwA/x5jhx1elEXM/s1600-h/dogname.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 388px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj3EZPjSWzI/AAAAAAAACwA/x5jhx1elEXM/s400/dogname.jpg" alt="" id="BLOGGER_PHOTO_ID_5349647870336326450" border="0" /&gt;&lt;/a&gt;Which, as you can see works correctly:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj3FneaKExI/AAAAAAAACwI/boCBWh2oqcg/s1600-h/fizzbuzz-out.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 255px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj3FneaKExI/AAAAAAAACwI/boCBWh2oqcg/s400/fizzbuzz-out.jpg" alt="" id="BLOGGER_PHOTO_ID_5349649214354363154" border="0" /&gt;&lt;/a&gt;So on to the last part of Workshop 4...&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-4-solution-part.html"&gt;&lt;span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;This workshop is continued on another page. Click here to see part 3 of the Workshop 4 challenge question.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-4.html"&gt;&lt;span style="font-weight: bold;"&gt;Click to return to the main page of this Workshop.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1845776321265213144?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1845776321265213144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-4-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1845776321265213144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1845776321265213144'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-4-solution.html' title='Ruby on Rails - Workshop 4 (Solution)'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj3B2FRQdqI/AAAAAAAACvw/B3K1G_qJnu8/s72-c/DY.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-8290870946106423077</id><published>2009-06-21T11:24:00.002+10:00</published><updated>2009-06-21T13:05:55.158+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop3'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Ruby on Rails - Workshop 3 (Solution)</title><content type='html'>&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Solution...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here is how to do this workshop. The results are posted in the sections below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt; Before we even start doing anything else we need to stop and take action on a step NOT included in the workshop.&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold; font-style: italic;"&gt;This is security!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let us do this the easy way. Start by clicking on the Instant Rails management app.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpVFihuI/AAAAAAAACtw/tX7hnFhI3m0/s1600-h/step1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 221px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpVFihuI/AAAAAAAACtw/tX7hnFhI3m0/s400/step1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349605265746593506" border="0" /&gt;&lt;/a&gt;From here, lets use the "PhPMyAdmin" configuration tool. Click this and the local web configuration page will open.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpl2UItI/AAAAAAAACt4/83bNo-bIzBQ/s1600-h/step1-1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 285px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpl2UItI/AAAAAAAACt4/83bNo-bIzBQ/s400/step1-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349605270246138578" border="0" /&gt;&lt;/a&gt;Notice that the server is running as user "&lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;" with no password - BAD RUBY!!! This joke that you are safe as the MySQL is locked to localhost is a joke that should be squashed. The Instant Rails developers should be ashamed of themselves for this criminal lack of wisdom.&lt;br /&gt;&lt;br /&gt;Just stating that it is linked only to localhost shows a true lack of any security awareness.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpmKL-rI/AAAAAAAACuA/ezvJ6C1fYjk/s1600-h/step1-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpmKL-rI/AAAAAAAACuA/ezvJ6C1fYjk/s400/step1-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349605270329490098" border="0" /&gt;&lt;/a&gt;So, click on the "&lt;span style="font-weight: bold;"&gt;privilages&lt;/span&gt;" tab and lets fix this horiffic flaw from those uncaring Rails developers who are seeking to destroy your site security.&lt;br /&gt;&lt;br /&gt;Here we need to add other users and give them a password. I will not go into details here, but do NOT leave this without a password!&lt;br /&gt;&lt;br /&gt;Select &lt;span style="font-weight: bold;"&gt;root &lt;/span&gt;(I will not go into setting up many users, but you should do this) and click the "&lt;span style="font-weight: bold;"&gt;Edit Privilages&lt;/span&gt;" link (as is circled in red below).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2f5KIz-5I/AAAAAAAACuI/bvxZpcu-yw4/s1600-h/step1-3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 68px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2f5KIz-5I/AAAAAAAACuI/bvxZpcu-yw4/s400/step1-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5349607736708692882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This will take you to the use privileges page. Scroll down to the change password field.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2gaQLKKuI/AAAAAAAACuQ/OzTJDBqUlkI/s1600-h/step1-4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 145px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2gaQLKKuI/AAAAAAAACuQ/OzTJDBqUlkI/s400/step1-4.jpg" alt="" id="BLOGGER_PHOTO_ID_5349608305264831202" border="0" /&gt;&lt;/a&gt;This field is set by default to "&lt;span style="font-weight: bold;"&gt;No Password&lt;/span&gt;" - Bad Instant Rails. Add a password and click "Go".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2gaZEO50I/AAAAAAAACuY/UwCNI57mnKw/s1600-h/step1-5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 351px; height: 142px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2gaZEO50I/AAAAAAAACuY/UwCNI57mnKw/s400/step1-5.jpg" alt="" id="BLOGGER_PHOTO_ID_5349608307651700546" border="0" /&gt;&lt;/a&gt;You should see the confirmation message stating the that password has been successfully updated.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2hAiQ9mXI/AAAAAAAACug/IroIflhK9ZU/s1600-h/step1-6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 77px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2hAiQ9mXI/AAAAAAAACug/IroIflhK9ZU/s400/step1-6.jpg" alt="" id="BLOGGER_PHOTO_ID_5349608962956040562" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;&lt;br /&gt;Now you can log into the MySQL server. Open the MySQL Query browser.&lt;br /&gt;&lt;br /&gt;Note that you will need to add both the username and a password (this is the one we configured in step 1).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2iUv4Fx0I/AAAAAAAACuo/hFjDX4orwv8/s1600-h/step2-1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 338px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2iUv4Fx0I/AAAAAAAACuo/hFjDX4orwv8/s400/step2-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349610409718826818" border="0" /&gt;&lt;/a&gt;Clicking "&lt;span style="font-weight: bold;"&gt;ok&lt;/span&gt;" will log us into the MySQL Query browser.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2iykHk2eI/AAAAAAAACuw/JbT1JE2MOcw/s1600-h/step2-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2iykHk2eI/AAAAAAAACuw/JbT1JE2MOcw/s400/step2-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349610921958627810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We will continue this in another post.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold; color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution-part.html"&gt;Click here to continue to Part 2 of Workshop 3&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-8290870946106423077?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/8290870946106423077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8290870946106423077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/8290870946106423077'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-3-solution.html' title='Ruby on Rails - Workshop 3 (Solution)'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2dpVFihuI/AAAAAAAACtw/tX7hnFhI3m0/s72-c/step1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1792818071336770245</id><published>2009-06-21T10:01:00.003+10:00</published><updated>2009-06-21T11:21:50.797+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop2'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Ruby on Rails - Workshop 2</title><content type='html'>&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Solution...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Here is how to do this workshop. The results are posted in the sections below. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt;&lt;br /&gt;First, we need to install and configure Rails. We installed rails in workshop number 1. In this workshop we get it running. So let us start by starting Rails and having ti run.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2GvRA-kDI/AAAAAAAACsw/LeyCOZtxi5A/s1600-h/step1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 175px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2GvRA-kDI/AAAAAAAACsw/LeyCOZtxi5A/s400/step1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349580078965493810" border="0" /&gt;&lt;/a&gt;This starts our Apache server and MySQL (lite) server running on the local host. All of the configuration steps have been completed in workshop 1, so this is just a restart of the application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;&lt;br /&gt;Next we go to the Rails directory with our command line.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2Gvj3JtOI/AAAAAAAACs4/9k8tuFZNX34/s1600-h/Step2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 226px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2Gvj3JtOI/AAAAAAAACs4/9k8tuFZNX34/s400/Step2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349580084024554722" border="0" /&gt;&lt;/a&gt;We run "&lt;span style="font-style: italic; font-weight: bold;"&gt;use_ruby.cmd&lt;/span&gt;" from the command line and set the path and other environment variables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3&lt;/span&gt;&lt;br /&gt;From this command line (with the environment set as in step 2) we can create our project. I have selected the directory name "&lt;span style="font-weight: bold; font-style: italic;"&gt;rails_projects&lt;/span&gt;" (not a great deal of creativity here).&lt;br /&gt;&lt;br /&gt;Next, we let rails create the project environment. To do this we run the command:&lt;br /&gt;"&lt;span style="font-weight: bold; font-style: italic;"&gt;rails Passenger&lt;/span&gt;" from the projects directory.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2Gv4qkjsI/AAAAAAAACtI/NzdpronkITE/s1600-h/Step3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 202px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2Gv4qkjsI/AAAAAAAACtI/NzdpronkITE/s400/Step3.jpg" alt="" id="BLOGGER_PHOTO_ID_5349580089608933058" border="0" /&gt;&lt;/a&gt;Rails automatically creates the required directory structure and populates the basic strcutres used. We can see this for Windows Explorer (below).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2GvjaCReI/AAAAAAAACtA/_1MrtUHhmMY/s1600-h/Step2-folder.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 234px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2GvjaCReI/AAAAAAAACtA/_1MrtUHhmMY/s400/Step2-folder.jpg" alt="" id="BLOGGER_PHOTO_ID_5349580083902432738" border="0" /&gt;&lt;/a&gt;This is still rather empty, but we have not actually done anything other than raise the project framework as yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4&lt;/span&gt;&lt;br /&gt;Next we change directory to our project folder that was created in the step above.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2GwM1ySnI/AAAAAAAACtQ/akaTxrTA70c/s1600-h/Step4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 198px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sj2GwM1ySnI/AAAAAAAACtQ/akaTxrTA70c/s400/Step4.jpg" alt="" id="BLOGGER_PHOTO_ID_5349580095024679538" border="0" /&gt;&lt;/a&gt;Running the command, "&lt;span style="font-weight: bold; font-style: italic;"&gt;ruby script/server Webrick&lt;/span&gt;" starts the server and project running and waiting for requests. This is set to serve requests on TCP 3000.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5&lt;/span&gt;&lt;br /&gt;Now, when we connect to the local ruby web server on TCP port 3000 we get the unpopulated webpage.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2J04gIvBI/AAAAAAAACtY/4N_fvm-WVEw/s1600-h/step5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 183px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2J04gIvBI/AAAAAAAACtY/4N_fvm-WVEw/s400/step5.jpg" alt="" id="BLOGGER_PHOTO_ID_5349583473999395858" border="0" /&gt;&lt;/a&gt;This of course has little content (other than the default ruby on rails framework). We can test that it is working. Clicking on the link "About your application's environment" is a simple ruby script we can use to test the server.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2J1C7gFYI/AAAAAAAACtg/Om8V31xS5Gc/s1600-h/running1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 179px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2J1C7gFYI/AAAAAAAACtg/Om8V31xS5Gc/s400/running1.jpg" alt="" id="BLOGGER_PHOTO_ID_5349583476798526850" border="0" /&gt;&lt;/a&gt;We can see from the above screenshot that we have received and processes a request.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2J1TX_HVI/AAAAAAAACto/6LLMltAQ95A/s1600-h/running2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 220px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/Sj2J1TX_HVI/AAAAAAAACto/6LLMltAQ95A/s400/running2.jpg" alt="" id="BLOGGER_PHOTO_ID_5349583481212968274" border="0" /&gt;&lt;/a&gt;And as such, the information table listing our envirioment is displayed.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-3.html"&gt;Workshop number 3 &lt;/a&gt;we shall start to populate the database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1792818071336770245?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1792818071336770245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1792818071336770245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1792818071336770245'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ruby-on-rails-workshop-2.html' title='Ruby on Rails - Workshop 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_lPXDlv0_iG8/Sj2GvRA-kDI/AAAAAAAACsw/LeyCOZtxi5A/s72-c/step1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3794429016683901089</id><published>2009-06-20T13:07:00.002+10:00</published><updated>2009-06-20T13:22:11.415+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop2'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 2 - Question on Convention</title><content type='html'>&lt;span style="font-style: italic;"&gt;What is meant by “convention over configuration” and how does it reduce coding&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Convention over configuration (CoC) is a "&lt;a href="http://softwareengineering.vazexqi.com/files/pattern.html"&gt;Design a framework so that it enforces standard naming conventions for mapping classes to resources or events. A programmer only needs to write the mapping configurations when the naming convention fails&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Through a simplification of the objects and designations used when coding, the developer can spend more time coding and less in trying to remember what something was named.&lt;br /&gt;&lt;br /&gt;BuildingWebApp, Why You Should Learn Ruby on Rails, What is Ruby on Rails, viewed by 17 June 2009 &lt;a title="" rel="#someid0" href="http://www.buildingwebapps.com/podcasts/6514-why-you-should-learn-ruby-on/transcript"&gt;http://www.buildingwebapps.com/podcasts/6514-why-you-should-learn-ruby-on/transcript&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3794429016683901089?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3794429016683901089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-2-question-on-convention.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3794429016683901089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3794429016683901089'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-2-question-on-convention.html' title='Workshop 2 - Question on Convention'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1087820354360260975</id><published>2009-06-20T12:06:00.012+10:00</published><updated>2009-06-20T13:00:37.529+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Challenge 4</title><content type='html'>&lt;span style="font-style: italic;"&gt;What is meant by “convention over configuration” in regards to the use of Rails in Web application development?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Convention over configuration (or coding by convention) is the design paradigm used by Ruby in order to decrease the volume of decisions that developers are required to make. This is aimed at creating a simplified coding platform. This can result in a loss of flexibility.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;[1]&lt;/span&gt;&lt;span&gt;Curt Hibbs (2005) &lt;/span&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;span style="font-style: italic;"&gt;What Is Ruby on Rails" &lt;/span&gt;&lt;span&gt;(10/13/2005)  &lt;a href="http://www.onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html"&gt;http://www.onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html&lt;/a&gt;, O'Reilly, OnLamp.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1087820354360260975?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1087820354360260975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1087820354360260975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1087820354360260975'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-4.html' title='Workshop 1 - Challenge 4'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7639324492127557002</id><published>2009-06-20T12:06:00.010+10:00</published><updated>2009-06-20T12:42:02.297+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Challenge 6</title><content type='html'>&lt;span style="font-style: italic;"&gt;Describe the steps involved with the MVC design approach&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The steps involved with the MVC design approach can be represented by the MVC  communication cycle. In general, this cycle begins with an input from the user. This can be seen in the representation of this process sourced from "&lt;a href="http://www.moock.org/lectures/mvc/"&gt;Moock&lt;/a&gt;" below:&lt;br /&gt;&lt;div class="slide"&gt;  &lt;p class="itemImage"&gt;&lt;img style="width: 381px; height: 200px;" src="http://www.moock.org/lectures/mvc/images/mvc-02.jpg" /&gt;&lt;/p&gt; We can also see "&lt;span style="font-style: italic;"&gt;the relationships between the model, view, and controller layers of an MVC application&lt;/span&gt;" in the depiction from Sun MicroSystems in "&lt;a href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/app-arch/app-arch2.html"&gt;&lt;i&gt;Designing Enterprise Applications&lt;br /&gt;with the J2EE Platform&lt;/i&gt;"&lt;/a&gt;. &lt;a name="1106101"&gt;&lt;!-- --&gt;&lt;/a&gt; &lt;p&gt;&lt;img style="width: 362px; height: 253px;" src="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/images/app-archa2.gif" vspace="0" align="center" border="0" hspace="0" /&gt; &lt;/p&gt;  &lt;blockquote&gt;&lt;p&gt; &lt;a name="1106102"&gt;&lt;!-- --&gt;&lt;/a&gt; &lt;a href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/app-arch/app-arch2.html"&gt;&lt;b&gt;Figure 11.1  &lt;/b&gt; The Model-View-Controller Architecture&lt;/a&gt;  &lt;/p&gt; &lt;/blockquote&gt;As such, the process is as follows.&lt;br /&gt;&lt;ol&gt;&lt;li style="font-style: italic;"&gt;First, the view receives user input and passes it to the controller,&lt;/li&gt;&lt;li style="font-style: italic;" class="itemText"&gt;Next, the controller receives user input from the view,&lt;/li&gt;&lt;li style="font-style: italic;" class="itemText"&gt;The controller then modifies the model in response to user's input,&lt;/li&gt;&lt;li style="font-style: italic;" class="itemText"&gt;The model will then change when it receives an update from the controller,&lt;/li&gt;&lt;li style="font-style: italic;" class="itemText"&gt;The model subsequently sends a notification of the change to the view,&lt;br /&gt;&lt;/li&gt;&lt;li class="itemText"&gt;&lt;span style="font-style: italic;"&gt;Whereas the view will proceed to update the user interface &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;There are also cases where the controller can update the view directly.         &lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;[1] Glenn E. Krasner &amp;amp; Stephen T. Pope (1988) "&lt;a href="http://www.create.ucsb.edu/%7Estp/PostScript/mvc.pdf"&gt;A Description of the Model-View-Controller User Interface Paradigm in the Smalltalk-80 System&lt;/a&gt;" ParcPlace Systems, Inc. 1550 Plymouth Street Mountain View, CA 94043 glenn@ParcPlace.com&lt;br /&gt;[2] Ralph E. Johnson. (1987) "&lt;span style="font-style: italic;"&gt;Model/View/Controller&lt;/span&gt;" Department of C.S., U. of Illinois, Urbana-Champaign, November, 1987&lt;br /&gt;[3] Steve Burbeck, (1987) "Applications Programming in Smalltalk-80(TM): How to use Model-View-Controller (MVC)" Online at &lt;a href="http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html"&gt;http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html&lt;/a&gt;, viewed 20th Jun 2009.&lt;br /&gt;[4] Trygve M. H. Reenskaug (1978) "MVC" &lt;a href="ttp://heim.ifi.uio.no/%7Etrygver/themes/mvc/mvc-index.html"&gt;http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html&lt;/a&gt;, viewed 19th June 2009&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7639324492127557002?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7639324492127557002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7639324492127557002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7639324492127557002'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-6.html' title='Workshop 1 - Challenge 6'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1658850724456721439</id><published>2009-06-20T12:06:00.005+10:00</published><updated>2009-06-20T12:28:22.973+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Challenge 5</title><content type='html'>&lt;span style="font-style: italic;"&gt;When did Model-View-Controller begin and where is it used&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The MVC paradigm owes its origins to Smalltalk. As was noted by Krasner &amp;amp; Pope (1988):&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Model-View-Controller (MVC) programming is the application of this three-way factoring, whereby objects of different classes take over the operations related to the application domain (the model), the display of the application's state (the view), and the user interaction with the model and the view (the controller). In earlier Smalltalk system user interfaces, the tools that were put into the interface tended to consist of arrangements of four basic viewing idioms: paragraphs of text, lists of text (menus), choice "buttons," and graphical forms (bit- or pixel-maps). These tools also tended to use three basic user interaction paradigms: browsing, inspecting and editing&lt;/span&gt;.&lt;/blockquote&gt;The MVC method has grown since Smalltalk with &lt;a href="http://msdn.microsoft.com/en-us/library/ms978748.aspx"&gt;large organizations (including Microsoft&lt;/a&gt;) promoting it. The MVC is an architectural paradigm within the field of software engineering that is designed to isolate business logic from those considerations related to the user interface.&lt;br /&gt;&lt;br /&gt;The first concepts of the MVC framework developed in the early 1970's in a series of papers on &lt;a href="http://heim.ifi.uio.no/%7Etrygver/1973/iccas/1973-08-ICCAS.pdf"&gt;modeling shipyard processes (1973)&lt;/a&gt;. When the author of these papers (Reenskaug, 1978) moved to XEROX PARC in 1978, this concept was incorportated into the SmallTalk code model and was developed into the MVC framework we have today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;[1] Glenn E. Krasner &amp;amp; Stephen T. Pope (1988) "&lt;a href="http://www.create.ucsb.edu/%7Estp/PostScript/mvc.pdf"&gt;A Description of the Model-View-Controller User Interface Paradigm in the Smalltalk-80 System&lt;/a&gt;" ParcPlace Systems, Inc. 1550 Plymouth Street Mountain View, CA 94043 glenn@ParcPlace.com&lt;br /&gt;[2] Ralph E. Johnson. (1987) "&lt;span style="font-style: italic;"&gt;Model/View/Controller&lt;/span&gt;" Department of C.S., U. of Illinois, Urbana-Champaign, November, 1987&lt;br /&gt;[3] Steve Burbeck, (1987) "Applications Programming in Smalltalk-80(TM): How to use Model-View-Controller (MVC)" Online at &lt;a href="http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html"&gt;http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html&lt;/a&gt;, viewed 20th Jun 2009.&lt;br /&gt;[4] Trygve M. H. Reenskaug (1978) "MVC" http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html, viewed 19th June 2009&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1658850724456721439?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1658850724456721439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1658850724456721439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1658850724456721439'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-5.html' title='Workshop 1 - Challenge 5'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-9040196006658487210</id><published>2009-06-20T12:05:00.002+10:00</published><updated>2009-06-20T12:56:31.817+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Challenge 3</title><content type='html'>&lt;span style="font-style: italic;"&gt;What is Rails and how does it work with Ruby?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Rails is a framework for the Ruby language. Rails simplifies working with Ruby (&lt;a href="http://itc565developersblog.blogspot.com/2009/05/compiling-ruby-on-windows.html"&gt;see the following link for some issues with doing it yourself&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Hibbs (2005) defines this suscintly in that "&lt;span style="font-style: italic;"&gt;Ruby on Rails is a web application framework written in &lt;/span&gt;&lt;a style="font-style: italic;" href="http://ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, a dynamically typed programming language similar to Python, Smalltalk, and Perl&lt;/span&gt;".  &lt;span&gt;&lt;br /&gt;&lt;br /&gt;[1]&lt;/span&gt;&lt;span&gt;Curt Hibbs (2005) &lt;/span&gt;&lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;span style="font-style: italic;"&gt;What Is Ruby on Rails" &lt;/span&gt;&lt;span&gt;(10/13/2005)  &lt;a href="http://www.onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html"&gt;http://www.onlamp.com/pub/a/onlamp/2005/10/13/what_is_rails.html&lt;/a&gt;, O'Reilly, OnLamp.&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-9040196006658487210?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/9040196006658487210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/9040196006658487210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/9040196006658487210'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-3.html' title='Workshop 1 - Challenge 3'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6366146922641196578</id><published>2009-06-20T12:04:00.002+10:00</published><updated>2009-06-20T12:49:57.990+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Challenge 2</title><content type='html'>&lt;span style="font-style: italic;"&gt;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;/span&gt;.&lt;br /&gt;&lt;br /&gt;For the &lt;a href="http://itc565developersblog.blogspot.com/2009/05/computing-at-speed-of-ruby.html"&gt;first part of the answer see this link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The definition of "object-oriented programming" (OOP) is listed at &lt;a href="http://java.sun.com/docs/books/tutorial/java/concepts/"&gt;Sun's Java Tutorial site&lt;/a&gt;. This site states that:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;An object is a software bundle of related state and behavior. Software objects are often used to model the real-world objects that you find in everyday life. This lesson explains how state and behavior are represented within an object, introduces the concept of data encapsulation, and explains the benefits of designing your software in this manner&lt;/span&gt;.&lt;/blockquote&gt;As a result, OOP is a programming language model that has been developed using "&lt;span style="font-style: italic;"&gt;objects&lt;/span&gt;" in place of "actions". This results in an OOP being based on a focus of "data" in place of "logic".&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1148576,00.html?offer=briefcase"&gt;http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1148576,00.html?offer=briefcase&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6366146922641196578?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6366146922641196578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6366146922641196578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6366146922641196578'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/workshop-1-challenge-2.html' title='Workshop 1 - Challenge 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-605554709604608972</id><published>2009-06-19T08:34:00.002+10:00</published><updated>2009-06-19T08:48:00.062+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Family'/><title type='text'>Ron Lynam</title><content type='html'>Last night my grandfather died at the age of 93. This follows a long battle with Parkinson's disease.&lt;br /&gt;&lt;br /&gt;He will be sorely missed by family and friends.&lt;br /&gt;&lt;br /&gt;My grandfather was an electronics expert and engineer in the early days of this discipline. It was through him I gained a love and passion for computers and electronics. It was because of him that I first learnt to program. He taught me Assembly and C (which at the time I generally used to reverse engineer games such that my sisters could never win).&lt;br /&gt;&lt;br /&gt;It was through him that I obtained my first Unix terminal account on a dial up modem (75/300 baud) in 1979. As a consequence, it is him I owe my current career to.&lt;br /&gt;&lt;br /&gt;Pop, I will miss you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-605554709604608972?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/605554709604608972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ron-lynam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/605554709604608972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/605554709604608972'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/ron-lynam.html' title='Ron Lynam'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1109941942787910511</id><published>2009-06-17T18:21:00.002+10:00</published><updated>2009-06-17T18:22:41.151+10:00</updated><title type='text'>Exercises down</title><content type='html'>Well that is Exercises 1-11. I have the elevator pitch and exercises complete. Now to complete the workshops and load the recording of the pitch...&lt;br /&gt;&lt;br /&gt;Now if I can just find a way to make a 40 hour day...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1109941942787910511?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1109941942787910511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercises-down.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1109941942787910511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1109941942787910511'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercises-down.html' title='Exercises down'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2485106846267280523</id><published>2009-06-17T17:39:00.001+10:00</published><updated>2009-06-17T18:07:18.719+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise11'/><title type='text'>Exercise 11: Part 3</title><content type='html'>&lt;span style="font-style: italic;"&gt;What are DOMs and why were they developed&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Document Object Models (or DOMs) are a means of representing the concepts that are associated with and incorporated into the contents of that document.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/DOM/"&gt;W3C &lt;/a&gt;notes that a DOM is a "&lt;span class="summary"&gt;&lt;a href="http://www.w3.org/DOM/"&gt;&lt;span style="font-style: italic;"&gt;platform-  and language-neutral interface that will allow programs and  scripts to dynamically access and update the content, structure  and style of documents. The document can be further processed  and the results of that processing can be incorporated back into  the presented page. This is an overview of DOM-related materials  here at W3C and around the web&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;The primary reason for the existence of DOMs is the creation of some level of standardization. It may seem great to have everyone doing their own thing, but think where that could lead us...&lt;br /&gt;&lt;br /&gt;If each browser included its own new HTML tags (as occurred in the early days of the web), its own scripting language etc, we end up being left with the need to create separate sites for any and all browsers that may connect.&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2485106846267280523?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2485106846267280523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2485106846267280523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2485106846267280523'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-3.html' title='Exercise 11: Part 3'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-494184155332428943</id><published>2009-06-17T17:36:00.002+10:00</published><updated>2009-06-17T18:20:24.927+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise11'/><title type='text'>Exercise 11: Part 2</title><content type='html'>&lt;span style="font-style: italic;"&gt;XML schema is a forthcoming development of the technology. Visit the W3C website and search for information on schema. What are the benefits of adopting a schema standardized for a business sector&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/xml/library/x-think31.html"&gt;Ogbuji (2005)&lt;/a&gt; notes that standardization through &lt;a href="http://xml.coverpages.org/schemas.html"&gt;XML schemas&lt;/a&gt; is a means of making more efficient and hence less economically expensive. He states,&lt;br /&gt;&lt;blockquote&gt;"&lt;span style="font-style: italic;"&gt;One way to save resources on a long journey is to hitchhike. In XML, you can take advantage of countless open schema initiatives that, in effect, use schema standardization for top-down semantic transparency&lt;/span&gt;".&lt;/blockquote&gt;&lt;a href="http://www.w3.org/XML/Schema"&gt;W3C (2004)&lt;/a&gt; has a number of XML Schema working groups. For any real detail in a concise format I would view &lt;a href="http://xml.coverpages.org/schemas.html"&gt;Robin Cover's &lt;/a&gt;(2006) paper on XML schemas and the details on the various working groups and committees.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Uche Ogbuji (2005) &lt;a href="http://www.ibm.com/developerworks/xml/library/x-think31.html"&gt;"Thinking XML: Schema standardization for top-down semantic transparency"&lt;/a&gt; IBM (viewed on 17th July 2009)&lt;/li&gt;&lt;li&gt;W3C (2004) "&lt;a href="http://www.w3.org/XML/Schema"&gt;XML Schema&lt;/a&gt;" W3C (viewed on 17th July 2009)&lt;/li&gt;&lt;li&gt;Robin Cover (2006) "&lt;a href="http://xml.coverpages.org/schemas.html"&gt;XML Schemas&lt;/a&gt;", CoverPages (26 Nov 2006), Viewed 17 June 2009.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-494184155332428943?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/494184155332428943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/494184155332428943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/494184155332428943'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-2.html' title='Exercise 11: Part 2'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1887474938045387489</id><published>2009-06-17T09:34:00.002+10:00</published><updated>2009-06-17T09:52:47.867+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise11'/><title type='text'>Exercise 11: Part 4</title><content type='html'>&lt;span style="font-style: italic;"&gt;Why are some developers using SAX instead of DOM for document processing&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;In Clark (2001), Michel Rodriguez notes that;&lt;br /&gt;&lt;blockquote&gt;"&lt;span style="font-style: italic;"&gt;the vast majority of programmers that find DOM-type (tree-oriented) processing much easier to grasp than SAX processing. It feels much easier to "be in control" of the document and to act on it than to let it drive my code&lt;/span&gt;"&lt;/blockquote&gt;Like many others, this coder feels that SAX is overly complex. Being new and an additional learning exercise are a cause. However, it is not new in general, but new to the individual that counts in this statement.&lt;br /&gt;&lt;br /&gt;However this is changing. The inclusion of an "event processing paradigm" is starting to make inroads for SAX. As more and more automated systems develop, SAX is likely to become more popular. This may be the future for Security and monitoring software...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Kendall Grant Clark (2001)"&lt;a href="http://www.xml.com/pub/a/2001/11/14/dom-sax.html"&gt;DOM and SAX Are Dead, Long Live DOM and SAX&lt;/a&gt;", XML.com, viewed from http://www.xml.com/lpt/a/872 on 17th June, 2009.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1887474938045387489?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1887474938045387489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1887474938045387489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1887474938045387489'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-4.html' title='Exercise 11: Part 4'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2497664883334301969</id><published>2009-06-17T09:19:00.001+10:00</published><updated>2009-06-17T09:27:24.936+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise11'/><title type='text'>Exercise 11: Part 5</title><content type='html'>&lt;span style="font-style: italic;"&gt;SMIL is an application of XML. What is the purpose of this technology? Where does it apply&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Synchronized Multimedia Integration Language (or SMIL) defines an XML-like language that is designed to simplify the process used in publishing "&lt;span style="font-style: italic;"&gt;interactive multimedia presentations&lt;/span&gt;". (&lt;a href="http://www.w3.org/TR/2008/REC-SMIL3-20081201/"&gt;Bulterman, 2008&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Through the integration of streaming audio, video, rich featured images, text and a multitude of other multi-media formats, the author is provided with a "rich media" canvas on which to create their digital works. (&lt;a href="http://www.w3.org/AudioVideo"&gt;W3C, 2008&lt;/a&gt;).&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Bulterman, B. (2008) "Synchronized multimedia integration language (smil 3.0)", W3C. viewed from http://www.w3.org/TR/2008/REC-SMIL3-20081201/ on 17th June, 2009.&lt;/li&gt;&lt;li&gt;W3C (2008) "Synchronized Multimedia", W3C. viewed from http://www.w3.org/AudioVideo/ on 17th June, 2009.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2497664883334301969?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2497664883334301969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2497664883334301969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2497664883334301969'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-5.html' title='Exercise 11: Part 5'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1881342203434894962</id><published>2009-06-16T22:14:00.001+10:00</published><updated>2009-06-17T09:18:55.697+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise11'/><title type='text'>Exercise 11: Part 1</title><content type='html'>&lt;span style="font-style: italic;"&gt;Conduct research on the Internet to find out what tools can be used to parse an XML document and ensure that the document is well formed and valid.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A program that is used to validate the syntax of an XML document is known as a parser. There are of course parsers for many (most in fact) code languages. Parsing code is an integral part of the compilation process. In regards to XML, it is a process used to ensure that valid output will be created.&lt;br /&gt;&lt;br /&gt;The reference page below &lt;a href="http://xml.coverpages.org/publicSW.html#xmlTools"&gt;[1] &lt;/a&gt;has a detailed list of &lt;a href="http://xml.coverpages.org/publicSW.html#xmlTools"&gt;XML/XSL Software Tools&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a name="xmlToolsTOC" href="http://xml.coverpages.org/publicSW.html#xmlTools"&gt;XML/XLink/XSL Software Tools&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#lark"&gt;Lark, an XML processor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#dxp"&gt;DXP -  DataChannel XML Parser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;[&lt;a href="http://xml.coverpages.org/publicSW.html#nxp"&gt;NXP -  Norbert's XML Parser&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#msxml"&gt;Microsoft XML parser in Java (MSXML)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xp"&gt;XP, an XML parser in Java (James Clark)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#expat"&gt;expat - XML parser in C (James Clark)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;[&lt;a href="http://xml.coverpages.org/publicSW.html#xmltok"&gt;XMLTok&lt;/a&gt; - XML parser in C (James Clark)]&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#sx"&gt;SX - An SP application for SGML to normalized XML&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#sax"&gt;SAX - the Simple API for XML&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#free-dom"&gt;FREE-DOM - W3C DOM API using SAX (formerly: SAXDOM)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#saxon"&gt;Saxon: An Open-Source XSLT Processor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xaf"&gt;XAF - an XML Architectural Forms Processor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xmlTestbed"&gt;XML Testbed&lt;/a&gt; - Java XML application environment&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#copsolDAE"&gt;DAE SDK and DAE Server SDK (Copernican Solutions)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#ibmXML4Java"&gt;IBM XML for Java&lt;/a&gt; - validating XML processor in Java&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#jumbo"&gt;JUMBO - XML browser/editor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#lt-xml"&gt;LT XML - XML toolset&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#rxp"&gt;RXP XML (SGML) parser program&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xed"&gt;XED - A WYSIWYG XML instance editor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#aelfred"&gt;Ælfred XML Parser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#dxde"&gt;DataChannel XML Development Environment (DXDE)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#tcl-xml"&gt;Tcl XML Parsing Package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#psgml-xml"&gt;XML Editing Mode in PSGML&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xslj"&gt;XSLJ: Jade-compatible XSL-to-DSSSL translator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#docproc"&gt;docproc - an XML + XSL document processor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#dtdgen"&gt;DTDGenerator - XML DTD Generator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#nfDesigner"&gt;Near &amp;amp; Far Designer - DTD Design Tool&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#ace"&gt;The Ace Scripting Language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#hxa"&gt;HXA/HXP - Hubick's XML Analyzer, Parser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#msXMLNotepad"&gt;Microsoft XML Notepad&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xmlproc"&gt;xmlproc: A Python XML parser&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#xmlarchGeir"&gt;xmlarch.py: An XML architectural forms processor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://xml.coverpages.org/publicSW.html#DB2XML"&gt;DB2XML&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I still like &lt;a href="http://www.ultraedit.com/products/uestudio/uestudio_tour/html_validation.html"&gt;UEStudio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://xml.coverpages.org/publicSW.html"&gt;Publicly Available Software for SGML/XML/DSSSL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1881342203434894962?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1881342203434894962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1881342203434894962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1881342203434894962'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-11-part-1.html' title='Exercise 11: Part 1'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4217055834578154220</id><published>2009-06-16T09:06:00.003+10:00</published><updated>2009-06-16T22:13:26.805+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 11</title><content type='html'>&lt;span style="font-style: italic;"&gt;What are the differences between the various approaches to scripting&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The primary distinction in scripting is -&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Client side&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Server side&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;From a security perspective, client side scripting allows the user to interact and change the script. This is never a good idea. JavaScipt may be obscured by malicious code writers making the reversing of this information more difficult, but this is in an end to gain more control over the local host. The cost of this comes with the ability of the "good guys" (that is - us who reverse the malicious code) to analyse the scipt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4217055834578154220?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4217055834578154220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4217055834578154220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4217055834578154220'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-11.html' title='Exercise 10: Part 11'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2167982454618093374</id><published>2009-06-16T09:05:00.001+10:00</published><updated>2009-06-16T22:08:54.472+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 12</title><content type='html'>&lt;span style="font-style: italic;"&gt;List some of the shareware or freely available tools for web design. In addition to a good HTML editor, what utilities could be very handy to the developer&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;The site, "&lt;a href="http://websitetips.com/html/tools/"&gt;WebSite Tip&lt;/a&gt;s" is a good place to begin in answering this question.&lt;br /&gt;&lt;br /&gt;A number of the good tools that are listed (and are free) include &lt;a href="http://www.arachnoid.com/arachnophilia/"&gt;Arachnophilia, by P. Lutus&lt;/a&gt;. This tool is a:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HTML editor,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Programming editor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Text Editor&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web page development workshop, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;General programming tool. &lt;/li&gt;&lt;/ul&gt;With a combination of search &amp;amp; replace features, a spell checker, and an automated markup verifier (cleaner) you get a well featured tool for nothing (it even boasts an FTP tool).&lt;br /&gt;&lt;br /&gt;It comes with native support for&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ASP&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HTML&lt;/li&gt;&lt;li&gt;XHTML&lt;/li&gt;&lt;li&gt;PHP, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Java&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.ultraedit.com/"&gt;My choice is still not free. My choice for Windows (UNIX is different again) is UltraEdit, by IDM Computer Solutions, Inc.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As has been stated, UltraEdit is a "&lt;span style="font-style: italic;"&gt;reasonably priced text editor for Windows 98/Me/NT/2000/2003 and XP, and it supports 64-bit file handling (standard) on all 32-bit Windows platforms"&lt;/span&gt;. It is my choice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 0, 0);"&gt;UltraEdit is the #1 selling, most powerful, value priced text editor available and is quite popular among programmers - “the ideal text, HEX, HTML, PHP, Java, Perl, Javascript, and programmer's editor!” From their site: “UltraEdit delivers easy viewing and editing of code and variables. In addition to the standard editing functions such as undo, copy and paste, and searching, UltraEdit's color-coded editor allows programmers to decipher different code types and variables, and you are going to love the powerful code-folding too! Additional productivity enhancing features include delimiter matching that shows you the location of the opening and closing of parentheses, and bookmarking which helps you remember and find significant sections of code such as subroutines and constant declarations.” &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2167982454618093374?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2167982454618093374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2167982454618093374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2167982454618093374'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-12.html' title='Exercise 10: Part 12'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7420530401832090042</id><published>2009-06-16T09:04:00.001+10:00</published><updated>2009-06-16T21:58:14.462+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 10</title><content type='html'>&lt;span style="font-style: italic;"&gt;What are the similarities and differences between ASP, JSP and PHP&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;Of course, the initial difference is the language used. Each of ASP, JSP and PhP rely on separate languages. The code has deeper differences as well.&lt;br /&gt;&lt;br /&gt;ASP is based on a propriety code base from Microsoft. This is based on the .Net active server pages. For the most part, this means C# or VB (Visual Basic). C++ and a few other languages are less common but available.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.php.net/"&gt;PhP&lt;/a&gt; is a Perl based scripting language that integrates well with MySQL. As an open source framework, the LAMP (Linux, Apache, MySQL, PhP) package has offered serious levels of competition to its better funded rivals in a way that has allowed many small organisations to gain access to e-commerce - though not always securely.&lt;br /&gt;&lt;br /&gt;JSP is shorthand for Java Server pages and refers to a Java based framework that uses "Java Beans" in a manner reminiscent of .Net code. Like .Net, JSP is Object-Oriented, something that PhP can attempt to achieve through addons, but which is not quite there.&lt;br /&gt;&lt;br /&gt;See the following links for more detail:&lt;br /&gt;[1]&lt;a href="http://training.gbdirect.co.uk/courses/php/comparison_php_versus_perl_vs_asp_jsp_vs_vbscript_web_scripting.html"&gt; Active Web Sites and Comparison of Scripting Languages&lt;/a&gt;&lt;br /&gt;[2]&lt;a href="http://techrepublic.com.com/5208-11195-0.html?forumID=87&amp;amp;threadID=186182"&gt; jsp and microsoft asp&lt;/a&gt;&lt;br /&gt;[3]   &lt;a href="http://www.jguru.com/faq/view.jsp?EID=10596"&gt;What is the difference between JSP and PHP?  &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7420530401832090042?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7420530401832090042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7420530401832090042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7420530401832090042'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-10.html' title='Exercise 10: Part 10'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5315308073118261327</id><published>2009-06-16T09:03:00.002+10:00</published><updated>2009-06-16T13:36:24.319+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 9</title><content type='html'>&lt;span style="font-style: italic;"&gt;What are the similarities between JavaScript, VBScript and ZOPE’s DTML&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;To the average use, there should be little difference in whether JavaScript, VBScript or DTML has been used. The reality is of course a little different.&lt;br /&gt;&lt;br /&gt;JavaScript (JS) and VBScript (VBS) are each interpreted languages and will often display differently on different browsers. In some cases they may also not be supported by the system. When a web page containing JS or VBS is downloaded, the complete script sourece is sent to the user. As a result, the code can be reversed or altered at the client (one principle of secure coding is to never trust client systems).&lt;br /&gt;&lt;br /&gt;On the other hand, Zope has moded towards a server based language. DTML is implemented as a "&lt;span style="font-style: italic;"&gt;server-side&lt;/span&gt;" language (really a script) that is designed to run on the server and just return the output to the client.&lt;br /&gt;&lt;br /&gt;DTML commands are executed by Zope at the server. They are not sent to the client system. This means that the client can not intercept and change the code and it makes reverse engineering the site mroe difficult. As such, you recieve a dynamically constructed web page with fewer issues than JS or VBS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5315308073118261327?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5315308073118261327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-9.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5315308073118261327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5315308073118261327'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-9.html' title='Exercise 10: Part 9'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1734460637610638477</id><published>2009-06-16T09:02:00.001+10:00</published><updated>2009-06-16T09:44:38.352+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 8</title><content type='html'>&lt;span style="font-style: italic;"&gt;Why was XHTML developed? Do you think this addresses most of the HTML weaknesses&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.w3.org/"&gt;W3C &lt;/a&gt;states that "&lt;a href="http://www.w3.org/TR/xhtml1/#xhtml"&gt;XML™ is the shorthand name for Extensible Markup Language&lt;/a&gt; [&lt;a class="nref" href="http://www.w3.org/TR/xhtml1/#ref-xml"&gt;XML&lt;/a&gt;]".&lt;/p&gt;  &lt;p&gt;Simply put, XML was conceived as a  way to create a markup language with the power of SGML with little of SGML's inherent complexity. Consequently, &lt;abbr title="Extensible Hypertext Markup Language"&gt;XHTML&lt;/abbr&gt;, was producted as a "&lt;a href="http://www.w3.org/TR/xhtml1/#xhtml"&gt;&lt;span style="font-style: italic;"&gt;reformulation of HTML 4 as an &lt;/span&gt;&lt;abbr style="font-style: italic;" title="Extensible Markup Language"&gt; XML&lt;/abbr&gt;&lt;span style="font-style: italic;"&gt; 1.0 application&lt;/span&gt;&lt;/a&gt;".&lt;/p&gt;&lt;p&gt;The &lt;a href="http://www.w3.org/MarkUp/2004/xhtml-faq"&gt;W3C XML FAQ&lt;/a&gt; page details the majority of reasons why XHTML has been implemented and its multitude of benefits over simple HTML alone.  Others (such as Paul McDonald, [1]) also take up this banner. &lt;/p&gt;&lt;p&gt;Others however disagree [2]. The main issue is that XHTML must be well formed. There is far less room for error in XHTML than with HTML.&lt;/p&gt;&lt;p&gt;Not all issues have been solved, but it is rare that this will ever occur. The efficiency certainly warrants the implementation of XHTML in many applications.&lt;br /&gt;&lt;/p&gt;[1] &lt;a href="http://www.layouts4free.com/articles/view-article/49/3/0/"&gt;Paul McDonald (2007) "The Case for XHTML" http://www.layouts4free.com/articles/view-article/49/3/0/&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://hixie.ch/advocacy/xhtml"&gt;Ian Hickson (2007) "Sending XHTML as text/html Considered Harmful" http://hixie.ch/advocacy/xhtml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1734460637610638477?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1734460637610638477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1734460637610638477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1734460637610638477'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-8.html' title='Exercise 10: Part 8'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2970346530869022149</id><published>2009-06-16T09:00:00.001+10:00</published><updated>2009-06-16T09:52:48.127+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 7</title><content type='html'>&lt;span style="font-style: italic;"&gt;What are the differences between HTML and DHTML?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simply put, DHTML (or Dynamic HTM) is an extension to HTML that incorporates the addition of basic animated items, dynamic menus and similar additions to a basic HTML Web page. In order to achieve this, DHTML code incorporates style sheets (CSS) and JavaScript to produce a richer web experience.&lt;br /&gt;&lt;br /&gt;There is a downside. Javascript is not always available. Some older browsers and those with scripts disabled (or with plug-ins such as &lt;a href="http://noscript.net/"&gt;No-Script&lt;/a&gt;) will not benifit from the addition of these features. Many also do not use scripted languages from sites that they do not trust (most of the Web) as the one of the most common attacks has been via the browser of late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2970346530869022149?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2970346530869022149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2970346530869022149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2970346530869022149'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-7.html' title='Exercise 10: Part 7'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4073316189228224004</id><published>2009-06-15T20:20:00.001+10:00</published><updated>2009-06-15T20:46:59.229+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 6</title><content type='html'>&lt;span style="font-style: italic;"&gt;What is Customer Resource Management and why is it important to e-commerce&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.crm2day.com/ebusiness/"&gt;CRM Today &lt;/a&gt;has a e-business e-zine (or online journal) focused on the topic of customer relations for one simple reason, business is about suppliers fulfilling the needs of their customers. In today's market, we have moved into a globalized economy. This has both opened the doors of opportunity and also exposed many firms to increased competition. As a consequence, it has become more crucial than ever for a supplier to ensure that it manages and retains its clients.&lt;br /&gt;&lt;br /&gt;In hist article on client retention, Brown (1998) notes this point well. He notes:&lt;br /&gt;&lt;p&gt;"&lt;span style="font-style: italic; color: rgb(0, 0, 102);"&gt;After the purchase, customers go through an information-seeking activity, seeking confirmation or acknowledgement that their purchase was intelligent. The more costly the purchase, the greater the customer's motivation in achieving the affirmation. There is enormous value in speaking with the customer after the purchase, serving to reassure them that they have purchased wisely and truly are getting their money's worth&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;"&lt;/span&gt;. &lt;/p&gt;CRM is a means of achieving this end. This software (if used correctly) can aid the sales and marketing people in a firm in turning sales into returning clients. This is no less true in e-commerce than in the physical world. In-fact, it likely holds firmer with online clients being more fickle than bricks and mortar shoppers who get to know the individual the purchase from (which is demonstrated all too clearly in 's article [2]).&lt;br /&gt;&lt;br /&gt;As Jeffrey F. Rayport (of Harvard Business School) notes in Griffith (1999) when looking at the Internet and a comparision to shopping malls&lt;br /&gt;"&lt;span style="font-style: italic; color: rgb(102, 0, 0);"&gt;When malls first started, they tended to be grouped around big department stores. As time went on, they increasingly broke down into specialist shops, because it was easier for consumers to find what they wanted that way. The question on the Internet is: 'Do these stores get smarter or dumber the more products they take on?" I think they get dumber&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;CRM can be the solution to making e-commerce "smarter". The secret is not just have CRM, but using it wisely.&lt;br /&gt;&lt;br /&gt;[1]  Wendell J. Brown (Friday, June 19, 1998) "Retaining clients is as essential as getting new ones" The Business Review&lt;br /&gt;[2] Richard Webb (2008) "&lt;a href="http://www.newscientist.com/article/mg20026873.300-online-shopping-and-the-harry-potter-effect.html?full=true"&gt;Online shopping and the Harry Potter effect&lt;/a&gt;" (published 22 December 2008) Magazine issue 2687. New Scientist (http://www.newscientist.com)&lt;br /&gt;[3] Victoria Griffith (1999) "Tailored Marketing on the Internet: Does It Really Capture Customers?" Strategy+business, Fourth Quarter, Booz&amp;amp;Co USA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4073316189228224004?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4073316189228224004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4073316189228224004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4073316189228224004'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-6.html' title='Exercise 10: Part 6'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4814435112955681512</id><published>2009-06-15T20:19:00.002+10:00</published><updated>2009-06-15T21:09:03.602+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 10: Part 5</title><content type='html'>&lt;span style="font-style: italic;"&gt;# Why is the perception getting stronger that integration will become a critical factor in coming days? What is the role of ERP within the enterprise software architecture?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;For more than 15 years and in fields as synchronous to the Internet as publishing (Davenport, 1994) and as divergent as Benoit (2008) and Vogel/Barton(1998), authors have been noting the necessity of integrating systems.&lt;br /&gt;&lt;br /&gt;ERP or &lt;a href="http://www.eccouncil.org/docs/ERP.pdf"&gt;Enterprise Resource Planning &lt;/a&gt;is a means of managing operational resources. As more and more systems become the norm in an organisation with firms packing virtualised hosts into racks full of servers, the needs to be able to manage these systems effectively and efficiently will only increase.&lt;br /&gt;&lt;br /&gt;Add this to the existing but consistantly increasing need to improve all aspects of ones business by squeezing the last drops of efficency from all aspects of the organisation (from the warehouse to sales and all in between) and you start to get the reason for implementing an ERP.&lt;br /&gt;&lt;br /&gt;It is about taking scarce resources and making them go further.&lt;br /&gt;&lt;br /&gt;[1] Elisabeth Davenport &lt;span&gt;(1994) "&lt;span style="font-style: italic;"&gt;Perception of Economics in a Digital Publishing Environment: A Report of a Field Study&lt;/span&gt;" Interlending &amp;amp; Document Supply, Volume: 22, Issue: 4, Page: 8 - 16&lt;br /&gt;MCB UP Ltd&lt;br /&gt;&lt;/span&gt;[2] Jacques Benoit (2008) "&lt;a href="http://www.cooperpowereas.com/PDF/Meeting_IED_Integration_Cyber_Security_Challenges.pdf"&gt;Meeting IED Integration Cyber Security Challenges";  Cybectec Product and Technology Training Cooper Power Systems. &lt;/a&gt;&lt;br /&gt;[3]Joe Vogel, &amp;amp; Bob Barton, (1998) "SCADA SYSTEM AT GOULBURN VALLEY WATER", 61st Annual Water Industry Engineers and Operators’ Conference Civic Centre - Shepparton&lt;br /&gt;2 and 3 September, 1998&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4814435112955681512?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4814435112955681512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4814435112955681512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4814435112955681512'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-10-part-5.html' title='Exercise 10: Part 5'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5210669430517835692</id><published>2009-06-09T15:52:00.004+10:00</published><updated>2009-06-09T16:11:14.676+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Go to the website of IBM, Oracle, Microsoft and Sybase</title><content type='html'>In this exercise I have to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Visit the website of &lt;a href="http://www.ibm.com/us/en/"&gt;IBM&lt;/a&gt;, &lt;a href="http://www.oracle.com/index.html"&gt;Oracle&lt;/a&gt;, &lt;a href="http://www.microsoft.com/"&gt;Microsoft &lt;/a&gt;and &lt;a href="http://www.sybase.com.au/"&gt;Sybase &lt;/a&gt;and search for any mention of e-commerce associated with their database products.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Next,  review the suite or partnerships they list with related e-commerce offerings.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;And finally compare their products with open source products such as MySQL.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Part 1&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/Search/?q=e-commerce+database+products&amp;amp;v=16&amp;amp;en=utf&amp;amp;lang=en&amp;amp;cc=us&amp;amp;Search=Search"&gt;IBM &lt;/a&gt;has a wide range of products listed in this &lt;a href="http://www.ibm.com/Search/?q=e-commerce+database+products&amp;amp;v=16&amp;amp;en=utf&amp;amp;lang=en&amp;amp;cc=us&amp;amp;Search=Search"&gt;search&lt;/a&gt;. They tout WebSphere, Domino and DB/2 for a start. Next they talk of their expertise in Oracle, etc. They also upsel the &lt;a href="http://www-01.ibm.com/software/brandcatalog/soa/provider/Amazon%20Web%20Services/Amazon%20E-Commerce"&gt;Amazon Web E-Commerce Services&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://search.oracle.com/search/search?start=1&amp;amp;nodeid=&amp;amp;fid=&amp;amp;keyword=e-commerce+database+products&amp;amp;group=Oracle.com"&gt;Oracle &lt;/a&gt;push their database as a backend database through to a complete e-commerce solution.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://search.microsoft.com/results.aspx?form=MSHOME&amp;amp;mkt=en-US&amp;amp;setlang=en-US&amp;amp;q=e-commerce+database+products"&gt;Microsoft &lt;/a&gt;presents web service offerings, partner solutions, MS SQL, their B2B software and many e-commerce white papers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sybase.com.au/detail?id=1063620"&gt;Sybase&lt;/a&gt; has links to selected pages, but does not offer anywhere near the volume of material from the other sites.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part 2&lt;/span&gt;&lt;br /&gt;I am personally biased, MSSQL or Oracle - all based on the project and operation needs. Ignore ANYTHING on the websites, the BS factor is far too high.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part 3&lt;/span&gt;&lt;br /&gt;A comparison is simple, MySQL loses. It does have uses, but for my point of view, the capabilities of MySQL do not compare. I work with MSSQL and Oracle as they handle large databases. I have worked on databases of 68+ TB - MySQL does not handle anything close.&lt;br /&gt;&lt;br /&gt;So what comparision...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Click to go back to exercise 10&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5210669430517835692?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5210669430517835692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/go-to-website-of-ibm-oracle-microsoft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5210669430517835692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5210669430517835692'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/go-to-website-of-ibm-oracle-microsoft.html' title='Go to the website of IBM, Oracle, Microsoft and Sybase'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-3052496822937259257</id><published>2009-06-09T14:31:00.001+10:00</published><updated>2009-06-09T15:52:03.016+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Zope</title><content type='html'>In This question, we have to:&lt;br /&gt;&lt;ul style="color: rgb(102, 0, 204);"&gt;&lt;li&gt;List some application servers in competition with ZOPE. &lt;/li&gt;&lt;li&gt;Access the web and find the latest version of the application servers mentioned in the text.&lt;/li&gt;&lt;li&gt;When were they released?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can you make any conclusion about the release cycle of Internet software in comparison to other business software (e.g. spreadsheet, word processor, accounting packages)?&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.zope.org/Products/"&gt;Zope &lt;/a&gt;is  "&lt;span style="font-style: italic;"&gt;Z Object Publishing Environment&lt;/span&gt;" which is a Python based object-oriented web application server that has come about as a part of the open source movement. Zope 2 is an amalgum of  the following application frameworks into the Principia application server:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bobo,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Document Template, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;BoboPOS .&lt;/li&gt;&lt;/ul&gt;At the time of writing, the versions are as follows with the dates and download links for &lt;b&gt;Windows, Solaris, Linux :&lt;/b&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;   &lt;a href="http://www.zope.org/Products/Zope/2.11.3"&gt;Download Zope 2.11.3&lt;/a&gt; (2009-05-02) the current Zope 2 stable release. &lt;/li&gt;&lt;li&gt;   &lt;a href="http://www.zope.org/Products/Zope/2.10.8"&gt;Download Zope 2.10.8&lt;/a&gt; (2009-05-02) the current Zope 2 release from the previous stable branch. &lt;/li&gt;&lt;!-- &lt;li&gt;   &lt;a href="Zope3/3.3.1"&gt;Download Zope 3.3.1&lt;/a&gt; (2007-01-14) the current Zope 3 stable release  (more: &lt;a href="Zope3"&gt;Zope 3 Releases&lt;/a&gt; and &lt;a href="Zope3-Packages"&gt;Add-on Packages&lt;/a&gt;). &lt;/li&gt; --&gt;&lt;li&gt; &lt;a href="http://wiki.zope.org/zope3/Zope340#downloads" target="_blank"&gt;Download Zope 3.4.0&lt;/a&gt; (2009-01-29) the current Zope 3 stable release.  &lt;/li&gt;&lt;/ul&gt;(See the following &lt;a href="http://www.antipope.org/charlie/linux/shopper/161.zope.html"&gt;link for a further write-up on Zope&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;In "&lt;a href="http://www.linuxplanet.com/linuxplanet/reviews/1319/2/"&gt;The Zope Application Server Revisited, Installing and Configuring Zope&lt;/a&gt;" (Kevin Reichard, January 7, 2000), we see that Zope competes strongly where user access is required to be managed. This competes with WebDAV and IIS with the .Net framework directly, though ZOPE does integrate with IIS. Zope does not support COM and CORBA - a downside.&lt;br /&gt;&lt;br /&gt;It is a publishing framework. It can be used as a means of uploading files (e.g. images) onto the web and simplifying file sharing. This also lends it's use to blog's and wiki's.&lt;br /&gt;&lt;br /&gt;Zope differs from a standard web server in that it uses a database (instead of files). This is a standard Web 2.0 format. To this end it supports DTML (or Dynamic Text Markup Language) and Zope Page Templates (ZPT). ZPT is supposed to fiux many of the issues with DTML, though I have not investigated this personally.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://grok.zope.org/"&gt;Grok &lt;/a&gt;has developed as an enhanced framework for Zope.&lt;br /&gt;&lt;br /&gt;As for the release cycle, it is difficult to make comparisions. This is an exercise in itself as a quantitiavive time series and classification exercise. I do plan to do something along these lines in the future, but not now.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Click to go back to exercise 10&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-3052496822937259257?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/3052496822937259257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/zope.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3052496822937259257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/3052496822937259257'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/zope.html' title='Zope'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-6316511004576487572</id><published>2009-06-05T11:14:00.003+10:00</published><updated>2009-06-05T11:30:08.304+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Rates for Web Hosting</title><content type='html'>In my case, discovering the going rates for web site hosting is simple. I have a few domains hosted for companies I run.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sih1CLcLpEI/AAAAAAAACqE/HsyiTq7C3JI/s1600-h/Untitled.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/Sih1CLcLpEI/AAAAAAAACqE/HsyiTq7C3JI/s400/Untitled.jpg" alt="" id="BLOGGER_PHOTO_ID_5343649638166275138" border="0" /&gt;&lt;/a&gt;It does vary a good deal based on what you are seeking from a hosting provider as to what costs you will face. As an example, in the two extremes, I have both an application hosting provision and a simple web server hosting provision.&lt;br /&gt;&lt;br /&gt;The application hosting first off is with &lt;a href="http://www.zendesk.com/"&gt;Zendesk&lt;/a&gt;. This is a cloud based web help desk engine. This costs $190 (US) each month. This is of course more than a simple website.&lt;br /&gt;&lt;br /&gt;For hosting I use &lt;a href="http://www.whois.com/"&gt;Whois&lt;/a&gt;. They have dedicated ecommerce servers using Linux and Windows with databases attached.&lt;br /&gt;&lt;br /&gt;My costs per site average around $20 per month. This is for a large amount of storage, 20 MySQL databases, etc etc.&lt;br /&gt;&lt;br /&gt;The costs start around $4US a month, but then the more you want, the more you pay.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Click to return to question 10&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-6316511004576487572?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/6316511004576487572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/rates-for-web-hosting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6316511004576487572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/6316511004576487572'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/rates-for-web-hosting.html' title='Rates for Web Hosting'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lPXDlv0_iG8/Sih1CLcLpEI/AAAAAAAACqE/HsyiTq7C3JI/s72-c/Untitled.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-884924735685168745</id><published>2009-06-03T08:12:00.007+10:00</published><updated>2009-06-05T10:41:26.046+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise10'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>The main web servers</title><content type='html'>The main Web servers in use today and historically can be sourced using the &lt;a href="http://news.netcraft.com/archives/web_server_survey.html"&gt;Netcraft Web Server Survey&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As can be seen from the graph they produced (below), Apache still rules as the most common web server with Microsoft IIS second.&lt;br /&gt;&lt;br /&gt;&lt;img alt="top1m.png" src="http://news.netcraft.com/archives/2009/03/top1M.png" width="388" border="0" height="261" /&gt;&lt;br /&gt;&lt;img src="file:///C:/Users/CRAIGW%7E1.INF/AppData/Local/Temp/moz-screenshot-2.jpg" alt="" /&gt;&lt;br /&gt;&lt;table class="wikitable"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Vendor&lt;/th&gt; &lt;th&gt;Product&lt;/th&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;th&gt;No. Sites&lt;br /&gt;&lt;/th&gt; &lt;th&gt;%&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Apache&lt;/td&gt; &lt;td&gt;Apache&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;96,531,033&lt;/td&gt; &lt;td&gt;52.05%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Microsoft&lt;/td&gt; &lt;td&gt;IIS&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;61,023,474&lt;/td&gt; &lt;td&gt;32.90%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Google&lt;/td&gt; &lt;td&gt;GWS&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;9,864,303&lt;/td&gt; &lt;td&gt;5.32%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;nginx&lt;/td&gt; &lt;td&gt;nginx&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;3,462,551&lt;/td&gt; &lt;td&gt;1.87%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;lighttpd&lt;/td&gt; &lt;td&gt;lighttpd&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2,989,416&lt;/td&gt; &lt;td&gt;1.61%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Oversee&lt;/td&gt; &lt;td&gt;Oversee&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1,847,039&lt;/td&gt; &lt;td&gt;1.00%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Others&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;9,756,650&lt;/td&gt; &lt;td&gt;5.26%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt; &lt;td&gt;-&lt;/td&gt; &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;185,474,466&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;100.00%&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;From the Netcraft table above we see the Rusian nginx server has made a small inroad into the total number of installed systems.&lt;br /&gt;&lt;br /&gt;From the graph below we see that Apache has peaked and is losing ground to newer competitors. Microsoft IIS has a level of stability around 25-30% of the market.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="width: 426px; height: 232px;" src="http://news.netcraft.com/archives/2009/05/overallc.png" alt="Graph of market share for top servers across all domains, August 1995 - May 2009" align="middle" /&gt;&lt;br /&gt;&lt;br /&gt;Many newer servers have been appearing. These are reducing the share of Apache servers. These include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ruby's application server &lt;a href="http://mongrel.rubyforge.org/" title="Mongrel - Trac"&gt;Mongrel&lt;/a&gt;,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zope.org/" title="Zope.org"&gt;Zope&lt;/a&gt;&lt;a href="http://pike.ida.liu.se/" title="pike.ida.liu.se: Home"&gt;Pike&lt;/a&gt; (a Python based web server),&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://caudium.net/"&gt;Caudium,&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://erlang.org/" title="Erlang"&gt;Erlang&lt;/a&gt; based &lt;a href="http://yaws.hyber.org/" title="Yaws"&gt;Yaws&lt;/a&gt;, and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/salvia" title=""&gt;The Haskell coded Salvia&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;As a consequence, it is easy to see that Microsoft and the Apache foundation are leading the web server war. Google (with just over 5%) has made significant progress in this area as a late comer, but has a long way to go.&lt;br /&gt;&lt;br /&gt;Many "appliance" vendors are using Apache. Add to this the Linux and Unix market as well as other related or similar frameworks that offer Apache server by default, and it seems unlikely that Apache will lose the lead in the short term.&lt;br /&gt;&lt;br /&gt;Apache is also open source and free. IIS comes freely with Windows Server, but this adds an in initial cost through the requirement to buy the OS. This makes the use of IIS as an appliance less likely.&lt;br /&gt;&lt;br /&gt;Support for IIS is provided from Microsoft and a number of consulting firms. Apache is more widespread and less centralised. Although the Apache foundation releases the source code, the support is provided by a dispersed assortment of companies such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Red Hat&lt;/li&gt;&lt;li&gt;HP&lt;/li&gt;&lt;li&gt;Consultants, etc&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The Web server purchase price may or may not be a significant factor in budget considerations for a large e-commerce initiative. This all depends on the initiative. Appliance manufactorers are likely to be impacted as the OS and hence web server costs can be a significant addition to their cost, but in  a hosting company environment where server thousand servers can reside on the same system, the cost of the OS diminishes.&lt;br /&gt;&lt;br /&gt;The functionality and skillsets of individuals comes to be more of a deciding factor. For instance, if you have .Net developers you are likely to deploy IIS whereas a Ruby developer may go for any number of platforms from Apache to Mongrel.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Back to Question 10&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-884924735685168745?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/884924735685168745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/main-web-servers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/884924735685168745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/884924735685168745'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/main-web-servers.html' title='The main web servers'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7988668161788622670</id><published>2009-06-03T08:07:00.001+10:00</published><updated>2009-06-03T08:10:24.788+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exercise9'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 9 - PHP Code</title><content type='html'>I have listed the PHP code used for exercise 9 below:&lt;br /&gt;&lt;br /&gt;&amp;#60 ;?php&lt;br /&gt;echo "&amp;#60 ;HTML&gt;";&lt;br /&gt;echo "&amp;#60 ;HEAD&gt;&amp;#60 ;/HEAD&gt;";&lt;br /&gt;echo "&amp;#60 ;BODY&gt;";&lt;br /&gt;echo "&amp;#60 ;b&gt;This is the output to Exercise 9&amp;#60 ;/b&gt;";&lt;br /&gt;echo "&amp;#60 ;BR&gt;";&lt;br /&gt;echo "&amp;#60 ;BR&gt;";&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; if($card == "American") {&lt;br /&gt; $denum = "American Express";&lt;br /&gt; } elseif($card == "Master") {&lt;br /&gt; $denum = "Master Card";&lt;br /&gt; } elseif($card == "Visa") {&lt;br /&gt; $denum = "Visa";&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;echo "&amp;#60 ;BR&gt;";&lt;br /&gt;echo "&amp;#60 ;b&gt;Hi there&amp;#60 ;/B&gt;, &amp;#60 ;i&gt;", $name;&lt;br /&gt;echo ".&amp;#60 ;/i&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt; You have selected to buy&amp;#60 ;b&gt; ", $order;&lt;br /&gt;echo "&amp;#60 ;/font&gt;&amp;#60 ;/b&gt; from &amp;#60 ;i&gt;&amp;#60 ;b&gt;ça sent le&amp;#60 ;/B&gt;&amp;#60 ;/i&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt;";&lt;br /&gt;echo "You are connected from a server with IP Address: &amp;#60 ;b&gt;",$REMOTE_ADDR;&lt;br /&gt;echo "&amp;#60 ;BR&gt;&amp;#60 ;br&gt;&amp;#60 ;/b&gt;";&lt;br /&gt;echo "&amp;#60 ;br&gt;&amp;#60 ;blink&gt;YOU ARE DAFT!!!&amp;#60 ;/blink&gt;&amp;#60 ;br&gt;"; &lt;br /&gt;echo "&amp;#60 ;br&gt;&amp;#60 ;br&gt;";&lt;br /&gt;echo "&amp;#60 ;blink&gt;Beginning to drain funds to illegal overseas account...&amp;#60 ;/blink&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt;&amp;#60 ;br&gt;";&lt;br /&gt;echo "Processing ", $name;&lt;br /&gt;echo "'s ", $card;&lt;br /&gt;echo " card with number... ", $number;&lt;br /&gt;echo "&amp;#60 ;br&gt;&amp;#60 ;br&gt;";&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; if($card == "American") {&lt;br /&gt; $pattern = "/^([34|37]{2})([0-9]{13})$/";//American Express&lt;br /&gt; if (preg_match($pattern,$number)) {&lt;br /&gt; $verified = true;&lt;br /&gt; } else {&lt;br /&gt; $verified = false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; } elseif($card == "Dinners") {&lt;br /&gt; $pattern = "/^([30|36|38]{2})([0-9]{12})$/";//Diner's Club&lt;br /&gt; if (preg_match($pattern,$number)) {&lt;br /&gt; $verified = true;&lt;br /&gt; } else {&lt;br /&gt; $verified = false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; } elseif($card == "Master") {&lt;br /&gt; $pattern = "/^([51|52|53|54|55]{2})([0-9]{14})$/";//Mastercard&lt;br /&gt; if (preg_match($pattern,$number)) {&lt;br /&gt; $verified = true;&lt;br /&gt; } else {&lt;br /&gt; $verified = false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; } elseif($card == "Visa") {&lt;br /&gt; $pattern = "/^([4]{1})([0-9]{12,15})$/";//Visa&lt;br /&gt; if (preg_match($pattern,$number)) {&lt;br /&gt; $verified = true;&lt;br /&gt; } else {&lt;br /&gt; $verified = false;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if($verified == false) {&lt;br /&gt; //Do something here in case the validation fails&lt;br /&gt; echo "Credit card invalid. Please make sure that you entered a valid &amp;#60 ;em&gt;" . $denum . "&amp;#60 ;/em&gt; credit card ";&lt;br /&gt; &lt;br /&gt; } else { //if it will pass...do something&lt;br /&gt; echo "Your &amp;#60 ;em&gt;" . $denum . "&amp;#60 ;/em&gt; credit card is valid.&amp;#60 ;br&gt;";&lt;br /&gt;        echo "We have extracted ", rand(1000, 100000);&lt;br /&gt;        echo " dollars from your ", $denum;&lt;br /&gt;        echo ".&amp;#60 ;br&gt;&amp;#60 ;br&gt;";&lt;br /&gt;        echo "Your cat's piss... Sorry, ", $order;&lt;br /&gt; echo " will be delivered within 20 years. Promise!&amp;#60 ;br&gt;";&lt;br /&gt; echo "&amp;#60 ;br&gt;";&lt;br /&gt; echo "&amp;#60 ;br&gt;";&lt;br /&gt; }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;The rest was simple HTML.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Click &lt;/span&gt;&lt;a style="color: rgb(0, 0, 153); font-weight: bold;" href="http://itc565developersblog.blogspot.com/2009/01/exercise-9-web-form-design-and.html"&gt;here to go back &lt;/a&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;to Exercise 9.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7988668161788622670?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7988668161788622670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-9-php-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7988668161788622670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7988668161788622670'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/06/exercise-9-php-code.html' title='Exercise 9 - PHP Code'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1726820227137741260</id><published>2009-05-26T21:45:00.002+10:00</published><updated>2009-05-26T22:03:28.732+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>My Development Experience</title><content type='html'>My Development Experience has occurred over a large number of years and I do not remember half of the range of languages I have covered. I shall list a number of the programming languages and Web development tools I have used in prior experiences, but this is FAR from the totality of them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 51, 0);"&gt;Programming Languages I have experience with:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Intel Assembly&lt;/li&gt;&lt;li&gt;Sparc Assembly&lt;/li&gt;&lt;li&gt;C&lt;/li&gt;&lt;li&gt;Fortran&lt;/li&gt;&lt;li&gt;R (a statistical Programming language)&lt;/li&gt;&lt;li&gt;S-plus&lt;/li&gt;&lt;li&gt;SAS&lt;br /&gt;&lt;/li&gt;&lt;li&gt;C ++&lt;/li&gt;&lt;li&gt;C #&lt;/li&gt;&lt;li&gt;.Net (1.0, 2.0 3.5)&lt;/li&gt;&lt;li&gt;SQL (Oracle PL-SQL, T-SQL etc)&lt;/li&gt;&lt;li&gt;Fred&lt;/li&gt;&lt;li&gt;CGI (in a variety of ways)&lt;/li&gt;&lt;li&gt;TCL&lt;/li&gt;&lt;li&gt;SED/AWK&lt;/li&gt;&lt;li&gt;Many Shell Languages&lt;/li&gt;&lt;li&gt;DB2&lt;/li&gt;&lt;li&gt;PIC&lt;/li&gt;&lt;li&gt;SPICE&lt;/li&gt;&lt;li&gt;BASIC (ARG!)&lt;/li&gt;&lt;li&gt;PASCAL (ARGGGGGG!!!!)&lt;/li&gt;&lt;li&gt;javascript&lt;/li&gt;&lt;li&gt;Flash&lt;/li&gt;&lt;li&gt;PHP&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Perl&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There are more, but these are all I can remember for now.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 51, 0);"&gt;I have worked with:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XML&lt;/li&gt;&lt;li&gt;XBRL&lt;/li&gt;&lt;li&gt;HTML&lt;/li&gt;&lt;li&gt;UNIX Sockets&lt;/li&gt;&lt;li&gt;SQL Server - Stored procedures &amp;amp; DTS&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;On top of this I do extensive work with regards to code reversing and malware analysis these days.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 51); font-style: italic;"&gt;The Web application frameworks I use are simple for the most par&lt;/span&gt;t:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MS Visual Studio.Net&lt;/li&gt;&lt;li&gt;VI (Unix Text Editor)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Eclipse (Java and C)&lt;/li&gt;&lt;li&gt;Matlab (it has a web engine)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And I am finally getting into &lt;span style="color: rgb(153, 0, 0);"&gt;Ruby&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I mostly conduct code analysis (looking for security flaws in source code) and write reversed code functions (e.g. for cryptanalysis and in  Malware analysis). One of my job functions is to create graph diagrams, psuedo-code, C Code and CFGs (context free grammers) for packers (such as Themida).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1726820227137741260?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1726820227137741260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/my-development-experience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1726820227137741260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1726820227137741260'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/my-development-experience.html' title='My Development Experience'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-5228723512147849126</id><published>2009-05-26T12:42:00.004+10:00</published><updated>2009-05-26T13:00:56.388+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assessment'/><category scheme='http://www.blogger.com/atom/ns#' term='Assignment1'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Assessment item 1</title><content type='html'>This page links to the various sub-pages and posts associated with Assignment No.1.&lt;br /&gt;&lt;br /&gt;The first Assignment comprises of 11 exercises:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-1-analysis-of-online.html"&gt;Exercise 1&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-2-technology-and-evolution-of.html"&gt;Exercise 2 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-3-finding-some-common-ground.html"&gt;Exercise 3&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-4-chapter-2-review-questions.html"&gt;Exercise 4&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-5-binding-sockets-in-chat-room.html"&gt;Exercise 5&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/exercise-6-some-server-practice-with.html"&gt;Exercise 6&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-7-user-input-for-database.html"&gt;Exercise 7&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-8-php-and-mysql-database.html"&gt;Exercise 8&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-9-web-form-design-and.html"&gt;Exercise 9&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-10-application-server.html"&gt;Exercise 10&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/01/exercise-11-xml-introduction.html"&gt;Exercise 11&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span  lang="EN-US" style="color:black;"&gt;Ruby on Rails Workshops 1 to 4&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/ruby-on-rails-workshop-1.html"&gt;Workshop 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-2.html"&gt;Workshop 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-3.html"&gt;Workshop 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/workshop-4.html"&gt;Workshop 4&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span  lang="EN-US" style="color:black;"&gt;And the first Elevator Pitch.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itc565developersblog.blogspot.com/2009/04/elevator-pitch-1-on-progress-report-for.html"&gt;Elevator pitch 1 on progress report for assessment item 1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-5228723512147849126?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/5228723512147849126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/assessment-item-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5228723512147849126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/5228723512147849126'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/assessment-item-1.html' title='Assessment item 1'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-2000032224179208484</id><published>2009-05-26T09:19:00.003+10:00</published><updated>2009-05-26T11:37:08.587+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercise8'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><category scheme='http://www.blogger.com/atom/ns#' term='Exercises'/><title type='text'>Exercise 8 - The answers</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;a style="color: rgb(0, 0, 102);" href="http://itc565developersblog.blogspot.com/2009/01/exercise-8-php-and-mysql-database.html"&gt;Click Here to go back to the Exercise&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://integyrs.com/ITC565/exercise8.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;And Here for the answer...&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-2000032224179208484?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/2000032224179208484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/exercise-8-answers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2000032224179208484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/2000032224179208484'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/exercise-8-answers.html' title='Exercise 8 - The answers'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7713747147715440713</id><published>2009-05-25T22:28:00.002+10:00</published><updated>2009-05-25T22:33:08.686+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><title type='text'>When in Windows...</title><content type='html'>When working in a Windows environment (UNIX being "vi"), I have a definite preference for &lt;a href="http://www.ultraedit.com/"&gt;Ultra Studio&lt;/a&gt;. This IDE is combined with &lt;a href="http://www.ultraedit.com/"&gt;Ultra Edit&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShqPI8ZhisI/AAAAAAAACps/ud8Q4S2rFc0/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 303px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShqPI8ZhisI/AAAAAAAACps/ud8Q4S2rFc0/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5339737692016052930" border="0" /&gt;&lt;/a&gt;This is a great Hex/Text and script editor. I have their entire software range. A great addition of any Windows based coding environment.&lt;br /&gt;&lt;br /&gt;A plug and I am not even getting paid...&lt;br /&gt;&lt;img src="file:///C:/Users/CRAIGW%7E1.INF/AppData/Local/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7713747147715440713?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7713747147715440713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/when-in-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7713747147715440713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7713747147715440713'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/when-in-windows.html' title='When in Windows...'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lPXDlv0_iG8/ShqPI8ZhisI/AAAAAAAACps/ud8Q4S2rFc0/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-797949436491534138</id><published>2009-05-21T21:49:00.002+10:00</published><updated>2009-05-21T21:57:37.222+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Computing at the speed of Ruby</title><content type='html'>With this subject (ITC565) I have been working with and learning Ruby (and for that matter rails). I do a fair amount of algorithmic coding. This is mathematical and statistical (and cryptographic) coding. This requires each and every cycle.&lt;br /&gt;&lt;br /&gt;With Ruby you lose cycles. The argument is that you do not require speed for web based systems, but I have generally found this to be untrue for the clients I have worked with. Even companies such as eBay sacrifice security (by removing many of the SSL encapsulated pages and sending in clear text) for the sake of cycles.&lt;br /&gt;&lt;br /&gt;There are some beneficial aspects of Ruby. I do see this, but it is slow. Coming from a C background and foundation, I like the speed and simplicity of C (a type of purity).&lt;br /&gt;&lt;br /&gt;The nature of Ruby (in being an interpreted language and not compiled) has both benefits. In reversing code, it makes life a good deal simpler. For this reason alone I do not see a good deal of malicious code being based on Ruby.  It is far too simple and easy to reverse and analyse (one of my tasks).&lt;br /&gt;&lt;br /&gt;Now, if I can just find a way to have malware writers use Ruby...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-797949436491534138?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/797949436491534138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/computing-at-speed-of-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/797949436491534138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/797949436491534138'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/computing-at-speed-of-ruby.html' title='Computing at the speed of Ruby'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-4046218714318340351</id><published>2009-05-21T10:18:00.005+10:00</published><updated>2009-05-21T11:09:53.411+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><title type='text'>Workshop 1 - Setting up the model railway</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Topic objectives&lt;/span&gt;&lt;br /&gt;The first workshop is designed to&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install Ruby on Rails on your computer (InstantRails or Locomotive);&lt;/li&gt;&lt;li&gt;Learn about the Model View Controller (MVC) approach to Web application design;&lt;/li&gt;&lt;li&gt;Revise database techniques with MySQL &lt;/li&gt;&lt;li&gt;Learn how to use the Ruby on Rails development environment&lt;/li&gt;&lt;li&gt;Set up a focus group (like a study group for peer learning) to work on the Ruby on   Rails workshops via Interact tools&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Topic readings &lt;/span&gt;&lt;br /&gt;Various websites as listed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Discussion &lt;/span&gt;&lt;br /&gt;One way to learn a Web application framework is by building a project. It’s like driving a train – you can’t learn to do it by reading a book. In this workshop series we shall use the Online Taxi Booking System as the “train”, you the developers are the passengers, and the train rides the Rails under commands from Ruby.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Project&lt;/span&gt;&lt;br /&gt;The sample Ruby on Rails Project is the Online Taxi Booking System as briefly described in the subject outline with more details added later during session via the forum or CSU Interact. Use database design techniques and the model view controller design (MVC) approach. The database-driven website is developed and tested on your local PC using Ruby on rails and Web browser, before being migrated to a production site on the CSU network.&lt;br /&gt;&lt;br /&gt;The database called taxi has TWO tables called passenger_origin and passenger_destination:&lt;br /&gt;&lt;br /&gt;Passenger_origin:&lt;br /&gt;Name, Contact No., Suburb, Street, Street No., Building (Unit, house or business);&lt;br /&gt;&lt;br /&gt;Passenger_destination:&lt;br /&gt;Suburb, No. of passengers (1 to 4), taxi type, time required;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To do: &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download iTunes from &lt;a href="http://www.apple.com/itunes/download/"&gt;http://www.apple.com/itunes/download/&lt;/a&gt; and subscribe to the “Leraning Rails” Podcasts from &lt;a href="http://www.buildingwebapps.com/podcasts"&gt;http://www.buildingwebapps.com/podcasts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Install Ruby on Rails on your computer by using the material and downloads from &lt;a href="http://www.rubyonrails.org/"&gt;http://www.rubyonrails.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rather than get Ruby on Rails running manually, you use the pre-packaged solutions. These include everything in one bundle: Web server, database, Ruby, Rails, the works.&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;a. For OS X, there's Locomotive.&lt;/li&gt;&lt;li&gt;b. For Windows, there's Instant Rails.&lt;/li&gt;&lt;li&gt;Nothing listed for Linux in the workshop list...&lt;/li&gt;&lt;/ul&gt;I have selected a different option. Though I have started with a On Click Installer solution to get an idea for Ruby, I am going to go from the start and compile Ruby on Windows. I have a database and webserver ready, so I as usual will try the hard way. I find I learn more this way (if you ignore the frequent swearing). I do recommend that you go the pre-compiled option. The integration of Visual Studio 2008 and Cygwin is a slow and error prone process.&lt;br /&gt;&lt;br /&gt;The install of the pre-packaged version was completed in under 20 minutes. Compiling Ruby took over 9 hours and I still have a few bugs to iron out.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Challenge Problems: &lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;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 begin.&lt;/li&gt;&lt;li&gt;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;/li&gt;&lt;li&gt;What is Rails and how does it work with Ruby?&lt;/li&gt;&lt;li&gt;What is meant by “convention over configuration” in regards to the use of Rails in Web application development?&lt;/li&gt;&lt;li&gt;When did Model-View-Controller begin and where is it used?&lt;/li&gt;&lt;li&gt;Describe the steps involved with the MVC design approach.&lt;/li&gt;&lt;/ol&gt;Well I am signed up for the audio lessons at least:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSlEGwl9nI/AAAAAAAACpE/D93efwg1bTI/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 304px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSlEGwl9nI/AAAAAAAACpE/D93efwg1bTI/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5338072948293367410" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-4046218714318340351?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/4046218714318340351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/workshop-1-setting-up-model-railway.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4046218714318340351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/4046218714318340351'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/workshop-1-setting-up-model-railway.html' title='Workshop 1 - Setting up the model railway'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSlEGwl9nI/AAAAAAAACpE/D93efwg1bTI/s72-c/2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-1877975932713476651</id><published>2009-05-21T09:57:00.006+10:00</published><updated>2009-05-21T11:06:52.669+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workshop1'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Compiling Ruby on Windows</title><content type='html'>I have downloaded the source for Ruby (ruby-1.9.1-p129.zip) from the &lt;a href="http://itc565developersblog.blogspot.com/2009/05/installing-ruby.html"&gt;same site where I obtained the "One Click Installer&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;On downloading the initial stage involves extracting the source files:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSjOWLrN4I/AAAAAAAACo8/rxzzW8XbDpE/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 325px;" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSjOWLrN4I/AAAAAAAACo8/rxzzW8XbDpE/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5338070925208926082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This process requires cygwin to be installed. I learnt this when attempting to compile in Visual Studio 2008:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSnNaQ1kLI/AAAAAAAACpM/3btXS7O3z1g/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 227px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSnNaQ1kLI/AAAAAAAACpM/3btXS7O3z1g/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5338075307170959538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I will not go into the install and compile process here. Rather, I will recommend that you go to Rails site - the &lt;a href="http://rubyforge.org/frs/?group_id=904&amp;amp;release_id=17517"&gt;http://rubyforge.org/frs/?group_id=904&amp;amp;release_id=17517&lt;/a&gt; and use the complete package.&lt;br /&gt;&lt;br /&gt;It was a learning experience in compiling Ruby from source, but it is not one that I will repeat.&lt;br /&gt;&lt;br /&gt;MySQL and Apache are far simpler for this. Additionally, I found that compiling Ruby (and the other software) in Windows was far more problematic than under Linux (in this case SuSE and Redhat). The issue is &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;. There is a lot of work required to have Visual Studio 2008 and Cygwin talk nicely.&lt;br /&gt;&lt;br /&gt;Ah well, live and learn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-1877975932713476651?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/1877975932713476651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/compiling-ruby-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1877975932713476651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/1877975932713476651'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/compiling-ruby-on-windows.html' title='Compiling Ruby on Windows'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSjOWLrN4I/AAAAAAAACo8/rxzzW8XbDpE/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-389748831596036595</id><published>2009-05-21T08:35:00.009+10:00</published><updated>2009-05-21T09:38:38.702+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Running Ruby</title><content type='html'>Last night I installed and configured Ruby for my system using the "&lt;span style="color:#000066;"&gt;One Click Install&lt;/span&gt;" process. I must admit, they have made this increadibly simple. So now to running it. I have my copy stored and accessed under a path that I know (creature of habit).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSK_gWvHeI/AAAAAAAACoc/8vJFAU7LUow/s1600-h/1.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 227px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338044281962569186" border="0" alt="" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSK_gWvHeI/AAAAAAAACoc/8vJFAU7LUow/s400/1.jpg" /&gt;&lt;/a&gt;From this menu I have selected first the SciTE editor function/compiler/etc. The Language menu demonstrates a good range of supported languages as you can clearly see from the dropdown menu below. Far more than Ruby.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSMB9qhLWI/AAAAAAAACok/ubgIJapt8IU/s1600-h/4.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 120px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338045423701536098" border="0" alt="" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSMB9qhLWI/AAAAAAAACok/ubgIJapt8IU/s400/4.jpg" /&gt;&lt;/a&gt;So to start I have loaded a sockets based sample program designed to connect to a remote system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSK_SzlpKI/AAAAAAAACoU/E3KWNpRARCs/s1600-h/2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 336px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338044278325486754" border="0" alt="" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSK_SzlpKI/AAAAAAAACoU/E3KWNpRARCs/s400/2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Enteriong "F5" or Go runs the program. This is basically a debugging operation. I did this a few times (as displayed below) chaning the hosts and ports to see how this worked.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSNnXPNpwI/AAAAAAAACos/NeL5D4cXW9k/s1600-h/5.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338047165733119746" border="0" alt="" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSNnXPNpwI/AAAAAAAACos/NeL5D4cXW9k/s400/5.jpg" /&gt;&lt;/a&gt; I eventually connected to an SSH server on TCP 22 at work - though with no crypto logic built in, the communication was sparse. The server (SSH) version was returned.&lt;br /&gt;&lt;br /&gt;Next, I opened the IRB (Interactive Ruby Console).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSK_XCN9mI/AAAAAAAACoM/rLzOvgfZXfA/s1600-h/3.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 201px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338044279460591202" border="0" alt="" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShSK_XCN9mI/AAAAAAAACoM/rLzOvgfZXfA/s400/3.jpg" /&gt;&lt;/a&gt;Based on the examples in the book and on the sample code, I created a small sockets based program to conntect to the SSH server again. As you can see from the diagram above, this connected and the server returned the version of SSH running on this system, "SSH-2.0-OpenSSH_4.3".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Of course, directly after this, the system returned a Protocol Mismatch error. &lt;a href="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSQblnqqOI/AAAAAAAACo0/ijxo5NQ1g6o/s1600-h/19.jpg"&gt;&lt;img style="WIDTH: 176px; HEIGHT: 40px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338050261970233570" border="0" alt="" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSQblnqqOI/AAAAAAAACo0/ijxo5NQ1g6o/s400/19.jpg" /&gt;&lt;/a&gt; This was expected. I have only made a simple clear text connection to the SSH server. My code does not include any of the required protocols for talking to an SSH server as yet. It just sets up the initial handshake and recieves the SSH version from the server.&lt;/p&gt;&lt;p&gt;From here I could progress a number of ways. For instance, I could use the version information to determine if my app could "talk" with the SSH server (i.e. I may or may not include code for SSH 1.x) and drop unsupported protocols.&lt;/p&gt;&lt;p&gt;Or as I shall do, I could write the version to a database with the host information. This then gives me a very simple SSH version scanner in a few minutes of coding. To make this useful, I would have to save the output (at present it is just displaying on screen). The reason is that I could then walk away. If the process crashed, I can come back and continue from the last tested system (or IP).&lt;/p&gt;&lt;p&gt;To do this, I would add a simple for, next loop. Add a start and finish IP address and scan from one to the other. IP addresses can be displayed in a number of ways. For instance, the IP address 203.57.21.5 used before can be displayed as the value, 3,409,515,781.&lt;/p&gt;&lt;p&gt;This is calculated as:&lt;br /&gt;&lt;span style="color:#003333;"&gt;&lt;em&gt;(203 * 256 * 256 * 256) + (57 * 256 * 256) + (21 * 256) + 5 = 3 409 515 781&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;As a consequence, scanning the values, 3,409,515,777 to 3,409,515,786 is the same as scanning the IP range: 203.57.21.1 to 203.57.21.10.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Over the coming weeks I shall expand this project and include code in Ruby that acts as a simple SSH version scanner.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-389748831596036595?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/389748831596036595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/running-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/389748831596036595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/389748831596036595'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/running-ruby.html' title='Running Ruby'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/ShSK_gWvHeI/AAAAAAAACoc/8vJFAU7LUow/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7543548791629167919</id><published>2009-05-20T22:30:00.010+10:00</published><updated>2009-05-21T08:31:42.327+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Installing Ruby</title><content type='html'>Here I am continuing with the install of Ruby. Being a C/C++ and Assembly dinosaur, I have not touched Ruby before today. Then again, I reverse malware, write anti-packer software etc. None of this has any relation to what Ruby does. However, we all need to learn new things.&lt;br /&gt;&lt;br /&gt;The initial stage is the acceptance of the license.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShP5GkmA6hI/AAAAAAAACnM/j5pwk2q5lRM/s1600-h/1.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337883874661820946" border="0" alt="" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShP5GkmA6hI/AAAAAAAACnM/j5pwk2q5lRM/s400/1.jpg" /&gt;&lt;/a&gt;I note the use of Visual C++ in the license, so l.ater in the week when I load this into Microsoft VC 2008 and compile the source, I hope to have few issues. You need to accept the code - or you get no further. I so far understand the source of the compiler better than the "easy" 4GL that is Ruby.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/ShP5G6_hgaI/AAAAAAAACnU/fyG6izBIIFM/s1600-h/2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337883880674394530" border="0" alt="" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/ShP5G6_hgaI/AAAAAAAACnU/fyG6izBIIFM/s400/2.jpg" /&gt;&lt;/a&gt;I have (see above) selected "Ruby Gems" as an additional option to install as these are mentioned in a couple of papers and books on Ruby that I have [Ullman, 2009). I have not used these, but some of the examples seem interesting in the books.&lt;br /&gt;&lt;br /&gt;The default install location is displayed next.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShP5HHYFYPI/AAAAAAAACnc/QGeBvj4GANY/s1600-h/3.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337883883998634226" border="0" alt="" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShP5HHYFYPI/AAAAAAAACnc/QGeBvj4GANY/s400/3.jpg" /&gt;&lt;/a&gt;This is "C:\Ruby". I standardise my Windsows systems using "C:\Programming" to hold most of the languages and comilers I have under a common directory (this is just me and I find this easier).&lt;br /&gt;&lt;br /&gt;As a result, I have selected the directory displayed below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShP5HGgyk3I/AAAAAAAACnk/aM_ICbMzd_Q/s1600-h/4.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337883883766715250" border="0" alt="" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShP5HGgyk3I/AAAAAAAACnk/aM_ICbMzd_Q/s400/4.jpg" /&gt;&lt;/a&gt;The same goes for my Sub Menues. I will install these under a path I seledct where possible. There are a couple of these to be updated. "Open Office" has set its own on an update (though it was correct). The same with a couple others.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lPXDlv0_iG8/ShP5HfaLUrI/AAAAAAAACns/KCB4F0Pv6nk/s1600-h/5.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337883890449863346" border="0" alt="" src="http://2.bp.blogspot.com/_lPXDlv0_iG8/ShP5HfaLUrI/AAAAAAAACns/KCB4F0Pv6nk/s400/5.jpg" /&gt;&lt;/a&gt;Now that Ruby is selected under the "Start Menu" "Programming Tools" folder, it is time to install it. I have selected "install" and as you can see, it is running.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShP9edvOIgI/AAAAAAAACn8/v_ezvgM6HNE/s1600-h/6.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337888683184759298" border="0" alt="" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShP9edvOIgI/AAAAAAAACn8/v_ezvgM6HNE/s400/6.jpg" /&gt;&lt;/a&gt;And it not only ran, but it installed correctly first time. This is positive.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShP8BvuFRvI/AAAAAAAACn0/B93zU3QcEg8/s1600-h/7.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 310px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5337887090283988722" border="0" alt="" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShP8BvuFRvI/AAAAAAAACn0/B93zU3QcEg8/s400/7.jpg" /&gt;&lt;/a&gt;Once completed you have a finalization screen and (if selected) you can read the Readme. I generally think this a good thing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSEmYlD4iI/AAAAAAAACoE/AwCJ3uOgE8I/s1600-h/9.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 253px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5338037253308670498" border="0" alt="" src="http://3.bp.blogspot.com/_lPXDlv0_iG8/ShSEmYlD4iI/AAAAAAAACoE/AwCJ3uOgE8I/s400/9.jpg" /&gt;&lt;/a&gt;See:&lt;br /&gt;Ullman, Larry (2009) "&lt;span style="color:#990000;"&gt;&lt;em&gt;Ruby, Visual Quickstart Guide&lt;/em&gt;&lt;/span&gt;" Peachpit Press&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7543548791629167919?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7543548791629167919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/installing-ruby_20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7543548791629167919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7543548791629167919'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/installing-ruby_20.html' title='Installing Ruby'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/ShP5GkmA6hI/AAAAAAAACnM/j5pwk2q5lRM/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-7637816207860024272</id><published>2009-05-20T20:38:00.003+10:00</published><updated>2009-05-20T21:28:47.228+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='general'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>Blog Linking</title><content type='html'>&lt;a href="http://www.blogger.com/profile/11814609335702014472"&gt;Grant &lt;/a&gt;asked about why my page did not have a "links to this post", section on my blog.&lt;br /&gt;&lt;br /&gt;This feature is known as "Back Linking". Google - Blogger have an &lt;a href="http://help.blogger.com/bin/answer.py?answer=42533"&gt;FAQ on this topic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In my case, I am not using this as I can search in Google for linked pages easily (manually). As such I do not use it.&lt;br /&gt;&lt;br /&gt;To configure this feature, you have to go to your Blogger configuration. From here, select the "settings" tab as shown in the image below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShPf9LpGw9I/AAAAAAAACm8/9zG-XpvsFVU/s1600-h/1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 256px;" src="http://4.bp.blogspot.com/_lPXDlv0_iG8/ShPf9LpGw9I/AAAAAAAACm8/9zG-XpvsFVU/s400/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5337856225554383826" border="0" /&gt;&lt;/a&gt;Scrolling down, you come to a section on Backlinking. As you can see from the image below, I have this set to "Hide":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShPf9WeK4JI/AAAAAAAACnE/0GGly9Og-4s/s1600-h/2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 112px;" src="http://1.bp.blogspot.com/_lPXDlv0_iG8/ShPf9WeK4JI/AAAAAAAACnE/0GGly9Og-4s/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5337856228461306002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Google Searching for links to your pages&lt;/span&gt;&lt;br /&gt;Most (in fact all and more) of the above functionality can be obtained from the use of a Google search. In this case, we need the "link:" command.&lt;br /&gt;&lt;br /&gt;The “&lt;span style="color: rgb(204, 0, 0);"&gt;link:&lt;/span&gt;” command syntax is used to list those webpages with hyperlinks to a specified webpage.&lt;br /&gt;&lt;br /&gt;In my case;&lt;br /&gt;“&lt;a href="http://www.google.com.au/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=6yj&amp;amp;q=link%3Ainformation-defense.com&amp;amp;btnG=Search&amp;amp;meta="&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;link:information-defense.com&lt;/span&gt;&lt;/a&gt;” is used in order to display the list of webpages containing hyperlinks to my companies website (&lt;a href="http://www.information-defense.com"&gt;http://www.information-defense.com&lt;/a&gt;) and homepage in this example.&lt;br /&gt;&lt;br /&gt;Personally, I do NOT place a good deal of faith in this command (or that of bloggers backlink function). They do NOT work well at all.&lt;br /&gt;&lt;br /&gt;If we take the search, "link:sansforensics.wordpress.com" the return rate is between 240 and 250 links at the time of posting. The reality is that I have no idea how many pages link to this, just that I could find over 1,000 that do. Hence the rate of success for this command is dismally low.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: It is essential that there are no white-spaces entered between the "link:" and the web page URL following the command. This will be treated as a separate item if the whitespace is included.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;Long, Johny (2005), "&lt;span style="font-style: italic;"&gt;Google Hacking for Penetration Testers&lt;/span&gt;" Syngress&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-7637816207860024272?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/7637816207860024272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/blog-linking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7637816207860024272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/7637816207860024272'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/blog-linking.html' title='Blog Linking'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lPXDlv0_iG8/ShPf9LpGw9I/AAAAAAAACm8/9zG-XpvsFVU/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-514794011622163004.post-924730177070404777</id><published>2009-05-20T08:30:00.000+10:00</published><updated>2009-05-20T08:30:02.721+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITC565'/><category scheme='http://www.blogger.com/atom/ns#' term='CSU'/><title type='text'>p0wf (Passing Fingerprinting of Web Content Frameworks)</title><content type='html'>“&lt;span style="font-style: italic; font-weight: bold; color: rgb(102, 0, 0);"&gt;p0wf&lt;/span&gt;” stands for “Passing Fingerprinting of Web Content Frameworks”.&lt;br /&gt;&lt;br /&gt;Traditional OS fingerprinting used the OS Kernel to identify a system it is communicating with. This was based on the idea that if one can identify the kernel, one can target daemons that tend to be associated with it. The web has become almost an entirely separate OS layer of its own, and especially with AJAX and Web 2.0, new forms of RPC and marshaling are showing up faster than anyone can identify.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 51, 0);"&gt;p0wf &lt;/span&gt;was designed to analyze these streams and determine just which frameworks are being exposed on what sites from the traffic alone. The primary distinction with p0wf is that it can analyze “sniffed” traffic and not alert the site being monitored of its presence.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 0, 153);"&gt;(Material in this post has been extracted from some of my books and other papers).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/514794011622163004-924730177070404777?l=itc565developersblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itc565developersblog.blogspot.com/feeds/924730177070404777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/p0wf-passing-fingerprinting-of-web.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/924730177070404777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/514794011622163004/posts/default/924730177070404777'/><link rel='alternate' type='text/html' href='http://itc565developersblog.blogspot.com/2009/05/p0wf-passing-fingerprinting-of-web.html' title='p0wf (Passing Fingerprinting of Web Content Frameworks)'/><author><name>Dr Craig S Wright GSE</name><uri>http://www.blogger.com/profile/08415993939211056384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-NsnvOGGy5E0/TqCy_3bVqCI/AAAAAAAAFHY/_wJnnUJZV5M/s220/276291_1455443729_1771437217_q.jpg'/></author><thr:total>0</thr:total></entry></feed>
