Автодополнение имён хостов из LAN в консоли

Мне по работе часто приходится подключаться к машинам в локальной сети через SSH. Некоторые IP-адреса запоминаются, но всё же чертовки удобно, когда для такой банальной вещи, как имена локальных машин, работает автодополнение. В принципе, имена хостов часто несложно получить с помощью Avahi (avahi-browse). Странно — думал я, — почему до сих пор никто не догадался … Читать далее Автодополнение имён хостов из LAN в консоли

rssh, или Как разрешить SCP, но запретить SSH

Вполне адекватная ситуация: у вас есть удалённая Linux-машина с доступом по SSH, и вам срочно нужно дать кому-то из знакомых возможность загрузить на эту машину файл. Разумеется, нам абсолютно лениво разворачивать ради этого FTP-сервер. Да и зачем, когда есть SCP?

Вот только незадача: нам не хочется, чтобы этот знакомый имел возможность что-то делать на этой машине. Ну мало ли что. Поэтому для начала мы заводим отдельного пользователя, ставим для него домашней директорией место, куда надо залить файл, ограничиваем доступ этого пользователя к окружающим директориям. Но всё-таки этот пользователь пока имеет доступ к Shell, а нам — опытным паранойикам — это вообще не нравится.

Выход вроде как всплывает: надо заменить пользователю shell по умолчанию (/bin/sh) на что-нибудь другое. Вот только что?

Читать далееrssh, или Как разрешить SCP, но запретить SSH

Мой Linux орёт на меня! (+ решение проблемы)

Да, не самая приятная история, связанная с особенностями Pulseaudio. Но хорошо всё то, что хорошо кончается (или разрешимо для этого).

Проблема

Сижу я за работой, в фоне тихонько играет музыка. В какой-то момент отлаживаемое приложение подвисает, я пытаюсь отключить его соответствующей кнопкой окна. Разумеется, без ответа. Но кеды умные — подождут несколько секунд, а потом выплюнут окошко с вопросом «Приложение не отвечает на SIGTERM, прикончить его SIGKILL?». Окошко выплёвывается с характерным системным звуком.

И вот, кнопка завершения нажата, ждём эффекта. Тут из 40-ваттной акустики, подключенной к ноуту, раздаётся громкое «БР-Р-ЯМЦ», разрушая гармонию и покой одиночества в небольшой квартире, попутно заставив проснуться соседей. Ах да, это системный звук. С непривычки откладвается груда кирпичей, проклинается всё на свете и окошко закрывается.

Но как же так? Я же ставил Master volume в 20%, оно не могло издать такой громкий звук?

Смотрим в трей и видим, что Master volume теперь не 20%, а 100%. Чудеса!

Повторные эксперименты показывают, что Master volume действительно выкручивается в максимум в момент проигрывания системного звука.

Читать далееМой Linux орёт на меня! (+ решение проблемы)

Address Sanitizer, или Что делать, если не работает valgrind

Случилась непростая ситуация. Есть код, написанный на С, который активно используется через CGo в проекте, написанном на Go. В какой-то момент программа начала падать с ошибками от malloc: то segfault, то memory corruption.

Логичная мысль: нужен valgrind с его memcheck, чтобы проверить, кто лезет поперёк батьки в пекло в невалидную память. Однако, попытка скормить валгринду бинарник, полученный от go build, приведёт только к разочарованию — даже на простом Hello World валгринд разразится сотнями ошибок и отправит разработчика на известные координаты.

Это происходит из-за того, что go runtime довольно специфичен и неплохо отличается от такового в С. (Подробности можно спокойно нагуглить по запросу «golang valgrind»).

Так как же нам разобраться, что происходит?

Читать далееAddress Sanitizer, или Что делать, если не работает valgrind

Как откалибровать стол вашего 3D-принтера

Когда-то я уже рассказывал, что летом приобрёл себе неплохой китайский 3D-принтер Anet A6. За всё это время я успел выявить некоторые конструктивные проблемы этого чудо-агрегата и придумал обходные пути для некоторых из них. Но одна проблема вылезает достаточно регулярно — калибровка стола. И каждый раз я забываю особенности этого процесса и в итоге часами сижу … Читать далее Как откалибровать стол вашего 3D-принтера

Arduino Leonardo vs. Linux

Когда-то давно я натолкнулся на проблему с прошивкой Arduino Leonardo/Micro (в общем, всего, что основано на ATmega32U4 и использует Caterina Bootloader) с моего Debian-лаптопа. Сегодня она наконец-то встала мне поперёк горла и я стал разбираться.

Исходные данные: Arduino IDE неважно какой версии, Debian (вероятно, та же проблема будет с конфигурациями любого линукса) , клон Arduino Leonardo (Iskra Neo).

Симптом: при нажатии кнопки «Upload» в IDE происходит перезагрука платы, при этом вываливается примерно следующий текст:

Found upload port: /dev/ttyACM0
/opt/arduino-1.6.12/hardware/tools/avr/bin/avrdude -C/opt/arduino-1.6.12/hardware/tools/avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D -Uflash:w:/tmp/arduino_build_159842/sketch_nov02a.ino.hex:i 

avrdude: Version 6.3, compiled on Sep 12 2016 at 15:21:49
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/opt/arduino-1.6.12/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/webconn/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

avrdude done.  Thank you.

На девственно чистой Ubuntu и Debian такой проблемы не возникает.

Читать далееArduino Leonardo vs. Linux

Заканчивается место в «мастерской»

Сегодняшний день знаменателен тем, что я решился-таки вскрыть старые ящики с хламом и попытаться навести порядок во всём этом барахле. Несмотря на то, что сейчас заполняется уже второй мешок с мусором, меня не покидает ощущение того, что место в рабочей половине комнаты aka мастерской постепенно заканчивается. Очень много места резко отъел 3D-принтер и купленный недавно … Читать далее Заканчивается место в «мастерской»

Тормоза в vim

Да, я жутко люблю Vim, привык работать в нём постоянно и всякое такое. Но тут вдруг он решил выкинуть странный финт. В какой-то момент я обратил внимание, что Vim периодически отъедает 100% времени своего потока. Разумеется, всё при этом начинает тормозить, а ноут вдобавок раскручивает пропеллеры для рассеивания тепла. Понятное дело, что это немыслимо для … Читать далее Тормоза в vim

Прикладное фенькоплетение

Немного творчества, полезного в быту. В прошлом году я повесил на ключ от машины кусок разноцветного шлейфа, закрепив на кольце с помощью характерного для него разъёма. Вообще, иметь ремешок или ещё что-то такое на ключе очень удобно — помогает быстрее найти его в захламлённой сумке или рюкзаке, к тому же всегда есть, чем занять руки … Читать далее Прикладное фенькоплетение

Даёшь самосборные тулчейны!

Вот начинают подгорать мои любимые дедлайны. Один из текущих — подготовка к Робофесту.

Да, всё-таки мы решили поучаствовать в этом фестивале в лиге «Autonet-18+», где задачей для робота будет проезд по а-ля городской местности — ландшафту 10х10 метров с дорогами, домами, знаками и светофорами. В качестве шасси решили использовать нашего уже немного пошумевшего лайнтрейсера (вы напомните, я потом о нём ещё расскажу — было весело), только мозги решили проапгрейдить с простой Arduino до STM32F4Discovery. Сразу куча плюшек — и частота на порядок больше, и аппаратная плавающая точка, и ШИМ на ультразвуковой частоте — моторы не пищат на низкой мощности :)

Так вот. Прозаичная история о том, как я начал писать софт под эти «мозги», что такое тулчейн и с чем его положено подавать к столу.

Читать далееДаёшь самосборные тулчейны!

Yakuake в KDE5

Есть у меня слабость к drop-down терминалам. Удобно же: не отвлекаясь от рабочего процесса, можно запустить фоном какую-нибудь задачку, которая не так важна, чтобы под неё ещё окошко выделять, и в то же время не так тривиальна, чтобы запускать её из лончера (например, посмотреть вывод htop или по-быстрому подключиться к хосту по ssh).

Так как я — ярый кедовод, то и терминал соответствующий — Yakuake. Проектик с некоторым наростом пыли, зато гармонично смотрится в KDE и вообще использует компонент нативного кедового Konsole. Назначил горячую клавишу — и терминал всегда под рукой.

Однако, кеды растут и расцветают. Вон уже какая-то пятая-разлохматая версия в Debian testing лежит (и на моём лаптопе, соответственно). Конечно же, обновления в какой-то момент затронули и Konsole. И в одно хмурое декабрьское утро я увидел вот это.

Читать далееYakuake в KDE5