Tagged: NodeJS
A Comparison of Programming Languages I’ve Used
Comparing programming languages has been a popular sport for many years.
I love the quote from Antoine de Saint-Exupery who once said “If you want to build a ship, don’t tell people to collect wood, or assign them tasks, but rather teach them to long for the endless immensity of the sea“.
So let’s see how each of the dozen-or-so programming languages I’ve used over the last few decades support that epic vision of empowerment: Continue reading
A Node.JS Application on Amazon Cloud. Part 4: Launching your webserver
And finally, launch your webserver for continuous operation
When you’re ready to launch your webserver and leave it running, you need to start it as a background process.
If you don’t, then when you logout or close your SSH session, you inadvertently kill your webserver because you ran it in the foreground – ie as a child of your SSH process. To avoid this behaviour you could of course simply run the server in the background by appending & to your bash command:
node server.js &
However, the node server may still die when you close your SSH session, because even though the node process is running in the background, it’s standard console outputs stdout and stderr are still pointed at the terminal. That means that if the node server tries to write a message to console.log or console.error it will encounter a pipe error and terminate. This can be avoided by piping the output of your process to logfiles:
node server.js > stdout.log 2> stderr.log &
You will also want to log in later and review the contents of the logfiles to diagnose any problems you may get using your API.
If you still get problems then you can try standard commands like nohup, which can be used to run all types of processes in the background.
Or try this solution developed specifically for Node, which has a number of advantages :
First, install the forever node package using npm:
sudo npm install -g forever
And then start your application:
forever server.js
or
forever start server.js
You don’t need to pipe stdout and stderr to files now, forever itself writes any output to these streams to log files.
you can define the log file location and names using the -o and -e command line arguments, or just use the default. To find the location of the log files forever has created, use the command
forever logs
An added benefit of using forever is that forever can automatically restart your app when it crashes or stops for any reason. To restrict the number of restarts to, say, 10 you could use:
forever -m10 server.js
forever has a number of other useful commands, such as :
To list all running processes:
forever list
Then, to stop a process, take a note of the process id number within the brackets and use it as following command:
forever stop 0
Restarting a running process goes:
forever restart 0
If you’re working on your application file, you can use the -w parameter to restart automatically whenever your server.js file changes:
forever -w server.js
JavaScript is the new C
In the days when processing power was expensive, writing assembler code was the benchmark, and high level languages were seen as an extravagance, C was a revelation. Near-assembler fast, bit-level operations, but still an expressive 3GL.
OK, so nothing like JavaScript then?
Wait, that’s only the beginning of the story.
Javascript on a Raspberry Pi – How to install Node.JS
Why install Node.JS on a Raspberry Pi ?
I’ve been using Node.JS as the backend framework for building single-page web apps recently. On top of providing the advantage of an asynchronous, event-based programming model on the backend, it means I can code in Javascript on both the frontend and the backend again – just like in the good old days coding client-server applications in C.
And so when I come up with an application where I want to use my Raspberry Pi as a micro web server, but one that needs more than the ability to serve static webpages, I right away think of Node.
a Raspberry PI NFC Reader
Coming soon – how I built an NFC card reader on the Raspberry Pi with a web dashboard displaying NFC events detected in real time…
How to build a REST Web API on a Raspberry PI in JavaScript
One of the most useful reasons for providing your Raspberry Pi with a REST API is to expose its inputs and outputs to a web client (on any iPhone, laptop or desktop PC anywhere in the world) for remote monitoring and/or control. This is part 1 of a 2 part blog showing how to implement a REST API in JavaScript.
A Node.JS Application on Amazon Cloud. Part 3: A simple Webserver in Javascript using Node, Express, and MongoDB
In this third part of our exercise, we’re going to use the primary AWS EC2 instance on which we installed Node in Part 1, and the database EC2 Instance we set up in Part 2, as the platform for building a simple web application server. We are going to code that web server in Javascript, using Node together with the Express and Mongoose Node library packages.
A Node.JS Application on the Amazon Cloud. Part 2: Adding a Database
In Part 1, we installed Node on an EC2 instance on Amazon Web Services (AWS). In this part 2 of the series, we’re going to add a second instance running the popular MongoDB database.
A Node.JS Application on the Amazon Cloud. Part 1: Installing Node on an EC2 instance
In this three-part exercise, we’re going to build a web application using Javascript on both the client and server side, using Amazon Web Services (AWS) cloud-hosting infrastructure and the Node.JS framework.
What we’re going to do first is install Node on an Elastic Cloud Computing (EC2) virtual server instance provided by Amazon Web Services. In the following parts of this series, we’ll add a MongoDB database instance, and develop a simple server-side web application in Javascript using the Express framework and the Mongoose library for accessing our database.
Javascript on a Raspberry Pi – How to install Node.JS
Why install Node.JS on a Raspberry Pi ?
I’ve been using Node.JS as the backend framework for building single-page web apps recently. On top of providing the advantage of an asynchronous, event-based programming model on the backend, it means I can code in Javascript on both the frontend and the backend again – just like in the good old days coding client-server applications in C.
And so when I come up with an application where I want to use my Raspberry Pi as a micro web server, but one that needs more than the ability to serve static webpages, I right away think of Node.