Как стать автором
Обновить
0
0
Павел @osmanpasha

Программист

Отправить сообщение

А иксы, проброшенные через ssh, тоже будут резаться? Там тоже клавиатурный ввод не будет прослеживаться.

Спасибо за коментарий! Ну вроде бы похожий функционал еще обеспечивает Qt for MCUs со стандартными для qt сигналами и слотами. Но оно требуют довольно толстых микроконтроллеров, ориентировано в основном на UI, и навязывает структуру проекта, системы сборки и т.п. Я сам не пользовался.

В клавиатурах обычно больше кнопок, чем остается у МК на работу с ней, так что применяются разные техники мультиплексирования, как в статье. Как в таких случаях реализовывать прерывания?

Извините, но у вас какая-то дурацкая архитектура вышла. Очереди в принципе нужны, чтобы организовать FIFO-обработку, а блокирующие очереди еще для того, чтобы один поток ждал, пока от другого что-то придет. Было бы логично, если бы таска кнопок выполняла свою низкоуровневю логику и выдавала в очередь события типа "кнопка 1 нажата", "повтороное нажатие кнопки 5". У вас же каждый тик таска выплевывает в очередь внутренне состояние всех кнопок, и в итоге от очереди нет никакого толку; порядок элементов в очереди не важен, и таска-читатель не ждет событий, т.к. они все равно идут непрерывным потоком. Код в главной такске вышел такой же, как если бы состояние кнопок хранилось в массиве, к которому имеют доступ обе таски (только потокобезопасный).

Поэтому тут и от двух тасок нет особой пользы, проще и дешевле было бы в главной таске вызывать фцнкцию вроде "update_buttons_states()" и дальше делать то, что и сейчас. Не было бы накладных расходов на переключание между тасками и на копирование памяти в очередь и из нее.

Второй случай. Ситуация становится сложнее, если вы хотите, чтобы было сразу несколько задач-получателей. Курниц называет такую задачу нетривиальной. Мне пришлось решать эту проблему самостоятельно, поэтому поднимаю ее здесь. Решение, которое предлагает интернет в таком случае - совместное использование функций синхронизации групп событий и просмотр элемента очереди без удаления.

Это выглядит как неправильный выбор инструмента и попытка натянуть его на задачу. Очередь с несколькими слушателями работает, когда слушатели равноправны и нужно доставить элемент только одному. Традиционный пример - пул потоков-воркеров, которые берут задачи из очереди. Если одно событие должно уходить нескольким слушателям, и они еще и выбирают, какие кому нужны, то тогда лучше взять другой паттерн, publish-subscribe там, или observer. Или просто сделать состояние кнопок доступным на чтение всем желающим.

И да, это все уже изобретено до нас, например, есть бибилотека ETL (embedded template library), там есть и observer, и message router, и миллион других готовых велосипедов.

Mail.Ru Group даже переименовалась в 2021 и теперь называется VK

Это с виду станок формата 3018 или его родственник, его за 10 тыр можно было купить пару лет назад

Возможно, выйдет меньше, если какие-то бинарники заменить на BusyBox. Или вообще строить всё не из alpine, а из busybox. Правда, тогда с установкой туда пакетов придется повозиться.

А как оно в сравнении с cython? Тоже же для этого проект, вроде бы.

Добрый день! Это никак не отвечает на вопрос)

Почему такой толстый продакт-плейсмент эпла? Это нейросеть сама дорисовала или в промте заказали?

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

У меня был еще более дешевый аналог этой шайтан-машины лет 5 назад. Там солнечные панели были подключены напрямую к аккумулятору, так что в темноте аккумулятор потихоньку разряжался через панель. Никакой защиты от переразряда в самой батарее не было, и мой экземпляр даже не дожил до лета, когдая я хотел его протестировать на природе...Но судя по фото в статье, сейчас схемотехника лучше стала.

дак у самых хороших солнечных панелей КПД процентов 25, а у китайских еще меньше. Так что если вентиляции нет, то под батареей все прожарится не хуже, чем под тентом. Собственно, числа в статье об этом.

А она и не работает. Если заглянуть в /usr/bin/cd, он вызывает build-in cd, т.е. не имеет никакого эффекта на вызывающий его процесс. Вот на SO обсуждение, зачем она нужна; пишут, что с помощью ее возвращаемого значения можно проверять, а можно ли вообще сделать cd куда-то, не делая его. И получить текстовое описание, почему нельзя.

Но я не нашел, кстати, этот бинарник ни в Mint, ни в Arch, ни в Raspbian

Это наверное как сейчас на МКС - кубсаты из ящика разбрасывать планируют. А про производство - ну, приукрасили чуток.

Хех, а ведь когда-то Ализар писал новости для хабра и его имя было именем нарицательным. Правда с противоположным оттенком

The first two bytes distinguish PNG files on systems that expect the first two bytes to identify the file type uniquely. The first byte is chosen as a non-ASCII value to reduce the probability that a text file may be misrecognized as a PNG file; also, it catches bad file transfers that clear bit 7

http://www.libpng.org/pub/png/spec/1.2/PNG-Rationale.html#R.PNG-file-signature

Им как раз нужен был непечатаный символ с кодом >127. Чтобы программы по ошибке не приняли текстовый файл с таких началом за PNG.

Интересно, опросили 1400 геймеров, а потом просто экстраполировали на общее количество геймеров? А его как оценивали?

Ну скорее всего, "какого х*ра", потому что оно явно матерное.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность