Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 10:25
Оценка: :))) :))) :)))
Я тут спекулировал, что C++ ки безнадёжно отстали от прогресса и только доходят до фич, 20 лет как доступных в более других языках.

Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/

и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools

https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension


И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?
Re: Как в C++ получить Redux и Redux Dev Tools
От: Максим Россия  
Дата: 30.12.20 10:56
Оценка: +5
Тё>https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension

Если посмотреть повнимательнее, то окажется, что все это выполняется в программе, написанной на С++ https://github.com/chromium/chromium
Errare humanum est
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 11:06
Оценка: :))
Здравствуйте, Максим, Вы писали:

Тё>>https://www.youtube.com/watch?v=tHLRexgkOzk&feature=emb_logo&ab_channel=ReduxDevToolsExtension


М>Если посмотреть повнимательнее, то окажется, что все это выполняется в программе, написанной на С++ https://github.com/chromium/chromium


Неважно, на чём написан Хром.

Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.
Если выбирать, на чём делать десктоп/мобайл приложение: TypeScript (Electron/React.Native) vs C++ (что?). У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), GPU ускорение из коробки (CSS эффекты все обсчитываются на GPU), и доступ к OS, какие-то обсчёты прилинковать на C/C++. А что может предложить голый C++?
Отредактировано 30.12.2020 11:08 Артём . Предыдущая версия .
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Максим Россия  
Дата: 30.12.20 11:13
Оценка: 1 (1) +5
Тё>Если выбирать, на чём делать десктоп/мобайл приложение: TypeScript (Electron/React.Native) vs C++ (что?). У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), и доступ к OS, какие-то обсчёты прилинковать на C/C++. А что может предложить голый C++?

Писать GUI на чистых плюсах не имеет особого смысла в 90% случаев уже начиная с 2000-х годов. На худой конец, можно взять Qt с QML.
С++ имеет смысл использовать только там, где без него никак не обойтись, для всего остального есть пути гораздо более простые...
Errare humanum est
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Ночной Смотрящий Россия  
Дата: 30.12.20 11:14
Оценка: +1 -1
Здравствуйте, Тёмчик, Вы писали:

Тё>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений,


Чем?

Тё> а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.


Чем?

Тё> У TypeScript его киллер-фича — это мощные фреймворки, и быстрый V8 (по замерам он как Oracle JVM по скорости), GPU ускорение из коробки (CSS эффекты все обсчитываются на GPU)


Только на практике почему то получается самый тормознутый десктоп из того что сейчас существует. Последнее "приобретение" — Lens. Убил бы.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 11:16
Оценка: 1 (1) +5
Здравствуйте, Тёмчик, Вы писали:

Тё>Я тут спекулировал, что C++ ки безнадёжно отстали от прогресса и только доходят до фич, 20 лет как доступных в более других языках.


Тё>Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/


Redux — это что? То что я вижу погуглив, это точно не паттерн, это библиотека для реализации конечного автомата (который тоже не паттерн, а математическая абстракция). Я в этом месяце как раз добавлял конечный автомат к нашему проекту, и взял Meta State Machine (MSM). Пока что все очень довольны, реализовано довольно удобно

Тё>и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools


ХЗ что это, словами рассказал бы.

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


"настолько же мощный инструмент" для того что бы сделать что?
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: cockRoach Австрия  
Дата: 30.12.20 11:35
Оценка:
Тё>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.
Тё>Если выбирать, на чём делать десктоп/мобайл приложение: ***
Kotlin (+Kotlin.Native) — TS нинужен.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 11:36
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Redux — это что? То что я вижу погуглив, это точно не паттерн, это библиотека для реализации конечного автомата (который тоже не паттерн, а математическая абстракция). Я в этом месяце как раз добавлял конечный автомат к нашему проекту, и взял Meta State Machine (MSM). Пока что все очень довольны, реализовано довольно удобно

Redux, если к нему прибавить effect-ы, получается как плоская FSM. Но в чистом Redux только reducer-ы есть.
Просмотрел Meta State Machine по диагонали- так это примерно аналог XState (HFSM).

Тё>>и тулзы к нему Redux DevTools https://github.com/reduxjs/redux-devtools


KP>ХЗ что это, словами рассказал бы.

Это такой плагин для Хрома: показывает историю событий (action) хранилище Redux-а. Хранилищ может быть несколько на приложение, он умеет выбирать нужное.

Тё>>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


KP>"настолько же мощный инструмент" для того что бы сделать что?

Ну ты уже упомянул Meta State Machine. Есть к нему интерактивные инструменты для визуализации HFSM, как у XState?
У XState есть https://xstate.js.org/viz/ и https://xstate.js.org/docs/packages/xstate-inspect/. Я мог бы показать развестистое дерево состояний с переходами у боевого проекта под отладкой (на xstate-inspect), но воздержусь, чтоб не нарушать NDA.
Отредактировано 30.12.2020 12:06 Артём . Предыдущая версия .
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 12:11
Оценка:
Здравствуйте, cockRoach, Вы писали:

Тё>>Мой пойнт вот в чём: Redux это очень хорошо для дизайна приложений, а Redux Dev Tools- очень ценный инструмент для программиста, при отладке большого и сложного проекта.

Тё>>Если выбирать, на чём делать десктоп/мобайл приложение: ***
R>Kotlin (+Kotlin.Native) — TS нинужен.

Ок. Есть ли для котлина сравнимые библиотеки (Redux, XState, Meta State Machine) и инструменты к ним (Redux Tools, XState Inspect).
Интересно кстати про kotlin.native.
Вот котлин может компиляться с помощью LLVM в бинарник, как киллер-фича. Однако, аналогичные попытки были и для JS (например https://github.com/ispras/llv8) — они похоже, что провалились. Очевидно, V8 быстрее работает, когда он может JIT-ть "горячие" куски, например, заменять объект из hash map на shadow class.
Отредактировано 30.12.2020 12:57 Артём . Предыдущая версия . Еще …
Отредактировано 30.12.2020 12:31 Артём . Предыдущая версия .
Отредактировано 30.12.2020 12:14 Артём . Предыдущая версия .
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 13:04
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну ты уже упомянул Meta State Machine. Есть к нему интерактивные инструменты для визуализации HFSM, как у XState?




меня табличка как из примера более чем устраивает. Пролистай до "Transition table".

Тё>У XState есть https://xstate.js.org/viz/ и https://xstate.js.org/docs/packages/xstate-inspect/. Я мог бы показать развестистое дерево состояний с переходами у боевого проекта под отладкой (на xstate-inspect), но воздержусь, чтоб не нарушать NDA.


Да кого состояния дерева интересуют? Это же просто инструмент.
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 13:28
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>меня табличка как из примера более чем устраивает. Пролистай до "Transition table".

Пролистал. Ужаснулся. Это только от "hello world" примера вытекли глаза. А что станет, если громадное развесистое дерево состояний попытаться этим описать.

KP>Да кого состояния дерева интересуют? Это же просто инструмент.

Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

Аналоги смотри в редакторе Unreal Engine и редакторе Amazon Lumberyard.
Re[5]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 13:39
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Пролистал. Ужаснулся. Это только от "hello world" примера вытекли глаза. А что станет, если громадное развесистое дерево состояний попытаться этим описать.


Если у тебя "громадное развесистое дерево состояний", то у тебя уже проблемы и они совсем не с библиотекой, а дизайном решения. Почти наверняка смысла в большом дереве не много, и просто не была проделана правильная декомпозиция состояний на вложенные машины.

KP>>Да кого состояния дерева интересуют? Это же просто инструмент.

Тё>Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

А сделать решение с меньшим количеством состояний, которые еще можно понять, не судьба? Что-то мне кажется вы там нечто странное творите
Re[6]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 14:04
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Если у тебя "громадное развесистое дерево состояний", то у тебя уже проблемы и они совсем не с библиотекой, а дизайном решения. Почти наверняка смысла в большом дереве не много, и просто не была проделана правильная декомпозиция состояний на вложенные машины.

Вложенные машины?
Я ведь написал — дерево состояний. Оно собирается большой пачки исходников вложенных состояний, как матрёшка. Причём, в отличие от "вложенных машин", таблица переходов на событие будет проверять от корня и ниже к вложенным (breadth first) состояниям.

KP>>>Да кого состояния дерева интересуют? Это же просто инструмент.

Тё>>Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

KP>А сделать решение с меньшим количеством состояний, которые еще можно понять, не судьба? Что-то мне кажется вы там нечто странное творите

Программа это и так огромное число машин состояний- неявных, разбросанных по отдельности. Формализовать их, насколько возможно, и соединить в одно целое- позволяет легче контролировать происходящее. Видеть интерактивную визуализацию- это бесценно.

Например, нажал кнопку, и наблюдаешь- как машина переключается, вот пошел запрос на бекенд, вернулся, побежали дальше, другие переходы активировались, UI меняется- ещё условия сработали, новый запрос, и т.д.
Я не мастер объяснять- это нужно видеть. В ютубе полно видео докладов про XState.
А Redux Tools позволяют следить за изменениями в централизованном Storage, без необходимости не останавливать программу в отладчике и искать тот исходник, ставить брейкпойнт, смотреть variables.
Re[7]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 30.12.20 14:10
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>Например, нажал кнопку, и наблюдаешь- как машина переключается, вот пошел запрос на бекенд, вернулся, побежали дальше, другие переходы активировались, UI меняется- ещё условия сработали, новый запрос, и т.д.

Тё>Я не мастер объяснять- это нужно видеть. В ютубе полно видео докладов про XState.
Тё>А Redux Tools позволяют следить за изменениями в централизованном Storage, без необходимости не останавливать программу в отладчике и искать тот исходник, ставить брейкпойнт, смотреть variables.

Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение. Зачем всё запихивать в автомат? Что-то разработчики на JS меня начинают пугать
Re: Как в C++ получить Redux и Redux Dev Tools
От: kov_serg Россия  
Дата: 30.12.20 15:22
Оценка: :))) :)
Здравствуйте, Тёмчик, Вы писали:

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?

Да для JS много полезных инструметов:
http://www.jsfuck.com
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 30.12.20 22:43
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение. Зачем всё запихивать в автомат? Что-то разработчики на JS меня начинают пугать


Ну, если у тебя на мета-шаблонах C++ больше светофора не собрать, то кто тебе буратино? У меня на XState огромное дерево состояний- и всё это летает, в том числе и на планшете и смартфоне (только не влазит в экран пока что). XState внутри грамотно сделан, поиск путей оптимальный и т.п.

PS Похоже, что аргументированного диалога не получится. Если даже демонстрировавший намёк на адекватность питон сорвался в "нету значит ненужно" отрицание религиозного фанатика. Печаль.
Отредактировано 30.12.2020 22:58 Артём . Предыдущая версия .
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 30.12.20 22:44
Оценка: +1 -1 :)
Здравствуйте, kaa.python, Вы писали:

KP>Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение.

И таки да. Вспоминается как в VMware внутри одного из модулей ESXi какие то орхетегторы в своё время спели и натанцевали практически всё как state machines, и это был такой пц что в написании что в отладке...
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Как в C++ получить Redux и Redux Dev Tools
От: Lexey Россия  
Дата: 30.12.20 23:35
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


С++ — это не язык для формошлепства, так что, не очень понятно, какие инструменты ты ожидаешь увидеть в ответ.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 00:17
Оценка: :))) :)))
Здравствуйте, Lexey, Вы писали:

Тё>>И так, вопрос к so5team, lexey, landerhigh — есть ли какой-то хотя бы отдалённо настолько же мощный инструмент в арсенале у самого-круче-только-варёные-яйца ЯП?


L>С++ — это не язык для формошлепства, так что, не очень понятно, какие инструменты ты ожидаешь увидеть в ответ.


В моём понимании формошлепство- буквально, лепить формочки для опердней. UI в целом это значительно больше.
Statecharts широко используется в играх для NPC, и embedded. Есть софт, который генерит прошивку к кофе-машине из формального описания в заготовку на C или C++.

Но, вот я наблюдаю тенденцию, о чём постоянно твержу- нормальные люди сбежали от C++, сначала была жава, теперь ts/js. Остались маленькие загончики-отстойнички, и это накладывает отпечаток. Устарелые библиотеки, недоразвитые инструменты, и представители вроде состима с ландерхаем, обиженные когда-то на разворот строки.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: vsb Казахстан  
Дата: 31.12.20 00:22
Оценка: 11 (6) +1
Redux это не совсем автомат (ну точней всё в мире конечный автомат, если быть педантичным, но Redux не про это). Redux это по сути паттерн и крохотная библиотека, помогающая его реализовать.

1. Всё мутабельное состояние приложения хранится в едином объекте (state). Этот объект представляет собой иммутабельную структуру.

2. Любое изменение состояния описывается неким объектом (action).

3. Весь код, меняющий это состояние, хранится в одном месте (reducer: (old_state, action) -> new_state ).


Что это позволяет:

1. Можно делать этот самый Time Travel. Т.к. у нас состояние приложения иммутабельное, то каждый шаг легко можно сохранять отдельно. Также сохраняется объект action. Таким образом можно относительно легко прослеживать логику изменения состояния приложения, можно поставить брякпоинт и выяснить, откуда этот action "прилетает" и т.д.

2. Можно делать hot reload. Что это значит. Мы запустили приложение, что-то натыкали и находимся в определённом месте. Например открыли окно настроек, залезли там куда-то и тд. И теперь поняли, что надо поменять что-то в коде. Мы меняем код, перезапускаем приложение и проигрываем все action-ы, которые были сделаны в прошлый раз. В итоге после перезапуска приложение находится в том же месте и в том же состоянии. Если делать это достаточно быстро, получается эдакая магия. Ну и это очень помогает сократить время разработки GUI-приложений. Причём от рантайма вообще никакой магии не требуется.

3. Многие считают, что получается удобная структура кода, в котором проще ориентироваться, чем в классическом варианте, где состояние размазано по всему приложению и код, его модифицирующий тоже размазан по всему приложению.

4. Эта штука хорошо сочетается с парадигмой React.
Отредактировано 31.12.2020 0:24 vsb . Предыдущая версия . Еще …
Отредактировано 31.12.2020 0:23 vsb . Предыдущая версия .
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 00:29
Оценка:
Здравствуйте, vsb, Вы писали:

Точно и по делу. Супер.

vsb>4. Эта штука хорошо сочетается с парадигмой React.


Появилось в реакт, работает везде. Сейчас реактовая тусовка двигает прогресс. XState тоже из реактовой тусовки.
А вот clojure реально хорошо сочетается с реакт (контрол как функция), и не сочетается с парадигмой ангулар (контрол как шаблон html с хуками в код).
Отредактировано 31.12.2020 0:34 Артём . Предыдущая версия .
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 00:40
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Redux — это что? То что я вижу погуглив, это точно не паттерн, это библиотека для реализации конечного автомата (который тоже не паттерн, а математическая абстракция). Я в этом месяце как раз добавлял конечный автомат к нашему проекту, и взял Meta State Machine (MSM). Пока что все очень довольны, реализовано довольно удобно


+1.
(Проблемы реализации КА вырастают из непонимания концепта КА. Никакие библиотеки это не решают. Все же мне надо куда-нить пару статей черкнуть про КА.)

Я концепт, подобный MSM, с явной transition table, реализовывал лет пятнадцать назад. Буст в той компании тогда был под запретом.
Получилось очень гибко и удобно, и многие проверки корректности были бесплатны в compile time.
Конкретно сейчас для реализации асинхронных алгоритмов мне больше нравится использовать корутины.
www.blinnov.com
Re[5]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 01:01
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>Пролистал. Ужаснулся. Это только от "hello world" примера вытекли глаза. А что станет, если громадное развесистое дерево состояний попытаться этим описать.


Авторам "громадных развесистых деревьев состояний" следует поискать себя в другой профессии.

KP>>Да кого состояния дерева интересуют? Это же просто инструмент.

Тё>Разработчика интересует, чтобы понять, что делает приложение, и почему оно не работает.

www.blinnov.com
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 01:05
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>PS Похоже, что аргументированного диалога не получится. Если даже демонстрировавший намёк на адекватность питон сорвался в "нету значит ненужно" отрицание религиозного фанатика. Печаль.


Тема, Тема.
Конченые автоматы — это фундаментальный предмет такой инженерной дисциплины, как "Теория Управления и Автоматика". В которой рассматриваются принципы проектирования КА и способы их минимизации.
Это фундаментальная математическая абстракция.

Огромное дерево состояний КА есть показатель того, что его аффтар лекции прогуливал. Ну или диплом в преходе купил, что тоже бывает.
www.blinnov.com
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.12.20 02:01
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну, если у тебя на мета-шаблонах C++ больше светофора не собрать, то кто тебе буратино?


30-40 состояний вполне тянет компилятор, но это уже избыток. 15-20 — это по большому счету максимум который еще разумно использовать.

В конце концов, открой для себя наверное самый известный конечный автомат в мире и посчитай сколько там состояний. А ведь этот КА с легкостью можно раздуть в несколько раз.

  Скрытый текст


Тё>У меня на XState огромное дерево состояний- и всё это летает, в том числе и на планшете и смартфоне (только не влазит в экран пока что). XState внутри грамотно сделан, поиск путей оптимальный и т.п.


У тебя кривое, безграмотное решение, которое сложно поддерживать. Кто тебе Буратино? Ну, я думаю что ответ очевиден, но пальцем тыкать не буду

Тё>PS Похоже, что аргументированного диалога не получится. Если даже демонстрировавший намёк на адекватность питон сорвался в "нету значит ненужно" отрицание религиозного фанатика. Печаль.


Количество состояний конечного автомата должно быть минимально достаточным для описания проблемы. Избыток состояний это проблема дизайна того же уровня как отсутствие конечного автомата там, где он нужен. У меня есть ощущение что ты открыл для себя новую, приколькную абстракцию — конечный автомат и теперь совершенно любую проблему пытаешься через него решить. Что интересно, большинство проблем действительно можно решить при помощи конечного автомата, но цена такого решения с избыточным количеством состояний куда выше чем без него.
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.12.20 02:31
Оценка: +1
Здравствуйте, landerhigh, Вы писали:

L>(Проблемы реализации КА вырастают из непонимания концепта КА. Никакие библиотеки это не решают. Все же мне надо куда-нить пару статей черкнуть про КА.)


По мне так тут демонстрируется классическая проблема паттернов с момента их появления. Всегда найдется кто-то, кому кажется разумным использовать как можно больше знакомых паттернов и абстракций, т.к. так "правильнее" и дизайн "чище". Ну либо просто кто-то из корпоративного Java мира, но там так просто принято и понимать почему так принято бессмысленно, надо просто делать так же. Обычно с опытом такое проходит, и когда человек добирается до позиции где могут приниматься решения по дизайну приложений специалист уже зрелый. Но вот Артем в этой теме реально удивляет, т.к. опыт то есть
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Lexey Россия  
Дата: 31.12.20 02:41
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Но, вот я наблюдаю тенденцию, о чём постоянно твержу- нормальные люди сбежали от C++, сначала была жава, теперь ts/js.


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

Тё>Остались маленькие загончики-отстойнички, и это накладывает отпечаток. Устарелые библиотеки, недоразвитые инструменты, и представители вроде состима с ландерхаем, обиженные когда-то на разворот строки.


Это ты Гугл, Амазон, Яндекс, etc в маленькие загончики-отстойнички записал? Юморист, однако.
И откуда тебе знать про библиотеки и инструменты, если ты ими не пользуешься? Или про представителей, с которыми ты не общаешься?
"Будь достоин победы" (c) 8th Wizard's rule.
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: sambl74 Россия  
Дата: 31.12.20 04:53
Оценка: 2 (1)
Здравствуйте, kaa.python, Вы писали:

KP>Да я в курсе того что такое конечный автомат. Речь о том, что твое описание выглядит как охрененно тяжелое решение. Зачем всё запихивать в автомат? Что-то разработчики на JS меня начинают пугать


Чем слушать Шаляпина в обработке, вот ссылка на статью автора Редакса

Там подробно написано, что, зачем и какой ценой.

Ну и на месте Тёмчика я бы побомбил что для C++ нету MobX-а
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.12.20 05:20
Оценка: +1
Здравствуйте, sambl74, Вы писали:

S>Чем слушать Шаляпина в обработке, вот ссылка на статью автора Редакса


Спасибо!

S>Там подробно написано, что, зачем и какой ценой.

S>Ну и на месте Тёмчика я бы побомбил что для C++ нету MobX-а

У меня есть ощущение, что в мире JS каждый год проявляется какая-то новая, "прорывная" технология которую надо обязательно использовать, а то всё пропало
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 08:37
Оценка: +2
Здравствуйте, kaa.python, Вы писали:

KP>Но вот Артем в этой теме реально удивляет, т.к. опыт то есть


Вопрос в том, 20 ли это лет опыта, или все же 20 раз по одному году?
www.blinnov.com
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 08:54
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>И таки да. Вспоминается как в VMware внутри одного из модулей ESXi какие то орхетегторы в своё время спели и натанцевали практически всё как state machines, и это был такой пц что в написании что в отладке...


У нас у всех есть подобные horror stories в шкафу.

State Explosion видели без исключения все (пламенные превед Тёме с его развесистой клюквой).
www.blinnov.com
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 08:55
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>Ну, если у тебя на мета-шаблонах C++ больше светофора не собрать, то кто тебе буратино?


KP>30-40 состояний вполне тянет компилятор, но это уже избыток. 15-20 — это по большому счету максимум который еще разумно использовать.


KP>ведь этот КА с легкостью можно раздуть в несколько раз.

Если использовать плоскую машину состояний, то там рост квадратичный.

KP>
  Скрытый текст
KP>Image: The-TCP-Finite-State-Machine-FSM-The-BIST-implementation-of-TCP-is-made-up-of-three-In.png


KP>У тебя кривое, безграмотное решение, которое сложно поддерживать. Кто тебе Буратино? Ну, я думаю что ответ очевиден, но пальцем тыкать не буду


Ты привел плоскую машину машину состояний. Кто тебе злой буратино? У меня вложенные состояния, каждое из которых в пределах 2-7 элементов. Если ты ещё не допетрил до этого, советую освежить в памяти UML. StateCharts- это тот же UML, напрямую интерпретируемый XState.

KP>Количество состояний конечного автомата должно быть минимально достаточным для описания проблемы.

Избыток состояний

А избытка нет, это только у тебя в голове в силу ограниченности знаний. Читай UML.

KP>У меня есть ощущение что ты открыл для себя новую, приколькную абстракцию — конечный автомат


В реальности такие плюсники как ты, ковыряются в песочнице (я про вырвиглазную либу из буста), в то время как реактщиков (и плюсников-игроделов Unreal Engine) корабли бороздят просторы Вселенной.

А теперь я показал тебе реальность, и тебя бомбит от этого. Это неконструктивно. Лучше присоединяйся к проекту портирования XState на C++ (пара реп есть в гитхабе) и приделать к нему адаптер для xstate-inspect, который веб.
Отредактировано 31.12.2020 9:03 Артём . Предыдущая версия .
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 09:02
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ты не допетрил, что избытка нет.


Есть. Ты же лекции прогуливал.

Тё>Читай UML.


Тёма, на календарь посмотри. Повальный надроч на UML закончился в районе года 2005.
www.blinnov.com
Re[12]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 09:28
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Есть. Ты же лекции прогуливал.

Я не могу выкладывать исходники.
Ну попытаюсь обьяснить болезному.
Вот представь, у тебя кнопка. 3 состояния: нажата, отжата, наведена мышка. А теперь представь, у тебя 3 кнопки на панели. Это 3 вложенных срстояния, 9 листьев. А теперь представь, таких панелек у тебя 5 за таб контролом. это 45 листьев. Дошло? Это только визуальная часть. А теперь представь, у тебя пачка точек запроса на сервер- каждый с 4 состояниями, часть с вложенными...

L>Тёма, на календарь посмотри. Повальный надроч на UML закончился в районе года 2005.

Ниасилил Rational Rose? Бедненький.
Впрочем, неудивительно- ты и бинарный поиск ниасилил, вот уж казалось бы, базовое знание для инженера и программиста.

https://docs.unrealengine.com/en-US/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/index.html


https://en.m.wikipedia.org/wiki/Tree_automaton

Harel statecharts,[5] invented by computer scientist David Harel, are gaining widespread usage since a variant has become part of the Unified Modeling Language (UML).[non-primary source needed] The diagram type allows the modeling of superstates, orthogonal regions, and activities as part of a state.


Я понимаю, для Эллочки Людоедки, знающей только слова вектор, лист и мап, сложно понять математические концепции, и не ожидаю понимания от клинически неспособных думать как математик.
Re[13]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 09:36
Оценка: +4
Здравствуйте, Тёмчик, Вы писали:

L>>Есть. Ты же лекции прогуливал.

Тё>Я не могу выкладывать исходники.

Да кому твой говнокод сдался-то.
А лекции прогуливать не надо было. Сейчас меньше бы нес пурги.

Тё>Ну попытаюсь обьяснить болезному.

Тё>Вот представь, у тебя кнопка. 3 состояния: нажата, отжата, наведена мышка. А теперь представь, у тебя 3 кнопки на панели. Это 3 вложенных срстояния, 9 листьев.

Тема, поздравляю, ты только что изобрел State Explosion. То, о чем тебе уже примерно все в этой теме и написали.

L>>Тёма, на календарь посмотри. Повальный надроч на UML закончился в районе года 2005.

Тё>Ниасилил Rational Rose? Бедненький.

Тема, упоминать Rational Rose в 2021 году — это

Тё>Я понимаю, для Эллочки Людоедки, знающей только слова вектор, лист и мап, сложно понять математические концепции, и не ожидаю понимания от клинически неспособных думать как математик.


Как всегда, самокритичненько.
www.blinnov.com
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 09:37
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Это ты Гугл, Амазон, Яндекс, etc в маленькие загончики-отстойнички записал? Юморист, однако.


Ну так он же собеседование туда в очередной раз провалил. Значит, это "закончики-отскойнички".
www.blinnov.com
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.12.20 10:37
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ты привел плоскую машину машину состояний. Кто тебе злой буратино? У меня вложенные состояния, каждое из которых в пределах 2-7 элементов. Если ты ещё не допетрил до этого, советую освежить в памяти UML. StateCharts- это тот же UML, напрямую интерпретируемый XState.


Для вложенных КА MSM вполне подходит. Что ты тут доказать-то пытаешься? То что надо использовать КА везде? Ну используй, мало ли кривого ПО в мире
Re[14]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 11:18
Оценка: :))
Здравствуйте, landerhigh, Вы писали:

L>>>Есть. Ты же лекции прогуливал.

Тё>>Я не могу выкладывать исходники.

L>Да кому твой говнокод сдался-то.

L>А лекции прогуливать не надо было. Сейчас меньше бы нес пурги.
Каюсь, прогуливал вышку на 1 курсе, посещал дискотеки, и поплатился за это оценками. А теормех оценку выпрямил за счёт места в олимпиаде. Я вообще в 90-е выезжал за счёт олимпиад.

Тё>>Ну попытаюсь обьяснить болезному.

Тё>>Вот представь, у тебя кнопка. 3 состояния: нажата, отжата, наведена мышка. А теперь представь, у тебя 3 кнопки на панели. Это 3 вложенных срстояния, 9 листьев.

L>Тема, поздравляю, ты только что изобрел State Explosion. То, о чем тебе уже примерно все в этой теме и написали.

Есди бы вы ты немножко понимал в bigO — state explosion не 9 состояний, а 27. Да, это недостаток flat state maсhine. Но тебе этого не понять. Спольски в 2000м написал что-то вроде
"они хорошо понимают бейсик, но когда начинается C и указатели- меняют курс. Ибо нет нужных нейронов в голове, физически неспособны понять указатели.". Так вот я прошёл этап C++ и пошёл дальше, а у тебя в голове нет нужных нейронов, ты застрял.


L>Тема, упоминать Rational Rose в 2021 году — это

Мракобесие плюсников- о чём я и писал. Ибо многие мозги посвалили из C++, и не смотри на плюсовиков из корпораций вроде Гугла или Фейсбука- тебя туда на пушечный выстрел не подпустят.

Тё>>для Эллочки Людоедки, не ожидаю понимания от клинически неспособных думать как математик.


L>Как всегда, самокритичненько.

Я по крайней мере, пытаюсь и всегда стремился к более умным, чем я, а вот ты не пытаешься и булькаешься в копролите с дурачками.
Re: Как в C++ получить Redux и Redux Dev Tools
От: jahr  
Дата: 31.12.20 11:21
Оценка:
Здравствуйте, Тёмчик, Вы писали:

О, наконец-то знаток.) Я как раз сейчас столкнулся с этим redux dev tools.) Есть расширение для браузеров, https://github.com/MetaMask/metamask-extension
Говорят, его можно отладить этим волшебным инструментом:

Redux DevTools will need to be installed as a browser extension. Open the Redux Remote Devtools to access Redux state logs. This can be done by either right clicking within the web browser to bring up the context menu, expanding the Redux DevTools panel and clicking Open Remote DevTools OR clicking the Redux DevTools extension icon and clicking Open Remote DevTools.

You will also need to check the "Use custom (local) server" checkbox in the Remote DevTools Settings, using the default server configuration (host localhost, port 8000, secure connection checkbox unchecked)

Так я и делаю, запускаю ```yarn start:dev```, запускаю эти тулз — и ничего не видно.) И вот все в это js так: работает иногда в очень специальных случаях, а что делать когда не работает — никто не знает. В плюсах если что-то не работает — всегда есть куда копать.)
Re[15]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 11:24
Оценка:
Здравствуйте, Тёмчик, Вы писали:

L>>Тема, упоминать Rational Rose в 2021 году — это

Тё>Мракобесие плюсников- о чём я и писал. Ибо многие мозги посвалили из C++, и не смотри на плюсовиков из корпораций вроде Гугла или Фейсбука- тебя туда на пушечный выстрел не подпустят.

Так ты куда собес-то провалил? В гугол или амазон?

L>>Как всегда, самокритичненько.

Тё>Я по крайней мере, пытаюсь и всегда стремился к более умным, чем я, а вот ты не пытаешься и булькаешься в копролите с дурачками.

Бугага, лол, пельмень.
www.blinnov.com
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 11:28
Оценка: :)
Здравствуйте, jahr, Вы писали:

J>О, наконец-то знаток.)

Я не знаток, только юзер.

J> Я как раз сейчас столкнулся с этим redux dev tools.) Есть расширение для браузеров, https://github.com/MetaMask/metamask-extension

J>Говорят, его можно отладить этим волшебным инструментом:
J>

J>Redux DevTools will need to be installed as a browser extension. Open the Redux Remote Devtools to access Redux state logs. This can be done by either right clicking within the web browser to bring up the context menu, expanding the Redux DevTools panel and clicking Open Remote DevTools OR clicking the Redux DevTools extension icon and clicking Open Remote DevTools.

J> You will also need to check the "Use custom (local) server" checkbox in the Remote DevTools Settings, using the default server configuration (host localhost, port 8000, secure connection checkbox unchecked)

J>Так я и делаю, запускаю ```yarn start:dev```, запускаю эти тулз — и ничего не видно.) И вот все в это js так: работает иногда в очень специальных случаях, а что делать когда не работает — никто не знает. В плюсах если что-то не работает — всегда есть куда копать.)

Я про A crypto wallet & gateway to blockchain apps. После установки и активации Redux DevTools, у хрома в Developer tools добавляется закладка (в придачу к Network, Sorce, ...), на которую переключаешься и оно показывает автоматически выбранное хранилище Redux твоей прилаги. Если хранилищ несколько, как в моём случае- справа вверху комбик позволяет переключаться между ними. Оно работает из коробки.
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 11:33
Оценка: :)
Здравствуйте, landerhigh, Вы писали:

L>Бугага, лол, пельмень.


Ты бы лучше не бугагашечки, а порефлексировал на тему, как не смог пройти интервью в Австралии и чемодан-вокзал- Петербург. Одним Шнайдером или где ты там куковал, рынок не ограничивается.
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 31.12.20 13:04
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ты бы лучше не бугагашечки, а порефлексировал на тему, как не смог пройти интервью в Австралии и чемодан-вокзал- Петербург. Одним Шнайдером или где ты там куковал, рынок не ограничивается.


А у вас там разве рынок за пределами формочки на JS херачить есть? Хм, а если он у вас есть, то ты почему формочки на JS прорывные UI-приложения базирующиеся на КА херачишь?
Отредактировано 31.12.2020 13:10 kaa.python . Предыдущая версия .
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 13:23
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ты бы лучше не бугагашечки, а порефлексировал на тему, как не смог пройти интервью в Австралии и чемодан-вокзал- Петербург.


Конечно не смог. Чтобы работать сантехником, нужно два года в тейф отходить и еще два года подмастерьем за обеды.

Тё>Одним Шнайдером или где ты там куковал, рынок не ограничивается.


Теперь и Шнайдера Citect там нет
www.blinnov.com
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 31.12.20 13:26
Оценка: 1 (1) :)))
Здравствуйте, kaa.python, Вы писали:

KP>У меня есть ощущение, что в мире JS каждый год проявляется какая-то новая, "прорывная" технология которую надо обязательно использовать, а то всё пропало


Каждый год?

www.blinnov.com
Re[18]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 15:47
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>Ты бы лучше не бугагашечки, а порефлексировал на тему, как не смог пройти интервью в Австралии и чемодан-вокзал- Петербург. Одним Шнайдером или где ты там куковал, рынок не ограничивается.


KP>А у вас там разве рынок за пределами формочки на JS херачить есть? Хм, а если он у вас есть, то ты почему формочки на JS прорывные UI-приложения базирующиеся на КА херачишь?


Нет конечно, только опердни для сбера херачим, на жабаскрипте, в блокноте. Молча завидуем ассенизаторам из Адоба.
Re[18]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 31.12.20 15:51
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Теперь и Шнайдера Citect там нет


Куда вынесли кал мамонта поддерживать — в Индию или Сингапур?
Re[19]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.01.21 02:49
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Нет конечно, только опердни для сбера херачим, на жабаскрипте, в блокноте. Молча завидуем ассенизаторам из Адоба.


Я бы тоже завидовал, если б был вынужден писать веб.странички которые только на 8 Гигах памяти в состоянии открыться
Re[20]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 01.01.21 03:09
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Я бы тоже завидовал, если б был вынужден писать веб.странички которые только на 8 Гигах памяти в состоянии открыться


В вин10 в IE11
При этом летает на первом ipad pro (1г?) и моём устаревшем xperia (4г?).

А вот как ты много лет ассенизировал кал мамонта из 80-х, аутсорснутый из США- это драйв! Острие прогресса!
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 01.01.21 04:21
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>У меня есть ощущение, что в мире JS каждый год проявляется какая-то новая, "прорывная" технология которую надо обязательно использовать, а то всё пропало

А вот у меня ощущение, что в мире JS количество людей которые закончили хотя бы 2 курса технического универа стремиться к нулю. Курс конечных автоматов читался нам на 2 курсе, там было и как проектировать автоматы, и как их оптимизировать, и как проще кодировать. Как сейчас помню, классические автоматы Мили и Мура. Странно, что эти знания для кого-то являются неким подобием божественного откровения.
Sic luceat lux!
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: SomeOne_TT  
Дата: 01.01.21 06:24
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>У меня есть ощущение, что в мире JS каждый год проявляется какая-то новая, "прорывная" технология которую надо обязательно использовать, а то всё пропало


MVU и иммутабельность — это давно известные вещи, которые, как мы можем видеть, сильно влияют на юные умы, неразбалованные функциональщиной.
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Dair Россия https://dair.spb.ru
Дата: 01.01.21 12:44
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Redux, если к нему прибавить effect-ы, получается как плоская FSM. Но в чистом Redux только reducer-ы есть.


Что значат все эти слова, какие задачи этим решаются?
Re: Как в C++ получить Redux и Redux Dev Tools
От: Люблю жить простенько  
Дата: 02.01.21 11:51
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:


Тё>Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/


Это куча бойлерплейта при каждом чихе, сделана Данилом для прогеров, которые "вошли в фронтенд" на курсах и большинство их даже не знают, чем объект от класса отличается или что на объекты существует ссылки. Для них дебаггер — тёмный лес, они плагины для браузера качают и удивляются, что можно отследить изменение переменной в консольке Идёт в связке с "библиотекой" react, которую написали пхпшеники старого закала (безумная мешанина html/js/php, глобальные переменные, функции возвращающие намешанные куски глобального контекста), у которых взлетел стартап. Чуваки знают про CSS из отрывков мануалов в сети, не зная глобальной концепции, поэтому 10 лет пытаются переизобрести css классы на javascript с помощью stateless компонентов и постоянно бьют себя по рукам, когда у них не получается.

Если это для тебя "прогрессивный" паттерн, то тебе можно в принципе не писать на этом форуме, он будет чище.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: StandAlone  
Дата: 02.01.21 13:27
Оценка: 8 (4) +2 :))) :)
Здравствуйте, kaa.python, Вы писали:

Тё>>Итак, возьмём прогрессивный паттерн Redux https://redux.js.org/


KP>Redux — это что?


Это God-object, глобальная помойка, в которую свалено все состояние приложения. Буквально все, вплоть до того, какая кнопка кликнута в тот или иной момент и какая буква нажата пользователем в очередном инпуте. На текущем проекте, примитивной учетной системе, это сейчас порядка 47-48 тысяч переменных. Хаотично разбросанных по от балды названным подобъектам, порядка 40 уровней вложенности.
Работает это все следующим образом.
Есть глобальный обработчик событий, и на каждый чих, когда нужно изменить любую из переменных в глобальной помойке, туда отправляется сообщение с привязанными данными. В глобальном обработчике 47-48 тысяч условий break. Слепленных воедино из разных файлов, разумеется. Все эти условия будут опрошены на соответствие строковой константы сообщения условию брейка. Если таковое сработало, то весь глобальный объект пересоздается, ради изменения нажатой пользователем буквы или состояния кнопки. В простом случае обработчик на этом завершается, в непростом одной и той же строковой константе могут соответствовать несколько обработчиков, делающих разное. Например, отправляющих иные сообщения. Которые, в свою очередь, могут отправить еще сообщения. И еще, чтобы асинхронно проверить завершение текущей операции на беке,ведь вчерашние верстальщики не могут осилить сложные концепции генераторов, в которые транспилится async....Это называется "функциональный стайл с effects". Да-да, именно, побочные эффекты, все на них построено.
Вся связано со всем, и понять какая часть приложения за что отвечает нет никакой возможности, именно для этого нужны упомянутые "суперудобные отладчики". Да, в консоли браузера смотреть на 47 тысяч переменных на эдак 30-40 уровнях вложенности очень удобно, не поспоришь. И все это миллион раз проходит через один и тот же свич-кейз, с кучей дополнительных приседаний вокруг. В результате банальная учетка на Ryzen 5 шевелится медленнее, чем пакет Flow Simulation c сеткой на миллион элементов. Выглядит очень солидно, солидный продукт для солидных господ, не то что срань какая-то типа Солида или Автокада.

Все уже догадались, что это? Совершенно верно.

Это MFC 6.0 и WndProc, брошенные в кормушку жаваскриптерам. Большинство современных "программистов"-фронтендеров про такое даже не слышали, они фамилию Кнута-то не знают, поэтому трудолюбивые обезьянки с утра до вечера копипастят константы вида XXX_START, XXX_SUCCESS, XXX_FAILURE и героически борются с багами, вызванными зацикливанием эффектов.
Зачем это нужно? Чтобы невозможно было переиспользовать части реализации. Чтобы все проекты представляли собой копролит, который проще переписать с нуля, чем починить. В общем, все то же самое,чем были проекты на MFC. Чтобы было чем занять толпу обезъянок-"программистов HTML" и соответственно дать менеджеру возможность оправдать раздутие бюджета перед заказчиком.
Еще это из подхода Fire and Motion, т.е. технология используемая Гуглом и прочими крупными корпорациями для торможения прогресса мелких конкурентов.
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: sambl74 Россия  
Дата: 02.01.21 13:43
Оценка: 2 (1) +1
Здравствуйте, kaa.python, Вы писали:

KP>У меня есть ощущение, что в мире JS каждый год проявляется какая-то новая, "прорывная" технология которую надо обязательно использовать, а то всё пропало


Да просто там ещё есть движуха, в других местах уже всё давно придумано и обкатано — а тут каждый день появляется новый hype train. Но вроде и тут начинается стагнация — позапрошлогодняя статья
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: StandAlone  
Дата: 02.01.21 13:52
Оценка: -1
Здравствуйте, Люблю жить простенько, Вы писали:

ЛЖП> Идёт в связке с "библиотекой" react, которую написали пхпшеники старого закала (безумная мешанина html/js/php, глобальные переменные, функции возвращающие намешанные куски глобального контекста), у которых взлетел стартап.


Все верно. "Шаблонизатор" типа React я видел еще в книжке по PHP 4.0, которую читал на вахте после смен в 2002 году . Большинство нынешних "фронтендеров" выросли из макак-верстальщиков. Для них это все очень удобно и понятно. Структурное программирование, когда все валяется в отдельных висящих в воздухе функциях. Никаких сложных классов и объектов.
Мне самому на ревью такой тимлид заворачивал применение шаблона стратегия с обоснованием — "Опять это геморройное ООП, слишком сложно, остальная команда не поймет. Делай как все, скопипасти для каждого из трех вариантов и подправь". А почему бы нет, пока заказчик за таких сеньеров-аутсорсеров платит?
И опять же, для них это job safety. Никакой документации ведь нет, разобраться во всем этом кургане костылей могут только те, кто их туда накидывал годами.
Самоподдерживающийся процесс производства говнокода и говнопродуктов.
Пресечь это можно лишь децимациями принудительным введением норм серьезной промышленной индустрии, с четким стандартами проектирования, реализации и внешним аудитом. Когда всех эджайл-коучей и агитаторов-евангелистов либо пересажают за создание общественной угрозы, либо отправят на мороз, а макак-верстальщиков на курсы базовых инженерных знаний. Как строителей, либо разработчиков промышленных изделий для публичного применения. Жаль, только жить в эту пору прекрасную... (c)
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 02.01.21 13:59
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Это God-object, глобальная помойка, в которую свалено все состояние приложения. Буквально все, вплоть до того, какая кнопка кликнута в тот или иной момент и какая буква нажата пользователем в очередном инпуте. На текущем проекте, примитивной учетной системе, это сейчас порядка 47-48 тысяч переменных. Хаотично разбросанных по от балды названным подобъектам, порядка 40 уровней вложенности.

мелких конкурентов.

Спасибо большое за описание! Я, честно говоря, думал что это очередной "прорыв в мире JS", но не думал что на столько всё плохо.
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 02.01.21 14:00
Оценка: :)
Здравствуйте, sambl74, Вы писали:

S>Да просто там ещё есть движуха, в других местах уже всё давно придумано и обкатано — а тут каждый день появляется новый hype train. Но вроде и тут начинается стагнация — позапрошлогодняя статья


Для себя я давно решил, что во фронт не пойду ни за какие коврижки, а статья классная, спасибо!
Re[12]: Как в C++ получить Redux и Redux Dev Tools
От: StandAlone  
Дата: 02.01.21 14:40
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Для себя я давно решил, что во фронт не пойду ни за какие коврижки


В этом есть резон. Погнавшись за x3 к ЗП, теперь чувствую себя сварщиком НАКС в бригаде полуграмотных гастеров-вязчиков арматуры, не умеющих толком держать электрод. "I'm an Englishman in New-York".
Отвечая на вопрос одного из топ-манагеров, что можно было бы улучшить в системе, осторожно предложил несколько идей из Б. Мейера, и на вопрос — "Зачем?" привел краткое технико-экономическое обоснование, как внедрение всего этого позволило бы избежать факапов типа недавнего, когда был практически сорван дейдлайн и приемка со стороны крупнейшего заказчика. А в ответ вежливое кивание головой, и взгляд...даже не как на пустое место, а как на дурачка. Типа, тебе больше всех надо, что ли? И вправду, ведь чувак этот зарабатывает раз в 5 больше меня и явно неглуп. Все перечисленные мной банальности из базовой инженерии понимает, но ему насрать. И всем остальным тоже. Дешевым макакам-вротендерам потому что они и не знают, как электрод правильно держать, всегда так навоз в продакшен кидали.
А менеджменту, потому что кем надо все что надо подписано, откаты засланы, бабло успешно пилится, премии менеджерам успешно приходят, и на остальное просто наложить огромную вонючую кучу. Продолжая строительную аналогию, то что через год после сдачи этот дом пойдет трещинами по несущим стенам из-за той самой арматуры, всем просто побоку. На тот момент юридического лица-ответчика уже не будет существовать, физически. И все.
Вот на современном фронте айтишном ровно такая ситуация в десятках разных проектов самого разного масштаба, которые видел за годы галерной гребли.
Только на одном было четкое проектирование, fail-safe, строгая изоляция, контроль контрактов и пост-предусловий для каждого из черных ящиков-компонент системы, связанных единой шиной. И длился он годы и крутились через него триллионы баксов для крупнейшей энергетической компании. Но, сюрприз, проектировали тот проект настоящие программисты, а не фронтендеры.
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 02.01.21 15:28
Оценка: :))
Здравствуйте, StandAlone, Вы писали:

  Скрытый текст
SA>Это God-object, глобальная помойка, в которую свалено все состояние приложения. Буквально все, вплоть до того, какая кнопка кликнута в тот или иной момент и какая буква нажата пользователем в очередном инпуте. На текущем проекте, примитивной учетной системе, это сейчас порядка 47-48 тысяч переменных. Хаотично разбросанных по от балды названным подобъектам, порядка 40 уровней вложенности.
SA>Работает это все следующим образом.
SA>Есть глобальный обработчик событий, и на каждый чих, когда нужно изменить любую из переменных в глобальной помойке, туда отправляется сообщение с привязанными данными. В глобальном обработчике 47-48 тысяч условий break. Слепленных воедино из разных файлов, разумеется. Все эти условия будут опрошены на соответствие строковой константы сообщения условию брейка. Если таковое сработало, то весь глобальный объект пересоздается, ради изменения нажатой пользователем буквы или состояния кнопки. В простом случае обработчик на этом завершается, в непростом одной и той же строковой константе могут соответствовать несколько обработчиков, делающих разное. Например, отправляющих иные сообщения. Которые, в свою очередь, могут отправить еще сообщения. И еще, чтобы асинхронно проверить завершение текущей операции на беке,ведь вчерашние верстальщики не могут осилить сложные концепции генераторов, в которые транспилится async....Это называется "функциональный стайл с effects". Да-да, именно, побочные эффекты, все на них построено.
SA>Вся связано со всем, и понять какая часть приложения за что отвечает нет никакой возможности, именно для этого нужны упомянутые "суперудобные отладчики". Да, в консоли браузера смотреть на 47 тысяч переменных на эдак 30-40 уровнях вложенности очень удобно, не поспоришь. И все это миллион раз проходит через один и тот же свич-кейз, с кучей дополнительных приседаний вокруг. В результате банальная учетка на Ryzen 5 шевелится медленнее, чем пакет Flow Simulation c сеткой на миллион элементов. Выглядит очень солидно, солидный продукт для солидных господ, не то что срань какая-то типа Солида или Автокада.

SA>Все уже догадались, что это? Совершенно верно.


SA>Это MFC 6.0 и WndProc, брошенные в кормушку жаваскриптерам. Большинство современных "программистов"-фронтендеров про такое даже не слышали, они фамилию Кнута-то не знают, поэтому трудолюбивые обезьянки с утра до вечера копипастят константы вида XXX_START, XXX_SUCCESS, XXX_FAILURE и героически борются с багами, вызванными зацикливанием эффектов.

SA>Зачем это нужно? Чтобы невозможно было переиспользовать части реализации. Чтобы все проекты представляли собой копролит, который проще переписать с нуля, чем починить. В общем, все то же самое,чем были проекты на MFC. Чтобы было чем занять толпу обезъянок-"программистов HTML" и соответственно дать менеджеру возможность оправдать раздутие бюджета перед заказчиком.
SA>Еще это из подхода Fire and Motion, т.е. технология используемая Гуглом и прочими крупными корпорациями для торможения прогресса мелких конкурентов.


Если отбросить в сторону стиль изложения, утащенный у меня (про C++ неспособных в алгоритмы шаблоно-дрочеров), какую ты предлагаешь альтернативу?

1) WND Proc гигантская портянка свича на 30 экранов (на базе hash- таблицы, построенной C++ компилятором int =>) vs JS- объект, динамически построенный из разных исходников (hash-таблица string => до JIT оптимизации). Результат один, отличие в оформлении исходников.
2) Winapi — стиль это эффекты-обработчики сразу, vs reducer-ы, поддерживающие состояние. В vanilla Redux нет эффектов.
3) Глобальное объектно-ориентированное хранилище переменных, как объект, т.е. быстрый доступ к переменным. Single Source of Truth. Обоснуй, чем это плохо.
4) Невозможно поменять значение переменной в Redux без события (action). Это очень хорошо.
5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.

PS эффекты на Redux-е вызываются все сразу. Statechart позволяет цеплять разные эффекты на разные узлы иерархического состояния, и исполнять только эффекты активных узлов.
Re[12]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 02.01.21 15:50
Оценка: -2 :))
Здравствуйте, kaa.python, Вы писали:

S>>Да просто там ещё есть движуха, в других местах уже всё давно придумано и обкатано — а тут каждый день появляется новый hype train. Но вроде и тут начинается стагнация — позапрошлогодняя статья


KP>Для себя я давно решил, что во фронт не пойду ни за какие коврижки, а статья классная, спасибо!

Статья про каких-то гико-хипстеров

Расскажи пожалуйста, в какой момент ты решил больше не идти во фронтэнд, и чем нефронтэнд лучше.
Может быть, ты просто его не умеешь готовить?
Как можно не заскучать, если все challenging задачки закончились, а твой модуль — маленький винтик, который конечные пользователи не видят и до которого никому нет дела.

И ещё вопрос. Вот ты прикрутил машину состояния в нефронтеэнд, и обиделся на простой вопрос, а как в ней без боли описать большую иерархичную машину состояний (больше, чем плоские 3 состояния светофора из hello world), и как при отладке нарисовать это состояние — неважно, в консоли, в файл на graphviz или в отдельной веб-страничке, прицепившейся по порту на localhost. Почему такая реакция? Ведь автоматы- это не только про фронтэнд.
Отредактировано 02.01.2021 15:53 Артём . Предыдущая версия .
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: StandAlone  
Дата: 02.01.21 21:05
Оценка: :)
Здравствуйте, landerhigh, Вы писали:

L>Image: r_1082058_bgkpd.jpg



Идея ок, но персонаж нужен:
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: StandAlone  
Дата: 02.01.21 21:23
Оценка: +1 :))
Здравствуйте, Тёмчик, Вы писали

Тё>Если отбросить в сторону стиль изложения, утащенный у меня (про C++ неспособных в алгоритмы шаблоно-дрочеров), какую ты предлагаешь альтернативу?


0) Redux


1) Архитектура здорового человека


Тё>5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.


Оу йес! Если приложение на редакс представляет собой просто кучу не особо вонючего говна, то RxJs это верная специя для того, чтобы превратить кучу в кал мощный, едкий!
Это отличный способ повысить нечитаемость кода на два порядка относительно размещения бизнес-логики в Button1Click, как в случае простого редакса!

//pa ss this through constructor, DI or use singleton (but please don't)
private final RetryManager retryManager;

public void load() {
Observable.combineLatest(
repository.getSomething()
.retryWhen(retryHandler ->
retryHandler.flatMap(
err -> retryManager.observeRetries())),
localStorage.fetchSomethingReallyHuge()
.retryWhen(retryHandler ->
retryHandler.flatMap(
nothing -> retryManager.observeRetries())),
(something, hugeObject) -> new Stuff(something, hugeObject))
.subscribe(stuff -> {}, err -> {});
}

Что тут сказать? Это замечательный способ довести busFactor до единицы и замкнуть весь код на себе! И на месте нормального код ревьювера я бы за такое джоб сейфети расстреливал на месте for the Greater Justice! Но на твое счастье, Артемка, меня в ревьюверы не пускают. Поэтому мы продолжаем катиться туда, куда катимся, господа. Поаплодируем Артемкам! Mein Herz Brennt!
Отредактировано 02.01.2021 21:44 StandAlone . Предыдущая версия . Еще …
Отредактировано 02.01.2021 21:43 StandAlone . Предыдущая версия .
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 03.01.21 02:46
Оценка: +1 :)
Здравствуйте, kaa.python, Вы писали:

KP>Я, честно говоря, думал что это очередной "прорыв в мире JS", но не думал что на столько всё плохо.

Когда канализационная труба лопается этож тоже по сути прорыв
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[5]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 03.01.21 05:07
Оценка: :)
Здравствуйте, StandAlone, Вы писали:

Тё>>5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.


SA>Оу йес! Если приложение на редакс представляет собой просто кучу не особо вонючего говна, то RxJs это верная специя для того, чтобы превратить кучу в кал мощный, едкий!

SA>Это отличный способ повысить нечитаемость кода на два порядка относительно размещения бизнес-логики в Button1Click, как в случае простого редакса!
SA>

SA>//pa ss this through constructor, DI or use singleton (but please don't)
SA>private final RetryManager retryManager;

