Knowledge base

From IS480
Jump to navigation Jump to search

Welcome to IS480 Knowledge Base

Here is where you can share and learn little knowledge about a tool, a feature, how to, industry domain, management practices, etc that you tried and learn in IS480. As this wiki is growing the organization of this knowledge changes. Please use links and references as much as possible.

Wiki is inherently used to crowd source knowledge. If you have an interesting read, or read something here that needs to be better organised, just go ahead and update the wiki, then send an link to TA or course coordinator on your contributions. Try not to copy things, better to link them or paraphrase and credit the original contributor.


Online Tutorials

  1. Code School teaches web technologies
  2. Tree House. Learn how to build websites and apps
  3. Code Combat. Learn to code by playing a game
  4. Code Academy. Learn to code interactively
  5. Khan Academy. Learn almost anything
  6. Dev Bootcamp. Web developer in 9 weeks
  7. Coursera. Course online

Managing Project

This section contains tutorials and links on how to manage your project. It is divided into different segments.

Start up (lean) approach

The Lean Startup Principles - Eric Ries.

  1. Entrepreneurs are everywhere MVP
  2. Entrepreneurship is management
  3. Validated learning
  4. Innovation accounting
  5. Build Measure Learn

Do Things That Don't Scale - Paul Graham. How startup focus on recruiting users by providing insanely great experience. Worry about scaling later.

How to Get Startup Ideas - Paul Graham. Ideas solve problems you want to solve, can build yourself and few others realise it is worth doing.

Agile development

Agile Manifesto Twelve principles

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

Managing stakeholders

Instead of generic principles, please share your experience in IS480 for each of the following.

Team members

Sponsors or clients

Supervisors and Course coordinator

OS & Networking

This section contains tutorials and links on setting up the various server platforms. If your server platform contains its own installation manual, please follow the guide provided by the vendor. Should there be any discrepancies in the information provided, or if you wish to suggest new material for the section, please contact the TAs.

Setting Up IIS On Windows

Setting Up Your First IIS Website

How to Setup Internet Information Services (IIS) on Windows XP

Setting Up Apache On Windows

Installation of Apache Tomcat on Windows

Setting Up Apache On Linux

Installing and Configuring Apache Web Server

Setting Up Apache Tomcat On Linux

Networking Basics

Key Concepts in Computer Networking

Configuring IP Addresses

Assigning Static IP Address (Windows XP)

Setting up Cron jobs on Linux (Groupers)

How to set up cron jobs on Linux?

SQL & MySQL Databases

This section provides tutorials and links to resources that involve the setup of SQL databases on Windows. If you have material pertaining to installing SQL on other Operating Systems (OS X, Linux), please let the TAs know.

Setting Up SQL Server 2008 on Windows

A Step By Step Guide To Installing SQL Server 2008

Setting Up MySQL Databases on Windows

There are two ways to install MySQL on Windows. The first way it to do a typical install using a MySQL installer, and the second is to use WAMP (Windows, Apache, MySQL, PHP) as an environment to run mySQL. If you are developing your application in PHP, or wish to use phpmyadmin to administrate the database, then you might consider running WAMP as opposed to a default install. If you need to have more manual control over your database, then you might consider using the default install.

Default Install

Official MySQL Reference Guide

Step By Step - Installing MySQL

Installing MySQL With Apache for PHP

WAMP Server Install

Installing WAMP Server on Windows

Comparing Other WAMP Platforms

MS SQL Server Tutorials

SQL Tutorials

Making Reports with Mysql (Groupers)

An article that gives insight on how to generate reports using Mysql and PHP. http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/

Java & JSP

Setting Up A Java Development Environment on Windows

Setting Up and Getting Started in Java Programming

Setting up Eclipse

UML Diagrams for NetBeans 7.0 with yWorks UML doclet

MVC Architecture

Model-View-Controller overview

JSP Tutorials

Collection of a large number of JSP Tutorials + Sample Codes

Uploading Files in JSP

File Upload Tutorial

Apache POI

Library for making and editing Microsoft Office (PPT,Word,Excel) files

Apache Solr

Powerful Java library for searches in databases and documents. Based on Lucene.

Apache Jena

A free and open source Java framework for building Semantic Web and Linked Data applications.

Apache Lucene


Introduction to PHP

Overview of PHP

PHP Tutorials

Collection of PHP Tutorials

A PHP Tutorial done by Team Verendus

CodeIgniter (CI) by Team BOLT

PDF Generation with CI

  • This link uses DomPDF to generate PDF documents from web pages. It supports not just simple HTML but also CSS and XHTML. [1]

CI Plug-in to save as Microsoft Word format

  • This link speaks about how to save HTML to Microsoft Word document format. [2]

Sending Email with CI email class

  • Using CI email class, this saves programmers' effort to recreate email function manually. [3]

Generate a CI configuration file

  • This article speaks on how does one generate a configuration file using CI class. [4]

