Skip to content

Commit

Permalink
Added code for debugging Node.js talk.
Browse files Browse the repository at this point in the history
  • Loading branch information
NeoPhi committed Apr 15, 2013
1 parent 2e55c9b commit 959e575
Show file tree
Hide file tree
Showing 14 changed files with 285 additions and 6 deletions.
6 changes: 6 additions & 0 deletions Akka/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.classpath
.gradle
.project
.settings
bin
build
6 changes: 3 additions & 3 deletions Akka/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ repositories {
}

dependencies {
runtime group: 'se.scalablesolutions.akka', name: 'akka-actor', version: '1.0'
runtime group: 'se.scalablesolutions.akka', name: 'akka-typed-actor', version: '1.0'
runtime group: 'se.scalablesolutions.akka', name: 'akka-remote', version: '1.0'
compile group: 'se.scalablesolutions.akka', name: 'akka-actor', version: '1.0'
compile group: 'se.scalablesolutions.akka', name: 'akka-typed-actor', version: '1.0'
compile group: 'se.scalablesolutions.akka', name: 'akka-remote', version: '1.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ private static void sendToTheFuture(final ActorRef actorRef, final String messag
}
catch (Exception exception)
{
System.out.println(exception.getMessage());
System.out.println("Future await exception" + exception.getMessage());
}
if (future.isCompleted())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
@SuppressWarnings("unchecked")
public class MyFirstTypedActor extends TypedActor implements MyTypedInterface
{
public void echo(String message)
public void echo(final String message)
{
log().logger().debug(message);
}
Expand All @@ -46,7 +46,7 @@ public List<String> reverse(final List<String> data)
return result;
}

public Future<MyTypedMessage> send(MyTypedMessage myMessage)
public Future<MyTypedMessage> send(final MyTypedMessage myMessage)
{
return future(new MyTypedMessage(myMessage.getFrom(), myMessage.getTo()));
}
Expand Down
2 changes: 2 additions & 0 deletions debugging/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.log
node_modules/
5 changes: 5 additions & 0 deletions debugging/.jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"globals": {
"console": false
}
}
14 changes: 14 additions & 0 deletions debugging/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "debugging",
"version": "0.0.1",
"description": "Sample code for Node.js debugging talk",
"main": "index.js",
"dependencies": {
"debug": "0.7.1",
"memwatch": "0.2.2",
"tick": "0.0.3",
"xml2js": "~0.2.6"
},
"author": "Daniel Rinehart",
"license": "MIT"
}
121 changes: 121 additions & 0 deletions debugging/sample.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<?xml version="1.0"?>
<!-- http://msdn.microsoft.com/en-us/library/windows/desktop/ms762271(v=vs.85).aspx -->
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
<book id="bk104">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description>
</book>
<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-09-10</publish_date>
<description>The two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
Oberon's Legacy.</description>
</book>
<book id="bk106">
<author>Randall, Cynthia</author>
<title>Lover Birds</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-09-02</publish_date>
<description>When Carla meets Paul at an ornithology
conference, tempers fly as feathers get ruffled.</description>
</book>
<book id="bk107">
<author>Thurman, Paula</author>
<title>Splish Splash</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-11-02</publish_date>
<description>A deep sea diver finds true love twenty
thousand leagues beneath the sea.</description>
</book>
<book id="bk108">
<author>Knorr, Stefan</author>
<title>Creepy Crawlies</title>
<genre>Horror</genre>
<price>4.95</price>
<publish_date>2000-12-06</publish_date>
<description>An anthology of horror stories about roaches,
centipedes, scorpions and other insects.</description>
</book>
<book id="bk109">
<author>Kress, Peter</author>
<title>Paradox Lost</title>
<genre>Science Fiction</genre>
<price>6.95</price>
<publish_date>2000-11-02</publish_date>
<description>After an inadvertant trip through a Heisenberg
Uncertainty Device, James Salway discovers the problems
of being quantum.</description>
</book>
<book id="bk110">
<author>O'Brien, Tim</author>
<title>Microsoft .NET: The Programming Bible</title>
<genre>Computer</genre>
<price>36.95</price>
<publish_date>2000-12-09</publish_date>
<description>Microsoft's .NET initiative is explored in
detail in this deep programmer's reference.</description>
</book>
<book id="bk111">
<author>O'Brien, Tim</author>
<title>MSXML3: A Comprehensive Guide</title>
<genre>Computer</genre>
<price>36.95</price>
<publish_date>2000-12-01</publish_date>
<description>The Microsoft MSXML3 parser is covered in
detail, with attention to XML DOM interfaces, XSLT processing,
SAX and more.</description>
</book>
<book id="bk112">
<author>Galos, Mike</author>
<title>Visual Studio 7: A Comprehensive Guide</title>
<genre>Computer</genre>
<price>49.95</price>
<publish_date>2001-04-16</publish_date>
<description>Microsoft Visual Studio 7 is explored in depth,
looking at how Visual Basic, Visual C++, C#, and ASP+ are
integrated into a comprehensive development
environment.</description>
</book>
</catalog>
31 changes: 31 additions & 0 deletions debugging/src/console.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
node src/console.log
**/
var obj = {
a: 12,
b: {
c: 'd'
}
};

