21 Mar 2009

Q5. The last code example shows how to get multiple records

Answer:

The Diagram-17 shows the output of getting multiple records:


Diagram-17 - The output of getting multiple records




Q4. The corresponding PHP file is add_record.php used with the POST method:

Answer:

The Diagram-16 shows the output of add_record.php


Diagram-16 - the output of add_record.php





Q3. This is how we can add a record and is part of a file to create called add_record.html

Answer:

The output of add_record.html is shown in Diagram-15.


Diagram-15 - The output of add_record.html



Q2. Create a web page with the following PHP:...

Answer:

The Diagram-14 is shown as follow and is the output of the PHP.


Diagram-14 - The output of the PHP





Q1. Start with a simple table in the database:

Exercise 8: PHP and MySQL database access

Q1. Start with a simple table in the database:

Answer:


The Diagram-13 shows the output of "select * from employees;" in MySQL.


Diagram-13 - The output of "select * from employees;" in MySQL



20 Mar 2009

Q2. Then, create a PHP file named submit.php with the following code...

Answer:

The submit.php is created and shown in Diagram-12.


Diagram-12 - submit.php








19 Mar 2009

Q1. 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

Exercise 11: XML Introduction

Q1. 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.

Answer:


W3Schools.com (2009) states that all modern browsers have a built-in XML parser that can be used to read and manipulate XML. The parser reads XML into memory and converts it into an XML DOM object that can be accessed with JavaScript. There are some differences between Microsoft's XML parser and the parsers used in other browsers. The Microsoft parser supports loading of both XML files and XML strings (text), while other browsers use separate parsers. However, all parsers contain functions to traverse XML trees, access, insert, and delete nodes (elements) and their attributes.

There are some tools on the Internet to parse XML documents and to ensure the XML documents are well formed and valid. These tools are ...
  1. XML Validator - http://www.validome.org/xml/
  2. XML Scheme Validator - http://tools.decisionsoft.com/schemaValidate/
  3. STG XML Validator - http://www.stg.brown.edu/service/xmlvalid/
  4. Validator for XML Schema - http://www.w3.org/2001/03/webdata/xsv
Reference:

1. w3Schools.com (2009). "XML Parser". W3Schools.com, Retrieved Mar-16th-2009 from URL - http://www.w3schools.com/xml/xml_parser.asp



Q1. Create an HTML page with the form:

Exercise 7: User input for database access with PHP

Q1. Create an HTML page with the form:

Answer:


The following HTML page is created and is show in Diagram-11.


Diagram-11 - HTML form




Q2. Create a web application called "hello_world.php" which contains in the body...

Answer:

The output of the "hello_world.php" is in Diagram-10...


Diagram-10 - The output of $myvar in hello_world.php


Q1. In this exercise with can call up and examine some environment variables on the server....

Exercise 6: Some server practice with PHP
Q1. In this exercise with can call up and examine some environment variables on the server. The code below has the UNIX environment variable for storing your remote Internet address. UNIX environment variable are recognized by the use of upper case letters. Try the same code by replacing with $REMOTE_ADDR, $SERVER_NAME, or $PHP_SELF

Answer:


The output of the PHP's variables $REMOTE_ADDR, $SERVER_NAME & $PHP_SELF is in Diagram-9.


Diagram-9 - The output of PHP's variables $REMOTE_ADDR, $SERVER_NAME & $PHP_SELF



18 Mar 2009

Q3. Frameworks for development. Compare and contrast any TWO of:

a. Java
b. .NET
c. Ruby on Rails
d. Turbo Gears
e. Google Gears
f. AJAX framework

Answer:


For web development, I would like to compare and contrast Java Framework with Ruby on Rail Framework. Vohra (2009) explains ...
1. Ruby is an interpreted scripting language, but Java is a compiled programming language.
To run a Ruby script, we can simply run by issue the command - "ruby helloruby.rb" where helloruby.rb is the script file name.
To run a Java program, we need to first compile the program to byte code, namely, "Java Virtual Machine". To compile the program hellojava.java, we can simply issu
e the command - "javac hellojava.java". After hellojava.class JVM is created, we can issue "java hellojava" to run the program.
2. Ruby and Java are both object-oriented languages.
3. Both are strongly typed. Whereas, Ruby is dynamically typed and Java is statically typed. That is,
In Ruby, to declare variables, we can issue "str="Hello Ruby" (Ruby does not need type declaration)
In Java, to declare variables, we can issue "String str="Hello Java"; (Java needs type declaration)
4. Both Java and Ruby provide inheritance and have public, private and protected methods.
5. Ruby is simpler than Java and run faster than J
ava.
6. Although Ruby is similar to Java and has parallel features, Ruby is not a replacement for Java. Just as Java EE is the enterprise framework for developing Model-View-Controller applications with Java, Ruby on Rails is the Model-View-Controller framework for Ruby.

I was a PHP developers 5 years ago. I also studied Java to write some simple programmes but I am not familiar with Ruby on Rail. However, personally, I feel the syntax of Java is more complex than PHP's and Ruby on Rail's. For this reason, Ruby on Rails is suitable for beginners to develop applications.

Sans-Serif (2007) compares PHP with J
ava and Ruby on Rails in terms of Scaling, Development Speed, Developer Tools and Maintainability.
Scaling -
For Web apps, Sans-Serif has given PHP the edge, because Sans-Serif thinks building scalable PHP is a little easier. By default, PHP gives you a “shared-nothing” (or at least “shared very little”) architecture, which means you’re going to scale out pretty well until your database hits the wall. Java is a much richer system and assumes you’re smart enough to know whether a shared-nothing architecture is appropriate or not. The effect is, you have to be smarter to get the same kind of scaling out of Java.
As for Rails, Sans-Serif thinks it’s probably the case that you can build a Web-scale app, just like Java and PHP, but we don’t know because nobody’s done it yet. Also, we have to penalize Rails a bit because most apps end up having a little computing in them, and Ruby is quite a bit behind the alternatives in that department.
After all, Java runs EBay while PHP runs Wikipedia and Yahoo! Finance. Both clearly scale “well enough”.
Development Speed -
The question is “All other things being equal, how fast can Sans-Serif gets my Web app on the air?” Sans-Serif thinks Rails has set a new benchmark here; you keep hearing astounding stories of serious applications going up in days rather than months and weeks rather than years.
PHP’s original claim to fame was that it was the quick-and-dirty way to get a Web app on the air. There’s no point trying to sweep the “dirty” bit under the carpet; a lot of those quickie PHP apps are butt-ugly. One of the reasons Rails is interesting is that it’s quick and clean. Java seems most difficuit comparing to PHP and Ruby on Rails.
Developer Tools -
Java is the obvious winner here. If you look at the recent NetBeans 5.5, the amount of automated support for Web-app development is astounding; if Sans-Serif ’d been graphing NetBeans instead of Java, I suspect it’d have equaled or passed PHP in the development-speed department.
Maintainability -
Good apps, once built, tend to be in production for an astonishingly long time. Which means that they have to be maintained for an astonishingly long time. Which means that maintainability is important. There are a lot of things that go into maintainability, but Sans-Serif suggests that the biggies are object-orientation, MVC architecture, code readability, and code size (less is more, a lot more).
This is PHP’s Achilles’ heel, of course. Yes, it is possible to write clean, object-oriented, modular, MVC-style PHP applications. But most people don’t...
Sans-Serif’ has put Rails ahead of Java just because there’s so much less code. The maintenance cost of code is strongly related to its size. Clearly, Java’s excellent developer tools make a difference, but still, Sans-Serif thinks that this is another area where Ruby and Rails are teaching lessons the rest of the industry would do well to learn from.

To sum up, we have the Diagram-8 extracted from http://www.tbray.org/ongoing/When/200x/2006/11/10/Comparing-Frameworks. From the Diagram-8, we will know then Ruby on Rails is easy enough that the programming beginners can develop web application fast and clean with Object-Oriented and MVC architecture.

Diagram-8 - The comparison amongst PHP, Java and Rails


Reference:

1. Vohra Deepak (2009). "Java vs Ruby: A comparation of Key Elements". The developer.com, Retrieved Mar-15th-2009 from URL - http://www.developer.com/open/article.php/10930_3716356_3
2.
Sans-Serif (2007). "Ongoing. Comparing Frameworks". OnGoing, Retrieved Mar-15th-2009 from URL - http://www.tbray.org/ongoing/When/200x/2006/11/10/Comparing-Frameworks






Q2. Describe the important and distinguishing properties of Peer to Peer computing and the Grid.

How is this Peer to Peer and the Grid architecture changing work flow and service-oriented applications?

Answer:

Peer to Peer (P2P) means computer network uses diverse connectivity between diverse connectivity between participants in a network and the cumulative bandwidth of network participants rather than conventional centralized resources where a relatively low number of servers provide the core value to a service or application. P2P networks are typically used for connecting nodes via largely ad hoc connections. Such networks are useful for many purposes. Sharing content files containing audio, video, data or anything in digital format is very common, and real time data, such as telephony traffic, is also passed using P2P technology. A pure P2P network does not have the notion of clients or servers but only equal peer nodes that simultaneously function as both "clients" and "servers" to the other nodes on the network. This model of network arrangement differs from the client-server model where communication is usually to and from a central server. (Wikipedia, 2009)

Grid Architecture / Computing is a parallel processing architecture in which CPU resources are shared across a network, and all machines function as one large supercomputer. A well known example of grid computing in the public domain is the ongoing Search for Extraterrestrial Intelligence (SETI) in which thousands of people share the unused processor cycles of their PCs in the vast search for signs of rational signals from outer space. Grid computing depends on the software to divide and apportion pieces of a program among several computers. It is cost-effective and can solve problems that can’t be approached without an enormous amount of computing power. (4to40.com, 2009)

With my own words, P2P computing shares bandwidth among each peer nodes and Grid computing shares CPU power amongst network' machines. P2P and Grid Computing are important nowadays. It is because the multimedia becomes popular. Multimedia containing Video, Audio, Image and Sound is always a big file in size. The traditional client/server file transfer like FTP becomes insufficient for such large file (eg. over 1G file). As a result, P2P and Grid computing would be the cost-saving solution for multimedia information sharing. P2P and Grid computing have changed the work flow and service-oriented applications because the client/server method cannot share huge data in the limited resources, like bandwidth and CPU power.

The following Diagram-7 from Wikipedia and 4TO40.com shows P2P, Grid and Client/Server computing.

Diagram-7, P2P, Grid & Client/Server


Reference:

1. Wikipedia (2009). "Peer-to-Peer". Wikipedia The Free Encyclopedia, Retrieved Mar-15th-2009 from URL - http://en.wikipedia.org/wiki/Peer_to_peer
2. 4to40.com (2009). "Question: What is Grid Computing?". 4to40.com, Retrieved Mar-15th-2009 from URL - http://www.4to40.com/qa/index.asp?id=3303




Q1. Investigate a simple chat client/server system. Look at some program code and describe how it works with multiple users.

Exercise 5: Network and Programming Frameworks

Q1. Investigate a simple chat client/server system. Look at some program code and describe how it works with multiple users.

Answer:

The coding of the simple chat client/server system can be found at http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html. Wachamut (2006) teaches to write the simple client/server system. The steps showing how the system works with multiple users are ...
  1. A simple server that will accept a single client connection and display everything the client says on the screen. If the client user types ".bye", the client and the server will both quit.
  2. A server as before, but this time it will remain 'open' for additional connection once a client has quit. The server can handle at most one connection at a time.
  3. A server as before, but this time it can handle multiple clients simultaneously. The output from all connected clients will appear on the server's screen.
  4. A server as before, but this time it sends all text received from any of the connected clients to all clients. This means that the server has to receive and send, and the client has to send as well as receive
  5. Wrapping the client from step 4 into a very simple GUI interface but not changing the functionality of either server or client. The client is implemented as an Applet, but a Frame would have worked just as well (for a stand-alone program).
The code is listed below:

Step 1: Simple, one-time Server

import java.net.*;
import java.io.*;

public class ChatServer
{ private Socket socket = null;
private ServerSocket server = null;
private DataInputStream streamIn = null;

public ChatServer(int port)
{ try
{ System.out.println("Binding to port " + port + ", please wait ...");
server = new ServerSocket(port);
System.out.println("Server started: " + server);
System.out.println("Waiting for a client ...");
socket = server.accept();
System.out.println("Client accepted: " + socket);
open();
boolean done = false;
while (!done)
{ try
{ String line = streamIn.readUTF();
System.out.println(line);
done = line.equals(".bye");
}
catch(IOException ioe)
{ done = true;
}
}
close();
}
catch(IOException ioe)
{ System.out.println(ioe);
}
}
public void open() throws IOException
{ streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
}
public void close() throws IOException
{ if (socket != null) socket.close();
if (streamIn != null) streamIn.close();
}
public static void main(String args[])
{ ChatServer server = null;
if (args.length != 1)
System.out.println("Usage: java ChatServer port");
else
server = new ChatServer(Integer.parseInt(args[0]));
}
}

The Simple Client corresponding to the previous server (and to step 2 and step 3 servers as well):

import java.net.*;
import java.io.*;

