Pull to refresh
1
0
Send message

VSCode+CMake+openocd для программирования и отладки ch32

Level of difficultyMedium
Reading time12 min
Views9K

На хабре немало статей по настройке окружения для разработки под микроконтроллеры stm32 и другие платформы. Кто-то предпочитает использовать спец.пакеты (CubeIDE, Keil), кто-то - расширения для IDE "общего назначения" (PlatformIO, VisualGDB), кто-то, как и автор, "голый" CMake в связке с бесплатным VSCode.

В процессе знакомства с пока еще не слишком популярными RISC-V микроконтроллерами ch32, которые, в целом, способны заменить stm32, захотелось обеспечить себе привычную и уже удобную связку VSCode+CMake для программирования, сборки, прошивки и отладки. И это получилось!

RISCнём (по-китайски)
Total votes 15: ↑15 and ↓0+15
Comments17

Книга «README. Суровые реалии разработчиков»

Reading time17 min
Views7.7K
image Привет, Хаброжители!

Начинающим программистам требуется нечто большее, чем навыки программирования. Столкнувшись с реальной работой, вы моментально понимаете, что самым нужным вещам, имеющим критическое значение для карьеры, не обучают ни в университетах, ни на курсах. Книга «README. Суровые реалии разработчиков» призвана восполнить этот пробел.
Познакомьтесь с важнейшими практиками инжиниринга, которым обучают разработчиков в ведущих компаниях.

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

Ключевые концепции и лучшие практики для начинающих разработчиков — то, чему вас не учили в университете!
Читать дальше →
Total votes 10: ↑8 and ↓2+9
Comments3

Zabbix-мониторинг устройств IoT метеостанции с помощью Repka Pi

Reading time18 min
Views5.7K

Эта статья посвящена Zabbix-мониторингу устройств IoT простой метеостанции, подключенных через порт GPIO к микрокомпьютеру отечественной сборки Repka Pi 3 производства НПО Рэйнбовсофт (Rainbowsoft). Здесь будут представлены скрипты мониторинга, измеряющие температуру, давление, влажность, освещенность, а также контролирующие наличие воды (затопление).

Метеостанция оборудована контроллером BME280, измерителем освещенности BH1750, а также сенсором наличия воды YL-38. Результаты измерений периодически отправляются в Zabbix с помощью агента zabbix-agent2 и шаблона, работающего в активном режиме.

Помимо этого, в статье будет описан скрипт Python, который можно запускать периодически через crontab. Этот скрипт выводит результаты измерений на OLED-монитор SSD1306. На время проведения измерений зажигается светодиод, подключенный к GPIO.

Мониторинг самого микрокомпьютера был описан ранее в статье Zabbix-мониторинг российского микрокомпьютера Repka Pi.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments9

Что такое пир-ревью и зачем оно нужно вашей команде

Reading time6 min
Views3.8K

Меня зовут Савва Лебедев, я наставник и ревьюер курса «Разработчик C++», а до этого сам прошёл путь от обычного до старшего студента. На курсе есть задание на пир-ревью, и эта практика здорово прокачивает и хард-, и софтскилы. Именно поэтому хочу рассказать о пир-ревью и с позиции учащегося, и с позиции человека, который отвечает за качество обучения и профессиональное развитие студентов.

Спойлер: в конце статьи вы найдете код, на который можно дать пир-ревью для тренировки.

Читать далее
Total votes 12: ↑6 and ↓6+2
Comments7

Приборы и материалы для чистки зубов (какая щётка лучше, например)

Level of difficultyEasy
Reading time14 min
Views35K
Вот это южнокорейская зубная щётка. Она в два раза длиннее обычной, потому что корейцы привыкли получать максимум эффекта на каждую потраченную вону. Теперь простой вопрос: может, стоит тоже купить такую, раз она больше? Можно будет чистить зубы быстрее или эффективнее?

image

Нет, не стоит. Лучше купить щётку с большим количеством щетинок, хотя бы 5 тысячами штук.

Такие щётки стоят в Москве 500–900 рублей в аптеках. Вот с ними реально одно движение может быть эквивалентно по эффекту 4–5 движениям обычной щёткой.

