Stop writing CLI validation. Parse it right the first time
- "строка" – ищет фразу целиком, без учёта регистра
- from:ник – посты конкретного автора
- lang:код – фильтр по языку (en, ru…)
- #тег – по хэштегу
- условие условие – логическое И
- условие OR условие – логическое ИЛИ
- ( ) – группировка
Комментарии (102)
- Спор о «парсинге, а не валидации»: кто-то пишет собственные проверки, кто-то берёт готовые библиотеки (Zod, Clap, argparse, docopt, yargs и др.).
- Rust/PowerShell/argparse хвалят за строгие типы и понятные ошибки; JS/TS-рантайм критикуют за лишние зависимости.
- Проблема: как сообщить сразу ВСЕ ошибки, а не падать на первой; как выдавать человекочитаемые сообщения.
- «Непредставимые состояния» хороши в ядре программы, но на границе ввода нужны гибкие структуры и recovery.
- CLI ≠ API: парсим только синтаксис, доменные ограничения уносят глубже; иначе получаем перегруженный интерфейс.
Linear sent me down a local-first rabbit hole 🔥 Горячее 💬 Длинная дискуссия
Начав использовать Linear, я углубился в «локально-ориентированные» приложения: клиент хранит полную БД, изменения сначала пишутся локально, а фоновый sync-рантайн рассылает их по WebSocket/GraphQL. Пользователь видит мгновенные обновления без сетевой задержки.
Проанализировав реверс-инжиниринг и доклады команды Linear, я понял: их sync-движок — это месяцы работы, чтобы решить офлайн-режим, конфликты, частичную синхронизацию, миграции схем и безопасность.
В 2025-м экосистема уже готова:
- Electric SQL — Postgres-синхронизация
- PowerSync — корпоративный уровень
- Jazz — «обновляешь локальный state — всё синхронизируется»
- Zero, Instant, Triplit, LiveStore — упрощают разработку
Jazz предлагает CoValues: схема на Zod + автоматическая репликация. Пример:
const Post = co.map({
title: z.string(),
comments: co.list(Comment)
});
Меняешь post.title — изменение мгновенно отражается у всех участников.
Комментарии (197)
- Участники обсуждают преимущества и недостатки подходов local-first (Zero, Electric, Jazz, CRDT, PouchDB, Turso и др.).
- Ключевые плюсы: мгновенный UX, офлайн-работа, упрощённая синхронизация через запросы (Zero) и отсутствие конфликтов (CRDT).
- Минусы: рост данных, проблемы разрешения конфликтов, сложность прав и миграций, ограниченная поддержка SSR-ценящих разработчиков.
- Некоторые считают, что SSR всё ещё важен для первой загрузки, но не решает офлайн/коллаборацию.
- Подводный камень: большинство инструментов заточены под веб, хотя мобильные сценарии офлайна выглядят более естественными.