Show HN: I built a free alternative to Adobe Acrobat PDF viewer 🔥 Горячее
embed-pdf-viewer — легковесный компонент для просмотра PDF, который встраивается в любой JS-проект без зависимостей.
- Установка:
npm i embed-pdf-viewer
- Использование:
import { EmbedPDF } from 'embed-pdf-viewer';
new EmbedPDF('#viewer', { url: 'file.pdf' });
- Фичи: масштаб, пагинация, печать, полноэкранный режим, темы.
- Лицензия: MIT.
Комментарии (78)
- Проект использует PDFium (движок Google/Foxit), а не собственный парсер.
- Основная цель — лёгкая интеграция в сайты и более плавный зум/рендеринг, чем у pdf.js.
- В Chrome аннотации работают, в Firefox и Safari частично: ломается выделение текста, закладки, печать.
- Планы монетизации: бесплатный MIT-вьювер + платные enterprise-фичи (хостинг, аналитика, контроль доступа).
- Разработка идёт 7 месяцев; roadmap включает подписание (PKCS#11/12) и, возможно, нативные приложения.
Cursed Knowledge 🔥 Горячее
- Zitadel: JS-движок не поддерживает именованные группы в regex.
- Entra: PKCE есть, но не указан в OpenID-доке → клиенты думают, что нет.
- EXIF: размеры в метаданных могут не совпадать с реальными.
- YAML: пробелы ведут себя неочевидно.
- Windows: скрытые файлы нельзя открыть флагом
"w"
; опция SMBhide dot files
усложняет жизнь. - Git: автопреобразование LF ↔ CRLF ломает bash-скрипты.
- Cloudflare Workers:
fetch
по умолчанию используетhttp
, даже если указанhttps
. - Android/iOS: без разрешения на геолокацию GPS-данные могут тихо удаляться из фото.
- PostgreSQL NOTIFY: работает в транзакции → WAL растёт каждые 5 с при использовании socket.io-адаптера.
- npm-скрипты: каждый запрос к реестру → плохой health-check.
- JS-«пакетный» спамер: добавляет 50 лишних зависимостей «для обратной совместимости».
- bcrypt: учитывает только первые 72 байта пароля.
- JS Date: годы и дни считаются с 1, месяцы — с 0.
- ESM ↔ CJS: до Node 20.8 смешанный импорт мог вызвать segfault.
- PostgreSQL: максимум 65 535 параметров — большие bulk-insert ломаются.
- Clipboard API и др. работают только в HTTPS/localhost.
- TypeORM:
.remove()
удаляет полеid
из переданного объекта.
Комментарии (131)
- Пользователи восторженно приняли идею «cursed knowledge» — каталога кошмарных нюансов, сопровождаемого коммитом-фиксом.
- Обсуждали PostgreSQL-лимит в 65 k placeholder’ов, причины появления 50 лишних npm-пакетов, скрытые потоки NTFS/ADS и «призрачные» файлы macOS.
- Упомянули, что bcrypt обрезает пароль до 72 байт, Cloudflare Workers могут игнорировать https, EXIF-даты в Immich — постоянная головная боль.
- Поделились личным опытом: неразрывные пробелы, case-insensitive имена в macOS, Java-классы в Oracle, «магия» YAML-парсеров.
- Кто-то предложил превратить подборку в репозиторий-«Awesome Cursed», другие подчеркнули пользу такого «терапевтического» лога ошибок.
Cursor CLI 🔥 Горячее 💬 Длинная дискуссия
- Установка:
npm i -g cursor-cli
- Команды:
cursor diff
,cursor commit
,cursor review
,cursor chat
- Где работает: VS Code, JetBrains, Android Studio, Ghostty, Warp, Bash
Функции
- Прямые правки кода в терминале
- Реальное управление агентом
- Правила через
.cursorrules
,AGENTS.md
, MCP
Плюсы
- Последние модели Anthropic, OpenAI, Gemini
- Интеграция в любой IDE
- Скрипты и автоматизация
Комментарии (248)
- Пользователи обсуждают внедрение единого стандарта AGENT.md вместо множества разных файлов.
- CLI-агенты (Claude Code, Cursor CLI и др.) вызывают восторг: удобно держать в фоне, «чувствуешь себя хакером», но UI-IDE теряет значение.
- Критика: непонятно, зачем платить за Cursor, если тот же функционал уже включён в подписку Anthropic/OpenAI; не хватает обратной связи, MCP, hooks и локальных моделей.
- Сторонники Cursor верят в его будущую экосистему (CLI + IDE + GitHub-интеграции) и низкие издержки переключения между моделями.
- Главный вопрос безопасности: доверять ли LLM полный доступ к файловой системе и устанавливать скрипты через curl | bash.