Следующий вопрос: а, может, купить электрическую или ультразвуковую? Возможно, но вместе с налётом вы будете счищать часть эмали или греть зубы.

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

Давайте разбираться, как лучше чистить зубы с позиции девайсов и здравого смысла.
Читать дальше →
Total votes 70: ↑65 and ↓5+71
Comments65

Если вы не чистите зубы, то я их вам почищу: FAQ про гигиену

Reading time12 min
Views122K
image

Зубы до гигиены, химический агент для окраски налёта (используется в обучающих целях для того, чтобы пациент видел непрочищаемые участки) и состояние после гигиены.

Про чистку зубов есть очень много вопросов, поэтому пробежимся по основным:

  • Что будет, если не чистить зубы?
  • Можно ли чистить зубы редко, но ходить к стоматологу время от времени, чтобы он их вам «мощно почистил»?
  • Как проходит чистка зубов в стоматологии?
  • Почему швейцарцы чистят зубы вообще без пасты?
  • Работает ли жвачка?
  • Какие щётки выбирать и как? Что насчёт электрических?
  • Правда ли, что щётку надо выкидывать, когда хотя бы одна ворсинка отклоняется от вертикали?
  • Зачем нужны скребки для языка, межзубные ёршики, зубная нить и всё остальное?
  • Ирригатор заменяет чистку зубов щёткой?
  • Ополаскиватель для рта — хорошая тема?
  • Когда важнее чистить зубы — утром или вечером?
  • Чем ИТ-специалист отличается от среднего пациента по анамнезу относительно гигиены ротовой полости?
Читать дальше →
Total votes 124: ↑118 and ↓6+153
Comments209

Эффективное ведение дел или Obsidian + GTD

Level of difficultyMedium
Reading time12 min
Views67K

Иногда сложно справиться с большим потоком задач и информации, особенно если это касается работы. Поэтому создание персональной базы знаний для своих текущих дел становится весьма актуальным. Но простая фиксация данных не всегда эффективна: легко потеряться в куче заметок. Различные методики помогают правильно организовать процесс. Вместе с тем информация не существует сама по себе, она, как правило, неразрывно связана со всеми нашими проектами, задачами и другими событиями. Если это учитывать, то проще оперировать данными, находить нужные факты. Через задачу легко выйти на связанную с ней информацию или, наоборот, через данные можно найти проект или задачу, в рамках которых они появились. Однако на практике все это будет эффективно работать, если получится создать единую среду для ведения дел и хранения всех связанных с ними данных.

Существующие приложения, как правило, не могут предоставить готовое решение для работы в таком контексте. Приходится придумывать или создавать что-то свое. Самое простое — это начать с каких-то стандартных заметочников, например Evernote или OneNote, и приспособить их под себя. Однако с появлением Roam-подобных программ пришло понимание, что можно создать очень гибкую систему, которую легко настроить под ведение любого вида задач, проектов и хранение различного типа связанной с ними информации. В этой статье познакомимся с примером настройки и практического использования маркдаун-заметочника Obsidian совместно с методологией Getting Things Done (GTD) Дэвида Аллена.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments36

Заметка к примеру «procfs3.c» 7 главы книги «The Linux Kernel Module Programming Guide»

Level of difficultyEasy
Reading time8 min
Views2.5K

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

Что там?
Total votes 6: ↑5 and ↓1+9
Comments7

Худшие практики разработки и архитектуры

Level of difficultyEasy
Reading time7 min
Views21K
image

Я собрал худшее из худшего! Оказалось, что хороших практик — море, и разбираться в них долго, а вот плохих, реально плохих, — считаные единицы.

Понятно, что плохие практики не отвечают на вопрос: «А как делать-то?» — но они помогают быстро разобраться в том, как не делать.

Мы часто спорим про архитектуру и хотим друг от друга знания разных правильных практик проектирования, лучшего мирового опыта и вот этого всего. Понятно, что в реальном мире это совсем-совсем не так. И худших практик часто достаточно, чтобы начать договариваться, как не надо.

Итак, мой любимый антишаблон — поток лавы. Начинается всё просто: в новый проект можно добавить код из старого проекта копипастой. Он там делал что-то полезное, пускай делает почти то же самое полезное в новом проекте. Вот только нужно закомментить один кусок, а в другом месте — чуть дописать. Примерно через три переноса без рефакторинга образуются большие закомментированные участки, функции, которые работают только с частью параметров, сложные обходы вроде «выльем воду из чайника, выключим газ, и это приведёт нас к уже известной задаче кипячения чайника» и так далее.

Это если команда одна. А если разработчики на пятом проекте новые, то начинается самое весёлое — этот сталактит надо ещё прочитать.

Очень часто я вижу лава-код в проектах аутсорсинговых компаний, потому что они используют свою кодовую базу по разным заказчикам как такой своеобразный иннерсорс. А «междисциплинарный» код как раз хорошо обрастает отключаемыми участками и переопределяемыми функциями.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments28

Typst — современная альтернатива LaTeX

Level of difficultyMedium
Reading time7 min
Views14K


Языки разметки хорошо подходят для создания и редактирования структурированных документов. Они лучше автоматизированы и гибки, чем аналоги с WYSIWYG. Здесь контент отделён от представления, задаётся текст и его структура, далее на основе выбранного шаблона форматируется документ. Подобную систему компьютерной вёрстки TEX (TeX) разработал Дональд Кнут в 1978 году, окончательный релиз оформился в 1979-м. Системы на основе TeX до сих пор являются актуальными в этой области и продолжают развиваться. Вот несколько примеров.
Читать дальше →
Total votes 33: ↑29 and ↓4+37
Comments20

Модули C++20 и GCC11

Reading time11 min
Views14K

Одним из главных нововведений стандарта C++20 является добавление модулей. Модули призваны радикально изменить структуру кодовых баз C++ и, возможно, сигнализируют о грядущей кончине заголовков (но, скорее всего, не на моем веку). Они также потенциально открывают дорогу для внедрения унифицированной системы сборки и менеджера пакетов, наподобие Rust Cargo; хотя я не сомневаюсь, что стандартизация унифицированной системы сборки будет тем еще кровавым побоищем.

Читать далее
Total votes 28: ↑28 and ↓0+28
Comments15

Как ещё бороться с выгоранием

Level of difficultyEasy
Reading time6 min
Views8.5K

Каждый второй, читающий этот пост пережил выгорание (Burnout), а 75% выгоревших теряют место работы. Будучи дизайн-менеджером 18+ лет, я убедился, что основные причины выгорания часто связаны не только с работой, и стресс может накапливаться по иным причинам. Эта статья о том, какие ещё причины есть, и что с ними делать.

В вопросах физиологии мне помогала разбираться специалист международной ассоциации спортивных наук и Gray Institute Полина Рязанова. Я благодарен ей за поддержку и знания в этой области.

Читать про борьбу с выгоранием
Total votes 15: ↑7 and ↓8+2
Comments20

Как устроено распределение памяти

Level of difficultyMedium
Reading time11 min
Views25K

Один из общих для всех программ на вашем компьютере аспектов — это потребность в памяти. Прежде чем запуститься, программы должны быть загружены с жёсткого диска в память. При работе программ подавляющее большинство их действий заключается в загрузке значений из памяти, выполнении вычислений с ними, а затем сохранении результата обратно в память.

В этом посте я познакомлю вас с основами распределения памяти (memory allocation). Распределители памяти существуют, потому что иметь доступную память недостаточно, необходимо ещё и эффективно её использовать. Мы наглядно изучим, как работают простые распределители. Мы рассмотрим некоторые из задач, которые им необходимо решать, а также некоторые из методик, которыми они их решают. Прочитав этот пост, вы узнаете всё, что необходимо для написания собственного распределителя.
Читать дальше →
Total votes 56: ↑54 and ↓2+73
Comments6

Принцип подстановки Барбары Лисков

Level of difficultyMedium
Reading time13 min
Views20K