Form Validation

  • Form validation and code savings made easy using CI class. [5]


  • This class is especially useful when user password needs to be encrypted before writing to database. [6]

Authentication in CI

  • Authentication in CI using sessions. [7]

FCK Editor for CI

  • Incorporate a FCK editor in CI. [8]

Pagination in CI

  • Achieve pagination in your view using CI class [9]


Javascript is a browser-run scripting language that allows interactivity between the user and the browser. Some basic information on Javascript can be found at

Javascript Snippets

Sites that offer Javascript scriptlets.

Troubleshooting Javascript

Using FireBug on Mozilla

Javascript Thumbnail Viewer - HighSlide JS (Groupers)

Cool javascript-based thumbnail viewer that makes thumbnails more interactive.

Site that features many examples on how to use Highslide JS

Javascript charting libraries

Some links to javascript charting libraries

Javascript and Media Queries

enquire.js is a lightweight, pure JavaScript library for responding to CSS media queries.


CSS Selectors tutorial


C# interactions with MS SQL Server


Video Tutorials by Stanford

Swift Programming Developer's Notes


Introduction to AJAX

The technology that brings desktop application interactivity to the browser. Simple Introduction to AJAX

AJAX Snippets & Tutorials

AJAX & Javascript Using jQuery

Kijuuki's Knowledge Base

Version Date Link
V1.0 28 Aug 09 [10]

Team Pages

Team BOLT Sharing

Team Kudos Sharing

Team Autobots Sharing

Flash Action Script 3.0

Flash Tutorials

Create, Drag a Mask with Actionscript 3.0

Tweening with Actionscript 3.0

ActionScript 3 Basics : Tween

Basic ActionScript 3

Introduction to Flash-PHP-MySQL Communication with ActionScript 3

Video Tutorials on Flex, Air, Flash with ActionScript 3

Sample Tutorials - Drag & Drop 1

Sample Tutorials - Drag & Drop 2

Site to download vector graphics

Angular JS

Angular JS is javascript MVC framework that adheres to the separation of concerns design principle and allows for parallel front and back end development. This is a useful javascript framework that makes development clearer and code more maintainable. However, there is a moderate learning curve so here are some resources that we used that helped us learn and use Angular.

Basic Angular Use

Angular's Official Tutorial

This is really helpful since there is are a lot of examples and code snippets. Angular's team also does a good job providing a lot of explanation for every line of code.

Angular Design Patterns

This stackoverflow thread gives a very good idea of the design patterns and best practices behind Angular. A must read before deciding on whether or not to use the framework.

Advanced Angular Use

Advanced Angular Design Patterns

This site explains advanced angular design patterns through a infinite canvas!

Karma Testing Tool

This is the official site for the Karma testing tool that is frequently used with Angular. We are currently learning Karma - Will update this section with more resources as we progress!

Technical Issues We Faced

Tips on Angular JS integration with Spring & Spring Security

Spring security usually only works with Frameworks that supports it. Integrating Spring Security with Angular was difficult. Here is a resource we used that helped us in the integration.

Joomla [from NeűWorks. Inc]


IonCube is a software specifically designed to protect software or scripts written using the PHP programming language from being altered in any way. This means they cannot be viewed, changed, or run on unlicensed computers.

Quite often hackers can pirate programs and use them for nefarious purposes or worse, distribute one’s program to the world. The encoding IonCube provides protects one from hackers stealing their software, and it also cloaks it so that they can't even see it. IonCube PHP Encoder is able to protect one intellectual property by encoding the PHP source code.

PHP.ini File

Given the wide attack surface and history of vulnerabilities in PHP, we need to carefully deploy and monitor PHP applications and build in layers of security. One layer that can be used to improve security is the PHP configuration settings themselves. The php.ini file contains several parameters that allow one to control the behavior of all PHP applications.

PHP.ini is very useful and it is a configuration file that is used to customize behavior of PHP at runtime. This enables easy administration in the way one administer Apache web server using configuration files.

The Settings in which upload directory, register global variables, display errors, log errors, max uploading size setting, maximum time to execute a script and other configurations is written in this file.

Zend Extension Manager

The Zend Extension Manager (ZEM) manages all the Zend product line extensions; every Zend extension is compiled for each PHP version. The ZEM selects the proper extension version, depending on the PHP runtime. In addition, the ZEM also exposes the C language API that reflects all the information for the managed extensions and is responsible for managing the licenses of these extensions.

Because the loading order of extensions is significant, there is a special 'load order' file that specifies the loading order of managed extensions. If the file is not supplied, the declaration order in the PHP INI files is significant.

Summary Summary.jpg

Learning Points

• IonCube Loader is not "open source”, hence it is difficult to tell what's wrong if it doesn't work. While using IonCube, the team faces issues while trying to integrate it into the project. As IonCube is only compatible with several different version of php, the team encountered installation and compatibility issues while working it around in the project. As the team is using an earlier version of PHP 5, and IonCube only support PHP 5.0.3 onwards, the team then does the necessary actions to resolve the problems.

