Skip to main content

Posts

Showing posts from June, 2011

Node.js and reckless console.log() statements

I've seen code that over uses, nah rather abuses the logger. Many times teams use it in the wrong way or sometimes over use it and then struggle to improve performance. This simple test will show the effect.

From the synopsis of Node.js doc, this is my server code:

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');

Now I use JMeter to test the performance. I fire a 1000 HTTP requests within a time frame of 2s, with a wait of 1ms duration in between each new request. In my environment the median response time was 2ms for each request.

Now I add a single console log statement for the callback function in the above server code.

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': …

parseInt() galore

After the Falsy post, here is another interesting table listing various values as evaluated by parseInt(). Some are quirky indeed :)

Free lunch to anyone who shows me another table that covers parseInt() in such detail :P

ExpressionValueRemarksparseInt("23")23parseInt(" 23")23Leading white space is droppedparseInt("-23")-23parseInt(23)23parseInt(023)19Radix 8 is usedparseInt(0x23)35Radix 16 is usedparseInt("23",4)11Radix 4 is usedparseInt("23",4.99)11Radix is always converted to int32parseInt("23",36)75Radix 36 is usedparseInt("z",36)35Radix 36 is usedparseInt("23",37)NaNMax Radix is 36parseInt("23",1)NaNMin Radix is 2parseInt("23",0)23Radix used is 10parseInt("23",-1)NaNMin Radix is 2parseInt("23",3)2Radix 3 can use only 0,1,2parseInt("023")19Radix defaults to 8parseInt("0x23")35Radix defaults to 16parseInt("023",5)13Radix used is 5parseI…

Compress your HTML files

Updated: 2012-02-24


This is probably what every web developer knows. A very basic performance improvement for your HTML pages. You should remove all the white spaces and line breaks before you publish your html page. You can view the effect directly in a DOM inspector and this post touches the same.

Consider this example available from the HTML5 spec (pg 21):

<!DOCTYPE html>
<html>
  <head>
    <title>Sample page</title>
  </head>
  <body>
    <h1>Sample page</h1>
    <p>This is a <a href="demo.html">simple</a> sample.</p>
    <!-- this is a comment -->
  </body>
</html>


Save it in a .html file and open in your favorite browser. Next view the DOM created by this file. You can use the DOM inspector available in most of the browsers today (launch with CTRL + SHIFT + I). You will see the below DOM tree created:


So a lot of extra text nodes are introduced in place of your white spaces and line b…

Sync Chrome versions and Chrome Extensions that I love

I just decided to live a little more on the edge and downloaded the Google Chrome Canary build, v13.0.x which is the developer build. But be warned, it could cause crashes though I've not faced any so far. Flash does seem to misbehave a bit ummm. Page loads are now definitely fast. Or do they seem fast to me :)

Meanwhile, between various versions of Chrome, one just needs to enable sync to automatically update bookmarks, extensions .. Its easily done as follows:

Click on the Wench icon on the top right and select Options->Personal Stuff
Click on Set up Sync...
Enter your Google user name and password when prompted.
You will be asked to Choose what to sync
Select the options you prefer. I checked them all.
Click on Ok and thats that.

Repeat this on your new browser version and you should have all the settings, apps, extensions, themes, bookmarks everything imported, rather synced.

Now here is the list of Chrome Extensions that I like and regularly use (no Orkut or Facebook here :P )


Silve…