Hatred's Log Place

DON'T PANIC!

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.

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

Sep 6, 2023 - 2 minute read - programming

Временные метки на файловых системах

Короткая заметка и ссылки. Возможно потом дополню информацией о разрешении (resolution) временных меток.

  • FAT/FAT32
    • Хранит локальное время, без указания Timezone. Поменяешь в системе зону - время создания файлов останется без изменений. Т.е. нужно помнить в какой ТЗ они создавались.
    • Windows сохраняет вот прям вот локальное время
    • Linux добавляет час, при переводе часов
    • timestamp:
      • дата 16 битное число: 7 бит - год, 4 бита - месяца, 5 бит - день. Год в диапазоне 1980-2107.
      • время 16 битное число для часов, минут, секунд
  • exFAT:
    • Время хранится локальное. Но есть нюанс.
    • Временная зона хранится в 1 байте. Vista SP1 не использует его. Что бы нормально жилось, старший бит сигнализирует - применять или нет смещение зоны. 0 - не применять. 1 - применять. Остальные 7 бит - 15минутные интервалы для смещения. Положительное направление - на восток.
    • Т.е. если бит 7 в TZ поднят, то система будет пересчитывать время файла в UTC, что бы корректно отобразить в системе при смене часового пояса. Эдакая обратная совместимость.
  • NTFS
    • Время хранится в UTC
  • EXTx (EXT2/3/4)
    • Время хранится в UTC

Aug 18, 2023 - 1 minute read - programming

QtC: снова про отображение всех файлов в стоковом плагине CMake

Это логическое продолжение этого с учётом нововвидений по добавлению файлов.

Весь “код” разместил на GitHub: qtc-other-files-helper. Там же есть и детальное описание.

Тезисно:

  • Так же используем вспомогательный файл
  • Так же используем кастомный таргет
  • Но уже не сканируем дерево: отдаём на откуп пользователю, что добавить, что убрать. Что бы не конфликтовать с существующими файлами.
  • Не используется CMAKE_TOOLCHAIN_FILE, вместо него - CMAKE_PROJECT_INCLUDE.
  • Доработано решение для использования как на уровне per-project, так и глобально, на уровне Kit. Но бросить файлик второй в директорию с проектом всё равно нужно будет.

Из косяков:

  • При добавлении файлов, QtC стремиться создать новую запись target_sources() в CMakeLists.txt верхнего уровня. Приходится вручную вырезать и вставлять в qtc-other-files.cmake

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

Jun 23, 2023 - 1 minute read - Linux

ArchLinux: получение исходников системного пакета

Как обычно в мемориз.

Раньше был тул abs, потом вся структура мигрировала на Git. Теперь что бы получить пакет нужен тул Arch Build Source Management Toolили коротко - asp. Не путать с ASPLinux… Да был когда-то такой.

Ставится:

sudo pacman -S asp

Получить PKGBUILD:

asp checkout PKGNAME

или:

asp export PKGNAME

Например:

asp checkout kdiff3

Далее работам как обычно с PKGBUILD: makepkg с полезными опциями. Сам спек правим по необходимости.

На чистом Arch Linux ещё есть пакет devtools, который содержит тул pkgctl, который позволяет достичь той же цели: получить PKGBUILD для сборки:

pkgctl repo clone PKGNAME

На производных, типа Manjaro (мой случай) этого тула может не быть. А вот asp - есть.

Полезные ссылки:

  1. Arch Build System

May 4, 2023 - 2 minute read - programming projects

Qt Creator & CMake: завезли добавление/удаление/переименование файлов

