
Дмитрий
11.08.2018
01:37:06
Предсказуемость и детерминируемость в коде ты не увидишь, это на уровень выше, в принципах, так как описан апи не оставляет выбора и просто не предоставляет setState юзеру, чего оказывается достаточно)
https://codesandbox.io/s/vmx6wxww43?module=%2Fsrc%2Fstore.js вот пример стора, все вычисления описаны заранее, setState не то что запрещён — он не существует

Max
11.08.2018
01:50:08

Google

Дмитрий
11.08.2018
01:52:03
Ну так просто всё сводится к цепи статических интерфейсов, у нас же не произвольно меняется код а в каких-то рамках, и эти рамки известны заранее, тогда почему бы этим не воспользоваться
То, в какое состояние переключается граф при определенных условиях — можно ровно так же просчитать заранее
Это всё при условии что мы принципиально не юзаем алгоритм в рантайме, если юзаем то проблемы вообще нет
Но я хочу сначала убедиться что без этого точно нельзя обойтись, потому что если можно, то преимущества будут невероятные

Max
11.08.2018
01:59:08


Дмитрий
11.08.2018
02:00:01
Запрещать самые жёсткие кейсы, с остальными разбираться сразу при объявлении
Это может тебе показаться парадоксальным, но наложение ограничений даёт новые возможности
Вот на этой картинке циклы превращаются в изолированные области, а значит, всё происходящее в них будет касаться только их самих
Я сделал подход, в котором эвенты становятся инструментами описания развития событий, поэтому сколько бы не было развилок — они все детерменированы, потому что так или иначе юзер заранее говорит, какие события за этим могут последовать, и их гарантированно не бесконечность, потому что события — это реальные переменные, как ни крути нам становится известно, сколько их и что за ними последует
Но если что, то не обязательно заставлять все эвенты клепать руками, например map под капотом содержит события, а юзер просто рассчитывает стор на основе другого, заранее описывая свои цели
Ключевое — заранее


Max
11.08.2018
02:07:55

Дмитрий
11.08.2018
02:12:17
Тут сложно не скатиться в матан в объяснении, но это не селекторы (которые выделяют подчасть стора), это скорее объединение, которое комбинирует исходные данные, один это стор будет или больше — они всё равно складываются в дерево, а деревья проще графов

Google

Дмитрий
11.08.2018
02:12:20
Каждый триггер события запускает по очереди всё, что юзер описал как зависящее от него, какие-то сторы пересчитываются, запускаются другие эвенты — это всё складывается в дерево, собранное заранее, чисто из-за того, что ради этого и построен такой публичный апи
Второй скрин — с чем имеет дело юзер, чтобы не думая об этом, своими же руками построить исчерпывающее дерево зависимостей для библиотеки
А граф зависимостей получается индуктивно как совокупность таких деревьев, с ним никто не имеет дело и никто не в состоянии его обнаружить, но он есть и это довольно многое упрощает
Развилки же тут работают как обычные функции, просто на определенном шаге одна ветка дерева продолжит выполняться, а другая нет


Max
11.08.2018
02:32:01
Мне это напоминает rxjs где апи такое что заставляет описывать вычисления через явное указание зависимостей которые нужно вручную мерджить между собой чтобы образовать развилку и дальнейшие вычисления. Но только вот в rxjs combineLatest при ромбовидных зависимостях будет вызываться дважды и самое забавное то что там даже не пытаются это решить называя это фичей а не багом) https://staltz.com/rx-glitches-arent-actually-a-problem.html


Дмитрий
11.08.2018
02:36:56
Ну да) В стримах просто нет выхода) Стримы не имеют права дропать лишние апдейты, потому что каждый из них — важен. Я начал со сторов, в которых значения важнее апдейтов и поэтому два одинаковых апдейта свободно схлопываются в один, а в идеале заранее учитываются как имеющие один и тот же источник
Но тут уже чисто инженерные трудности, чтобы юзер не имел дело с графами и стеками, с ними нужно иметь дело библиотеке, и вот тут уровень их понимания прям моментально сказывается, например кейс выше означает что стек вызова обменивается информацией, это плёвое дело, но только когда делаешь во второй раз ?
А казалось бы, тудулист ?
Две самые парадоксальные вещи во всём этом — то, насколько обманчиво простой выглядит задача и насколько резко взлетает сложность на самом деле

Kelin
11.08.2018
02:45:43

Дмитрий
11.08.2018
02:47:07
Вся библиотека — это бойлерплейт вокруг низкоуровневого, не имеющего даже аналогий в реальности, dsl для обхода деревьев
В те моменты, когда я не встреваю на очередном этапе, количество бойлерплейта в приложениях резко сокращается)
У меня есть реализация сущностей ваще кардинально иного уровня, но её нельзя запускать сейчас, потому что она требует повышенных гарантий когерентности от библиотеки, и поэтому я вот уже пару месяцев пытаюсь вывезти новый подход к dsl, текущий подошёл к пределу своих возможностей ?
2018 — год долгостроев в фронте ?♂️

One
11.08.2018
03:02:13

Kelin
11.08.2018
03:02:22

Дмитрий
11.08.2018
03:02:34
Реакт, бабель
Оба резко встряли в довольно абстрактных проблемах

Google

Kelin
11.08.2018
03:03:00
А ну бабель кст
Точно
А разве бабель ещё не с прошлого года встрял?

Дмитрий
11.08.2018
03:03:15
16 реакт это 15.8, например

Kelin
11.08.2018
03:04:17
Ладно

One
11.08.2018
03:09:36
Реакт, бабель
ну 16 тестировали долго и нудно. все эти диаграммы сколько тестов прошел. а в 17 асинхрон будет? а бабель то живет 7-й вполне вроде как

Дмитрий
11.08.2018
03:09:56
Ну да, они же роадмап показывали
Тут просто прикол в том, что мы просто верим им на слово, что в 16 мол есть файбер, просто ̶о̶н̶ ̶с̶п̶и̶т̶ асинхрон ещё не включен
А по факту видимых изменений нет и 16 релиз тупо потому что слишком долгая работа над одной версией угнетает команду ?♂️
Ну и короч получается, что реакт застрял уже значительно больше года и является долгостроем
Говорят в сентябре должны релизнуть с помпой

Dmitry
11.08.2018
04:44:39
Подскажите когда я из массива, делаю объект через normalizr, я могу быть уверен, что элементы будут выведены в том же порядке, в каком они были в массиве?

Вячеслав
11.08.2018
06:12:56
Ребят, всем привет)

Valery
11.08.2018
06:23:37
Есть div внутри него одна ссылка. У div на onCkick повешен обработчик, который увеличивает размер блока. Можно ли как то сделать, что бы когда кликаешь на ссылку, блок не увеличивался, при этом когда кликаешь на сам блок, размеры увеличивались. Как такое сделать?

Sergey
11.08.2018
06:29:05

Valery
11.08.2018
06:37:50

Sergey
11.08.2018
06:38:05

One
11.08.2018
07:08:21

Anton
11.08.2018
08:23:48
Доброе утро, коллеги) кто делал SSR? нужна помощь

Google

///
11.08.2018
08:40:13
SSSR Lenin i Trotskij delali

Artyom
11.08.2018
08:41:17

Anton
11.08.2018
08:42:20
Тогда такой вопрос, я написал сервер, подготовил index.html , как запустить сервер?
Сервер на express

Artyom
11.08.2018
08:42:47

Admin
ERROR: S client not available

?️Ivan
11.08.2018
09:22:30

Artyom
11.08.2018
09:23:54
Я три дня на ву посидел, есть свои плюсы, но, пока, в целом не нравится

Исмаил
11.08.2018
09:29:33
Мир, подкиньте чего нибудь годного для изучения? Ну кроме доков конечно, их я уже нашел, хотелось бы с низов до эдвансед тем что бы было

Mark
11.08.2018
09:30:15

Artyom
11.08.2018
09:32:41

Исмаил
11.08.2018
09:36:00
Эггхед дорогой показался, мне бы хотя бы статейки хорошие
Базу знаю, но вот чисто пару раз наклепать чего, редакс тоже норм знаю

Nikolay
11.08.2018
09:36:38

父の揚げたスープ
11.08.2018
09:36:53
В плане дорогой?
По редаксу курсы бесплатные были вроде

Исмаил
11.08.2018
09:36:58
Окупится :)
Там получается могу на месяц купить про, и качать все курсы?

?️Ivan
11.08.2018
09:37:04

Исмаил
11.08.2018
09:37:09

Nikolay
11.08.2018
09:37:29

Artyom
11.08.2018
09:38:03

Google

Исмаил
11.08.2018
09:38:04

Nikolay
11.08.2018
09:38:18
Мне месяца подписки с лихвой хватило на то, чтоб просмотреть все интересующие уроки.

Исмаил
11.08.2018
09:38:20
Я вот именно на ангуляре и пишу

Artyom
11.08.2018
09:39:14
Какие именно плюсы?
Из коробки много чего, дока очень хорошая + на русском есть. А еще все окружение заметно качественнее сделано, типо девтулзов и дев сервера, просто пользоваться приятнее

Исмаил
11.08.2018
09:39:20
Решил глянуть в сторону щас, но пока не оч впечатления

Artyom
11.08.2018
09:39:53

Nikolay
11.08.2018
09:39:53

?️Ivan
11.08.2018
09:40:00

Исмаил
11.08.2018
09:41:04
Ну во первых без типов сложно, но тут ладно, реакт на тс тоже можно писать, нету своего раутера, нету очень удобных синглтон сервисов, куча плюшек с коробки

Nikolay
11.08.2018
09:41:14

?️Ivan
11.08.2018
09:41:18

Исмаил
11.08.2018
09:41:21
+ рхжыэс там в коробке