Skip to content

Instantly share code, notes, and snippets.

function read_a_file_and_replace_x_with_smilies (filePath) {
// Set up a future
var fut = new Future();
fs.readFile(filePath, function (err, data) {
if (err) fut.return({ error: err });
doImageMani(data, function (err) {
if (err) fut.return({ error: err });
// everythings done, no need to return anything
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
script
APP_DIR=/var/www/bundle
LOG_FILE=/var/log/meteorApp.log
export PORT=80
@davidworkman9
davidworkman9 / interval subscription
Created September 11, 2013 13:24
Meteor interval subscription example
if(Meteor.isClient) {
Meteor.startup(function () {
(function () {
var oldSubscription;
Meteor.setInterval(function () {
var subscription;
subscription = Meteor.subscribe('random-image', function () {
oldSubscription = subscription;
});
if(oldSubscription)
@davidworkman9
davidworkman9 / nodeArrayTojQuerySelector.js
Created September 24, 2013 15:05
Node array to jQuery selector
var nodes = someFunc();
var droppableNodes = [], i = 0;
for(i = 0; i < nodes.length; ++i) {
if(isDroppableNode(nodes[i])
droppableNodes.push(nodes[i]);
}
$(nodes).droppable({
drop: function () {
$(function () {
function html5_audio(){
var a = document.createElement('audio');
return !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, ''));
}
var play_html5_audio = false;
if(html5_audio()) play_html5_audio = true;
function play_sound(url){
@davidworkman9
davidworkman9 / client.js
Last active December 24, 2015 07:49
Extension of my random on interval demo
Template.randomImg1.img = function () {
return imgs.findOne({_id: Session.get('randomImg1') });
};
Template.randomImg2.img = function () {
return imgs.findOne({_id: Session.get('randomImg2') });
};
Template.randomImg3.img = function () {
return imgs.findOne({_id: Session.get('randomImg4') });
@davidworkman9
davidworkman9 / CSV to Meteor Users
Created November 13, 2013 13:54
Appends a file upload input to the screen. When you upload a csv file, it will create a user for each row in the csv file and give each one of them a uuid() for a password. By default it assumes the order of First Name, Last Name, Email, and Company but this is configurable in the first 4 lines of the gist. At the end it tells you the number of …
var EMAIL_INDEX = 2,
FIRSTNAME_INDEX = 0,
LASTNAME_INDEX = 1,
COMPANY_INDEX = 3;
$('#users').remove();
$('body').prepend('<input type="file" id="users" />');
$('#users').change(function () {
var csv = new FileReader();
@davidworkman9
davidworkman9 / jQuery-webdriverjs.js
Last active August 29, 2015 13:56
wrapping webdriverjs's waitFor to act differently if passed an instance of JQuerySelector.
(function () {
var methods = ['children', 'closest', 'find',
'next', 'nextAll', 'nextUntil',
'offsetParent', 'parent', 'parents',
'parentsUntil', 'prev', 'prevAll',
'prevUntil', 'siblings'
];
_.each(methods, function (method) {
JQuerySelector.prototype[method] = function (selector) {
var errors = new Meteor.Collection(null);
Template.my_templ.errors = function () { errors.find().fetch(); };
Template.my_templ.events({
'submit': function () {
if ($('#firstName').val() === '') {
errors.push({ msg: 'First Name Required' });
}
}
@davidworkman9
davidworkman9 / triggers.js
Created February 18, 2014 22:23
Assumes meteor collection-hooks is installed.
var my_coll = new Meteor.Collection('my_coll'),
triggers = new Meteor.Collection('triggers'),
TRIGGER_TYPES = [ greaterThanFive: 'greaterThanFive' ];
my_coll.after.update(function (userId, doc, fieldNames, modifier, options) {
if (doc.count > 5) {
_.each(triggers.find({ on: TRIGGER_TYPES.greaterThanFive }).fetch(), function (trig) {
switch (trig.event) {
case 'email':
Email.send(trig.to, { html: trig.markup });