Skip to content

Instantly share code, notes, and snippets.

@osiyuk
osiyuk / BTree.cpp
Created October 21, 2018 01:27 — forked from pervognsen/BTree.cpp
B-tree with iterators and more aggressive deletion
enum { BMAX = 32, BMIN = BMAX / 2, BHEIGHT = 6 };
struct BNode {
uint32_t length;
Key keys[BMAX];
union {
BNode *children[BMAX];
Value values[BMAX];
};
};
@osiyuk
osiyuk / nginx.conf
Last active June 25, 2022 16:57
simple nginx configuration with php-fpm
user nginx;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log info;
http {
access_log /var/log/nginx/access.log combined;
include mime.types;
default_type application/octet-stream;
@osiyuk
osiyuk / docker-gc
Created September 1, 2017 02:14
free up disk space after docker garbage
#!/bin/bash
GARBAGE="/var/lib/docker/aufs/diff"
du -hd 1 $GARBAGE | sort -hrk 1 | head -25
find $GARBAGE -maxdepth 1 -name *-removing -exec rm -rf '{}' \;
@osiyuk
osiyuk / fetch.js
Created November 13, 2016 23:12
lightweight fetch, custom promise, native http, plain callbacks
// https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
// inspired by https://github.com/cujojs/rest/blob/master/client/node.js
'use strict';
// allow custom promises
if (!global.Promise) {
throw new TypeError('native promise missing, set global.Promise to your \
favorite alternative');
@osiyuk
osiyuk / object.assign.js
Last active November 13, 2016 20:45 — forked from spiralx/object-assign.js
Object.assign() polyfill
if (!Object.assign) {
Object.defineProperty(Object, 'assign', {
enumerable: false,
configurable: true,
writable: true,
value: function (target) {
'use strict';
if (target === undefined || target === null) {
throw new TypeError('Cannot convert first argument to object');
}
@osiyuk
osiyuk / key-in-json.js
Created November 13, 2016 17:36
something, that lodash already does
var pc = '',
ERROR = 'Not found';
// something doing with pc
function getKeyInJson(path, json) {
var key;
if (path === '') {
return JSON.stringify(pc);
// https://gist.github.com/osiyuk/d18ec38ceae0e12f7a6ed7be9077b6f7
// prototype forwarding
// ...or monkey patching
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
}
@osiyuk
osiyuk / string.prototype.format.js
Last active November 24, 2016 23:49 — forked from jonathanconway/string.prototype.format.js
Straight-forward string.prototype format method for Javascript.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
// it`s monkey patching, breaks incapsulation and considered bad practice
String.prototype.format = function() {
var s = this;
for (var i = 0; i < arguments.length; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i]);
}
return s;

Задача. Разработать консольную программу, которая следит за изменениями в директориях.

Изучаем задание, ужесточаем требования.

  1. Один поток обрабатывает не больше одной директории.
  2. Изменение файла определяется подсчетом контрольной суммы.

Вопрос многопоточности решается подключением заголовочного файла #include <pthread.h>, поэтому сосредоточим внимание на создании одного потока. Реализуем сначала простую программу — чтение директории и вывод её содержимого.

В стандарте языка С отсутствует понятие директории. Это проблема. А в стандарте POSIX определена структура директории, независимая от файловых систем. И это решение проблемы. Эти возможности заключены в заголовочном файле <dirent.h>.

Рассмотрим множество бинарных строк $S$ с одинаковой длиной и одинаковым количеством активных клеток, различающихся инициализированным положением активных клеток. При этом все множество строк представляют собой объединение непересекающихся непустых замкнутых множеств конечного числа возможных состояний строки — колец $R_i$.

Предположим, что перцептрон способен научиться распознавать по произвольным двум строкам их принадлежность одному кольцу. Для простоты предположим существование такого отображения, ставящего во взаимно однозначное соответствие два различных состояния из одного кольца в одинаковый элемент векторного пространства, и две различные строки, принадлежащие разным кольцам — в разные элементы векторного пространства. $$ \varphi : S \rightarrow V $$ Такое отображение обладает следующими свойствами относительно колец $$ s_1 \in R \subset S, s_2 \in S $$

$$ \varphi(s_1) = \varphi(s_2) \Leftrightarrow s_2 \in R $$

$$ \varphi(s_1) \neq \varphi(s_2) \Leftrightarrow s_2 \notin R $$