SA>public void load() {
SA> Observable.combineLatest(
SA> repository.getSomething()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> err -> retryManager.observeRetries())),
SA> localStorage.fetchSomethingReallyHuge()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> nothing -> retryManager.observeRetries())),
SA> (something, hugeObject) -> new Stuff(something, hugeObject))
SA> .subscribe(stuff -> {}, err -> {});
SA>}

SA>Что тут сказать? Это замечательный способ довести busFactor до единицы и замкнуть весь код на себе! И на месте нормального код ревьювера я бы за такое джоб сейфети расстреливал на месте for the Greater Justice! Но на твое счастье, Артемка, меня в ревьюверы не пускают. Поэтому мы продолжаем катиться туда, куда катимся, господа. Поаплодируем Артемкам! Mein Herz Brennt!


То, что вы привели, конечно, ужасное г-но. Спора нет.

Вот кусочек реализованной мной логики с вызовом NgRx (Redux скрещен с RxJS).

  private initialiseEffects(): Observable<any> {
    return merge(
      // Update current section - on section click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionClickAction),
        switchMap(this.onSectionClick$.bind(this)),
      ),
      // Update current section - on crumb click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionCrumbClickAction),
        switchMap(this.onCrumbClick$.bind(this)),
      ),
      // Update current children
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getChildren$(current, SectionService.filterSectionsForList)),
        map((children) => fromSectionStateActions.storeSectionChildrenAction(children)),
      ),
      // Update current crumbs
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getCrumbs$(current)),
        map((crumbs) => fromSectionStateActions.storeSectionCrumbsAction(crumbs)),
      ),
    ).pipe(
      enterZone(this.ngZone),
      catchError((error) => of(sectionErrorAction(error))),
    );
  }


В первой строчке ваш соотечественник добавил говнеца
В оригинале ещё месяц назад было так:
  private initialiseEffects(): Observable<
    fromSectionStateActions.SectionStateAction | fromSearchWiseActions.SearchStartUIAction
    > {

Блин какой же песец.
Отредактировано 03.01.2021 5:15 Артём . Предыдущая версия .
Re[13]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 03.01.21 06:09
Оценка: +1 -1
Здравствуйте, StandAlone, Вы писали:

SA>В этом есть резон. Погнавшись за x3 к ЗП, теперь чувствую себя сварщиком НАКС в бригаде полуграмотных гастеров-вязчиков арматуры, не умеющих толком держать электрод. "I'm an Englishman in New-York".


Мне, честно говоря, просто не хочется быть в отрасли, где каждый год какая-то новая "прорывная технология" появляется. Это же приводит к тому, что с опытом стоимость как специалиста такая же, как у новичка с 1-2 годами опыта. Зачем такая радость?
Re[14]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 03.01.21 06:19
Оценка: :))
Здравствуйте, kaa.python, Вы писали:

SA>>В этом есть резон. Погнавшись за x3 к ЗП, теперь чувствую себя сварщиком НАКС в бригаде полуграмотных гастеров-вязчиков арматуры, не умеющих толком держать электрод. "I'm an Englishman in New-York".


KP>Мне, честно говоря, просто не хочется быть в отрасли, где каждый год какая-то новая "прорывная технология" появляется. Это же приводит к тому, что с опытом стоимость как специалиста такая же, как у новичка с 1-2 годами опыта. Зачем такая радость?


Хватить сочинять сказки. Новичок это новичок, ветеран- это ветеран. Опыт не обнуляется при переходе на новый фреймворк. Фуллстек с опытом в Сиднее получает на 20-30% больше плюсника с тем же суммарным опытом (если это не HFT, но в HFT хрен попадёшь).
Re[15]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 03.01.21 06:32
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Тё>Хватить сочинять сказки. Новичок это новичок, ветеран- это ветеран. Опыт не обнуляется при переходе на новый фреймворк.


Не обнуляется? Хм.. ты уже продемонстрировал своё "развитие" за последние годы

Тё>Фуллстек с опытом в Сиднее получает на 20-30% больше плюсника с тем же суммарным опытом (если это не HFT, но в HFT хрен попадёшь).


Ну как бы это ж Австралия. При чем тут нормальная продуктовая разработка и страна, где китайцы бабло от загребущих лапок своего правительства прячут?
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 03.01.21 06:49
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>Хватить сочинять сказки. Новичок это новичок, ветеран- это ветеран. Опыт не обнуляется при переходе на новый фреймворк.


KP>Не обнуляется? Хм.. ты уже продемонстрировал своё "развитие" за последние годы

Я не изучал нововведений и подзабыл старый синтаксис C++. Ибо занимался Core-Java и в последние 2 года typescript. А что ты изучил нового в C++ за все эти годы?

Тё>>Фуллстек с опытом в Сиднее получает на 20-30% больше плюсника с тем же суммарным опытом (если это не HFT, но в HFT хрен попадёшь).


KP>Ну как бы это ж Австралия. При чем тут нормальная продуктовая разработка и страна, где китайцы бабло от загребущих лапок своего правительства прячут?

Минуточку, я работал в одном подразделении с автором asio и несколько раз совместно ходил в бар. Всемирно известная биржа. Сейчас тоже глобальный продукт, мне приятно, тысячи компаний используют в том числе, прямой результат моего труда, в ключевых фичах.
Здесь разрабатывается движок Танчиков. Гугло-мап, Долби, Атлассиан здесь.

В Бризбане в Боинг разрабатывают прошивки к мозгам ракет, но говорят, туда мне путь закрыт по причине происхождения.

Define "нормальная продуктовая разработка" пожалуйста.
Отредактировано 03.01.2021 6:53 Артём . Предыдущая версия .
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 03.01.21 10:15
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Я не изучал нововведений и подзабыл старый синтаксис C++. Ибо занимался Core-Java и в последние 2 года typescript. А что ты изучил нового в C++ за все эти годы?


А причем тут я и C++? Я скорее это про то, что память — это все еще ресурс и много других архитектурных и процессных вещей о которых разные деятели забывают

Тё>Минуточку, я работал в одном подразделении с автором asio и несколько раз совместно ходил в бар. Всемирно известная биржа. Сейчас тоже глобальный продукт, мне приятно, тысячи компаний используют в том числе, прямой результат моего труда, в ключевых фичах.

Тё>Здесь разрабатывается движок Танчиков. Гугло-мап, Долби, Атлассиан здесь.

О, к вам из, не побоюсь этого слова, великой АйТи-державы Белоруссии аутсорсят! Это очень круто!

Тё>Define "нормальная продуктовая разработка" пожалуйста.


Ну это продукты, где требуется квалификация выше чем "написать Веб-страничку которая начиная с 8Гб памяти нормально открывается"
Re[18]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 03.01.21 10:41
Оценка:
Здравствуйте, kaa.python, Вы писали:


Тё>>Я не изучал нововведений и подзабыл старый синтаксис C++. Ибо занимался Core-Java и в последние 2 года typescript. А что ты изучил нового в C++ за все эти годы?


KP>А причем тут я и C++? Я скорее это про то, что память — это все еще ресурс и много других архитектурных и процессных вещей о которых разные деятели забывают


Тё>>Минуточку, я работал в одном подразделении с автором asio и несколько раз совместно ходил в бар. Всемирно известная биржа. Сейчас тоже глобальный продукт, мне приятно, тысячи компаний используют в том числе, прямой результат моего труда, в ключевых фичах.

Тё>>Здесь разрабатывается движок Танчиков. Гугло-мап, Долби, Атлассиан здесь.

KP>О, к вам из, не побоюсь этого слова, великой АйТи-державы Белоруссии аутсорсят! Это очень круто!

Танчики купили местную компанию-производителя движка. Это не аутсорс.

Тё>>Define "нормальная продуктовая разработка" пожалуйста.


KP>Ну это продукты, где требуется квалификация выше чем "написать Веб-страничку которая начиная с 8Гб памяти нормально открывается"


Вот ты задрал. Специально из-за тебя выставил 1гиг виртуалке Win10 x64, запустил прилагу в Edge- всё работает и плавно скроллится.
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: Patalog Россия  
Дата: 03.01.21 19:34
Оценка:
Здравствуйте, StandAlone, Вы писали:

[]

SA>Это MFC 6.0 и WndProc, брошенные в кормушку жаваскриптерам.


Вот сейчас за МФЦ обидно было, там конечно в WndProc тоже можно (а иногда и нужно) было, но обычно обходилось картами сообщений, без вот этих вот ваших "47-48 тысяч условий break".
Почетный кавалер ордена Совка.
Re[19]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 04.01.21 02:01
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Вот ты задрал. Специально из-за тебя выставил 1гиг виртуалке Win10 x64, запустил прилагу в Edge- всё работает и плавно скроллится.

А ты своп то отключи
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[20]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 02:17
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>А ты своп то отключи


Можно не отключить, а ограничить.
Когда только один VPN запущен, оно сожрало ~1.5г, свободно 73м физ рамы.
VPN кстати, весь из себя C++ убожество.

Edge с запущенной прилагой сожрал 74мб.
Отредактировано 04.01.2021 2:30 Артём . Предыдущая версия . Еще …
Отредактировано 04.01.2021 2:29 Артём . Предыдущая версия .
Отредактировано 04.01.2021 2:25 Артём . Предыдущая версия .
Re[21]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 04.01.21 07:29
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Можно не отключить, а ограничить.

Это всё равно не 1GB а 1GB + Swap

Тё>Edge с запущенной прилагой сожрал 74мб.

Показывай screenshot ProceXP с Virtual size/Working set/Private bytes всех его процессов.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[13]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 04.01.21 10:51
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>И ещё вопрос. Вот ты прикрутил машину состояния в нефронтеэнд, и обиделся на простой вопрос, а как в ней без боли описать большую иерархичную машину состояний (больше, чем плоские 3 состояния светофора из hello world), и как при отладке нарисовать это состояние — неважно, в консоли,


Тема, КА в один момент времени может находиться только в одном состоянии. Рисовать ничего не нужно.
Отлаживают КА тогда, когда рисуют его на бумажке.

Впрочем, кому я это пытаюсь объяснить...
www.blinnov.com
Re[14]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 11:05
Оценка: -4 :))) :)
Здравствуйте, landerhigh, Вы писали:

L>Тема, КА в один момент времени может находиться только в одном состоянии.

Это открытие тянет на нобелевку. Открой для себя параллельные состояния.

L>Рисовать ничего не нужно.

L>Отлаживают КА тогда, когда рисуют его на бумажке.
Ни дать ни взять- иксперт.

L>Впрочем, кому я это пытаюсь объяснить...

Кому-то кто интересуется темой автоматов и на практике сделал в тысячу раз больше, чем может вообразить зашоренный плюсодрочер.
Re[15]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 04.01.21 11:21
Оценка:
Здравствуйте, Тёмчик, Вы писали:

L>>Тема, КА в один момент времени может находиться только в одном состоянии.

Тё>Это открытие тянет на нобелевку. Открой для себя параллельные состояния.

Параллельные состояния — это высер, который в UML ввели выгнанные с первого курса community college. Говорят же тебе, что сегодня упоминание UML вне Австралии — это гарантия "спасибо, мы вам перезвоним".

L>>Впрочем, кому я это пытаюсь объяснить...

Тё>Кому-то кто интересуется темой автоматов и на практике сделал в тысячу раз больше, чем может вообразить зашоренный плюсодрочер.

Так все таки, это был Амазон или Гугль? Пригорело что надо, знатно полыхает все новогодние праздники.

Или Цитадель? Тебе туда даже и пытаться не стоило, особенно с таким отношением.
www.blinnov.com
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.21 11:41
Оценка: -1 :)
Здравствуйте, landerhigh, Вы писали:

L>Параллельные состояния — это высер, который в UML ввели выгнанные с первого курса community college. Говорят же тебе, что сегодня упоминание UML вне Австралии — это гарантия "спасибо, мы вам перезвоним".


В целом я согласен, кроме UML. То есть я тоже так долгое время считал, но сейчас в американско-корейской компании по разработке самоходных карет у нас много UML. Причин несколько, во-первых, нужно для сертификации, во-вторых, реально упрощает разработку и координацию задач между командами.
UML часто не совсем канонический, скорее кто как помнит/видит, но тем не менее.
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 04.01.21 11:46
Оценка: 3 (1) +2
Здравствуйте, kaa.python, Вы писали:

KP>В целом я согласен, кроме UML. То есть я тоже так долгое время считал, но сейчас в американско-корейской компании по разработке самоходных карет у нас много UML. Причин несколько, во-первых, нужно для сертификации, во-вторых, реально упрощает разработку и координацию задач между командами.

KP>UML часто не совсем канонический, скорее кто как помнит/видит, но тем не менее.

Совершенно верно. UML — это просто инструмент. Удобный для документирования и установления контрактов. Но не очень удобный как инструмент проектирования и уж точно не должен восприниматься как догма. Еще недавно встречались дрочеры "чем заштрихованная стрелочка отличается от пустой", но их, кажется, уже переработали в биореакторе на удобрения. Хотя, может быть, не везде.

Я использую PlantUML для подобного. Дико экономит время, и возможность интеграции в confluence/Jira тоже очень удобны.
www.blinnov.com
Отредактировано 04.01.2021 12:02 landerhigh . Предыдущая версия .
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 04.01.21 11:53
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Если отбросить в сторону стиль изложения, утащенный у меня (про C++ неспособных в алгоритмы шаблоно-дрочеров), какую ты предлагаешь альтернативу?

Зависит. Есть, например, Qt State Machine.

Тё>4) Невозможно поменять значение переменной в Redux без события (action). Это очень хорошо.

Тё>5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.
Звучит как декларативное программирование. В С++/Qt через QML, можно связывать с C++ миром без проблем

Тё>PS эффекты на Redux-е вызываются все сразу. Statechart позволяет цеплять разные эффекты на разные узлы иерархического состояния, и исполнять только эффекты активных узлов.

Всё уже есть, лет дцать как и удобно.
Re[2]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 04.01.21 11:56
Оценка:
Здравствуйте, Lexey, Вы писали:

L>С++ — это не язык для формошлепства, так что, не очень понятно, какие инструменты ты ожидаешь увидеть в ответ.

В Qt есть state machine и декларативное программирование в полный рост. Кому надо — пользуются, но из мира JS кажется что только у них есть что-то уникальное и особенное.
Re[5]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 12:18
Оценка:
Здравствуйте, Skorodum, Вы писали:

Тё>>Если отбросить в сторону стиль изложения, утащенный у меня (про C++ неспособных в алгоритмы шаблоно-дрочеров), какую ты предлагаешь альтернативу?

S>Зависит. Есть, например, Qt State Machine.
Я это уже видел, но не хотел раньше времени спугнуть состима с хайлендером.

Ответь на мой вопрос в заголовке.
Применительно к Qt Statecharts, где у него аналог
  xstate-inspect


S>В С++/Qt через QML, можно связывать с C++ миром без проблем

А можно в Qt декларативно собрать Statechart из исходников, скажем, на Json или SCXML?

S>Всё уже есть, лет дцать как и удобно.

Про дцать есть пруфы?
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 12:27
Оценка: -1 :)
Здравствуйте, landerhigh, Вы писали:

L>Параллельные состояния — это высер


От зашоренного плюсодрочера я давно уже не ожидаю проблесков сознания. Ниасилил, никуда не взяли- давай досвидания, неудачники Австралии не нужны.
Re[6]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 04.01.21 12:33
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Я это уже видел, но не хотел раньше времени спугнуть состима с хайлендером.

Ну т.е. по это наглый наброс и провокация?

Тё>Ответь на мой вопрос в заголовке.

Да я вообще твой вопрос не понял Вот когда его сформулировали стандартными терминами — тогда понял
И заметь, Qt использует термины понятные всем программистам.

Тё>Применительно к Qt Statecharts, где у него аналог

Тё>
  xstate-inspect
Тё>Image: 4c8c0db4-b4d5-408f-8684-57e94ff46c86.png

Вроде да, но я не пользовался.

S>>В С++/Qt через QML, можно связывать с C++ миром без проблем

Тё>А можно в Qt декларативно собрать Statechart из исходников, скажем, на Json или SCXML?
Вроде да, но я не пользовался.


S>>Всё уже есть, лет дцать как и удобно.

Тё>Про дцать есть пруфы?
Есть.
Смотри первую версию, например, тут: https://doc.qt.io/qt-5/qabstractstate.html
Смотри, когда она была выпущена: 4.6

В общем, все украдено до вас
Re[22]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 12:34
Оценка: -2 :))
Здравствуйте, CreatorCray, Вы писали:

CC>Показывай screenshot ProceXP с Virtual size/Working set/Private bytes всех его процессов.


Хватит с тебя task manager
  Скрытый текст
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 04.01.21 12:42
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>От зашоренного плюсодрочера я давно уже не ожидаю проблесков сознания. Ниасилил, никуда не взяли- давай досвидания, неудачники Австралии не нужны.


...сказал выгнанный с собеседования по незнанию основ плюсов
www.blinnov.com
Re[7]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 04.01.21 12:55
Оценка:
Здравствуйте, Skorodum, Вы писали:

Тё>>Я это уже видел, но не хотел раньше времени спугнуть состима с хайлендером.

S>Ну т.е. по это наглый наброс и провокация?
Ну почему сразу наглый наброс? Я серьёзно спросил совета, какие тулзы есть, чтобы предметно представить доводы о пользе C++ в проекте. Определённые представители профессии сами провоцируются.

Тё>>Ответь на мой вопрос в заголовке.

S>Да я вообще твой вопрос не понял Вот когда его сформулировали стандартными терминами — тогда понял
S>И заметь, Qt использует термины понятные всем программистам.

Тё>>Применительно к Qt Statecharts, где у него аналог

Тё>>
  xstate-inspect
Тё>>Image: 4c8c0db4-b4d5-408f-8684-57e94ff46c86.png


S>Вроде да, но я не пользовался.


Это WYSIWYG. Какая тулза есть у Qt, которая бы на запущенном приложении отрисовывала активацию и переходы состояний на чарте, работу таймера, и позволяла кликом мышки по input-м отправлять события в StateChart. Т.е. то, что называется отладкой приложения.

