Справа в ссылках на ресурсы добавил ссылку на
канал в Telegram куда автоматом перекладываются статьи из бложика. Помимо этого, завёл шаблон Instant View, и ссылка фильтруется через него, так что читать статью на мобильных устройствах можно прямо из телеги. Дискуссии тоже открыты.
PS всего-то 4 года прошло, как канал появился :-D
Сетап:
- Удалённое устройство, подключенное к серверу на Linux
- Управление через COM порт
- Управление тулом под Windows
- Есть SSH доступ
- Само устройство успешно удалённо программируется и отлаживается по JTAG
Нужно:
- Запустить тул локально под Virtual Box (локальная машина тоже Linux)
- Пробросить удалённый последовательный порт локально
- Пробросить его в Virtual Box
Поиск в интернете даёт сходу два результата:
Оба пакета имеются в наличии в Manjaro/ArchLinux и поставить просто:
socat
, к слову, уже был поставлен как зависимость kwallet-pam
.
ser2net
реализует RFC2217.
На ноябрьские праздники группой единомышленников сгоняли Снежную по маршруту с севера. Хотя, если смотреть карту, то больше похоже на маршрут с Запада :)
![map.jpg](/blog/2023/11/07/snezhnaya-from-the-nord/files/map.jpg)
Идея сделать, а если быть точнее, то закрыть этот траверс родилась в моей голове как шутка, переросшая в навязчивую идею.
![map](/blog/2023/10/30/makarova-makariha-traverse/files/map.jpg)
Выбрались в очередной раз на Фалазу с сыном. На этот раз собралась целая компания отцов:
- Я с Андреем
- Валентин со Львом
- Стас с Марком
- и Паша с Арсением
Сходили душевно. Пацаны залетели на вершину на одном дыхании, уже за ними нужно поспевать. Попали в зимнюю сказку, при этом на вершине вышло, как по заказу солнце и было очень тепло. Немного поиграли даже в снежки :)
Фото:
https://disk.yandex.ru/a/3bEPHunfJyViAg
Полторы недели назад в группе пролетел анонос, что компания ищет попутчиков на г.Сестру. Маршрут классический, пешка в один день с ночёвкой в приюте в Лазо. В понедельник вписался в эту затею, так как до этого времени ещё не дошёл до этой горы.
![map](/blog/2023/10/15/sestra-mountain//files/map.jpg)
Как обычно, на первые выходные октября собрал группу на мой традиционный выход. Правда традиция оказалась больше традицией для меня, но всё же: назвался груздем - полезай в кузов, или: назвал традицией - чти :)
![map.jpg](/blog/2023/10/09/regular_chitinza_2023/files/map.jpg)
Потребовалось сделать в приложении анонсирование и поиск себе подобных. Причём без завязки на системный Avahi.
Выбор пал на три реализации mDNS/DNS-SD:
Первый отбросил из рассмотрения, так как показался слишком переусложнённым. Потом пошёл смотреть на libmicrodns - получилось собрать прототип очень быстро - мало кода. Но… жирный крест поставило то, что они до сих пор не исправили косяк, что нужно JOIN TO GROUP делать. Без этого анонсирование работает нормально, а вот запросы/поиск будет только на неком дефолтном, первом интерфейсе.
Пошёл на mdns. Для интеграции нужно больше кода, но почти весь можно как есть взять из примера mdns.c, библиотека без внутренних аллокаций. И очень неплохо дружится с внешними event-loop’ами, будь то libev или asio.
В общем, мой выбор - mdns.
А под катом - небольшая табличка сравнительная. Жирным - критерий преобладающий над соперником. Если ничто не выделено - нет приоритета.
Короткая заметка и ссылки. Возможно потом дополню информацией о разрешении (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
- EXTx (EXT2/3/4)
Это логическое продолжение
этого с учётом
нововвидений по добавлению файлов.
Весь “код” разместил на GitHub:
qtc-other-files-helper. Там же есть и детальное описание.
Тезисно:
- Так же используем вспомогательный файл
- Так же используем кастомный таргет
- Но уже не сканируем дерево: отдаём на откуп пользователю, что добавить, что убрать. Что бы не конфликтовать с существующими файлами.
- Не используется
CMAKE_TOOLCHAIN_FILE
, вместо него - CMAKE_PROJECT_INCLUDE
.
- Доработано решение для использования как на уровне per-project, так и глобально, на уровне Kit. Но бросить файлик второй в директорию с проектом всё равно нужно будет.
Из косяков:
- При добавлении файлов, QtC стремиться создать новую запись
target_sources()
в CMakeLists.txt верхнего уровня. Приходится вручную вырезать и вставлять в qtc-other-files.cmake
Ну и в старом способе была проблема, что эти файлы попадали в кодовую модель и мешали парсеру. Детально не разбирался в новых реалиях.
На выходных, 22-23 июня 2023, отлично прогулялись с сыном по двум водопадам у подножия хр.Большой Воробей: Березняк и Маруськины слёзы.
![map.jpg](/blog/2023/07/23/waterflows-bereznyak-maruskiny-szlezy/files/map.jpg)
Как обычно в мемориз.
Раньше был тул abs
, потом вся структура мигрировала на Git. Теперь что бы получить пакет нужен тул
Arch Build Source Management Toolили коротко - asp
. Не путать с
ASPLinux… Да был когда-то такой.
Ставится:
Получить PKGBUILD:
или:
Например:
Далее работам как обычно с PKGBUILD: makepkg
с полезными опциями. Сам спек правим по необходимости.
На чистом Arch Linux ещё есть пакет
devtools, который содержит тул pkgctl
, который позволяет достичь той же цели: получить PKGBUILD для сборки:
pkgctl repo clone PKGNAME
На производных, типа Manjaro (мой случай) этого тула может не быть. А вот
asp
-
есть.
Полезные ссылки:
-
Arch Build System
Итак, обновляю свой
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 можно будет выкинуть меня радует!
Сегодня мне не хватило такого (C++20):
for (std::tie(m_imageWidth, m_imageHeigth) : sizes) {}
Пришлось так:
for (auto const &size : sizes) {
std::tie(m_imageWidth, m_imageHeigth) = size;
}
В мемориз:
Подборка полезный утилит и стандартов связанных с дисплеями: HDMI, DP:
К сожалению, свежие стандарты HDMI 2.0, 2.1 чувака заставили удалить из публичного доступа (почитайте письмо, которое ему написали).
Помимо этого есть спеки ITU/BT - там можно поискать коэффициенты RGB-YUV конвертаций для различных режимов (Rev.601 vs Rec.709 vs BT.2020, а вот про BT.2100 я уже не слышал) - бывает полезно (наипался, когда программировали матричный pCSC).
Офигенный раздел по кабелям и переходникам:
и его “продакшн” версия:
Так же раздел, для расчёта параметров монитора (например, DPI) по разрешению и диагонали: