Preface: Not a Meteor Expert. Please comment with improvements.
Paraphrasing philosophy:
- Hoodie, Look ma! No Backend.
- Meteor, Backend Power on the Fronend.
A couple of high-level observations:
var getAverageColor = (function(window, document, undefined){ | |
return function(imageURL, options}){ | |
options = { | |
// image split into blocks of x pixels wide, 1 high | |
blocksize: options.blocksize || 5, | |
fallbackColor: options.fallbackColor || '#000' | |
}; | |
var img = document.createElement('img'), | |
canvas = document.createElement('canvas'), |
%h1 animation-timing-function visualized with an oscilloscope made with CSS3 animated with animation-timing-function | |
%small how meta is that? | |
.loading | |
%p linear | |
-(1..50).each do | |
.bar.linear | |
.loading | |
%p ease-in | |
-(1..50).each do | |
.bar.ease-in |
#!/bin/sh | |
if [ $(ps aux | grep $USER | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ] | |
then | |
export PATH=/usr/local/bin:$PATH | |
export NODE_ENV=production | |
cd /path/to/app && forever --spinSleepTime 10000 start server.js >> forever.log 2>&1 | |
fi |
// http://gruntjs.com/configuring-tasks#building-the-files-object-dynamically | |
module.exports = function(grunt) { | |
/** | |
* Saves having to declare each dependency | |
*/ | |
require( "matchdep" ).filterDev( "grunt-*" ).forEach( grunt.loadNpmTasks ); | |
grunt.initConfig({ | |
pkg: grunt.file.readJSON('package.json'), |
L1 cache reference ......................... 0.5 ns
Branch mispredict ............................ 5 ns on recent CPU
L2 cache reference ........................... 7 ns 14x L1 cache
Mutex lock/unlock ........................... 25 ns
Main memory reference ...................... 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy ............. 3,000 ns = 3 µs
Send 2K bytes over 1 Gbps network ....... 20,000 ns = 20 µs
SSD random read ........................ 150,000 ns = 150 µs
Read 1 MB sequentially from memory ..... 250,000 ns = 250 µs 4X memory
update() { | |
sudo apt-get update | |
} | |
chrome() { | |
echo "######INSTALLING GOOGLE CHROME" | |
cd ~/downloads | |
wget -v https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O gc.deb | |
sudo apt-get install libxss1 | |
sudo dpkg -i gc.deb | |
rm gc.deb |
M[16],X=16,W,k;main(){T(system("stty cbreak") | |
);puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i | |
,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M | |
[w(d,i,j++)],W|=P>>11,l*P&&(f?M[w(d,i,k)]=l<< | |
(l==P):0,k++),l=l?P?l-P?P:0:l:P:(f?M[w(d,i,k) | |
]=l:0,++k,W|=2*!l,l=0);}w(d,i,j){return d?w(d | |
-1,j,3-i):4*i+j;}T(i){for(i=X+rand()%X;M[i%X] | |
*i;i--);i?M[i%X]=2<<rand()%2:0;for(W=i=0;i<4; | |
)s(0,i++);for(i=X,puts("\e[2J\e[H");i--;i%4|| | |
puts(""))printf(M[i]?"%4d|":" |",M[i]);W-2 |
var gulp = require('gulp'); | |
var browserify = require('browserify'); | |
var notify = require('gulp-notify'); | |
var source = require('vinyl-source-stream'); | |
var watchify = require('watchify'); | |
var plumber = require('gulp-plumber'); | |
var less = require('gulp-less'); | |
var csso = require('gulp-csso'); | |
var watch = require('gulp-watch'); | |
var envify = require('envify'); |
export default class Timer { | |
constructor(tick) { | |
this.tick = tick; | |
} | |
start() { | |
this.decreaseCounterLoop(); | |
} | |
stop() { |