S>>>В С++/Qt через QML, можно связывать с C++ миром без проблем

Тё>>А можно в Qt декларативно собрать Statechart из исходников, скажем, на Json или SCXML?
S>Вроде да, но я не пользовался.
Ещё раз. Это WYSIWYG редактор. Моя задача — собрать дерево состояний из исходников вложенных состояний, от меньшего к большему, как матрёшку. Исходники под VCS разумеется. Ну, ты же не держишь весь код программы C++ в одном модуле .cpp — ты включаешь заголовочные файлы и линкуешь объектники вместе. Я делаю такое в Statecharts.
S>Image: qtcreator-scxml-editor.png

S>Смотри, когда она была выпущена: 4.6

11 лет однако.

S>В общем, все украдено до вас

И до вас тоже
Отредактировано 04.01.2021 12:59 Артём . Предыдущая версия . Еще …
Отредактировано 04.01.2021 12:57 Артём . Предыдущая версия .
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: landerhigh Пират  
Дата: 04.01.21 13:02
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Ещё раз. Это WYSIWYG редактор. Моя задача — собрать дерево состояний из исходников вложенных состояний, от меньшего к большему, как матрёшку.


Надо же, как изящно жаваскриптеры переиначили понятие "дрочить вприсядку"
www.blinnov.com
Re[8]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 04.01.21 13:13
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну почему сразу наглый наброс? Я серьёзно спросил совета, какие тулзы есть, чтобы предметно представить доводы о пользе C++ в проекте. Определённые представители профессии сами провоцируются.

Да это очень нишевая тулза, ее даже в мире Qt мало кто знает.

Тё>Это WYSIWYG. Какая тулза есть у Qt, которая бы на запущенном приложении отрисовывала активацию и переходы состояний на чарте, работу таймера, и позволяла кликом мышки по input-м отправлять события в StateChart. Т.е. то, что называется отладкой приложения.

Наверное, такой нет А оно очень нужно?
Может для QML что-то похожее есть.

Тё>Ещё раз. Это WYSIWYG редактор. Моя задача — собрать дерево состояний из исходников вложенных состояний, от меньшего к большему, как матрёшку. Исходники под VCS разумеется. Ну, ты же не держишь весь код программы C++ в одном модуле .cpp — ты включаешь заголовочные файлы и линкуешь объектники вместе. Я делаю такое в Statecharts.

Дерево состояний в разные файлы? Оно у тебя такое большое? Может тут что-то не так с дизайном/определением состояний?

S>>Смотри, когда она была выпущена: 4.6

Тё>11 лет однако.
Ну так дцать. Ч и ТД.

S>>В общем, все украдено до вас

Тё>И до вас тоже
Вот именно. Только разница в том, что у Qt в официальной документации изначально есть ссылка на оригинальную статью. И все кто читают и пользуются говорят на одном языке, в отлчии от вашего птичьего.
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.21 14:11
Оценка: +1
Здравствуйте, Skorodum, Вы писали:

S>Дерево состояний в разные файлы? Оно у тебя такое большое? Может тут что-то не так с дизайном/определением состояний?


Что самое смешное, это не ошибка, а "так задумано". Просто JS-мартышки так код пишут
Автор: StandAlone
Дата: 02.01.21
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 04.01.21 14:15
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Что самое смешное, это не ошибка, а "так задумано". Просто JS-мартышки так код пишут
Автор: StandAlone
Дата: 02.01.21

Я как-то не думал, что все настолько плохо...

А за Qt State Machine мне самому интересно, почему оно не получило большего рапространения. Штука хорошая, работает, но о ней мало кто знает даже в мире Qt
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 04.01.21 14:22
Оценка: 2 (1) +1 :)
Здравствуйте, Skorodum, Вы писали:

S>А за Qt State Machine мне самому интересно, почему оно не получило большего рапространения. Штука хорошая, работает, но о ней мало кто знает даже в мире Qt


Да, с КА как-то либо вообще про него забывают, либо рожают Redux
Re[7]: Как в C++ получить Redux и Redux Dev Tools
От: gwg-605 Россия  
Дата: 04.01.21 18:16
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Я ведь написал — дерево состояний. Оно собирается большой пачки исходников вложенных состояний, как матрёшка. Причём, в отличие от "вложенных машин", таблица переходов на событие будет проверять от корня и ниже к вложенным (breadth first) состояниям.


О! Я похоже понял откуда ноги растут того кода который мы получили от индусов: функция main 5000 строк, около 20 уровней вложенных switch-ей, if-ы не считали, сотня глобальных переменных. Это одна глобальная стейт машина. причем это был всего навсего мобильный плейер. Но код был однозначно неподдерживаемый, ну а главное практичесски неработоспособный: работало главное меню и радиоприемник. Радио приемник работал поскольку он практически полностью был в железе, и его надо было просто включить записав определенное число в регистр А еще вопросы как тестировать эту стейт машину? такого же уровня тест? один большой?
Re[23]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 04.01.21 20:32
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Хватит с тебя task manager

Нет, Task manager в этом плане полное говно.
Давай ProceXP, тем более что он официально микрософтовский.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[24]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 06.01.21 12:04
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Нет, Task manager в этом плане полное говно.

CC>Давай ProceXP, тем более что он официально микрософтовский.

А таск менеджер неофициальный?
Просто питон пернул в лужу, а ты подхватил палочку.
Re[9]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 06.01.21 12:23
Оценка: :)
Здравствуйте, Skorodum, Вы писали:

Тё>>Ну почему сразу наглый наброс? Я серьёзно спросил совета, какие тулзы есть, чтобы предметно представить доводы о пользе C++ в проекте. Определённые представители профессии сами провоцируются.

S>Да это очень нишевая тулза, ее даже в мире Qt мало кто знает.
Ну т.е плюснутые нихрена не знают.

Тё>>Это WYSIWYG. Какая тулза есть у Qt, которая бы на запущенном приложении отрисовывала активацию и переходы состояний на чарте, работу таймера, и позволяла кликом мышки по input-м отправлять события в StateChart. Т.е. то, что называется отладкой приложения.

S>Наверное, такой нет А оно очень нужно?
Оно полезно. Такто отладчик ненужно- можно же сразу безбажно писать.

S>Дерево состояний в разные файлы? Оно у тебя такое большое? Может тут что-то не так с дизайном/определением состояний?

Да, оно такое большое. Не светофор.

S>>>Смотри, когда она была выпущена: 4.6

Тё>>11 лет однако.
S>Ну так дцать. Ч и ТД.
11 это не 19дцать.

S>>>В общем, все украдено до вас

Тё>>И до вас тоже
S>Вот именно. Только разница в том, что у Qt в официальной документации изначально есть ссылка на оригинальную статью. И все кто читают и пользуются говорят на одном языке, в отлчии от вашего птичьего.

Я дал название- HFSM, statecharts. Если для C++-мартышек это "китайская грамота"- что поделать. Говнокодеры они такие.
Отредактировано 06.01.2021 12:27 Артём . Предыдущая версия .
Re[10]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 06.01.21 13:38
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Ну т.е плюснутые нихрена не знают.

С чего это? Qt используют 5-10% C++ разработчиков (цифра чистое ИМХО). Из них Qt State Machine нужно 5-10%, а реально используют еще меньше. Поэтому мало кто знает. Кто-то знает другие реализации. Это нормально. Никто особо не носится с этим как с серебярной пулей.

Тё>Оно полезно. Такто отладчик ненужно- можно же сразу безбажно писать.

У меня не было столько состояний, что был нужен отладчик

Тё>Да, оно такое большое. Не светофор.

Ну так скорее всего что-то тут не так Всякие ворды, фотошопы и прочие актокады были как-то написаны без этого.

Тё>11 это не 19дцать.

11 это 11дцать. Ч и ТД.

Тё>Я дал название- HFSM, statecharts.

Нет. Перечитай свое исходное сообщение
Автор: Тёмчик
Дата: 30.12.20
.

Тё>Если для C++-мартышек это "китайская грамота"- что поделать. Говнокодеры они такие.

Зря ты так смешно выглядишь и не вызываешь желания в следующий раз серьезно отвечать.
qt state machine
Re[25]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 06.01.21 19:39
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>А таск менеджер неофициальный?

Таск манагер — говно для хомяков.

Тё>Просто питон пернул в лужу, а ты подхватил палочку.

Ты скриншот то выложи, любитель пердежа.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: CreatorCray  
Дата: 06.01.21 19:39
Оценка: +2 :)
Здравствуйте, Skorodum, Вы писали:

Тё>>Если для C++-мартышек это "китайская грамота"- что поделать. Говнокодеры они такие.

S>Зря ты так смешно выглядишь и не вызываешь желания в следующий раз серьезно отвечать.

First time? (C)
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 07.01.21 06:21
Оценка:
Здравствуйте, Skorodum, Вы писали:

Тё>>Ну т.е плюснутые нихрена не знают.

S>С чего это? Qt используют 5-10% C++ разработчиков (цифра чистое ИМХО). Из них Qt State Machine нужно 5-10%, а реально используют еще меньше. Поэтому мало кто знает. Кто-то знает другие реализации. Это нормально. Никто особо не носится с этим как с серебярной пулей.
А я спросил вообще про тулзы, какие есть.

Тё>>Оно полезно. Такто отладчик ненужно- можно же сразу безбажно писать.

S>У меня не было столько состояний, что был нужен отладчик
Но с твоих же слов, про FSM мало кто из C++ разработчиков знает. Откуда тебе знать про HFSM?

Тё>>Да, оно такое большое. Не светофор.

S>Ну так скорее всего что-то тут не так Всякие ворды, фотошопы и прочие актокады были как-то написаны без этого.
Эта тема используется в играх и в embedded. См. Unreal Engine и тот же Qt Quick

https://www.youtube.com/watch?t=254&amp;v=8CA4e818erY&amp;feature=youtu.be&amp;ab_channel=TitanicGames
https://www.youtube.com/watch?v=9Ied3Dpb_Kg&amp;ab_channel=Qt

Но типичные говнокодеры, конечно, о таком не слыхали — им бы только о шаблонах сипипи потереть, как бы изощрённее в ногу стрельнуть.

Тё>>11 это не 19дцать.

S>11 это 11дцать. Ч и ТД.
Тебе шашечки или ехать??? 11 это 10+1. А не 20 и не 30.

Тё>>Я дал название- HFSM, statecharts.

S>Нет. Перечитай свое исходное сообщение
Автор: Тёмчик
Дата: 30.12.20
.


Да. Перечитай моё http://rsdn.org/forum/flame.comp/7915243.1
Автор: Тёмчик
Дата: 30.12.20
в ответ питону на его Meta State Machine (MSM).


Тё>>Если для C++-мартышек это "китайская грамота"- что поделать. Говнокодеры они такие.

S>Зря ты так смешно выглядишь и не вызываешь желания в следующий раз серьезно отвечать.
Это ответочка на

питон> Что самое смешное, это не ошибка, а "так задумано". Просто JS-мартышки так код пишут

http://rsdn.org/forum/flame.comp/7917704.1
Автор: kaa.python
Дата: 04.01.21
Re[12]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 07.01.21 09:22
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>А я спросил вообще про тулзы, какие есть.

Нет конечно. Ты спросил "Как в C++ получить Redux и Redux Dev Tools". Если бы ты спросил какие есть реализации state machines в ЦПП с плюсами и минусами и что тебе надо, то получил бы совсем другой ответ.

Тё>Но с твоих же слов, про FSM мало кто из C++ разработчиков знает.

Ты что-то выдумываешь. Я говорил исключительно про Qt реализацию.

Тё>Откуда тебе знать про HFSM?

Из документации? Вложенные состояния есть в Qt Или что-то еще надо?

Тё>Эта тема используется в играх и в embedded. См. Unreal Engine и тот же Qt Quick

Прекрасно.

Тё>Но типичные говнокодеры, конечно, о таком не слыхали — им бы только о шаблонах сипипи потереть, как бы изощрённее в ногу стрельнуть.

С чего-то ты взял, что плюсовые реализации не используют мета-программирование? Скорее наоборот.

Тё>Тебе шашечки или ехать??? 11 это 10+1. А не 20 и не 30.

ок-ок, сдаюсь

Тё>Да. Перечитай моё http://rsdn.org/forum/flame.comp/7915243.1
Автор: Тёмчик
Дата: 30.12.20
в ответ питону на его Meta State Machine (MSM).

Ну так это уже после того как другие использовали нормальные ключевые слова.

Тё>Это ответочка на...

А-а-а, ну раз так, то продолжайте кидаться какахами друг в друга
Я лучше в сторонке постаю.
Re[13]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 09.01.21 03:25
Оценка: +1
Здравствуйте, Skorodum, Вы писали:

Тё>>А я спросил вообще про тулзы, какие есть.

S>Нет конечно. Ты спросил "Как в C++ получить Redux и Redux Dev Tools". Если бы ты спросил какие есть реализации state machines в ЦПП с плюсами и минусами и что тебе надо, то получил бы совсем другой ответ.
Погоди погоди. Стартовое сообщение было именно про какие есть аналоги Redux и отладочных инструментов его, на что питон ответил про Meta State Machine. Я подозреваю, что он хотел таким образом сразу задавить интеллектом — ибо Redux в общем-то не машина состояния. Это единое объектное хранилище, которое контролирует, как можно изменять значение (только сообщениями и зарегистрированными обработчиками этих сообщений), и механизм подписки на интересующие значения. Метод select("путь к значению"). Формализованная машина состояния, это уже следующий уровень разработчика. Вот с MSM и заверте "как аналог XState, какие есть тулзы отладки, аналогичные имеющимся для XState". С этого и понеслись оскорбления про "тулзы не нужны" и "если у тебя большая машина состояния, значит ты идиот".

Тё>>Но с твоих же слов, про FSM мало кто из C++ разработчиков знает.

S>Ты что-то выдумываешь. Я говорил исключительно про Qt реализацию.
Ок, я же не против. Здесь священные войны- давайте соревноваться, у кого машина состояния круче. Ну, или сменить тему- у кого data model круче.

Тё>>Откуда тебе знать про HFSM?

S>Из документации? Вложенные состояния есть в Qt Или что-то еще надо?
В Qt реализован Statechart. В XState тоже реализован Statechart. В Unreal Engine реализован Behaviour Tree. Вы как плюсники, отметившиеся в этой ветке, на уровне "рабинович напел", а я давно этой темой интересовался и применил на практике в боевом проекте.

Тё>>Эта тема используется в играх и в embedded. См. Unreal Engine и тот же Qt Quick

S>Прекрасно.

Тё>>Но типичные говнокодеры, конечно, о таком не слыхали — им бы только о шаблонах сипипи потереть, как бы изощрённее в ногу стрельнуть.

S>С чего-то ты взял, что плюсовые реализации не используют мета-программирование? Скорее наоборот.
Да похрен мне на мета-программирование. Мне ехать нужно, feature complete и инструменты отладки.

Тё>>Тебе шашечки или ехать??? 11 это 10+1. А не 20 и не 30.

S>ок-ок, сдаюсь
Вот то-то же.

Тё>>Да. Перечитай моё http://rsdn.org/forum/flame.comp/7915243.1
Автор: Тёмчик
Дата: 30.12.20
в ответ питону на его Meta State Machine (MSM).

S>Ну так это уже после того как другие использовали нормальные ключевые слова.
Опять по новой. Redux это хранилище. Как SQL Server. Это не машина состояния.

Тё>>Это ответочка на...

S>А-а-а, ну раз так, то продолжайте кидаться какахами друг в друга
S>Я лучше в сторонке постаю.
Раздел для этого.
Re[13]: HFSM2 документация пустая?
От: Тёмчик Австралия жж
Дата: 09.01.21 03:41
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>С чего-то ты взял, что плюсовые реализации не используют мета-программирование? Скорее наоборот.


https://doc.hfsm.dev/user-guide/advanced-features/guards/exit-guards

This page is empty.


Ничего не понял, нахрена у неё entry guards и exit guards. Тогда как для Statechart только transition guards. И есть ли у HFSM2 отложенные события по таймеру типа таких (это в XState такое описание):
after{
  200: {
    target: 'someNextState',
    actions: ['action1', 'action2', 'action3']
  }
}


PS XState тоже типобезопасен. Если конфиг на typescript и инициализировать интерпретатор XState с указанием типов, компилятор отлавливает ошибки. Например, если состояние 'someNextState' не существует — проект не соберётся.
Отредактировано 09.01.2021 3:42 Артём . Предыдущая версия .
Re[14]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 09.01.21 06:46
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>ибо Redux в общем-то не машина состояния. Это единое объектное хранилище, которое контролирует, как можно изменять значение (только сообщениями и зарегистрированными обработчиками этих сообщений), и механизм подписки на интересующие значения. Метод select("путь к значению").


Тё>В Qt реализован Statechart. В XState тоже реализован Statechart. В Unreal Engine реализован Behaviour Tree. Вы как плюсники, отметившиеся в этой ветке, на уровне "рабинович напел", а я давно этой темой интересовался и применил на практике в боевом проекте.


Тё>Да похрен мне на мета-программирование. Мне ехать нужно, feature complete и инструменты отладки.


Тёмчик, если вам нужен не просто способ описать HFSM, а комбайн, внутрь которого HFSM интегрировал, то в C++ для этого есть (тадам-тадам) SObjectizer, где есть и HFSM, и механизм подписки, и механизмы трассировки, и инструменты для unit-тестирования. И да, это не на уровне "рабинович напел", а применяется на практике в боевых проектах.

Только вот по тому же самому боевому опыту, если вы не можете отладить свой КА на бумажке, то никакие средства трассировки и отладки не помогут вам, когда у вас в приложении переламывается по несколько миллионов сообщений в секунду, а на одного актора приходится по несколько десятков тысяч сообщений.
Re[15]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 09.01.21 08:23
Оценка:
Здравствуйте, so5team, Вы писали:

