Skip to content

Instantly share code, notes, and snippets.

View masylum's full-sized avatar
💅
Being fantastic

Pau Ramon Revilla masylum

💅
Being fantastic
View GitHub Profile
@masylum
masylum / node_mongo_groups.js
Created October 19, 2010 16:13
Async with For Loop
var login_counts = [],
j = 30,
// functions scope
add_count = function (index, query) {
collection.find({date: query},function (err, cursor) {
cursor.count(function (err, count) {
login_counts[index] = count;
});
});
};
@masylum
masylum / node_omngodb_groups.js
Created October 19, 2010 16:20
Async with For Loop 2
var login_counts = [],
j = 30;
for (;j > 0;j--) {
tday.setDate(tday.getDate()+1);
yday.setDate(tday.getDate()+1);
// scope
(function (index, query) {
collection.find({date: query},function (err, cursor) {

Rectify

Takes a grid and returns an optimal set of rectangles that fills that grid

For example, the following grid:

[[1,1,0,1,1],
 [1,1,1,1,1],
 [0,1,1,1,0]]
@masylum
masylum / s3upload.js
Created December 19, 2010 17:48
Upload files directly to s3
function upload (req, res) {
var Formidable = require('formidable'),
form = new Formidable.IncomingForm();
form.encoding = 'utf-8';
form.onPart = function (part) {
if (!part.filename) {
form.handlePart(part);
} else {
(function () {
@masylum
masylum / formidable_test.js
Created January 4, 2011 20:13
Formidable fails if the request is already emited. formidable.parse fails if an asynchronous event happens before.
var formidable = require('formidable'),
http = require('http'),
sys = require('sys');
server = http.createServer(function(req, res) {
req.pause();
req.on('data', function(buffer) {
console.log('data parsed');
});
var A = ['01001100', '01101000', '01010000', '01010011', '01001001', '01000011', '01101000', '01101001', '01110110', '01101001', '01110000', '01101100', '01100010', '01000111', '01101000', '01111010', '01100101', '01111001', '01101101', '01100001'],
B = ['10010001', '01011110', '01100101', '10011010', '10000010', '11110000', '11010000', '00101101', '11111000', '11010110', '11100000', '00011011', '01101110', '11110000', '01101100', '01101010', '11001010', '11001011', '01101110', '01110010'],
rotate = function (shift, str) {
return str.slice(1) + shift;
},
isRotated = function (a, b) {
return [].some.call(b, function (el) {
return b = rotate(el, b), a === b;
let divisors n = [x | x <- [1..n], n `rem` x == 0, x /= n]
let subsets xs = (map concat . sequence) [ [[],[x]] | x <- xs ]
let sumSubsets xs = [sum x | x <- subsets xs, x /= []]
let challenge = [x | x <- [1..553], sum(divisors x) > x, all (/=x) (sumSubsets $divisors x)]
@masylum
masylum / challenge_1.hs
Created April 14, 2011 11:58
Haskell is cool
import Data.Char
import Numeric
rotate :: [a] -> [a]
rotate (x:xs) = xs ++ [x]
isRotated :: Eq a => [a] -> [a] -> Bool
isRotated xs ys = any (==xs) (take (length ys) $ iterate rotate ys)
binaryToChar :: String -> Char
@masylum
masylum / j.js
Created July 7, 2011 13:29
Port of a.rb to nodejs. Minimal testing library! 376bytes!
function j(){var a=[],b=0,c="",d=[],e="\033[3",f="\n";return function g(h){h?(a=
a.concat(h),b++):(h=new Date,a.map(function(a){a.call(g,function(a){if(!a)try{
throw Error()}catch(b){d.push(e+"1mFailure:"+b.stack.split(f)[3]+e+"9m")}c+=e+(a
?"2m.":"1mF")})}),console.log([c,e+"9m"+(new Date-h)+"ms",b+" tests, "+c.length+
" assertions, "+d.length+" failures",d.join(f)].join(f)))}}
// Example usage
var test = j();
test([
@masylum
masylum / autocomplete_location.js
Created September 2, 2011 12:48
Autocomplete locations using yahoo woeid
/*globals APP*/
(function () {
var LOCATION = {}
, cache = {}
, jqXHR = null;
function _getCoords(place) {
return [
place.centroid.latitude + ',' + place.centroid.longitude