Skip to content

Instantly share code, notes, and snippets.

View kachayev's full-sized avatar
🇺🇦
Fighting for freedom

Oleksii Kachaiev kachayev

🇺🇦
Fighting for freedom
View GitHub Profile
(ns kleene)
;;
;; Inspired by "Regexes, Kleene Algebras and Real Ultimate Power"
;; http://plastic-idolatry.com/erik/oslo2014.pdf
;;
;; What do we want to do?...
;;
;; (def p1 (times (Var. "w") (Var. "o") (Var. "w"))
;; (matches? p1 "wow") ;; true
@kachayev
kachayev / gearman-install.sh
Created June 13, 2011 14:53
Shell/bash script for installing gearman server on debian-like linux
sudo bash
cd /usr/local/lib
wget http://launchpad.net/gearmand/trunk/0.18/+download/gearmand-0.18.tar.gz
tar -xvzf gearmand-0.18.tar.gz
cd gearmand-0.18/
apt-get install libboost-program-options-dev uuid-dev libevent-dev build-essential g++
./configure && sudo make && sudo make install
ldconfig
@kachayev
kachayev / clojure-channels-1-generator.clj
Last active October 7, 2015 09:57
Channels-driven concurrency with Clojure
;; Channels-driven concurrency with Clojure
;; Clojure variant for code examples from this gist:
;; https://gist.github.com/3124594
;; Primarily taken from Rob Pike's talk on Google I/O 2012:
;; http://www.youtube.com/watch?v=f6kdp27TYZs&feature=youtu.be
;;
;; Concurrency is the key to designing high performance network services.
;; Clojure provides several concurrency primitives, like futures/promises, atom, agent etc.
;; There is no implementation for "Go channels" in core, but we can use
;; 3rd-party library Lamina to do the same things.
@kachayev
kachayev / fp.py
Created October 30, 2012 20:38
Implement mapping data structure and "classes" using functions and lists
## Author: Alexey Kachayev
## Email: kachayev@gmail.com
## Talk: "Functional programming with Python", UA PyCon 2012
## URL: http://ua.pycon.org/static/talks/kachayev/index.html#/
###############################################
## Imitate dictionary functionality
###############################################
def dict_pair((key, value)):
@kachayev
kachayev / barber.go
Last active December 11, 2015 17:29
Solve "Sleeping Barber Problem" with Golang (more about problem - http://en.wikipedia.org/wiki/Sleeping_barber_problem)
package main
import (
"fmt"
"time"
"math/rand"
)
const (
CUTTING_TIME = 20
@kachayev
kachayev / pingpong.scala
Created February 6, 2013 12:07
Simplest ping-pong example of Scala Actors
import scala.actors.Actor
import scala.actors.Actor._
case object Ping
case object Pong
case object Stop
class Ping(count: Int, pong: Actor) extends Actor {
def act() {
var pingsLeft = count - 1
@kachayev
kachayev / sleep_barber.erl
Last active December 12, 2015 09:19
Solve sleeping barber problem with many barbers and many client generators
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / sleep_barber_monitor.erl
Created February 11, 2013 16:59
Solve sleeping barber problem with many barbers and many client generators and barber failures (monitor)
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / sleep_barber_exit.erl
Created February 11, 2013 17:30
Solve sleeping barber problem with many barbers and many client generators and barber failures (exit)
%%
%% Solve sleeping barber problem in most general case
%% Task description on Wikipedia:
%% http://en.wikipedia.org/wiki/Sleeping_barber_problem
%%
%% Additions to classic variant:
%% * many barbers
%% * many clients generators with random timeouts between clients
%% * calculation for total served clients
%% * random time for each client to make barber's job
@kachayev
kachayev / uniq_substr.hs
Last active December 13, 2015 17:38
Define function that returns count of unique substrings consuming O(1) memory
import Data.List
uniqSubstr :: String -> Int
uniqSubstr = sum . (map pair) . pairwise . sort . tails
where
pairwise l@(_:ht) = zip l ht
prefix pre post = length $ takeWhile (uncurry (==)) $ zip pre post
pair (pre, post) = length $ drop (prefix pre post) post