• Even though it looks the team a great amount of effort to identify and resolve the issues, but this also creates a good opportunity for the team to pick up different skill set and knowledge.

• Before installing IonCube, the team understands that there are hosts that are non-compatible with it. Therefore, the team has reviewed through many web hosting and their compatibility before making the decision to choose the right one to work with.

SCRUM Methodology (Team Sociétale)


Scrum Training PowerPoint

Project Management

For the project management aspect of Team uClaim's project solution, the team has decided to implement the Unfuddle software to aid them in developing a holistic project management solution. Unfuddle is encompasses Subversion hosting and implements tickets to track our progress with program bugs and milestones to track what we achieved

This one stop solution is much more efficient than alternate solutions.

For example-->

  • Subversion hosting: Sourceforge
  • File sharing: Dropbox
  • Project management: Google docs

Team uClaim has also written a product review for Unfuddle.

Oracle Database

Team uClaim chose to use the Oracle Database 10G Express as their database management system for their project.

Oracle Database 10g Express Edition (Oracle Database XE) is an entry-level, small-footprint database based on the Oracle Database 10g Release 2 code base that's free to develop, deploy, and distribute; fast to download; and simple to administer.

Oracle Database XE can be installed on any size host machine with any number of CPUs (1 database per machine), but XE will store up to 4GB of user data, use up to 1GB of memory, and use one CPU on the host machine.

Oracle offers superior, out the box enterprise software integration, better performance (especially for larger database) and better security features than MySQL.

However, the initial learning curve for mastering the Oracle database was rather steep and substantial time was required to read up on forums and to experiment with the database and connecting it to our web interface. Thus, developing and maintaining the database was an ever-ongoing learning process as whenever you updated or added a functionality, further tweaking of the codes (e.g. SQL) and connection logic was required.

Hence, Team uClaim has developed an Oracle Installation Bible to aid you in your installation and use of the Oracle Database.

Adobe Flex

Help Guide

Flex Developer Center is a one stop area where developers of flex can come together to learn the tools and possibilities with flex technologies.


There are two ways to learn flex, either through 1 hour session or a week worth of tutorials and lessons conducted on line as follows:

Flex application in one hour teaches users to basic of flex application and can learn it within 1 hour.

Flex in a week teaches users the basic components of flex

Flex 4 vs FlashBuilder 4

Often that is a misconception between flex and flash builder. Simply, flex is the API and flash builder is the IDE use to create flash websites along with the flex api. Flex can be downloaded for free and flash builder 4 can be downloaded for free as education version but will require payment once it is commercialize.

Printing using Flex 4 API

Flex have given a set of API to do printing but it is not easily customizable. Invoking it directly will be like printing the screen shot of the application. [11]

The Flex API includes 4 classes to handle printing to the client side: [[12]]

  • FlexPrintJob
  • PrintDataGrid
  • PrintAdvancedDataGrid
  • PrintOLAPDataGrid
  • FlexPrintJobScaleType

There is 4 basic steps required to handle printing[13]:

  1. Create and initiate a new instance of the FlexPrintJob
  2. Start the print job (The operating system will display the Print dialog box)
  3. Add one or more objects to the print job and specify how to scale them (Each object will be printed on a new page)
  4. Send the print job to the printer

Below is an example:

  • Single Page Printing [14]
  • Multiple Page Priting [15]

Learning Curve

The learning curve for flex is relatively steep at the start as it uses flash builder own form of language. It takes a while getting use to but the Learning links and guides given by adobe are relatively comprehensive. This has help the team learn much about how to use flash builder. We will say it is some sort similar to visual studio where it uses aspects like handlers. One good aspect is that it has drag and drop designers that allows users to create fast interface designs. A user simply have to declare their methods as services and it can be invoked by the objects drag by a user. This is a simple way flex has introduce that requires minimal coding. For our team, as we dive deeper into the project, we realize that we no longer depend much on the flex ease of coding as we had certain events that we wanted to custom code ourselves. There are alot of trial and errors but the efforts paid off.

Django with Google App Engine

Part 1: Configuring Google App Engine

Set up or sign in to your google account at https://appengine.google.com/.

Create an application.

Refer to Programming Google App Engine Chapter 15: Deploying and Managing Applications for more details. This chapter is crucial for understanding how django works with google app engine.

Book Reference for Django: All books can be found at NLB

  • Programming Google App Engine by Dan Sanderson
  • Using Google App Engine by Charles Severance

Part 2: Download Python

The standard way to get python is from http://www.python.org/

A better option is to download python(x,y) from http://www.pythonxy.com/. Python (x,y) comes with many modules installed for you.

Once you installed python(x,y), under applications, select "Eclipse". Eclipse is an integrated development environment.

From Eclipse, create a new project. Select New -> Project -> Pydev -> Pydev Google App Engine Project

Part 3: Configuring and Learning about Django

Download the Google App Engine Django Helper to bootstrap the development. The Google App Engine Django Helper has all the preloaded django modules mapped to google app engine. The Google App Engine Django Helper can be downloaded at http://code.google.com/p/google-app-engine-django/.

