Обработка изображений, HowTo

Linux: Обрабатываем RAW-изображения

resize_resultМы не будем говорить о том, как правильно\неправильно обрабатывать raw’ки. Мы поговорим об инструментах (конечно же консольных), которые можно применять для конвертирования, склейки и других операций.

Фото на превью — это то, что удалось вытащить из raw (конечно же оно пожатое в джипег и отресайзено для публикации).

Читать далее

HowTo

OpenWRT: Настройка после установки

openwrt Небольшой скетч про послеустановочную настройку OpenWRT.

Настройка флешки как overlayfs

Большинство роутеров имеют у себя usb-порт куда можно воткнуть флешку и использовать ее для swap-файла (вдруг что) и для overlayfs. https://wiki.openwrt.org/ru/doc/howto/extroot

Настройка dropbear

/etc/config/dropbear

config dropbear
     option PasswordAuth 'on'
     option RootPasswordAuth 'on'
     option Port         '22'
     # option BannerFile   '/etc/banner'
     option Interface 'lan'

Выставляем ssh только в lan-интерфейс

https://wiki.openwrt.org/doc/howto/secure.access

Добавление пользователя

# opkg update
# opkg install shadow-usermod shadow-useradd shadow-groupadd
# mkdir /home
# useradd -m -s /bin/ash penguin
# passwd penguin
# opkg update
# opkg install sudo
# groupadd --system sudo
# usermod -a -G sudo penguin
# visudo

Добавляем строки, которые позволяют группе sudo использовать sudo

%sudo ALL=(ALL) ALL

Настройка dropbear для запрета доступа root

На локальной машине

$ ssh-copy-id 

На сервере в конфиге dropbear

     option PasswordAuth 'off'
     option RootPasswordAuth 'off'

Предварительно убеждаемся что ключи работают. Иначе останетесь без доступа.

HowTo, linux

Linux: XScreenSaver не гасит подсветку монитора

xscreensaver-settings-1Начиная с какого-то обновления системы у меня перестал выключаться монитор. Xscreensaver настроен в режим «только пустой экран» и на вкладке энергосбережения выставлен флажок «быстрое отключение питания в режиме пустого экрана».

Никакими комбинациями опций нельзя было заставить его гаснуть нормально.

xscreensaver-settings-2.png

Вдобавок к этому я использую xss-lock чтобы при открытии крышки не было момента когда выдно содержимое экрана. Подробнее можно почитать в похожем багрепорте для gnome-screensaver (проблема имеет одни и те же корни у всех вариаций скринсейверов).

Проблема выглядит так:

  • если активировать блокировку через консоль
    xscreensaver-command -lock

    то все работает как надо и экран гаснет;

  • если активировать блокировку через хоткеи lxde, то после активации на долю секунды виден рабочий стол и после этого черный экран с активной подсветкой.

Конечно же надо читать логи.

Прибиваем активного хранителя и стартуем verbose-mode.

$ killall xscreensaver
$ xscreensaver -no-splash -v

После этого можно пытаться заблокировать экран из консоли и с клавиатуры. Смотрим.

Блокировка с консоли

xscreensaver: 20:03:18: LOCK ClientMessage received; activating and locking.
xscreensaver: 20:03:19: 0: locked mode switching.
xscreensaver: 20:03:19: user is idle (ClientMessage)
xscreensaver: 20:03:19: blanking screen at Fri May  3 20:03:19 2019.
xscreensaver: 20:03:19: mouse is on screen 1 of 2
xscreensaver: 20:03:19: 1: grabbing keyboard on 0x16a... GrabSuccess.
xscreensaver: 20:03:19: 1: grabbing mouse on 0x16a... GrabSuccess.
xscreensaver: 20:03:19: LOCK ClientMessage received while already locked.
xscreensaver: 20:03:33: user is active (keyboard activity)
xscreensaver: 20:03:33: pam_start ("xscreensaver", "penguin", ...) ==> 0 (Succes
s)
...

Блокировка с хоткея

