Skip to content

Instantly share code, notes, and snippets.

View ricardobeat's full-sized avatar

Ricardo Tomasi ricardobeat

View GitHub Profile
var fs = require('fs');
var input = fs.readFileSync(process.argv[2]).toString().split(/[\n\r]/)
, cases = +input[0]
, lines = input.slice(1, cases+1);
lines.forEach(function(line){
if (!line) return false;
@ricardobeat
ricardobeat / semaphore.js
Created March 3, 2011 01:30
simple semaphore for parallel async execution, with error handling.
function queue(name){
queue.q[name]++ || (queue.q[name] = 1);
return function(err){
if (err && queue.e[name]) queue.e[name](err);
else if (err) throw err;
process.nextTick(function(){
queue.q[name]--;
queue.check(name);
});
}
@ricardobeat
ricardobeat / gdd2011.coffee
Created August 10, 2011 19:51
Google Developer Day 2011, São Paulo
_ = require 'underscore'
textA = "hbcxng kbvnnml zwldzxhk rckkxzfk vhnnr mkbsp fntggv mvfvg bcvcztr lgcrt nwdfsx tpg kpd jfh rzlcxqz kdb qgjxk hrcp gbslsh nksnzhb twcgswhf nzlzbj bgnxvv dkwxnx mtnzskdm gxmz ltmjzcx tlppjtrs nxvvzwtf hszj chqf xnrxgt sfn rlgtt vbgwt ghr jfrx lwj trjt gzmmzq bsbkkmn nkw kkfr sblht csgsl stxqhdwr njqzvdfn hppwknf gtxnfv gscmrkn sqwzb hdrswwk tgfqwx psfqsh ghrb crhsd kpkt ghb kplspz hqhr jtgxwtt ztkndjvz vckdt fqxz jbc gfv qlcckl jqnlb bxwd xrpq wmxkj wtt tdfv nfcg dppxqjm kbvnwgsh vzjq nwqsw gwwslh kfrcwfp rppr dmnngst kfkwjv rkzlkvkk jmktljjn scddpv bjbtfd frnk rtvgbrh qlvgcb rzlqhstp lpwwkdgc xjkdq ktq cbnv kmrcqh dngkdsk djsq kljdthx qhgpld bcxdrnmf pczvf kjxlb hzhvg xprfhlwr gztxvx zdwkt rcnnb pfx dlzn wvscbrx tksf pzfp dwjnsd thzhxfs ztnlwgjr rrmgnt xlrv lgws lst pcxv rhlt wqq dpdb ptmv gcr lzr brrgp vsqt znf rjbj drdfwdtt bqkvvqdg jnb dnqjqbs hqpjkkmp dxvcqftf qnmjjg qtbzfj vvk mlxtpr bdnspsmv phkcx ghwrpvb lgk vjc vcz pfbjch vhrpjf spr dkfl jjxnr rlctk xpkpd wvw hgrbqjh
@ricardobeat
ricardobeat / gist:1179515
Created August 29, 2011 21:55
Sugar.js error case with Mongo
#
@ricardobeat
ricardobeat / mongoose-indexing.js
Created September 13, 2011 05:30
MongoDB - test compound indexes on embedded documents
var mongoose = require('mongoose')
, Schema = mongoose.Schema
mongoose.connect('mongodb://localhost/identities');
var IdentitySchema = new Schema({
type : { type: String, enum: ['twitter', 'facebook', 'google'] }
, uid : { type: String }
})
proc ue_init {} {
lappend d + { }
for {set i 0} {$i < 256} {incr i} {
set c [format %c $i]
set x %[format %02x $i]
if {![string match {[a-zA-Z0-9]} $c]} {
lappend e $c $x
lappend d $x $c
}
}
<li>
<span class="attribute">Accuracy</span>
<div class="rating"><span class="filled star_9">4.5 stars</span></div>
</li>
@ricardobeat
ricardobeat / time-parser.coffee
Created October 19, 2011 07:08
Parse strings like '5 days 10 minutes', '10hrs 2min', '3 hours and 5 minutes', '50m30s', '5h10'. Returns time in milliseconds.
input = process.argv.slice(2).join(' ')
parseTimeString = (str, debug) ->
pattern = ///
( # start main group
\d+ # digits
(?:\s*) # optional spaces
( # start unit
d (?=ays)? # days
@ricardobeat
ricardobeat / recommender.coffee
Created December 20, 2011 19:13 — forked from malgorithms/recommender.coffee
Fake Recommender class for CoffeeScript/tame discussion - using async (http://github.com/caolan/async)
async = require 'async'
class Recommender
getRecommendations: (search_params, respond) ->
# Do 2 things at once:
# - check if we have a logged in user, get their info
# - fire off distributed requests for search queries
# ------------------------------------------------------------------------
@ricardobeat
ricardobeat / addEventListener.js
Created February 1, 2012 19:43
Good old cross-browser addEventListener
function addEventListener(evt, fn){
window.addEventListener
? this.addEventListener(evt, fn, false)
: (window.attachEvent)
? this.attachEvent('on' + evt, fn)
: this['on' + evt] = fn;
}