S> у вас в приложении переламывается по несколько миллионов сообщений в секунду,


У меня UI с навороченными правилами типа "если комбинация условий такая и такая, сворачиваем панельку" и способность сохранять/восстанавливать состояние этих самых панелек.

В своб очередь, наброшу в ответ- 1) зачем для приёмника тысяч сообщений HFSM? 2) Прикрутить готовую HFSM не судьба? Вы не в состоянии декомпозировать?
Отредактировано 09.01.2021 8:24 Артём . Предыдущая версия .
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 09.01.21 08:43
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>> у вас в приложении переламывается по несколько миллионов сообщений в секунду,


Тё>У меня UI с навороченными правилами типа "если комбинация условий такая и такая, сворачиваем панельку" и способность сохранять/восстанавливать состояние этих самых панелек.


Примеры этих правил можно увидеть? Ну дабы не полагаться на ваши оценки.

Тё>В своб очередь, наброшу в ответ- 1) зачем для приёмника тысяч сообщений HFSM? 2) Прикрутить готовую HFSM не судьба? Вы не в состоянии декомпозировать?


Данные набросы вызывают вопрос: почему Тёмчик не стесняется выставлять себя таким идиотом на публике?

Предметно ответить на поставленные вопросы не получится, поскольку:

1. HFSM не имеет отношения к величине нагрузки. Это вообще вещи из разных плоскостей.

2. Во-первых, вам же в Redux-е нравится именно комбайн, который может многое. Точно так же и здесь. Во-вторых, кто хочет использовать SO-5 со сторонними реализациями HFSM, тот без проблем может это делать. А тот, кто хочет, чтобы средства HFSM были тесно интегрированы с возможностями SO-5, тот использует готовый HFSM из коробки. Способность декомпозировать здесь не при чем.
Re[11]: Как в C++ получить Redux и Redux Dev Tools
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 09.01.21 13:22
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>А за Qt State Machine мне самому интересно, почему оно не получило большего рапространения. Штука хорошая, работает, но о ней мало кто знает даже в мире Qt

Потому что бэкграунд. Кто на QT пишет? Бывшие С-шники которые начинают перекладывать байты, задавать enum States и заниматься с-шным онанизмом с выставлением флажков вместо использования абстракций на С++, ведь что может быть проще чем добавить ещё один флажок или строку в енум, а потом где-то всё это переключать? Только люди такие не осознают что код превращается в кашу, порождает баги и приводит к проблемам в многопоточной среде. Ах да, ещё такие вот "замечательные инженеры" бояться создать файл с одним классом под стейт или аргументируют всё это "большим количеством сущностей".
Sic luceat lux!
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 10.01.21 04:08
Оценка:
Здравствуйте, so5team, Вы писали:

S>Примеры этих правил можно увидеть? Ну дабы не полагаться на ваши оценки.

Конфиг для состояния "favourite". Это из сравнительно больших, всего же ~30 конфигов, сложенных один в другого, как матрёшка, в одно цельное дерево глобального состояния. Часть из конфигов "отнаследуются" от других, как бы это с классами OOP, часть переиспользованы в нескольких местах.
  Скрытый текст
Схема:
export interface FavouriteLeftPanelSchema extends LeftPanelSchema {
  states: {
    hidden: {};
    vehicle: {};
    favourite: {};
    fullscreen: {};
  };
}



Disclaimer: описание переходов в данном конфиге раскопипасчено по причине ограничения (техн. долга) в первоначальной логике восстановления из "snapshot"-а. Православно все дублирующие
      on: {
        [VEHICLE_TOGGLE]: 'vehicle',
        [LEFT_PANEL_TOGGLE]: 'favourite',
        [FAVOURITE_SELECT]: 'favourite',

заменить на это в parent
      on: {
        [VEHICLE_TOGGLE]: '.vehicle',
        [LEFT_PANEL_TOGGLE]: '.favourite',
        [FAVOURITE_SELECT]: '.favourite',


export const FavouriteLeftPanelConfig: StandardMachineConfig<
  ApplicationStateContext,
  FavouriteLeftPanelSchema,
  ApplicationEvent
> = {
  id: 'Left panel, favourite mode',
  initial: 'favourite',

  states: {
    hidden: {
      entry: 'collapseSplitSideBar',
      exit: 'expandSplitSideBar',
      on: {
        [VEHICLE_TOGGLE]: 'vehicle',
        [LEFT_PANEL_TOGGLE]: 'favourite',
        [FAVOURITE_SELECT]: 'favourite',
        [ILLUSTRATION_FULLSCREEN_TOGGLE]: 'fullscreen',
        [FAVOURITE_TOGGLE]: [
          {
            target: 'vehicle',
            actions: ['turnOffFavouriteFromFavouritePanelOrHidden'],
          },
        ],
      },
    },
    vehicle: {
      entry: ['showVehiclePanel', 'expandSplitSideBar'],
      exit: 'hideVehiclePanel',
      on: {
        [VEHICLE_TOGGLE]: 'hidden',
        [LEFT_PANEL_TOGGLE]: 'hidden',
        [FAVOURITE_SELECT]: 'favourite',
        [SECTION_RESOLVED]: [
          {
            target: 'hidden',
            cond: 'illustrationSelected',
          },
        ],
        [SEARCH_RESOLVED]: [
          {
            target: 'hidden',
            cond: 'searchResultsNotEmpty',
          },
        ],
        [ILLUSTRATION_FULLSCREEN_TOGGLE]: 'fullscreen',
      },
    },
    favourite: {
      entry: ['showFavouritePanel', 'expandSplitSideBar'],
      exit: 'hideFavouritePanel',
      on: {
        [VEHICLE_TOGGLE]: 'vehicle',
        [LEFT_PANEL_TOGGLE]: 'hidden',
        [SECTION_RESOLVED]: [
          {
            target: 'favourite',
            cond: 'favouriteIllustrationSelected',
            internal: true,
          },
          {
            target: 'hidden',
            cond: 'illustrationSelected',
          },
        ],
        [SEARCH_RESOLVED]: [
          {
            target: 'hidden',
            cond: 'searchResultsNotEmpty',
          },
        ],
        [ILLUSTRATION_FULLSCREEN_TOGGLE]: 'fullscreen',
        [FAVOURITE_TOGGLE]: [
          {
            target: 'vehicle',
            actions: ['turnOffFavouriteFromFavouritePanelOrHidden'],
          },
        ],
      },
    },
    fullscreen: {
      entry: ['selectIllustrationFullscreen', 'collapseSplitSideBar'],
      exit: ['unselectIllustrationFullscreen'],
      on: {
        [VEHICLE_TOGGLE]: 'vehicle',
        [LEFT_PANEL_TOGGLE]: 'favourite',
        [SPLIT_SCREEN_SPLIT_BAR_DRAGGED_OR_ORIENTATION_CHANGED]: 'hidden',
        [ILLUSTRATION_FULLSCREEN_TOGGLE]: 'hidden',
        [FAVOURITE_TOGGLE]: [
          {
            target: 'vehicle',
            actions: ['turnOffFavouriteFromFavouritePanelOrHidden'],
          },
        ],
      },
    },
  },
};

Тё>>В своб очередь, наброшу в ответ- 1) зачем для приёмника тысяч сообщений HFSM? 2) Прикрутить готовую HFSM не судьба? Вы не в состоянии декомпозировать?

S>Данные набросы вызывают вопрос: почему Тёмчик не стесняется выставлять себя таким идиотом на публике?



S>Предметно ответить на поставленные вопросы не получится, поскольку:


S>1. HFSM не имеет отношения к величине нагрузки. Это вообще вещи из разных плоскостей.

Т.е. вы демагог. Ваши слова:

S>Только вот по тому же самому боевому опыту, если вы не можете отладить свой КА на бумажке, то никакие средства трассировки и отладки не помогут вам, когда у вас в приложении переламывается по несколько миллионов сообщений в секунду, а на одного актора приходится по несколько десятков тысяч сообщений.

По моему боевому опыту в коннекторах к биржевым фидам, формализованной в единое дерево состояний логики, мне тогда не хватало. Завис коннектор в проде, что он делает, в каком состоянии застрял — а х его з. Стек дамп и смотреть по строчкам кода. И просто запуском случайные зависоны не воспроизводятся.

S>2. Во-первых, вам же в Redux-е нравится именно комбайн, который может многое. Точно так же и здесь. Во-вторых, кто хочет использовать SO-5 со сторонними реализациями HFSM, тот без проблем может это делать. А тот, кто хочет, чтобы средства HFSM были тесно интегрированы с возможностями SO-5, тот использует готовый HFSM из коробки. Способность декомпозировать здесь не при чем.

Redux- это крошечная библиотечка с единственной задачей. Плагин для хрома Redux Dev Tools- это сторонний проект. XState- другая библиотека для HFSM, xstate-inspect- ещё другой проект.
Отредактировано 10.01.2021 4:17 Артём . Предыдущая версия . Еще …
Отредактировано 10.01.2021 4:10 Артём . Предыдущая версия .
Re[18]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 10.01.21 06:37
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Примеры этих правил можно увидеть? Ну дабы не полагаться на ваши оценки.

Тё>Конфиг для состояния "favourite".

Как-то издалека не понятно, в чем там сложность.

Тё>Это из сравнительно больших, всего же ~30 конфигов, сложенных один в другого, как матрёшка, в одно цельное дерево глобального состояния. Часть из конфигов "отнаследуются" от других, как бы это с классами OOP, часть переиспользованы в нескольких местах.


А это выглядит уже как проблема использованного инструмента. Либо же как неспособность разработчика сделать декомпозицию.

S>>1. HFSM не имеет отношения к величине нагрузки. Это вообще вещи из разных плоскостей.

Тё>Т.е. вы демагог.

Ничего подобного. HFSM -- это всего лишь один из возможных типов обработчиков для потока сообщений. И в HFSM нет каких-то принципиальных препятствий к тому, чтобы не справляться с большим потоком сообщений. Поэтому я и говорю, что HFSM не имеет отношения к величине нагрузки. Но вы, видимо, воспринимаете это все как-то сильно по свойму.

Тё>По моему боевому опыту в коннекторах к биржевым фидам, формализованной в единое дерево состояний логики, мне тогда не хватало. Завис коннектор в проде, что он делает, в каком состоянии застрял — а х его з. Стек дамп и смотреть по строчкам кода. И просто запуском случайные зависоны не воспроизводятся.


Такие проблемы должны диагностироваться показателями телеметрии, которая встраивается в приложение. Я же говорю про то, что когда у вас идет большой поток сообщений, то вы не сможете в отладчике протрассировать этот поток и пошаговой отладкой найти место, в котором что-то пошло не так. Во-первых, вы задолбетесь делать это уже при темпе в 100msg/s. Во-вторых, когда у вас поток в 10k/sec и вы вдруг приостанавливаете свой обработчик хотя бы на полсекунды, то это сразу же ведет к росту очередей, что оказывает влияние на другие куски приложения.

Так что нет. Сбор телеметрии, затем вдумчивый анализ. И без умения отлаживать КА на бумаге ничего не выйдет.

Тё>Redux- это крошечная библиотечка с единственной задачей. Плагин для хрома Redux Dev Tools- это сторонний проект. XState- другая библиотека для HFSM, xstate-inspect- ещё другой проект.


Так вам же нужен не крошечный Redux, а комбайн.
Re[19]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 10.01.21 10:00
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Примеры этих правил можно увидеть? Ну дабы не полагаться на ваши оценки.

Тё>>Конфиг для состояния "favourite".

S>Как-то издалека не понятно, в чем там сложность.

Так это говорит об адекватности конфига.

Тё>>Это из сравнительно больших, всего же ~30 конфигов, сложенных один в другого, как матрёшка, в одно цельное дерево глобального состояния. Часть из конфигов "отнаследуются" от других, как бы это с классами OOP, часть переиспользованы в нескольких местах.


S>А это выглядит уже как проблема использованного инструмента. Либо же как неспособность разработчика сделать декомпозицию.

Вы только что написали "не понятно, в чем там сложность". Её излишней и нет. Ибо декомпозиция.

S>>>1. HFSM не имеет отношения к величине нагрузки. Это вообще вещи из разных плоскостей.

Тё>>Т.е. вы демагог.

S>Ничего подобного. HFSM -- это всего лишь один из возможных типов обработчиков для потока сообщений. И в HFSM нет каких-то принципиальных препятствий к тому, чтобы не справляться с большим потоком сообщений. Поэтому я и говорю, что HFSM не имеет отношения к величине нагрузки. Но вы, видимо, воспринимаете это все как-то сильно по свойму.

Сценарий: коннектор заметил утерю пачки UDP пакетов и должен сделать TCP запрос. Он меняет состояние с "нормального" на "ошибка" и "дозапрос истории". В этом нет миллиона измений состояния в секунду. Однако, если сообщения так и не доходят- нужно понять, что там застряло, в чём проблема.

А как вы понимаете HFSM в разрезе миллиона сообщений в секунду?

S>Такие проблемы должны диагностироваться показателями телеметрии, которая встраивается в приложение.

Показатели говорят, что файл не растёт больше чем 30 секунд. Вам нужно исправить проблему, но если ваш код это спагетти, а ваш императивный код будет спагетти, найти проблему будет непросто.

S> Я же говорю про то, что когда у вас идет большой поток сообщений, то вы не сможете в отладчике протрассировать этот поток и пошаговой отладкой найти место, в котором что-то пошло не так. Во-первых, вы задолбетесь делать это уже при темпе в 100msg/s. Во-вторых, когда у вас поток в 10k/sec и вы вдруг приостанавливаете свой обработчик хотя бы на полсекунды, то это сразу же ведет к росту очередей, что оказывает влияние на другие куски приложения.

Вы какой-то зашоренный. Сколько лет уже в индустрии, а думаете, как вчерашний школьник.

S>Так что нет. Сбор телеметрии, затем вдумчивый анализ. И без умения отлаживать КА на бумаге ничего не выйдет.

Вот поэтому вы и строку не перевернёте. Развивайтесь, читайте книги, читайте статьи.

Тё>>Redux- это крошечная библиотечка с единственной задачей. Плагин для хрома Redux Dev Tools- это сторонний проект. XState- другая библиотека для HFSM, xstate-inspect- ещё другой проект.


S>Так вам же нужен не крошечный Redux, а комбайн.

Опять 25. Нет мне не нужен комбайн. Мне нужно решать проблемы с использованием подходящих инрструментов. Одна маленькая задача- один инструмент. А у вас швейцарский нож — это же антипаттерн. Вы г кодер и не хотите себе в этом признаться. Признание проблемы- первый шаг к выздоровлению.
Re[20]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 10.01.21 10:11
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>А это выглядит уже как проблема использованного инструмента. Либо же как неспособность разработчика сделать декомпозицию.

Тё>Вы только что написали "не понятно, в чем там сложность". Её излишней и нет. Ибо декомпозиция.

Если там сложности нет, то зачем вы тогда пишете:

У меня UI с навороченными правилами

Либо правила навореченные, либо сложностей нет. А у вас и то, и другое.

S>>Ничего подобного. HFSM -- это всего лишь один из возможных типов обработчиков для потока сообщений. И в HFSM нет каких-то принципиальных препятствий к тому, чтобы не справляться с большим потоком сообщений. Поэтому я и говорю, что HFSM не имеет отношения к величине нагрузки. Но вы, видимо, воспринимаете это все как-то сильно по свойму.

Тё>Сценарий: коннектор заметил утерю пачки UDP пакетов и должен сделать TCP запрос. Он меняет состояние с "нормального" на "ошибка" и "дозапрос истории". В этом нет миллиона измений состояния в секунду. Однако, если сообщения так и не доходят- нужно понять, что там застряло, в чём проблема.

И при чем здесь HFSM? У вас что-то застревает внутри HFSM?

Тё>А как вы понимаете HFSM в разрезе миллиона сообщений в секунду?


HFSM не имеет отношения ни к миллиону сообщений в секунду, ни к единственному сообщению в секунду.

Если у вас есть поток сообщений в 1M msg/sec и вы его обрабатываете посредством HFSM, то в HFSM роль играют лишь накладные расходы на a) выбор подходящей реакции на очередное входящее сообщение и b) на смену состояния. Если HFSM написан криво, то эти накладные расходы могут вам не позволить обрабатывать большой объем трафика. Но это если криво.

В общем, дурацкий вопрос.

S>>Такие проблемы должны диагностироваться показателями телеметрии, которая встраивается в приложение.

Тё>Показатели говорят, что файл не растёт больше чем 30 секунд. Вам нужно исправить проблему, но если ваш код это спагетти, а ваш императивный код будет спагетти, найти проблему будет непросто.

Это вы про какой-то свой кривой код пишете.

S>>Так вам же нужен не крошечный Redux, а комбайн.

Тё>Опять 25. Нет мне не нужен комбайн. Мне нужно решать проблемы с использованием подходящих инрструментов. Одна маленькая задача- один инструмент.

А в сумме, по итогу, комбайн.
Re[21]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 10.01.21 10:36
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>А это выглядит уже как проблема использованного инструмента. Либо же как неспособность разработчика сделать декомпозицию.

Тё>>Вы только что написали "не понятно, в чем там сложность". Её излишней и нет. Ибо декомпозиция.

S>Если там сложности нет, то зачем вы тогда пишете:

S>

У меня UI с навороченными правилами

S>Либо правила навореченные, либо сложностей нет. А у вас и то, и другое.
У меня навороченные правила формализованы в простом конфиге.

S>>>Ничего подобного. HFSM -- это всего лишь один из возможных типов обработчиков для потока сообщений. И в HFSM нет каких-то принципиальных препятствий к тому, чтобы не справляться с большим потоком сообщений. Поэтому я и говорю, что HFSM не имеет отношения к величине нагрузки. Но вы, видимо, воспринимаете это все как-то сильно по свойму.

