В кеше лежат миллионы одинаковых по структуре хешей: карточка товара, профиль пользователя, сессия. Схема у всех одна, а имена полей хранятся заново в каждом ключе, и оперативная память уходит на повторение одних и тех же строк.
Redis — хранилище структур данных в памяти: кеш, счётчики, очереди, потоки событий. Версия 8.10 вышла 29 июля.
Что внутри:
🔘 компактные хеши: новое кодирование, при котором имена полей хранятся один раз для ключей с общей схемой, и расход памяти на однотипных объектах падает;
🔘 команда
🔘 команда
🔘
🔘
🔘 у
🔘 аутентификация между серверами по клиентскому сертификату TLS.
Из исправлений после кандидата в релиз стоит знать про клиентов, которые могли остаться заблокированными на
Пригодится тем, кто держит в Redis много однотипных хешей и упирается в память, а также тем, у кого потребители потоков иногда отстают и вытягивают гигантский ответ.
Язык: C. Лицензия: на выбор RSALv2, SSPLv1 или AGPLv3.
@prog_tools
Redis — хранилище структур данных в памяти: кеш, счётчики, очереди, потоки событий. Версия 8.10 вышла 29 июля.
Что внутри:
HIMPORT для быстрой массовой загрузки таких хешей;BACKUP делает резервную копию и восстановление на стороне узла, поверх многочастного AOF, без внешних скриптов;LMOVEM и BLMOVEM переносят между списками сразу несколько элементов, а не по одному за вызов;SUNIONCARD и SDIFFCARD возвращают размер объединения и разности множеств, не собирая сами множества в ответ;XREAD и XREADGROUP появились MAXCOUNT и MAXSIZE, которые ограничивают суммарное число записей и размер ответа: полезно, когда читатель отстал и рискует получить всё разом;Из исправлений после кандидата в релиз стоит знать про клиентов, которые могли остаться заблокированными на
BLPOP и BLMOVE, если SORT с STORE подменил целевой ключ списком, и про деление на ноль при равных или перевёрнутых порогах активной дефрагментации.Пригодится тем, кто держит в Redis много однотипных хешей и упирается в память, а также тем, у кого потребители потоков иногда отстают и вытягивают гигантский ответ.
Язык: C. Лицензия: на выбор RSALv2, SSPLv1 или AGPLv3.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1
Один пуш в репозиторий с манифестами дёргает вебхук, и полсотни приложений одновременно бросаются обновляться. Сервер разработки прогибается ровно в этот момент, хотя ни одно из приложений по отдельности не тяжёлое.
Argo CD — инструмент доставки в Kubernetes по модели GitOps: состояние кластера описано в репозитории, а контроллер приводит кластер к описанию и показывает расхождения. Версия 3.5.0 вышла 4 августа.
Что внутри:
🔘 у обновлений, вызванных вебхуком, появился настраиваемый разброс по времени, так что одновременный наплыв размазывается;
🔘 контроллер наборов приложений научился обрабатывать приложения параллельно, а сами наборы теперь показываются в дереве ресурсов;
🔘 в интерфейсе появилась вкладка предпросмотра приложений для набора: видно, что именно сгенерирует шаблон, до применения;
🔘 в путях к файлам значений Helm заработали шаблоны со звёздочкой, вместо перечисления файлов вручную;
🔘 в альфа-режиме появилась проверка целостности источника для сухих ревизий, то есть подтверждение, что развёрнутое пришло из ожидаемого места;
🔘 у команд
🔘 внутри выполнен переход с Helm 3 на Helm 4 и обновление интерфейса на React 19.
Переход на Helm 4 и React 19 делают релиз ломающим для тех, кто держит собственные расширения интерфейса: для них выпущено отдельное руководство по обновлению. Перед прыжком через минорную версию авторы просят читать документацию по обновлению, там же лежат заметки о переходе с 3.4.
Пригодится тем, кто держит GitOps на десятки приложений и ловит всплески нагрузки после каждого пуша в общий репозиторий манифестов.
23,9 тысячи звёзд на GitHub против примерно 8 тысяч у ближайшего конкурента Flux.
Язык: Go. Лицензия: Apache 2.0.
@prog_tools
Argo CD — инструмент доставки в Kubernetes по модели GitOps: состояние кластера описано в репозитории, а контроллер приводит кластер к описанию и показывает расхождения. Версия 3.5.0 вышла 4 августа.
Что внутри:
argocd app добавлен флаг --app-namespace, а у команд наборов приложений — соответствующий флаг пространства имён;Переход на Helm 4 и React 19 делают релиз ломающим для тех, кто держит собственные расширения интерфейса: для них выпущено отдельное руководство по обновлению. Перед прыжком через минорную версию авторы просят читать документацию по обновлению, там же лежат заметки о переходе с 3.4.
Пригодится тем, кто держит GitOps на десятки приложений и ловит всплески нагрузки после каждого пуша в общий репозиторий манифестов.
23,9 тысячи звёзд на GitHub против примерно 8 тысяч у ближайшего конкурента Flux.
Язык: Go. Лицензия: Apache 2.0.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Helm — способ ставить приложения в Kubernetes не вручную. Вместо десятка YAML-файлов, которые надо править под каждое окружение, берётся чарт: шаблоны плюс файл значений. Стандарт де-факто, ближайший сосед Kustomize решает более узкую задачу и шаблонов не даёт.
13 августа вышла версия 4.2.4, патч. Изменения касаются отладки:
🔘
🔘 тестовые поды отдают логи всех контейнеров, а не только первого — раньше логи вспомогательных контейнеров просто терялись;
🔘 вернулся повтор при конфликте применения на стороне сервера;
🔘
🔘 в пакетах перестали исчезать пустые строки.
Отдельная причина обновиться: подтянуты зависимости с уязвимостями, gRPC и OpenTelemetry.
@prog_tools
13 августа вышла версия 4.2.4, патч. Изменения касаются отладки:
helm template --debug --show-only внятнее объясняет, какой шаблон сломался;helm push с аутентификацией по токену перестал падать на правах доступа к реестру;Отдельная причина обновиться: подтянуты зависимости с уязвимостями, gRPC и OpenTelemetry.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤔1
Podman запускает контейнеры без демона: команды вроде
12 августа вышла версия 6.1.0. Что стоит знать:
🔘 у
🔘 починено зависание удалённого клиента при работе через SSH;
🔘 добавлены
🔘 у
🔘
🔘 для проброса портов из Windows через WSL теперь нужен параметр
@prog_tools
podman run делают то же, что Docker, но нет фонового процесса с правами root, и контейнеры можно гонять от обычного пользователя. Docker остаётся популярнее, но там, где демон мешает — на сборочных машинах, в systemd, в закрытых окружениях, — Podman прижился именно поэтому.12 августа вышла версия 6.1.0. Что стоит знать:
podman manifest push появились --retry и --retry-delay: публикация образа больше не валит сборку из-за секундной сетевой ошибки;podman volume rename и podman machine restart;podman network rm появился --ignore — удобно в скриптах очистки;podman generate kube переносит проверки состояния контейнера в livenessProbe;force_port_listen в containers.conf.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
✍2⚡2
Старый Kindle можно повесить на стену как дашборд домашнего сервера. Считает сервер: dashink рисует картинку 600x800 в оттенках серого и отдаёт по
Как повторить, автор расписал:
🔘 сервер —
🔘 Kindle — джейлбрейк (метод сверяют по серийнику и прошивке, у автора подошёл WinterBreak), Hotfix, чтобы
🔘 на устройстве — 77 строк на busybox sh: скачать PNG, вывести через
Код на MIT. Ближайшая альтернатива, kindle-dash, между обновлениями усыпляет устройство в память, поэтому экономнее по батарее, но проверена только на Kindle 4 NT, а код не обновлялся с 2022 года.
@prog_tools
/dash.png, а читалка раз в 5 минут скачивает её и выводит на экран. На панели — сервисы из Uptime Kuma, заполненность пула, аптайм Proxmox и погода, а с 22:00 до 07:00 — фото из Immich.Как повторить, автор расписал:
docker compose up -d, в .env для полезного экрана хватает широты и долготы;.sh из /mnt/us/documents/ открывался из библиотеки как книга, блокировка OTA и SSH через USBNetwork;eips -g, каждый 12-й цикл — полная перерисовка от следов e-ink.Код на MIT. Ближайшая альтернатива, kindle-dash, между обновлениями усыпляет устройство в память, поэтому экономнее по батарее, но проверена только на Kindle 4 NT, а код не обновлялся с 2022 года.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2
Prometheus — база временных рядов, которая сама ходит по сервисам и собирает метрики, а потом отвечает на запросы вроде «сколько ошибок в секунду было вчера в 15:00». На нём же держатся алерты. Альтернативы есть, но они либо совместимы с ним по протоколу, либо решают другую задачу, так что для метрик это опорная точка индустрии.
11 августа опубликован кандидат в релиз 3.14.0. Самое важное — три починенные тихие поломки:
🔘 у обнаружения целей через Docker появились таймауты: зависший демон больше не морозит список целей навсегда, оставляя мониторинг со старыми адресами;
🔘 исправлена потеря данных и зацикливание перезапусков при определённом пороге уплотнения устаревших рядов;
🔘 исправлена потеря данных после перезапуска, если метрики приходят не по порядку.
Из нового: выражения длительности в PromQL включены по умолчанию, появилась функция
Перед обновлением: из данных Hetzner удалена метка с датацентром, а параметр
@prog_tools
11 августа опубликован кандидат в релиз 3.14.0. Самое важное — три починенные тихие поломки:
Из нового: выражения длительности в PromQL включены по умолчанию, появилась функция
start_timestamp(), добавлено обнаружение целей в облаке OCI.Перед обновлением: из данных Hetzner удалена метка с датацентром, а параметр
stats в запросах теперь ругается на устаревшие значения.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Munder Difflin — десктопное приложение, которое запускает несколько терминальных агентов сразу и рисует их офисом: каждая сессия
Автор показал в видео, что к Claude Code добавились opencode, crush, kimi и qwen. Анимация детерминированная, токенов не тратит.
Запуск: Node 18+, компилятор C/C++ для
Без офисной визуализации ту же задачу решает claude-squad: терминальное приложение, где каждая задача получает изолированный git-воркспейс.
@prog_tools
claude, codex, opencode, crush, kimi или qwen — настоящий процесс в псевдотерминале, а на 2D-этаже это персонаж, который ходит по рабочим местам, и между столами летают конверты-сообщения. У каждого агента память в markdown и почтовый ящик, задачи раздаёт агент-начальник Майкл — отсылка к «Офису», как и название.Автор показал в видео, что к Claude Code добавились opencode, crush, kimi и qwen. Анимация детерминированная, токенов не тратит.
Запуск: Node 18+, компилятор C/C++ для
node-pty, git clone, npm install, npm run dev, плюс хотя бы один агентский CLI в PATH. Electron, React, Pixi.js, xterm.js. Код на MIT, но пиксельная графика — по некоммерческой лицензии LimeZu, для коммерции её надо заменить.Без офисной визуализации ту же задачу решает claude-squad: терминальное приложение, где каждая задача получает изолированный git-воркспейс.
@prog_tools
❤8😁3
Забытые кавычки вокруг переменной — самая частая ошибка в скриптах на шелле: пока в пути нет пробела, всё работает, а потом внезапно ломается. ShellCheck ловит это и ещё сотни похожих случаев до запуска, а не в проде.
Запуск простой:
Важно, чем он не является:
Проекту почти четырнадцать лет, 39,9 тысячи звёзд, последний стабильный релиз в августе прошлого года, есть готовые интеграции с редакторами, хуками перед коммитом и сборкой.
Язык: Haskell. Лицензия: GPL-3.0.
@prog_tools
Запуск простой:
shellcheck script.sh. Дальше по вкусу — -s bash или -s dash для конкретного диалекта, -S error чтобы оставить только серьёзное, -e SC2086 чтобы заглушить конкретное правило. Флаг -x заставляет анализировать и файлы, подключённые через source. Для сборки есть форматы вывода -f json, -f gcc и -f checkstyle, а отключения можно писать прямо в коде директивой # shellcheck disable=SC....Важно, чем он не является:
bash -n проверяет только синтаксис, shfmt форматирует, Bats гоняет тесты. ShellCheck закрывает статические ошибки и не заменяет проверку поведения.Проекту почти четырнадцать лет, 39,9 тысячи звёзд, последний стабильный релиз в августе прошлого года, есть готовые интеграции с редакторами, хуками перед коммитом и сборкой.
Язык: Haskell. Лицензия: GPL-3.0.
@prog_tools
👍1
Покрытие тестами обычно считают по файлам, которые тесты подключили. Файл, до которого не дошёл ни один тест, в отчёт не попадает — и картина выглядит лучше, чем есть.
В Node.js 26.7.0 от 5 августа у встроенного запускальщика тестов появился флаг
Остальное в релизе:
🔘 в
🔘 в
🔘 в хуки модулей добавлена поддержка
🔘 обновлены корневые сертификаты и npm до 11.19.0.
Если собираете Node из исходников: теперь нужен компилятор Rust не ниже 1.86.
@prog_tools
В Node.js 26.7.0 от 5 августа у встроенного запускальщика тестов появился флаг
--test-coverage-include-all, который считает все файлы проекта. Отдельный инструмент вроде nyc для этого больше не нужен: свой раннер и покрытие в Node есть с 18-й версии.Остальное в релизе:
sqlite закрыты обращения к освобождённой памяти в Exec() и ApplyChangeset(), добавлен сброс сессий при закрытии базы;crypto появилась загрузка приватных ключей через загрузчики STORE — ключ можно брать из внешнего хранилища, а не только из файла;Symbol.dispose;Если собираете Node из исходников: теперь нужен компилятор Rust не ниже 1.86.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
yazi — файловый менеджер для терминала: ходишь по каталогам с клавиатуры, видишь превью картинок, PDF, кода и архивов прямо в панели, а действия и подсветку дописываешь на Lua. 15 августа вышла версия 26.8.15, у проекта 41,4 тыс. звёзд на GitHub на 17 августа.
🔘 drag-and-drop файлов из терминала в GUI-приложения и обратно;
🔘 корзина вместо безвозвратного удаления и массовое создание файлов;
🔘 меню помощи стало палитрой команд, у строки ввода появилась история;
🔘 автоматическое переключение светлой и тёмной темы вслед за терминалом;
🔘 собственный VFS-провайдер: плагин может подключить удалённое хранилище как каталог;
🔘 официальный APT-репозиторий для Debian и Ubuntu, превью через kitty-протокол внутри Zellij.
Очевидная альтернатива —
@prog_tools
Очевидная альтернатива —
mc: две панели, есть на любом сервере, работает без Rust-бинарника и плагинов, и для копирования файлов между двумя каталогами он удобнее. yazi берёт асинхронными превью, скоростью на больших каталогах и расширяемостью; из той же ниши ranger на Python и lf на Go, но у обоих превью и плагины скромнее.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
openleetcode запускает задачи LeetCode локально. Решение выполняется у вас на машине, а тесты лежат в открытом репозитории, а не на сервере сервиса: команда
🔘 около 1400 задач;
🔘 Python, C++, Rust, Go, Java, Kotlin, TypeScript и ещё несколько языков;
🔘 в версии 1.0.4 от 17 августа обновили зависимости и починили раннер, в том числе конфликт имён переменных и обработку однобайтных символов.
Сам LeetCode по многим пунктам лучше: каталог больше, тесты скрытые, есть редактор и обсуждения, а отправка решения на сервер всё равно остаётся отдельным шагом. Авторы прямо предупреждают, что локальные наборы тестов поддерживаются вручную и могут пропустить крайние случаи, а system design, SQL и задачи на многопоточность не поддерживаются вовсе.
Смысл в другом: решения и тесты живут в вашем git, работают офлайн, запускаются из вашего редактора и прогоняются в CI перед коммитом. На Linux и macOS установщик сам поднимает Piston через Docker Compose, на Windows ставится только CLI, бэкенд запускается руками.
@prog_tools
openleetcode submit ./solution.py --id 1 сама находит задачу, собирает обвязку под язык и прогоняет решение через Piston, который поднимается рядом в Docker.Сам LeetCode по многим пунктам лучше: каталог больше, тесты скрытые, есть редактор и обсуждения, а отправка решения на сервер всё равно остаётся отдельным шагом. Авторы прямо предупреждают, что локальные наборы тестов поддерживаются вручную и могут пропустить крайние случаи, а system design, SQL и задачи на многопоточность не поддерживаются вовсе.
Смысл в другом: решения и тесты живут в вашем git, работают офлайн, запускаются из вашего редактора и прогоняются в CI перед коммитом. На Linux и macOS установщик сам поднимает Piston через Docker Compose, на Windows ставится только CLI, бэкенд запускается руками.
curl -fsSL https://raw.githubusercontent.com/therepanic/openleetcode/main/install.sh | sh
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Открываете
Клиентов много и на любой вкус:
Честно про место в экосистеме:
Проект живёт с 2013 года, 63,4 тысячи звёзд и 5,4 тысячи форков — страницы пишет сообщество, и правки принимают постоянно.
@prog_tools
man tar, там четыре тысячи строк, а нужно всего лишь распаковать архив. tldr решает ровно эту задачу: показывает не полный справочник, а несколько типовых примеров использования команды.tldr tar — и вы видите пяток строк с готовыми командами: создать, распаковать, посмотреть содержимое. То же для find, ssh, chmod, git. Страницы написаны обычным Markdown, места для подстановки помечены двойными фигурными скобками, есть отдельные варианты для Linux, macOS и Windows.Клиентов много и на любой вкус:
pipx install tldr для Python, npm install -g tldr для Node, cargo install tlrc --locked для быстрого клиента на Rust.Честно про место в экосистеме:
man остаётся авторитетным и полным источником, cheat.sh ищет сразу по нескольким базам, navi даёт интерактивные шпаргалки. tldr выигрывает именно как быстрый ответ на вопрос «как этой командой сделать обычную вещь».Проект живёт с 2013 года, 63,4 тысячи звёзд и 5,4 тысячи форков — страницы пишет сообщество, и правки принимают постоянно.
@prog_tools
❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Плагин mobile-use даёт агенту в терминале управлять Android-телефоном: экран телефона рисуется прямо в боковой панели OpenCode, а агент нажимает, печатает, свайпает и открывает приложения через
Внутри 12 инструментов —
Ставится как npm-пакет, нужен OpenCode V2 (
@prog_tools
adb, каждый раз сверяясь со свежим скриншотом или дампом интерфейса. Автор показал это на видео.Внутри 12 инструментов —
phone_tap, phone_swipe, phone_type, phone_dump_ui, phone_logcat, phone_shell и другие, — плюс готовые сценарии для WhatsApp, X, камеры, Spotify и звонков и подагент phone-vision для моделей без зрения. Где можно, навигация начинается с deep links am start, а не с тыканья по интерфейсу. Телефон подключается по USB, по Wi-Fi или через Tailscale, то есть может лежать дома.Ставится как npm-пакет, нужен OpenCode V2 (
opencode2) и включённая отладка по USB; код на MIT. Не привязан к OpenCode другой вариант — mobile-mcp: тот же adb плюс iOS, через MCP и с любым совместимым клиентом, зато без живого экрана в интерфейсе.@prog_tools
👍2
OpenTelemetry Collector — прослойка между вашими сервисами и системами наблюдаемости. Сервисы шлют логи, метрики и трейсы в него, а он фильтрует, дописывает атрибуты и раскладывает по адресатам. Смысл в развязке: сменить систему хранения можно правкой конфига, не трогая код приложений. Fluent Bit и Vector делают похожее, но collector — эталонная реализация стандарта, и агенты под него пишут все.
4 августа вышла версия 0.158.0. Главное — новый компонент
Остальное:
🔘 в описаниях компонентов появились готовые типы
🔘 расширение
🔘 исправлено ложное предупреждение, из-за которого молча отключалась старая метрика;
🔘 отладочный экспортёр перестал печатать числовые атрибуты в сыром виде.
Ломающее: убраны проверяющие функции из пакета
@prog_tools
4 августа вышла версия 0.158.0. Главное — новый компонент
queuebatch вместо старого batchprocessor: он построен поверх общей обвязки экспортёров и настраивается теми же параметрами, что и очередь отправки, так что двух разных наборов настроек для соседних вещей больше нет.Остальное:
duration, opaque_string, opaque_map и другие;memory_limiter доросло до беты;Ломающее: убраны проверяющие функции из пакета
xconfmap, брать теперь из confmap.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
Jujutsu, или
🔘 стабилизирована работа с тегами:
🔘 новый revset
🔘
🔘
🔘 повторно переданный аргумент больше не ошибка, побеждает последний.
Альтернатива очевидна: сам Git. У него любой хостинг, submodules, IDE и десять лет чужих скриптов; у
@prog_tools
jj, — система контроля версий, которая работает поверх обычного Git-репозитория: коллеги видят привычные ветки и коммиты, а у вас другая модель. Рабочая копия сама по себе коммит, staging area нет, любая операция отменяется через jj undo, конфликты хранятся в истории и не блокируют работу. 6 августа вышла версия 0.44.0, у проекта 31 тыс. звёзд на 17 августа.jj git fetch забирает их как <имя>@<remote>, теги можно отслеживать и не отслеживать как bookmarks, jj git push --all теперь пушит и теги;merge_point() находит точку слияния веток, по аналогии с fork_point;jj file search печатает совпавшие строки с именем файла, номер строки добавляет -n, старое поведение — через --name-only;jj run идёт по ревизиям от старых к новым, получил --passthrough, --ignore-changes и --ignore-errors;Альтернатива очевидна: сам Git. У него любой хостинг, submodules, IDE и десять лет чужих скриптов; у
jj Git-совместимость объявлена стабильной, а команды и рабочий процесс до 1.0 могут меняться, о чём проект пишет в каждом релизе. Зато переписывание истории и работа с несколькими правками одновременно здесь заметно проще.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
DuckDB — база данных, которая живёт прямо внутри вашего процесса: ставится как библиотека, читает Parquet и CSV с диска и считает по ним аналитические запросы, без сервера и настройки. Примерно как SQLite, только заточенная не под строки, а под колонки и тяжёлые агрегаты.
Авторы показали превью версии 2.0, релиз обещают осенью. Главная перемена в том, что база перестаёт быть только внутрипроцессной: расширение
Кроме этого — триггеры BEFORE и AFTER, тип
@prog_tools
Авторы показали превью версии 2.0, релиз обещают осенью. Главная перемена в том, что база перестаёт быть только внутрипроцессной: расширение
quack даёт сетевой протокол, и через CONNECT один DuckDB подключается к другому, запрос выполняется на сервере, а результат течёт обратно.Кроме этого — триггеры BEFORE и AFTER, тип
VARIANT как полноценный, асинхронный ввод-вывод, новый парсер SQL и новый формат хранения. Рекурсивный обход графа из миллиона рёбер в замерах авторов ускорился с 4,90 до 0,12 секунды.@prog_tools
🔥3
Проблема с git не в командах, а в том, что непонятно, что они делают с графом коммитов. Learn Git Branching решает это буквально: вы вводите команду, и на экране двигаются кружочки и стрелки.
Песочница живёт целиком в браузере, ничего ставить и регистрироваться не нужно. Уровни идут от простого к сложному: создание веток, движение
Особенно полезно тем, кто уже несколько лет пользуется git по трём заученным командам и каждый раз боится перебазирования. После пары уровней становится видно, что ветка — это просто указатель на коммит, и половина страха уходит.
Проекту тринадцать лет, и он не устарел: модель коммитов и ссылок с тех пор не менялась, а тренажёр учит именно ей, а не кнопкам конкретного интерфейса.
@prog_tools
Песочница живёт целиком в браузере, ничего ставить и регистрироваться не нужно. Уровни идут от простого к сложному: создание веток, движение
HEAD, разница между merge и rebase, cherry-pick, отличие reset от revert, работа с удалённым репозиторием, разрешение конфликтов. Есть свободный режим, где можно ломать что угодно и откатывать через undo.Особенно полезно тем, кто уже несколько лет пользуется git по трём заученным командам и каждый раз боится перебазирования. После пары уровней становится видно, что ветка — это просто указатель на коммит, и половина страха уходит.
Проекту тринадцать лет, и он не устарел: модель коммитов и ссылок с тех пор не менялась, а тренажёр учит именно ей, а не кнопкам конкретного интерфейса.
@prog_tools
❤2
blitcp копирует файлы по карте диска: сначала строит карту, потом читает данные в том порядке, в каком они физически лежат. Задача та же, что у
🔘 склеивает мелкие файлы в один поток чтения;
🔘 пропускает дубликаты по хешу xxHash-128;
🔘 умеет reflink и жёсткие ссылки, понимает разрежённые файлы;
🔘 после копирования сверяет результат с исходником.
Цифры авторы приводят в заметках к версии 4.0.2: 85 ГБ с NVMe на USB скопировались за 44 минуты 47 секунд вместо часа и четырёх минут, а построение карты диска в Windows для 6600 файлов ускорилось с 12 минут 48 секунд до 0,7 секунды, потому что теперь файл открывается только на чтение атрибутов и Windows Defender не сканирует его содержимое. На тесте в Linux с 12 347 мелкими файлами вышло 5,93 секунды против 14,14 у
Автор сам говорит, где его инструмент не нужен: на быстром SSD без дубликатов обычный
Для работы по SSH дополнительно нужен
@prog_tools
cp и rsync, разница проявляется на множестве мелких файлов и на медленных носителях, то есть на HDD, флешках и NAS.Цифры авторы приводят в заметках к версии 4.0.2: 85 ГБ с NVMe на USB скопировались за 44 минуты 47 секунд вместо часа и четырёх минут, а построение карты диска в Windows для 6600 файлов ускорилось с 12 минут 48 секунд до 0,7 секунды, потому что теперь файл открывается только на чтение атрибутов и Windows Defender не сканирует его содержимое. На тесте в Linux с 12 347 мелкими файлами вышло 5,93 секунды против 14,14 у
rsync и 14,99 у cp -ar.Автор сам говорит, где его инструмент не нужен: на быстром SSD без дубликатов обычный
cp лучше, потому что хеширование и анализ диска добавляют накладные расходы. Для инкрементальной синхронизации с удалённым сервером rsync тоже остаётся более подходящим, и автор это признаёт.
mkdir -p ~/.local/bin && curl -fsSL https://raw.githubusercontent.com/gekap/blitcp/v4.0.2/blitcp.py -o ~/.local/bin/blitcp && chmod +x ~/.local/bin/blitcp
Для работы по SSH дополнительно нужен
paramiko.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
just — запускальщик команд проекта. Ту же роль обычно играет Makefile, но make всё-таки система сборки: он думает про файлы и зависимости, ругается на пробелы вместо табов и норовит не выполнить цель, если рядом лежит одноимённый файл. В
3 августа вышла версия 1.58.0, небольшая:
🔘 у рецепта появился атрибут
🔘 у него же есть аргумент формата;
🔘
🔘 при форматировании вокруг выражений подстановки добавляются пробелы.
Ломающих изменений нет.
@prog_tools
justfile пишутся просто именованные команды с аргументами, и это всё, что нужно, когда цель — собрать в одном месте «прогнать тесты», «поднять окружение», «выложить».3 августа вышла версия 1.58.0, небольшая:
[timestamp], печатающий время выполнения, — удобно для долгих сборок, где раньше приходилось обкладывать команду вызовами date;--justfile-name теперь принимает несколько имён через запятую;Ломающих изменений нет.
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM