Install Apache 2 In Linux


Apache is the web server piece of our puzzle. From within your terminal window issue the command:

sudo apt-get install apache2

If, by chance, you are using a distribution that does not use Sudo, you will need su to the root user and issue the above command without the sudo command.
Depending on your OS installation, the above command might need to pick up some dependencies. If so, okay those dependencies. At the end of the installation, Apache should automatically start. If it doesn't, issue the following command:

sudo /etc/init.d/apache2 start

You can now open up a browser and point it to the IP address (or domain) of the server to get the famous "It works!" page. You are ready to move on to PHP.

Ready For Interviews (Summary)

After spending couple hours of time i came up with summary of the Software interview question .I hope it will help full to you.

Tell me about yourself.
A good answer to this question is about two minutes long and focuses on work-related skill s and Accomplishments. Tell the interviewer why you think your work-related skills and Accomplishments would be an asset to the comp any. Do not describe yourself with tired old cliché s such as "I am a team player," "I have excellent communication skill s," unless you u can prove it

Why should we hire you?   
Take several minutes to answer this question, incorporating your personality traits, strengths, and experience in to the job you're applying for. A good answer is to focus on how you can benefit the company. 

As I understand your needs, you are first and foremost looking for someone who can manage the sales and marketing of your book publishing division. As you’ve said you need someone with a strong background in trade book sales. This is where I’ve spent almost my entire career, so I’ve chalked up 18 years of experience exactly in this area. I believe that I know the right contacts, methods, principles, and successful management techniques as well as any Person can in our industry.

What do you worry about?
Redefine the word ‘worry’ so that it does not reflect negatively on you. 
Example: “I wouldn’t call it worry, but I am a strongly goal-oriented person. So I keep turning over in my mind anything that seems to be keeping me from achieving those goals, until I find a solution. That’s part of my tenacity, I suppose.”

What is your greatest strength (or strengths)?
I have the ability to train and motivate people. At Acme Co., employee turnover was very high. Intelligence...management "savvy". 
Honesty...integrity...a decent human being. 
Good fit with corporate culture...someone to feel comfortable with...a team player who meshes 
well with interviewer's team. 
Likeability...positive attitude...sense of humor. 
Good communication skills. 
Dedication...willingness to walk the extra mile to achieve excellence. 
Definiteness of purpose...clear goals. 
Enthusiasm...high level of motivation. 
Confident...healthy...a leader.

What is your greatest weakness s (or weaknesses)? 
Don't answer by claiming that you have no weaknesses. Confess a real weakness that you have, but choose one that isn't particularly relevant to the job you're seeking. Does n o t answer with phony weaknesses such as "I'm a slave to my job" or "I'm a workaholic?" Just state the weakness, tell the interview how it has harmed you in your work life, and what steps you have taken to improve it. A good step one can take to improve a weakness is to read self-help books on the subject. 



“Nobody's perfect, but based on what you've told me about this position, I believe I' d make an outstanding match. I know that when I hire people, I look for two things most of all. Do they have the qualifications to do the job well, and the motivation to do it well? Everything in my background shows I have both the qualifications and a strong desire to achieve excellence in whatever I take on. So I can say in all honesty that I see nothing that would cause you even a small concern about my ability or my strong desire to perform this job with excellence.” 

Instead of confessing a weakness, describe what you like most and like least, making sure that what you like most matches up with the most important qualification for success in the position, and what you like least is not essential.

Do you work better alone or as part o f a team?
If the position you're applying for require s you to spend lots of time alone, then of course, you should state that you like to work alone and vice versa.

Do you consider yourself to be a risk -taker? 
How you answer this question depends on the type of company it is. If it is a start-up company or within a highly-competitive industry, then they are probably looking for those more willing to take risks. If you believe the company is this type, then offer an example of a risk you've taken in business. If the company is a well-established industry leader, risk takers are not as highly valued. Of course, no comp any is looking for employee s who are foolish in their risk-taking behavior r, so a good rule of thumb is to place yourself f somewhere in the middle -- you are neither too foolish nor overly cautious . 

What salary are you expecting?  
You should do some research before the job interview so that you don't ask for too much o r too little. You might be asked to justify why you are worth the salary you are asking, so be prepared with an answer (i.e., tell them how your skills and experience will benefit the company so much that your salary will be a bargain for them.)

Who is your favorite boss?
These are two of the most difficult interview questions to answer unless you understand what the interviewer wants to hear, and if you realizes at you can answer both questions with basically the same answer. Employers are looking for employees who are interested in contributing to the comp any, improving their job skill and making a contribution. So, instead of insulting o r d e meaning your past bosses by telling the interviewer that he was always "hogging all the crew d it" or was "totally in competent",

