Hacker News Digest

Обновлено: 28 ноября 2025 г. в 08:55

Постов: 4635 • Страница 319/464

Pico CSS – Minimal CSS Framework for Semantic HTML (picocss.com) 🔥 Горячее

Pico CSS — микро-фреймворк, который делает красивый интерфейс из обычного HTML без классов.
Подключил — и готово: адаптив, тёмная/светлая тема, 0 JS, 15 КБ.

<form><input type=email placeholder=Email></form>
  • 130 CSS-переменных для настройки
  • 20 цветовых тем, 30 компонентов
  • Вес ≈ 10 КБ, без зависимостей

by mpweiher • 07 сентября 2025 г. в 20:31 • 311 points

ОригиналHN

#pico-css#css#html#css-frameworks#tailwind#accessibility#front-end

Комментарии (86)

  • Pico CSS — фаворит для быстрых сайтов и прототипов: «включаешь — и красиво», без классов.
  • Пользователи хвалят тёмную тему, accessibility и переменные, но жалуются на 50+ КБ, «огромные» контролы и отсутствие компонентов (табы).
  • Кто-то берёт Pico как анти-Tailwind: семантичный HTML, нет «супа классов», легко править.
  • Для LLM-флоу советуют засунуть доку Pico целиком в контекст, чтобы модель не тянула Tailwind.
  • Альтернативы: Neat (ещё меньше), Newcss, Beercss; обзоры на cssbed.com и dropin-minimal-css.

Everything from 1991 Radio Shack ad I now do with my phone (2014) (trendingbuffalo.com)

  • В рекламе Radio Shack 1991 г. 15 гаджетов; 13 из них теперь в телефоне.
  • Плеер, часы, калькулятор, камкордер, телефон, CD-плеер, сканер, диктофон и др. — всё заменил iPhone.
  • Суммарная цена тогда: $3054 (~$5100 сегодня).
  • Не заменил: радар-детектор и колонка с 15-дюймовым сабвуфером.

by vinnyglennon • 07 сентября 2025 г. в 20:26 • 199 points

ОригиналHN

#iphone#waze#p25

Комментарии (148)

  • Участники спорят, что смартфон не полностью заменил CB-рации, радар-детекторы и сканеры: «функции есть, но дух и удобство — нет».
  • CB-живее всех живых: продаётся в крупных магазинах, разрешена за рулём, по-прежнему спасает вдали от сетей.
  • Радар-детектор формально не нужен — Waze и онлайн-радары делают ту же работу, но железный «бип» никто не отменял.
  • Сканеры тоже не умерли: любители слушают авиацию, спасателей, гонки; просто теперь это цифровые P25-коробки вместо 10-канального «Realistic».
  • Телефон убил рынок «подарочных гаджетов» — вместо $20-игрушек теперь дарят $5-приложения или $500-аксессуары.
  • Итог: всё слито в одну коробку, но энтузиасты всё равно покупают отдельные устройства — ради звука, ради хобби, ради свободы.

No Silver Bullet: Essence and Accidents of Software Engineering (1986) [pdf] (cs.unc.edu)

Содержимое PDF-файла представляет собой бинарные данные, которые нельзя напрямую интерпретировать как текст. В представленном фрагменте — это служебные структуры PDF (объекты, потоки, метаданные), а не читаемый текст документа.
Перевод и сокращение невозможны, поскольку отсутствует осмысленный текстовый контент.

by benterix • 07 сентября 2025 г. в 19:53 • 103 points

ОригиналHN

#software-engineering#complexity#programming-languages#aws#python#llm

Комментарии (24)

  • Брукс по-прежнему прав: основная трудность — «существенная сложность» предмета, а не инструменты.
  • За 40 лет не появилось ни одного «серебряного пули», дающего 10× прирост продуктивности.
  • Экосистемы (Python, AWS и др.) снизили accidental complexity, но добавили новую через зависимости и «слоёный пирог».
  • LLM и ИИ ускоряют рутину, но не решают существенную сложность и не умеют формулировать требования.
  • Культура SWE изменилась: скорость вытеснила ответственность, код пишут «на скорую руку» и быстро забывают.

Clojure's Solutions to the Expression Problem (infoq.com)

Clojure и «проблема выражений»

  • Проблема: добавлять новые типы данных и новые операции без перекомпиляции всего кода и без нарушения существующих вызовов.
  • ООП-языки решают лишь половину: легко новый класс, трудно новый метод.
  • Функциональные языки наоборот: легко новая функция, трудно новый вариант данных.

Как Clojure объединяет лучшее

  1. Протоколы

    • Описывают набор методов без привязки к типу.
    • Реализуются для любого существующего класса поздно, «извне».
    • Компилируются в обычный Java-интерфейс, быстрый вызов.
  2. Мультиметоды

    • Выбор реализации по произвольной функции-диспетчеру (тип, значение, метаданные).
    • Позволяют «разрезать» иерархию по другим осям, не только по классу.
  3. Records и types

    • defrecord создает неизменяемую структуру с заранее известными полями и автоматическим доступом по ключам как к карте.
    • deftype даёт полный контроль, поля хранятся примитивно, без лишних обёрток.
  4. reify

    • «Анонимный класс» на Clojure: создаёт объект, реализующий нужные протоколы/интерфейсы, без отдельного файла.

