# Понедельник 8 твитов
Контроль захватил @gritzko, distributed systems researcher, автор @swarm_js, Casual Trees CRDT и RFC7574. Пока меняю пароли и читаю приватки
9:55Swarm - это как @apachekafka, только между клиентом и сервером. Шина синхронизации всего со всем. В том числе, реплицированная БД на клиенте
10:28То есть, скачиваем кусок БД на клиента и работаем с ним локально. Читаем, пишем. Синхронизация/мерж автоматические. Offline, real time.
10:29Проект в разработке, путь был тернистым. Классические БД построены на линейном логе, Swarm на частично упорядоченном - новая математика.
10:32В мире, где на одно рыло уже есть по два-три-четыре компа (телефон-планшет-часы) даже однопользовательские приложения нужно синхронизировать
10:41Тренд будет усугубляться. Тесла - айфон на колёсах. Процессор - это просто переплавленный песок. Кстати, про IoT+JS: youtu.be/zsJnsRGh8dE
10:48This awesome service offers instant deploys of any Node app thenextweb.com/insider/2016/0… pic.twitter.com/BNfJizPRw69:57![]()
P.S. С now ещё никто не баловался? Занятно, что на каждую версию пакета свой URL. Если зав-сти pinned, то очень ОК. От авторов @SocketIO
9:57# Вторник 2 твита
Опрос. Моё веб приложение сильнее всего выиграло/выиграет, если я добавлю...
6:33Иду по дороге, вижу - подкова. Поднял, перевернул - а там конь. Это про разработку сложных систем
11:55# Среда 26 твитов
Побеждал offline, но ретвит @nikitonsky перетянул голосование в пользу real-time updates. Возможно, из-за tonsky.me/blog/the-web-a… ?
2:37Иллюстрация к статье: у Твиттера одно и то же число в разных частях интерфейса имеет разные значения. 146% synced. pic.twitter.com/H1TBUnZXCx
Собственно, @apachekafka и вырос из этой боли: на бэкэнде много разных БД, нужно их между собой синхронизировать. А есть ещё и фронтенд.
3:20ППШ эффективен и надёжен, при этом прост. Хорошая система - простая система. #чтение #9мая vk.com/doc8787281_179… pic.twitter.com/9DmjYbNfFY
Оружейники советской школы провели годы в полевых оружейных мастерских. Поэтому их конструкции исключительно просты в обслуживании и надёжны
5:29Marc was almost ready to implement his "hello world" React app pic.twitter.com/ptdg4yteF15:30![]()
Вопрос: в какие окопы отправить ребят из facebook?
5:40@jsunderhood в окопы с медленным, очень медленным и ненадежным интернетом. Для начала.6:48
Если этот твит наберёт 10 лайков, я расскажу @vmakhaev абсолютно всё, что знаю про номера транзакций, лампортово время и вектора версий.
7:22Итак, самый простой способ обозначать версии—порядковый номер: 1,2,3. Так сделано в PostgreSQL, например. Просто и для локальной системы ОК
8:11В распределенной системе трудно понять, кто 2, а кто 3. Поэтому в LWW системах типа Cassandra используют время (timestamp). NTP им в помощь.
8:14Самые суровые timestamps—в Google Spanner. Он ACID, а не LWW, поэтому время там синхронизируется через спутник, чтобы гарантировать порядок.
8:19Еще способ жить с порядковыми номерами в распр системе: координация, Paxos или Raft. Узлы долго договариваются, какая запись 2, а какая 3.
8:23В 2007 в Яндексе мы с Галаховым случайно изобрели Paxos. Казалось просто. Хорошо, писать не стали. Там как УК РФ 131, 3 года содомии минимум
8:38Еще вариант: хэши, как в git. Плюсы: уникальны, гарантия integrity. Минус: порядок (граф) нужно описывать отдельно. Так в CouchDB/pouchdb.
9:20Лампортова модель. Если одним маркером можно изрисовать всё, кроме самого маркера, то двумя маркерами—абсолютно всё! en.wikipedia.org/wiki/Lamport_t…
12:23Лампорт: нумеруем события парой (номер, процесс). Новое событие получает номер +1 от макс известного. Если номер одинаков–процесс разный.
12:32Лампорт пишет, что его логическое время срисовано с теории относительности, поэтому зависит от системы отчета. Для распред.сист.–самое то!
12:36@jsunderhood Использовал года пару лет назад для синхронизации сервера с клиентом. В принципе взлетело :) Хорошо ложится на event sourcing.12:53
Lamport timestamps, как и обычные номера/стампы, уникальны. Но увы, они показывают отношения "до-после" только для отдельного процесса.
12:58То есть, (5,А) был после (4,А). А был ли он после (4,Б) или одновременно? Непонятно. Тут и становятся нужны Вовины любимые векторные версии.
13:00@jsunderhood это всё хорошо и интересно. Дак а чем векторные версии плохи? И какие рекомендации/примеры по созданию упорядоченных структур?13:00
Векторные версии (часы) - это конструкции вида [5А,4Б,4В,3Д], которые описывают конус прошлого по Минковскому pic.twitter.com/ohfyzr7Nli
@avibryant @strlen Yes, very possibly. Basically what I can say definitely is that vector clocks are a failure as an end-user api.
Векторные часы используются внутри AP систем типа Amazon Dynamo или Voldemort, где их размер N, к-во серверов в с-ме
@avibryant @strlen Yes, very possibly. Basically what I can say definitely is that vector clocks are a failure as an end-user api.
14:36
В Swarm, где у каждого клиента есть своя реплика, N неимоверно больше. Это делает векторные часы не очень-то применимыми. Но и без них низя.
14:38@jsunderhood P.S. не N, а "в худшем случае N"
19:59# Четверг 17 твитов
8 видео с секции FrontTalks на DUMP: БЭМ, React, CSSO отладка, баги, гриды, тесты, спорт — youtube.com/playlist?list=… pic.twitter.com/6xAlazVTao4:53![]()
Кстати, кто-то успел побаловаться с virtual-dom? Какие впечатления? github.com/Matt-Esch/virt…
8:41Если этот твит набирает 20 лайков, сегодня-завтра говорим про управление зависимостями. Я не про наркоту, а про git, npm, semver, zeit...
9:14The difference between an easy model and a complicated one9:15
bit.ly/1SBYQGV pic.twitter.com/Nj5JaoxfxA![]()
npm–детский сад по сравнению с git. git рассчитан на проект, а npm на экосистему. Но, в git хэш фиксирует все дерево кода побитно, а в npm?
11:28В npm мы в лучшем случае верим честному слову @izs и что он не накосячил нигде. В теории, там можно ставить ссылки на git, конечно...
11:37Это было бы ещё приемлемо с большими пакетами от известных авторов (типа от @facebook), тогда роль npm сводилась бы до хостинга.
11:39Но для микропакетов механизм неадекватный. Ронахер отписался на тему развёрнуто lucumr.pocoo.org/2016/3/24/open…
11:41@dominictarr I had strange idea of per-function dependency mgmt once. Hypertext of functions, all Merkle pinned. Cool, but is it any better?
С крипто на уровне git можно было бы "один пакет=один класс/функция" замутить даже. Но семвер+центральный репо это 👎
@dominictarr I had strange idea of per-function dependency mgmt once. Hypertext of functions, all Merkle pinned. Cool, but is it any better?
11:46
Исторически, фронтендеры общались только со своим сервером, поэтому упарываться за крипто и безопасность, как подозреваю, традиции ещё нет.
11:47довольно интересно, особенно, чтобы не тянуть react ради одной фичи. хотя, конечно, приходится флоу писать руками11:56Кстати, кто-то успел побаловаться с virtual-dom? Какие впечатления? github.com/Matt-Esch/virt…
@jsunderhood но ты же хочешь зависеть от версий все-таки? Получать патч релизы автоматом (если не ломают ничего). Это две крайности...11:58
@jsunderhood related: интересный тред от создателя Erlang: erlang.org/pipermail/erla… "why do we need modules at all?"12:05
В этот солнечный майский день нужно быть на природе и слушать Джона Бон Джови youtube.com/watch?v=mafbPc…
13:26@jsunderhood конечно. В целом, построение отдельной сущности "патч", а затем ее наложение на реальный dom, красивая, но не самая крутая идея15:18
# Пятница 4 твита
@jsunderhood но что же все таки делать с микропакетами...5:24
Thanks again to Twitter friends who helped me research my web obesity talk. I’ve put up the text version here idlewords.com/talks/website_…5:47
Видна аналогия между микросервисами, микропакетами и микроядром. Вспомним флеймвор Линуса Торвальдса и Э Таненбаума en.m.wikipedia.org/wiki/Tanenbaum…
6:471. Система слишком сложна 2. Распилим на маленькие простые кусочки 3. И как теперь разобраться в этих кусочках
6:58# Суббота 11 твитов
Ужастик про управление зависимостями на кластере. Фича реализована на трех уровнях: хранения, агрегации и фронта. Каждый - сотни серверов...
4:23Работает неск версий кластера, части как-то друг друга находят. Порой не так. Результаты кэшируются на неск уровнях. "Умный" балансировщик.
4:26В результате, невозможно понять, какой комбинацией версий кода получен наблюдаемый результат. Правки меняют результат случайным образом.
4:27Интересный подход к микропакетам, который вроде никто не пробовал - совместить пакетный менеджер и систему контроля версий.
12:51Потому что если JavaScript, один пакет = один файл, то их функции на 80% перекрываются. Добавим единое дерево файлов по типу Java пакетов...
12:56...тогда юнит-тесты нужно включить в систему и фашистский семвер по методу Стефана Боннеманна.
13:01Из TDD берем "тесты идут-значит, все работает", из Стефана: "если patch-level change ломает зависимости - коммитить нельзя".
13:04Но, в принципе, такой коммунизм можно устроить в одном большом проекте, с кучей либ и таргетов. Интересно, где поломается...
13:06Ценно, что каждую версию приложения и всех его зависимостей можно фиксировать одним хэшем -- их граф, по require(), это готовое Merkle tree.
13:18Так же, возможен diff по всему дереву, с либами. А версиии можно менять у отдельных компонентов - в отличие от глобальных бранчей в git.
13:30То есть, эффект распиливания отсутствует, зато гибкость присутствует. Осталось найти все подковы и грабли...
13:36# Воскресенье 7 твитов
Рыночная ниша node.js сильно отличается от того, что задумывал @ry. Зачем browserify или gulp асинх работа с сетью? pic.twitter.com/xzD0WKCs31
Помня, какого шухера наводили Windows-черви в 2000-х, воспринимаю это очень серьёзно infoq.com/news/2016/03/n… infoworld.com/article/304852…
11:50@jsunderhood Express там, как раз в тему. Остальное это в основном приватные проекты с АПИ, не модули.11:53
Про червей. В 2001 N.Weaver написал, что умный червь, используя хитрые оптимизации, может заразить интернет за 15мин iwar.org.uk/comsec/resourc…
12:01В 2003 очень простой, даже тупой, SQL Slammer заразил все уязвимые сервера в интернете за 10 минут en.m.wikipedia.org/wiki/SQL_Slamm…
12:03Но эпидемии - это эффектный фейерверк, не более. Мне лично было плохо в 2006, когда хакер пролез в сеть организации
12:04На этой неделе с вами был @gritzko. Итого, +70 фолловеров и один судебный иск от npm Inc. Всем спасибо за внимание!
12:32# Ссылки
other
- https://youtu.be/zsJnsRGh8dE
- http://blog.hypriot.com/post/the-pine-a64-is-about-to-become=the-cheapest-ARM-64-bit-platform-to-run-Docker/
- https://github.com/gritzko/swarm
- https://github.com/Matt-Esch/virtual-dom
- http://opengarden.com/
- http://tonsky.me/blog/the-web-after-tomorrow/
- https://vk.com/doc8787281_179141291?hash=171ff2b764a8a6eba4&dl=28aabb49a7217e1962
- https://en.wikipedia.org/wiki/Lamport_timestamps
- https://www.youtube.com/playlist?list=PLRdS-n5seLRoWZm8I5onZqU9m8HB_hg1S
- https://www.youtube.com/watch?v=mafbPctVxjs
- http://www.cs.yale.edu/homes/aspnes/classes/465/notes.pdf
- http://bit.ly/1SBYQGV
- http://lucumr.pocoo.org/2016/3/24/open-source-trust-scaling/
- http://erlang.org/pipermail/erlang-questions/2011-May/058768.html
- https://medium.com/google-developers/introducing-incremental-dom-e98f79ce2c5f#.fxz8vwkde
- http://idlewords.com/talks/website_obesity.htm
- https://en.m.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate
- https://en.m.wikipedia.org/wiki/SQL_Slammer
- https://www.infoq.com/news/2016/03/npm-infection
- http://www.infoworld.com/article/3048526/security/nodejs-alert-google-engineer-finds-flaw-in-npm-scripts.html
- http://www.iwar.org.uk/comsec/resources/worms/warhol-worm.htm
- http://thenextweb.com/insider/2016/04/07/awesome-service-offers-instant-deploys-node-app/