When can you start?
It is customary for most employees to give at least two weeks’ notice to their current employer. Those in management positions are expected to give long r notice. You will not earn points if you express disrespect toward your current employer by telling the interviewer that you plan to q u it your present job without giving sufficient notice. He will assume you will show his company the same amount of disrespect . It is also a good idea to tell the interviewer you plan to start learning about your n e w position / employ r on your off-hours (i.e., reading employee training manuals, etc.) Telling the interviewer you can't begin work for a few month s b e cause you want to take some time-off is not a good idea

How long can you commit to work with us?
I like new challenges and a chance to grow. As long I keeping getting these, I don’t think I’ll need to switch over. I’d like to believe that this Relationship lasts for many years. However, I haven’t set a time limit as such.

You seem to be drawing a good salary. Will you be OK in taking a salary cut?
I believe that at one point of time in career salary becomes secondary and self-actualization become more important. While taking up any new job, it will be my priority to ensure that the work culture, chances to contribute and grow are sufficient along with the money I am paid. I also believe that any good company who cares about its employees ensures that they are paid well

What do you do to improve your knowledge?
The field of IT is very revolutionary. It is extremely important to keep yourself abreast with the new technological developments and this needs you to take some time out of your work schedule so that you can keep sharpening your saw. To answer this question, you can tell the recruiter about the forums which you keep visiting, blogs which you keep reading. It will be an advantage if you are a member of some local user group

What is more important to you: the money or the work?
Money is always important, but the work is the most important. There is no better answer.

What qualities do you look for in a boss?
Be generic and positive. Safe qualities are knowledgeable, a sense of humor, fair, loyal to subordinates and holder of high standards. All bosses think they have these traits. 

Do you have any blind spots?
Trick question. If you know about blind spots, they are no longer blind spots. Do not reveal any personal areas of concern here. Let them do their own discovery on your bad points. Do not hand it to them.

Can you perform under pressure?
Most of the times, the job of software development is that of working under pressure. Sometimes, it will be the pressure of delivering on time while it can be that of a bug that has sprung all of a sudden in your code. So, expect pressure in everything you do. It is important to maintain your performance and develop strategies to deliver under pressure. You can then go ahead and talk about your way of dealing with pressure and performing under it\

Tell us some of your weaknesses?
The best way to answer this question will be to turn one of your strengths as a weakness and say that others accuse you of having this weakness but you think it is important to work in this manner. For e.g.: “My colleagues accuse me of paying too much attention to syntaxes but I believe it is important when you are writing the code to avoid spending too much time on finding and fixing the bugs later on.”

You do not have all the experience we need for this position?
It is not possible for a candidate to have all the experience an employer requires. Even if you match yourself up to the expectations on technical front, there will be some difference in the work environment. And, it is absolutely fine. 
The best way to deal with this question is to analyses the requirements of the position well and match your skills as close to them as possible. If something is still left untouched, offer your quick grasping power and ability to learn quickly as a solution & back it up with an example from the past. 

What irritates you about co-workers?
The purpose of this question is to see how well you can fit into a team. Basically, you should not have a problem with a person, although you can have a problem with the style of working. So, to answer this question you can simply say, “I understand that IT is about team work, so we can’t afford to problems with co-workers but if someone is not serious about their work or does a low quality work affecting the whole project, I definitely do not like it

For how long do you expect to stay with our organization?
You should ensure that you give an impression that you will pay back more than what you take from the company: 
-You can say I will stay here as far as I see an opportunity for growth, as I am looking for a stability in work place 
-If they stress on number of years say 3-4 years, and more if I can explore new challenges/growth opportunities

Why should we hire you?
-Here you should discuss the profile you have applied for and your strengths/experience with which you can add value to the job 
-Discuss your achievements at your previous job, and say that I have developed my skills to suit my current profile, but I want to develop myself further and face new challenges, and for that I need to change my job. 
- I will always be willing to change roles share responsibilities to suit company requirements

Do you have any questions? 
This question is usually the last one an interviewer will ask as it is a logical way to end the interview. Never go to an interview without preparing questions to ask beforehand. Avoid asking about salary, vacation time, employee benefits, etc. until you have asked a number of other questions that demonstrate your interest in working for the company. Good questions to ask the interviewer:

What is your idea of an ideal company?
Do not go over board and ask for, it might give an impression that you are too demanding, some of the answers could be:
-An ideal company provides maximum opportunities for growth of employees. 
-They provide comfortable and flexible work environment, so that employees can perform at their best and work towards company’s benefit. 
-A company that encourages learning 
-A company that encourages opens culture

