Logux Redux и Logux Vuex мы будем поддерживать некоторое время, но главный сценарий использования Логакса на клиенте, брать готовые CRDT-хранилища на базе Logux State.
Начинаем трансляцию о Логаксе и моём новом стейт-менеджере Logux State.
Посмотреть через Твич: twitch.tv/kirjs
Присоединиться к разговору и задать вопросы через Google Meet: meet.google.com/bdk-davb-ibi
Посмотреть через Твич: twitch.tv/kirjs
Присоединиться к разговору и задать вопросы через Google Meet: meet.google.com/bdk-davb-ibi
Запись недавнего стрима про отличия Logux State от других стейт-менеджеров и организации Логакса
https://www.youtube.com/watch?v=Igihutq9pJ4
https://www.youtube.com/watch?v=Igihutq9pJ4
Forwarded from kamyshev.code
Самое главное, что я вынес из курса про проектирования распределенных систем — это очень сложно.
Вот классный чек-лист, которые поможет понять возможные проблемы — Распределенные системы: что может пойти не так
#проектирование
Вот классный чек-лист, которые поможет понять возможные проблемы — Распределенные системы: что может пойти не так
#проектирование
eax.me
Распределенные системы: что может пойти не так | Записки программиста
Большинство современных приложений представляют собой распределенные системы. Допустим, ваша компания делает «просто» приложение для мобильных устройств. Но пом
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел Logux Core 0.7.1 с исправлением переподключения.
В веб-сокетах, если сервер упал, клиенты должны переподключаться через случайные промежутки времени. Иначе она снова положат сервер подключившись в одно мгновение, так как подключение часто сложная операция (на графике такую ошибку делает Rails 6 в ActionCable).
Владимир Деменьтев из AnyCable обнаружил, что время переподключения Логакса недостаточно размазанное по времени.
https://twitter.com/any_cable/status/1417420054354972683
Мы это исправили алгоритм, чтобы распределение не съезжало в 3 колонки (как на видео).
https://github.com/logux/core/commit/e0fbb276cff5d8fba20c7a7a7865cb9203135315
В веб-сокетах, если сервер упал, клиенты должны переподключаться через случайные промежутки времени. Иначе она снова положат сервер подключившись в одно мгновение, так как подключение часто сложная операция (на графике такую ошибку делает Rails 6 в ActionCable).
Владимир Деменьтев из AnyCable обнаружил, что время переподключения Логакса недостаточно размазанное по времени.
https://twitter.com/any_cable/status/1417420054354972683
Мы это исправили алгоритм, чтобы распределение не съезжало в 3 колонки (как на видео).
https://github.com/logux/core/commit/e0fbb276cff5d8fba20c7a7a7865cb9203135315
Выпустили большой релиз стейт-менеджера Nano Stores 0.4 — миниалистичного (172 байта) и созданного для переноса логика из шаблонов в сторы.
https://github.com/nanostores/nanostores
В новой версии:
1. Вынесли роутер и localStorage-сторы в отдельные проекты
https://github.com/nanostores/router
https://github.com/nanostores/persistent
(Конечно, роутер должен быть в сторах, а не, например, в JSX).
2. В новой версии Nano Stores научились работать с React Native. В localStorage-стор добавили возможность сменить localStorage на другие постоянные хранилища.
3. Добавил функции update() и updateKey(), чтобы атомарно менять значение стора на основе его текущего значения.
Обратите внимание, что это функция, а не метод — стейт-менеджер стоится на идеи агрессивного три-шейкинга всего что не нужно в конкретном проекте.
https://github.com/nanostores/nanostores
В новой версии:
1. Вынесли роутер и localStorage-сторы в отдельные проекты
https://github.com/nanostores/router
https://github.com/nanostores/persistent
(Конечно, роутер должен быть в сторах, а не, например, в JSX).
2. В новой версии Nano Stores научились работать с React Native. В localStorage-стор добавили возможность сменить localStorage на другие постоянные хранилища.
3. Добавил функции update() и updateKey(), чтобы атомарно менять значение стора на основе его текущего значения.
Обратите внимание, что это функция, а не метод — стейт-менеджер стоится на идеи агрессивного три-шейкинга всего что не нужно в конкретном проекте.
В Nano Stores 0.4 много пришло из Effector.js.
— Добавили effect() и startEffect() для отметки асинхронных эффектов в сторе. С их помощью легче писать тесты — можно вызвать await allEffects(), чтобы дождаться завершения всех асинхронных операций.
— Ребята из Effector.js изучили Nano Stores и указали на проблемы в реализации, спасибо им за это.
https://github.com/nanostores/nanostores/issues/30
1. В новой версии мы исправили проблемы подписок в середине событий.
2. Diamond problem решили пока перенести на плечи разработчиков, но будет думать
Когда мы исправляли проблемы подписки во время событий изменения, то размер проекта вырос с 152 байт до 172 байта.
Хоть мы и любим нано-библиотеки, но мы не фанатики и безопасность и функции для нас важнее десятка байт размера.
— Добавили effect() и startEffect() для отметки асинхронных эффектов в сторе. С их помощью легче писать тесты — можно вызвать await allEffects(), чтобы дождаться завершения всех асинхронных операций.
— Ребята из Effector.js изучили Nano Stores и указали на проблемы в реализации, спасибо им за это.
https://github.com/nanostores/nanostores/issues/30
1. В новой версии мы исправили проблемы подписок в середине событий.
2. Diamond problem решили пока перенести на плечи разработчиков, но будет думать
Когда мы исправляли проблемы подписки во время событий изменения, то размер проекта вырос с 152 байт до 172 байта.
Хоть мы и любим нано-библиотеки, но мы не фанатики и безопасность и функции для нас важнее десятка байт размера.
К новой версии Nano Stores, @euaaaio сделал крутой логотип для проекта.
Готической фрактуры буквы «S» отсылают к стилистике проекта — каллиграфии.
https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B0%D0%BA%D1%82%D1%83%D1%80%D0%B0
Имя релиза Nano Stores 0.4 — Zhang Xu, китайский каллиграф 8 века.
По легенде, когда он был пьян, он использовал свои волосы в качестве кисти, но после пробуждения он был поражен качеством этих работ и не смог повторить их в трезвом состоянии.
https://en.wikipedia.org/wiki/Zhang_Xu
Готической фрактуры буквы «S» отсылают к стилистике проекта — каллиграфии.
https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B0%D0%BA%D1%82%D1%83%D1%80%D0%B0
Имя релиза Nano Stores 0.4 — Zhang Xu, китайский каллиграф 8 века.
По легенде, когда он был пьян, он использовал свои волосы в качестве кисти, но после пробуждения он был поражен качеством этих работ и не смог повторить их в трезвом состоянии.
https://en.wikipedia.org/wiki/Zhang_Xu
Вышел Логакс Клиент 0.13. Мы перешли на Nano Stores 0.4 и обернули все асинхронные операции в эффекты.
Теперь можно заменить await delay(50) в тестах SyncMap на await allEffects() — это сделает тесты быстрее и стабильнее.
https://github.com/nanostores/nanostores#tests
Теперь можно заменить await delay(50) в тестах SyncMap на await allEffects() — это сделает тесты быстрее и стабильнее.
https://github.com/nanostores/nanostores#tests
Вышел Logux Client 0.13.1 — Фил Шафаржик исправил экспорт для Preact
https://github.com/logux/client/issues/75
https://github.com/logux/client/issues/75
Все репозитории Логакса перешли с Yarn 1 на pnpm. В документацию https://logux.io/ добавлены примеры на pnpm.
Хороший доклад от @valya_reads_issue, объясняющий наш переход на pnpm.
https://www.youtube.com/watch?v=RAFFHpjrwAs
Хороший доклад от @valya_reads_issue, объясняющий наш переход на pnpm.
https://www.youtube.com/watch?v=RAFFHpjrwAs
Выпустили Logux Core 0.7.3 — увеличили время ожидания ответа на пинг, чтобы исправить потерю соединения в фоновых вкладках Хрома.
Для снижения нагрузку на батарею, Хром можем замораживать фоновые вкладки — setInterval и setTimeout могут вызываться не чаще ража в минуту.
Мы увеличили таймаут, чтобы соединение не прерывалось.
https://github.com/logux/logux/issues/101
Для снижения нагрузку на батарею, Хром можем замораживать фоновые вкладки — setInterval и setTimeout могут вызываться не чаще ража в минуту.
Мы увеличили таймаут, чтобы соединение не прерывалось.
https://github.com/logux/logux/issues/101
Мы начали работать над хорошими примерами для Логакса.
https://github.com/logux/examples
Впереди документация и полировка примера.
https://github.com/logux/examples
Впереди документация и полировка примера.
Вышел Логакс Сервер 0.11.
Мы добавили сахар, чтобы легче создавать CRDT-разрешение конфликтов на сервере.
https://logux.io/node-api/#globals-addsyncmap
Все изменения.
https://github.com/logux/server/blob/main/CHANGELOG.md#011-five-pebbles=
Версия названа «Five Pebbles» в честь ИИ из очень необычной игры Rain World.
Мы добавили сахар, чтобы легче создавать CRDT-разрешение конфликтов на сервере.
https://logux.io/node-api/#globals-addsyncmap
Все изменения.
https://github.com/logux/server/blob/main/CHANGELOG.md#011-five-pebbles=
Версия названа «Five Pebbles» в честь ИИ из очень необычной игры Rain World.
Вышли Logux Core 0.8 и мажорные релизы других компонентов экосистемы.
В них мы убрали поддержку Node.js 12 и исправили мелкие ошибки синхронизации, который нашёл Тайлер Хан.
https://github.com/logux/core/pull/49
https://github.com/logux/core/pull/50
Новая версия Logux Core 0.8 названа Ա, в честь первой буквы армянского алфавита. Это выжарение благодарности за помощь беженцам из Украины, России и Беларуси.
На иллюстрации — каллиграфия Мартина Ванескеяна.
В них мы убрали поддержку Node.js 12 и исправили мелкие ошибки синхронизации, который нашёл Тайлер Хан.
https://github.com/logux/core/pull/49
https://github.com/logux/core/pull/50
Новая версия Logux Core 0.8 названа Ա, в честь первой буквы армянского алфавита. Это выжарение благодарности за помощь беженцам из Украины, России и Беларуси.
На иллюстрации — каллиграфия Мартина Ванескеяна.