Visit http://www.djangoproject.com/ to look at the documentation for Django.

Book Reference for Django: All books can be found at NLB

  • Pro Jango by Alchin Marty
  • Django 1.0 Website Development by Ayman Hourieh
  • Beginning Django E-commerce by Jim Mcgaw
  • Python Web Development with Django by Jeff Forcier

FusionCharts: Stunning Charts in Flash & JavaScript for Web and Enterprise

FusionCharts Logo.png

FusionCharts v3 helps you create animated & interactive charts for web & enterprise applications. It is the industry's leading enterprise-grade charting component that functions seamlessly on PCs, Macs, iPads, iPhones and a majority of other mobile devices.

FusionCharts leverages Flash and JavaScript (HTML5) to create stunning charts, and works with both XML and JSON data. It can be integrated with any server-side technology (ASP, ASP.NET, PHP, JSP, ColdFusion, Ruby on Rails etc.) and database. FusionCharts is used by 19,000 customers and 400,000 users in over 110 countries to add "wow" to their applications.

Please visit FusionCharts Website for more details.

Learning and Configuration FusionCharts

On FusionCharts's main website, there are a lot of helpful demos of the chart package. From them, you can actually learn how things are supposed to work with FusionCharts and how to integrate it into your own application or website. One of the best that FusionCharts can offer you is the flexibility of technical language since it can be integrated with most web languages, ASP, ASP.NET, PHP, JSP, ColdFusion, Ruby on Rails etc.

With regards to configuration, please see the Online Documentation.

CK Editor

CK Editor.png

CK Editor brings rich editor features to your products and websites, providing your users with powerful tools to make creating Web content easier than ever and accessible to anyone.

Please visit CK Source Website for more details.

Learning and Configuration of CK Editor

When start learning the CK Editor, you should first see its tutorials.

Please see and learn from the CK Editor tutorials here.

With regards to configuration and guides, please see the Online Guides and Documentation.

Twitter Integration

Twitter Logo


Twitter is one of the most commonly used and well known social media platform with 200 millions users in 2011. Because of its easy and simple yet useful way of sharing information platform, a lot of applications on web and mobile are built around Twitter.

Development Cycle

Twitter connect has 2 methods and it encourages to use OAuth 2.0 method since 2011 because of reliability, performance and security reasons. Before connecting to Twitter, developers are required to register application with Twitter and get the consumer and consumer secret keys which will be used in OAuth connection. Developers can get the tweet feed using Twitter Search API. Although Search API doesn't need Twitter sign in, it has a limit to the number of API calls in a minute. So, it is encouraged to sign in with Twitter if the application will use Search API calls significantly. Twitter provides a very handy console to test out the API syntax and availability as well.

Our application 3DSocializer ( wiki, application) used Twitter Connect and shows tweets around SMU on simplified 3D model.


  • Official Twitter Developers Home Page is here.
  • Official Twitter API console is here.
  • Official Twitter RESTful API Resources is here.
  • Official Twitter RESTful Search API is here.
  • Official Twitter Post Status Resources is here.
  • Tutorial on Twitter Connect and Post Status is here.

Points to take note

  • Although Twitter is a major social network platform, it can have occasional downtime. When Twitter is down, whole or part of application may stop working. So, it is advisable to take significant consideration to handle the Twitter downtime.
  • Twitter stored keys in sessions after user sign in. It is important to handle the session keys properly in creating and clearing them.

Germanium Web

GermaniumWeb Logo


GermaniumWeb is a platform for developing 3D in-building applications easily for the web. The GermaniumWeb API enables you to add 3D building functionality on your web page. More precisely, the API enables your JavaScript to use the GermaniumWeb plugin. It is the plugin that allows you to embed a 3D building complex on your web page, in a manner analogous to the Adobe Flash Player plugin enabling you to embed videos.

3D Development Flow

We need to develop 3D models on 3DsMax 2010 version. Then we have to export the building into .DAE files with OpenCollada Exporter. At the time of writing this post (2011 November), OpenCollada can support only 3DsMax 2010 version. Germanium Building Composer will compile those .DAE files and export to .xlcl files. Browser with Germanium Plugin can render the 3D models and your application is ready to use. Although unlicensed application can run without any obstacles, developers are advisable to register the application and obtain the API key to use full strength of the Germanium API. It is quite easy for developers to pick up GermaniumWeb API because of their sample applications and interactive and comprehensive sample codes.

3D Modelling Flow


  • Official GermaniumWeb Plugin Download page is here.
  • Official GermaniumWeb Building Composer Download is here.
  • Official GermaniumWeb Developers home page is here.
  • Official GermaniumWeb interactive samples is here.
  • Official GermaniumWeb API docs is here.
  • Download OpenCOLLADA exporter here.