Тё>>Сценарий: коннектор заметил утерю пачки UDP пакетов и должен сделать TCP запрос. Он меняет состояние с "нормального" на "ошибка" и "дозапрос истории". В этом нет миллиона измений состояния в секунду. Однако, если сообщения так и не доходят- нужно понять, что там застряло, в чём проблема.

S>И при чем здесь HFSM? У вас что-то застревает внутри HFSM?

У меня в коннекторе была плоская FSM- одна проблема, что плоская, и вторая- отсутствие инструмента для инспекции состояния в случае нештатной ситуации.

Тё>>А как вы понимаете HFSM в разрезе миллиона сообщений в секунду?


S>HFSM не имеет отношения ни к миллиону сообщений в секунду, ни к единственному сообщению в секунду.


S>Если у вас есть поток сообщений в 1M msg/sec и вы его обрабатываете посредством HFSM,

Зачем вы его обрабатываете посредством HFSM? В моей задаче в коннектор складывал сообщения в конверты и писал в файл. Там не нужен HFSM. Далее, были компоненты в другом процессе, которые отвечали за конвертацию из raw формата с биржи (проприетарный либо SBE) в внутренний формат для дальнейшей обработки. Этот конвертор, много разных было. Самый красивый код получился с использованием Visitor.

S> в HFSM ... выбор подходящей реакции на очередное входящее сообщение

И что, на каждое сообщение смена состояния? Или вы таким образом выбираете подходящую функцию-конвертер для сообщения? А завести виртуальную фабрику не судьба? Ах да, вы же не читали GoF.

S>В общем, дурацкий вопрос.

Я отвечаю на ваши вопросы. Будьте добры, ответьте и вы на мой вопрос.

S>>>Такие проблемы должны диагностироваться показателями телеметрии, которая встраивается в приложение.

Тё>>Показатели говорят, что файл не растёт больше чем 30 секунд. Вам нужно исправить проблему, но если ваш код это спагетти, а ваш императивный код будет спагетти, найти проблему будет непросто.

S>Это вы про какой-то свой кривой код пишете.

Я привёл вам пример вашего шаблона "can_be_with_comma". От которого глаза вытекают.

S>>>Так вам же нужен не крошечный Redux, а комбайн.

Тё>>Опять 25. Нет мне не нужен комбайн. Мне нужно решать проблемы с использованием подходящих инрструментов. Одна маленькая задача- один инструмент.

S>А в сумме, по итогу, комбайн.

В итоге я собираю от простого к сложному, склеивая вместе подходищие инструменты.
Отредактировано 10.01.2021 10:39 Артём . Предыдущая версия .
Re[22]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 10.01.21 11:53
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Либо правила навореченные, либо сложностей нет. А у вас и то, и другое.

Тё>У меня навороченные правила формализованы в простом конфиге.

Ну так в чем навороченность? Там никакой сложности не видно.

Тё>>>Сценарий: коннектор заметил утерю пачки UDP пакетов и должен сделать TCP запрос. Он меняет состояние с "нормального" на "ошибка" и "дозапрос истории". В этом нет миллиона измений состояния в секунду. Однако, если сообщения так и не доходят- нужно понять, что там застряло, в чём проблема.


S>>И при чем здесь HFSM? У вас что-то застревает внутри HFSM?

Тё>У меня в коннекторе была плоская FSM- одна проблема, что плоская, и вторая- отсутствие инструмента для инспекции состояния в случае нештатной ситуации.

Запомним факт того, что плоская FSM -- это проблема.

Какое отношение HFSM имеет к вашему неумению собирать телеметрию и/или отлаживаться все еще непонятно.

S>>Если у вас есть поток сообщений в 1M msg/sec и вы его обрабатываете посредством HFSM,

Тё>Зачем вы его обрабатываете посредством HFSM?

А теперь вспоминаем факт того, что плоская FSM -- это проблема.

Тё>Там не нужен HFSM.


Получается, что если вам не нужен HFSM, то он никому не нужен. ok.jpg

Тё>Самый красивый код получился с использованием Visitor.


То, что единственное, во что вы умеете, -- это Visitor, давно понятно. Можно не повторяться.

S>> в HFSM ... выбор подходящей реакции на очередное входящее сообщение

Тё>И что, на каждое сообщение смена состояния?

Почему бы и нет? Какие-то проблемы?

Тё>Или вы таким образом выбираете подходящую функцию-конвертер для сообщения? А завести виртуальную фабрику не судьба?


Все умные слова перечислили или что-то еще помните?

Тё>Ах да, вы же не читали GoF.


Звиздеть изволите. Как обычно, впрочем.

S>>В общем, дурацкий вопрос.

Тё>Я отвечаю на ваши вопросы. Будьте добры, ответьте и вы на мой вопрос.

Ну так задайте вопрос нормально. На дурацкие вопросы ответить невозможно.

S>>Это вы про какой-то свой кривой код пишете.

Тё>Я привёл вам пример вашего шаблона "can_be_with_comma". От которого глаза вытекают.

Они у вас вытекают потому, что a) вы не понимаете C++, b) вы не в курсе предметной области (но это вам там netch80 очень убедительно объяснил). Вы даже не увидели, что функция, над которой вы тогда решили постебаться, чистая.

S>>А в сумме, по итогу, комбайн.

Тё>В итоге я собираю от простого к сложному, склеивая вместе подходищие инструменты.

Ну комбайн же. Даже еще и слепленный из того, что было.
Re[23]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 10.01.21 13:58
Оценка:
Здравствуйте, so5team, Вы писали:

S>Ну так в чем навороченность? Там никакой сложности не видно.

Навороченные правила от бизнес-аналитика описаны простым конфигом и напрямую исполняются программой, минуя этап конвертации в подверженный ошибкам и разной степени говнистости императивный код. Это же замечательно.

Тё>>>>Сценарий: коннектор заметил утерю пачки UDP пакетов и должен сделать TCP запрос. Он меняет состояние с "нормального" на "ошибка" и "дозапрос истории". В этом нет миллиона измений состояния в секунду. Однако, если сообщения так и не доходят- нужно понять, что там застряло, в чём проблема.


S>>>И при чем здесь HFSM? У вас что-то застревает внутри HFSM?

Тё>>У меня в коннекторе была плоская FSM- одна проблема, что плоская, и вторая- отсутствие инструмента для инспекции состояния в случае нештатной ситуации.

S>Запомним факт того, что плоская FSM -- это проблема.

Да, наколеночная FSM- это проблема. И дополнительное следствие из наколеночной FSM- остутствие инструмента для анализа состояния на работающем приложении, когда возникла нештатная ситуация.

S>Какое отношение HFSM имеет к вашему неумению собирать телеметрию и/или отлаживаться все еще непонятно.

Вы читать разучились или что? Телеметрия работает, автоматически эскалирует проблему, что данные не приходят. Отладка приложения (коннектора) ограничена, только стек трейс дамп и дальше коннектор принудительно перезапускается. И вот stack trace, это императивный инструмент. Из него можно только догадываться, какое состояние было в FSM прежде, чем процесс прибили.

S>>>Если у вас есть поток сообщений в 1M msg/sec и вы его обрабатываете посредством HFSM,

Тё>>Зачем вы его обрабатываете посредством HFSM?

S>А теперь вспоминаем факт того, что плоская FSM -- это проблема.


Тё>>Там не нужен HFSM.


S>Получается, что если вам не нужен HFSM, то он никому не нужен. ok.jpg

Объясните, пожалуйста, сценарий использования FSM/HFSM на каждом из миллиона сообщений в секунду. Это что, торговые роботы реализованы вырвиглазными шаблонами С++?

Тё>>Самый красивый код получился с использованием Visitor.


S>То, что единственное, во что вы умеете, -- это Visitor, давно понятно. Можно не повторяться.

Это не единственный дизайн конверторов, а последний и лучший в сравнении с предыдущими "моделями".

S>>> в HFSM ... выбор подходящей реакции на очередное входящее сообщение

Тё>>И что, на каждое сообщение смена состояния?

S>Почему бы и нет? Какие-то проблемы?

В общем да, в этом проблема.

Тё>>Или вы таким образом выбираете подходящую функцию-конвертер для сообщения? А завести виртуальную фабрику не судьба?


S>Все умные слова перечислили или что-то еще помните?


Тё>>Ах да, вы же не читали GoF.


S>Звиздеть изволите. Как обычно, впрочем.

Для вас виртуальная фабрика- это "умные слова". Блин, это же основы дизайна.

S>>>В общем, дурацкий вопрос.

Тё>>Я отвечаю на ваши вопросы. Будьте добры, ответьте и вы на мой вопрос.

S>Ну так задайте вопрос нормально. На дурацкие вопросы ответить невозможно.

Вы просто хамите на попытку вести конструктивное обсуждение. Вы с коллегами тоже так разговариваете?

S>>>Это вы про какой-то свой кривой код пишете.

Тё>>Я привёл вам пример вашего шаблона "can_be_with_comma". От которого глаза вытекают.

S>Они у вас вытекают потому, что a) вы не понимаете C++,

Вы хотели сказать, что не верую фанатично в превосходство C++? Ибо я успешно кодил на C++ до 2011г, в том числе и ассенизировал авгиевы конюшни после таких, как вы.

S> b) вы не в курсе предметной области (но это вам там netch80 очень убедительно объяснил).

Я в курсе своей предметной области. Кажется, я уже объяснил это. В какой области Вы или netch80, мне не очень понятно. Точнее, совсем не понятно.

S> Вы даже не увидели, что функция, над которой вы тогда решили постебаться, чистая.

Pure Function- такая, что не изменяет состояние приложения. Тут нет связи с C++, с шаблонами, которые вы абъюзите до состояния, что вытекают глаза, и вашего стиля программирования, в частности, наименования сущностей на английском б#####й_у#####к.jpg.

S>>>А в сумме, по итогу, комбайн.

Тё>>В итоге я собираю от простого к сложному, склеивая вместе подходищие инструменты.

S>Ну комбайн же. Даже еще и слепленный из того, что было.

Отредактировано 10.01.2021 14:08 Артём . Предыдущая версия .
Re[24]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 10.01.21 16:16
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

S>>Ну так в чем навороченность? Там никакой сложности не видно.

Тё>Навороченные правила от бизнес-аналитика

Еще раз, где эта самая навороченность? Там несколько формочек и несколько реакций на внешние воздействия. В чем там навороченность проявляется?

S>>Запомним факт того, что плоская FSM -- это проблема.

Тё>Да, наколеночная FSM- это проблема.

Не нужно подменять тему. У вас то плоская FSM проблема, то наколеночная. Определитесь уже. Если у вас с наколеночными разработками проблемы, то выхода, традиционно, два:

1. Взять готовое, не наколеночное.

2. Дать возможность сделать наколеночное людям с прямыми руками и трезвой головой.

Тё>И дополнительное следствие из наколеночной FSM- остутствие инструмента для анализа состояния на работающем приложении, когда возникла нештатная ситуация.


См. выше.

S>>Какое отношение HFSM имеет к вашему неумению собирать телеметрию и/или отлаживаться все еще непонятно.

Тё>Вы читать разучились или что?

Нет. Но вы, видимо, так и не научились писать. Так что еще раз: вы не умеете собирать телеметрию (раз вам нужно знать состояние, а в показаниях телеметрии его нет), но при чем здесь HFSM?

S>>Получается, что если вам не нужен HFSM, то он никому не нужен. ok.jpg

Тё>Объясните, пожалуйста, сценарий использования FSM/HFSM на каждом из миллиона сообщений в секунду.

Да все просто. У сущности может быть два верхнеуровневых состояния: active и passive. Плюс еще несколько состояний внутри active. При получении каждого входящего сообщения должен быть найден обработчик либо в текущем состоянии сущности, либо в его родительском состоянии. Это прямая задача реализации HFSM.

Элементарные же вещи.

Тё>Это не единственный дизайн конверторов, а последний и лучший в сравнении с предыдущими "моделями".


Повторяю: все уже знают, что visitor -- это ваш фетишь, хватит повторять.

S>>>> в HFSM ... выбор подходящей реакции на очередное входящее сообщение

Тё>>>И что, на каждое сообщение смена состояния?
S>>Почему бы и нет? Какие-то проблемы?
Тё>В общем да, в этом проблема.

Какая именно?

S>>Звиздеть изволите. Как обычно, впрочем.

Тё>Для вас виртуальная фабрика- это "умные слова". Блин, это же основы дизайна.

Для меня ваша речь выглядит как попытка впихнуть как можно больше умных слов не вкладывая никакого смысла.

S>>Ну так задайте вопрос нормально. На дурацкие вопросы ответить невозможно.

Тё>Вы просто хамите на попытку вести конструктивное обсуждение.

Вы пока не можете в конструктивное обсуждение. Тупите, не читаете то, что вам пишут, путаетесь в показаниях.

S>>Они у вас вытекают потому, что a) вы не понимаете C++,

Тё>Вы хотели сказать,

Я хотел сказать именно то, что сказал.

Тё>Ибо я успешно кодил на C++ до 2011г


И вы говорите, говорите (c).

S>> b) вы не в курсе предметной области (но это вам там netch80 очень убедительно объяснил).

Тё>Я в курсе своей предметной области. Кажется, я уже объяснил это. В какой области Вы или netch80, мне не очень понятно. Точнее, совсем не понятно.

Так ваша предметная область никому не сдалась. Вы стали рассуждать об области, в которой не разбираетесь.

S>> Вы даже не увидели, что функция, над которой вы тогда решили постебаться, чистая.

Тё>Pure Function- такая, что не изменяет состояние приложения.

Да, она именно такая. Глаза разуйте.

Тё>и вашего стиля программирования, в частности, наименования сущностей на английском б#####й_у#####к.jpg.


Какой вы нервный. Вам тогда лучше в потроха Boost-а, не говоря уже про реализации stdlib, лучше не заглядывать. snake_case -- это один из распространенных стилей в C++. И нет, в C++ нет единого стандарта для нотации.
Re[25]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 11.01.21 01:51
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Ну так в чем навороченность? Там никакой сложности не видно.

Тё>>Навороченные правила от бизнес-аналитика

S>Еще раз, где эта самая навороченность? Там несколько формочек и несколько реакций на внешние воздействия. В чем там навороченность проявляется?

В неочевидных правилах реакции на внешние воздействия.

S>>>Запомним факт того, что плоская FSM -- это проблема.

Тё>>Да, наколеночная FSM- это проблема.

S>Не нужно подменять тему. У вас то плоская FSM проблема, то наколеночная. Определитесь уже. Если у вас с наколеночными разработками проблемы, то выхода, традиционно, два:

Я не подменяю. В том случае, плоской FSM было достаточно.

S>1. Взять готовое, не наколеночное.

Готовое тогда я не нашёл. Были только другие варианты наколеночные, к другим биржам, написанные до меня.

S>2. Дать возможность сделать наколеночное людям с прямыми руками и трезвой головой.

Дайте догадаться, это вы себя к таким людям причислили?

Тё>>И дополнительное следствие из наколеночной FSM- остутствие инструмента для анализа состояния на работающем приложении, когда возникла нештатная ситуация.


S>См. выше.

Вы читать разучились?

S>>>Какое отношение HFSM имеет к вашему неумению собирать телеметрию и/или отлаживаться все еще непонятно.

Тё>>Вы читать разучились или что?

S>Нет. Но вы, видимо, так и не научились писать. Так что еще раз: вы не умеете собирать телеметрию (раз вам нужно знать состояние, а в показаниях телеметрии его нет), но при чем здесь HFSM?

Не я делал телеметрию. Оно просто работало. Состояние FSM тогда отправлять в жавскую телеметрию я не догадался. А сейчас уже там не работаю.

S>>>Получается, что если вам не нужен HFSM, то он никому не нужен. ok.jpg

Тё>>Объясните, пожалуйста, сценарий использования FSM/HFSM на каждом из миллиона сообщений в секунду.

S>Да все просто. У сущности может быть два верхнеуровневых состояния: active и passive. Плюс еще несколько состояний внутри active. При получении каждого входящего сообщения должен быть найден обработчик либо в текущем состоянии сущности, либо в его родительском состоянии. Это прямая задача реализации HFSM.

Т.е. это сессия. Не имеет отношения к конвертации сообщений.

S>Элементарные же вещи.


Тё>>Это не единственный дизайн конверторов, а последний и лучший в сравнении с предыдущими "моделями".


S>Повторяю: все уже знают, что visitor -- это ваш фетишь, хватит повторять.

Вы ж его ниасилили .

S>>>>> в HFSM ... выбор подходящей реакции на очередное входящее сообщение

Тё>>>>И что, на каждое сообщение смена состояния?
S>>>Почему бы и нет? Какие-то проблемы?
Тё>>В общем да, в этом проблема.

S>Какая именно?

Проблема в том, что тип сообщения сразу в заголовке, и для его конвертации достаточно вызвать нужный метод. Вы переусложняете.

S>>>Звиздеть изволите. Как обычно, впрочем.

Тё>>Для вас виртуальная фабрика- это "умные слова". Блин, это же основы дизайна.

S>Для меня ваша речь выглядит как попытка впихнуть как можно больше умных слов не вкладывая никакого смысла.

Очень жаль, что моя речь для вас выглядит китайской грамотой. Не позорьтесь.

S>>>Ну так задайте вопрос нормально. На дурацкие вопросы ответить невозможно.

Тё>>Вы просто хамите на попытку вести конструктивное обсуждение.

S>Вы пока не можете в конструктивное обсуждение. Тупите, не читаете то, что вам пишут, путаетесь в показаниях.

Я пытаюсь с вами конструктивно обсуждать, а вы хамите. Вы с какого колхоза такой?

S>>>Они у вас вытекают потому, что a) вы не понимаете C++,

Тё>>Вы хотели сказать,

S>Я хотел сказать именно то, что сказал.

Блин.... Ну спросите у моих бывших коллег плюсников. Никогда не было вопросов по части C++ к моему коду.

Тё>>Ибо я успешно кодил на C++ до 2011г


S>И вы говорите, говорите (c).


