@react_js

Страница 4593 из 5115
Дмитрий
11.08.2018
01:37:06
эта формулировка еще непонятней) Окей, скажи это где, в эффекторе находится тот самый алгоритм? Попробую тогда разобраться и продебажить эффектор что-ли, самому интересно)
https://github.com/zerobias/effector/tree/develop/src/graphite/tarjan Версия 18.0-beta.10 намекает что у меня есть нерешенные проблемы, но поэтому сам алгоритм я вынес отдельно, можешь в принципе вообще вынести его, он ни к чему не привязан

Предсказуемость и детерминируемость в коде ты не увидишь, это на уровень выше, в принципах, так как описан апи не оставляет выбора и просто не предоставляет setState юзеру, чего оказывается достаточно)

https://codesandbox.io/s/vmx6wxww43?module=%2Fsrc%2Fstore.js вот пример стора, все вычисления описаны заранее, setState не то что запрещён — он не существует

Max
11.08.2018
01:50:08
Ну короче типа можно описать зависимости как type fullNameDeps = | FirstCase(firstName) | SecondCase(firstName, lastName); и мы по прежнему остаёмся в рамках конечных и предсказуемых штук
Ну это статический интерфейс, даже если описать что у fullName есть два варианта зависимостей все равно при резолвинге зависимостей следующий подграф будет известен только после вычисления функции. И соотвественно нужно правильно реагировать чтобы избежать вычисления сторов(селекторов) которые нужны были старым зависимостям потому что новым зависимостям эти сторы уже не потребуются

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

Это всё при условии что мы принципиально не юзаем алгоритм в рантайме, если юзаем то проблемы вообще нет

Но я хочу сначала убедиться что без этого точно нельзя обойтись, потому что если можно, то преимущества будут невероятные

Max
11.08.2018
01:59:08
Ну так просто всё сводится к цепи статических интерфейсов, у нас же не произвольно меняется код а в каких-то рамках, и эти рамки известны заранее, тогда почему бы этим не воспользоваться То, в какое состояние переключается граф при определенных условиях — можно ровно так же просчитать заранее
Мне сложно представить как такое возможно. Вычисления же недетерминированные. Допустим там стоит if(Math.random()>0.5) { используем одни зависимости } else { используем другие зависимости} - как тут можно что-то статически предсказать?

Дмитрий
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
у меня как-то собес был 4 часа
может они пытались узнать от тебя че-то новое, выпытать суть реакта например =)

Kelin
11.08.2018
03:02:22
2018 — год долгостроев в фронте ?‍♂️
Да чёт особо много долгостроев не видно, новый vue-cli, ivy renderer в ангуларе, шо там ещё

Дмитрий
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:38:05
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
Доброе утро, коллеги) кто делал SSR? нужна помощь
Сдесь 5к человек, кто-то точно делал, опиши сразу вопрос https://rudevs.network/SJnVLYQm7

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
Мир, подкиньте чего нибудь годного для изучения? Ну кроме доков конечно, их я уже нашел, хотелось бы с низов до эдвансед тем что бы было

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

Базу знаю, но вот чисто пару раз наклепать чего, редакс тоже норм знаю

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

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

Nikolay
11.08.2018
09:37:29
Там получается могу на месяц купить про, и качать все курсы?
Можешь. Хотя, справедливости ради, никакого откровения ты там не увидишь.

Artyom
11.08.2018
09:38:03
Эггхед дорогой показался, мне бы хотя бы статейки хорошие
Там половина бесплатно, в частности то что я порекомендовал

Google
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
Ну во первых без типов сложно, но тут ладно, реакт на тс тоже можно писать, нету своего раутера, нету очень удобных синглтон сервисов, куча плюшек с коробки

?️Ivan
11.08.2018
09:41:18
Из коробки много чего, дока очень хорошая + на русском есть. А еще все окружение заметно качественнее сделано, типо девтулзов и дев сервера, просто пользоваться приятнее
То есть попробовать стоит? Взялся за реакт, освоился немного, но как-то.. Замудренно что-ли) думаю вью попробовать для интереса

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

Страница 4593 из 5115