tgindex
Инструменты программиста

Инструменты программиста

Статистика

Полезные инструменты для программистов — бесплатные и платные Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Регистрация в перечне РКН: https://tprg.ru/mX0S

Последний пост
08:35
Последнее чтение
12:31
Постов за неделю
6
Всего постов
36
Тип
открытый
Язык
русский
Категория
Технологии
В каталоге с
12 авг.
Подписчики
12 973
−21 за 4 дн.
Сутки
−8
−0,06%
Неделя
 
Месяц
 
Просмотров на пост
1 821
35 постов
Вовлечённость
14,0%
к подписчикам
Постов в день
0,9
всего 36
Упоминаний
1
каналов
Охват размещения
оценка
1/24сутки в ленте
912
1/48двое суток
1 045
1/72трое суток
1 127

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 08:3542531

    Helm — способ ставить приложения в Kubernetes не вручную. Вместо десятка YAML-файлов, которые надо править под каждое окружение, берётся чарт: шаблоны плюс файл значений. Стандарт де-факто, ближайший сосед Kustomize решает более узкую задачу и шаблонов не даёт. 13 августа вышла версия 4.2.4, патч. Изменения касаются отладки: 🔘 helm template --debug --show-only внятнее объясняет, какой шаблон сломался; 🔘 тестовые поды отдают логи всех контейнеров, а не только первого — раньше логи вспомогательных контейнеров просто терялись; 🔘 вернулся повтор при конфликте применения на стороне сервера; 🔘 helm push с аутентификацией по токену перестал падать на правах доступа к реестру; 🔘 в пакетах перестали исчезать пустые строки. Отдельная причина обновиться: подтянуты зависимости с уязвимостями, gRPC и OpenTelemetry. @prog_tools

  • Один пуш в репозиторий с манифестами дёргает вебхук, и полсотни приложений одновременно бросаются обновляться. Сервер разработки прогибается ровно в этот момент, хотя ни одно из приложений по отдельности не тяжёлое. Argo CD — инструмент доставки в Kubernetes по модели GitOps: состояние кластера описано в репозитории, а контроллер приводит кластер к описанию и показывает расхождения. Версия 3.5.0 вышла 4 августа. Что внутри: 🔘 у обновлений, вызванных вебхуком, появился настраиваемый разброс по времени, так что одновременный наплыв размазывается; 🔘 контроллер наборов приложений научился обрабатывать приложения параллельно, а сами наборы теперь показываются в дереве ресурсов; 🔘 в интерфейсе появилась вкладка предпросмотра приложений для набора: видно, что именно сгенерирует шаблон, до применения; 🔘 в путях к файлам значений Helm заработали шаблоны со звёздочкой, вместо перечисления файлов вручную; 🔘 в альфа-режиме появилась проверка целостности источника для сухих ревизий, то есть подтверждение, что развёрнутое пришло из ожидаемого места; 🔘 у команд argocd app добавлен флаг --app-namespace, а у команд наборов приложений — соответствующий флаг пространства имён; 🔘 внутри выполнен переход с Helm 3 на Helm 4 и обновление интерфейса на React 19. Переход на Helm 4 и React 19 делают релиз ломающим для тех, кто держит собственные расширения интерфейса: для них выпущено отдельное руководство по обновлению. Перед прыжком через минорную версию авторы просят читать документацию по обновлению, там же лежат заметки о переходе с 3.4. Пригодится тем, кто держит GitOps на десятки приложений и ловит всплески нагрузки после каждого пуша в общий репозиторий манифестов. 23,9 тысячи звёзд на GitHub против примерно 8 тысяч у ближайшего конкурента Flux. Язык: Go. Лицензия: Apache 2.0. @prog_tools

  • 12 авг.1 11515

    В кеше лежат миллионы одинаковых по структуре хешей: карточка товара, профиль пользователя, сессия. Схема у всех одна, а имена полей хранятся заново в каждом ключе, и оперативная память уходит на повторение одних и тех же строк. Redis — хранилище структур данных в памяти: кеш, счётчики, очереди, потоки событий. Версия 8.10 вышла 29 июля. Что внутри: 🔘 компактные хеши: новое кодирование, при котором имена полей хранятся один раз для ключей с общей схемой, и расход памяти на однотипных объектах падает; 🔘 команда HIMPORT для быстрой массовой загрузки таких хешей; 🔘 команда BACKUP делает резервную копию и восстановление на стороне узла, поверх многочастного AOF, без внешних скриптов; 🔘 LMOVEM и BLMOVEM переносят между списками сразу несколько элементов, а не по одному за вызов; 🔘 SUNIONCARD и SDIFFCARD возвращают размер объединения и разности множеств, не собирая сами множества в ответ; 🔘 у XREAD и XREADGROUP появились MAXCOUNT и MAXSIZE, которые ограничивают суммарное число записей и размер ответа: полезно, когда читатель отстал и рискует получить всё разом; 🔘 аутентификация между серверами по клиентскому сертификату TLS. Из исправлений после кандидата в релиз стоит знать про клиентов, которые могли остаться заблокированными на BLPOP и BLMOVE, если SORT с STORE подменил целевой ключ списком, и про деление на ноль при равных или перевёрнутых порогах активной дефрагментации. Пригодится тем, кто держит в Redis много однотипных хешей и упирается в память, а также тем, у кого потребители потоков иногда отстают и вытягивают гигантский ответ. Язык: C. Лицензия: на выбор RSALv2, SSPLv1 или AGPLv3. @prog_tools

  • 11 авг.1 02955

    Скрипт печатает в терминал то, что пришло из чужого репозитория: описание гиста, дифф пул-реквеста, логи сборки. Если в этом тексте есть управляющие последовательности, терминал их выполнит, и увиденное вами перестанет совпадать с тем, что там написано. gh — официальный клиент GitHub для терминала: пул-реквесты, задачи, релизы, сборки, произвольные запросы к API. Версия 2.97.0 вышла 31 июля и закрывает сразу четыре уязвимости, так что обновиться стоит не откладывая. Что внутри: 🔘 команды, печатавшие внешний текст без обезвреживания управляющих последовательностей, наконец его обезвреживают: это gh gist view, gh api, gh pr diff, gh release download --output -, gh codespace logs и несколько новых команд про агентов; 🔘 адреса запросов собирались без экранирования переменных частей пути, поэтому значение со служебными символами могло увести запрос к другому ресурсу; 🔘 gh auth status без флага показа токена мог напечатать часть токена открытым текстом для форматов с подчёркиванием после префикса, таких как github_pat_, ghs_ и ghu_; 🔘 gh attestation verify строил проверку подписанта из --signer-repo и --signer-workflow, не экранируя спецсимволы регулярных выражений, поэтому похожее имя репозитория или процесса могло пройти проверку, рассчитанную на доверенного; 🔘 в gh project item-edit и gh project item-list поля и значения одиночного выбора теперь адресуются по имени: --field "Status" --value "In Progress" вместо внутренних идентификаторов, а именованные поля можно вывести отдельными колонками; 🔘 таймаут обращения к хранилищу ключей поднят с 3 до 60 секунд, чтобы окно разблокировки успевало дождаться человека. Пригодится всем, кто гоняет gh в скриптах и в сборках, и особенно тем, кто ведёт доски GitHub Projects из терминала и до сих пор искал идентификаторы полей руками. 45,7 тысячи звёзд на GitHub, официальный клиент без сопоставимых альтернатив: hub давно не развивается. Язык: Go. Лицензия: MIT. @prog_tools

  • 10 авг.1 0622

    В проекте два источника пакетов: приватный реестр компании и публичный npm. В файле блокировки пакет записан просто как имя и версия, без указания, откуда он приехал. Если оба реестра отдают одно имя и одну версию, побеждает тот, кто ответил первым, и понять это по файлу невозможно. pnpm — пакетный менеджер для JavaScript с общим хранилищем пакетов на диске и строгим деревом зависимостей. Версия 11.20.0 вышла 3 августа и закрывает как раз эту дыру. Что внутри: 🔘 пакеты из именованных реестров теперь записываются в файл блокировки с указанием источника, в виде имя@реестр:версия, поэтому каждый реестр получает собственную запись; 🔘 формат файла намеренно не менялся, так что старые версии pnpm его прочитают, но сами такие ключи не пишут: если часть команды сидит на старом pnpm, файл будет переключаться туда-обратно, и в старом виде проект снова уязвим; 🔘 появился встроенный псевдоним npmjs:, который жёстко привязывает зависимость к публичному реестру, даже если общий registry указывает на внутреннее зеркало; 🔘 псевдоним, совпадающий с зарезервированным префиксом вроде file, link, workspace или npm, теперь отклоняется с понятной ошибкой, а не молча перекрывается резолвером; 🔘 пустые значения http-proxy, https-proxy и no-proxy больше не валят установку, а читаются как отсутствующие; proxy=false наконец выключает прокси, а не воспринимается как хост с именем false; 🔘 разрешение зависимостей ускорено: при включённом minimumReleaseAge метаданные фильтруются один раз на пакет, а разобранные версии и диапазоны переиспользуются между сравнениями. Обновление полуломающее для тех, кто пользуется именованными реестрами: первая же обычная установка перепишет записи в файле блокировки, и этот дифф нужно закоммитить. Заодно его стоит просмотреть: запись, уехавшая к неожиданному реестру, это повод разобраться. Отключить новое поведение нельзя, авторы прямо пишут, что старая форма и есть уязвимость. Пригодится тем, у кого рядом живут приватный реестр и публичный npm, и кто до сих пор верил, что файл блокировки фиксирует источник пакета. 36 тысяч звёзд на GitHub, ближайшие соседи по нише — Yarn и bun. Язык: Rust. Лицензия: MIT. @prog_tools

  • Чтобы посмотреть, прошли ли проверки по своему пул-реквесту, приходится идти в браузер, а чтобы поменять местами два коммита перед отправкой — вызывать интерактивный rebase и править список в редакторе. lazygit — терминальный интерфейс к git: панели веток, коммитов и файлов, добавление в индекс по отдельным строкам, интерактивное перебазирование. Версия 0.64.0 вышла 4 августа. Что внутри: 🔘 модель многопоточности переписана целиком: обновления данных и экрана выполняются в потоке интерфейса вместо россыпи мьютексов, известных гонок не осталось, а набор интеграционных тестов гоняется в CI с флагом -race; 🔘 в списке ветвей и в главной панели показывается сводный статус проверок GitHub для соответствующего пул-реквеста; 🔘 мышью теперь можно менять порядок коммитов и строк плана перебазирования перетаскиванием, выделять диапазон в списках, а при выделении в панели индекса экран сам прокручивается; 🔘 внешней команде сравнения доступна подстановка {{diffContext}}, а настройка custom pager переименована в diff renderer, старое имя в конфиге придётся поправить; 🔘 исправлено залипание индикатора в конце отправки и загрузки, зависание при ctrl+z и возврате процесса, а также поломанное отображение боковых панелей, когда ветки или коммиты открыты не на первой вкладке; 🔘 на Windows починили падение при переходе в полноэкранный режим с внешним просмотрщиком, осиротевшие процессы при быстром перемещении по коммитам и остающиеся файлы index.lock. Автор честно предупреждает: изменений в этом релизе непривычно много, поэтому вероятность регрессий выше обычного, и просит сообщать обо всём найденном. Пригодится тем, кто живёт в терминале, разбирает историю перед отправкой и не хочет держать открытой вкладку с проверками. 81 тысяча звёзд на GitHub, ближайшие терминальные аналоги gitui и tig держатся на 22 и 13 тысячах. Язык: Go. Лицензия: MIT. @prog_tools

  • 6 авг.1 2486

    Если интересно, как разработчику вырасти в человека, который запускает свои продукты и бизнес, — 9 августа в 13:00 приходите послушать выпускников магистратуры МФТИ «Технологическое предпринимательство». Формат: преподаватель кафедры расспрашивает пятерых выпускников разных лет о том, зачем они шли учиться, уже имея бизнес или должность, и что из этого вышло. Из спикеров: фаундер MountingBox (его проект начинался как учебный в магистратуре, сейчас приносит 60 млн ₽ в год), General Manager квантового стартапа в Люксембурге, директор по ИИ-трансформации «Альпина Диджитал», основатель FindQuiz и CDO Российского футбольного союза, а также серийный технический предприниматель и основатель DiamondLab. Полтора часа, онлайн, бесплатно, вопросы из чата берут. Регистрация: https://tprg.ru/ozW3

  • 6 авг.1 325510

    Связка nvm, pyenv, rbenv и отдельного раннера задач разрастается в набор конфигов, которые у разных разработчиков расходятся. mise держит версии тулчейнов, переменные окружения и задачи проекта в одном файле mise․toml. Версия 2026.7.18 вышла 30 июля. Что внутри: 🔘 флаг --compact у mise tasks deps: общее поддерево зависимостей печатается один раз, повторные ссылки помечаются как (already shown); 🔘 в монорепах заработали относительные пути ./ в зависимостях задач, а шаблон ... теперь включает и базовый проект; 🔘 при установке через cargo mise запоминает использованные опции (features, bin, locked) и сам переустанавливает инструмент, когда они меняются; 🔘 PATH в mise env, mise x и mise doctor дедуплицируется по первому вхождению, поэтому при вложенных активациях перестал раздуваться; 🔘 в секции [plugins] разрешены локальные пути и симлинки, а пакетная установка и обновление плагинов доходят до конца, даже если отдельные падают; 🔘 mise install больше не трогает конфиг-файлы, а prune --tools учитывает недоверенные файлы версий; 🔘 на Windows mise находит и запускает файлы .cmd, .ps1 и .vbs, последний через cscript, на macOS починен watch --wrap-process group. Пригодится тем, кто ведёт монорепу с задачами в нескольких подпроектах и разбирает дерево их зависимостей глазами. Номер версии складывается из даты, релизы выходят почти ежедневно. Язык: Rust. Лицензия: MIT. @prog_tools

  • 5 авг.1 23811

    Команда с восемью флагами, которую собирал полчаса неделю назад, в обычной истории команд шелла не находится: файл перезаписан параллельной сессией, каталог и код возврата не сохранены, а на второй машине её нет вовсе. Atuin складывает историю в SQLite, добавляет к каждой команде контекст и синхронизирует её между машинами со сквозным шифрованием. Версия 18.18.0 вышла 27 июля, следом выпустили патч 18.18.1. Что внутри: 🔘 подсветка синтаксиса команд в интерактивном поиске, разбор идёт грамматикой конкретного шелла, цвета задаются в конфиге; 🔘 фильтр по шеллу: флаг --shell у atuin search и переключатель в интерактивном интерфейсе, у записей истории появилось поле shell; 🔘 bash-preexec встроен внутрь, Atuin подгружает его сам, если другого preexec-бэкенда в bash нет; 🔘 поиск корректно считает смещения в не-ASCII, импорт больше не обрывается на повреждённой записи; 🔘 по производительности: подсчёт истории перестал блокировать, активная история индексируется, строки удаляются физически, а демон индексирует синхронизированную историю напрямую вместо некорректного SQL-запроса; 🔘 удалён устаревший протокол синхронизации V1, обновлены уязвимые зависимости, sqlx обновлён до версии 9; 🔘 патч 18.18.1 чинит установку с crates.io и убирает зависимость fs4, блокировка файлов переехала на std::fs. Пригодится тем, кто по нескольку раз в день выуживает из истории длинную команду с флагами и работает с двух-трёх машин. Язык: Rust. Лицензия: MIT. @prog_tools

  • 4 авг.1 10924

    Маркетинг просит на неделю поднять товары со скидкой в выдаче и закрепить один конкретный товар по фразе «подарок». Обычно под такое пишут прослойку над поисковым движком. Meilisearch — поисковый движок для приложений, с опечатками, фасетами и фильтрами из коробки. Версия 1.51 вышла 27 июля. Что внутри: 🔘 у экспериментальных Dynamic Search Rules появилось условие filter: в ключе values перечисляются фасеты и их значения, при которых правило включается; 🔘 у правила появилось поле lastUpdatedAt со временем последнего изменения, а список правил отдаётся начиная с самых свежих; 🔘 поиск ускорили за счёт однократного чтения данных с диска, на наборе с 14 тысячами разных полей заявлен выигрыш до 5,4 раза; 🔘 обновление без дампа перестало быть экспериментальным, флаг --experimental-dumpless-upgrade переименован в --upgrade-db; 🔘 в 1.50 механизм правил переписали целиком: поле priority заменено на precedence, где меньшее значение означает более ранний порядок, а conditions превратился из массива в объект; 🔘 там же появились лимиты «DSR fuel» через переменные окружения и заявленный потолок 75 000 правил без влияния на скорость поиска; 🔘 в 1.50 GET documents в шардированной конфигурации по умолчанию собирает документы со всех узлов (старое поведение включается через useNetwork: false), а сами правила реплицируются с лидера на реплики. Пригодится тем, кто отдаёт поиск по каталогу и держит поверх движка отдельный слой бизнес-правил ранжирования. Dynamic Search Rules остаются экспериментальной функцией, а формат правил сменился в 1.50, так что написанное для более ранних версий придётся переписать. Заодно в 1.51 убрали неиспользуемые экспериментальные возможности, включая --experimental-replication-parameters. Язык: Rust. Лицензия: MIT, часть кода Enterprise Edition под Business Source License 1.1. @prog_tools

  • 3 авг.1 10819

    Тест падает раз в двадцать прогонов, и повтор ничего не проясняет: он идёт сразу же, в том же состоянии браузера, а зависшее действие всё равно досиживает свой таймаут до конца. Playwright — фреймворк сквозного тестирования, который гоняет Chromium, Firefox и WebKit через один API. Версия 1.62.0 вышла 24 июля. Что внутри: 🔘 стратегия повторов настраивается через testConfig.retryStrategy: immediate перезапускает тест сразу, isolated откладывает все повторы на конец прогона и выполняет их последовательно в одном воркере; 🔘 большинство действий и web-first проверок принимают AbortSignal, поэтому зависшее ожидание можно отменить из кода; обычный таймаут при этом продолжает работать, а timeout: 0 его выключает; 🔘 скриншоты и снимки для визуальных тестов сохраняются в WebP, при quality: 100 сжатие идёт без потерь, меньшие значения дают сжатие с потерями; 🔘 компонентные тесты переехали на модель stories и galleries: fixtures.mount() монтирует story и возвращает Locator с методами update() и unmount(); 🔘 у репортеров появился хук reporter.preprocess(), он вызывается после разбора конфигурации и до onBegin(), в нём тест можно пометить как пропущенный, исключённый, починенный или падающий; 🔘 в storage state сохраняются виртуальные ключи WebAuthn, их можно подставить в следующие контексты браузера и не проходить вход по passkey заново; 🔘 добавлены режимы автопрокрутки scroll: "auto" и scroll: "none", метод apiResponse.timing() и locator.waitForFunction(), а page.evaluate() и addInitScript() теперь принимают функции аргументами, поэтому реже приходится собирать JavaScript строками. Пригодится тем, кто держит большой набор кроссбраузерных тестов в CI и разбирается с плавающими падениями. Debian 11 больше не поддерживается. В релизе проверены Chromium 151.0.7922.34, Firefox 153.0 и WebKit 26.5. Язык: TypeScript. Лицензия: Apache 2.0. @prog_tools

  • 2 авг.1 1978

    Запущенный сервером, через rclone serve или удалённый API с флагом --rc, rclone попадает в периметр наравне с любым другим сетевым сервисом. В этом релизе закрыли большой блок уязвимостей именно такого рода. rclone — консольная утилита для копирования и синхронизации данных между локальными дисками и облачными хранилищами, поддерживает больше семидесяти бэкендов. Версия 1.75.0 вышла 31 июля. Что внутри: 🔘 около 20 записей об уязвимостях (GHSA), большая часть CVE пока в статусе PENDING: инъекция команд в SFTP через имена файлов на удалённых системах с PowerShell, инъекция в FTP при кодировке без CRLF, утечка ключей S3 при редиректе с HTTPS на HTTP, исчерпание памяти неограниченными заголовками HTTP CONNECT в прокси, выход за пределы каталога в serve restic; 🔘 обработчики pprof у rc-сервера больше не открыты без аутентификации, трассировки стека при панике наружу не отдаются; 🔘 пароли и токены перестали попадать в отладочный лог при rclone config; 🔘 serve s3 получил потоковые multipart-загрузки без буферизации в памяти, заодно починили зависшие оборванные загрузки, исчерпание памяти и ошибку InvalidPart при параллельной работе; 🔘 в языке фильтров появились вложенные альтернативы в фигурных скобках и флаг --files-from0 для списка файлов, разделённого нулевым байтом; 🔘 примерно в пятнадцати бэкендах починили потерю времени модификации после загрузки: Azure Files, FTP, HDFS, Mail․ru, Jottacloud, WebDAV и другие; 🔘 добавлены бэкенды Scality и Zero Services, встроенный веб-интерфейс обновлён до 1.1.11. Пригодится тем, кто держит rclone в кроне для бэкапов, и в первую очередь тем, у кого serve или --rc смотрит в сеть. Язык: Go. Лицензия: MIT. @prog_tools

  • 1 авг.1 251311из tproger_web

    Modern Web Guidance: не даём ИИ-агенту тащить лишние зависимости Просишь агента сделать модалку — получаешь портал, setTimeout и лишнюю библиотеку. Modern Web Guidance учит агента использовать актуальные API веб-платформы. Устанавливается через npx modern-web-guidance@latest install или плагин для редактора. Укажите целевой Baseline в AGENTS.md/CLAUDE.md — и агент спросит, можно ли обойтись браузером. В демо это сработало: CSS Anchor Positioning вместо Floating UI для тултипа, нативный <dialog> вместо самодельного модала, scheduler.yield() вместо useMemo при поиске по 2000 задач. Сразу говорю, версия ранняя. Но идея здравая: ИИ-код должен ориентироваться на актуальную платформу. Подробности.

  • 31 июл.11,9 тыс171

    Ternlight: поиск по смыслу прямо в браузере, без сервера и ключей Ternlight превращает текст в векторы и ищет по смыслу прямо в браузере на CPU. Весь пакет включает модель, токенизатор и движок вывода и занимает ≈7 МБ, а сервер, GPU и API-ключи не нужны. Установка: npm i @ternlight/base, после чего embed() даёт 384-мерный вектор, а similar() ранжирует небольшую выборку документов за ≈5 мс на одной вкладке. Это можно воспринимать как Fuse.js, но с поиском по смыслу вместо символов: библиотеку вешаете на страницу документации или справки, и она находит «как отменить подписку», даже если пользователь написал «хочу вернуть деньги». Демо работает офлайн, посмотрите на ternlight.dev/demo. Если нужен семантический поиск без инфраструктуры, загляните в статью: там примеры кода и сравнение с классическим текстовым поиском.

  • 30 июл.1 65915

    Turborepo до сих пор был инструментом для монорепозиториев на JavaScript: он кеширует результаты задач, гоняет только то, что затронули изменения, и умеет отдавать кеш на всю команду. В версии 2.10.6 от 22 июля он научился работать с репозиторием, где вообще нет ни одного package․json. Что внутри: 🔘 поддержка Cargo-воркспейсов включается флагом experimentalCargoWorkspaces в turbo.json, после чего крейты становятся обычными узлами графа пакетов; 🔘 задачи выводятся из самого Cargo: build, test, check, bench превращаются в соответствующие cargo-команды с --package и --locked, lint и clippy зовут cargo clippy, docs зовёт cargo doc; 🔘 run и dev появляются у крейта только если у него ровно один бинарник; 🔘 библиотечные крейты остаются в графе, поэтому --filter и подсчёт затронутых пакетов идут по реальным зависимостям Rust; 🔘 в TUI перестали теряться цвета, а turbo watch переписали; 🔘 при обрезке репозитория сохраняются записи node@runtime: из pnpm-локфайла и расширения пакетов Yarn. Пригодится тем, у кого в монорепозитории и фронтенд, и Rust-сервисы, а кеширование и определение затронутых пакетов до сих пор жило только на половине проекта. Cargo-поддержка помечена как экспериментальная, у неё отдельный раздел документации. Обновлять turbo придётся везде сразу, включая CI и локальные хуки: старые версии не понимают новых future-флагов и просто откажутся запускаться. Язык: Rust. Лицензия: MIT. @prog_tools

  • 29 июл.1 530212

    Biome — линтер и форматтер для веб-проектов: JavaScript, TypeScript, CSS, HTML. Одна программа на Rust вместо связки ESLint и Prettier, работает из терминала и через LSP в редакторе. Версия 2.5.5 вышла 21 июля. Что внутри: 🔘 новое правило noNegationInEqualityCheck ловит выражения вида !foo === bar. Из-за приоритета операторов это выполняется как (!foo) === bar, хотя автор почти наверняка имел в виду foo !== bar; 🔘 useExhaustiveSwitchCases разобрался с юнионами bigint-литералов: теперь сравнивает их по значению, поэтому двоичная, восьмеричная и шестнадцатеричная запись одного числа больше не путают правило; 🔘 noBaseToString и useNullishCoalescing замолкают, когда тип не удалось вывести до конца. Раньше на рекурсивных типах они выдавали замечания по неполной информации; 🔘 правило noThenProperty ускорили примерно на 50%; 🔘 CSS-форматтер перестал ломать регистр: служебные ключевые слова приводит к нижнему, а имена, придуманные автором, оставляет как есть; 🔘 парсер понимает атрибуты Angular и сокращённую запись v-bind вида :="props"; 🔘 закрытие одного редактора больше не гасит общий демон Biome, к которому подключены остальные. Пригодится тем, кто держит в проекте ESLint с плагинами и Prettier и присматривается, чем это всё заменить. Язык: Rust. Лицензия: Apache-2.0. @prog_tools

  • 28 июл.1 51810

    Nibs: безопасный очиститель терминала для Linux Nibs — TUI-утилита на Rust, которая освобождает место на диске, не рискуя удалить важные файлы. Она сканирует кеши, логи, старые сборки, установщики, корзину и остатки приложений, а перед очисткой помечает каждую находку как безопасную, требующую проверки или рискованную. По умолчанию Nibs только перемещает файлы в корзину и обходит конфиги, токены, сессии, куки и личные данные. Так можно быстро почистить систему, не боясь потерять настройки или секреты. Инструмент пока в альфе, но уже открыт для тестирования. Репозиторий: github.com/danitsdev/nibs.

  • 28 июл.1 42813

    Рутинные команды проекта расползаются по README, Makefile и памяти того, кто их когда-то придумал. just собирает их в один justfile: описываете рецепт, дальше зовёте just build или just test из любой папки проекта. Версия 1.57.0 вышла 19 июля. Что внутри: 🔘 появилась функция len() для подсчёта элементов списка, а split('') теперь разбивает строку на отдельные символы; 🔘 переменные из блока [env] стали видны внутри вызовов shell(); 🔘 markdown-файл, заданный через --justfile-name, теперь тоже разбирается: рецепты вынимаются из блоков just, поэтому команды могут лежать прямо в README рядом с объяснением, зачем они нужны; 🔘 на Windows аргументы уходят в cmd.exe без экранирования; 🔘 запрещены дублирующиеся группы рецептов и одинаковые имена параметров у пользовательских функций; 🔘 ленивые присваивания перестали пересчитываться заново при каждом обращении внутри таких функций. Пригодится тем, кто устал объяснять новым людям в команде, какие три команды надо выполнить перед первым запуском проекта. Язык: Rust. Лицензия: CC0-1.0. @prog_tools

  • 27 июл.1 42944

    Auto-CPUFreq 3.1: мониторинг CPU и настройки теперь в GUI Auto-CPUFreq, Linux-утилита для мониторинга и настройки процессора, обновилась до 3.1. Главное новшество: режим мониторинга теперь доступен прямо в графическом интерфейсе, так что смотреть состояние CPU можно без терминала. Версия также добавляет новые параметры конфигурации и ряд исправлений. Если вы уже пользуетесь инструментом, обновитесь, чтобы получить GUI для мониторинга и новые опции конфигурации в этом релизе. Подробности о релизе.

  • 25 июл.1 60912

    Несколько coding-агентов в одном рабочем дереве быстро начинают редактировать одни и те же файлы. Emdash разводит агентов по изолированным git worktree и собирает чат, терминал, задачи и pull request в одном локальном приложении. Версия 1.1.40 вышла 17 июля. Что внутри: 🔘 в чат можно вставлять изображения; 🔘 появился быстрый переключатель Zen Mode; 🔘 у файлов в контекстном меню — команда Show in Finder, у pull request — копирование общего URL; 🔘 исправлена блокировка главного процесса при индексации файлов и падения при повторной подписке file watcher. Пригодится тем, кто гоняет несколько агентов одновременно и устал следить, чтобы они не редактировали одни и те же файлы. Язык: TypeScript. Лицензия: Apache-2.0. @prog_tools