Skip to content. | Skip to navigation

Personal tools
Log in
Sections
You are here: Home

jorgenmodin.net - Blog

Javascript destructuring for named parameters

Posted by admin |

Here is one way, adapted from 11. Parameter handling :

function selectEntries({ start, end, step }) {
    console.log(end)
}

can be called like this:

selectEntries({end:7})
>> 7

In node 5.7.0 use the flag:

--harmony_destructuring
May 28, 2016 02:12

"node.js equivalent of python's if __name__ == '__main__' "

Posted by admin |

node.js equivalent of python's if __name__ == '__main__' - Stack Overflow

 

if (!module.parent) {
  // this is the main module
} else {
  // we were require()d from somewhere else
}

 

May 25, 2016 03:15

RPC built into child_process.fork in Node.js for remote calling objects

Posted by admin |

This module, called "remote.js" can be required into a module (let's call it "child_module") and then if  child_module has been forked from Node.js, the mother process can send commands to any object in child_module, that has been exposed by module.exports.

Here is some example code in child_module, where we want to be able to execute "foo.bar(params)" remotely from the mother process:

const remote = require('./remote')
remote.install(module)

const foo = require('foo') // some module
foo.bar(params) // some function call, just an example

module.exports = {foo: foo} // make sure it is visible for remote

 

Here is the code for remote.js that child_module requires:

// This module allows the calling module's exported objects'
// functions/methods to be called over RPC, from the module that forked it
// useful for testing
module.exports = {
    install: install
}

const P = require('bluebird')

function install(callingModule) {
    process.on('message', function(payload) {
            var result = callingModule.exports[payload.objectName][payload.functionName](payload.parameters)
            if (payload.isFunctionCall) { // return stuff if true, otherwise not
                P.resolve(result).done(  // TODO use standard promise
                    function(res) {
                        process.send({
                            itemName: payload.objectName,
                            functionName: payload.functionName,
                            result: res
                        })
                    }) // end done
            } // endif
        } // end process.on function
    ) // end process.on
}

It works with promises by wrapping teh return value of the function call in one (which will do nothing if it is already a promise) and the resolve it.

Calling a function from the mother module would be something like this:

var childp = child_process.fork(`${__dirname}/child_module.js`
childp.send({
            objectName: 'foo',
            functionName: 'bar',
            parameters: params,
            isFunctionCall: true
        })

And to catch a return value something like this:

childp.on('message', function(payload){
 console.log("Payload from client is: " + payload)

}
May 18, 2016 03:30

YAML examples

Posted by admin |
May 13, 2016 06:27

How to include a multi line string in YAML

Posted by admin |

Put just a pipe character on the first line:

foo: |

Then add the string, indented on the following lines:

foo: |
    bar
    baz
    bletch
    flum

 

May 10, 2016 11:39

Nollräntor och QE kan bli liberalernas största blunder

Posted by admin |

Att liberaler tillåtit negativa räntor, nollräntor och penningtryckning kan vara ett  misstag av historiska proportioner och hotar nu liberalismen över hela världen.

Alla dessa åtgärder förstör kapitalismen och desorienterar väljare. Den förstör också kapitalismens och marknadernas goda namn, eftersom åtgärderna utges vara i samklang med dem.

Men: Utan korrekt prisinformation, desorientering. Just någon slags desorientering kan ligga bakom mycket av de förskjutningar mot extremer som vi ser i väljarkårerna både i USA och i Europa, vilket Peter Santesson tagit upp: Den nya pessimismen — Kvartal. Folk reagerar negativt på desorientering, även om mätarna pekar uppåt.

Vi borde aldrig låtit dessa åtgärder passera. Även i de länder där vi inte är i regeringsställning borde vi protesterat högt och ljutt. Det finns inget liberalt i dessa reformer; de förstör informationsflödet mellan långivare och presumtiva låntagare och de flyttar stora värden från de som arbetat ihop dem till de som råkar befinna sig på en speciell plats i systemet. Åtgärderna förstör för fattiga länder genom att skicka penningflöden in och ur dem med stor godtycklighet . Åtgärderna förstör i väst och framför allt i USA genom att invagga oss i en falsk säkerhet att bara för att vi sitter på de finansiella institutionerna just nu och har en slags hävarm, så kommer det alltid att vara så.

Summa summarum kommer vi nog att se en kraftig vänstervridning, ackompanjerat av populistiska högerrörelser bland länder och samhällsskikt som upplever sig vara på tillbakagång.

May 09, 2016 05:30

Mopidy - an mpd server

Posted by admin |

It seems to have some extra tricks up its sleeve compared to e.g. mpd.

 

Vanilla Mopidy only plays music from your local disk and radio streams. Through extensions, Mopidy can play music from cloud services like Spotify, SoundCloud, and Google Play Music.


Read more: Link - Mopidy

May 09, 2016 04:01

Pipelines as programming method

Posted by admin |

Structuring your code in the shape of pipelines seems to alleviate a a lot of problems. I am using promise chains in javascript in this way as we speak. Or I speak. Or write, rather.

 

With these thoughts in mind, I look back at all my failures at reusable code and notice something else: It looks nothing at all like: source → algorithm → sink. In fact, it looks like a bunch of nested loops. The source data enters at the top, and gets swirled around and around in ever smaller and tighter loops, and leaves via the sink in the center of that maelstrom.


Read more: Link - Component Programming in D | Dr Dobb's

May 09, 2016 01:28
Ads