Skip to content

Instantly share code, notes, and snippets.

@jsantell
jsantell / getFF.sh
Created May 15, 2013 19:26
Get linux firefox binaries
# 32 bit
url="http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-i686/en-US/"
# 64 bit
url="http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/latest/linux-x86_64/en-US/"
index=`wget -q -O - $url`
file=`echo $index | tr '\n' ' ' | sed 's/.*\(firefox-[0-9]*[\.0-9]*.tar.bz2\).*/\1/'`
wget -O firefox.tar.bz2 "$url""$file"
bzip2 -cd firefox.tar.bz2 | tar xvf -
@jsantell
jsantell / moduleusage
Last active December 17, 2015 14:19
Module usage of ~900 repackable addons of ~1500 potentially repackable addons on AMO for 1.14 (excludes v1.14 addons)
self: 570,
tabs: 332,
widget: 330,
page-mod: 196,
panel: 179,
context-menu: 163,
request: 130,
simple-storage: 75,
notifications: 70,
selection: 69,
let bookmarks = [b1, b2, b3];
// Emitter
save(bookmarks).on('data', (bookmark) => {
// a bookmark saved
}).on('end', (bookmarks) => {
// all bookmarks finished
});
// Promise with one input
# From https://github.com/kripken/emscripten/wiki/Tutorial
cd ~/
curl http://llvm.org/releases/3.2/clang+llvm-3.2-x86_64-apple-darwin11.tar.gz > llvm.tgz
tar xzvf llvm.tgz
ln -s clang+llvm-3.2-x86_64-apple-darwin11 llvm
git clone git://github.com/kripken/emscripten.git
cd emscripten
LLVM=~/llvm/bin ./emcc
LLVM=~/llvm/bin ./emcc tests/hello_world.cpp
#!/bin/bash
emcc sin.cpp -o sin.js \
-s EXPORTED_FUNCTIONS="['_Sin_constructor','_Sin_destructor','_Sin_setFrequency','_Sin_setAmplitude','_Sin_getFrequency','_Sin_computeBuffer']"
cat sin-proxy.js >> sin.js
let { events, on, off, once } = require('sdk/places/events');
on('bookmark-added', ({ type, target, data }) => {
console.log(type); // 'bookmark-added'
console.log(target); // undefined;
console.log(data); // [Object object]
});
// or
@jsantell
jsantell / data_test.js
Created August 9, 2013 20:59
Bug 903083
self.port.emit('message', 'hi!');
self.port.on('messageSuccess', function (msg) {
console.log('my message is', msg);
});
self.port.on('key', function (key) {
console.log('my key is', key);
});
@jsantell
jsantell / brokenpipe.js
Last active December 25, 2015 17:49
Broken Piping
let { EventTarget } = require('sdk/event/target');
let { pipe } = require('sdk/event/utils');
let { on, emit } = require('sdk/event/core');
let from = EventTarget();
let to = EventTarget();
pipe(from, to);
on(to, 'testevent', x => console.log("****"));
emit(from, 'testevent', 'blah');
@jsantell
jsantell / jetpack.js
Created October 21, 2013 22:02
Window memory leak
/**
* Opens/closes windows using either Jetpack wrappers (`USE_JETPACK`) or using the `windowWatcher`.
* Either way, does not reclaim memory in:
* explicit -> window-objects -> top(none)/detached/window([system])
*/
let { Cc, Ci } = require('chrome');
let WW = Cc['@mozilla.org/embedcomp/window-watcher;1'].getService(Ci.nsIWindowWatcher);
let { open } = require('sdk/window/utils');
let { setInterval, clearInterval } = require('sdk/timers');
let URI = 'chrome://browser/content/browser.xul';
@jsantell
jsantell / oscillator-debug.js
Created October 22, 2013 18:42
Reproduction case for changing oscillator type implementation, Bug 929621 https://bugzilla.mozilla.org/show_bug.cgi?id=929621
var TYPES = ['sine', 'sawtooth','triangle', 'square'];
var ctx = new (window.AudioContext || window.webkitAudioContext)();
var osc = ctx.createOscillator();
var t = 0;
osc.connect(ctx.destination);
osc.start(0);
setInterval(function () { osc.type = TYPES[t++ % TYPES.length]; }, 1000)