console.info('-------------------- console.log --------------------');
console.log('logged message');
console.log('util.inspect', 0.1, obj);
console.log('format syntax %d, %s, and %j', 0.1, obj, obj);

console.warn('-------------------- console.error --------------------');
console.error('logged message');
console.error('util.inspect', 0.1, obj, obj);
console.error('format syntax %d, %s, and %j', 0.1, obj, obj);

console.info('-------------------- console.dir --------------------');
console.dir(obj);

console.warn('-------------------- console.trace --------------------');
console.trace('db-op');

console.warn('-------------------- console.assert --------------------');
console.assert(1 === 1, 'one is one');
console.assert(1 === 2, 'one is two');

console.log('never logged');
27 changes: 27 additions & 0 deletions debugging/src/debug.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
node src/debug.js
DEBUG=* node src/debug.js
DEBUG="worker:*" node src/debug.js
DEBUG=* node src/debug.js 2>&1 | tee /dev/null
**/

var a = require('debug')('worker:a');
var b = require('debug')('worker:b');
var c = require('debug')('controller');

function workA() {
a('doing lots of uninteresting work');
setTimeout(workA, Math.random() * 1000);
}

workA();
c('worker a started');

function workB() {
var wait = Math.random() * 2000;
b('doing some work for %d', wait);
setTimeout(workB, wait);
}

workB();
c('worker b started');
14 changes: 14 additions & 0 deletions debugging/src/heap.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
node src/heap.js | less
**/
var memwatch = require('memwatch');

function LeakingClass() {
}

var leaks = [];
var heapDiff = new memwatch.HeapDiff();
for (var i = 0; i < 100; i++) {
leaks.push(new LeakingClass());
}
console.log(JSON.stringify(heapDiff.end(), null, ' '));
30 changes: 30 additions & 0 deletions debugging/src/leak.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
node src/leak.js
**/
var memwatch = require('memwatch');
memwatch.on('leak', function(info) {
console.log('LEAK');
console.dir(info);
process.exit(0);
});
memwatch.on('stats', function(stats) {
console.log('STATS');
console.dir(stats);
});

var parsers = [];
var data = [];
var xml2js = require('xml2js');
var fs = require('fs');
function loadData() {
fs.readFile('sample.xml', function(err, xml) {
var parser = new xml2js.Parser();
parsers.push(parser);
parser.parseString(xml, function(err, json) {
data.push(json);
});
process.nextTick(loadData);
});
}

loadData();
15 changes: 15 additions & 0 deletions debugging/src/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/**
node --debug-brk src/server.js
// uncommnet debugger;
node --debug src/server.js
**/
var http = require('http');
var count = 0;

http.createServer(function (req, res) {
// debugger;
count += 1;
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Request ' + count + '\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
14 changes: 14 additions & 0 deletions debugging/src/time.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
node --prof src/time.js
./node_modules/.bin/node-tick-processor | less
**/
function addAwhile(stopTime) {
var sum = 0;
while (Date.now() < stopTime) {
sum += 1;
}
}

console.time('add-op');
addAwhile(Date.now() + 5 * 1000);
console.timeEnd('add-op');

0 comments on commit 959e575

Please sign in to comment.