Продолжаю писать примеры CRDT для лекции о синхронизации структур данных в распределенных системах и дальнейшего включения этих возможностей в Metarhia.
Уже готовы каунтеры:
- G-Counter: Grow-only State-based
- PN-Counter: Positive-Negative State-based
- OP-Counter: Operation-based Counter
- AC-Counter: Accumulated Counter
- Δ-G-Counter: Delta-based Grow-only
- S-Counter: Schema-based Counter
И часть множеств готова:
- G-Set: Grow-only Set
- 2P-Set: Two-Phase Set
- LWW-Set: Last-Writer-Wins Set
- OR-Set: Observed-Remove Set
- PN-Set: Positive-Negative Set
Другие CRDT появятся тут в ближайшее время: https://github.com/HowProgrammingWorks/CRDT
Уже готовы каунтеры:
- G-Counter: Grow-only State-based
- PN-Counter: Positive-Negative State-based
- OP-Counter: Operation-based Counter
- AC-Counter: Accumulated Counter
- Δ-G-Counter: Delta-based Grow-only
- S-Counter: Schema-based Counter
И часть множеств готова:
- G-Set: Grow-only Set
- 2P-Set: Two-Phase Set
- LWW-Set: Last-Writer-Wins Set
- OR-Set: Observed-Remove Set
- PN-Set: Positive-Negative Set
Другие CRDT появятся тут в ближайшее время: https://github.com/HowProgrammingWorks/CRDT
❤6👍5🔥3🎉2
Вы хотите внедрить local-first в своих проектах? (выбираем что именно)
Anonymous Poll
33%
Да, доступность в оффлайне
24%
Да, синхронизацию данных
14%
Да, разрешение конфликтов
19%
Да, без задержек и крутилок
20%
Нет, это все мечты
41%
Не понимаю, что все это значит
💡 Новые примеры кода из курсов Метархии:
- Простой блокчейн со смартконтрактами (JavaScript + Node.js): https://github.com/HowProgrammingWorks/Blockchain
- Реализация CAS структур данных: https://github.com/HowProgrammingWorks/CAS
- Примеры использования Atomics: https://github.com/HowProgrammingWorks/Atomics
- CRDT структуры данных: https://github.com/HowProgrammingWorks/CRDT
👉 Курсы Метархии:
- Async 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
- Node.js 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2025.md
- Patterns 2025: https://nodeua.com/Patterns-2025.html
- Простой блокчейн со смартконтрактами (JavaScript + Node.js): https://github.com/HowProgrammingWorks/Blockchain
- Реализация CAS структур данных: https://github.com/HowProgrammingWorks/CAS
- Примеры использования Atomics: https://github.com/HowProgrammingWorks/Atomics
- CRDT структуры данных: https://github.com/HowProgrammingWorks/CRDT
👉 Курсы Метархии:
- Async 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
- Node.js 2025: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS-2025.md
- Patterns 2025: https://nodeua.com/Patterns-2025.html
❤10👍5🔥2🎉1
Как у вас с работой?
Anonymous Poll
10%
Я начинающий, еще не искал
7%
Я начинающий, не могу найти
12%
Я начинающий, уже работаю
27%
Я профессионал, проблем нет
26%
Я профессионал, стало сложнее
10%
Я профессионал, сижу без работы
4%
Я эксперт, проблем нет
2%
Я эксперт, сложно найти
4%
Я эксперт, мне работа не нужна
Комментарий под видео: а вот AI по этому поводу говорит... Как вы можете это объяснить? (вариант: как вы рассматриваете на этот счёт)
🤣23❤2🔥1
Вчера проводил лайвкодинг с Cursor 1.3.9 (claude-4-sonet, claude-3.5-sonet, gpt-4.1, o3, gemini-2.5-pro) для студентов курса по паттернам, Node.js и асинхронности. Показал, как правильно формулировать задачу для ИИ — воспринимать его как исполнителя, а не как волшебную коробку, которая все делает за вас. Больше часа писал техническое задание, а затем ИИ очень быстро все реализовал — но все идеи уже были в ТЗ. Я предоставил примеры кода из своих предыдущих разработок, описание задачи заняло 71 строку:
https://github.com/metarhia/metautil/blob/gsid-ai/lib/TASKS.md
После этого, с небольшими доработками в течение 10–15 минут, он сгенерировал вот эти 43 строки кода:
https://github.com/metarhia/metautil/blob/gsid-ai/lib/gsid.js а также много вспомогательного кода для анализа результатов, отчета по производительности и оптимизации, который я добавил в конец файла TASKS_md.
Некоторые материалы я публикую здесь, другие будут доступны только студентам. Скоро запишу видео со сравнением — что получается, если воспринимать ИИ как ассистента, и что выходит, когда человек не понимает задачу и не умеет управлять ИИ.
https://github.com/metarhia/metautil/blob/gsid-ai/lib/TASKS.md
После этого, с небольшими доработками в течение 10–15 минут, он сгенерировал вот эти 43 строки кода:
https://github.com/metarhia/metautil/blob/gsid-ai/lib/gsid.js а также много вспомогательного кода для анализа результатов, отчета по производительности и оптимизации, который я добавил в конец файла TASKS_md.
Некоторые материалы я публикую здесь, другие будут доступны только студентам. Скоро запишу видео со сравнением — что получается, если воспринимать ИИ как ассистента, и что выходит, когда человек не понимает задачу и не умеет управлять ИИ.
GitHub
metautil/lib/TASKS.md at gsid-ai · metarhia/metautil
Metarhia utilities 🧰. Contribute to metarhia/metautil development by creating an account on GitHub.
👍30🔥9❤2
🎫 Открыл Community подписку на Patreon для еженедельных стримов, семинаров, лайвкода, Q&A сессий, всяких материалов, что я выпускникам готовлю. Раньше она была, но последние два года я туда приглашал только всех, кто на курсы приходил и выпускников, каждую неделю 2 часа, мы уже ведем это 5 лет, там всегда интересно. Теперь $10 в месяц: https://www.patreon.com/tshemsedinov/membership
🔥7👍4❤2
CAS-контейнер это один из блоков, из которых мы соберем технологию для local-first (offline-first) разработки, вместе с CRDT и Websocket он обеспечит синхронизацию приложений между закладками браузера, между несколькими устройствами, между разными пользователями. Менторы курса Patterns делают пример фронтенда, я пишу бекенд и синхронизацию. Скоро мы объединим это вместе с PWA и web workers, OPFS и indexedDB как я писал тут https://t.me/metarhia/1904 а позже реализуем транспорт при помощи WebRTC, а целостность состояния будет обеспечивать Blockchain. Конечно, их использование не обязательно, это просто блоки, из которых можно будет собрать свое решение. Бизнес-логику можно будет писать как сервисы или как смарт-контракты на выбор. Даже разработка API будет рациональной, 80% функциональности можно делать без серверного API даже вообще не разрабатывая сервера, на автоматической синхронизации базы данных, но можно и свое API реализовать. Поставьте ❤️ если вы уловили, что мы хотим сделать, 👍 если частично, но интересно, 🤯 если совсем сложно понять. Все эти технологические блоки совсем скоро позволят писать фронтенд не в стиле простыни, где визуальные компоненты содержат работу с API через fetch, а бизнес-логика размазана по событиям на кнопочках (как в делали ваши деды на Delphi), но позволит делать чистую архитектуру и изолировать слои. Ни кто, конечно, не запретит писать лапшу, но сделать простое и красивое решение будет в разы проще. Что мы покажем на примере проекта.
👍57❤32🤯15
🚀 Вместе эти технологии формируют инфраструктуру для local-first приложений:
1️⃣ PWA (Progressive Web App)
Веб-приложения с пользовательским опытом, близким к нативному: офлайн-режим, установка, быстрое время загрузки. Решают проблемы плохой связи и медленной сети, сочетая преимущества веба и нативных приложений.
2️⃣ CRDT (Conflict-Free Replicated Data Types)
Структуры данных для автоматического разрешения конфликтов в распределённых системах. Решают проблемы синхронизации, параллельного редактирования и обеспечивают работу офлайн-приложений без потери или конфликтов данных.
3️⃣ CAS Containers (Compare-And-Swap)
Атомарный механизм одновременного доступа, который хранит записи базы данных с защитой через хеши или версии. Решает проблемы race conditions, конфликтов одновременных изменений, обеспечивает консистентность и оптимистичное управление параллельным доступом в распределённых БД.
4️⃣ IndexedDB (browser built-in database)
Встроенная в браузер база данных с API для транзакционного хранения структурированных данных на стороне клиента. Решает задачи офлайн-хранения, локальных запросов, кэширования и построения b-tree индексов.
5️⃣ OPFS (Origin Private File System)
Защищённая высокопроизводительная файловая система, доступная только веб-приложениям в рамках одного origin (источника). Решает задачи хранения крупных файлов и высокоскоростных файловых операций в вебе.
6️⃣ Blockchain (без майнинга)
Распределённый защищённый журнал записей для децентрализованной базы данных с неизменяемой историей. Решает задачи целостности и неизменности данных, прозрачности и доверия.
7️⃣ JavaScript Smart Contracts
Бизнес-логика, выполняемая на языке JavaScript в децентрализованных средах. Решает задачи автоматизации и доверия при изменении данных, автоматического подтверждения договорённостей и безопасного выполнения кода.
8️⃣ WebSocket
Протокол для двунаправленного обмена данными в реальном времени через одно TCP-соединение. Решает проблемы задержек и поддерживает интерактивные приложения, близкие к реальному времени.
9️⃣ WebRTC (Web Real-Time Communication)
Протокол для потоковой передачи мультимедиа и обмена данными напрямую между пользователями. Решает задачи прямого взаимодействия в реальном времени, низких задержек и децентрализации без промежуточных серверов.
🔟 Metaschema
Декларативный язык схем для моделирования, валидации и синхронизации данных. Решает проблемы несоответствия данных, эволюции и миграции схем, упрощает описание метаданных и работу со сложными структурами данных.
1️⃣ PWA (Progressive Web App)
Веб-приложения с пользовательским опытом, близким к нативному: офлайн-режим, установка, быстрое время загрузки. Решают проблемы плохой связи и медленной сети, сочетая преимущества веба и нативных приложений.
2️⃣ CRDT (Conflict-Free Replicated Data Types)
Структуры данных для автоматического разрешения конфликтов в распределённых системах. Решают проблемы синхронизации, параллельного редактирования и обеспечивают работу офлайн-приложений без потери или конфликтов данных.
3️⃣ CAS Containers (Compare-And-Swap)
Атомарный механизм одновременного доступа, который хранит записи базы данных с защитой через хеши или версии. Решает проблемы race conditions, конфликтов одновременных изменений, обеспечивает консистентность и оптимистичное управление параллельным доступом в распределённых БД.
4️⃣ IndexedDB (browser built-in database)
Встроенная в браузер база данных с API для транзакционного хранения структурированных данных на стороне клиента. Решает задачи офлайн-хранения, локальных запросов, кэширования и построения b-tree индексов.
5️⃣ OPFS (Origin Private File System)
Защищённая высокопроизводительная файловая система, доступная только веб-приложениям в рамках одного origin (источника). Решает задачи хранения крупных файлов и высокоскоростных файловых операций в вебе.
6️⃣ Blockchain (без майнинга)
Распределённый защищённый журнал записей для децентрализованной базы данных с неизменяемой историей. Решает задачи целостности и неизменности данных, прозрачности и доверия.
7️⃣ JavaScript Smart Contracts
Бизнес-логика, выполняемая на языке JavaScript в децентрализованных средах. Решает задачи автоматизации и доверия при изменении данных, автоматического подтверждения договорённостей и безопасного выполнения кода.
8️⃣ WebSocket
Протокол для двунаправленного обмена данными в реальном времени через одно TCP-соединение. Решает проблемы задержек и поддерживает интерактивные приложения, близкие к реальному времени.
9️⃣ WebRTC (Web Real-Time Communication)
Протокол для потоковой передачи мультимедиа и обмена данными напрямую между пользователями. Решает задачи прямого взаимодействия в реальном времени, низких задержек и децентрализации без промежуточных серверов.
🔟 Metaschema
Декларативный язык схем для моделирования, валидации и синхронизации данных. Решает проблемы несоответствия данных, эволюции и миграции схем, упрощает описание метаданных и работу со сложными структурами данных.
🔥29⚡5🤯4❤2🎉1
«AI приложение, которое использует вас, как ассистента»
🤣30🤯3🔥1😁1🎉1💯1
🧘🏻♂️ AI приложение для медитации: нажал кнопку и оно медитирует за вас
😁22🤣12🔥4💯2🎉1
У меня, кстати уже собран пример чата с автоматической синхронизацией состояния для сообщений и реакций, с таким техстеком: CRDT + PWA (service worker), websocket, Node.js server (сохранение на файловую систему) + OPFS (сохранение в браузере на файловую систему), мы его на курсах и в сообществе и с выпускниками курсов разбирали. Но вам я его не покажу пока, потому, что вы хитрожопые и все хотите взять и использовать без понимая, держите вот вторую часть лекции по CRDT https://youtu.be/7HVvvtQdkRg
YouTube
🔀 CRDT: множества G-set, 2P-set, LWW-set, OR-set, PN-set на JavaScript
👉 Code example: https://github.com/HowProgrammingWorks/CRDT
👉 Курс «Асинхронное программирование»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
👉 Курс Node.js: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS…
👉 Курс «Асинхронное программирование»: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2025.md
👉 Курс Node.js: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/NodeJS…
😁19⚡3👍2🔥2❤1🤯1
Тут пример приложения с автоматической синхронизацией состояния между закладками, сервером и несколькими устройствами по принципу local-first, объяснение подхода и того, как в нем применяются Service worker, CRDT, OPFS и другие части технологии
https://youtu.be/jHgprxfOgBY
https://youtu.be/jHgprxfOgBY
YouTube
🧑💻 Lolcal-first приложение: PWA + CRDT + OPFS + Node.js + Websocket + Service Worker
👉 Community подписчики на Patreon получают все примеры кода из лекций, еженедельные стримы, семинары, лайвкод, Q&A сесси, дополнительные материалы, что я выпускникам готовлю. $10 в месяц: https://www.patreon.com/tshemsedinov/membership
👉 Курс «Асинхронное…
👉 Курс «Асинхронное…
❤10👍3🔥3🤣1