OpenOCD, ThreadX и ваш процессор
TODO: нужно перетянуть статью в т.ч. сюда. Пока ссылка:
TODO: нужно перетянуть статью в т.ч. сюда. Пока ссылка:
Немного о наболевшем.
В PDF, обычно, распространяется документация.
В документации, обычно, есть перекрёстные ссылки.
По ссылкам неплохо иметь возможность переходить.
До сего момента речь шла, практически, о 100% доступных читалок для PDF.
А вот теперь, перейдя по ссылке, неплохо бы иметь возможность вернуться назад, к той точке, откуда мы пришли.
Внезапно, но это, казалось бы простое требование просто фантастически прореживает стройные ряды просмотрщиков!
После длительных поисков и переборов остался такой набор:
UPD: Сегодня появилась статья на Хабре, где человек соединил Qt, QWebEngineView и PDF.js, вот репозиторий на GitHub:
Наглядная статья: Системы заземления TN-S, TN-C, TNC-S, TT, IT
Ну и несколько замечаний по теме проводки:
На работе приходится сидеть в Windows по ряду причин, но очень неудобно, что нет привычного переключателя раскладок клавиатуры по CapsLock.
Перебрал несколько вариантов: специализированные утилиты (сайты большинства умерли (привет Recaps, Keyla) за исключением, пожалуй Capslang), правка реестра Windows ( https://habrahabr.ru/post/305658/, не понравилось), использовал PuntoSwitcher (стрельба из пушки по воробьям ради только переключалки, плюс досадно глючил временами).
В результате остановился на варианте с AutoHotkeys и эмуляцией нажатия клавиш переключения раскладки. Кроме того, учёл, что в рабочей сессии VirtualBox переопределять клавишу не нужно (для других VM код будет похожим). В результате получился такой скрипт:
SetTitleMatchMode RegEx
#ifWinNotActive, ^.+ - Oracle VM VirtualBox$
SetCapsLockState, AlwaysOff
+CapsLock::CapsLock
CapsLock::Send, {Ctrl down}{Shift down}{Shift up}{Ctrl up}
#ifWinNotActive
return
Сохраняем, запускаем, пользуемся. Если нужно, добавляем в автозагрузку. CapsLock остаётся доступен по сочетанию Shift+CapsLock.
Справочник по регуляркам: https://autohotkey.com/docs/misc/RegEx-QuickRef.htm
Ссылки по теме:
Немного накопилось, что не подошло, что хочется поменять, а что уже заменилось, поэтому выставляю:
Лот 1: (Б/У) Навигатор Garmin GPSMAP 62s, в полной комплектации, с картами ДВ, Домашних вулканов Камчатки, Кодара, Тункинских гольцов на Восточном Сайне и района Белухи на Алтае, цена вопроса 15000 руб
Лот 2: (Новый) Котелок с теплообменником Bulin S2500, 2 литра, цена вопроса - 2500 руб:
Лот 3: (Б/У) Алюминиевые секции дуги для палатки, диаметр 8.5мм, длинна полная 360мм, 5 штук, цена вопроса 100 руб/штука:
Лот 4: (Новый) Алюминиевая дуга для палатки, диаметр 8.5мм, длинна полшная 3.6м, 11 секций, цена вопроса 1200 руб:
Лот 5: (Новый) Запасные наконечники для трекинговых палок, резьба, совместимы с кольцами Leki, 4 штуки, цена вопроса 100 руб/штука:
Существуют хорошие практики программирования и их стоит изучать. Часть из них применима не всегда. Часть стандартов хорошо себя зарекомендовала, но стоят денег, например MISRA C++, но, помимо цены, ещё и достаточно консервативен и покрывает только язык до стандарта C++11 (выпущен в 2008 году).
Ниже список, на мой взгляд, хороших источников, которые хорошо иметь под рукой и регулярно пробегаться глазами:
Ну и на затравку: писать надёжный софт на C++ можно - C++ on Mars: Incorporating C++ into Mars Rover Flight Software :wink:
И стоит помнить, что есть практики, есть стандарты, но не стоит выключать свой мозг и обкладываться паттернами, бустом и прочими непотребствами, если вам нужно вывести всего лишь “Hello, world!”.
Пара линков на тему:
Первый описывает базовые подходы для версий debhelper меньше и больше 7. Второй линк описывает новый, рекомендованный подход с автоматическим созданием dbgsym пакетов.
Что бы файлы с отладочной информацией строились в PPA, в настройках (Change details…) нужно включить опции:
[x] Build debug symbols
[x] Publish debug symbols
Просто перечисление нескольких скрытых опций, которые могут оказаться полезными. В дополнение к http://kb.mozillazine.org/Stop_threading_by_subject:
mailnews.sort_threads_by_root
- если кому-то хочется, что бы при сортировке по дате обсуждений использовалась дата корневого письма, а не самого последнее. Не знаю, кому такое может пригодиться, но полезно знать, на случай, если какое-то расширение изменит эту настройку в true.mail.operate_on_msgs_in_collapsed_threads
- управляет поведением на свёрнутых обсуждениях: показывать не-conversation вариант (true - по-умолчанию) или показывает корневое сообщение (false). Так как conversation-вариант попросту нефункциональный в TB, то я использую false.Теперь ищу способ для:
Ну а под катом немного расширений, которые могут показаться кому-то интересными в части организации дискуссий.
В транке появилась пачка изменений, ориентированные на использование CMake Server Mode, в связи с чем плагин теперь может работать только с CMake версии 3.0 и более новым. Тобиас крепко взялся за плагин и будем надеяться, что, как минимум, скоро не будет требоваться:
Пока CMake Server Mode большего не предоставлят: в основном информация, но не изменение её. Так что ожидать автоматическое добавление файла к нужной цели или переименование файла в билд-системе средствами этого нового режима не стоит.
Ну а в самом QtC пока только инфраструктурные изменения, чтобы эту фичу начать поддерживать.
И от себя: в CMakeProjectManager2 добавил возможность использовать трюк от cmake, что бы задать варианты возможных значений для какого-то параметра и выводить их при редактировании в виде выпадающего списка. Фичу портировал в апстрим и завёл ревью, кому нужно, голосуйте: https://codereview.qt-project.org/#/c/173340
Про сам трюк:
Если коротко, то в вашем CMakeLists.txt, для задания возможных значений для параметра, нужно добавить конструкцию:
set_property(CACHE OptionName PROPERTY STRINGS PossibleValue1 PossibleValue2 PossibleValue3 ... PossibleValueN)
Ни на что, кроме как для подсказки GUI этот параметр не влияет: CMake не делает валидацию введённых значений, поэтому возможность задать любое другое - остаётся.
Ссылки по теме:
Не мог обойти вниманием сиё творение.
Ребята запилили на суровом C++11/14 однозадачную сервисо-ориентированную операционку. Суть: операционка с минимальным футпринтом (образ 707кб), которая обслуживает ровно одну задачу (в их терминологии - сервис) и работает под управлением виртуальной машины: KVM, VirtualBox, используя возможности аппаратной виртуализации.
Сама операционка внутри представлена в виде асинхронного фреймворка, призванного, в первую очередь, строить сетевые приложения. Т.е. внутри реализован стек TCP/IP (судя по описанию, пока только IPv4, но IPv6 активно пилится). Многопоточность не поддерживается, реализован подход с кооперативной многозадачностью, которых очень хорошо ложится на асинхронную модель. Есть базовая поддержка файловых и дисковых операций (как минимум есть поддержка RAM-диска и файловых систем Ext4 и FAT).
При всём этом доступны для использования libc++ от LLVM (в том числе исключения), stdc в лице newlib.
В общем, интересное решение для сервис-ориентированных архитектур, для создания выделенных микросервисов. Плюс приятная лицензия: Apache2.
Ну и ссылки:
Покупаешь палки, ходишь, и через некоторое время наконечники превращаются в такое:
и перестают “цепляться”, а при дальнейшем износе уже начинают убиваться сами палки.
Всегда хочется, что бы ноутбук смог проработать в автономке подольше. Тут помимо оптимизации энергопотребления (статей посвящённых этому вопросу в интернетах уйма) иногда встаёт вопрос более ёмкой батареи. Причём актуальность автономной работы часто перекрывает некоторые неудобства, связанные с весом и габаритами.
Или разлепляем пельмени, а потом собираем их обратно. Пару заметок.
Собственно разработчики Linux Mint всегда рекомендовали использовать новую установку вместо того, что бы просто обновлять систему. Несколько релизов я всё же обновлялся путём исправления репозиториев и apg-get upgrade
/ apt-get dist-upgrade
. При выходе 18 версии дистрибутива авторы выложили инструмент и инструкцию для сего обновления:
Как обычно проблемы кроятся в мелочах. А именно: не учитывается влияние PPA от слова совсем.
Снова мемориз.
Находим BIOS тут или по модели тут. Скачиваем ISO. Не смущаемся наличием в описании разных Windows.
Используем руководство
отсюда. В частности,
как использовать GRUB2, что бы не шить ISO никуда. У меня не сработало - зависание программы прошивальщика после первого подтверждения своих намерений. Помог способ с
загрузочной флешкой. Конспективно:
./geteltorito.pl -o xxx.img xxx.iso
sudo dd if=xxx.img of=/dev/sdX
Перезагружаемся, выбираем флешку как источник загрузки и грузимся с неё. Дальше всё понятно.
Опционально проверяем версию BIOS и время релиза из системы:
sudo dmidecode -s bios-version
sudo dmidecode -s bios-release-date
Это просто мемориз, а то задолбался каждый раз искать где и как брать свежий фирмварь и патчер для JNX.
Прошивка:
Патчер:
GPSMAP 66/66s:
Инструкция по обновлению (подсматривается на официальной странице прошивки нажав Ctrl-U :simple_smile:):
NOTE FOR USERS WANTING TO DOWNLOAD SOFTWARE ON ONE COMPUTER AND THEN INSTALL IT TO THEIR
DEVICE USING A DIFFERENT COMPUTER:
1) To download the region file used by WebUpdater, copy and paste this link into your browser
on computer #1:
http://download.garmin.com/software/GPSMAP62_78_WebUpdater__630.gcd
2) Bring GPSMAP62_78_WebUpdater__630.gcd to computer #2 where your device is attached.
3a) Then you can drag-and-drop GPSMAP62_78_WebUpdater__630.gcd onto the WebUpdater icon on your desktop.
3b) Or you can invoke WebUpdater at the command line, passing in the region file as a parameter:
C:<br/>>WebUpdater.exe c:<br/>path<br/>to<br/>GPSMAP62_78_WebUpdater__630.gcd
Что они нормальным путём этого не предлагают мне не понятно.
Инструкция тоже не полная. Нужно: