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

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

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام Инструменты программиста

کانال Инструменты программиста (@prog_tools) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 12 941 مشترک است و جایگاه 9 484 را در دسته فناوری و برنامه‌ها و رتبه 49 950 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 12 941 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 26 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -80 و در ۲۴ ساعت گذشته برابر -8 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 10.43% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 5.90% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 1 349 بازدید دریافت می‌کند. در اولین روز معمولاً 763 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 4 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, git, docker, install, api تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Полезные инструменты для программистов — бесплатные и платные Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Регистрация в перечне РКН: https://tprg.ru/mX0S

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 27 اوت, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

12 941
مشترکین
-824 ساعت
-217 روز
-8030 روز
جذب مشترکین
اوت '26
اوت '26
+41
در 1 کانال‌ها
ژوئیه '26
+34
در 3 کانال‌ها
Get PRO
ژوئن '26
+58
در 2 کانال‌ها
Get PRO
مه '26
+74
در 0 کانال‌ها
Get PRO
آوریل '26
+48
در 2 کانال‌ها
Get PRO
مارس '26
+38
در 6 کانال‌ها
Get PRO
فوریه '26
+46
در 4 کانال‌ها
Get PRO
ژانویه '26
+75
در 2 کانال‌ها
Get PRO
دسامبر '25
+82
در 4 کانال‌ها
Get PRO
نوامبر '25
+74
در 7 کانال‌ها
Get PRO
اکتبر '25
+57
در 3 کانال‌ها
Get PRO
سپتامبر '25
+123
در 2 کانال‌ها
Get PRO
اوت '25
+78
در 2 کانال‌ها
Get PRO
ژوئیه '25
+108
در 2 کانال‌ها
Get PRO
ژوئن '25
+141
در 3 کانال‌ها
Get PRO
مه '25
+121
در 5 کانال‌ها
Get PRO
آوریل '25
+103
در 1 کانال‌ها
Get PRO
مارس '25
+149
در 7 کانال‌ها
Get PRO
فوریه '25
+96
در 4 کانال‌ها
Get PRO
ژانویه '25
+88
در 4 کانال‌ها
Get PRO
دسامبر '24
+95
در 5 کانال‌ها
Get PRO
نوامبر '24
+55
در 4 کانال‌ها
Get PRO
اکتبر '24
+72
در 6 کانال‌ها
Get PRO
سپتامبر '24
+112
در 6 کانال‌ها
Get PRO
اوت '24
+83
در 6 کانال‌ها
Get PRO
ژوئیه '24
+82
در 5 کانال‌ها
Get PRO
ژوئن '24
+43
در 2 کانال‌ها
Get PRO
مه '24
+114
در 2 کانال‌ها
Get PRO
آوریل '24
+126
در 6 کانال‌ها
Get PRO
مارس '24
+113
در 1 کانال‌ها
Get PRO
فوریه '24
+119
در 3 کانال‌ها
Get PRO
ژانویه '24
+100
در 5 کانال‌ها
Get PRO
دسامبر '23
+89
در 3 کانال‌ها
Get PRO
نوامبر '23
+3 608
در 35 کانال‌ها
Get PRO
اکتبر '23
+99
در 2 کانال‌ها
Get PRO
سپتامبر '23
+112
در 0 کانال‌ها
Get PRO
اوت '23
+153
در 0 کانال‌ها
Get PRO
ژوئیه '23
+142
در 0 کانال‌ها
Get PRO
ژوئن '23
+290
در 0 کانال‌ها
Get PRO
مه '23
+161
در 0 کانال‌ها
Get PRO
آوریل '23
+237
در 0 کانال‌ها
Get PRO
مارس '23
+248
در 0 کانال‌ها
Get PRO
فوریه '23
+348
در 0 کانال‌ها
Get PRO
ژانویه '23
+509
در 0 کانال‌ها
Get PRO
دسامبر '22
+219
در 0 کانال‌ها
Get PRO
نوامبر '22
+215
در 0 کانال‌ها
Get PRO
اکتبر '22
+478
در 0 کانال‌ها
Get PRO
سپتامبر '22
+287
در 0 کانال‌ها
Get PRO
اوت '22
+754
در 0 کانال‌ها
Get PRO
ژوئیه '22
+598
در 0 کانال‌ها
Get PRO
ژوئن '22
+1 143
در 0 کانال‌ها
Get PRO
مه '22
+692
در 0 کانال‌ها
Get PRO
آوریل '22
+846
در 0 کانال‌ها
Get PRO
مارس '22
+4 815
در 0 کانال‌ها
Get PRO
فوریه '22
+166
در 0 کانال‌ها
Get PRO
ژانویه '22
+2 400
در 0 کانال‌ها
Get PRO
دسامبر '21
+2 492
در 0 کانال‌ها
Get PRO
نوامبر '21
+2 933
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
27 اوت+5
26 اوت0
25 اوت0
24 اوت+4
23 اوت+1
22 اوت+4
21 اوت0
20 اوت0
19 اوت+1
18 اوت+3
17 اوت+1
16 اوت0
15 اوت0
14 اوت+1
13 اوت+1
12 اوت0
11 اوت+1
10 اوت+1
09 اوت+1
08 اوت+1
07 اوت+1
06 اوت+1
05 اوت+2
04 اوت+4
03 اوت+1
02 اوت+2
01 اوت+5
پست‌های کانال
terminal-notifier — маленькая утилита для macOS, которая показывает системное уведомление из шелла: собралась сборка, упали тесты, доехал деплой. 23 августа вышла версия 3.0.0 — первый релиз за девять лет. Всё переписано на Apple UserNotifications: старый NSUserNotification объявлен устаревшим ещё в macOS 11 и с тех пор ломался по частям. Бинарник универсальный, минимальная версия системы — 10.14; для более старых остаётся ветка 2.0.0. 🔘 Вернулись -action TITLE и -reply, которые убрали в 2.0.0 из-за приватного API. Они ждут человека и печатают ответ в stdout, так что скрипт может ветвиться по нажатой кнопке; ожидание ограничивается флагом -timeout. 🔘 -diagnose объясняет, почему уведомления не видно: разрешения, стиль баннера, звук, Фокусирование, сводка по расписанию, запущен ли Центр уведомлений. 🔘 Коды возврата со 2 по 6 различают неверный аргумент, проблему с разрешениями, таймаут и отказ сервиса. 🔘 Уведомления без -group перестали затирать друг друга, -remove действительно удаляет доставленные, а -contentImage больше не удаляет переданный ему файл. 🔘 Флаги -sender, -appIcon и -ignoreDnD теперь только печатают предупреждение и ничего не делают — старые скрипты не падают, но и эффекта нет. Штатный osascript -e 'display notification ...' уже стоит в системе и ничего ставить не нужно — для одноразового «готово» этого хватает. terminal-notifier берёт своё там, где нужны группировка, удаление, звук, коды возврата и ответ пользователя. 7,3 тысячи звёзд на 26 августа. Язык: Objective-C. Лицензия: MIT. @prog_tools

2
PocketBase — бэкенд в одном исполняемом файле: внутри SQLite, пользователи, файлы, REST API, подписки в реальном времени и админка. Рядом не нужны ни отдельная база, ни очередь. 23 августа вышла версия 0.40.0: 🔘 ошибки команд и перехваченные паники доходят до app.Start(): программа завершается ненулевым кодом, но хук app.OnTerminate всё равно отрабатывает; 🔘 появился DELETE /api/logs и кнопка в интерфейсе — удалить все логи, не трогая настройку хранения maxDays; 🔘 размер Log.Data ограничен примерно 16 килобайтами на случай, когда в лог пишут непроверенные пользовательские данные; лишнее помечается флагом __pb_truncated__; 🔘 создание резервной копии больше не держит базу в транзакции; 🔘 в заголовки по умолчанию добавлен Cross-Origin-Opener-Policy: same-origin; 🔘 modernc.org/sqlite обновлён до 1.57.0, а защитный режим SQLite включается по умолчанию через _defensive=1. Порог входа поднялся: нужен Go 1.27 и encoding/json/v2. Автор советует сначала проверить приложение локально — в Go 1.27 старый encoding/json переведён на v2 под капотом и обратно совместим не полностью. Supabase выигрывает как управляемый сервис на PostgreSQL, когда нужны масштабирование и команда. PocketBase выигрывает, когда приложение должно жить одним файлом на одной машине; до версии 1.0 его API ещё меняется. 60,8 тысячи звёзд. Язык: Go. Лицензия: MIT. @prog_tools
641
3
Мышь Logitech умеет больше, чем показывает система: переназначение кнопок, DPI, поведение колеса, жесты. Штатно это настраивается только через Logitech Options+, а под Linux его просто нет. OpenLogi говорит с устройствами по HID++ напрямую — без аккаунта и телеметрии. Вся конфигурация лежит в одном TOML-файле, который можно синхронизировать между машинами, и рядом с интерфейсом есть полноценная командная строка. 23 августа вышла версия 0.7.10: 🔘 ошибки открытия HID теперь видны в статусе агента, а не гасят работу молча; 🔘 интерфейс проверяет код возврата вспомогательного процесса при запуске агента; 🔘 openlogi list читает список устройств у уже запущенного агента; 🔘 нажатие на колесо-качельку перестало вызывать App Exposé, а прокрутка идёт на родную величину колеса; 🔘 корректно пересобранные записи об устройствах больше не выбрасываются. Options+ выигрывает официальной поддержкой и обновлением прошивок, и запускать их одновременно нельзя: приложения дерутся за доступ по HID++, ресивером владеет кто-то один. Сам проект честно пишет, что находится в активной разработке и стабильным пока не является. OpenLogi берёт своё там, где Options+ нет вовсе, и там, где настройки хочется держать текстом. Больше 15 тысяч звёзд. Язык: Rust. Лицензия: Apache-2.0 или MIT на выбор. @prog_tools
811
4
tuicr — просмотрщик диффов для терминала, где можно оставлять построчные замечания, как в интерфейсе пул-реквеста, и одной ко
tuicr — просмотрщик диффов для терминала, где можно оставлять построчные замечания, как в интерфейсе пул-реквеста, и одной командой отправить их ревью в GitHub, GitLab или Bitbucket. Управление вимовское, работает поверх git, jj и Mercurial. 🔘 Смотреть можно незакоммиченные правки, диапазон коммитов или чужой пул-реквест. Дифф идёт сплошным потоком по всем файлам, как на вебе. 🔘 Отметки «файл просмотрен» сохраняются между запусками, так что большое ревью можно бросить и вернуться. Клавиша H прячет уже отмеченное. 🔘 20 августа вышла версия 0.23.1, двумя днями раньше — 0.23.0 с командой :summary. git diff универсальнее и не требует авторизации, но построчных замечаний и памяти о прогрессе у него нет. gh pr review выставляет официальный статус ревью, чего локальный просмотр не умеет, зато инлайн-комментарии через него не оставить. Для отправки tuicr нужны авторизованные gh, glab или bkt; у Bitbucket пока нет Request changes и черновиков. Звёзд на GitHub 2820 на 21 августа. @prog_tools
867
5
Есть у нас один знакомый разработчик, который давно не отдыхал. Последний отпуск — где-то в районе позапрошлого года. Чемодан
Есть у нас один знакомый разработчик, который давно не отдыхал. Последний отпуск — где-то в районе позапрошлого года. Чемодан на антресолях, паспорт неизвестно где, в комнате — бардак. Сам он не соберётся, нужна ваша помощь → https://tprg.ru/0Q5k
880
6
bottom, в командной строке btm, — системный монитор для терминала: процессор, память, swap, сеть, диски, температуры, батарея и дерево процессов графиками на одном экране. 13 августа вышла версия 0.14.8, у проекта 13,9 тыс. звёзд на 17 августа. 🔘 релиз небольшой: починены закрытие меню сортировки по Enter, обработка значения swap в cgroups v1 и ссылки в JSON-схеме конфига; 🔘 графики масштабируются по времени, есть фильтры процессов, темы и собственные раскладки виджетов; 🔘 одна и та же сборка работает на Linux, macOS и Windows. Альтернатива — htop: он есть в каждом дистрибутиве, проще и понятнее с первого взгляда, и для задачи «найти и убить процесс» его хватает. bottom берёт графиками во времени и тем, что показывает всё сразу, включая сеть и температуры; из той же ниши btop с более нарядным интерфейсом. @prog_tools
882
7
Network Doctor — консольная утилита, которая отвечает на вопрос «интернет вроде есть, а сервис не работает — где именно рвётся». Одна команда netdoc github.com прогоняет цепочку интерфейс, DNS, TCP, TLS, HTTP, прокси и path MTU и пишет вердикт обычным языком: DNS упал, всё зависимое пропущено, чинить надо запись. 14 августа вышла версия 1.11.4; у репозитория 253 звезды на 17 августа, проект молодой. 🔘 netdoc host:22 проверяет путь до SSH и баннер, netdoc без цели — локальный интерфейс, выход в интернет, прокси и Wi-Fi; 🔘 --watch ловит плавающие сбои, --json и коды выхода 0/1/2 годятся для скриптов и баг-репортов; 🔘 root не нужен даже для path MTU: только непривилегированные сокеты; 🔘 Linux, macOS, Windows; ставится через Homebrew, Scoop и winget. Альтернатива — связка ping, dig, curl -v и mtr: она есть везде и показывает больше деталей, а mtr лучше видит потери по хопам. Network Doctor выигрывает, когда нужен не набор выводов, а ответ, чья это проблема: сети, пути или сервиса. @prog_tools
925
8
Подключились по SSH к незнакомой базе, и дальше начинается археология: как называется таблица, какие в ней колонки, не снесёт ли этот UPDATE пол-базы. pgcli — терминальный клиент PostgreSQL, который подсказывает по ходу набора запроса. 🔘 после FROM предлагает таблицы, после WHERE — колонки именно этих таблиц, учитывает псевдонимы; 🔘 подсвечивает синтаксис и печатает результат ровной таблицей; 🔘 \d, \dt, \dn, \du, \dx показывают устройство схемы, пользователей и расширения; 🔘 --warn all предупреждает перед разрушительным запросом, прежде чем выполнить; 🔘 --row-limit не даёт случайно вывалить в терминал миллион строк; 🔘 --auto-vertical-output разворачивает широкие результаты по вертикали, когда они не влезают; 🔘 \watch, \timing и \copy закрывают повторный запуск запроса, замер времени и выгрузку. Для скриптов и полного покрытия возможностей PostgreSQL остаётся psql: он есть везде и ничего лишнего не делает. pgcli удобнее там, где вы руками разбираетесь в чужой базе. 13,3 тысячи звёзд. Язык: Python. Лицензия: BSD-3-Clause. @prog_tools
947
9
После выката надо свести три лога: веб-сервера, приложения и системный. Обычно это заканчивается связкой tail | grep | less в трёх окнах и ручным сопоставлением времени. lnav открывает все файлы сразу, распознаёт формат каждого, распаковывает сжатые и показывает записи одной лентой по времени. 🔘 lnav app.log nginx/ syslog.gz — файлы, каталоги и архивы вперемешку, форматы определяются сами; 🔘 e и E прыгают к предыдущей и следующей ошибке, не заставляя искать глазами; 🔘 / ищет регулярным выражением, :highlight подсвечивает совпадения дальше по ленте; 🔘 ; открывает SQL по логам: записи разобраны на поля, и по ним можно считать группировки; 🔘 i рисует гистограмму сообщений по времени — сразу видно всплеск; 🔘 P разворачивает структурированный текст вроде JSON в читаемый вид; 🔘 F5 повторяет текущую операцию, включая последний SQL-запрос, когда логи доехали. Для веб-аналитики с отчётами удобнее goaccess, для потоковой обработки в конвейере — angle-grinder. lnav сильнее именно как интерактивный просмотр разнородных логов на одной машине. 10,5 тысячи звёзд. Язык: C++. Лицензия: BSD-2-Clause. @prog_tools
964
10
Баг воспроизводится раз в сотню запусков, а под отладчиком не воспроизводится вообще. rr записывает выполнение программы под Linux целиком, а потом проигрывает эту запись сколько угодно раз — с точностью до инструкции. Тот самый неудачный запуск можно пересматривать, ставить точки останова задним числом и двигаться по времени назад. 🔘 rr record ./program записывает выполнение вместе со всем, что программа получила извне; 🔘 rr replay открывает запись в GDB, где работают привычные команды; 🔘 reverse-cont продолжает выполнение назад — от места падения к причине; 🔘 watch -l ставит аппаратную точку наблюдения за адресом, после чего можно откатиться к предыдущей записи в него; 🔘 повторный run проигрывает тот же след заново, сохраняя расставленные точки останова; 🔘 rr pack делает след самодостаточным, чтобы передать его коллеге; 🔘 записываются деревья процессов и потоки, а режим хаоса помогает выловить редкие варианты планирования. Ограничения честные: только Linux и только на процессорах с подходящими счётчиками производительности. Обычные GDB и LLDB переносимее, но обратной отладки не дают. 10,6 тысячи звёзд. Язык: C++. Лицензия: MIT. @prog_tools
952
11
Сервис на проде внезапно ест процессор. Перезапускать с профилировщиком нельзя: проблема как раз пропадёт. py-spy подключается к уже работающему процессу Python по идентификатору и показывает, где тот проводит время. Код менять не нужно, перезапускать тоже, сам процесс при этом продолжает работать. 🔘 py-spy top --pid 1234 — живой список горячих функций, как top, только по функциям; 🔘 py-spy record -o profile.svg --pid 1234 — запись flame graph в файл; 🔘 py-spy dump --pid 1234 — стеки всех потоков прямо сейчас, полезно, когда процесс завис; 🔘 --locals добавляет к стекам значения локальных переменных; 🔘 --subprocesses включает дочерние процессы и обработчики очередей; 🔘 --native показывает и нативные расширения, а --gil отделяет время под глобальной блокировкой; 🔘 --nonblocking не приостанавливает процесс ради снимка — чуть менее точно, зато безопаснее на проде. Встроенный cProfile требует запускать программу под собой, pyinstrument — правки кода. Если нужен разбор ещё и памяти с видеокартой, смотрите в сторону Scalene, но для «зайти и посмотреть, что происходит прямо сейчас» py-spy проще. 15,2 тысячи звёзд. Язык: Rust. Лицензия: MIT. @prog_tools
940
12
Профилировщик выдал десятки тысяч стеков вызовов. Читать это построчно бессмысленно, и ровно для этого Брендан Грегг придумал флейм-графы — способ свернуть все стеки в одну картинку. Читается она не так, как кажется на первый взгляд. По горизонтали не время, а совокупная частота: ширина блока показывает, в скольких снимках встретился этот кадр. По вертикали — глубина вызовов, родитель снизу, потомки сверху. Верхняя кромка — то, где программа реально находилась в момент снятия. Цвет смысла не несёт, он нужен только чтобы блоки различались. Появилась техника из практической беды: трассировка производительности MySQL оказалась слишком дорогой, и вместо полного трассирования Грегг стал брать выборку стеков. Скрипты работают поверх perf, DTrace, SystemTap, eBPF и профилировщиков Windows. Кроме обычного графа по процессору есть графы по памяти, по времени вне процессора, разностные и горячие-холодные. Отдельно стоит запомнить разницу: во флейм-чарте ось X — это действительно время, во флейм-графе — нет. @prog_tools
940
13
Bun — среда выполнения JavaScript и TypeScript, которая заодно работает пакетным менеджером, сборщиком и тест-раннером: один
Bun — среда выполнения JavaScript и TypeScript, которая заодно работает пакетным менеджером, сборщиком и тест-раннером: один бинарник вместо связки node, npm, tsx и jest. 20 августа вышла версия 1.4. Главное в ней — совместимость: в набор, который гоняется на каждом коммите, добавили 1517 тестов из официального тестового набора Node.js; файлов этого набора теперь проходит 3743 против 1450 на версии 1.2. node:events и node:sqlite проходят его на 100%, node:quic на 99%, node:http, node:fs, node:cluster и node:stream на 97%. Под Bun заработали Playwright, vitest и Next.js 16 с Turbopack. Простой процесс ест впятеро меньше процессора, память до 35% меньше, старт на Linux быстрее наполовину. Реализация переписана с Zig на Rust. Релиз задержался на три месяца — самый долгий разрыв между стабильными версиями с 2022 года. Теро Пиирайнен посчитал авторство коммитов за месяц: 15,8 тысячи от бота robobun, 790 от Джарреда Самнера. Полной совместимости с Node.js по-прежнему нет, команда это признаёт. @prog_tools
1 021
14
DuckDB — аналитическая база, которая живёт внутри вашего процесса, как SQLite. Отличие в том, что SQLite заточена под много мелких операций со строками, а DuckDB под запросы, которые читают миллионы строк и считают агрегаты. Практический смысл: SQL прямо по файлам Parquet и CSV, без поднятия сервера и без загрузки данных куда-либо. Именно из-за этого сценария важен свежий выпуск 1.5.5 от 22 июля: файлы часто приходят извне, а база встроена в приложение, поэтому падает не отдельный сервер, а весь процесс. 🔘 перенесены исправления чтения за границами выделенной памяти; 🔘 разбор Parquet отклоняет страницы DATA_PAGE_V2 с несогласованным полем сжатого размера; 🔘 исправлена взаимная блокировка в управлении временной памятью; 🔘 в журнал HTTP-запросов добавлены длина тела и ошибки транспорта — полезно при чтении данных прямо из S3. Выпуск целиком про исправления, ломающих изменений нет. @prog_tools
1 005
15
В университетах учат алгоритмам и системам, но не учат пользоваться инструментами, на которых стоит вся работа. MIT сделал под это отдельный курс — The Missing Semester of Your CS Education: одиннадцать лекций примерно по часу, с конспектами, упражнениями и видео, бесплатно. Что разбирают: устройство оболочки и почему пробелы и кавычки ведут себя так странно; перенаправление потоков и конвейеры; сценарии на bash с переменными, циклами и кодами возврата; редактор Vim по режимам; управление процессами, сигналы, jobs, fg, bg, nohup; модель git как ориентированного графа из объектов; отладка через логи, gdb, strace и профилировщики; сборку и Makefile; хеши, энтропию и ssh; обработку данных стандартными утилитами. Это тот случай, когда курс полезнее не студенту, а практикующему разработчику: большинство пробелов в этих темах закрываются годами по крупицам, а тут они собраны в один заход с упражнениями. Ссылка ведёт на архив 2020 года — самодостаточный и без современных дополнений. @prog_tools
1 078
16
k6 гоняет нагрузочные тесты, которые пишутся обычным JavaScript и запускаются одной командой из терминала. Сценарий лежит в репозитории рядом с кодом, порог вида «99-й перцентиль меньше трёх секунд» описывается прямо в файле, а результат печатается в консоль или уезжает в дашборд. 🔘 HTTP, WebSockets, gRPC и браузерные сценарии в одном инструменте; 🔘 в версии 2.2.0 от 10 августа появился chromium.connectOverCDP(), то есть тест можно подключить к уже запущенному Chromium и брать адрес сессии во время выполнения; 🔘 TextEncoder и TextDecoder стали глобальными, а в экспериментальных потоках появился WritableStream; 🔘 SharedArray перестал замораживать примитивы и оборачивать длинные строки в объекты: в присланной репродукции потребление памяти упало примерно с 1 ГБ до 100 МБ. Очевидная альтернатива это JMeter, и по ряду пунктов он лучше: графический редактор тест-планов, запись сценариев и протоколы, которых у k6 нет вовсе, вроде JDBC, LDAP, FTP и JMS. k6 берёт другим: тест это код в git, запускается в CI одной командой и ревьюится как обычный пул-реквест. Оговорка из документации: на больших тестах узким местом становится сама машина-генератор, и завышенная задержка окажется вашей собственной. Авторы советуют оставлять около 20% процессора свободными. brew install k6 @prog_tools
1 110
17
just — запускальщик команд проекта. Ту же роль обычно играет Makefile, но make всё-таки система сборки: он думает про файлы и зависимости, ругается на пробелы вместо табов и норовит не выполнить цель, если рядом лежит одноимённый файл. В justfile пишутся просто именованные команды с аргументами, и это всё, что нужно, когда цель — собрать в одном месте «прогнать тесты», «поднять окружение», «выложить». 3 августа вышла версия 1.58.0, небольшая: 🔘 у рецепта появился атрибут [timestamp], печатающий время выполнения, — удобно для долгих сборок, где раньше приходилось обкладывать команду вызовами date; 🔘 у него же есть аргумент формата; 🔘 --justfile-name теперь принимает несколько имён через запятую; 🔘 при форматировании вокруг выражений подстановки добавляются пробелы. Ломающих изменений нет. @prog_tools
1 029
18
blitcp копирует файлы по карте диска: сначала строит карту, потом читает данные в том порядке, в каком они физически лежат. Задача та же, что у cp и rsync, разница проявляется на множестве мелких файлов и на медленных носителях, то есть на HDD, флешках и NAS. 🔘 склеивает мелкие файлы в один поток чтения; 🔘 пропускает дубликаты по хешу 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 у 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
1 074
19
Проблема с git не в командах, а в том, что непонятно, что они делают с графом коммитов. Learn Git Branching решает это буквально: вы вводите команду, и на экране двигаются кружочки и стрелки. Песочница живёт целиком в браузере, ничего ставить и регистрироваться не нужно. Уровни идут от простого к сложному: создание веток, движение HEAD, разница между merge и rebase, cherry-pick, отличие reset от revert, работа с удалённым репозиторием, разрешение конфликтов. Есть свободный режим, где можно ломать что угодно и откатывать через undo. Особенно полезно тем, кто уже несколько лет пользуется git по трём заученным командам и каждый раз боится перебазирования. После пары уровней становится видно, что ветка — это просто указатель на коммит, и половина страха уходит. Проекту тринадцать лет, и он не устарел: модель коммитов и ссылок с тех пор не менялась, а тренажёр учит именно ей, а не кнопкам конкретного интерфейса. @prog_tools
1 059
20
DuckDB — база данных, которая живёт прямо внутри вашего процесса: ставится как библиотека, читает Parquet и CSV с диска и счи
DuckDB — база данных, которая живёт прямо внутри вашего процесса: ставится как библиотека, читает Parquet и CSV с диска и считает по ним аналитические запросы, без сервера и настройки. Примерно как SQLite, только заточенная не под строки, а под колонки и тяжёлые агрегаты. Авторы показали превью версии 2.0, релиз обещают осенью. Главная перемена в том, что база перестаёт быть только внутрипроцессной: расширение quack даёт сетевой протокол, и через CONNECT один DuckDB подключается к другому, запрос выполняется на сервере, а результат течёт обратно. Кроме этого — триггеры BEFORE и AFTER, тип VARIANT как полноценный, асинхронный ввод-вывод, новый парсер SQL и новый формат хранения. Рекурсивный обход графа из миллиона рёбер в замерах авторов ускорился с 4,90 до 0,12 секунды. @prog_tools
1 079