stanislavvv: (Default)
На работе относительное затишье — начал пилить библиотеку с базой в постгресе.
Пока запускаю на десктопе, так что по скорости всё же не сказал бы, что ниженаписанное совсем уж правда.

С одной стороны, в текущем готовом варианте поиск таки работает (в варианте "по началу слов"), в отличие от предыдущих (sqlite не работал в проде вообще, ибо не укладывался даже в нереальный таймаут в 600 сек, jsonl — работал только по авторам/сериям, для названий уже не укладывался, а аннотации я даже и не пробовал).

С другой — списки книг отдаются стабильно медленнее, чем в варианте с json (правда, всё же быстрее, чем в варианте с sqlite). Впрочем, на десктопе на одном и том же файле намерил разницу где-то раза два, так что вряд ли будет критично, если постгрес будет нормально работать на Orange PI.

Вероятно, текущий вариант поставлю индексировать библиотеку в ближайшее время, а потом будут пилить выковыривание картинок из fb2 в базу и потом ещё думать, как их правильно показывать.
stanislavvv: (Default)
Сын перед тем, как пойти в школу выдал:
- Сегодня вечером ты будешь учить меня программированию!
Типа на карате сегодня не надо, есть свободное время.
Сейчас сижу, думаю, чему я могу научить такому, чью среду можно поставить на комп с парой гиг свободного места. Ардуину чтоль? Заодно к новому году ёлку спаять.
Или забить, дать доступ к вдс и сделать ему отдельный сайт, пусть вебпрограммированием займётся?
stanislavvv: (Default)
Попытался заменить самопальное извращение на базе спёртого где-то itoa и конкатенации строк перед выводом на нормальный printf.

Что я могу выразить...
Штатный snprintf из newlib в память-то влез, но вот на всё остальное мне уже не останется.
miniprinf от Warren W. Gay VE3WWG занял мЕньший объём, чем snprintf из newlib, но всё равно бОльший, чем весь остальной код, что уже есть, если убрать тестовую картинку 128x128.
И это я ещё не решил, что и как буду выводить...

В общем, ну его на, оставлю ручное формирование строк, тогда хотя бы точно хватит памяти на бОльшую часть извращений.
stanislavvv: (Default)
Таки дочитал раздел Reference manual по SPI, поставил биты конфигурации как понял.
На выходе SCK теперь вообще ничего нет, что странно.
Текущие настройки SPI (из дампа регистров на uart после запуска теста):

CR1: 1100 0011 0110 1111
CR2: 0000 0000 0000 0000
 SR: 0000 0000 0000 0010
 DR: 0000 0000 0000 0000
i2s: 0000 0000 0000 0000


Из содержимого CR1 видно в том числе, что а) включён режим передачи, б) режим мастера.

SCK и MOSI инициализированы на выход, на них - 0 (в смысле, низкий уровень).
Тактирование для gpio/альтернативных функций и spi - включено.

Из непроверенного - другой экземпляр контроллера. Паяльные работы заблокированы женой.

Что я мог ещё забыть?
stanislavvv: (Default)
Доделал шелл на микроконтроллере, простые задачи выполняет, параметры к командам принимает. Команд пока немного - hello, args (тестовая команда для проверки аргументов), led с необязательным параметром on/off/1/0 и lcdtest (должна тестировать экран).

Сделал генерацию документации по функциям с переменными и задолбался прописывать везде комментарии с описанием.

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

Чего-то у меня не работает SPI с целью вывода графики на тот экран.
После инициализации на SCK постоянный вывод 900кГц, на MOSI - ничего.
При этом и инициализация SPI средствами libopencm3 и моя инициализация отдают один и тот же результат в регистрах.
У меня пока есть такие подозрения: либо я таки что-то не так инициализирую (сам spi или пины для него), либо у контроллера битые выводы, либо я что-то не так припаял.
Пока план такой:
0) читать Reference Manual + исходники товарищей, заводивших сей экран (практически все - на HAL, либо вообще на ардуине, что не позволяет просто взять код) на предмет разницы в инициализации пинов и spi.
1) взять другой порт spi и попробовать с ним.
2) взять другую плату с контроллером, припаять туда не гребёнку, а нормальные провода.
stanislavvv: (Default)
Пятница. На работе делать ничего серьёзного нельзя, а несерьёзное закончилось.
Имевшийся usb-uart сдох, из китая ещё не доехал, с мигалкой извращаться неохота, паять своё во время работы как-то неправильно - от нечего делать слегка переделываю сборку базового проекта с морзе-хелловорлдом, дабы можно было указывать под что собирать без правки чего-либо, полученного из git.
Надо будет ещё подумать, что поставить для автосборки по git push - drone или что-нибудь более приличное найдётся?
Смесь хобби и того, что делаю на работе... Сабж...
stanislavvv: (Default)
Казалось бы, прошло всего пару лет, как пробовал что-нибудь сотворить на STM32 и не смог продвинуться дальше мигалки (помнится, пролетел на инициализации uart), а теперь, блин, сравниваю freertos+libopencm3 и freertos+hal - оба попробовал на этой неделе после длительного перерыва в извращениях вне компа.
Собственно, сравнение (на самом деле - libopencm3 и hal, freertos и там и там сбоку):

freertos+libopencm3 - просто. Даже очень просто, хоть всё ж и не на уровне ардуины - специальных упрощений нет. Но при этом opencm3 поддерживает далеко не всё и периодически меняет интерфейсы, что приводит к тому, что в проекте надо держать определённый коммит.

freertos+hal - чуть сложнее. Всё рекомендуется делать функциями HAL, всё переносится с контроллера на контроллер конфигурилкой, потом в теории даже работает так, как задали. В сгенерированном минимальном коде можно с непривычки запутаться - очень много всего, что для минимального примера лишнее. Дохрена комментариев вида "начало юзерского кода". Говорят, есть баги (верю, но проверить не могу пока). При этом это - мейнстрим и, похоже, пользоваться придётся им, иначе ни тебе исходников потырить в случае чего, ни показать и спросить правильно ли.
stanislavvv: (Default)
Решил попробовать Mbed Studio поставить на комп, а то работа с вебгуйнёй - не совсем работа какая-то... И понаступал немного:
1) установка - строго через скриптик, который должен запускаться строго под sudo (su не годится).
2) из-за того, что скриптик запускается строго через sudо, в нём куча мелких телодвижений, ненужных при установке от пользователя.
3) в самом скриптике скачивается Mbed Studio, распаковывается во временный каталог, создаваемый прям рядом со скриптом, запускается install.sh + доустанавливается, если может, левый clangd (в поддерживаемых дистрибутивах он точно есть).
4) внутри install.sh рут нужен только для копирования конфигов udev для pyocd (в дистрибутивах есть штатный), отчего опять дохрена лишних телодвижений

Пока что так и не поставил - хочу посмотреть, можно ли сделать пакет на штатное место левого софта куда-нибудь в /opt с созданием симлинков в /usr/bin И правильными зависимостями от clangd (этот должен быть стандартным) и pyocd (тут возможны варианты).

Так же в комплекте идут несколько вещей типа gcc, причём у меня уже установлен gcc-arm-none-eabi версией свежее, чем там, так что, подозреваю, что тут надо ковырять несколько больше...

Ну и вишенкой на торте служит ошибка в uninstall.sh
stanislavvv: (Default)
Дочь лазает по инету с телефона и получился такой диалог:
Дочь: - а чего это мне масло для бороды рекламируется?
Я: - про программирование читала?
Дочь: да...
Я: - ну вот. Среди программистов знаю людей, отращивающих бороду.
Сын (обращаясь к дочери): - а ты не думаешь отращивать?
stanislavvv: (Default)
https://gist.github.com/stanislavvv/e2afaaf7bc5359f7de1d50c05eb10a08 - от нехрен делать (задач ещё нет) соорудил скрипт, который из поданных аргументов делает командную строку, запускает её и засовывает получившийся stdout в всплывающий текст на иконке.
Иконку взял из стааарого скрипта управления mpd, так что не удивляйтесь мелкому чёрному квадратику.
По-умолчанию берёт погоду с wttr.in
stanislavvv: (Default)
С понедельника в отпуск, так что на работе ничего долговременного не делаю.
Зато есть некий микросервис на фласке (почти-REST, автогенерация swagger.json из docstring и т.д. и т.п.)
Сегодня привёл имена отдаваемых/принимаемых полей к политике партии + убрал ругань от pylint + дописал в Makefile создание virtualenv, дабы некоторые не ставили всё через apt-get install + таки написал мелкий скрипт для запуска сервиса через tornado.
Странно, но после всего, что натворил, сервис всё ещё работает.
Надо будет ещё посмотреть на https://github.com/NYTimes/openapi2proto и https://github.com/keenbrowne/flask-pbj и таки соорудить ещё и работу с protobuf там же, но, вероятно, не успею до начала отпуска.
Сабж, однако...

Profile

stanislavvv: (Default)
stanislavvv

May 2025

S M T W T F S
    123
45678910
1112131415 1617
18192021222324
25262728293031

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 5th, 2025 03:46 am
Powered by Dreamwidth Studios
OSZAR »