artalog
4.23K subscribers
542 photos
40 videos
40 files
913 links
Развернутые ответы на вопросы в чатах, мысли от рабочих процессов.
Вопросы - @artalar.
Download Telegram
пару мин
Live stream started
Live stream finished (1 hour)
На выходных зарелизил третию версию Act - самой быстрой + маленькой + корректной библиотеки для реактивных стейтов. Напомню, ее можно использовать в React и Svelte без биндингов!

Это становится интересно, кажется, она достаточно стабильна.
Возможно, она будет референсом для минимальной имплементации реактивных стейтов и в других ЯП, всего сотня строк в исходниках позволяют. Я их еще подрефакторил и немного комментариев накинул. А @dzakh_dev начал делать порт на ReScript! Уже стоит создавать организацию с репами под разные ЯП?)

Кому интересно, алгоритм:

Подписчик - источник истины. Подписываемся на компьютед акт, он собирает все свои используемые зависимости и их состояния (зеленые стрелки).

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

Каждый мутируемый акт при его чтении сохраняет текущего подписчика - от которого чтение и идет (красные стрелки).

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

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

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

Как вы, возможно, заметили, все списки иммутабельные.

Каждая нотификация об апдейте мутируемого акта имеет версию, которая помогает кэшировать посещенные компьютеды.

Основным ограничением является оверхед на чтение компьютеда вне ракции. Поскольку мы можем иметь кэш посещений только во время нотификации, любой апдейт в одном графе делает невалидным кэш другого графа. Но это редкий случай в полностью реактивной системе, и сама инвалидация обходится дешево. Еще может быть редкая(!) проблема с не отпиской от не используемого ActValue (я это исправлю попозже), подробнее в самом конце доков.

Задавайте вопросы, если что-то не понятно, постараюсь поправить описание.
8🔥8🤩1
Live stream started
AMA
🤔1
Live stream finished (22 minutes)
artalog
Уверен что на эту фичу будет тренд в скором (тут не уверен) времени. Вопрос только кто сделает ее массово пригодной первым: реатом или другой фреймворк / либа?
Вот вам ещё поинт: описывая catch вы должны учитывать все возможные нижележащие ошибки. Ролбек же описывает только логику отката того кода где он описан.
🤔3🤡2
А вы знали что process.exit() возвращает never и этим может гарантировать наличие ваших энвов? 😉

Да, их придется импортитровать каждый раз из какого-то глобального файла констант. И это очень хорошо, так за ними проще следить.
👍20🔥5
Койкто (не я) делает новый фронтенд фреймворк и придумывает апишку для статических темплейтов, как вам такое? Поставьте смайличек плз.
👎97💩33🤔19👍6🤮3
https://learnxinyminutes.com/


Огромная подборка очень быстрых туториалов по разным технологиям и языкам программирования на разных языках (человеческих).
❤‍🔥18👍3🔥2
https://www.loom.com/share/878294970d8e48919c819f35d0cd0da4

https://www.val.town/

Новая платформа для простого и быстрого прототипирования - закинули код в инпут и получили бесплатную лямбду в облаке. Есть возможность ссылаться на другие лямбды, секреты (приватные энвы), запуск по расписанию!

R.I.P. runkit.com
🔥62👍2
О че нашел. Два года назад рисовал. OSS это вам не `npm publish` и ладно 🫠

А покидайте в дискашены годных статей как вкотиться в OSS, я уже равно таких не видел, мб в пузыре, интересно о чем сейчас пишут.
👍7🔥4
Я тоже хочу поиграть в эту игру.
А вот что бы вам совсем весело было.
👍7👎5
Forwarded from melikhov.dev
https://t.me/artalog/624

Фан-факт про JS, который вы, возможно не знали. В спеке JS не Integer, но есть абстрактная операция ToIntegerOrInfinity которая используется для приведения Number к целому числу. И работает она так, что просто отрезает всё, что находится за запятой — It converts argument to an integer representing its Number value with fractional part truncated, or to +∞ or -∞ when that Number value is infinite

Убедитесь сами, вот вам спецификация.
👍4😁4👎1
Люди не верят что я знаю лучше терсера… Ну вот вам примеры.
😁9🥴5