Why is this position available?
Is this a new position? Ho w long has this position existed? 
How many people have held this position in the last two years? 
Who would be my supervisor? To whom would I report? 
Whom will I supervise? 
With whom will I be working most closely? 
What do you like about working for this company? 
What are the current plans for expansion or cutbacks? 
What kind of turnover rate does the company have? 
How financially sound is this company? 
What projects and assignments will I be working on? 
What happened to the person that held this position before? Was he promoted or fired? 
What is this company's culture, (i.e., is it rigid and formal or relaxed and flexible?) 
What are the current problems facing the company (or my department)? 
What do you like the most about working for this company? The least? 
What is the philosophy of the company? 
What do you consider to be the company's strengths and weaknesses? 
What are the company's long and short term goals? 
Describe the work environment. 
What attracted you (the interviewer) to this organization? 
Why do you enjoy working for this company? 
Describe the typical responsibilities of the position. 
What are the most challenging aspects of the position? 
Describe the opportunities for training and professional development. 
Will I receive any formal training? 
What is the company's promotional policy? 
Are there opportunities for advancement within the organization? 
When can I expect to hear from you?

Event - Driven Development


Traditional programming does input and output the same way as it does local function calls: Processing cannot continue until an operation finishes. This programming model of blocking when doing I/O operations derives from the early days of time-sharing systems in which each process corresponded to one human user.  Managing many processes places a big burden on the operating system — in memory and context switching costs — and the performance of these tasks starts to decay after a certain number is reached.

Multi-threading is one alternative to this programming model. A thread is a kind of light- weight process that shares memory with every other thread within the same process. Threads were created as an ad hoc extension of the previous model to accommodate several concurrent threads of execution. When one thread is waiting for an I/O operation, another thread can take over the CPU. When the I/O operation finishes, that thread can wake up, which means the thread that was running can be interrupted and eventually be resumed later. Furthermore, some systems allow threads to execute in parallel in different CPU cores.

This means that programmers do not know what set of threads is executing at any given time, so they must be careful with concurrent access to the shared memory state. They have to use synchronization primitives like locks and semaphores to synchronize access to some data.

The solution is, Event-driven programming is a programming style whereby the flow of execution is determined by events. Events are handled by event handlers or event callbacks. An event callback is a function that is invoked when something significant happens — such as when the result of a database query is available or when the user clicks on a button. 

This style of programming — whereby instead of using a return value you define functions that are called by the system when interesting events occur — is called event-driven or asynchronous programming. 

The event-driven programming style is accompanied by an event loop. An event loop is a construct that mainly performs two functions in a continuous loop — event detection and event handler triggering. In any run of the loop, it has to detect which events just happened. Then, when an event happens, the event loop must determine the event callback and invoke it.

Module publish in Node.js




To upload or module  to npm repository we need to create a user account
command : npm adduser

To push our own module in to npm repository  we need to create the package json file. For that we have to do some step to complete

1) Go to project folder using terminal and command
npm init

2) This will create a package.json Which contain all the details about the module. During the process fill the detail that system asks

3) After creation of the user upload using
command : npm publish

4)Tthen we can search the packate in npmjs.org location with our module name.

NOTE: The module can be updateable using the npm publish command .but now we have to change the version in package.json file. After the change of version simply update the module using npm publish

Write File with Sync and Async using Node.js



Writing the file using file system module. we have two options to process synchronous and asynchronous. Here we are testing on synchronous of the node.js. The sequence of code should wait until we write the sample txt file. For that waiting we are using writeFileSync class from File system module.

var file = require("fs");
console.log("Starting...");

var contents = file.writeFileSync("./write_file.txt", "Text to Write");
console.log(" done ...");

Here we are testing on asynchronous of the node.js. The sequence of code should not wait until we read the sample txt file. For that we are using callback function.

var file = require("fs");

console.log("Starting...");

var contents = file.writeFile("./write_file.txt", "Text to Write",
function(error){
console.log("written file");
}
);

console.log(" done ...");

Read the file sync and async using Node.js



Reading the file using file system module. we have two options to process synchronous and asynchronous. Here we are testing on synchronous of the node.js. The sequence of code should wait until we read the file sample txt file. For that waiting we are using readFileSync class from File system module.

var file = require("fs");
console.log("Starting...");

var content = file.readFileSync("./sample.txt");
console.log("Content : " + content);
console.log("Keep going ...");

If we run the file in node. First it will print the sample txt and after that only it will print the “Keep going” String. Because it is waiting for the read command finish.