Итак, обновляю свой CMakeProjectManager2 и что я вижу:

  • 71eb0ab9f8e98df9bd021c1c49d7ec00a66492cb - завезли парсер CMake в стоковый плагин.
  • d41365610ff80478d8c6c2812299d95d139561ec - его интегрировали в билд.
  • d8be2491a5f5cfdc512f63c766a550dd43694063 / 13 апреля 2023 - реализовали добавление новых и существующих файлов к таргету, причём файл пытается добавляться прямо в CMakeLists.txt: файл будет добавлен последним элементов к соответствующей “well-known” функции (они захардкожены) типа add_executable(), add_library(), qt_add_executable(), qt_add_library(), qt6_add_executable(), qt6_add_library(). Для кастомных функций будет добавлен вызов target_sources(), что тоже неплохо. Уже можно начинать пользоваться.
  • 039baab6e70160bc8130ef95e499141f7c875225 / 20 апреля 2023 - реализовали вышеперечисленное для QtQuick проектов, в список “well-known” функций добавились: qt_add_qml_module(), qt6_add_qml_module()
  • 54af6bd5b3f5ba5e3396f5cb9eb539f198abafff / 21 апреля 2023 - разрешили переименовывать файлы. Работает как для явно указанных файлов, так и для добавленных через file(GLOB|GLOB_RECOURSE).
  • 411b2e05b8ac4442d1ef179381dc7c37492ab37b / 24 апреля 2023 - разрешили удалять файлы.
  • 5c2b2966e78129dcbd220e35e15f6278a1b3d05d / 27 апреля 2023 - разрешили добавлять существующую директорию. Пока, как я понял, добавляются все файлы, а не add_subdirectory(). Что, по мне, более логично: все операции target-ориентированные.
  • 874b1133d9cfaef179851aa925b7d6b96e85019b / 26 апреля 2023 - пофиксили удаление и переименование, что бы оно срабатывало и с файлами, которые указываются через переменные для таргета.

Ну и пачка мелких фиксов.

На текущий момент, меня огорчает отсутствие вывода всех файлов их проектной директории (например, README.md или скрипты вспомогательные, которые вполне можно редактировать в QtC), но уже можно начинать пытаться нормально работать.

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

А вообще, тенденция к тому, что CMakeProjectManager2 можно будет выкинуть меня радует!

Apr 14, 2023 - 1 minute read - programming C++

[C++] std::tie() и range for

Сегодня мне не хватило такого (C++20):

for (std::tie(m_imageWidth, m_imageHeigth) : sizes) {}

Пришлось так:

for (auto const &size : sizes) {
    std::tie(m_imageWidth, m_imageHeigth) = size;
}

Mar 31, 2023 - 1 minute read - memo

Display Technology Information Repository and Utilities

В мемориз:

Подборка полезный утилит и стандартов связанных с дисплеями: HDMI, DP:

К сожалению, свежие стандарты HDMI 2.0, 2.1 чувака заставили удалить из публичного доступа (почитайте письмо, которое ему написали).

Помимо этого есть спеки ITU/BT - там можно поискать коэффициенты RGB-YUV конвертаций для различных режимов (Rev.601 vs Rec.709 vs BT.2020, а вот про BT.2100 я уже не слышал) - бывает полезно (наипался, когда программировали матричный pCSC).

Офигенный раздел по кабелям и переходникам:

и его “продакшн” версия:

Так же раздел, для расчёта параметров монитора (например, DPI) по разрешению и диагонали:

Mar 31, 2023 - 1 minute read - memo

Online Tone Generator

В мемориз.

Предыстория: досталась Б/У “железная” дорога Tomica (японческий оригинал), а там оказался один локомотив, у которого два варианта управления:

  1. Пультом
  2. Свистком

Пульта, понятное дело, не нашлось. Изучая логотип свистка и помедитировав на картинки с этим локомотивом, где изображён этот самый свисток, сначала своим свистом попытался запустить, что через минут 15 удалось… Представьте себе картину маслом: сидит взрослый человек, и свистит на игрушечный тепловоз. Понравилось? :)

А потом решил поискать какой-то генератор тона, что бы более точно подобрать частоту.

Собственно в мемориз: