Долгожданный отпуск, а чем ещё в нём заняться, кроме как приобрести на барахолке Raspberry Pi 2B за 15$ для поиграться? Как-то жалко стало сразу покупать Raspberry Pi 4B с 4 гигабайтами оперативной памяти, которые в наших краях стоят 80$. В целом зря, нужно было покупать последнюю версию ибо производительность в качестве десктопа у второй далека до идеала. Хотя и написать этот пост можно с неё, что я сейчас и делаю.

Записал я SD-карточку со свежей версией Raspberry Pi OS и графическом окружением, запустил, в целом всё понравилось. Но есть один нюанс, стандартная настройка раскладки клавиатуры позволяет одновременно использовать только одну раскладку, а переключение не настраивается.

Стандартная настройка раскладки клавиатуры в Raspberry Pi OS.

Придётся отринуть настройку через графическую утилиту и немножко погрузиться в консоль.

Читать далее →

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

Было найдено решение достаточно простое: поднять FTP-сервер и с помощью FTP-клиента передавать файлы с iPhone на компьютер. Но со своей спецификой: мне хотелось это сделать как можно проще для себя, поэтому инструкция не универсальна.

Локальный FTP-сервер в Filezilla
Читать далее →

Любой способ записи логов так или иначе даёт дополнительную нагрузку на CPU и замедляет выполнение кода. Но запись в syslog имеет одну очень неприятную особенность: оно может быть блокирующем и может приостанавливать поток выполнения на очень значительный промежуток времени.

Причина кроется в использовании сокета домена Unix в режиме датаграмм (socket(AF_UNIX, SOCK_DGRAM, 0)) с путём /dev/log в файловой системе. Этот сокет имеет свой буффер, который может переполняться. При его переполнении, в зависимости от реализации (я бегло просмотрел несколько), может выводиться сообщение об ошибке в консоль либо сам процесс отправки сообщения блокироваться. В реализации библиотеки C от glibc поток выполнения именно блокируется вызовом syslog. Попробую это показать на наглядном примере.

Читать далее →