xscreensaver: 20:01:46: LOCK ClientMessage received; activating and locking.
xscreensaver: 20:01:46: 0: locked mode switching.
xscreensaver: 20:01:46: user is idle (ClientMessage)
xscreensaver: 20:01:46: blanking screen at Fri May  3 20:01:46 2019.
xscreensaver: 20:01:46: mouse is on screen 1 of 2
xscreensaver: 20:01:46: 1: grabbing keyboard on 0x16a... GrabSuccess.
xscreensaver: 20:01:46: 1: grabbing mouse on 0x16a... GrabSuccess.
xscreensaver: 20:01:48: DPMSForceLevel(dpy, DPMSModeOff) did not change monitor power state.
xscreensaver: 20:01:48: LOCK ClientMessage received while already locked.
xscreensaver: 20:02:05: user is active (keyboard activity)
xscreensaver: 20:02:05: pam_start ("xscreensaver", "penguin", ...) ==> 0 (Success)
...

Ага. Во втором случае у нас почему-то не смог выключиться монитор.

В интернетах ответа я не нашел, но предполагается, что хоткей передается дальше в активированный скринсейвер.

Поэтому я просто модифицировал команду, которую вызываю с клавиатуры добавив sleep 0.1. Это помогло. Вероятно значение слипа вам придется выбрать самостоятельно. На одной из машин этот фикс у меня сработал только при задержке в 0.5.

lxde-hotkey.png

linux

Linux: Раскладка переключается не с первого раза

Caps_lock
Картинка из википедии

Не всегда виновато железо.

Возникла странная проблема: нажатие капслока не приводило к переключению раскладки сразу.

Клавиатура мембранная и достаточно старая, а значит вполне вероятно, что капсу плохо. Но увы, с новой клавиатурой все то же самое.

Только повторное нажатие переводило раскладку в английскую.

Читать далее

Разработка, HowTo

PHPStorm: Запускаем тесты на удаленной машине с возможностью отладки

2018-07-11-21:10:29_373x236Не секрет, что современные среды разработки полны полезного функционала, освоение которого позволяет поднять продуктивность разработки до невероятных высот.

Сегодня мы реализуем возможность запуска тестов на проекте в каком-либо контейнере (докер, вагрант, удаленное железо), просмотре их выполнения и возможности анализа результатов. И все это не переключаясь на отдельную консоль.

Почему это удобно? Я уже неоднократно ссылался на удобство контейнеров поскольку они обеспечивают повторяемость окружения, скорость развертывания рабочего проекта и схожесть окружений у всех разработчиков в команде.

Долгое время неудобством выступало то, что для тестирования и непосредственной отладки требовалось выполнить переключение на консоль тестовой машины.

Дано:

  • окружение под vagrant (один из способов собрать такое окружение описан в соответствующей статье).

Надо:

  • запускать и отлаживать тесты не выходя из ide

Читать далее

linux

Bash: Передача аргументов в кавычках

Мне потребовалось создать скрипт, который передает свои аргуенты на вход другого скрипта без изменения. Просто добавляет к ним несколько своих параметров.

#!/usr/bin/env bash
some_tools $@

На этом этапе меня подстерегал сюрприз. Если в строке аргументов были кавычки, то интерпретатор просто отбрасывал их.
Выяснилось, что для передачи строкового литерала без изменений надо обернуть его в двойные кавычки.

#!/usr/bin/env bash
some_tools "$@"
HowTo, linux

Bash: подстановка процесса

2018-07-03-22:14:15_267x133Рассмотрим достаточно полезную штуку в консоли линукса (bash) как подстановка процесса.

Вообще подстановок в баше достаточно много всяких подстановок: результата выполнения команды  арифметических операций, имен файлов, значений переменных и, конечно же, процессов.

Применима подстановка в первую очередь для того, чтобы избавиться от создания пайпов.А во вторую — для сохранения внешнего контекста при работе подпроцесса.

Избавляемся от пайпов

Имеем две команды, которые формируют некоторый список значений и мы хотим сделать diff или любую другую операцию, которая принимает на вход в качестве аргументов имена файлов.

Читать далее