Points to take note

  • Although GermaniumWeb enables developer to create 3D applications on Web, we need to know that only Windows can support the plugin. Moreover, there is no mobile support version yet. However, we heard they are working on an awesome feature to enable on mobile devices as mobile technologies are improving.
  • Developers need to consider the application's type before they implement on GermaniumWeb because it is intensively-resource-and-processing power-hungry API.

Java Swing

Swing Tutorial

This document helps people unfamilliar in Java Swing pick up quite easily: Java Swing Tutorial

Swing Resources

These websites give more information about Swing Architecture:

Text to Speech


http://www.oddcast.com/home/demos/tts/tts_example.php 2011-2012_Term_2#Bazinga used the voice ‘Julie’.

Neural Network on C#

A one-line description of neural network is a computer system modeled on the human brain and nervous system. This model simulates the way our brain takes in inputs i.e information from our surroundings, processes the inputs, then produces an output in the form of a solution or answer. This network is leveraged on by M.O.O.T to execute gender recognition and machine learning.

Structural Overview


The structure of an artificial neural network is as shown above. It comprises of an input layer, an output layer, as well as configurable number of hidden layers. Having more hidden layers will add dimension to the machine learning, but the trade-off is learning will take more time. The back propagation algorithm forms the basis of artificial neural network. Configuring a neural network can be summarized in 7 steps [1]:

  1. Initialise the network with small random weights
  2. Present an input pattern to the input layer of the network
  3. Feed the input pattern forward through the network to calculate its activation value
  4. Take the difference between desired output and the activation value to calculate the network’s activation error
  5. Adjust the weights feeding the output neuron to reduce its activation error for this input pattern
  6. Propagate an error value back to each hidden neuron that is proportional to their contribution of the network’s activation error
  7. Adjust the weights feeding each hidden neuron to reduce their contribution of error for this input pattern
  8. Repeat steps 2 to 7 for each input pattern in the input collection
  9. Repeat step 8 until the network is suitably trained


The neural network library [2] consists of 6 main entities: Neuron, Layer, Network, IActivationFunction, ISupervisedLearning, and IUnsupervisedLearning.
The diagram below illustrates the relationship of the entities with their abstract and superclasses:


M.O.O.T's Usage

  • Neurons represent the parameters that we want the system to consider in determining gender: height, shoulder width, whether shopper is wearing long skirt, and whether shopper is hanging a bag on her arm
  • All parameters passed in are converted to 2 decimal places or represented in terms of boolean: 0 for false and 1 for true
  • Output is set to be 0 for female and 1 for male
  • Based on image taken in by Kinect sensor, we transpose the joints depth values to measurements and pass them into the network
  • Network will produce output 0 or 1, represented as female or male

Other possibilities

Neural network can also be leveraged on to do face detection [3]. We are also at the midst of exploring passing in raw values of joints as captured by Kinect to let the network processes them instead of converting them to measurement values before passing the parameters into the neural network.


  1. Training Neural Network using Backward Propagation: http://dynamicnotions.blogspot.sg/2008/09/training-neural-networks-using-back.html
  2. Explanation and demo of Neural Networks on C by Code Project: http://www.codeproject.com/Articles/16447/Neural-Networks-on-C
  3. Face Recognition using Neural Network and Other Additional Information on Neural Network Library: http://franck.fleurey.free.fr/NeuralNetwork/
  4. AForge.NET http://code.google.com/p/aforge/

Liferay portal

Liferay Portal is the world's leading open-source portal for the enterprise. Its built in web content management system (Liferay WCM) comes with extensive web, portal and workspace publishing features. Liferay WCM also leverages Liferay Portal's system of role-based authorizations, single sign-on, web services support, theming, dynamic navigation and dynamic social collaboration functionality.

Liferay VS Sharepoint

System Requirements Liferay Portal 6.1 SharePoint 2007
Application Server J2EE IIS/.Net
Approximate Cost Also available in an Enterprise Edition with professional support. 4000 - 40.000
Database MySQL MSSQL
License Open Source Closed Source
Operating System Platform Independent Windows Only
Programming Language Java C#
Root Access No Yes
Shell Access Yes Yes
Web Server Any IIS
Audit Trail Yes Yes
Captcha Yes No
Content Approval Yes Yes
Email Verification Free Add On Free Add On
Granular Privileges Yes Yes
Kerberos Authentication Yes Yes
LDAP Authentication Yes Yes
Login History Yes Yes
NIS Authentication No Yes
NTLM Authentication Yes Yes
Pluggable Authentication Yes Yes
Problem Notification Yes Yes
Sandbox Yes Yes
Session Management Yes Yes
SSL Compatible Yes Yes
SMB Authentication No Yes
SSL Logins Yes Yes
SSL Pages Yes Yes
Versioning Yes Yes
Drag-N-Drop Content Yes Yes
Email To Discussion Yes Yes
Friendly URLs Yes Yes
Image Resizing Yes Costs Extra
Macro Language Yes Yes
Mass Upload Yes Yes
Prototyping Yes Yes
Server Page Language Yes Yes
Site Setup Wizard Yes No
Style Wizard Limited Yes
Static Content Export Yes No
Clipboard No Yes
Content Scheduling Yes Yes
Content Staging Yes Yes
Trash No Yes
Web Statistics Yes Yes
Web-based Style/Template Management Yes Yes
Web-based Translation Management Yes Yes
Workflow Engine Yes Yes
Content Syndication (RSS) Yes Yes
FTP Support Limited Yes
iCal Yes No
UTF-8 Support Yes Yes
XHTML Compliant Yes Yes
Metadata Yes Yes
Extensible User Profiles Yes Yes
Interface Localization Yes Yes
Multi-lingual Content Yes Yes
Multi-lingual Content Integration Yes Yes
URL Rewriting Yes Yes
Contact Management Yes Free Add On

