Hatred's Log Place

DON'T PANIC!

Jan 2, 2020 - 1 minute read - electronic

Digi-Key KiCAD Library

Digi-Key предоставляет символы и корпуса для компонентов, которыми они торгуют в формате понятному для KiCAD. И выкладывают их на GitHub. Кроме того, есть символы и от некоторых партнёров (репозитории разделены).

Помимо этого они же опубликовали учебный курс по работе с KiCAD на YouTube.

Все подробности по ссылке ниже:

Dec 6, 2019 - 1 minute read -

Cross Posting Test

Проверка кросс-постинга.

Nov 13, 2019 - 1 minute read -

Генератор таблиц для Markdown

Пост - мемориз.

Не всегда рисовать таблицы в Markdown разметке удобно, особенно добавлять/удалять колонки (со строками всё намного проще). Да и просто следить за соответствием вводимых данных конкретной колонке. И вот совершенно случайно набрёл на ресурс: Tables Generator

А конкретно: Markdown Tables Generator

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

Для редактирования можно скопировать таблицу и импортировать её через “File → Paste table data…”, естественно при условии корректности данных. Кроме того, можно данные для таблицы импортировать из CSV (“File → Import CSV File…”), как работает эта функция я не проверял, скорее всего могут возникнуть проблемы с пробелами или разделителями.

Что ещё? Вообще там можно создавать таблицы не только в разметке Markdown, а в:

  • LaTeX
  • HTML
  • Text
  • MediaWiki (вот где абсолютный треш!)

Схожие ресурсы:

Nov 13, 2019 - 4 minute read - туризм

ГГЦ карты для QMapShack в виде TMS (Tile Map Service)

QMapShack умеет работать с сетевыми картами, которые представлены в виде тайлов с определённым соглашением о вызове. Что бы работать с подобными сервисами нужно создать файл-описание с расширением .tms. Описание формата можно почитать здесь.

До недавнего времени я обходился в основном картами OpenCycleMap, TMS файл для которых идёт вместе с QMS. А для нужных районов уже искал/скачивал листы карт ГГЦ (в народе: “новый” генштаб) и делал им обвязку в виде .vrt файла (такие карты содержать описание нужных преобразований, не затрагивая самих исходников карты, тем самым можно делать “обрезку карт” и они понимаются всем, что использует GDAL).

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

Jul 25, 2019 - 2 minute read - programming

IOCTL: ENOIOCTLCMD vs ENOTTY

Что возвращать из обработчика IOCTL в user-space если данный IOCTL не поддерживается? В нашем драйвере активно использовался ENOIOCTLCMD. Проблема в том, что он объявлен в linux/errno.h в заголовке которого написано (вольный перевод):

не использовать в пользовательском коде

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

Кроме того:

  • этого кода нет в пользовательских errno.h/cerrno;
  • для этого когда strerror() вернёт что-то вроде: Unknown error 515 (номер может и отличаться);
  • константы для этого кода ошибки нет на других платформах (Windows, MacOSX, FreeBSD).

Что использовать-то? А использовать не совсем очевидный: ENOTTY.

Изначально, да и согласно комментариям в include/uapi/asm-generic/errno-base.h:

Not a typewriter

При этом утилита пользовательского пространства errno из комплекта moreutils говорит:

ENOTTY 25 Inappropriate ioctl for device

Дополнительными аргументами:

  • интернеты тоже подсказывают такую трактовку;
  • в ядре Linux оно используется по такому же назначению.

В чём же отличие? Нашёл отличное объяснение в block/ioctl.c:

 * Is it an unrecognized ioctl? The correct returns are either
 * ENOTTY (final) or ENOIOCTLCMD ("I don't know this one, try a
 * fallback"). ENOIOCTLCMD gets turned into ENOTTY by the ioctl
 * code before returning.

Не буду переводить, просто поясню: ENOIOCTLCMD используется во внутренних реализациях, когда есть предположение, что обработку можно выполнить в каком-то стандартном русле, выполнить т.н. fallback. В пользовательское пространство должен вернуться ENOTTY. Точка.

Jul 12, 2019 - 4 minute read - programming linux

QtC: ошибка при попытке сделать коммит в Git репозиторий

Буквально вчера столкнулся с таким вот поведением QtC:

С учётом того, что я собираю QtC из исходников master-ветки репозитория, первая мысль была: что-то поломали, нужно по быстрому разобраться и откатить. Но всё оказалось чуточку интереснее. Кому интересно - добро пожаловать под кат.

Jul 9, 2019 - 1 minute read - programming embedded

Embedded Artistry Blog

И снова из разряда рекомендаций для чтения и изучения, можно сказать, в продолжение Practical Guide to Bare Metal C++.

Очень много полезной информации в части применимости современного C++ для embedded разработки и не только.

К примеру, там очень интересный цикл статей “Exploring Startup Implementations”, который позволяет разобраться в C++ Runtime:

  1. A General Overview of What Happens Before main()
  2. Exploring Startup Implementations: Newlib (ARM)
  3. Exploring Startup Implementations: OS X

Или серии:

PS там же наткнулся на рекламу книжки “Real Time C++”, добавил в свой список.

Jun 25, 2019 - 7 minute read - programming

Удалённое развёртывание драйвера/модуля ядра в Qt Creator

Для Windows драйвер писать в QtC никто в здравом уме и трезвой памяти не будет. Поэтому речь дальше по процессу разработки драйвера для Linux. Я не буду касаться вопросов использования отладчика (KGDB), в основном посмотрим на вопросы запуска модуля ядра на удалённой системе.