Skip to content

Instantly share code, notes, and snippets.

Тестовое задание по react.js
Надо написать компонент для выбора цвета, который выглядит так:
R +-|-------+
G +-------|-+
B +--|------+
Каждый компонент цвета редактируется через <input type='range'>
@dmitry-vsl
dmitry-vsl / gist:0a68b1fbf697abb87e5b
Created October 9, 2015 15:24
Circular FK constraints in postgresql
-- Three tables: books, authors, authorship
-- Every book must have an author, enforce this constraint at schema level
drop table if exists book cascade;
drop table if exists author cascade;
drop table if exists authorship cascade;
create table book(id serial not null primary key);
create table author(id serial not null primary key);
create table authorship(
@dmitry-vsl
dmitry-vsl / spa_2016_proposal.md
Created September 11, 2015 22:01
Архитектура средненагруженных single page application приложений в 2016 году

Клиент

На клиенте используем стэк фейсбука:

  • React.js. Один из самых популярных javascript фреймворков, интегрированный с остальными частями facebook-стэка.
  • GraphQL. Протокол для доступа к данным, который адресует недостатки REST API.
  • Relay. Клиентская библиотека для удобной работы с grapqhl-сервером.
  • Flow type. Типизированное надмножество javascript, умеет выводить анонимные типы из graphql-запросов используя grapqhl-схему.

Сервер

На сервере используем:

@dmitry-vsl
dmitry-vsl / .gitignore
Last active August 29, 2015 14:28
Benchmark for implementing undo/redo
node_modules/
/*
E -> M [+ M]
M -> B [* B]
B -> Num | (E)
*/
function calc(str){
str = str.replace(/\s/g,'');
var pos = 0;
/*
Миксин для React компонентов, который переопределяет shouldComponentUpdate на
основе глубокого сравнения старого и нового значения.
В миксин надо передать функцию, которая возвращает сравниваемый объект.
Пример использования:
```
var MyStore = require('myStore');
GNU screen scripting:
- rename window: <C-a> A
- screen -p <windown-name> -X stuff './build test\n'
var i = 0;
var r = new java.lang.Runnable(){
run: function(){
for(var j = 0; j < 1000000; j++){
i++;
}
}
};
Создаем pipe номер 1 (можно любой номер указать) с ограничением 10Kb/s
sudo ipfw pipe 1 config bw 10Kbytes/s
Создаем правило номер 10 (любой номер можно указать), которое вешает пайп номер 1 на исходящий канал от моей к машине к virtual box
sudo ipfw 10 add pipe 1 ip from me to 192.168.15.15 out
Удаляем правило номер 10
sudo ipfw delete 10
Две параллельные транзакции, одна слева, другая справа.
Каждая проверяет количество активных пользователей,
убеждается что оно не превышает лимит, и вставляет нового пользователя. В некоторых БД реализация такой функциональности потребовала бы явной блокировки таблицы перед запросом select count(*), но только не в постгресе
test=# test=# begin transaction;
test=# begin transaction; BEGIN
BEGIN test=# select count(*) from u where status='active';
test=# select count(*) from u where status = 'active'; count
count -------
------- 6