Spring Framework

Spring is an open source framework created to address the complexity of enterprise application development. One of the chief advantages of the Spring framework is its layered architecture, which allows you to be selective about which of its components you use while also providing a cohesive framework for J2EE application development.

Advantages of Spring Framework

  • Spring has layered architecture. Use what you need and leave you don't need now.
  • Spring Enables POJO Programming. There is no behind the scene magic here. POJO programming enables continuous integration and testability.
  • Dependency Injection and Inversion of Control Simplifies JDBC
  • Open source and no vendor lock-in.

Spring Features

  • Lightweight:

spring is lightweight when it comes to size and transparency. The basic version of spring framework is around 1MB. And the processing overhead is also very negligible.

  • Inversion of control (IOC):

Loose coupling is achieved in spring using the technique Inversion of Control. The objects give their dependencies instead of creating or looking for dependent objects.

  • Aspect oriented (AOP):

Spring supports Aspect oriented programming and enables cohesive development by separating application business logic from system services.

  • Container:

Spring contains and manages the life cycle and configuration of application objects.

  • MVC Framework:

Spring comes with MVC web application framework, built on core Spring functionality. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI. But other frameworks can be easily used instead of Spring MVC Framework.

  • Transaction Management:

Spring framework provides a generic abstraction layer for transaction management. This allowing the developer to add the pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. Spring's transaction support is not tied to J2EE environments and it can be also used in container less environments.

  • JDBC Exception Handling:

The JDBC abstraction layer of the Spring offers a meaningful exception hierarchy, which simplifies the error handling strategy. Integration with Hibernate, JDO, and iBATIS: Spring provides best Integration services with Hibernate, JDO and iBATIS


The Java Persistence API (JPA) is a standard API for accessing databases from within Java applications. The main advantage of JPA over JDBC (the older Java API for interacting with databases) is that in JPA data is represented by classes and objects rather than by tables and records as in JDBC. Using plain old Java objects (POJO) to represent persistent data can significantly simplify database programming.

A JPA implementation (sometimes referred to as a JPA provider) is needed in order to interact with a relational database such as Oracle, DB2, SQL Server or MySQL. The popular JPA implementations are Hibernate, TopLink, EclipseLink, Open JPA and DataNucleus. These implementations are Object Relational Mapping (ORM) tools. The mapping bridges between the data representation in the relational database (as tables and records) and the representation in the Java application (as classes and objects).

ObjectDB is the only database management system with built in support of the Java Persistence API (JPA). By interacting with ObjectDB using standard JPA you can keep your application portable. The unique benefit of using ObjectDB is that the overhead of an intermediate ORM layer is eliminated. That simplifies and accelerates the development process and makes your application run much faster.


Enterprise JavaBeans (EJB) is a managed, server-side component architecture for modular construction of enterprise applications. The EJB specification is one of several Java APIs in the Java EE specification. EJB is a server-side model that encapsulates the business logic of an application. The EJB specification intends to provide a standard way to implement the back-end 'business' code typically found in enterprise applications (as opposed to 'front-end' interface code). Such code addresses the same types of problems, and solutions to these problems are often repeatedly re-implemented by programmers. Enterprise JavaBeans are intended to handle such common concerns as persistence, transactional integrity, and security in a standard way, leaving programmers free to concentrate on the particular problem at hand. To deploy and run EJB beans, a Java EE Application server can be used, as these include an EJB container by default. Alternatively, a standalone container such as OpenEJB can be used.

Types of EJB

An EJB container holds two major types of beans:

  • Session Beans that can be either "Stateful", "Stateless" or "Singleton" and can be accessed via either a Local (same JVM) or Remote (different JVM) interface or directly without an interface,in which case local semantics apply. All session beans support asynchronous execution for all views (local/remote/no-interface).
  • Message Driven Beans (also known as MDBs or Message Beans). MDBs also support asynchronous execution, but via a messaging paradigm.

Yii Framework

Yii Logo

Yii Framework is an open source web application development framework written in PHP. It has the extremely optimized performance and it is a good choice for web application development projects. Its high and impressive performance while comparing with other PHP-based frameworks have drew very positive attention. Its popularity and adoption continues to grow at an ever increasing rate.

