Found this amazing installer, that gets you going instantly
http://railsinstaller.org/en
And Remember,
- Ruby is the language
- RubyGems is the packaging system
- Rails is a web application development framework written in the Ruby language
A fun place to start learning Ruby.
http://tryruby.org/
Monday, July 29, 2013
Friday, May 31, 2013
Screenshot using nodejs and phantomjs
In the ever evolving javascript space the best way to connect the pieces is thru solving problems. The problem I am trying to solve here is "provide
users the ability to request screenshots on a remote machine. Use a node.js server that allows you to enter a URL and get screenshots
back from the browser"
After installation open the command prompt and type
The project contains 3 pieces,
nodejs_example1.js - is the server code that defines how the server talks to the client.
nodejs_example1.html - is the html page loaded in the client browser.
phantomjs_example1.js - contains the phantomjs code to take the screenshot
nodejs_example1.js
phantomjs_example1.js
C:\>node nodejs_example1.js
Open the bowser and load the following page "http://localhost:8090/", Click on the "Get ScreenShot" button, the screenshot gets stored in your local folder.
The next blog would be about sending the screenshot to the server.
Installation and System Setup
Download nodejs installer from http://nodejs.org/download/After installation open the command prompt and type
C:\>node --version //prints the version number C:\>npm -version //npm is a NodeJS package manager. it's used to install node programs.The next step would be to install all the dependencies for the project, -g flag is to install the module globally.
C:\>npm install -g socket.io C:\>npm install -g phantomjs C:\>npm install -g node-static C:\>npm ls //lists out all the modules installed
The project contains 3 pieces,
nodejs_example1.js - is the server code that defines how the server talks to the client.
nodejs_example1.html - is the html page loaded in the client browser.
phantomjs_example1.js - contains the phantomjs code to take the screenshot
nodejs_example1.js
var http = require('http') , io = require('socket.io') , fs = require('fs') , os = require('os') , path = require('path') , childProcess = require('child_process') , phantomjs = require('phantomjs'); var server = http.createServer(onCreateHandler); var socket = io.listen(server); server.listen(8090); var sessionid; function onCreateHandler(req, res) { fs.readFile(__dirname + '/nodejs_example1.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading nodejs_example1.html'); } res.writeHead(200); res.end(data); }); } socket.on('connection', function (socket) { sessionid = genRandNum(); socket.emit('session id', { id: sessionid}); socket.on('capture screen event', function (id, url) { if(sessionid == id){ captureScreenShot(url); }else{ console.log("Invalid Session ID"); } }); }); function captureScreenShot(data){ var binPath = phantomjs.path; output = os.arch() + os.platform() + "_" + Math.round(os.uptime()) + '.png'; var childArgs = [ path.join(__dirname, 'phantomjs_example1.js'), data, output] console.log(childArgs); childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) { // handle results }) } function genRandNum() { return Math.floor((Math.random()*10)+1); //Return a random number between 1 and 10 }nodejs_example1.html
<html> <head> <script type="text/javascript" src="http://localhost:8090/socket.io/socket.io.js"></script> <script type="text/javascript" src="http://localhost:8090/phantomjs/phantomjs.js"></script> <script type="text/javascript" src="http://localhost:8090/phantom/phantom.js"></script> <script> var socket = io.connect('http://localhost'); var sessionid = 0; socket.on('session id', function (data) { sessionid = data.id; }); function captureScreenShot(){ socket.emit('capture screen event', sessionid, document.getElementById("inputurl").value ); } </script> </head> <body> url for screenshots <input type="text" id="inputurl" value="https://www.google.com/"><br> <input type="submit" value="Get Screen Shot" onclick="captureScreenShot()"> </body> </html>
phantomjs_example1.js
var system = require('system'); var page = require('webpage').create(); address = system.args[1]; output = system.args[2]; //debug_address = 'https://www.google.com/'; //debug_output = 'hello.png'; page.open(address, function (status) { console.log(address); if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 200); } });To Run the code, (note all three files must be in the same folder) start your server as follows,
C:\>node nodejs_example1.js
Open the bowser and load the following page "http://localhost:8090/", Click on the "Get ScreenShot" button, the screenshot gets stored in your local folder.
The next blog would be about sending the screenshot to the server.
Subscribe to:
Posts (Atom)