Import_Config_file_NodeJs


Here we can make our work more easier because we can list our data in json file and call the needed data in application. In this example I defined the host and port address in config file and call the values in my project file. Also here we are using watch class from file system module. This is very help full in real time server management. Because without stopping the server the port and host address can be changeable. For example if we have the address for the host and port in config.json then it can be update in realtime without stopping the server.

Sample of config file
save as config.json (name can be vary)
{
"port" : 1336,
"host" : "127.1.1.1"
}


var http = require("http");

var file = require("fs");

console.log("Starting");

/* Call the JSON formatted config file to read the host and port values . Here we used the readFileSync class from File system module. The FileSync class use to make wait the bellow code until it read the config file - After Sync only the other code will proceed */
var config = JSON.parse(file.readFileSync("config.json"));

// Host and Port Address which are read from config
var host = config.host;
var port = config.port;

var server = http.createServer(
function(request,response){
console.log("Received request: " + request.url);
//here “.” space we have to define our file path Ex: ./Dir
file.readFile("." + request.url,
function(error,data){
if(error){
response.writeHead(404,{"Content-type":"text/plain"});
response.end("Sorry the page was not found");
}else{
response.writeHead(200,{"Content-type":"text/Html"});
response.end(data);
}
});
});

server.listen(port,host,
function(){
console.log("listening " + host + ":" + port);
}
);



/*The watchFile class is automatically search for any changes in config file with the frequent time interval. If it get any update from that file. Then it will return to the system with the changes*/
file.watchFile("config.json",
function(){
config = JSON.parse(file.readFileSync("config.json"));
server.close();
host = config.host;
port = config.port;
//Listen to newport when we update the config.json file
server.listen(port,host,
function(){
console.log("New listening " + host + ":" + port);
});
});



HTML or File call in Node.js


Before to Start please read the 3_Http_Request Doc. This is use to read a html file which is in our disk. push in to browser according to client request.

var http = require("http");
// Import File system module to read the file
var file = require("fs");

console.log("Starting");

var host = "127.1.1.1";
var port = 1337;

/* Creating a callback which fired every single request that contain the url from client request and response is similar as request*/
var server = http.createServer(
function(request,response){
console.log("Received request: " + request.url);

//After we receive the file then we have to read the file from the request URL
file.readFile("." + request.url,
function(error,data){
/* Here we have error object and Data Object in function. So error and data can be return to that specific variables. Therefore If we have error we have to respond to user with predefined String else we have to return the file*/
if(error){
//404 is the status code for not found
response.writeHead(404,{"Content-type":"text/plain"}); response.end("Sorry the page was not found");
}else{

//here our file system is Html so the content type is html
response.writeHead(200,{"Content-type":"text/Html"});
response.end(data);
}
});
});

server.listen(port,host,
function(){
console.log("listening " + host + ":" + port);
}
);

After the code completes,
1) Go to project directory using terminal
2) command : node fileName.js
3) If the server starts Go to web browser and  type http://127.0.0.1:1337/name.html
4) you will get the result as html page or error message depend on the request in browser.


HTTP Request In Node.js


Here we are request a server with defined host and port to get a response from server. This is basically created by callback function (non-blocking). Also here I mentioned some modules. The modules can be explained in coming posts.

// Importing the HTTP module from node_module
var http = require("http");

// Print some text to check the start
console.log("Starting");

// Host and Port Address
var host = "127.1.1.1";
var port = 1337;

/* Creating a callback function which fired every single request that contain the url from client request and response is similar as request. here we are importing the createServer class from http module(http.createServer)*/
var server = http.createServer(
function(request,response){
console.log("Received request: " + request.url);
response.writeHead(200,{"Content-type":"text/plain"});
response.end("Hello");
}
);

//Server Listening
server.listen(port,host,
function(){
console.log("listening " + host + ":" + port);
}
);

After completing this code ,
1) Go to project directory using terminal
2) command : node fileName.js
3) If the server starts Go to web browser and  type http://127.0.0.1:1003
4) you will get the “Hello” in browser.

Node.js Installation



To install node.js we need to install dependencies
-----------------------------------------------------------------
apt-get update
sudo apt-get install libssl-dev
sudo apt-get install g++ curl libssl-dev apache2-utils
sudo apt-get install git-core
Check the python version as well

Note: There has some possibility to have an error  when we try to install the node Because of the Dependencies .So Please recheck the dependencies

Install from the downloaded version of node from node site
----------------------------------------------------------------------------------
tar -zxf node-v0.6.18.tar.gz #Download this from nodejs.org
cd node-v0.6.18
./configure && make && sudo make install


Clone node.js from github and installation process
----------------------------------------------------------------------
git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install


Test the version and conformation of installtion
------------------------------------------------------------------
node --version //This will print the version of the node.js


Node as a real time console
--------------------------------------
Here we can check the single code or any command with node command prompt. For that in terminal text “node” Then automatically the command prompt redirect to node.js console for real . To print some line “hello node.js” in command prompt.

Example:
dhanushanth@ubuntu:~/node$ node
> console.log('hello Node.js')
hello Node.js


Run external .js files using node
--------------------------------------------
Say If the Java script file name is helloPrint.js then,
To run using terminal:
node helloPrint.js

If any issue with installation feel free to mail : dhanu.chrish@gmail.com

Why Node.js



Why Node .js?
This is basically focused on performance. Node performs the best for client’s response for servers. Say we have 100 concurrent clients and 1 megabyte of response. According that the node will have 833 Req/sec. This is comparably very fast response rather than ngins and thin. For this kind of thing we have some option call Sync and un-Sync options. We can see that later in this progress Document.
Code Comparison between Node and PHP.
For a Request,
Query in PHP.
result =query('select * from T')
The above single line of query may blocks the entire process somewhere or implies multiple execution stacks Until it get the response of the DB. Because the query is accessing the disk for an information. But when is come to the Ram and L1, L2 caches those are non-blocking processes. So we can increase our performance when we keep the application request in that level.
So the solutions for the above blocking issue are,
Option 1: Multitasking
Option 2: Other threads of execution can run while waiting
Through the event looping we can process the query efficiently.
query('select..',function(result){
        //use result
});
The above line allows the program to return to the event loop immediately using the callback function. Here No machinery required
The beauty of this event looping and callback is we can use this according to our needs (block or un-block),
For example:
We need to stop the process until we read any specific config file or specific name for the process. So for that we have to do some waiting event.
>In cultural Base
puts("Enter your name ");
var name = gets();
puts("Name : " + name);
The above sample code is asking for a user name. Until it receives the using name the other lines will not process. But again we have another problem if we have 1000 users online. And those 1000 users waiting to enter their names like this then think about the server load as that time. So here the callback plays the role to execute other line until is wait for some specific functions.
Using callback function,
puts ('Enter your name');
gets(function (name){
puts("Name :" + name);
});
But again the rejection is so complicated. Then why everyone using event loops? Because single threaded event loops require I/O to be non-blocking. We can access the disk without blocking. ruby python are event based programming languages. But the according to the user increases we need some expert knowledge of event loops. The JavaScript designed specifically to be used with an event loop and amazing thing
-Anonymous function, closures
-Only one callback at a time
-I/O through DOM event callbacks
The node.js project is to provide a purely evented non-blocking infrastructure to script highly concurrent programs.
Node JS Design goals
No function should directly perform I/O
To receive info from disk, network, or another process there must be a callbacks.
The Node is process based on Stack
ev_loop()->socket_readable(1)->http_parse(1)->load("index.html") So node sends request to the thread pool to load "index.html" and the request is send to disk In the mean time it will call the socket_readable(2) until the socket_readable(1) response. If the socket_readable(1)response then it will return file_loaded() in stack as bellow ev_loop -> file_loaded() ->http_respond(1) it means is respond to first request
Reference:
Nodes Conference 2012 - Click
Ryan Dahl (Creator of Node.js) Introduction speech - Click
Bruno Terkaly of Microsoft workshop - Click

Logic Gates In Artificial Neural Network and mesh Ploting using Matlab

In this part, you are required to demonstrate the capability of a single-layer perceptron to model the following logic gates:
AND , OR , NOT , XOR
Generate the output curves/surfaces for these perceptron-models as the input/s vary continuously from 0.0 to 1.0 (hint: mesh function can come in handy)

And Gate

%input perseptrons
p=[0 0 1 1;0 1 0 1];
%Output Perseptrons
t=[0 0 0 1];
%creation of new pereceptron
net=newp([0 1;0 1],1)
%plot input/outpur
plotpv(p,t);
grid on;
%train the perceptron at 100 iterations
net.trainParam.passes=100;
%assign perceptron to net value
[net,a,e]=train(net,p,t);
%Border Line of the Active function
plotpc(net.iw{1,1},net.b{1})
%To plot the mesh Surface
y = ones(11,11);
input = 0:0.1:1;
for i = 0:10
for j = 0:10
y(i + 1,j + 1) = sim(net,[i/10;j/10]);
end
end
mesh(input,input,y)
colormap([1 0 0; 0 1 1])







Or Gate

%input perseptrons
p=[0 0 1 1;0 1 0 1];
%Output Perseptrons
t=[0 1 1 1];
%creation of new pereceptron
net=newp([0 1;0 1],1)
%plot input/outpur
plotpv(p,t);
grid on;
%train the perceptron at 100 iterations
net.trainParam.passes=100;
%assign perceptron to net value
[net,a,e]=train(net,p,t);
%Border Line of the Active function
plotpc(net.iw{1,1},net.b{1})
a=sim(net,[1;1])
%To plot the mesh Surface
y = ones(11,11);
input = 0:0.1:1;
for i = 0:10
for j = 0:10
y(i + 1,j + 1) = sim(net,[i/10;j/10]);
end
end
mesh(input,input,y)
colormap([1 0 0; 0 1 1])



Not Gate

%input perseptrons
p=[0 1];
%Output Perseptrons
t=[1 0];
%creation of new pereceptron
net=newp([0 1],1)
%plot input/outpur
plotpv(p,t);
grid on;
%train the perceptron at 100 iterations
net.trainParam.passes=100;
%assign perceptron to net value
[net,a,e]=train(net,p,t);
%Border Line of the Active function
plotpc(net.iw{1,1},net.b{1})
a=sim(net,1)




Neural Model for Random Data

%in/Out values
%------------------
%| In1  | In2  |Out|
%|------|------|---|
%| 100  | 200  | 0 |
%| 0.15 | 0.23 | 0 |
%| 0.33 | 0.46 | 0 |
%| 0.42 | 0.57 | 1 |
%------------------

input=[ 100 0.15 0.33 0.42;150 0.23 0.46 0.57];

%here we can use the output value as 0 and 1.
%Because we are using hardlimit threshold function.
%The values are 0 or 1
target=[0 0 0 1];
%creation of new pereceptron
net=newp([0 1;0 1],1);
%plot input/outpur
plotpv(input,target);
grid on;
%train the perceptron at 100 iterations
net.trainParam.passes=100;
%assign perceptron to net value
[net,a,e]=train(net,input,target);
%Active border line
plotpc(net.iw{1,1},net.b{1})
hold on
%second Inputs
p2=[0.20 0.6 0.1;0.20 0.9 0.4];
t2=sim(net,p2)
plotpv(p2,t2);
[net, a, e]= train(net,p2,t2);
plotpc(net.iw{1,1},net.b{1});
hold off