Difference between revisions of "Knowledge base"
Line 522: | Line 522: | ||
[[Image:NeuralNetworkDiagram.png|center|alt=text|Structure of neural network]] | [[Image:NeuralNetworkDiagram.png|center|alt=text|Structure of neural network]] | ||
− | 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: | + | 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 |
+ | <ref>http://dynamicnotions.blogspot.sg/2008/09/training-neural-networks-using-back.html</ref>: | ||
#Initialise the network with small random weights | #Initialise the network with small random weights | ||
#Present an input pattern to the input layer of the network | #Present an input pattern to the input layer of the network | ||
Line 534: | Line 535: | ||
=== Library === | === Library === | ||
− | The neural network library consists of 6 main entities: Neuron, Layer, Network, IActivationFunction, ISupervisedLearning, and IUnsupervisedLearning.<br> | + | The neural network library <ref>http://www.codeproject.com/Articles/16447/Neural-Networks-on-C</ref> consists of 6 main entities: Neuron, Layer, Network, IActivationFunction, ISupervisedLearning, and IUnsupervisedLearning.<br> |
The diagram below illustrates the relationship of the entities with their abstract and superclasses: | The diagram below illustrates the relationship of the entities with their abstract and superclasses: | ||
[[Image:NeuralNetworkDiagram.GIF|center|alt=text|Structure of neural network]] | [[Image:NeuralNetworkDiagram.GIF|center|alt=text|Structure of neural network]] | ||
+ | |||
+ | === 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 <ref>http://franck.fleurey.free.fr/NeuralNetwork/</ref>. 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. | ||
+ | |||
+ | References: {{reflist}} |
Revision as of 14:13, 17 September 2012
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.
Contents
- 1 OS & Networking
- 2 SQL & MySQL Databases
- 3 Java & JSP
- 4 PHP
- 5 Javascript
- 6 C#
- 7 AJAX
- 8 Team Pages
- 9 Flash Action Script 3.0
- 10 Joomla [from NeűWorks. Inc]
- 11 SCRUM Methodology (Team Sociétale)
- 12 Project Management
- 13 Oracle Database
- 14 Adobe Flex
- 15 Django with Google App Engine
- 16 FusionCharts: Stunning Charts in Flash & JavaScript for Web and Enterprise
- 17 CK Editor
- 18 Twitter Integration
- 19 Germanium Web
- 20 Java Swing
- 21 Text to Speech
- 22 Neural Network on C#
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
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
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
PHP
Introduction to PHP
Overview of PHP
PHP Tutorials
Collection of PHP Tutorials
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]
Encryption
- 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
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
- W3Schools Javascript Introduction
- What Can Javascript Do
- Basics Of Javascript
- World's Most Misunderstood Language
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
C#
- Visual Studio 2008 & C# Resource
- Visual Studio 2008 & C# Resource
- C# Station
- Using GridView
- DataSet tutorials
- C# and VB syntax reference
C# interactions with MS SQL Server
- Storing & Retrieving Image using C# and SQL Server
- Get autonumber Primary Key after inserting Record
- Get autonumber Primary Key after inserting Record
- How to use SqlDataReader for C#
AJAX
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
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
Joomla [from NeűWorks. Inc]
IonCube
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.
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)
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.
Learning
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]:
- Create and initiate a new instance of the FlexPrintJob
- Start the print job (The operating system will display the Print dialog box)
- Add one or more objects to the print job and specify how to scale them (Each object will be printed on a new page)
- Send the print job to the printer
Below is an example:
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 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 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
About
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.
Resources
- 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
About
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.
Resources
- 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
Sample
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]:
- Initialise the network with small random weights
- Present an input pattern to the input layer of the network
- Feed the input pattern forward through the network to calculate its activation value
- Take the difference between desired output and the activation value to calculate the network’s activation error
- Adjust the weights feeding the output neuron to reduce its activation error for this input pattern
- Propagate an error value back to each hidden neuron that is proportional to their contribution of the network’s activation error
- Adjust the weights feeding each hidden neuron to reduce their contribution of error for this input pattern
- Repeat steps 2 to 7 for each input pattern in the input collection
- Repeat step 8 until the network is suitably trained
Library
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.
References: Template:Reflist