Hatred's Log Place

DON'T PANIC!

Apr 12, 2024 - 3 minute read - Programming C++

Conan vs vcpkg

UPD 2024-04-15 vcpkg поборол, причём статику сгенерил как при помощи системного MinGW из Manjaro, так и с тулчёном из MXE. Подробности чуть позже. Conan в пролёте. UPD 2024-04-23 а вот и подробности: Conan vs vcpkg, действие второе

дискас.

А вообще, мне нужно было кросс-компильнуть максимально статический бинарник из-под Linux в Windows. Оба не справились, но vcpkg продвинулся дальше.

Не без мук, но дальше. Настолько дальше, что бинарь он отстроил… но в конце он зачем-то пытается сделать:

/bin/sh: строка 1: powershell.exe: команда не найдена  
ninja: build stopped: subcommand failed.

o_O

А быстрее всего и с минимальными телодвижениями справился MXE, но он чисто под MinGW кросс-компиляцию и создаёт свой sysroot. Понятно, что как универсально средство - не очень подходит.

MXE можно использовать и только собрать тулчейн (make cc), а остальное отдать на откуп пакетникам. vcpkg частично справляется (см выше). Conan на рецепте iconv свалился из-за косяка в рецепте (жёстко ищет RC компилятор с именем windres, причём не понятно по каким путям), а что-то сходу как его заоверлеить я не нашёл (MXE и vcpkg позволяют это и достаточно лехко).

ЗЫ у меня в системном MinGW тулчейне сломали статическую сборку.

Apr 8, 2024 - 2 minute read - Linux

Гибридная графика: проблема с wine и не только

Итак, список проблем:

  • При запуске Wine, даже обычного winecfg система блочится, что-то далает, потом отдупляется, но приложение не запускается. Если при этом запустить быстро повторно, то запуск происходит
  • Долго запускается geeqie, прям вот сильно долго для простого приложения
  • В хоте разбирательств выяснилось, что долго отрабатывает с блоком системы и банальный вывод xrandr --listproviders

Методом проб выяснилось: проблема в драйвере modesettings для Xorg. Переключение на Intel в настройках решает проблему.

Но. Блин, всегда эти но. Я не сильно часто делаю скриншоты, но тут оказалось, что это дело поломано. А раз поломано, то использовать так и тянет. Поломка заключается в том, что при смене настроек на использование драйвера на Intel приводит к тому, что время от времени скриншотилки делают снимок какого-то кадра из прошлого o_O. Переключение эффектов выкл/вкл временно решает проблему.

Аналогичные артефакты при трансляции экрана: Google Meeting, Telegram, Яндекс.Телемост, да, думаю, во всех. Переключение эффектов так же временно решает проблему.

В ходе дальнейших исследований и экспериментов, показало, что принудительное выключение DRI3 решает проблему, ну или очень сильно её скрывает.

Свои изыскания выложил изначально на форуме Manjaro, где чувак столкнулся с той же проблемой, а ему начали накидывать какой-то бред:

Итоговый конфиг для Xorg /etc/X11/xorg.conf.d/20-intel.conf:

Section "Device"
    Identifier "Intel Graphics"
    #Driver "modesetting"
    Driver "intel"
    Option "Backlight" "intel_backlight"

    # integrated intel
    BusId "PCI:0:2:0"

    Option "DRI" "2" # Turn Off DRI3 here
    Option "TearFree" "true"
EndSection

BusId нужно будет скорректировать под вашу систему. Значение полностью соответствует выводу lspci, без лидирующих нулей.

Ну и связанные ссылки:

Apr 8, 2024 - 1 minute read - IT Linux

Wayland and...

Я тут решил попытаться запуститься с Wayland.

Потыкал перекодирование с CUDA (nvenc), вроде работает. А потом запустил VirtualBox (у меня там несколько билд-окружений на MSVS)… Короче, в гостевой системе напрочь неработает мышь. Не знаю кто виноват, но в одном случае оно работает, а в другом - нет. Проблема обозначена уже 4 года как.

Мелочи, типа увеличенного мышиного курсора в Firefox, по сравнению с другими окружениями не рассматриваю.

А, ну и из прошлых попыток - падение kwin вызывало падение сессии, что для меня, расслабленного X11 выглядит дико. Базару ноль, софт писать нужно так, что бы не падал. Но… но быстро поднятое упавшим не считается и если такое случилось, то пусть труды останутся живыми.

Apr 3, 2024 - 1 minute read - Programming

Git: выключение вывода через pager для отдельных команд

В последнее время обратил внимание, что Git пытается использовать вывод через Pager, типа less, к месту и не к месту. К примеру, вывод diff мне даром через него не нужен, как и вывод git branch. Судя по всему, не мне одному такое не нравится.

Ответ там же по ссылке. Если коротко: для каждой подкоманды можно настроить использование pager индивидуально:

git config --global pager.branch false
git config --global pager.diff false

Mar 19, 2024 - 1 minute read - Life IT

Acer Laptop: выключаем Secure Boot

Заметка касается Acer Aspire ES 11, но судя по всему, касается многих других ноутбуков.

Итак, нужно поставить Manjaro, захожу, что бы выключить Secure Boot, который включен по умолчанию, но настройка затенена. WTF!?

Так же практически ничего не доступно на вкладке Security, кроме Set Supervisor Password и Set HDD Password. Так вот, что бы поменять все остальные настройки, нужно обязательно установить Set Supervisor Password! Более того, как настроите, что нужно, его можно сбросить: просто вместо нового пароля ввести оба раза пустой. Помимо настроек на этой вкладке становится доступна для изменения опция Secure Boot на вкладке Boot.

В общем:

  1. Ставим Supervisor Password
  2. Ставим Secure Boot в Disabled
  3. Сбрасываем Supervisor Password
  4. Сохраняемся, перезагружаемся
  5. Enjoy!

Dec 13, 2023 - 1 minute read - Life

Добавил ссылку на канал в Telegram

Справа в ссылках на ресурсы добавил ссылку на канал в Telegram куда автоматом перекладываются статьи из бложика. Помимо этого, завёл шаблон Instant View, и ссылка фильтруется через него, так что читать статью на мобильных устройствах можно прямо из телеги. Дискуссии тоже открыты.

PS всего-то 4 года прошло, как канал появился :-D

Dec 5, 2023 - 5 minute read - Programming

Проброс последовательного порта по сети

Сетап:

  • Удалённое устройство, подключенное к серверу на Linux
  • Управление через COM порт
  • Управление тулом под Windows
  • Есть SSH доступ
  • Само устройство успешно удалённо программируется и отлаживается по JTAG

Нужно:

  • Запустить тул локально под Virtual Box (локальная машина тоже Linux)
  • Пробросить удалённый последовательный порт локально
  • Пробросить его в Virtual Box

Поиск в интернете даёт сходу два результата:

Оба пакета имеются в наличии в Manjaro/ArchLinux и поставить просто:

pacman -S socat ser2net

socat, к слову, уже был поставлен как зависимость kwallet-pam.

ser2net реализует RFC2217.

Nov 7, 2023 - 9 minute read - Туризм

Снежная с севера

На ноябрьские праздники группой единомышленников сгоняли Снежную по маршруту с севера. Хотя, если смотреть карту, то больше похоже на маршрут с Запада :)

map.jpg

Oct 22, 2023 - 1 minute read - Туризм

Семейная Фалаза или путешествие в зимнюю сказку

Выбрались в очередной раз на Фалазу с сыном. На этот раз собралась целая компания отцов:

  1. Я с Андреем
  2. Валентин со Львом
  3. Стас с Марком
  4. и Паша с Арсением

Сходили душевно. Пацаны залетели на вершину на одном дыхании, уже за ними нужно поспевать. Попали в зимнюю сказку, при этом на вершине вышло, как по заказу солнце и было очень тепло. Немного поиграли даже в снежки :)

Фото: https://disk.yandex.ru/a/3bEPHunfJyViAg

Oct 15, 2023 - 7 minute read - Туризм

Гора Сестра

Полторы недели назад в группе пролетел анонос, что компания ищет попутчиков на г.Сестру. Маршрут классический, пешка в один день с ночёвкой в приюте в Лазо. В понедельник вписался в эту затею, так как до этого времени ещё не дошёл до этой горы.

map

Oct 9, 2023 - 8 minute read - Туризм

Традиционная Читинза

Как обычно, на первые выходные октября собрал группу на мой традиционный выход. Правда традиция оказалась больше традицией для меня, но всё же: назвался груздем - полезай в кузов, или: назвал традицией - чти :)

map.jpg

Oct 2, 2023 - 2 minute read - programming

mdns vs libmicrodns

Потребовалось сделать в приложении анонсирование и поиск себе подобных. Причём без завязки на системный Avahi.

Выбор пал на три реализации mDNS/DNS-SD:

Первый отбросил из рассмотрения, так как показался слишком переусложнённым. Потом пошёл смотреть на libmicrodns - получилось собрать прототип очень быстро - мало кода. Но… жирный крест поставило то, что они до сих пор не исправили косяк, что нужно JOIN TO GROUP делать. Без этого анонсирование работает нормально, а вот запросы/поиск будет только на неком дефолтном, первом интерфейсе.

Пошёл на mdns. Для интеграции нужно больше кода, но почти весь можно как есть взять из примера mdns.c, библиотека без внутренних аллокаций. И очень неплохо дружится с внешними event-loop’ами, будь то libev или asio.

В общем, мой выбор - mdns.

А под катом - небольшая табличка сравнительная. Жирным - критерий преобладающий над соперником. Если ничто не выделено - нет приоритета.