S>>> b) вы не в курсе предметной области (но это вам там netch80 очень убедительно объяснил).

Тё>>Я в курсе своей предметной области. Кажется, я уже объяснил это. В какой области Вы или netch80, мне не очень понятно. Точнее, совсем не понятно.

S>Так ваша предметная область никому не сдалась. Вы стали рассуждать об области, в которой не разбираетесь.

Помойте рот с мылом.

S>>> Вы даже не увидели, что функция, над которой вы тогда решили постебаться, чистая.

Тё>>Pure Function- такая, что не изменяет состояние приложения.

S>Да, она именно такая. Глаза разуйте.

Помойте рот с мылом.

Тё>>и вашего стиля программирования, в частности, наименования сущностей на английском б#####й_у#####к.jpg.


S>Какой вы нервный. Вам тогда лучше в потроха Boost-а, не говоря уже про реализации stdlib, лучше не заглядывать. snake_case -- это один из распространенных стилей в C++. И нет, в C++ нет единого стандарта для нотации.

Речь не про underscore. Речь про выделенное курсивом.
Re[26]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 11.01.21 05:05
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Еще раз, где эта самая навороченность? Там несколько формочек и несколько реакций на внешние воздействия. В чем там навороченность проявляется?

Тё>В неочевидных правилах реакции на внешние воздействия.

И где эта неочевидность?

Тё>Я не подменяю. В том случае, плоской FSM было достаточно.


Определитеь уже: либо плоская FSM -- это проблема, либо наколеночная FSM -- это проблема.

S>>2. Дать возможность сделать наколеночное людям с прямыми руками и трезвой головой.

Тё>Дайте догадаться, это вы себя к таким людям причислили?

Один из, да. Доказано практикой.

S>>Нет. Но вы, видимо, так и не научились писать. Так что еще раз: вы не умеете собирать телеметрию (раз вам нужно знать состояние, а в показаниях телеметрии его нет), но при чем здесь HFSM?

Тё>Не я делал телеметрию. Оно просто работало. Состояние FSM тогда отправлять в жавскую телеметрию я не догадался. А сейчас уже там не работаю.

Еще раз: чем здесь HFSM?

S>>Да все просто. У сущности может быть два верхнеуровневых состояния: active и passive. Плюс еще несколько состояний внутри active. При получении каждого входящего сообщения должен быть найден обработчик либо в текущем состоянии сущности, либо в его родительском состоянии. Это прямая задача реализации HFSM.

Тё>Т.е. это сессия. Не имеет отношения к конвертации сообщений.

Предмет разговора изначально не имел отношения к конвертации сообщений. Речь шла об обмене информацией между сущностями внутри приложения посредством сообщений.

S>>Повторяю: все уже знают, что visitor -- это ваш фетишь, хватит повторять.

Тё>Вы ж его ниасилили .

Настолько, что применял его (как и еще процентов 70) паттернов из GoF еще до того, как эта книга добралась до наших болот.

S>>Какая именно?

Тё>Проблема в том, что тип сообщения сразу в заголовке, и для его конвертации достаточно вызвать нужный метод. Вы переусложняете.

Ох, ё. Как все запущено. Тёмчик, речь не о вашей фантазии и не о вашем опыте (каким бы обширным он вам не казался).

Тё>Блин.... Ну спросите у моих бывших коллег плюсников. Никогда не было вопросов по части C++ к моему коду.


И вы говорите, говорите (c).

Тё>Помойте рот с мылом.


Этот Тёмчик порвался.
Re[3]: Как в C++ получить Redux и Redux Dev Tools
От: vsb Казахстан  
Дата: 11.01.21 05:39
Оценка:
Здравствуйте, StandAlone, Вы писали:

SA>Это God-object, глобальная помойка, в которую свалено все состояние приложения. Буквально все, вплоть до того, какая кнопка кликнута в тот или иной момент и какая буква нажата пользователем в очередном инпуте.


Что в этом плохого? Я боюсь тебя огорчить, но в браузере window это тоже такой God-object, в который свалены все глобальные переменные. В Lua _G это тоже такой же God-object. Можешь считать это таким неймспейсом.

SA>На текущем проекте, примитивной учетной системе, это сейчас порядка 47-48 тысяч переменных. Хаотично разбросанных по от балды названным подобъектам, порядка 40 уровней вложенности.


И, конечно, в хаосе и названиях от балды виноват Redux, а не те, кто сделал этот хаос и называл от балды. Понимаю. Без Redux всё было бы по феншую и названия были бы совсем другие (нет).

SA>Есть глобальный обработчик событий, и на каждый чих, когда нужно изменить любую из переменных в глобальной помойке, туда отправляется сообщение с привязанными данными. В глобальном обработчике 47-48 тысяч условий break. Слепленных воедино из разных файлов, разумеется. Все эти условия будут опрошены на соответствие строковой константы сообщения условию брейка.


Есть такая структура данных под названием хеш-таблица. А ещё в JS каждая функция является значением. Т.е. ты можешь завести структуру вида handlers: Map<String, Function[]>. Структурированно её заполнить и обработка будет работать со сложностью O(1).

SA>Если таковое сработало, то весь глобальный объект пересоздается, ради изменения нажатой пользователем буквы или состояния кнопки.


И в этом нет ничего страшного, хотя звучит это страшно. По факту если твой глобальный объект организован в адекватное структурированное дерево, то пересоздаётся только путь от корня до нужного значения, который имеет длину O(ln N). Если это 40 уровней вложенности, то это пересоздание 40 хеш-таблиц в самом крайнем случае, каждая из которых имеет размер ну пусть максимум 100 объектов, а, скорей всего, подавляющее большинство будет иметь размер меньше 10. Это занимает микросекунды. Потратить несколько микросекунд на нажатие кнопки это не много.

SA>Это MFC 6.0 и WndProc, брошенные в кормушку жаваскриптерам.


Ничего общего. React и Redux это уникальные технологии, не имеющие ничего общего в прошлом.
Отредактировано 11.01.2021 5:41 vsb . Предыдущая версия .
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 11.01.21 06:23
Оценка:
Здравствуйте, vsb, Вы писали:


SA>>. Все эти условия будут опрошены на соответствие строковой константы сообщения условию брейка.

SA походу тоже ни бум бум в алгоритмах.


vsb>Есть такая структура данных под названием хеш-таблица. А ещё в JS каждая функция является значением. Т.е. ты можешь завести структуру вида handlers: Map<String, Function[]>. Структурированно её заполнить и обработка будет работать со сложностью O(1).

Более того, обьект по началу тоже — хеш таблица, а потом его JIT ит в shadow class, и свойства-методы становятся как бы vtable, с нулевым C.
Re[4]: Как в C++ получить Redux и Redux Dev Tools
От: Glestwid  
Дата: 12.01.21 08:05
Оценка:
KP>Спасибо большое за описание! Я, честно говоря, думал что это очередной "прорыв в мире JS", но не думал что на столько всё плохо.

Это не прорыв, а запор, судя по описанию. Кишечная непроходимость, так сказать.
Re[14]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 13.01.21 13:07
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Погоди погоди. Стартовое сообщение было именно про какие есть аналоги Redux и отладочных инструментов его, на что питон ответил про Meta State Machine. Я подозреваю, что он хотел таким образом сразу задавить интеллектом — ибо Redux в общем-то не машина состояния. Это единое объектное хранилище, которое контролирует, как можно изменять значение (только сообщениями и зарегистрированными обработчиками этих сообщений), и механизм подписки на интересующие значения. Метод select("путь к значению").

Все это есть в Qt: свойства и сигналы, слоты. 20 или 30 лет.

Тё>Формализованная машина состояния, это уже следующий уровень разработчика. Вот с MSM и заверте "как аналог XState, какие есть тулзы отладки, аналогичные имеющимся для XState". С этого и понеслись оскорбления про "тулзы не нужны" и "если у тебя большая машина состояния, значит ты идиот".

Не все понятно как и для чего ты используешь специфичные для языка средства

Тё>>>Но с твоих же слов, про FSM мало кто из C++ разработчиков знает.

S>>Ты что-то выдумываешь. Я говорил исключительно про Qt реализацию.
Тё>Ок, я же не против. Здесь священные войны- давайте соревноваться, у кого машина состояния круче. Ну, или сменить тему- у кого data model круче.
Да в плюсах какая угодно может быть

Тё>В Qt реализован Statechart. В XState тоже реализован Statechart. В Unreal Engine реализован Behaviour Tree. Вы как плюсники, отметившиеся в этой ветке, на уровне "рабинович напел", а я давно этой темой интересовался и применил на практике в боевом проекте.

Я написал ровно про то, что знаю и использую

Тё>Да похрен мне на мета-программирование.

Не похоже, ты как-то неровно тут дышишь

Тё>Мне ехать нужно, feature complete и инструменты отладки.

Да пожалуйста. Только я вот не понимаю, что тебе отлаживать-то нужно? Свойства в Qt работают как часы

Тё>>>Тебе шашечки или ехать??? 11 это 10+1. А не 20 и не 30.

S>>ок-ок, сдаюсь
Тё>Вот то-то же.
Кто-то не улавливает сарказм...

Тё>Опять по новой. Redux это хранилище. Как SQL Server. Это не машина состояния.

Qt properties в любой класс унаследованный от QObject. Хоть усохраняйся.

Тё>Раздел для этого.

Как общаться каждый выбирает сам
Re[15]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 14.01.21 06:10
Оценка: :))
Здравствуйте, Skorodum, Вы писали:

S>Все это есть в Qt: свойства и сигналы, слоты. 20 или 30 лет.

В Qt до Qt quick были убогие Qt Widgets aka кривая имитация MFC. Так что не нужно фантазировать про крутость Qt.

S>Не все понятно как и для чего ты используешь специфичные для языка средства

Это не специфичные для языка средства.

S>Да в плюсах какая угодно может быть

В теории. А на практике выгвиглазные шаблоны MSM без средств отладки.

S>Я написал ровно про то, что знаю и использую

Так и запишем- про HFSM не знает и не использует.

Тё>>Да похрен мне на мета-программирование.

S>Не похоже, ты как-то неровно тут дышишь
Глаза вытекают от мета шаблонов, да.

Тё>>Мне ехать нужно, feature complete и инструменты отладки.

S>Да пожалуйста. Только я вот не понимаю, что тебе отлаживать-то нужно? Свойства в Qt работают как часы
Отлаживать логику.

Тё>>>>Тебе шашечки или ехать??? 11 это 10+1. А не 20 и не 30.

S>>>ок-ок, сдаюсь
Тё>>Вот то-то же.
S>Кто-то не улавливает сарказм...
Кто-то демагог.

Тё>>Опять по новой. Redux это хранилище. Как SQL Server. Это не машина состояния.

S>Qt properties в любой класс унаследованный от QObject. Хоть усохраняйся.
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: so5team https://stiffstream.com
Дата: 14.01.21 06:57
Оценка: +3
Здравствуйте, Тёмчик, Вы писали:

Тё>убогие Qt Widgets aka кривая имитация MFC


Походу вам не доводилось плотно работать ни с одним, ни с другим.
Re[16]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 14.01.21 09:38
Оценка:
Здравствуйте, Тёмчик, Вы писали:

S>>Все это есть в Qt: свойства и сигналы, слоты. 20 или 30 лет.

Тё>В Qt до Qt quick были убогие Qt Widgets aka кривая имитация MFC.
Вот сейчас очень смешно было

Тё>Так что не нужно фантазировать про крутость Qt.

Крутость это какой-то дворовый термин. У Qt своя ниша в которой она отлично решает задачи и доминирует.

S>>Не все понятно как и для чего ты используешь специфичные для языка средства

Тё>Это не специфичные для языка средства.
Redux и Redux Dev Tools это специфичные для JS средства. Или эти слова имеют какой-то смысл за пределом мира JS?

S>>Да в плюсах какая угодно может быть

Тё>В теории. А на практике выгвиглазные шаблоны MSM без средств отладки.
На практике в Qt реализации шаблонов нет вообще.

S>>Я написал ровно про то, что знаю и использую

Тё>Так и запишем- про HFSM не знает и не использует.
Ты можешь записывать что угодно, если читать не умеешь. Вложенные состояния есть в Qt.

Тё>Глаза вытекают от мета шаблонов, да.

Сочувствую. Нет, не сочувствую

Тё>>>Мне ехать нужно, feature complete и инструменты отладки.

S>>Да пожалуйста. Только я вот не понимаю, что тебе отлаживать-то нужно? Свойства в Qt работают как часы
Тё>Отлаживать логику.
В Qt это делается с помощью обычного отладчика

Тё>>>Опять по новой. Redux это хранилище. Как SQL Server. Это не машина состояния.

S>>Qt properties в любой класс унаследованный от QObject. Хоть усохраняйся.
Тё>
По существу-то есть что сзазать?
Re[17]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 14.01.21 23:01
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>>>Все это есть в Qt: свойства и сигналы, слоты. 20 или 30 лет.

Тё>>В Qt до Qt quick были убогие Qt Widgets aka кривая имитация MFC.
S>Вот сейчас очень смешно было
От убогости MFC или убогости Qt Widgets?

Тё>>Так что не нужно фантазировать про крутость Qt.

S>Крутость это какой-то дворовый термин. У Qt своя ниша в которой она отлично решает задачи и доминирует.
Ниша говнокодеров в импортозамещающем попиле?

S>>>Не все понятно как и для чего ты используешь специфичные для языка средства

Тё>>Это не специфичные для языка средства.
S>Redux и Redux Dev Tools это специфичные для JS средства. Или эти слова имеют какой-то смысл за пределом мира JS?
Redux это не фича языка. Но для зашоренных плюсников ничего не имеет смысл- сидят с векторами и map- ми булькаются.

S>>>Да в плюсах какая угодно может быть

Тё>>В теории. А на практике выгвиглазные шаблоны MSM без средств отладки.
S>На практике в Qt реализации шаблонов нет вообще.
Это хорошо про Qt. Но питон здесь отметился с MSM, а там от hello world светофора вытекли глаза.

S>>>Я написал ровно про то, что знаю и использую

Тё>>Так и запишем- про HFSM не знает и не использует.
S>Ты можешь записывать что угодно, если читать не умеешь. Вложенные состояния есть в Qt.
Есть в Qt, но ты HFSM не знаешь и не используешь.

Тё>>Глаза вытекают от мета шаблонов, да.

S>Сочувствую. Нет, не сочувствую
Сочувствую плюсникам.

Тё>>>>Мне ехать нужно, feature complete и инструменты отладки.

S>>>Да пожалуйста. Только я вот не понимаю, что тебе отлаживать-то нужно? Свойства в Qt работают как часы
Тё>>Отлаживать логику.
S>В Qt это делается с помощью обычного отладчика
Ты совсем не понимаешь отличие обычного отладчика от Redux Tools и xstate-inspect. Такое ощущение, что со столбом разговариваю.

Тё>>>>Опять по новой. Redux это хранилище. Как SQL Server. Это не машина состояния.

S>>>Qt properties в любой класс унаследованный от QObject. Хоть усохраняйся.
Тё>>
S>По существу-то есть что сзазать?
Базовый класс для всего — это антипаттерн. https://www.thoughtworks.com/insights/blog/composition-vs-inheritance-how-choose
Отредактировано 14.01.2021 23:06 Артём . Предыдущая версия .
Re[18]: Как в C++ получить Redux и Redux Dev Tools
От: Skorodum Россия  
Дата: 15.01.21 08:37
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>От убогости MFC или убогости Qt Widgets?

От нелепости твоего высказывания.

Тё>Ниша говнокодеров в импортозамещающем попиле?

Ты этим занимаешься? Зачем?
На Qt написана большая часть интерфейсов в машинах и медицинских приборов.

Тё>Redux это не фича языка.

Ты сам с собой что-ли разговариваешь? Тебе сказали, что это специфичное для мира JS средство.

Тё>Есть в Qt, но ты HFSM не знаешь и не используешь.

Ну раз ты так говоришь...

Тё>Ты совсем не понимаешь отличие обычного отладчика от Redux Tools и xstate-inspect.

Я вообще понятия не имею что такое Redux Tools и xstate-inspect. Прямо и честно говорю.

Тё>Базовый класс для всего — это антипаттерн. https://www.thoughtworks.com/insights/blog/composition-vs-inheritance-how-choose

Базовый класс для всего, чему требуются свойства, сигналы и слоты.
Re[19]: Как в C++ получить Redux и Redux Dev Tools
От: Тёмчик Австралия жж
Дата: 17.01.21 07:40
Оценка:
Здравствуйте, Skorodum, Вы писали:

Тё>>От убогости MFC или убогости Qt Widgets?

S>От нелепости твоего высказывания.
В чём заключается нелепость моего высказывания?

Тё>>Ниша говнокодеров в импортозамещающем попиле?

S>Ты этим занимаешься? Зачем?
Нет, не занимаюсь.

S>На Qt написана большая часть интерфейсов в машинах и медицинских приборов.

На Qt Quick наверное? А вот ты про Qt Quick что-то знаешь, кроме названия? Ты и интерфейсы в машины и мед приборы наверное, не пишешь.

Тё>>Redux это не фича языка.

S>Ты сам с собой что-ли разговариваешь? Тебе сказали, что это специфичное для мира JS средство.
Кто сказал, вася пупкин с мастурбированием на emplace_back ?

Тё>>Есть в Qt, но ты HFSM не знаешь и не используешь.

S>Ну раз ты так говоришь...
Это с твоих слов.

Тё>>Ты совсем не понимаешь отличие обычного отладчика от Redux Tools и xstate-inspect.

S>Я вообще понятия не имею что такое Redux Tools и xstate-inspect. Прямо и честно говорю.
А в гугле нашего сипипи-мастурбатора забанили, конечно.

Тё>>Базовый класс для всего — это антипаттерн. https://www.thoughtworks.com/insights/blog/composition-vs-inheritance-how-choose

S>Базовый класс для всего, чему требуются свойства, сигналы и слоты.
Ага, не лоб, так по лбу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.