Skip to content

Instantly share code, notes, and snippets.

@octaharon
Last active November 20, 2023 06:50
Show Gist options
  • Save octaharon/e8a70cb0de08cf0c92a3ff053dbc9674 to your computer and use it in GitHub Desktop.
Save octaharon/e8a70cb0de08cf0c92a3ff053dbc9674 to your computer and use it in GitHub Desktop.
Раздаточные материалы к докладу VideoTech'23

Автоматное программирование и его применение в видеостриминге

Доклад

Google Slides

Автор

Александр Усков, tg: octaharon

Транспайлинг асинхронного кода в автоматный код

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

Содержательная часть находится в самом низу результирующего листинга, выше идет встроенный код babel, вас же интересует функция preload

Permalink: https://babeljs.io/repl#?browsers=defaults%2C%20not%20ie%2011%2C%20not%20ie_mob%2011&build=&builtIns=false&corejs=3.21&spec=false&loose=false&code_lz=FAAhGMHsDsGcBcQAcBOBTANpAhgExALwgAUAlIQHwgDeoYIAlgGYkD6qmOu568Arimgh26LHgDcwOmBGc8hENDQB3EAAUUkALYNYaYtlgBPaOBLpYkDADc0AGhDoAVmnDxyBKrXr1nr-MQAjKSSPgC-IVI-vAJCsmK4oSBhkkA&debug=false&forceAllTransforms=true&modules=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=env%2Creact%2Ctypescript&prettier=true&targets=&version=7.22.19&externalPlugins=&assumptions=%7B%7D

Permalink: https://babeljs.io/repl#?browsers=defaults%2C%20not%20ie%2011%2C%20not%20ie_mob%2011&build=&builtIns=false&corejs=3.21&spec=false&loose=false&code_lz=FAAhGMHsDsGcBcQAcBOBTANpAhgExALwgAUAlIQHwgDeoYIAlgGYkD6qmOu568Arimgh26LHgDcwOmBGc8hENDQB3EAAUUkALYNYaYtlgBPaOBLpYkDADc0AGhDoAVmnDxyBKrXr1nr-MQAjKSSPgC-IVI-vAJCsmK4oSBhkkA&debug=false&forceAllTransforms=true&modules=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=env%2Creact%2Ctypescript&prettier=true&targets=&version=7.22.19&externalPlugins=&assumptions=%7B%7D](https://babeljs.io/repl#?browsers=defaults%2C%20not%20ie%2011%2C%20not%20ie_mob%2011&build=&builtIns=false&corejs=3.21&spec=false&loose=false&code_lz=FAAhGMHsDsGcBcQAcBOBTANpAhgExALwgAUAlIQHwgDeoYIAlgGYkD6qmOu568Arimgh26LHgDcwOmBGc8hENDQB3EAAUUkALYNYaYtlgBPaOBLpYkDADc0AGhDoAVmnDxyBKrXr1YGNGhIxACCACIAaqwAwsFRABIAoqwAKgCSALIJAPIAqsmkAHTwABZo0MRklDTSPoywyQxaaJB8iETwKHxokrX0zq7wxEqqGnK4DU0t8AkAHkgM6LjEAAYcYvjwjWgoIAAk1GGRMfFJaZm5yQC-IGhzC2i4y6SkPbWXL1K9TJA7xFBwiAwDGgAGsQJAWAhsPA0ORvL1GCxiLoJs1Wjw0PxBJIaj4OkZqgjfMoGPBwMUSEDQQUofxYHDcQjwIY0CAwqwAEIAGSyUQA0qwAMrJYLJHKCgo5AByqTSwS5qQAWglQgAuQlE2r_BAgPDhBgqbYKbDKbCk5CiLhc4Eg4hUkEfTW1AD0zotY2toJAgCYQQCsIIABEEAvCC-wBCIIo-BgMCBfYBBEEA3CCADhAQDH_YAGEEAjCCAPhAQ6m4-pLXhUVNZvNFoyicwSABCPUG5TbBlO3pYADmLe2BVbxAA5ABtYK4DlYcAggC63Yc3dG6yLrRL91wDgQkCQICwK-7jqbPl4Amgr23l0-28caEsNn01F1uH1hpQDntIHeB6bu-x5beH7AR6J12ZZIpYhthQRtNXtGl4GhPhYAUdluV5AVhVFcUCgSAAlNCsjQl9m0gNsO2An4e37QdhzHCcQG7NYuAo4Ct16H9P0Zfo3CGFQQClSB4AAMRaaBcAHKJ0GhBhbB7aj5AAIzIkAmDNfxcE3einw-Go3yEWR1leS5JCAA&debug=false&forceAllTransforms=true&modules=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=env%2Creact%2Ctypescript&prettier=true&targets=&version=7.22.19&externalPlugins=&assumptions=%7B%7D)

Lite-FSM

Данная библиотека позволяет использовать автоматное управление состоянием совместно с React

https://www.npmjs.com/package/lite-fsm

Yantrix

Студенческий проект по разработке DSL-фреймворка для агностического low-code автоматного программирования

https://github.com/tfcp68/yantrix

Дополнительное чтение

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment