http://fprog.ru/2010/issue6/eugene-kirp … pressions/