Принципы проектирования SOLID были представлены Робертом Мартином в его книге “Design Principles and Design Patterns” в 2000 году. Эти принципы помогают нам создавать более гибкое программное обеспечение, которое легко понимать и обслуживать. 

В этой статье мы обсудим “Принцип подстановки Барбары Лискофф”, который соответствует букве L в акрониме SOLID.

Читать далее
Total votes 9: ↑7 and ↓2+6
Comments11

60 антипаттернов для С++ программиста, часть 1 (совет 1 — 5)

Level of difficultyEasy
Reading time7 min
Views8.4K

1053_60_cpp_antipatterns_ru/image2.png


Перед вами обновлённая коллекция вредных советов для C++ программистов, которая превратилась в целую электронную книгу. Всего их 60, и каждый сопровождается пояснением, почему на самом деле ему не стоит следовать. Всё будет одновременно и в шутку, и серьёзно. Как бы глупо ни смотрелся вредный совет, он не выдуман, а подсмотрен в реальном мире программирования.

Читать дальше →
Total votes 23: ↑16 and ↓7+13
Comments44

Сериализация в C++

Reading time14 min
Views41K
В данной статье речь пойдет об автоматизации процесса сериализации в C++. В начале будут рассмотрены базовые механизмы, позволяющие упростить чтение/запись данных в потоки ввода-вывода, после чего будет дано описание примитивной системы генерации кода на основе libclang. Ссылка на репозиторий с демонстрационным вариантом библиотеки расположена в конце статьи.
Читать дальше →
Total votes 9: ↑7 and ↓2+12
Comments44

C++ и CMake — братья навек, часть II

Reading time4 min
Views9.5K

Дружба навек


В предыдущей части данного занимательного рассказа говорилось об организации заголовочной библиотеки в рамках генератора систем сборки CMake.


В этот раз добавим к нему компилируемую библиотеку, а также поговорим о компоновке модулей друг с другом.


Как и прежде, тем, кому не терпится, могут сразу перейти в обновлённый репозиторий и потрогать всё своими руками.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments19

CMake и C++ — братья навек

Reading time11 min
Views85K

Дружба навек


В процессе разработки я люблю менять компиляторы, режимы сборки, версии зависимостей, производить статический анализ, замерять производительность, собирать покрытие, генерировать документацию и т.д. И очень люблю CMake, потому что он позволяет мне делать всё то, что я хочу.


Многие ругают CMake, и часто заслуженно, но если разобраться, то не всё так плохо, а в последнее время очень даже неплохо, и направление развития вполне позитивное.


В данной заметке я хочу рассказать, как достаточно просто организовать заголовочную библиотеку на языке C++ в системе CMake, чтобы получить следующую функциональность:


  1. Сборку;
  2. Автозапуск тестов;
  3. Замер покрытия кода;
  4. Установку;
  5. Автодокументирование;
  6. Генерацию онлайн-песочницы;
  7. Статический анализ.

Кто и так разбирается в плюсах и си-мейке может просто скачать шаблон проекта и начать им пользоваться.
Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments51

Язык Graphviz для Автогенерации Блок-Схем Сложных Электронных Цепей

Level of difficultyEasy
Reading time12 min
Views7.6K

Современные печатные платы достигают очень высокого уровня сложности. Особенно трудно разобраться в логике цепей питания. В тексте представлен оригинальный подход анализа схемотехники при помощи языка разметки Dot и авто генерации блок схем.

Читать далее
Total votes 19: ↑14 and ↓5+14
Comments25

Самые простые конечные автоматы или стейт-машины в три шага

Reading time4 min
Views16K

image Привет, Хабр!
Перейдем сразу к делу, но небольшая предыистория все таки нужна: полтора года назад возникла необходимость реализовать простую стейт — машину (конечный автомат), владея теорией с университета, я был уверен в тривиальности данной задачи (все мы оптимисты).

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


Вскоре я наткнулся на эту статью, которая подтвердила отсутствие удобных решений.

Читать дальше →
Total votes 13: ↑9 and ↓4+13
Comments14
1

Information

Rating
Does not participate
Registered
Activity