Show HN: I Built a XSLT Blog Framework
- Сделал блог-фреймворк на XSLT: демо, код.
- Зачем? Для себя. После пары «вайб-промптов» понял, что 20-летний стандарт покрывает всё, что надо.
- Хочу: писать чистый HTML, без WYSIWYG и Markdown; RSS «из коробки»; единый шаблон на все посты; немного JS для картинок и тем.
- XSLT = один файл-шаблон, XML-контент. Браузер сам превращает XML в HTML. RSS тоже XML, поэтому тот же индекс используется и для ленты.
- Публикация: создал пост, добавил в
index.xml
, залил — всё. Без сборок и бэкенда.
Комментарии (45)
- Участники вспомнили XSLT как способ превращать XML в HTML прямо в браузере, но большинство считают технологию устаревшей и медленной.
- Предложено заменить RSS на Atom из-за более чистого формата дат и лучшей поддержки.
- Некоторые используют XSLT на сервере (PHP, SaxonJS), где он работает быстро и безопасно.
- Браузеры удаляют XSLT из-за рисков безопасности и низкого спроса; IBM предложила свой JIT-движок, но его вряд ли примут.
- SEO и кэширование вызывают сомнения: динамически собранные страницы могут быть плохо проиндексированы.
How Figma’s multiplayer technology works (2019)
Как работает технология «мультиплеера» в Figma
Основная идея
Figma позволяет десяткам дизайнеров одновременно работать над одним файлом без конфликтов. Это достигается за счёт оперативной синхронизации изменений и разрешения конфликтов на лету.
Архитектура
- WebSocket-соединение — каждый клиент держит постоянное соединение с сервером.
- Операционные преобразования (OT) — любое действие (перемещение слоя, изменение текста) описывается как операция. Сервер применяет её и рассылает всем клиентам.
- Дельты и патчи — вместо полной передачи файла отправляются только изменения, что экономит трафик и ускоряет работу.
Разрешение конфликтов
Если два пользователя одновременно изменяют один и тот же объект, алгоритм OT выстраивает правильный порядок операций, сохраняя логическую целостность. Пользователи видят результат почти мгновенно.
Производительность
- Дерево объектов хранится в памяти браузера и обновляется по мере поступления операций.
- Сжатие и батчинг — несколько операций объединяются в один пакет, чтобы снизить нагрузку на сеть.
- Кеширование — сервер хранит последние состояния файлов, чтобы быстро «догнать» клиента, который только подключился.
Безопасность и надёжность
- Все операции логируются и могут быть отменены (undo/redo).
- Данные шифруются при передаче и хранятся в зашифрованном виде.
- Регулярные снепшоты защищают от потери данных при сбоях.
Итог
Технология «мультиплеера» превращает Figma в «Google Docs для дизайна», где коллаборация происходит без конфликтов и задержек.
Комментарии (53)
- Участники делятся ссылками на материалы Linear, Automerge, Croquet и другие решения для реал-тайм синхронизации.
- Обсуждают, насколько сложной остаётся задача и какие новые инструменты (Liveblocks, Electric SQL, Rocicorp Zero) делают её доступнее.
- Спорят о терминологии «multiplayer» и о том, насколько часто пользователи действительно одновременно редактируют дизайн.
- Отмечают, что Figma пошла на радикальные меры: собственный WebGL-рендерер и протокол, отказавшись от готовых библиотек.
- Шутят о случайном переключении сайта из тёмной в светлую тему при прокрутке и о «figma balls».