Here we are testing on asynchronous of the node.js. The sequence of code should not wait until we read the sample txt file. For that we are using callback function.

var file = require("fs");
console.log("Starting...");

file.readFile("./sample.txt",
       function (error,data){
           console.log("Contents" + data);
});
console.log("Keep going ...");

This will not wait until read the file So it will print the “Keep going” first . After that only it will return the text file content.

Express module in Node.js


Express is the high performance and high class web development module package for Node . Which will process on top of the HTTP module and call the http class. Therefore we can create website with less of an effort and clean.

To install express module,
npm install express in linux terminal.

use npm list command to check what are the module listed in your on your project. Check the update of the module because according to the update the class calling method can be vary. For example,

Express older version: var app = express.createServer();
Express newer version: var app = express();

So this kind of change mentioned in module doc.

Sample Code :

var file = require("fs");
var config = JSON.parse(file.readFileSync("config.json"));
var host = config.host;
var port = config.port;

//include the express module
var express = require('express');
var app = express();

//check the original route path
app.use(app.router);

//express the static file location (Say if we have our html file in public folder)
app.use(express.static(__dirname + "/public"));

app.get("/", function(request, response){
//Sending the response to client
response.send('hello world');
});

/*Any URl come with /hello/ then we can redirect to our public directory here we print the text which is continue with /hello/ */
app.get("/hello/:text",
   function(request,response){
       response.send("hello" + request.params.text);
   }
);
//file format similar to JSON format
var users = {
       "1" : {
               "name" : "user 1",
               "Social" : "user 1 link"
               },
       "2" : {
               "name" : "user 2",
               "Social" : "user 2 link"
               }
};

/*Getting the user by ID. Here we search in broweer as 127.1.1.1:1336/user/1 because our host is 127.1.1.1 and port is 1336*/
app.get("/user/:id",
   function(request,response){
       var user = users[request.params.id];
       if(user){
        response.send("<a href://faceboo.com>" + user.Social + "view me " + user.name+"</a>");
       }else{
           response.send("Sorry! User not found",404);
       }

   }
);


app.listen(port,host);

1)run the .js file using node extension
2) call the user id with hello/id

NOTE:config.json file contain the host and port address .see the doc

Package Manger in Node.js


The Package manager is like a library for Node.js. From this package manager the classes and function can be importable . The node has repository  www.npmjs.org to upload and download modules for Node.js. The most interesting modules are express and mongodb and more.

We have to install npm manager in our machine .usually this will automatically installed when we install the node.js. If not we can download install the npm manager using linux terminal command
sudo apt-get install npm

Also each module has it’s own website. Which describe the module functions and the classes. For example we have a module call underscore and also this has own page call www.underscore.org this supports lots fo libraries in JavaScript.

After the installation of the npm Package manager we can download the module using the linux terminal command
1) Go to project directory using linux terminal
2) In terminal command : npm install underscore ( underscore is the name of the package)
3) It will go to npm registry, fetch and download into your directory which is a node_module directory. which contain       underscore (Library ) source code
4) If you import the module into your project directory then it can be automatically importable in projects using,
var name = require(“underscore”) // underscore is just a library name

The module read the details using package.json which is in the module directory.

ERROR:
node.js:201
       throw e; // process.nextTick error, or 'error' event on first tick
             ^
Error: Cannot find module 'graceful-fs'
   at Function._resolveFilename (module.js:334:11)
   at Function._load (module.js:279:25)
   at Module.require (module.js:357:17)
   at require (module.js:368:17)
   at Object.<anonymous> (/usr/share/npm/lib/utils/ini.js:32:10)
   at Module._compile (module.js:432:26)
   at Object..js (module.js:450:10)
   at Module.load (module.js:351:31)
   at Function._load (module.js:310:12)
   at Module.require (module.js:357:17)
dhanushanth@ubuntu:~$

If you got any error like above . Then the problem is with the older version of node. So you need to update the node.js version or we have another solution as well.

Solution : This will install the npm according to our node.js version

git clone git://github.com/isaacs/npm.git
cd npm/scripts
chmod +x install.sh
sudo ./install.sh


Npm library global installation
Another place that we can install the node_module globally which means that we can install this once as global
To install that command in terminal,
sudo npm install underscore -g

After the installation we can update the module using below command,
npm update _PackageName_


Search for package
In www.npmjs.org we can search for packages in search package after the search we just need to get the name of the package and install the module using the same way that we have done for unsercore


Note: Always check the updates of the package doc for changes. Because according the update the classes and function calling may be chage.

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);
});
});