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

Python: Чем плох datetime.replace?

часыПоговорим сегодня про даты и часовые пояса. А именно о том, почему не стоит использовать datetime.replace совместно с таймзонами из pytz если вы не уверены (вообще не стоит).

Конечно все с оговорками. Иногда так надо. Но все равно не стоит так делать.

Читать далее

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

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

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

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

Читать далее

HowTo, linux

Linux: Избавляемся от файловых ассоциаций WINE

При работе с wine постоянно наблюдается появление новых файловых ассоциаций, которые только мешают.
Ожин из способов удалить эти ассоциации —
то удалить соответствующие mime-типы (есть другой способ — просто отучить wine их создавать, но там возникает проблема с тем, то он перестает создавать ярлыки приложений).

$ rm -f ~/.local/share/applications/mimeinfo.cache
$ rm -f ~/.local/share/mime/packages/x-wine*
$ rm -f ~/.local/share/mime/application/x-wine-extension-*
$ update-desktop-database ~/.local/share/applications
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

Изменение размера vmdk-диска

Диски vmdk не поддерживают простое изменение размера. Нужно сначала конверировать в vdi, изменять размер и конвертировать обратно.

Опция размера передается в мегабайтах

$ VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
$ VBoxManage modifyhd "cloned.vdi" --resize 51200
$ VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk
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

HowTo, linux

Mikrotik: multicast в wireless-сетях

Mikrotik-RB951G-2HnDКратко: если у вас роутер mikrotik и вы хотите использовать udp-multicast в беспроводной сети, то надо включить опцию multicast helper в настройках интерфейса. Если этого не сделать, то пакеты будут теряться. А дальше мы посмотрим как можно диагностировать подобную ситуацию.

Обновил я свой роутер до mikrotik (оказалась очень удобная штука). В моей локальной сети для всяких разных iot был настроен zeroconfig по собственному мануалу. И тут что-то пошло не так.

Выражалось это все тем, что мультикаст с запросом адреса есть, а мультикаст-ответа нет. При этом машина, которой этот запрос предназначался, отвечала. Или ответ приходил, но спустя пол минуты или больше.

Мы можем эту итуацию наблюдать на скриншоте wireshark ниже.wireshark.pngРассмотрим на примере хоста diskstation.local.

На нем я смотрел в tcpdump и видел, что ответ есть.

# tcpdump port mdns
...
18:04:29.405838 IP6 fe80::e3de:bf6f:105e:ad4d.mdns > ff02::fb.mdns: 0 [2q] A (QM)? diskstation.local. AAAA (QM)? diskstation.local. (41)
18:04:29.405885 IP 192.168.88.252.mdns > 224.0.0.251.mdns: 0 [2q] A (QM)? diskstation.local. AAAA (QM)? diskstation.local. (41)
18:04:29.406152 IP6 fe80::211:32ff:fe80:3eb5.mdns > ff02::fb.mdns: 0*- [0q] 1/0/0 (Cache flush) AAAA fe80::211:32ff:fe80:3eb5 (57)
18:04:29.406388 IP diskstation.lan.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) AAAA fe80::211:32ff:fe80:3eb5, (Cache flush) A 192.168.88.250 (73)

Интернеты не смотгли дать вразумительного ответа почему так происходит. Была лишь одна зацепка — это разбор проблем с вещанием iptv. И именно там я встретил заметку о том, что гоже было бы включить multicast helper в настройках интерфейса wifi (предварительно нажать advanced settings).

wifi-config.png