DBeaver 26.2.3 запускает SQL-файлы без открытия в редакторе
Когда готовый SQL-скрипт нужно просто выполнить, отдельная вкладка бывает лишней. В DBeaver 26.2.3 добавили запуск файлов со скриптами без открытия в SQL-редакторе.
После успешного выполнения DDL — например, изменения структуры таблицы — появилось уведомление, предлагающее обновить затронутые метаданные. Это помогает привести дерево объектов в соответствие с изменениями в базе.
В той же версии исправили массовый импорт в PostgreSQL: раньше могли некорректно обрабатываться обратные слеши и пользовательские символы экранирования CSV.
Пригодится тем, кто регулярно запускает подготовленные SQL-файлы и загружает данные через настольный клиент. Перед выполнением всё равно проверьте подключение и содержимое скрипта: новый способ запуска не добавляет автоматического отката.
#инструменты #sql
Когда готовый SQL-скрипт нужно просто выполнить, отдельная вкладка бывает лишней. В DBeaver 26.2.3 добавили запуск файлов со скриптами без открытия в SQL-редакторе.
После успешного выполнения DDL — например, изменения структуры таблицы — появилось уведомление, предлагающее обновить затронутые метаданные. Это помогает привести дерево объектов в соответствие с изменениями в базе.
В той же версии исправили массовый импорт в PostgreSQL: раньше могли некорректно обрабатываться обратные слеши и пользовательские символы экранирования CSV.
Пригодится тем, кто регулярно запускает подготовленные SQL-файлы и загружает данные через настольный клиент. Перед выполнением всё равно проверьте подключение и содержимое скрипта: новый способ запуска не добавляет автоматического отката.
#инструменты #sql
GitHub Actions фиксирует зависимости workflow в lock-файле
Ссылка на action через тег удобна для чтения, но тег может переместиться. Тогда следующий запуск выполнит другой код, хотя файл workflow в вашем репозитории не менялся.
В GitHub Actions появился механизм lock-файлов, пока в public preview. Расширение
Фиксируются actions, их транзитивные зависимости и зависимости переиспользуемых workflow. Подключать механизм можно постепенно, для отдельных workflow. При обновлении action через Dependabot соответствующая запись в lock-файле обновляется в том же PR.
Так изменения зависимостей становятся видны на ревью. Но сначала проверьте сам код: фиксация коммита обеспечивает постоянство версии, а оценивать её безопасность всё равно нужно отдельно.
#инструменты #github #ci
Ссылка на action через тег удобна для чтения, но тег может переместиться. Тогда следующий запуск выполнит другой код, хотя файл workflow в вашем репозитории не менялся.
В GitHub Actions появился механизм lock-файлов, пока в public preview. Расширение
gh actions-lock создаёт .github/workflows/actions.lock с конкретными коммитами зависимостей.Фиксируются actions, их транзитивные зависимости и зависимости переиспользуемых workflow. Подключать механизм можно постепенно, для отдельных workflow. При обновлении action через Dependabot соответствующая запись в lock-файле обновляется в том же PR.
Так изменения зависимостей становятся видны на ревью. Но сначала проверьте сам код: фиксация коммита обеспечивает постоянство версии, а оценивать её безопасность всё равно нужно отдельно.
#инструменты #github #ci
uv помогает подготовить окружение для тестов самого Django
Нашли ошибку во фреймворке и хотите проверить исправление? У Django есть собственный набор тестов. Адам Джонсон показывает, как подготовить для него окружение через uv.
В корне клонированного репозитория Django:
Первая команда создаёт
Затем активируйте окружение, перейдите в
В статье также разобрана проблема сборки
#инструменты #python #django
Нашли ошибку во фреймворке и хотите проверить исправление? У Django есть собственный набор тестов. Адам Джонсон показывает, как подготовить для него окружение через uv.
В корне клонированного репозитория Django:
uv venv
uv pip install -e . -r tests/requirements/py3.txt
Первая команда создаёт
.venv, вторая устанавливает Django в редактируемом режиме и зависимости тестов. Изменения в исходниках фреймворка будут доступны без повторной установки пакета.Затем активируйте окружение, перейдите в
tests и запустите runtests.py. Это подготовка к работе над самим Django; тесты вашего приложения запускаются отдельно.В статье также разобрана проблема сборки
pylibmc. Его можно исключить из установки, но тогда зависящие от него тесты будут пропущены.#инструменты #python #django
Zed сравнивает каталоги в двух соседних панелях
Нужно сопоставить две копии проекта или результат генерации файлов? В Zed 1.24.2 появился просмотр различий каталогов рядом друг с другом через
Например, для двух локальных папок:
Так удобнее просматривать изменения сразу в нескольких файлах: исходная и новая версии открываются в соседних панелях.
Ещё в релизе добавили создание Git-тегов из истории коммитов и Git Graph. Команда
А поиск файлов теперь может подставлять текст, выделенный в редакторе или терминале. Мелочь, которая убирает копирование имени файла из сообщения об ошибке в строку поиска.
#инструменты #zed #git
Нужно сопоставить две копии проекта или результат генерации файлов? В Zed 1.24.2 появился просмотр различий каталогов рядом друг с другом через
zed --diff.Например, для двух локальных папок:
zed --diff ./before ./after
Так удобнее просматривать изменения сразу в нескольких файлах: исходная и новая версии открываются в соседних панелях.
Ещё в релизе добавили создание Git-тегов из истории коммитов и Git Graph. Команда
git: create tag at head ставит локальный тег на текущий коммит. Автоматической отправки тега на сервер нет.А поиск файлов теперь может подставлять текст, выделенный в редакторе или терминале. Мелочь, которая убирает копирование имени файла из сообщения об ошибке в строку поиска.
#инструменты #zed #git
❤🔥2
Azure Developer CLI ограничивает параллелизм по этапам развёртывания
В проекте с несколькими сервисами одновременная сборка и публикация могут упираться в ресурсы машины или ограничения облака.
В сентябрьских обновлениях Azure Developer CLI добавили отдельные ограничения параллелизма для этапов
Пригодится, например, когда сборку нескольких сервисов можно распараллелить, а создание ресурсов или публикацию нужно выполнять с меньшей нагрузкой.
В
Это возможности инструмента для развёртывания в Azure. В обзоре разобраны версии 1.33.0–1.34.2.
#инструменты #azure #cli
В проекте с несколькими сервисами одновременная сборка и публикация могут упираться в ресурсы машины или ограничения облака.
В сентябрьских обновлениях Azure Developer CLI добавили отдельные ограничения параллелизма для этапов
package, provision, publish и deploy. Теперь число одновременно выполняемых операций можно настраивать под каждый этап.Пригодится, например, когда сборку нескольких сервисов можно распараллелить, а создание ресурсов или публикацию нужно выполнять с меньшей нагрузкой.
В
azure.yaml также появились слои инфраструктуры и сервисов для организации сложных проектов. А azd init --template предупреждает, если репозиторий шаблона архивирован.Это возможности инструмента для развёртывания в Azure. В обзоре разобраны версии 1.33.0–1.34.2.
#инструменты #azure #cli
caffeinate не даёт macOS уснуть до завершения команды
Запустили долгую сборку и отошли от ноутбука? В macOS есть встроенная утилита
Передайте ей нужную команду:
Защита действует, пока команда работает. После завершения обычный режим сна вернётся.
Если процесс уже запущен, укажите его PID, например:
А вариант
В руководстве Адама Джонсона есть важное ограничение: закрытие крышки всё ещё может усыпить ноутбук. Блокировка экрана при этом не мешает задаче продолжать работу.
#инструменты #macos #терминал
Запустили долгую сборку и отошли от ноутбука? В macOS есть встроенная утилита
caffeinate, которая удерживает систему от автоматического сна из-за бездействия.Передайте ей нужную команду:
caffeinate ./build.sh
Защита действует, пока команда работает. После завершения обычный режим сна вернётся.
Если процесс уже запущен, укажите его PID, например:
caffeinate -w 12345
А вариант
caffeinate -id ./build.sh дополнительно не даст погаснуть дисплею. Без аргументов утилита работает до остановки через Ctrl+C.В руководстве Адама Джонсона есть важное ограничение: закрытие крышки всё ещё может усыпить ноутбук. Блокировка экрана при этом не мешает задаче продолжать работу.
#инструменты #macos #терминал
🤝2🐳1💯1
hyperfine: сравнить команды с прогревом и повторами
Один удачный запуск ещё мало говорит о скорости команды: на время влияют кеши и соседние процессы. hyperfine повторяет измерения и показывает их разброс, а результаты можно сохранить в JSON.
Короткий учебный пример для hyperfine 2.0 и Unix, где доступна команда
Для каждой команды сначала пройдут три прогревочных запуска, затем десять измеряемых. Флаг
В рабочем замере замените обе
Один удачный запуск ещё мало говорит о скорости команды: на время влияют кеши и соседние процессы. hyperfine повторяет измерения и показывает их разброс, а результаты можно сохранить в JSON.
Короткий учебный пример для hyperfine 2.0 и Unix, где доступна команда
sleep:hyperfine --warmup 3 --runs 10 --export-json timings.json 'sleep 0.1' 'sleep 0.2'
Для каждой команды сначала пройдут три прогревочных запуска, затем десять измеряемых. Флаг
--export-json запишет результаты в timings.json. В версии 2.0 для конвейеров и перенаправлений отдельно нужен -S.В рабочем замере замените обе
sleep на варианты, выполняющие одинаковую задачу с одними входными данными. Прогрев нужен для сценария с тёплым кешем. Полученные числа описывают вашу машину и эти условия, поэтому переносить коэффициент ускорения на любой проект нельзя.doggo: какие MX-записи видит выбранный DNS-сервер
После смены DNS-записей полезно явно выбрать сервер, к которому уходит запрос. В doggo домен, тип записи и адрес резолвера помещаются в одну команду:
Это пример из README: запрос MX-записей для
Для такого запроса нужны установленный doggo и доступ к выбранному серверу. Один ответ показывает состояние у этого резолвера в момент проверки. Если проверяете распространение изменения, сопоставьте ответы нескольких серверов: успешный запрос к одному ещё не означает, что новые записи видны всем.
После смены DNS-записей полезно явно выбрать сервер, к которому уходит запрос. В doggo домен, тип записи и адрес резолвера помещаются в одну команду:
doggo MX github.com @9.9.9.9
Это пример из README: запрос MX-записей для
github.com через 9.9.9.9. Подставьте свой домен, чтобы посмотреть его ответ. Утилита выводит записи в таблице, а флаг --json пригодится, если результат нужно обработать скриптом.Для такого запроса нужны установленный doggo и доступ к выбранному серверу. Один ответ показывает состояние у этого резолвера в момент проверки. Если проверяете распространение изменения, сопоставьте ответы нескольких серверов: успешный запрос к одному ещё не означает, что новые записи видны всем.
🐳2👌1💯1
sd: сначала посмотреть замену, потом записать файл
У sd важная особенность: если передать имя файла, замена по умолчанию записывается прямо в него. Для предварительного просмотра есть
Допустим, в вашем
Флаг
Если результат подходит, повторите команду без
У sd важная особенность: если передать имя файла, замена по умолчанию записывается прямо в него. Для предварительного просмотра есть
-p.Допустим, в вашем
config.txt нужно заменить локальный адрес. Пример с условным адресом назначения:sd -p -F 'http://localhost:3000' 'https://api.example.com' config.txt
Флаг
-F включает буквальный поиск. Без него поисковая строка считается регулярным выражением. Это важно для адресов с точками и другими специальными символами. С -p вы увидите преобразованный текст в терминале, исходный файл останется прежним.Если результат подходит, повторите команду без
-p и проверьте diff. sd заменяет текстовые совпадения, включая строки и комментарии. Для правки кода, где нужно учитывать структуру выражений, такого поиска может быть недостаточно.bottom: графики нагрузки и процессы в одном терминале
Сборка тормозит, память растёт, а по одному списку процессов трудно увидеть, как менялась нагрузка. bottom собирает рядом графики CPU, RAM, swap и сетевого ввода-вывода, а также таблицу процессов.
После установки программа запускается как
Это отправная точка диагностики: монитор показывает нагрузку, но сам не назовёт строку кода, из-за которой растёт память. Перед установкой сверяйтесь со списком ОС и архитектур в README. Доступность отдельных показателей зависит от платформы и оборудования.
Сборка тормозит, память растёт, а по одному списку процессов трудно увидеть, как менялась нагрузка. bottom собирает рядом графики CPU, RAM, swap и сетевого ввода-вывода, а также таблицу процессов.
После установки программа запускается как
btm. В таблице можно искать и сортировать процессы, есть древовидное представление. Нажмите ? внутри интерфейса, чтобы открыть справку по управлению. Так можно наблюдать систему, пока вы повторяете медленную операцию, и сопоставлять графики со списком процессов.Это отправная точка диагностики: монитор показывает нагрузку, но сам не назовёт строку кода, из-за которой растёт память. Перед установкой сверяйтесь со списком ОС и архитектур в README. Доступность отдельных показателей зависит от платформы и оборудования.
lychee: проверить ссылки в README перед ревью
Правка документации может выглядеть безупречно, пока кто-нибудь не откроет ссылку на удалённую страницу. lychee извлекает ссылки из Markdown и HTML и проверяет их доступность.
Если утилита установлена, запустите в каталоге с вашим README:
Флаг
Такой результат стоит разобрать: ограничения запросов, авторизация и тайм-ауты могут мешать автоматическому клиенту, даже когда страница существует. Проверка внешних адресов обращается к сайтам по сети. Режим
Правка документации может выглядеть безупречно, пока кто-нибудь не откроет ссылку на удалённую страницу. lychee извлекает ссылки из Markdown и HTML и проверяет их доступность.
Если утилита установлена, запустите в каталоге с вашим README:
lychee --no-progress README.md
Флаг
--no-progress убирает прогресс-бар и удобен для журналов CI. Код выхода 2 означает, что хотя бы одна не исключённая ссылка не прошла проверку.Такой результат стоит разобрать: ограничения запросов, авторизация и тайм-ауты могут мешать автоматическому клиенту, даже когда страница существует. Проверка внешних адресов обращается к сайтам по сети. Режим
--offline оставляет только локальные файлы. И отдельно проверьте смысл ссылок: доступная страница могла давно сменить содержание.typos: проверить опечатки и оставить намеренные имена
Фамилия Teh похожа на опечатку, но исправлять её на the было бы ошибкой. У typos для таких случаев есть словарь исключений в
Сам инструмент сверяет слова в исходниках со списком известных опечаток. Поэтому незнакомое слово само по себе ещё не считается ошибкой. После установки пакета
Для применения есть отдельный флаг
Фамилия Teh похожа на опечатку, но исправлять её на the было бы ошибкой. У typos для таких случаев есть словарь исключений в
_typos.toml:[default.extend-words]
teh = "teh"
Сам инструмент сверяет слова в исходниках со списком известных опечаток. Поэтому незнакомое слово само по себе ещё не считается ошибкой. После установки пакета
typos-cli запустите typos --diff в репозитории, чтобы увидеть предлагаемые изменения без записи файлов.Для применения есть отдельный флаг
--write-changes. Если вариантов исправления несколько, typos сообщает о проблеме и оставляет выбор вам. Это удобная дополнительная проверка перед PR, но она не обнаружит все ошибки и не заменит вычитку русскоязычного текста.actionlint: найти ошибку в workflow до запуска GitHub Actions
В синтаксически корректном YAML может быть неверное имя параметра action или обращение к отсутствующему полю матрицы. actionlint находит такие ошибки статическим анализом. В примере проекта он замечает неизвестный input
После установки запустите в репозитории:
Утилита сама найдёт workflow и выведет диагностику с файлом, строкой и проблемным выражением. Для проверки shell- и Python-фрагментов есть интеграции с ShellCheck и pyflakes, если они доступны в окружении. Успешная проверка не гарантирует, что workflow выполнится: доступность сервисов и результат реального запуска она не проверяет.
В синтаксически корректном YAML может быть неверное имя параметра action или обращение к отсутствующему полю матрицы. actionlint находит такие ошибки статическим анализом. В примере проекта он замечает неизвестный input
node_version и обращение к matrix.platform, которого нет в матрице.После установки запустите в репозитории:
actionlint
Утилита сама найдёт workflow и выведет диагностику с файлом, строкой и проблемным выражением. Для проверки shell- и Python-фрагментов есть интеграции с ShellCheck и pyflakes, если они доступны в окружении. Успешная проверка не гарантирует, что workflow выполнится: доступность сервисов и результат реального запуска она не проверяет.
This media is not supported in your browser
VIEW IN TELEGRAM
gping: сравнить задержку до двух хостов на одном графике
Чтобы сопоставить ping до двух адресов, передайте оба хоста одной команде gping:
У каждого адреса появится своя линия. На графике видно, когда задержка выросла и совпали ли всплески у разных хостов. Флаг
Обычный режим измеряет ping, поэтому по нему нельзя судить о времени ответа HTTP или скорости скачивания. Утилита также умеет измерять длительность команд через
Чтобы сопоставить ping до двух адресов, передайте оба хоста одной команде gping:
gping google.com facebook.com
У каждого адреса появится своя линия. На графике видно, когда задержка выросла и совпали ли всплески у разных хостов. Флаг
-b задаёт, сколько секунд истории помещается на экране. По умолчанию это 30 секунд. Адреса в примере можно заменить своими.Обычный режим измеряет ping, поэтому по нему нельзя судить о времени ответа HTTP или скорости скачивания. Утилита также умеет измерять длительность команд через
--cmd, но это отдельный режим. В ролике показана демонстрация из репозитория, её числа не описывают вашу сеть.This media is not supported in your browser
VIEW IN TELEGRAM
csvlens: отфильтровать CSV прямо в терминале
В csvlens можно открыть CSV, найти значение и оставить на экране только нужные строки. В официальном примере используется таблица с покемонами:
Нажмите
Если файл разделён табуляцией, используйте
В csvlens можно открыть CSV, найти значение и оставить на экране только нужные строки. В официальном примере используется таблица с покемонами:
csvlens Pokemon.csv
Нажмите
/ и введите Flying, чтобы подсветить совпадения. Для фильтра строк нажмите & и введите Bug. Это разные действия: поиск сохраняет всю таблицу, а фильтр скрывает неподходящие строки. Клавиша * задаёт фильтр столбцов. Выражения в этих режимах — регулярные.Если файл разделён табуляцией, используйте
-t. Для автоматического определения разделителя есть -d auto. csvlens работает как просмотрщик и не изменяет исходный CSV. Файл в команде замените своим.Ouch: посмотреть дерево архива до распаковки
Чтобы узнать, лежат ли файлы внутри одной папки или сразу в корне архива, его необязательно распаковывать. У Ouch для этого есть подкоманда
Она показывает вложенные каталоги и файлы деревом. Так можно заранее проверить структуру и выбрать каталог для будущей распаковки. В команде подставьте имя своего архива. Если важны размеры, добавьте
Формат определяется по расширению. Для RAR поддержаны чтение, просмотр списка и распаковка, но создавать RAR утилита не умеет. На карточке — сокращённый пример дерева из документации, а не результат проверки вашего файла.
Чтобы узнать, лежат ли файлы внутри одной папки или сразу в корне архива, его необязательно распаковывать. У Ouch для этого есть подкоманда
list:ouch list source-code.zip --tree
Она показывает вложенные каталоги и файлы деревом. Так можно заранее проверить структуру и выбрать каталог для будущей распаковки. В команде подставьте имя своего архива. Если важны размеры, добавьте
--show-size: это несжатый размер каждого файла, а не его вклад в размер архива.Формат определяется по расширению. Для RAR поддержаны чтение, просмотр списка и распаковка, но создавать RAR утилита не умеет. На карточке — сокращённый пример дерева из документации, а не результат проверки вашего файла.
⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
Pueue: поставить длительные команды в очередь
В Pueue команды выполняет фоновый процесс
После установки запустите daemon и добавьте безопасное пробное задание из руководства:
В таблице появится задача и её статус. Вывод задания можно посмотреть через
Без запущенного daemon очередь не работает. Сохранение её состояния также не означает, что прерванный процесс продолжится с той же инструкции после перезагрузки. Ролик показывает работу клиента из демонстрации проекта.
В Pueue команды выполняет фоновый процесс
pueued, а клиент добавляет задания и показывает их состояние. Поэтому выполнение не привязано к открытому терминалу клиента. По умолчанию очередь запускает одно задание за раз.После установки запустите daemon и добавьте безопасное пробное задание из руководства:
pueued -d
pueue add sleep 60
pueue status
В таблице появится задача и её статус. Вывод задания можно посмотреть через
pueue log. Для реальной команды сначала проверьте, что она делает и как переданы аргументы.Без запущенного daemon очередь не работает. Сохранение её состояния также не означает, что прерванный процесс продолжится с той же инструкции после перезагрузки. Ролик показывает работу клиента из демонстрации проекта.
grpcurl: узнать, какие сервисы предоставляет gRPC-сервер
Если на сервере включена reflection, grpcurl может получить описание API и перечислить сервисы без локальных файлов схемы. Для работающего сервера с TLS и reflection команда выглядит так:
Адрес здесь взят из документации, его нужно заменить адресом своего сервера. Если после адреса и
Для локального сервера без TLS нужен
Если на сервере включена reflection, grpcurl может получить описание API и перечислить сервисы без локальных файлов схемы. Для работающего сервера с TLS и reflection команда выглядит так:
grpcurl localhost:8787 list
Адрес здесь взят из документации, его нужно заменить адресом своего сервера. Если после адреса и
list указать имя сервиса, утилита перечислит его методы. Это помогает разобраться с незнакомым API до вызова конкретного метода.Для локального сервера без TLS нужен
-plaintext. Этот флаг полностью отключает TLS, а не только проверку сертификата. Если reflection недоступна, передайте .proto через -import-path и -proto либо готовый набор дескрипторов через -protoset. С локальной схемой list перечисляет определённые в ней сервисы без подключения к серверу.procs: дерево родительских и дочерних процессов
Если у процессов похожие команды, дерево помогает увидеть связи между ними. У procs есть режим дерева:
Он сортирует процессы по зависимостям и рисует ветви слева от строк. Так видно родительский процесс и его потомков. Для обновления вывода можно добавить
Набор видимых данных зависит от прав и конфигурации. Скриншоты проекта сделаны с
Если у процессов похожие команды, дерево помогает увидеть связи между ними. У procs есть режим дерева:
procs --tree
Он сортирует процессы по зависимостям и рисует ветви слева от строк. Так видно родительский процесс и его потомков. Для обновления вывода можно добавить
--watch. Если передать текстовый аргумент, procs по умолчанию ищет его в полях USER и Command, а числовой аргумент — среди PID.Набор видимых данных зависит от прав и конфигурации. Скриншоты проекта сделаны с
config/large.toml, поэтому чистая установка может показывать другие столбцы. Linux и Windows поддержаны, а macOS и FreeBSD в документации отмечены как экспериментальные. На карточке — схема связей без реальных PID.This media is not supported in your browser
VIEW IN TELEGRAM
Posting 3 beta: оставить в JSON-ответе нужных пользователей
В терминальном HTTP-клиенте Posting 3 можно искать текст в ответе, просматривать JSON как дерево и фильтровать его через JSONPath. Запросы сохраняются локально в YAML. В демонстрации проекта сначала ищут поле
Выражение рассчитано на показанную структуру: массив
Posting 3 пока находится в beta. Ролик показывает именно эту ветку клиента. Значения времени и размера ответа в нём относятся к демонстрационному запросу, а не к замеру производительности.
В терминальном HTTP-клиенте Posting 3 можно искать текст в ответе, просматривать JSON как дерево и фильтровать его через JSONPath. Запросы сохраняются локально в YAML. В демонстрации проекта сначала ищут поле
role, затем оставляют пользователей с ролью admin:$.users[?@.role=="admin"]
Выражение рассчитано на показанную структуру: массив
users, в объектах которого есть поле role. В результате остаётся подходящий объект, а не просто подсвечивается строка. Для другого ответа путь и условие нужно изменить. JSONPath здесь не следует смешивать с синтаксисом jq.Posting 3 пока находится в beta. Ролик показывает именно эту ветку клиента. Значения времени и размера ответа в нём относятся к демонстрационному запросу, а не к замеру производительности.
🔥1