public class ChatClient
{ private Socket socket = null;
private DataInputStream console = null;
private DataOutputStream streamOut = null;

public ChatClient(String serverName, int serverPort)
{ System.out.println("Establishing connection. Please wait ...");
try
{ socket = new Socket(serverName, serverPort);
System.out.println("Connected: " + socket);
start();
}
catch(UnknownHostException uhe)
{ System.out.println("Host unknown: " + uhe.getMessage());
}
catch(IOException ioe)
{ System.out.println("Unexpected exception: " + ioe.getMessage());
}
String line = "";
while (!line.equals(".bye"))
{ try
{ line = console.readLine();
streamOut.writeUTF(line);
streamOut.flush();
}
catch(IOException ioe)
{ System.out.println("Sending error: " + ioe.getMessage());
}
}
}
public void start() throws IOException
{ console = new DataInputStream(System.in);
streamOut = new DataOutputStream(socket.getOutputStream());
}
public void stop()
{ try
{ if (console != null) console.close();
if (streamOut != null) streamOut.close();
if (socket != null) socket.close();
}
catch(IOException ioe)
{ System.out.println("Error closing ...");
}
}
public static void main(String args[])
{ ChatClient client = null;
if (args.length != 2)
System.out.println("Usage: java ChatClient host port");
else
client = new ChatClient(args[0], Integer.parseInt(args[1]));
}
}


Step 2: Many Time Server, One Client (Client is as before)

import java.net.*;
import java.io.*;

public class ChatServer implements Runnable
{ private Socket socket = null;
private ServerSocket server = null;
private Thread thread = null;
private DataInputStream streamIn = null;

public ChatServer(int port)
{ try
{ System.out.println("Binding to port " + port + ", please wait ...");
server = new ServerSocket(port);
System.out.println("Server started: " + server);
start();
}
catch(IOException ioe)
{ System.out.println(ioe);
}
}
public void run()
{ while (thread != null)
{ try
{ System.out.println("Waiting for a client ...");
socket = server.accept();
System.out.println("Client accepted: " + socket);
open();
boolean done = false;
while (!done)
{ try
{ String line = streamIn.readUTF();
System.out.println(line);
done = line.equals(".bye");
}
catch(IOException ioe)
{ done = true; }
}
close();
}
catch(IOException ie)
{ System.out.println("Acceptance Error: " + ie); }
}
}
public void start()
{ if (thread == null)
{ thread = new Thread(this);
thread.start();
}
}
public void stop()
{ if (thread != null)
{ thread.stop();
thread = null;
}
}
public void open() throws IOException
{ streamIn = new DataInputStream(new
BufferedInputStream(socket.getInputStream()));
}
public void close() throws IOException
{ if (socket != null) socket.close();
if (streamIn != null) streamIn.close();
}
public static void main(String args[])
{ ChatServer server = null;
if (args.length != 1)
System.out.println("Usage: java ChatServer port");
else
server = new ChatServer(Integer.parseInt(args[0]));
}
}

Step 3: Multi-Server handling Multi-Client (Client as before)

import java.net.*;
import java.io.*;

public class ChatServer implements Runnable
{ private ServerSocket server = null;
private Thread thread = null;
private ChatServerThread client = null;

public ChatServer(int port)
{ try
{ System.out.println("Binding to port " + port + ", please wait ...");
server = new ServerSocket(port);
System.out.println("Server started: " + server);
start();
}
catch(IOException ioe)
{ System.out.println(ioe); }
}
public void run()
{ while (thread != null)
{ try
{ System.out.println("Waiting for a client ...");
addThread(server.accept());
}
catch(IOException ie)
{ System.out.println("Acceptance Error: " + ie); }
}
}
public void addThread(Socket socket)
{ System.out.println("Client accepted: " + socket);
client = new ChatServerThread(this, socket);
try
{ client.open();
client.start();
}
catch(IOException ioe)
{ System.out.println("Error opening thread: " + ioe); }
}
public void start() { /* no change */ }
public void stop() { /* no change */ }
public static void main(String args[]){ /* no change */ }
}

import java.net.*;
import java.io.*;

public class ChatServerThread extends Thread
{ private Socket socket = null;
private ChatServer server = null;
private int ID = -1;
private DataInputStream streamIn = null;

public ChatServerThread(ChatServer _server, Socket _socket)
{ server = _server; socket = _socket; ID = socket.getPort();
}
public void run()
{ System.out.println("Server Thread " + ID + " running.");
while (true)
{ try
{ System.out.println(streamIn.readUTF());
}
catch(IOException ioe) { }
}
}
public void open() throws IOException
{ streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
}
public void close() throws IOException
{ if (socket != null) socket.close();
if (streamIn != null) streamIn.close();
}
}

Step 4: A Simple but functional, text based chat server/client

import java.net.*;
import java.io.*;

public class ChatServer implements Runnable
{ private ChatServerThread clients[] = new ChatServerThread[50];
private ServerSocket server = null;
private Thread thread = null;
private int clientCount = 0;

public ChatServer(int port)
{ try
{ System.out.println("Binding to port " + port + ", please wait ...");
server = new ServerSocket(port);
System.out.println("Server started: " + server);
start(); }
catch(IOException ioe)
{ System.out.println("Can not bind to port " + port + ": " + ioe.getMessage()); }
}
public void run()
{ while (thread != null)
{ try
{ System.out.println("Waiting for a client ...");
addThread(server.accept()); }
catch(IOException ioe)
{ System.out.println("Server accept error: " + ioe); stop(); }
}
}
public void start() { /* as before */ }
public void stop() { /* as before */ }
private int findClient(int ID)
{ for (int i = 0; i < clientCount; i++)
if (clients[i].getID() == ID)
return i;
return -1;
}
public synchronized void handle(int ID, String input)
{ if (input.equals(".bye"))
{ clients[findClient(ID)].send(".bye");
remove(ID); }
else
for (int i = 0; i < clientCount; i++)
clients[i].send(ID + ": " + input);
}
public synchronized void remove(int ID)
{ int pos = findClient(ID);
if (pos >= 0)
{ ChatServerThread toTerminate = clients[pos];
System.out.println("Removing client thread " + ID + " at " + pos);
if (pos < clientCount-1)
for (int i = pos+1; i < clientCount; i++)
clients[i-1] = clients[i];
clientCount--;
try
{ toTerminate.close(); }
catch(IOException ioe)
{ System.out.println("Error closing thread: " + ioe); }
toTerminate.stop(); }
}
private void addThread(Socket socket)
{ if (clientCount < clients.length)
{ System.out.println("Client accepted: " + socket);
clients[clientCount] = new ChatServerThread(this, socket);
try
{ clients[clientCount].open();
clients[clientCount].start();
clientCount++; }
catch(IOException ioe)
{ System.out.println("Error opening thread: " + ioe); } }
else
System.out.println("Client refused: maximum " + clients.length + " reached.");
}
public static void main(String args[]) { /* as before */ }
}
import java.net.*;
import java.io.*;

public class ChatServerThread extends Thread
{ private ChatServer server = null;
private Socket socket = null;
private int ID = -1;
private DataInputStream streamIn = null;
private DataOutputStream streamOut = null;

public ChatServerThread(ChatServer _server, Socket _socket)
{ super();
server = _server;
socket = _socket;
ID = socket.getPort();
}
public void send(String msg)
{ try
{ streamOut.writeUTF(msg);
streamOut.flush();
}
catch(IOException ioe)
{ System.out.println(ID + " ERROR sending: " + ioe.getMessage());
server.remove(ID);
stop();
}
}
public int getID()
{ return ID;
}
public void run()
{ System.out.println("Server Thread " + ID + " running.");
while (true)
{ try
{ server.handle(ID, streamIn.readUTF());
}
catch(IOException ioe)
{ System.out.println(ID + " ERROR reading: " + ioe.getMessage());
server.remove(ID);
stop();
}
}
}
public void open() throws IOException
{ streamIn = new DataInputStream(new
BufferedInputStream(socket.getInputStream()));
streamOut = new DataOutputStream(new
BufferedOutputStream(socket.getOutputStream()));
}
public void close() throws IOException
{ if (socket != null) socket.close();
if (streamIn != null) streamIn.close();
if (streamOut != null) streamOut.close();
}
}
import java.net.*;
import java.io.*;

public class ChatClient implements Runnable
{ private Socket socket = null;
private Thread thread = null;
private DataInputStream console = null;
private DataOutputStream streamOut = null;
private ChatClientThread client = null;

public ChatClient(String serverName, int serverPort)
{ System.out.println("Establishing connection. Please wait ...");
try
{ socket = new Socket(serverName, serverPort);
System.out.println("Connected: " + socket);
start();
}
catch(UnknownHostException uhe)
{ System.out.println("Host unknown: " + uhe.getMessage()); }
catch(IOException ioe)
{ System.out.println("Unexpected exception: " + ioe.getMessage()); }
}
public void run()
{ while (thread != null)
{ try
{ streamOut.writeUTF(console.readLine());
streamOut.flush();
}
catch(IOException ioe)
{ System.out.println("Sending error: " + ioe.getMessage());
stop();
}
}
}
public void handle(String msg)
{ if (msg.equals(".bye"))
{ System.out.println("Good bye. Press RETURN to exit ...");
stop();
}
else
System.out.println(msg);
}
public void start() throws IOException
{ console = new DataInputStream(System.in);
streamOut = new DataOutputStream(socket.getOutputStream());
if (thread == null)
{ client = new ChatClientThread(this, socket);
thread = new Thread(this);
thread.start();
}
}
public void stop()
{ if (thread != null)
{ thread.stop();
thread = null;
}
try
{ if (console != null) console.close();
if (streamOut != null) streamOut.close();
if (socket != null) socket.close();
}
catch(IOException ioe)
{ System.out.println("Error closing ..."); }
client.close();
client.stop();
}
public static void main(String args[])
{ ChatClient client = null;
if (args.length != 2)
System.out.println("Usage: java ChatClient host port");
else
client = new ChatClient(args[0], Integer.parseInt(args[1]));
}
}
import java.net.*;
import java.io.*;

public class ChatClientThread extends Thread
{ private Socket socket = null;
private ChatClient client = null;
private DataInputStream streamIn = null;

public ChatClientThread(ChatClient _client, Socket _socket)
{ client = _client;
socket = _socket;
open();
start();
}
public void open()
{ try
{ streamIn = new DataInputStream(socket.getInputStream());
}
catch(IOException ioe)
{ System.out.println("Error getting input stream: " + ioe);
client.stop();
}
}
public void close()
{ try
{ if (streamIn != null) streamIn.close();
}
catch(IOException ioe)
{ System.out.println("Error closing input stream: " + ioe);
}
}
public void run()
{ while (true)
{ try
{ client.handle(streamIn.readUTF());
}
catch(IOException ioe)
{ System.out.println("Listening error: " + ioe.getMessage());
client.stop();
}
}
}
}

Stage 5: Chat client moved to very simple GUI interface

import java.net.*;
import java.io.*;
import java.applet.*;
import java.awt.*;
public class ChatClient extends Applet
{ private Socket socket = null;
private DataInputStream console = null;
private DataOutputStream streamOut = null;
private ChatClientThread client = null;
private TextArea display = new TextArea();
private TextField input = new TextField();
private Button send = new Button("Send"), connect = new Button("Connect"),
quit = new Button("Bye");
private String serverName = "localhost";
private int serverPort = 4444;

public void init()
{ Panel keys = new Panel(); keys.setLayout(new GridLayout(1,2));
keys.add(quit); keys.add(connect);
Panel south = new Panel(); south.setLayout(new BorderLayout());
south.add("West", keys); south.add("Center", input); south.add("East", send);
Label title = new Label("Simple Chat Client Applet", Label.CENTER);
title.setFont(new Font("Helvetica", Font.BOLD, 14));
setLayout(new BorderLayout());
add("North", title); add("Center", display); add("South", south);
quit.disable(); send.disable(); getParameters(); }
public boolean action(Event e, Object o)
{ if (e.target == quit)
{ input.setText(".bye");
send(); quit.disable(); send.disable(); connect.enable(); }
else if (e.target == connect)
{ connect(serverName, serverPort); }
else if (e.target == send)
{ send(); input.requestFocus(); }
return true; }
public void connect(String serverName, int serverPort)
{ println("Establishing connection. Please wait ...");
try
{ socket = new Socket(serverName, serverPort);
println("Connected: " + socket);
open(); send.enable(); connect.disable(); quit.enable(); }
catch(UnknownHostException uhe)
{ println("Host unknown: " + uhe.getMessage()); }
catch(IOException ioe)
{ println("Unexpected exception: " + ioe.getMessage()); } }
private void send()
{ try
{ streamOut.writeUTF(input.getText()); streamOut.flush(); input.setText(""); }
catch(IOException ioe)
{ println("Sending error: " + ioe.getMessage()); close(); } }
public void handle(String msg)
{ if (msg.equals(".bye"))
{ println("Good bye. Press RETURN to exit ..."); close(); }
else println(msg); }
public void open()
{ try
{ streamOut = new DataOutputStream(socket.getOutputStream());
client = new ChatClientThread(this, socket); }
catch(IOException ioe)
{ println("Error opening output stream: " + ioe); } }
public void close()
{ try
{ if (streamOut != null) streamOut.close();
if (socket != null) socket.close(); }
catch(IOException ioe)
{ println("Error closing ..."); }
client.close(); client.stop(); }
private void println(String msg)
{ display.appendText(msg + "\n"); }
public void getParameters()
{ serverName = getParameter("host");
serverPort = Integer.parseInt(getParameter("port")); }
}

