Skip to content

Instantly share code, notes, and snippets.

@oberhamsi
oberhamsi / isolated.js
Created August 24, 2012 07:28
isolated workers and singletons
/**
* When you see a `postMessage()` it's clear your passing data into
* a different module space. This fact can be obfuscated if you
* use a Singleton.
*
*/
var {Worker} = require("ringo/worker");
var Foo = function() { return this;}
@oberhamsi
oberhamsi / instanceoftest.js
Created August 23, 2012 14:07
ringojs instanceof
var {Worker} = require("ringo/worker");
var Foo = function() { return this;}
function main() {
var w = new Worker(module.id);
w.postMessage(new Foo());
}
function onmessage(e) {
@oberhamsi
oberhamsi / mixin.js
Created June 22, 2012 19:40
nicer mixin
// I never remember which one is the mixin and which one is the class.
// And I find `mixin({mixin:..})` too verbose
mixin(fooMixin, fooBar)
// what I rather want:
mix(fooMixin).into(fooBar);
// so...
var mix = function(mixin) {
return {
@oberhamsi
oberhamsi / mtrtest.js
Created May 14, 2012 13:11
run mtr every 5 seconds and report hosts losing packets
/**
* Continuesly mrts a host and logs errors if packet loss to host
* or on route.
*/
var {command} = require('ringo/subprocess');
var {setInterval} = require('ringo/scheduler');
var log = require('ringo/logging').getLogger('mtr');
var $d = require('ringo/utils/dates');
//var MTR_PATH = '/root/mtr-0.82/mtr';
@oberhamsi
oberhamsi / gist:2510595
Created April 27, 2012 16:28
/tmp/jquery$ git grep " IE "
build/lib/process.js: // IE croaks with "syntax error" on code like this:
speed/jquery-basis.js: // Handle the case where IE and Opera return items
speed/jquery-basis.js: // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
speed/jquery-basis.js: // If IE event model is used
speed/jquery-basis.js: // If IE and not a frame
speed/jquery-basis.js: // aren't supported. They return false on IE (#2968).
speed/jquery-basis.js: // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
speed/jquery-basis.js: // If IE is used, use the trick by Diego Perini
speed/jquery-basis.js: // IE strips leading whitespace when .innerHTML is used
speed/jquery-basis.js: // IE will insert them into empty tables
@oberhamsi
oberhamsi / start
Created April 5, 2012 12:41
openshift start/stop scripts
#!/bin/bash
# The application will work only if it binds to
# $OPENSHIFT_INTERNAL_IP:8080
RUN_CMD="${OPENSHIFT_REPO_DIR}ringojs/bin/ringo"
RUN_ARGS="${OPENSHIFT_REPO_DIR}nocms/main.js serve ${OPENSHIFT_REPO_DIR}foo/"
RINGO_PID="${OPENSHIFT_DATA_DIR}ringo.pid"
RINGO_LOG="${OPENSHIFT_LOG_DIR}ringo.log"
(function() {
"use strict";
function fooBar(arg) {
console.log("first arg is ", arg);
}
function main() {
fooBar(this);
};
@oberhamsi
oberhamsi / u4.txt
Created March 15, 2012 21:32
u4 leak
Die Sperre des Südbahnhofs hat sicher das Fahrgastaufkommen auf der U6 und U4 verstärkt und das spürt man sicher am Platzangebot. Theroretisch wäre ein Intervall von 2 Minuten machbar. Die Vorrassetzung dafür wäre aber ein Aufenthalt der Züge von maximal 25 Sekunden. Das ist aber nur ausserhalb der Verkehrsspitze möglich. Es würden die Züge dann immer zu Aufenthalten zw. den Station gezwungen sein, da der Vorderzug noch im Bereich der nächsten Station ist und das kommt dann auch nicht gut und verlängert dann insgesamt die Fahrzeit. Paktisch ist es wegen dem Nadelöhr mit nur einem Wendegleis in Hütteldorf schon tw im jetzigen 3 1/2 Minutenintervall eng. Dort müsste erst von der ÖBB ein Grundstück gekauft werden um ein 2. Gleis bauen zu können.
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
@oberhamsi
oberhamsi / w3c-worker.js
Created February 18, 2012 12:48
worker from string
var workerCode = "var this.is.a.runtime.exception -- =";
var BlobBuilder = window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder;
var URL = window.URL || window.webkitURL;
var bb = new BlobBuilder();
bb.append(workerCode);
var blobURL = URL.createObjectURL(bb.getBlob());
var worker = new Worker(blobURL);
worker.onerror = function() {