SvelteKit 3 🔥 Горячее
SvelteKit 3.0 вышел как обновлённая версия официального фреймворка для Svelte, сохранив привычный интерфейс, но добавив больше типобезопасности, упрощённую конфигурацию и меньше лишнего кода. Миграция упрощена командой npx sv migrate sveltekit-3 --tasks all --confirm, которая автоматически переносит код и генерирует список оставшихся задач. Для новых проектов используется npx sv create my-new-app. Ключевые изменения: конфигурация перенесена в vite.config.ts, псевдоним $lib заменён на #lib в соответствии со стандартными субпакетными импортами Node.js, переменные окружения стали мощнее и проще в использовании, сервис-воркеры требуют меньше шаблонного кода, а обработка ошибок улучшена во всех слоях.
Удалённые функции (remote functions), обеспечивающие типобезопасное клиент-серверное взаимодействие, пока не готовы к стабильному использованию — они требуют экспериментального флага и Async Svelte с await-выражениями, но являются приоритетом разработки. В блоге также напоминается о предстоящем Svelte Summit в Любляне, Словения, 19–20 ноября — событии, посвящённом 10-летию Svelte, где планируется не только технический обмен, но и праздничный торт.
Комментарии (125)
SvelteKit 3 улучшает DX и производительность, но остаются проблемы с реактивностью, привязкой данных и поддержкой LLM. Пользователи отмечают мгновенную загрузку страниц и небольшие размеры сборок — особенно с Wails, где бинарники <20 МБ, что экономит ресурсы по сравнению с Electron. Миграция из React, Next.js, Nuxt и Vue проходит без серьёзных проблем благодаря автоматическому мигратору и обратной совместимости. Основные недостатки: «getter trap» (потеря реактивности при забытом экспорте свойства) и тесная связь асинхронного получения данных с компонентами, усложняющая архитектуру. LLM‐модели (Claude, DeepSeek, Opus) успешно генерируют код для Svelte, но ранние версии испытывали трудности с различиями между Svelte 4 и 5 — потребовались специальные бенчмарки. Файловая система роутинга с префиксом «+page.svelte» в глубоко вложенных папках воспринимается как неудобная и запутанная для новых пользователей. Отсутствие Shadow DOM в Svelte снижает перерасчёты и потенциально улучшает память, но точные цифры не подтверждены независимыми тестами. Встроенные стора позволяют двухстороннее связывание без колбэков, упрощая работу с формами и состоянием. Частые breaking changes в новых версиях Svelte вызывают опасения по поводу долгосрочной стабильности. Вопрос о едином стеке для фронтенда и бэкенда открыт, но SvelteKit хорошо сочетается с Go‐бэкендом через Wails, обеспечивая единый язык разработки UI. Удалённые функции (remote functions) ещё не готовы к продакшн и находятся в ожидании реализации.
Hister: A private search engine for the pages you visit and the files you keep 🔥 Горячее 💬 Длинная дискуссия
Hister — это личный поисковый движок, который индексирует полное содержимое посещаемых веб-страниц и локальных файлов, позволяя находить информацию через веб-интерфейс, терминал или AI-ассистента, подключённого через MCP. Он работает полностью локально или на вашей инфраструктуре, не требуя телеметрии или облачных сервисов по умолчанию. Установка проста: скачайте бинарник, запустите hister listen, установите расширение для Firefox или Chrome, и после посещения страницы с включённым расширением вы сможете сразу искать по её содержимому.
Ключевые возможности включают полнотекстовый поиск, автоматическую индексацию через браузерное расширение, мощный язык запросов (фразовые поиски, подстановочные знаки, отрицание, фильтры по полям), опциональный семантический поиск через пользовательский эмбеддинг-эндпоинт, импорт истории браузера и локальных директорий, а также поддержку нескольких пользователей на одном сервере. Hister распространяется под лицензией AGPLv3, написан на Go с веб-интерфейсом на Vite и Svelte, и доступен через Homebrew, Docker и Nix. Исходный код открыт, сообщество активное в IRC и Discord, а вкладки принимаются через GitHub с соблюдением правил из CONTRIBUTING.md.
Комментарии (170)
Hister эффективно решает проблему поиска по истории браузера и локальным файлам, особенно для устаревших или удалённых страниц, сохраняя офлайн-превью контента. Интеграция с Obsidian, MCP и AI-ассистентами повышает его полезность для поиска по личным знаниям и голосовыми/текстовыми интерфейсами. Чем больше индекс, тем чаще он помогает находить забытые ссылки. Индексация работает надёжно с браузерной истории, закладок и файловой системы, но требует настройки правил исключения для избежания мусора. Hister работает локально и может быть развернут в tailnet (например, Tailscale) для синхронизации между Windows, macOS и Linux. Пользователи отмечают, что локальные LLM для классификации, резюмирования и извлечения рецептов повышают ценность. Рекомендуется ручное добавление значимых страниц через расширение, а не автоматическая индексация всего. Альтернатива — сохранение страниц в PDF для контролируемого архива. Есть сомнения в безопасности бинарных файлов из непроверенных репозиториев. Синхронизация между устройствами вызывает путаницу из-за отсутствия чёткой документации. Интеграция с Linkwarden и Cherry для поиска по закладкам желаема, но не реализована. Hister превосходит устаревшую функцию Chrome 2008 года за счёт семантического поиска, версий и AI-поддержки. По сравнению с Zotero — лучше для повседневного поиска по истории, тогда как Zotero ориентирован на академическую работу. Индексация работает на уровне URL (включая HN и целевые ссылки), решая проблему индексации только текущей страницы.
Doing Rails Wrong 🔥 Горячее 💬 Длинная дискуссия
Диалог высмеивает современную тенденцию усложнять разработку на Rails, добавляя множество инструментов вроде Vite, React, TypeScript, Babel, PostCSS, Tailwind, ESLint, Prettier, Husky, Docker и Redis. Всё это оправдывается стремлением к «современности» и скорости, но приводит к громоздкой настройке.
В противовес этому демонстрируется простота «ванильного» Rails: один командой запускается мгновенно работающее приложение с быстрой загрузкой и формами. Ключевая идея — Rails уже содержит всё необходимое, а избыточные инструменты лишь создают сложность без реальной выгоды. Фраза «Просто используй Rails, блин!» резюмирует мысль: не усложняй там, где это не нужно.
Комментарии (205)
- Участники обсуждают растущую сложность современных веб-фреймворков, отмечая, что Rails предлагает более простой и "батарейками включенный" подход по сравнению с перегруженными инструментами JS-экосистемы.
- Многие выражают ностальгию по классическому Rails, критикуя такие новые решения, как Hotwire и Stimulus, за сложность освоения и недостаток документации, в то время как другие защищают их как "путь Rails".
- Поднимается тема чрезмерного усложнения проектов (over-engineering), особенно для небольших команд, где монолитные фреймворки (Rails, Django) часто продуктивнее разделения на фронтенд и бэкенд.
- JS-экосистема подвергается критике за постоянное "изобретение велосипедов", сложность инструментов и модульность, которая приводит к усталости от инструментария, хотя некоторые защищают её гибкость.
- Отмечается, что выбор инструментов должен определяться конкретными задачами проекта, а не модными тенденциями, и что проверенные временем технологии часто эффективнее для небольших и средних приложений.