The entire program code can be downloaded here.

Reference:

1. Wachsmut Bert G. (2006). "Creating a simple chat client/server solution". SETON HALL UNIVERSITY, Retrieved Mar-15th-2009 from URL - http://pirate.shu.edu/~wachsmut/Teaching/ and http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html




Q4. What role can a VPN play in Business-to-Business e-commerce?

Answer:

B2B e-commerce may always need to build a physical connection from Business to Business. For instance, there is a T3 leased line connection between a Manufacturer and a wholesaler. Although this method is very expense, it provides a very secure communication. VPN makes use of Internet to build a virtual circuit as if the physical connection. For example, the wholesaler connecting to Internet through broadband sets up a VPN server. Then, the Manufacturer installs the related VPN clients so that the virtual circuit can be built. The virtual circuit operates as if the physical connection did. The role of VPN in e-commerce is to offer virtual circuits rather than expense lease lines. VPN is cost-saving.

Q3. What do you know about building e-business applications as an Internet, Extranet, Web Portal, B2B, B2C or Virtual Private Network (VPN)?

Find some examples on the Web.

Answer:

Wikipedia-1 (2009) states that an Intranet is a private computer network that uses Internet technologies to securely share any part of an organization's information or operational systems with its employees. Sometimes the term refers only to the organization's internal websites, but often it is a more extensive part of the organization's computer infrastructure and private websites are an important component and focal point of internal communication and collaboration.
As I know, the e-business applications in Intranet can be a billing system in the internal websites or teleconferencing. For building Intranet e-business applications, we have the following steps...
  1. Select the platform, for example, windows servers or linux
  2. Select the software of the web server, for example, apache or IIS
  3. Select a database, for example, MySQL or Oracle
  4. Select programming language, for example, PHP or Java
  5. Web Design and Planning
  6. Implementation and build a prototype
  7. User's review. If the users feel the requirement has been met, go to step 9
  8. Repeat Step 5 until Users feel the users' requirement has been met
  9. Assign internal IP, such as, 192.168.1.1 and internal domain name to the application, namely, http://apps1.teradata.com/index.php. These IP and domain name cannot be accessed through Internet but can be accessed in the LAN.
The example of Inranet e-business applications is in the following Diagram-5.





Diagram-5 - IExpense System in Intranet is used to let users input monthly expenses and OT

Wikipedia-2 (2009) states that an Extranet is a private network which uses Internet Protocols, Network Connectivity, and possibly the Public Telecommunication System to securely share part of an organization's information or operations with suppliers, vendors, partners, customers or other businesses. An extranet can be viewed as part of a company's intranet that is extended to users outside the company (e.g.: normally over the Internet).
As I know, the e-business applications in Extranet can be https://www.teradata4me.teradata.com. This website - https://www.teradata4me.teradata.com is the Extranet e-business application through Internet accessing the internal email server and HR system. The steps to build the Extranet e-business application are...
  1. Select & install the platform, for example, windows servers or linux
  2. Select & install the software of the web server, for example, apache or IIS
  3. Select & install a database, for example, MySQL or Oracle
  4. Select programming language for application development, for example, PHP or Java
  5. Web Design and Planning
  6. Implementation and build a prototype
  7. User's review. If the users feel the requirement has been met, go to step 9
  8. Repeat Step 5 until Users feel the users' requirement has been met
  9. Apply for the global IP address and the real domain name from ISP for the application. The IP and domain name are namely 202.10.103.111 and www.ncr.com respectively. This IP and domain can be accessed through Internet.
  10. Connectivity test.
Wikipedia-3 (2009) states that a web portal presents information from diverse sources in a unified way. Apart from the standard search engine feature, web portals offer other services such as e-mail, news, stock prices, information, and entertainment. Portals provide a way for enterprises to provide a consistent look and feel with access control and procedures for multiple applications, which otherwise would have been different entities altogether. An example of a web portal is MSN (www.msn.com), Yahoo! (www.yahoo.com) and Google (www.google.com). The steps for building Web Portal can be the same as the steps for building Extranet Applications.

Wikipedia-4 (2009)
shows that Business-to-Business (B2B) is a term commonly used to describe commerce transactions between businesses like the one between a manufacturer and a wholesaler or a wholesaler and a retailer, therefore, both the buyer and the seller are business entity. This is unlike business-to-consumers (B2C) which involve a business entity and end consumer, or business-to-government (B2G) which involve a business entity and government. The example for B2B e-business applications is http://www.alibaba.com/. The steps for building B2B e-business applications should be the same as the Extranet's steps, whereas, the step 9 are slightly different. After applying for the global IP address and domain name for the application, there may be some direct leased line connection between manufacturers and wholesalers in some B2B models. As a result, the transactions can be completed faster and securely in the leased line, instead of in Internet.

Wikipedia-5 (2009) explains that Business-to-consumer (B2C, sometimes also called Business-to-Customer) describes activities of businesses serving end consumers with products and/or services. An example of a B2C transaction would be a person buying a pair of shoes from a retailer. This example is available in this link - http://www.shoe-store.net/c/womens.html. The steps for building B2C e-business application are the same as the Extranet's steps.

Wikipedia-6 (2009) explains that A virtual private network (VPN) is a computer network in which some of the links between nodes are carried by open connections or virtual circuits in some larger network (e.g., the Internet) as opposed to running across a single private network. The link-Layer protocols of the virtual network are said to be tunneled through the larger network. One common application is secure communications through the public Internet, but a VPN need not have explicit security features, such as authentication or content encryption. VPNs, for example, can be used to separate the traffic of different user communities over an underlying network with strong security features. VPN service providers may offer best-effort performance, or may have a defined service level agreement (SLA) with their VON customers. Generally, a VPN has a topology more complex than point-to-point. A VPN allows computer users to access a network via an IP address other than the one that actually connects their computer to the Internet.
From my experience, VPN is to let users connect to the LAN through Internet. After connecting to VPN, the IP address on the users' computer changes for example from real IP (202.x.x.x) to internal IP (192.168.x.x). This is a virtual circuit through which the customer accesses the Intranet applications anywhere as if they were inside the LAN or Intranet. The steps for building VPN applications are
  1. Select the VPN server and install the VPN server software into the platform.
  2. Install VPN client onto the desktop or laptop.
  3. After that, you can access the Intranet Applications.
The example of VPN is in the Diagram-6.



Diagram-6 - VPN clients from http://www.nortel.com


Reference:

1. Wikipedia-1 (2009). "Intranet". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/Intranet
2. Wikipedia-2 (2009). "Extranet". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/Extranet
3. Wikipedia-3 (2009). "Web Portal". Wikipedia The Free Encyclopedia, Retrieved Mar-15th-2009 from URL - http://en.wikipedia.org/wiki/Web_portal
4. Wikipedia-4 (2009). "Business-to-Business". Wikipedia The Free Encyclopedia, Retrieved Mar-15th-2009 from URL - http://en.wikipedia.org/wiki/B2B
5. Wikipedia-5 (2009). "Business-to-Consumer". Wikipedia The Free Encyclopedia, Retrieved Mar-15th-2009 from URL -
http://en.wikipedia.org/wiki/Business-to-consumer
6. Wikipedia-6 (2009). "Virtual Private Network". Wikipedia The Free Encyclopedia, Retrieved Mar-15th-2009 from URL - http://en.wikipedia.org/wiki/VPN


Q2. Describe the TCP protocol. How is it related to the IP Protocol?

Answer:

TCP is Transmission Control Protocol. Wikipedia (2009) describes that the Transmission Control Protocol (TCP) is one of the core protocols of the Internet Protocol Suite. TCP is so central that the entire suite is often referred to as "TCP/IP". Whereas IP handles lower-level transmissions from computer to computer as a message makes its way across the Internet, TCP operates at a higher level, concerned only with the two end systems, for example a Web browser and a Web server. In particular, TCP provides reliable, ordered delivery of a stream of bytes from one program on one computer to another program on another computer. Besides the Web, other common applications of TCP include e-mail and file transfer. Among its management tasks, TCP controls message size, the rate at which messages are exchanged, and network traffic congestion. Thus, TCP is a connection-oriented protocol as the circuit for the communication should be setup and maintained.

How is it related to the IP Protocol?
TCP and IP are both in IP Protocol Suite. Although TCP is the connection-oriented protocol and IP is the connectionless protocol, the former handles the high level communition for the application like, web, email & file transfer and the latter handles the low level communication in physical media. There are 5 layers in IP protocol Suite formed by IETF. The layers are Application, Transfer, Internet, Network Interface, Physical in sequence from the top to the bottom. TCP is related to IP Protocol when TCP mainly operates in Application, Transfer, Internet Layers and IP solely operates in Network Interface and Physical layers.

Reference:

1. Wikipedia (2009). "Transmission Control Protocol". Wikipeddia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/Transfer_Control_Protocol




Q1. Describe the IP Protocol. What is DNS?

Answer:

DNS is Domain Name System and means a service which enables clients to locate computers on the Internet given their symbolic nam. (Ince, 2004, p.443)
Wikipedia-1 (2009) describes that the Domain Name System (DNS) is a hierarchical naming system for computers, services, or any resource participating in the Internet. It associates various information with domain names assigned to such participants. Most importantly, it translates domain names meaningful to humans into the numerical (binary) identifiers associated with networking equipment for the purpose of locating and addressing these devices world-wide. An often used analogy to explain the Domain Name System is that it serves as the "phone book" for the Internet by translating human-friendly computer hostnames into IP addresses. For example, www.example.com translates to 208.77.188.166.

IP Protocol is one of a suite of protocols used for communication within the Internet. (Ince, 2004, p.444)
Wikipedia-2 (2009) describes that the Internet Protocol (IP) is a protocol used for communicating data across a packet-switched internetwork using the Internet Protocol Suite. IP is the primary protocol in the Internet Layer of the Internet Protocol Suite and has the task of delivering distinguished protocol datagrams (packets) from the source host to the destination host solely based on their addresses. For this purpose the Internet Protocol defines addressing methods and structures for datagram encapsulation. The first major version of addressing structure, now referred to as Internet Protocol Version (IPv4) is still the dominant protocol of the Internet, although the successor, Internet Protocol Version 6 (IPv6) is being deployed actively worldwide. Data from an upper layer protocol is encapsulated as packets/datagrams (the terms are basically synonymous in IP). Circuit setup is not needed before a host may send packets to another host that it has previously not communicated with (a characteristic of packet-switched networks), thus IP is a connectionless protocol.

Reference:

1. Ince Darrel (2004). "Developing Distributed and E-commerce Applications", 2nd Edition. United States of America, Pearson Education Limited. (p.443-444)
2. Wikipedia-1 (2009). "Domain Name System". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/Domain_Name_System
3. Wikipedia-2 (2009). "Internet Protocol". Wikipeddia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/Internet_Protocol

17 Mar 2009

Exercise 3: Finding some common ground

Describe the steps involved with the Rapid Evolutionary Prototyping Approach as it applies to developing a Web application.
How is it related to agile development?

Answer:

The Rapid Evolutionary Prototyping Approach is used for small projects. Markkanen (2001) and Bhattacharyya (2003) describe the steps as follow...
  1. Evolutionary Application Prototyping is to directly construct the web application (build the web application as the prototype). The prototype gradually evolves into a full functional system through a predetermined number of development iterations. Each iteration of the evolutionary prototype is executed inside a rigid timebox to control the possibility of creeping functionality and to ensure the system is delivered within the time frame agreed with the users.
  2. Implementation is to transfer the new system into its production environment and quickly train the users and system personnel on how to user the operate the web application.
  3. Maintenance is to provide continuous system maintenance and user support.
The Diagram-2 below copied from http://users.evtek.fi/~jaanah/DPAD/ shows the steps of the Rapid Evolutionary Prototyping Approach.






Diagram-2 - The Rapid Evolutionary Prototyping Approach


Bhattacharyya does not mention the step 3 - Maintenance but Bhattacharyya states that Rapid Evolutionary Prototyping Approach capture user's requirements with a modeling approach which focuses on what the system should do rather than on how to.

Fournier (2000) uses the Diagram-3 to shows the steps of the Rapid Envolutionary Prototyping Approach. The Diagram-3 is copied from http://www.infoworld.com/articles/tc/xml/00/12/18/001218tcsystem.html






Diagram-3 - Rapid Envolutionary Prototyping Approach by Roger Fournier


Agile Development is introduced to solve problems. In practices, things that work well in one project are formed into a process to be applied to other projects. When errors occur, we diagnose the error and add process to prevent its reoccurrence. The result is often a big cumbersome process that may create rather than solve problems. (Huang, 2004)

Agile Principles involve...
  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software (Frequent deliveries and Early customer feedback)..
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
  3. Deliver working software frequently...
  4. Business people and developers must work together daily throughout the project...
  5. Build projects around motivated individuals...
  6. face-to-face conversation...
  7. Working software is the primary measure of progress...
  8. Agile processes promote sustainable development...
  9. Continuous attention to technical excellence and good design enhances agility...
  10. Simplicity...
  11. The best architectures, requirements and designs emerge from self-organizing...
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly... (Huang, 2004)
Simply put, Kieth (2002) uses the following Diagram-4 to show agile development...





Diagram-4 - Agile Development

