The beauty of a text only webpage 💬 Длинная дискуссия
Чар простой текстовой страницы
Открывая страницу из одного текста, я чувствую облегчение: нет баннеров куки, рекламы, всплывающих подписок и автозапуска видео.
Только чистый, быстрый, читаемый текст.
Такой контент можно скопировать в письмо, отправить в ChatGPT, распечатать или сохранить на Kindle — он везде работает.
Ссылка открывается мгновенно без CDN и предзагрузок.
Хостинг стоит копейки, сайт живёт даже на Raspberry Pi.
Читая, легко переключаться между беглым просмотром и вдумчивым чтением, не чувствуя вины за «потерянное» время.
Спасибо всем, кто публикует текст без лишнего.
Вы жертвуете «вовлечённостью», но дарите интернету простоту и покой.
Мне это безумно нравится.
Комментарии (156)
- Участники мечтают о браузере без JS, где только HTML и выбранная пользователем CSS-тема.
- Хвалят сайты вроде plaintextsports.com и berkshirehathaway.com за минимализм, читаемость и отсутствие трекеров.
- Спорят о шрифтах: кто-то любит моноширинные «под печатную машинку», кто-то просит sans-serif и контрастные цвета.
- Соглашаются, что картинки допустимы, если служат тексту, а главный враг — избыточный JS, баннеры и медленные фреймворки.
- Вспоминают лёгкие новостные «lite»-версии CNN/NPR и альтернативные протоколы вроде Gemini как примеры «текстового» интернета.
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) и, возможно, нативные приложения.
Chris Simpkins, creator of Hack font, has died
Хилари Палмен: «К сожалению, Кристофер Симпкинс умер…»
Для работы веб-приложения Mastodon включите JavaScript или установите нативное приложение.
Комментарии (9)
- Сообщество оплакивает кончину Криса Саури, создателя шрифта Hack и соавтора Google Sans Code.
- Пользователи вспоминают его тёплую переписку и благодарят за красивый, удобный моноширинный шрифт.
- Многие называют Hack «родным» для терминала и обещают продолжать его использовать в память о нём.
- Упомянуты альтернативы: Google Sans Code и патчи Nerd Font для обеих гарнитур.
Adult sites are stashing exploit code inside svg files
- Суть атаки: порносайты внедряют вредоносный код в файлы
.svg
, которые при клике заставляют браузер ставить лайк заданным постам в Facebook без ведома пользователя. - Техника: SVG-файлы содержат скрытый JavaScript, зашифрованный через «JSFuck». После раскодировки загружается цепочка скриптов, завершающаяся трояном Trojan.JS.Likejack, который кликает «Like».
- Условие: пользователь должен быть авторизован в Facebook в этом же браузере.
- Масштаб: десятки сайтов на WordPress используют схему; Facebook блокирует связанные аккаунты.
- История: злоупотребления SVG-файлами фиксировались раньше — эксплойты Roundcube в 2023 г. и фишинг Microsoft в июне 2025 г.
Комментарии (71)
- Вредоносные SVG-файлы на порносайтах заставляют браузер ставить «лайк» на Facebook без ведома пользователя.
- Это работает через обычный CSRF: SVG, загруженный в iframe или открытый в новой вкладке, выполняет JavaScript, который вызывает Facebook-API.
- Если SVG вставлен как картинка (
<img src=file.svg>
), скрипты не запускаются; уязвимость появляется только при «полном» показе SVG. - Некоторые считают, что проблема не в SVG, а в отсутствии защиты от CSRF со стороны Facebook.
- Пользователи советуют блокировать JS по умолчанию (NoScript/uBlock), использовать режим инкогнито или отдельные контейнеры для Facebook.
Bezier-rs – algorithms for Bézier segments and shapes
Bezier-rs — интерактивная документация
Для работы необходим JavaScript
Комментарии (40)
- Пользователи высоко оценили библиотеку Offsetting и её Rust-переписанный модуль булевых операций над кривыми.
- Обсуждаются возможности расширения: неравномерное обводное расширение, поддержка рациональных Безье для CAD, генерация равноудалённых точек, маршрутизация рёбер в диаграммах.
- Некоторые ищут обучающие ресурсы по математике для реализации подобных алгоритмов; рекомендованы видео Freya Holmér.
- Поднят вопрос о создании Python-биндингов и использовании WASM для работы в браузере.
Ultrathin business card runs a fluid simulation 🔥 Горячее 💬 Длинная дискуссия
flip-card
Проект Nicholas-L-Johnson на GitHub: публичный репозиторий, демонстрирующий карточку, переворачивающуюся при наведении.
- Технологии: HTML, CSS, возможно JavaScript.
- Функция: плавный 3D-переворот с лицевой стороны на обратную.
- Применение: карточки товаров, профили, интерактивные элементы UI.
Клонировать:
git clone https://github.com/Nicholas-L-Johnson/flip-card.git
Комментарии (214)
- Проект — ультратонкая электронная визитка с симуляцией жидкости; вызывает восторг, но кажется дорогой для раздачи.
- Ключевые плюсы: реалистичное движение «воды», простая и дешевая конструкция, легко отлаживать.
- Минусы: можно намочить одежду, толщина USB-C + ПКБ выглядит «толстой» для визитки, шрифт на обороте раздражает многих.
- Отмечены изюминки: USB-C на краю платы без дополнительных деталей, прошивка на Rust с плавающей точкой, аккумулятор почти кредитной толщины.
- Люди хотят больше деталей о сборке, просят sans-serif шрифт и чуть более игривый дизайн.
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», другие подчеркнули пользу такого «терапевтического» лога ошибок.
Live: GPT-5
-
Introducing GPT-5 — YouTube
-
Пропустить навигацию
-
Поиск / Поиск голосом
-
Войти
-
Смотреть позже • Поделиться • Копировать ссылку • Покупки
-
Нажмите, чтобы включить звук • 2x
-
Если воспроизведение не началось, перезапустите устройство.
-
Вы вышли из аккаунта. Просмотры могут влиять на рекомендации на ТВ. Чтобы избежать этого, отмените и войдите на YouTube на компьютере.
-
Отмена • Подтвердить
-
37:35 • 7 августа, 10:00 GMT-7
-
Далее • Прямой эфир запланирован • Играть
Introducing GPT-5
- OpenAI • Подтверждено • 1,65 млн подписчиков
- Подписаться • Подписаны
- 6 522 ожидают • Запланировано на 7 авг. 2025
- 1K • Поделиться • Скачать • Сохранить
- Комментарии отключены
Описание
-
Introducing GPT-5
-
Присоединяйтесь к Сэму Альтману, Грегу Брокману, Себастьену Бюбеку, Марку Чену, Янну Дюбуа, Брайану Фиоке, Ади Ганешу, Оливеру Годеману, Саачи Джайн, Кристине Каплан, Тине Ким, Элейн Я Ле, Фелипе Миллону, Мишель Покрасс, Якубу Пахоцки, Максу Шварцеру, Ренни Сонгу, Жожену Вану — они представят и продемонстрируют GPT‑5.
-
OpenAI: Видео • О канале • Twitter • LinkedIn
Комментарии (92)
- Участники обсуждают качество ИИ для повседневного программирования: один отмечает сильное превосходство Anthropic (Sonnet 3.7/4 и Claude Code), причём в Cursor опыт хуже, чем в самом Claude Code, и OpenAI‑модели он почти не использует.
- Есть надежда, что GPT‑5 сократит отставание OpenAI, хотя мнения пользователей сильно расходятся.
- Другой комментатор ожидает, что грядущие анонсы покажут радикальное влияние на рынок: веб‑ и JS/TS‑разработчики могут стать частично или полностью невостребованными.
- При этом подчёркивается, что речь ещё не об «AGI» — максимум о ~10% от обещанных возможностей AGI.
- Отмечается ночной «слив», указывающий на фокус на кодинге; предполагается, что для названия «GPT‑5» OpenAI должен предложить существенное преимущество над Anthropic.
Gleam v1.12
-
Исправления
- Уточнено сообщение об ошибке с некорректной терминологией. (Louis Pilfold)
- JS: устранён сбой при использовании echo в модуле с функцией process. (Peter Saxton)
- Форматер: не переносит комментарий перед assert за него; корректно форматирует сообщения после echo/panic/todo/assert/let assert с комментарием перед ними; компилятор не генерирует неверный код для assert с пайпами на JS. (Giacomo Cavalieri)
-
Форматирование битовых массивов
- Трейлинг-Запятая управляет разбиением: с запятой — много строк; без — в одну строку.
- Если несколько сегментов на строке и убрана завершающая запятая, форматер сохраняет сегменты по одному на строку. (Giacomo Cavalieri)
-
Компилятор и генерация кода
- echo поддерживает пользовательское сообщение: echo 11 as "lucky number" печатает контекст и значение в stderr. (Giacomo Cavalieri)
- В сгенерированном JS doc-комментарии превращаются в JSDoc. (Giacomo Cavalieri)
- Уменьшен размер кода case на JS. (Surya Rose)
- Удаление неиспользуемого кода на этапе генерации (usage-based DCE). (Louis Pilfold)
- Улучшена поддержка echo для списков символов, ошибок и циклических ссылок JS. (Louis Pilfold)
- Улучшен внешний вид ошибок и предупреждений: контекстные метки выделяются иначе, чем источник проблемы. (Giacomo Cavalieri)
- Подсказка при импорте с точкой вместо слеша, с примерами корректного синтаксиса. (Zij-IT)
- Предупреждение при затенении импортированного имени верхнеуровневой константой/функцией. (Aayush Tripathi)
- Улучшено сообщение об неизвестной переменной, если, вероятно, имелась в виду проигнорированная (_x → x), с подсказкой. (Giacomo Cavalieri)
- Оптимизирован матчинг-паттернов на JS.
Комментарии (80)
- Обсуждение посвящено релизу Gleam: многие хвалят дизайн языка, читаемость, статическую типизацию и паттерн-матчинг; приводят пример кода и делятся позитивным опытом использования в проектах.
- Есть ссылки на пост о версии 1.12.0 и доклад на YouTube; некоторые ждут дальнейшего созревания экосистемы и возможности шаринга кода между фронтендом и бэкендом.
- Критика: отсутствие интерфейсов/тайпклассов и оператора композиции; кому-то синтаксис и «Error -> Error» кажутся неэлегантными; snake_case непривычен после TypeScript.
- В ответ отмечают осознанную простоту языка и официальную позицию Gleam по отказу от тайпклассов.
- Существенная часть треда уходит в спор о «идеологичном» футере сайта (инклюзивность, антинацистская позиция, права транс-людей): часть считает это лишним, другие — важным для безопасности и качества сообщества.
- Подчеркивается, что Gleam — это не только язык, но и сообщество с явным кодексом поведения; отсутствие позиции тоже является позицией.
- Некоторые участники призывают вернуться к техническим темам релиза, чтобы не повторять одни и те же дискуссии.
Комментарии (73)
- Обсуждение посвящено веб-инструменту в стиле TB-303: пользователи хвалят звук, музыкальность и авто-генерацию совместимых полиритмов для баса, лида и дрона, отмечают ностальгию по ReBirth и 90-м.
- Автор сообщает, что проект старый и незавершённый; добавил полифилл для cancelAndHoldAtTime в Firefox и выделил часть таймкипинга в библиотеку beatstepper.
- Многие просят открытый исходный код, локальный запуск, экспорт MIDI/стемов, визуализацию паттернов (пиано-ролл), сохранение/загрузку, MIDI синхронизацию и транспорт, а также продолжение воспроизведения при Regenerate.
- Есть баг-репорты: не работало в Firefox до полифилла, в Chromium после Stop остаётся тихий хвост/эхо, иногда нужно жать Stop несколько раз.
- Пользователи делятся альтернативами и вдохновляющими ссылками: Endless Acid Banger, roland50.studio, музыка Vitling, ивенты Acid August.
- Инструмент вызывает желание вернуться к электронной музыке; звучание напоминает Frank Klepacki/Red Alert 2, Dynamix на C64; просят добавить 909-кит.
- Автор кратко описал генерацию: ноты из выбранной гаммы/октавы, деление паттерна на чанки с вероятностным копированием/обновлением и настройкой повторов; сообщество хочет статью о методе.
Rethinking DOM from first principles 💬 Длинная дискуссия
Переосмысление DOM с нуля
Браузеры в странном положении: WebAssembly выстрелил, даже на сервере, а клиентская часть ощущается почти как 10 лет назад. Доступ к веб-API из WASM решают тонким JS-клеем — но зачем вообще лезть в DOM? Просто других опций нет. Пора отправить DOM и его API «на ферму», и вот почему.
Никто уже не знает браузеры целиком — и это часть проблемы.
Модель «документа»
Мало кто осознает, насколько DOM раздут. У document.body
в Chrome 350+ ключей, а в document.body.style
— около 660 свойств. Граница между свойствами и методами размыта, геттеры могут триггерить релэйаут, висят легаси-штучки вроде onevent
. DOM толстеет; страничникам это почти не видно, а приложениям — боль.
Большинство избегают прямой работы с DOM; деклартивности мало и она несовременна. Способов сделать одно и то же много, ни один не приятен.
connectedCallback() {
const shadow = this.attachShadow({ mode: 'closed' });
const template = document.getElementById('hello-world').content.cloneNode(true);
const hwMsg = `Hello ${ this.name }`;
Array.from(template.querySelectorAll('.hw-text')).forEach(n => n.textContent = hwMsg);
shadow.append(template);
}
Веб-компоненты пришли поздно, непопулярны: API громоздкий, Shadow DOM плодит уровни вложенности и области видимости. Главная беда — строковая наследственность SGML/XML: состояние хранить в документе плохо; React-подобные это избегают, их «XML» — лишь синтаксис.
HTML почти не менялся 10–15 лет. ARIA стала заплаткой тому, что не дала «семантика HTML». Цели так и не достигли: нет <thread>
или <comment>
, правила странные. WHATWG (то есть вендоры) добавляет лишь заплатки по краям; даже CSS оброс выражениями — любая шаблонка хочет стать языком программирования.
Редактируемость HTML через contentEditable
— теоретически есть, практически — темная магия; у команд Docs/Notion наверняка кошмары. Догмы про «прогрессивное улучшение» и разделение разметки/стилей в мире приложений мало кто исповедует.
Сегодня приложения склеивают HTML/CSS/SVG до «достаточно красиво», ценой огромных оверхедов — это анти-UI тулкит.
Подпись: Ввод Slack
Подпись: Оффскрин-хаки для буфера обмена
Списки и таблицы приходится виртуализировать вручную, перехватывая лайаут, ресайз, драги и т. п. «Прилипший вниз» скролл в чате — вечный TODO. Чем больше виртуализируешь, тем больше заново пишешь «поиск на странице», контекстные меню и пр. Веб стер грань между UI и «текучим контентом» — когда-то это было ново, теперь UI устарел, контент унифицировался.
CSS вывернут наизнанку
CSS не имеет стройной…
Комментарии (205)
- Участники признают, что веб-платформа сложна и разрослась из-за обратной совместимости, множества требований и долгой эволюции; переписывание «с нуля» в реальности лишь добавляет новые слои сложности.
- Многие защищают DOM/HTML/CSS: они кроссплатформенны, поддерживают доступность, приватность, IME/спеллчек и текстовые сценарии, с которыми канвас/кастомные рендеры часто не справляются.
- Критика фокусируется на перегруженности API, «текучих» абстракциях и смешении ролей (CSS как и стиль, и лейаут), предлагаются идеи модульности API, хранение состояния в документе, и дисциплинированное использование Web Components.
- Аргумент «выбросить и заменить» упирается в стоимость миграции и необходимость покрыть весь исторический функционал; успех веба объясняют именно гибкостью, хаками, позже закреплёнными стандартами, и жёсткой обратной совместимостью.
- Проводят параллели с нативными UI-стеками: многие считают веб-технологии более удачными; обсуждают Flutter/WASM/WebGPU как путь к «приложенческому» вебу без ломания существующего.
- Идеи разделения «документы vs приложения» всплывают часто (вплоть до «DOCTYPE app»), но консенсус: нужно сосуществование обоих подходов, а не замена.
- Скепсис к «HTML на Canvas» и «перезапуску браузера» высок: полезнее усиливать существующие примитивы (дешёвый доступ WASM к DOM, лучше продуманные формы/контролы, богатые стандартные виджеты), чем плодить новые параллельные стеки.
Apache ECharts 6 🔥 Горячее
—
Комментарии (34)
Props to them for keeping backwards compatibility. I always dread seeing these major releases, especially after being burned several times by the tire fire of react-router. Migrating a rather large project from 5.6 to 6.0 (10 chart types, around 1k charts in total) took maybe 15
Debounce
Дебаунс — это техника ограничения частоты вызова функции. В течение заданной задержки все входящие вызовы игнорируются, а выполняется только один — либо первый (leading), либо последний (trailing), в зависимости от настроек. Это помогает оптимизировать производительность и избежать лишних вычислений при частых событиях.
Применение:
- Обработчики ввода: ждать паузы перед запросом автодополнения.
- События прокрутки/изменения размера: запускать вычисления после остановки действий пользователя.
- Клики и сабмиты: предотвращать множественные отправки.
Отличие от троттлинга: троттлинг гарантирует вызовы с фиксированным интервалом, а дебаунс — один вызов после серии событий (или сразу первый, если включен leading).
Ключевые параметры:
- delay: время ожидания.
- leading/trailing: когда вызывать — в начале или в конце паузы.
- maxWait (если предусмотрено): гарантирует вызов, даже если события не прекращаются.
Комментарии (81)
- Обсуждение вращается вокруг корректности термина «debounce» в UI/FE-разработке и аналогии с электронным дебаунсом; часть участников считает аналогию неточной, другие — уместной как метафору, предлагая альтернативы: coalescing, edge detection, latch, request coalescing.
- Предупреждение: дебаунс/троттлинг с async-функциями может вести к неожиданному поведению (например, возврат предыдущего Promise); контраргумент — обычные async всегда возвращают новый Promise, проблемы чаще у мемоизации.
- Практика и инструменты: предлагают использовать AbortController для «debounced fetch», реактивные подходы (RxJS switchMap), а также отмечают, что ResizeObserver и события типа scrollend иногда снимают необходимость дебаунса.
- В бэкенде и других языках: в Java нет стандартной гибкой безопасной реализации дебаунса; в Kotlin помогают примитивы структурированной конкуррентности.
- Примеры применения/антипримеров: авто-сохранение по вводу, предотвращение многократных кликов; спор о поиске «на каждый ввод» как неудачном UX-примере.
- Технические нюансы из электроники: асимметричный дебаунс (быстрый «make», задержанный «break»), гистерезис через разные пороги, ссылки на материалы по контактному дребезгу.
- Метадискуссия: популярность темы в интервью, критика «модных терминов» во фронтенде и обсуждение ценности постов/ссылок.
How we made JSON.stringify more than twice as fast 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (165)
JSON encoding is a huge impediment to interprocess communication in NodeJS.Sooner or later is seems like everyone gets the idea of reducing event loop stalls in their NodeJS code by trying to offload it to another thread, only to discover they’ve tripled the CPU load in the main
Modern Node.js Patterns 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (421)
Whoa, I didn't know about this: # Run with restricted file system access node --experimental-permission \ --allow-fs-read=./data --allow-fs-write=./logs app.js # Network restrictions node --experimental-permission \ --allow-net=api.example.com app.js Looks like they were inspired
Комментарии (54)
Looks like this is a wrapper around: https://github.com/mlc-ai/web-llmWhich has a full web demo: https://chat.webllm.ai/ Fun demo but the model that's used seems to be pretty stupid:> What's the best way to get to space?>> Unfortunately, it's not currently possible for humans to