Skip to content

Instantly share code, notes, and snippets.

@nemtsov
nemtsov / cointoss-prob-sim.js
Created April 9, 2014 04:31
Coin toss probability simulator
/**
* "What is the probability of getting
* 7 tails in a row, out of 150 tosses
* of a fair coin?"
*/
function experiment(streak, tosses) {
var i, ctr = 0;
for (i = 0; i < tosses; i++) {
if (Math.random() < 0.5) ctr = 0;
@nemtsov
nemtsov / match_parens_brackets.vim
Created April 18, 2014 21:08
Match parens and brackets in VIM
" http://vim.wikia.com/wiki/Making_Parenthesis_And_Brackets_Handling_Easier
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {<CR>}<Esc>O
autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR>
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap } <c-r>=CloseBracket()<CR>
inoremap " <c-r>=QuoteDelim('"')<CR>
inoremap ' <c-r>=QuoteDelim("'")<CR>
@nemtsov
nemtsov / ProcessPool.js
Created March 23, 2015 01:54
ProcessPool.js
var fork = require('child_process').fork;
module.exports = ProcessPool;
function ProcessPool(path, size) {
this.free = [];
this.waiting = [];
this._init(path, size || 1);
}
var http = require('http');
function get(url, cb) {
http.get(url, function (req, res) {
if (req.statusCode !== 200) {
var err = new Error('bad status code');
err.code = req.statusCode;
return cb(err);
}
var chunks = [];
@nemtsov
nemtsov / client.js
Created July 7, 2015 22:13
UDP & Redis Client / Server
var dgram = require('dgram');
var client = dgram.createSocket('udp4');
var message = new Buffer('Hello world!');
client.send(message, 0, message.length, 9999, 'localhost', function (err) {
if (err) return console.error(err);
console.log('message sent');
client.close();
});
/* eslint no-console: 0, new-cap: 0 */
import Acl from 'acl';
import express from 'express';
import bodyParser from 'body-parser';
import {parallel} from 'async';
import AclMongoDBBackend from './backend';
import mongodb from 'mongodb';
@nemtsov
nemtsov / git-clone.js
Created December 3, 2015 17:07
"git clone" - purely in javascript
/* eslint no-console:0 */
var git = require('git-node');
var fs = require('fs');
var pathJoin = require('path').join;
exports.clone = function clone(url, ref, target, cb) {
var remote = git.remote(url);
var repo = git.repo(pathJoin(target, 'git'));
var opts = {onProgress: console.log};
@nemtsov
nemtsov / babel-regiser-lib-node.js
Created January 8, 2016 17:27
babel-register/lib/node.js improved performance 10x
function compile(filename) {
var result = undefined;
var cacheKey = filename + ":" + babel.version;
var env = process.env.BABEL_ENV || process.env.NODE_ENV;
if (env) cacheKey += ":" + env;
if (cache) {
var cached = cache[cacheKey];
// Doubly-linked list
const list = {
root: 'a',
nodes: {
a: {id: 'a', next: 'b'},
b: {id: 'b', prev: 'a', next: 'c'},
c: {id: 'c', prev: 'b', next: 'd'},
d: {id: 'd', prev: 'c'},
}
};
@nemtsov
nemtsov / proxy_server.js
Created June 29, 2016 19:41
Simple HTTPS proxy server
var https = require('https');
var fs = require('fs');
var url = require('url');
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
var options = {
key: fs.readFileSync(process.env.HOME + '/.ssh/self_signed_key.pem'),
cert: fs.readFileSync(process.env.HOME + '/.ssh/self_signed_cert.pem'),
};