How is Rapid Evolutionary Prototyping Approach related to Agile Development? The common ground is that the software development life cycle in both approaches are to build, plan and revise repeatedly and continuously. For this reason, the final web application or user's requirement can be met. For example, the principle 1 in agile development - "Frequent deliveries and Early customer feedback" is very similar to the first step in the Rapid Evolutionary Prototyping Approach - "The prototype gradually evolves into a full functional system through a predetermined number of development iterations". That is, both approaches build a prototype (or called "deliveries) and then users interact with the prototype or deliveries to make comment. The comment is important for further improvements or changes. Finally, the improvements or changes are made and the users review the prototype or deliveries again until the most suitable product is made. Thereby, both are to build, plan and revise again and again until the final product is built, although there are some differences in the specification between agile development and rapid evolutionary prototyping approach.

Reference:

1. Markkanen Hannu (2001). "SDLC for small size project". The Lecture Notes, Retrieved Mar-15th-2009 from URL - http://users.evtek.fi/~jaanah/DPAD/
2. Bhattacharyya Siddhartha (2003). "The Lecture Notes", Business Information Systems Analysis and Design. Information and Decision Sciences at University of Illinois at Chicago, Retrieved Mar-15th-2009 from URL - http://www.uic.edu/classes/idsc/ids505sb/ and http://www.uic.edu/classes/idsc/ids505sb/lect1.doc
3. Fournier Roger (2000). "Build e-business apps faster". InfoWorld, Retrieved Mar-15th-2009 from URL - http://www.infoworld.com/articles/tc/xml/00/12/18/001218tcsystem.html
4. Huang Jane (2004) - "Lecture7: Agile Software Development". DePaul University, Retrieved Mar-15th-2009 from URL - http://facweb.cs.depaul.edu/jhuang/csc394/ and http://facweb.cs.depaul.edu/jhuang/csc394/Spring2004_Lecture8.ppt

5. Kieth (2002) - "Agile Software Development Processes - A Different Approach to Software Design". Deoartment of Computer Science at New York University
, Retrieved Mar-15th-2009 from URL - http://cs.nyu.edu/courses/spring03/V22.0474-001/lectures/agile/AgileDevelopmentDifferentApproach.pdf and http://cs.nyu.edu/courses/spring03/V22.0474-001/






16 Mar 2009

Exercise 2: Technology and the Evolution of Business Options

Web quest: Find a range of five sites each offering different business options:
Online Shopping, Electronic Payments, Database Access, WAP sites for mobile phones.
Key words for your search engine: M-commerce, T-commerce and E-wallet

Answer:

M-commerce is known as Mobile Commerce and is the ability to conduct commerce, using a mobile device, like PDA or Mobile Phone, through Internet. (Wikipedia-1, 2009)
T-commerce is known as Television Commerce and is e-commerce undertaken using Digital Television. It has yet to become as widespread as e-commerce on Internet. (Wikipedia-2, 2009)
E-wallet is a continuation and progression of the core idea behind credit schemes such as CashRegister. Such wallets keep track of your credit card payments, administer the use of number of credit cards and automate much of the processing of the buying of goods on the Internet. (Ince, 2004)

After seeking with the keywords and the business options in the search engine, we have:

Online Shopping -
  1. Buy.com - http://www.buy.com
  2. GiftTree.com - http://www.gifttree.com
  3. TVSHOP - http://www.tvshop.com/GB
  4. TVSN Channel - https://www.itvsn.com.au/
  5. EBGAMES - http://www.ebgames.com/ebx/default.asp
Electronic Payment -
  1. globalcollect - http://www.globalcollect.com/s-55-About%20us
  2. osCommerce iPay88 - http://addons.oscommerce.com/info/5165
  3. MPP globalsolutions - http://www.mppglobal.com/iShop-eCommerce-sell-online-shop-store-solution/1-ecommerce-online-store-solution-e-commerce.asp
  4. STS - http://www.sts.com.jo/index.php?q=node/35
  5. A2Z E-Payments - http://a2zepayments.com/
Database Access -
  1. TrackVia - http://www.trackvia.com/
  2. CASPIO - http://accessdatabaseonline.com/
  3. AeroHOST - http://www.aerohost.com/
  4. ZOHO Creator - http://creator.zoho.com/
  5. Mono - http://www.mono-project.com/Database_Access
WAP for Mobile Phone -
  1. mobilemo - http://www.mobilemo.com/main.php
  2. golive!mobile - http://www.golivemobile.com/wap-sites.htm
  3. MobiWeb - http://www.mobiweb.mobi/
  4. mobiSiteGalore - http://www.mobisitegalore.com/whatsnew.htm
  5. CellAdmin - http://www.celladmin.com/dynamic.asp?cid=6730
Reference:

1. Wikipedia-1 (2009). "Mobile Commerce". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/M-commerce
2. Wikipedia-2 (2009). "T-Commerce". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL - http://en.wikipedia.org/wiki/T-commerce
3. Ince Darrel (2004). "Developing Distributed and E-commerce Applications", 2nd Edition. United States of America, Pearson Education Limited. (p.330)

Q2ci. List the steps involved and comment.

Answer:

The steps are listed below...
  1. If you are not the member, you need to click on "new customer" link to sign up.
  2. If you are the member, you need to sign in
  3. Enter email address to sign in and then go to step 5
  4. To sign up or register for the new customer, enter personal information
  5. Skip the Today' recommendation
  6. You can go back to the front page and select the item in the catalog
  7. Select the item and you will see the item is in the shopping cart
  8. Pay for the item by VISA/Master and complete the payment or go to step 9 to enable One-Click Ordering
  9. To enable One-Click Ordering, save the VISA/Master Card information in Amazon
  10. Complete the payment
My comment for the above steps is that they are simple and easy enough that all Internet User can perform and interact well. However, I suggest the One-Click Ordering should be enabled in step 3 & 4. Thus, the new customer can use One-Click Ordering in his or her first transaction.

Q2c. What is the range of items that you can buy?

Answer:

From the website http://www.amazon.com, the range of items that I can buy is ...
  • Books
  • Movies, Music & Games
  • Digital Downloads
  • Kindle
  • Computers & Office
  • Electronics
  • Home & Garden
  • Grocery, Health & Beauty
  • Toys, Kids & Baby
  • Apparel, Shoes & Jewelry
  • Sports & Outdoors
  • Tools, Auto & Industrial

Q2b. Is there any secure transactions not involving money?

Answer:

Yes, there are secure transactions not involving money. For example:


Q1biii. What are the benefits to of an online auction sale to a buyer, a seller and E-bay owners?

Answer:

The Benefits of the online auction sale like ebay are

* Worldwide Participation
* Reduction in overhead cost though savings on accounting / security function on site
* Strict Control of potential buyers on site
* Assets situated in a number of different geographical locations can all be included in the same online auction (cjm, 2005)

Also, the online auction sale is one of the e-commerce models, that is, the online auction sale can be B2C or C2C. The Study Guide (2009) shows that the benefits of E-commerce are...

* Efficiency gains
* User friendly
* Run for 7 x 24 basis real time ordering
* Globalisation
* Provide flexibility
* Reduction in processing costs
* Speed & Market freedom ... etc

In other words, the buyer and the seller within the online auction community can respectively buy and sell things, regardless of time and location. The transaction can be completed in a few minutes anyplace and anytime through Internet. The online auction sale provides an extremely convenient way to buy or sell things.

As mentioned above, the online auction sale, like ebay, provide B2C or C2C services to buyers and seller so that things can be sold or bought internationally with 7 x 24 basis. The website ebay is the service provider for such service and ebay charges the seller or buyer for each transaction. The more transactions has been completed, the more profits of the ebay owners will be gained. (Some advestisment of products will also be charged).

Reference:

1. cjm (2005). "What is an Online Auction sale". CJM Asset Management, Retrieved Mar-14th-2009 from URL - http://www.cjmasset.com/about_us/what_is_online_auction.html
2. The Study Guide (2009). "Topic 1: E-commerce, distributed applications and the Internet", E-Systems Infrastructure Development, (p.3)





Q1bii. What electronic payment systems are used? Are they globally acceptable?

Answer:

The electronic payment system used in the websites http://ebay.com, http://ebay.co.uk and http://ebay.com.au is called "PayPal". Through PayPal, the users of the communities can pay for the sold items in ebay by VISA or Master Card.

PayPal is the safer, easier way to pay and get paid online. The service allows anyone to pay in any way they prefer, including through credit cards, bank accounts, buyer credit or account balances, without sharing financial information. PayPal has quickly become a global leader in online payment solutions with more than 153 million accounts worldwide. Available in 190 markets and 18 currencies around the world, PayPal enables global e-commerce by making payments possible across different locations, currencies, and languages. (PayPal, 2009)

Thus, in Internet, PayPal is globally acceptable.

Reference:

1. PayPal (2009). "About us". PayPal, Retrieved Mar-14th-2009 from URL - https://www.paypal.com/hk/cgi-bin/webscr?cmd=p/gen/about-outside



15 Mar 2009

Q3. What happens with the new models such as price comparison sites?

Answer:

Price comparison sites is the service on Internet and allows individuals to see different lists of prices for specific products. Most price comparison services do not sell products themselves, but source prices from retailers from whom users can buy.
Price comparison sites typically do not charge users anything to use the site. Instead, they are monetized through payments from retailers who are listed on the site. Depending on the particular business model of the comparison shopping site, retailers will either pay a flat fee to be included on the site or pay a fee each time a user clicks through to the retailer web site or pay every time a user completes a specified action. (Wikipedia, 2009)

Thus, it is a B2B model. From this model of the price comparison sites namely http://www.kelkoo.co.uk/ and http://www.price.com/, the owner of them can make profits when users browse the items or use the comparison information. The revenue for these service providers grow continuously. Wikipedia (2009) shows in the UK these services made between £120m and £140m in revenue in 2005 and is growing at an annual rate of 30% to 50%.

The retailers who post products' information in these sites also gain benefits. The sites give a chance for the retailers to expose on Internet, in order that their products can be sold out with more chances.

Finally, the web users for the price comparison sites can find out the most reasonable price for the specific items.

As a result, the web users, the retailers and the sites' owners gain benefits in this price comparison sites.

Reference:

1. Wikipedia (2009). "Price Comparison Service". Wikipedia The Free Encyclopedia, Retrieved Mar-10th-2009 from URL - http://en.wikipedia.org/wiki/Price_comparison_service

Q2a. Why has it been a successful site? How does the purchase of a book work?

Q2. Visit the famous online store front at http://www.amazon.com
Q2a. Why has it been a successful site? How does the purchase of a book work?

Answer:

Matt (2007) lists that Amazon.com has been a successful site because...
  1. Teams in Amazon.com are small. They are assigned authority and empowered to solve a problem as a service in anyway they see fit.
  2. Work from the customer backward.
  3. Force developers to focus on value delivered to the customer instead of building technology first and then figuring how to use it.
  4. Start with a press release of what features the user will see and work backwards to check that you are building something valuable.
  5. End up with a design that is as minimal as possible.
  6. Create self-healing, self-organizing lights out operations.
  7. Open up your system with APIs and you’ll create an ecosystem around your application.
  8. Keep things simple by making sure there are no hidden requirements and hidden dependencies in the design.
  9. There’s bound to be problems with anything that produces hype before real implementation.
  10. Use measurement and objective debate to separate the good from the bad.
  11. Getting rid of the influence of the HiPPO’s, the highest paid people in the room.
  12. Create a frugal culture.
  13. Have a way to rollback if an update doesn’t work.
  14. Look for three things in interviews: enthusiasm, creativity, competence.
  15. Embrace innovation.
  16. Everyone must be able to experiment, learn, and iterate.
I agree with Matt, especially on the points 3, 5 and 13. From my experience, many developers use the new technologies to show off. Yet, in fact, the new technologies do not fit the users' requirement. As a result, the project may fail. Next, Point 5 sounds good. When I handled Change Control in the past, the more changes resulted in the higher failure rate. Also, the more changes make users more difficult to get used. Hence, "End up with a design that is as minimal as possible". Finally, Rollback is very important for every project, website or system, since it can minimize the impact of the failure so that the risk can be managed.

About the purchase of a book, Amazon.com offers One-Click Ordering Technique to let customers make online purchases with a single click, with the payment information needed to complete the purchase already entered by the user previously. The customers order things in Amazon.com by simply One-Click rather than using Shopping Cart Software. Amazon.com has patented this Technique since 1999. (Wikipedia, 2009)

Reference:

1. Matt (2007). "Secrets to Amazon's Success". 37signals LLC., Retrieved Mar-14th-2009 from URL - http://www.37signals.com/svn/posts/600-secrets-to-amazons-success
2. Wikipedia (2009). "1-Click". Wikipedia The Free Encyclopedia, Retrieved Mar-14th-2009 from URL -
http://en.wikipedia.org/wiki/1-Click



Q1c. Find three others examples of an online business using online community approach

Answer:

The First Example is http://www.facebook.com. Facebook provides the online community to let netizens to find old or new friends and share personal things, such as photos, fun game ... etc., to other members. Facebook can gain profits from the posted advisements. This is C2C model of e-commerce.

The Second Example is http://www.spiceoflife.com.au/dating/dating-australia.php. The website of Spice of Life offers the online community to let members have dating or seek love. Spice of Life gains profits when netizens join the membership. The is C2C model of e-commerce.

The Third Example is http://www.alibaba.com/. The website of Alibaba.com is to offer the online community to netizens to seek raw materials. This is B2B model of e-commerce.