Skip to content

Instantly share code, notes, and snippets.

View ndpar's full-sized avatar

Andrey Paramonov ndpar

View GitHub Profile
@ndpar
ndpar / rzip.rkt
Last active August 29, 2015 14:06
Reverse zip
#lang racket
;; Inspired by SICP, chapter 5.2.2, and
;; https://www.youtube.com/watch?v=SrKj4hYic5A
(define (rzip c1 c2)
(let iter ([a c1] [z c2] [receive (λ (x y) y)])
(if (null? a)
(receive z '())
(iter (cdr a) z
@ndpar
ndpar / redefine.rkt
Last active August 29, 2015 14:09
How to redefine procedure in Racket.
(define-syntax-rule
(redefine (f args ...) body ...)
(set! f (λ (args ...) body ...)))
(define (double x)
(+ x x))
(redefine (double x)
(* 2 x))
-module(ring).
-export([start/3]).
-export([loop/1, loop/2]).
start(N, M, Message) when N > 1 -> spawn(fun() -> ring(N-1, M, Message) end).
ring(N, M, Message) when M > 0 ->
P = lists:foldl(fun(_, Proc) -> spawn(fun() -> loop(Proc) end) end, self(), lists:seq(1, N)),
-module(generic_server).
-export([start/0, loop/2]).
-export([request/1, change_state/1, change_function/1]).
%% Server
start() ->
register(?MODULE, spawn(?MODULE, loop, [2, fun erlang:'+'/2])).
class LazyList {
private Closure list
private LazyList(list) {
this.list = list
}
static LazyList nil() {
new LazyList( {-> []} )
@ndpar
ndpar / answers.py
Created December 13, 2012 12:44
Analyzing popularity on StackOverflow
import urllib2
import zlib
import json
import pymongo
import sys
URL = 'http://api.stackoverflow.com/1.1'
ANSWERS = URL + '/questions/{0}/answers'
def load_url(url):
@ndpar
ndpar / zookeeper-init-ensemble.sh
Created March 7, 2013 03:56
Idempotent script that quickly (re)creates 3-node ZooKeeper ensemble on a single box for development purposes. http://ndpar.blogspot.com/2013/03/simple-zookeeper-cluster.html
#!/bin/sh
cd /opt/zookeeper/zookeeper
rm -rf cluster
mkdir -p cluster/server{1,2,3}/{conf,data,logs}
cp conf/log4j.properties cluster/server1/conf/
cp conf/log4j.properties cluster/server2/conf/
cp conf/log4j.properties cluster/server3/conf/
@ndpar
ndpar / poker.clj
Last active December 16, 2015 05:29
Poker hand evaluator in different languages.http://en.wikipedia.org/wiki/List_of_poker_hands
; https://github.com/ndpar/clojure/blob/master/src/dojo/poker.clj
; https://github.com/ndpar/clojure/blob/master/test/dojo/poker_test.clj
(defn card-ranks
"Return a vector of the ranks, sorted with higher first"
[hand]
(let [ranks (map #(->> % first str (.indexOf "--23456789TJQKA")) hand)
ranks (vec (sort > ranks))]
(if (= [14 5 4 3 2] ranks) [5 4 3 2 1] ranks)))
def Y = { f ->
{ x -> x(x) } { x -> f { y -> x(x)(y) } }
}
def triangular = Y { f ->
{ n -> n == 0 ? 0 : n + f(n - 1) }
}
triangular(3000)
@ndpar
ndpar / SolrExporter.groovy
Last active November 16, 2016 12:44
Export documents from Solr core to XML format
#!/usr/bin/env groovy
/**
* Usage: ./SolrExporter.groovy query url [url]
*
* ./SolrExporter.groovy "id:12345" "http://your.solr.host:8983/solr/core/"
*
* ./SolrExporter.groovy "id:12345" "http://old.solr.host:8983/solr/core/" "http://new.solr.host:8983/solr/core/"
*
*