Практический итог

  • Новый тип → defrecord/deftype + реализация нужных протоколов.
  • Новая операция → добавляем метод в протокол и реализуем для всех существующих типов.
  • Старый клиентский код не трогается, компиляция не требуется.

by adityaathalye • 07 сентября 2025 г. в 19:31 • 141 points

ОригиналHN

#clojure#functional-programming#object-oriented-programming#protocols#multimethods#datomic#selenium#immutability#jvm#repl

Комментарии (16)

  • Протоколы в Clojure теперь умеют диспатчиться по метаданным, а не только по типу.
  • Участники скучают по временам, когда посты о продуктивности были про REPL, функциональность, композабельность и иммутабельность.
  • Поделились ссылкой на демонстрацию решения «expression problem» в Clojure.
  • Люди недооценивают готовые решения вроде Datomic и вместо этого пишут свои костыли.
  • Один из участников вспомнил, как в 2013–15 писал тесты на Clojure и расширял фреймворк для Selenium.

How to make metals from Martian dirt (csiro.au)

  • Учёные Суинберна и CSIRO впервые получили железо из марсианского реголита при давлении и составе атмосферы Красной планеты.
  • Процесс: 1000 °С → металлическое Fe, 1400 °С → жидкий сплав Fe-Si; шлак отделяется как на Земле.
  • Использовали имитатор грунта кратера Гейла; в качестве восстановителя — CO₂ из атмосферы.
  • Цель: добывать металл на месте (ISRU), чтобы не возить тонны с Земли (1 т груза ≈ 243 млн USD).
  • Следующий шаг — «нулевые отходы»: шлак пойдёт на стройматериалы, сплавы — на корпуса домов и технику.

by PaulHoule • 07 сентября 2025 г. в 19:09 • 75 points

ОригиналHN

#space-exploration#mars#in-situ-resource-utilization#iron#nuclear-reactors#solar-power#amazon

Комментарии (85)

  • Учёные добились выплавки железа из марсианского реголита без углерода; остаётся вопрос, где взять 1400 °C на Марсе.
  • Основные кандидаты — солнечные панели + батареи или компактный ядерный реактор (MSR), но масштаб и логистика пока неясны.
  • Amazon уже продаёт «марсианский» реголит-имитатор, так что эксперименты можно начинать в гараже.
  • Добыча на астероидах теоретически богаче (платина), но Δv и возврат убивают экономику; марсианское железо — проще и дешевле.
  • ISRU (местное сырьё) — ключ к выживанию на Луне/Марсе; станции в вакууме такой роскоши не имеют.
  • Споры о радиации и безопасности ЯТТ топлива сведены к «опаснее не реактор, а сама космическая радиация».

Keeping secrets out of logs (2024) (allan.reyes.sh)

Коротко:
Секреты в логах — это не «одним фиксом» решить нельзя. Ни 80/20, ни чудо-инструмента нет. Есть 10 «свинцовых пуль» — несовершенных, но при правильной раскладке работают.


Почему течёт

Причина Пример
Прямой логинг log.info(user) вместо log.info(user.id)
«Мусорные» дампы logger.debug(req.headers)
Конфиги debug=true выводит весь env
Зашитые секреты JSON-поле password внутри структуры
Телеметрия APM-сборщик хватает всё подряд
Пользователь Вводит пароль в поле «имя»

10 «пуль»

  1. Архитектура данных
    Разделяем «чувствительное» и «остальное» на уровне схемы; в логи идёт только последнее.

  2. Трансформации
    Сериализуем через sanitize() или toLog() — явно выбрасываем секретные поля.

  3. Domain-primitives

    • Компиляция: SecretString не реализует Display.
    • Рантайм: Redactable интерфейс, toString() → "***".
  4. Read-once
    Пароль читается 1 раз, дальше объект пустой — логировать нечего.

  5. Taint-tracking
    Помечаем вход как «грязный»; если доходит до логгера — exception. Дорого, но точно.

  6. Форматтеры логов
    Пишем свой Layout / Encoder, который режет заранее заданные ключи рекурсивно.

  7. Unit-тесты
    Проверяем assertThat(log).doesNotContain(secret); запускаем на каждый PR.

  8. Сканеры
    Regex-правила + entropy-фильтры в CI и в production-потоке. Сэмплируем, чтобы не умереть от CPU.

  9. Pre-processors
    Vector / Logstash / Cribl вырезают поля ещё до попадания в Elasticsearch.

  10. Люди
    Code-review чек-лист: «есть ли тут .toString / JSON.stringify / printf без фильтров?».


Стратегия

  1. Фундамент: классификация данных, единый словарь «что считать секретом».
  2. Карта потока: от источника до хранилища логов.
  3. Контрольные точки: валидация, sanitize, redact.
  4. Защита в глубину: 2-3 слоя из списка выше.
  5. План на инцидент: ротация, оповещение, forensics.