Yii has the features like MVC,DAO, SQL database connection, authentication and role-based access control. It is light weight and has powerful caching support. Yii is much faster because it is using lazy loading technique. It does not enable a functionality until or unless that has been invoked for the first time. For example, it does not create an object unless the object is called for the first time. Other frameworks suffer from the performance hit because they would enable a functionality no matter it is used or not during a request.

How to Create Custom Yii Applications

Yii Widget

Yii is a wonderful framework that gives generated codes for the developer. It allows us to display data in a table or different formats as widgets by creating custom widget. It is possible to use different kinds of extensions and widgets as per the requirements and generate meaningful and visually appealing widgets on your website. Yii is purely object oriented, architecturally clean and very simple to edit or customize the Yii based applications, since it has a very simple code structure.


This section contains tutorials and links on ASP.NET and some resources we have used in our project.

MVC 4 Framework

The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller. The ASP.NET MVC framework provides an alternative to the ASP.NET Web Forms pattern for creating MVC-based Web applications. The ASP.NET MVC framework is a lightweight, highly testable presentation framework that (as with Web Forms-based applications) is integrated with existing ASP.NET features, such as master pages and membership-based authentication.


For ASP.NET pages, views can be created in .aspx or by using Razor, a view engine. We chose to use Razor as it allows us to interact with our models easily.

Setting up Intranet Sites

This tutorial will guide you through linking your application with Internet Information Services (IIS) which will host your application.


Signal R is an ASP.net library that allows us to add real-time functionality into our project.


DBpedia is a crowd-sourced community effort to extract structured information from Wikipedia and make this information available on the Web. DBpedia allows you to ask sophisticated queries against Wikipedia, and to link the different data sets on the Web to Wikipedia data.

DBpedia allows any user to query against wikipedia entities for example: Russia as a country. Justin Bieber as a singer This is one of the example link:

DBpedia contains the following datasets for users to query against

DBpedia Spotlight

DBpedia Spotlight is a tool for automatically annotating mentions of DBpedia resources in text, providing a solution for linking unstructured information sources to the Linked Open Data cloud through DBpedia. DBpedia Spotlight recognizes that names of concepts or entities have been mentioned (e.g. "Michael Jordan"), and subsequently matches these names to unique identifiers (e.g. dbpedia:Michael_I._Jordan, the machine learning professor or dbpedia:Michael_Jordan the basketball player). It can also be used for building your solution for Named Entity Recognition, Keyphrase Extraction, Tagging, etc. amongst other information extraction tasks.

Text annotation has the potential of enhancing a wide range of applications, including search, faceted browsing and navigation. By connecting text documents with DBpedia, our system enables a range of interesting use cases. For instance, the ontology can be used as background knowledge to display complementary information on web pages or to enhance information retrieval tasks. Moreover, faceted browsing over documents and customization of web feeds based on semantics become feasible. Finally, by following links from DBpedia into other data sources, the Linked Open Data cloud is pulled closer to the Web of Documents.

Rich Data Format(RDF)

RDF is a directed, labeled graph data format for representing information in the Web. RDF is often used to represent, among other things, personal information, social networks, metadata about digital artifacts, as well as to provide a means of integration over disparate sources of information.

Simple Protocol and RDF Query Language(SPARQL)

SPARQL (pronounced "sparkle", an acronym for Simple Protocol and RDF Query Language) is an RDF query language, that is, a query language for databases, able to retrieve and manipulate data stored in Resource Description Framework format. It was made a standard by the RDF Data Access Working Group (DAWG) of the World Wide Web Consortium, and is recognized as one of the key technologies of the semantic web. On 15 January 2008, SPARQL 1.0 became an official W3C Recommendation, and SPARQL 1.1 in March, 2013.

SPARQL allows for a query to consist of triple patterns, conjunctions, disjunctions, and optional patterns.

Implementations for multiple programming languages exist. "SPARQL will make a huge difference" making the web machine-readable according to Sir Tim Berners-Lee in a May 2006 interview. There exist tools that allow one to connect and semi-automatically construct a SPARQL query for a SPARQL endpoint, for example ViziQuer.[10] In addition, there exist tools that translate SPARQL queries to other query languages, for example to SQL and to XQuery. SPARQL City's SPARQLverse also allows queries directly against non-SPARQL databases such as MongoDB and Cassandra, representing their data as though it is RDF.

Web Ontology Language(OWL)

The Web Ontology Language OWL is a semantic markup language for publishing and sharing ontologies on the World Wide Web. OWL is developed as a vocabulary extension of RDF (the Resource Description Framework) and is derived from the DAML+OIL Web Ontology Language. This document contains a structured informal description of the full set of OWL language constructs and is meant to serve as a reference for OWL users who want to construct OWL ontologies.

Gurobi Optimizer

Gurobi Optimizer