Итог:
Нет волшебства — только дисциплина и много мелких фиксов. Начните с 2-3 «пуль», которые дешёвле всего у вас, и двигайтесь дальше.

by xk3 • 07 сентября 2025 г. в 18:16 • 221 points

ОригиналHN

#logging#security#data-sanitization#taint-tracking#elastic#logstash#code-review#unit-testing#continuous-integration#json

Комментарии (42)

  • Отличный пост: чёткий разбор проблемы «секреты в логах» и конкретные техники борьбы.
  • Основные идеи: taint-tracking, in-band метки, GuardedString/SecureString, доменные примитивы new Secret(...).
  • Сложности: стектрейсы, JSON, core-dumps, динамически создаваемые секреты, человеческий фактор.
  • Защита в глубину: маскировать, ограничивать доступ к логам, не писать всё подряд, валидировать маски (Kingfisher).

The MacBook has a sensor that knows the exact angle of the screen hinge (twitter.com) 🔥 Горячее 💬 Длинная дискуссия

JavaScript отключён.
Включите его или смените браузер.
Проблема может быть в расширениях — отключите их и обновите страницу.

by leephillips • 07 сентября 2025 г. в 15:20 • 963 points

ОригиналHN

#macbook#apple#linux#intel#sensor#hardware#twitter

Комментарии (470)

  • В MacBook есть датчик угла крышки; он сериализован к материнке, и после замены требует калибровки у авторизованного сервиса.
  • Apple использует его для Desk View (коррекция перспективы камеры), а также, возможно, для настройки звука, яркости и диагностики.
  • На базе датчика уже сделали «терамен», «протрактор», гироскопические игры и конкурс «самый тупой регулятор громкости».
  • В Linux датчик тоже есть (драйвер intel-hinge), но не всегда работает; данные лежат в /sys/bus/iio/devices/.
  • Пользователи жалуются, что датчик ломается, вызывает разрядку в сумке и может быть следом «держи ноутбук неправильно».

Комментарии (86)

  • Участники спорят: блокировки Facebook/TikTok в Непале — это борьба с вредом соцсетей или удар по свободе слова.
  • Западные комментаторы упрекают азиатские власти в авторитаризме; местные отвечают: «не нам учиться демократии у стран, где Fox News = свобода».
  • Непал требует у платформ регистрации и локального представителя; игнорировавшие правила заблокированы, а не «все подряд».
  • Мнения разделились: кто-то радуется «цифровому детоксу», кто-то боится прецедента цензуры и слежки.
  • Общий вывод: соцсети одновременно и «площадка свободы», и «инструмент пропаганды»; решение о блокировке зависит от контекста, но всегда рискует стать политическим оружием.

SQLite's Use of Tcl (2017) (tcl-lang.org)

SQLite начинался как TCL-расширение и до сих пор носит его отпечаток: гибкая типизация, синтаксис $var в SQL и единственный адаптер внутри ядра — tclsqlite.c. Сегодня ядро на чистом C и работает без TCL, но вся разработка и тестирование держится на нём: 90 % кода тестов на TCL, генерация сборок, документация и релизы полностью автоматизированы скриптами makefile.tcl.

by ripe • 07 сентября 2025 г. в 15:03 • 101 points

ОригиналHN

#tcl#sqlite#c#fossil#end-to-end-encryption#makefile#sql

Комментарии (29)

  • Команда SQLite общается в приватном чате на собственном Tcl/Tk-скрипте (~1000 строк), который работает и как клиент, и как сервер.
  • С 2021 г. основное общение перешло в встроенный Fossil-чат: он E2E-шифрован и доступен из любого браузера.
  • SQLite сохраняет Tcl-наследие: sqlite3_analyzer — это тоже Tcl-программа, упакованная в С-обёртку.
  • Подстановка $uid в SQL безопасна: токен распознаётся парсером SQLite, а не «eval»-ится Tcl.
  • Участники защищают выбор Tcl: он компактен, стабилен и удобно встраивается в С, что важнее модных языков.

Delayed Security Patches for AOSP (Android Open Source Project) (twitter.com)

  • JS отключён. Включите его или смените браузер.
  • Расширения, блокирующие трекинг, могут мешать — отключите их и обновите страницу.

by transpute • 07 сентября 2025 г. в 14:36 • 169 points

ОригиналHN

#aosp#android#grapheneos#security-patches#postmarketos#linux#twitter

Комментарии (83)

  • Заголовок на HN неверен: задержка касается всех Android, не только AOSP; security-патчи для 13–15 вышли 2 сентября.
  • Google всё чаще прячет код в GMS и свои приложения, превращая AOSP в «заготовку» и снижая пользу для GrapheneOS и прочих форков.
  • Пользователи обсуждают разделение Android и Google: считают, что без регулирования Google окончательно убьёт открытую часть экосистемы.
  • Альтернативы вроде PostmarketOS и «линуксофонов» пока сыроваты: не хватает VoLTE, камеры, GPU и людей для поддержки.