The Gurobi Optimizer is a state-of-the-art solver for mathematical programming. It includes the following solvers: linear programming solver (LP solver), quadratic programming solver (QP solver), quadratically constrained programming solver (QCP solver), mixed-integer linear programming solver (MILP solver), mixed-integer quadratic programming solver (MIQP solver), and mixed-integer quadratically constrained programming solver (MIQCP solver). The solvers in the Gurobi Optimizer were designed from the ground up to exploit modern architectures and multi-core processors, using the most advanced implementations of the latest algorithms. To help set you up for success, the Gurobi Optimizer goes beyond fast and reliable solution performance to provide a broad range of interfaces, access to industry-standard modeling languages, flexible licensing together with transparent pricing, and outstanding, easy to reach, support.

Language Agnostic

Gurobi supports interfaces for a variety of programming and modeling languages:

  • Object-oriented interfaces for C++, Java, .NET, and Python
  • Matrix-oriented interfaces for C, MATLAB®, and R
  • Links to standard modeling languages: AIMMS, AMPL, GAMS, and MPL
  • Links to Excel through Premium Solver Platform and Risk Solver Platform

Numerous Options For Deploying Your Optimization Models

In addition to solving models locally on one machine, Gurobi can also seamlessly offload computation to other machines. This opens up a range of solution and deployment options:

  • Leverage the power of multiple machines to reduce solve times for a single model, using distributed optimization
  • Run on as many machines as you need, when you need them, using Gurobi Cloud
  • Offload optimization jobs from multiple clients to one or more servers, locally or in the cloud, while taking advantage of built-in queuing, load-balancing and fail-over capabilities, using Compute Server

How To Implement It

Step 1: Download the library from the webpage - click here!
Step 2: Install the package on your computer
Step 3: Apply for license through registered account (Academic's free) - click here!
Step 4: Input license details into Gurobi command window
Step 5: Import generated library into your project
Step 6: Build your model
Step 7: Run your model with the Gurobi environment

Gurobi Documentation & API

Detailed product manuals and examples for the different languages - click here

Team Try Hard Linear Programming Model Implementation Example

Do check out our linear programming model here

Amazon Web Service (AWS)

Amazon Web Services is a collection of remote computing services, also called web services, that make up a cloud computing platform offered by Amazon.com. These services are based out of 11 geographical regions across the world.

AWS IS429 Cloud Computing Presentation

IS429 AWS slides these are the slides about AWS that we got from IS429, under Prof Boesch. It showcases most of their basic products as well as how to configure the AWS Instances.

AWS Marketplace

AWS Marketplace

AWS Marketplace is an online store that helps customers find, buy, and immediately start using the software and services that run in the EC2 cloud. (For Team Try Hard, the Gurobi Cloud Server we start and stop are found in the Marketplace, select the server and chose


AWS Documentation

Documentation of each service provided by AWS is shown on this site. Mainly AWS EC2.



SDKs for most programming languages and OS can be found on this page. With the SDK, we're able to manipulate the servers/instances that we own switching them on and off on-demand etc (Command line commands can be found on the OS installation at the top of this page)


Java Installation

Above is the Java installation guide, the other programming languages guides can be googled and implemented. Steps to installation:

  1. Get your ID & Secret Keys from your AWS Account
  2. Store it in the appropriate locations, (Windows - <YOURCOMPUTER/.aws>)
  3. Download the Library, .Jar, .dll, .so and run it!


Code Examples

Sample codes for the different platforms can be found on this page.

Ionic Framework

Ionic Framework is a free and open source framework that offers a library of mobile-optimized HTML, CSS and JS components, gestures and tools for building highly interactive apps. It is built with Sass and optimized for AngularJS.
This is a good framework to use if you are building a mobile application on top of a web application since both can be developed using AngularJS. This framework allows developers to create mobile applications that is compatible for both iOS and Android.


Ionic is focused mainly on the look and feel, and UI interaction of your app. That means that they aren't a replacement for PhoneGap or your favorite Javascript framework. Instead, Ionic simply fits in well with these projects in order to simplify one big part of your app: the front end. We recommend reading Where does the Ionic Framework fit in? to get a good understanding of Ionic's goals.

Download Package

Click here to download the Ionic package to begin using it.


Click here to view documentation of Ionic.

Getting Started with Ionic

1. Install Ionic

First, install Node.js. Then, install the latest Cordova and Ionic command-line tools. Follow the Android and iOS platform guides to install required platform dependencies.

$ npm install -g cordova ionic

2. Start a project

Create an Ionic project using one of our ready-made app templates, or a blank one to start fresh.

$ ionic start myApp tabs

3. Run it

Use the Ionic tool to build, test, and run your apps (or use Cordova directly). Make sure to substitute ios with android to build for Android.

Then, try Ionic View to share your apps with testers and clients, or to easily test on new devices.

$ cd myApp

$ ionic platform add ios
$ ionic build ios
$ ionic emulate ios

After getting the app to run, you should refer to the Documentation here to modify your pages to your requirements.


React Tutorial Guide

Please refer to the following url for a React tutorial prepared by Team Five Stones of AY2018-19 Term 1:

React Tutorial