Привет, Хабр! Меня зовут Иван. Я инженер-проектировщик и провожу много времени за компьютером, рисуя схемы. По совместительству я увлеченный меломан с многолетним стажем. Несколько лет назад я решил оборудовать свое домашнее рабочее пространство достойной аудиосистемой. Но как ее собрать, если семейный бюджет не резиновый, а в стартовый комплект входят только средней мощности ПК и полочные колонки DALI Zensor 1? Мне понадобилось 125 тысяч рублей и 12 месяцев работы, чтобы слушать мастер-записи песен австрийского продюсера Курта Хауэнштайна (Supermax) в достойном их качестве. Своим опытом поделюсь в этой статье в блоге ЛАНИТ.
User
Тысяча и одна библиотека С++
В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или возникает проблема языкового барьера, ну, или поисковики просто плохо ищут).
Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.
Создание процессора с нуля для чайников
В жизни многих программистов наступает момент, когда хочется понять как же работает процессор на самом деле, а не в абстрактных схемах высокоуровневых компонентов. У меня возник такой вопрос некоторое время назад, но все материалы которые я находил по этой теме либо были очень специализированными, требующими хорошего понимания электротехники и опыта работы со схемами дискретной логики, либо общие описания, пропускающие многие этапы, и оставляющие лишь смутное представление о том как же всё-таки тысячи транзисторов должны превратиться в работающий процессор.
Для этого я решил написать статью собирающую мой опыт попыток разобраться в этом вопросе, понятным языком, в то же время не пропуская ничего, чтобы после прочтения читатель мог воссоздать процессор из простейших элементов.
В данной статьей мы пройдем путь создания процессора от единичного транзистора до работающего 8-битного процессора, и напишем свой ассемблер для него.
Контролируем чистоту воды с Home Assistant
Всем привет! Хочу рассказать о небольшом и довольно простом кейсе использования Home Assistant, но на мой взгляд очень полезном. Это контроль ресурса магистральных фильтров. Идея сделать что то такое беспокоила меня давно и вот наконец руки дошли и до этого.
STM32. Процесс компиляции и сборки прошивки
Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?
Всем кому интересно — добро пожаловать под кат! 🙂
Учет электроэнергии для умного дома — zemismart SPM02
Достаточно долгое время искал для своего умного дома датчик учета электроэнергии, сначала присматривался к Tuya Smart Life 3 Phase WiFi Energy KWH Meter, но места в щитке у меня не было (думал повесить его за щитком), потом думал собрать на ESP32, но нужно было собирать три устройства - ввод в квартиру у меня 3х фазный, но совсем недавно на рынке появился миниатюрный датчик от известного производителя электроники zemismart - SPM02-D2TZ (у производителя также есть однофазное устройство - SPM01).
Принципы непрерывного рефакторинга
Работа со старым кодом для многих команд является частью повседневных обязанностей. За свою карьеру я видел и применял разные способы борьбы с тяжестью легаси. Они обычно сводились к одному из трёх основных сценариев:
«Работает — не трогай!»: вообще забить на чистки и ничего не менять. В некоторых случаях валидный подход. Но в коде, который приходится менять хотя бы даже эпизодически (фиксы багов, мелкие доделки, смена окружения и т. п.), со временем неизбежно приводит к катастрофе. Вам надо что‑то поменять в коде, и это оказывается невозможно сделать легко. Даже за тривиальные изменения приходится платить большой кровью.
«Я прочитал Роберта Мартина»: включаем чистки в обычный код. Надеваем галстук бойскаута и чистим код прямо по ходу работы над текущими задачами. Отправляем его коллегам на ревью и ждём несколько дней, покуда они не разберутся, где заканчиваются рефакторинги и начинаются непосредственно изменения по задаче. Или же уходим по кривой дорожке рефакторингов в тёмный лес и продалбываем к чертям все изначальные сроки. Когда начинаешь приводить код к идеалу, не всегда бывает так легко остановиться!
«Нужен порядок и учёт»: делаем отдельные коммиты с чистками, но нерегулярно — только когда в дело берётся соответствующий тикет. Правда, тикеты на рефакторинг почему‑то регулярно получают самый низкий приоритет во время планирования и маринуются в беклоге месяцами. Но что уж тут поделать?
Это всё ловушки! Все эти сценарии страдают одной общей проблемой: темп чисток неудовлетворительно низок. Код зарастает грязью и происходит неизбежная деградация. Задачи делаются всё медленнее, процент дефектов всё выше, отвращение от работы с кодом растёт, новички адаптируются всё медленнее и медленнее. Все несчастны и не знают, что делать.
За прошедший год я нащупал и отточил ещё один подход, который лишён указанных недостатков. И теперь готов поделиться им с вами.
Архитектура Хорошо Поддерживаемого драйвера для I2C/SPI/MDIO Чипа
В программировании микроконтроллеров часто приходится писать драйверы периферийных микросхем. Зачастую это 60% всего кода большинства проектов. В этом тексте я написал несколько общих нюансов разработки драйверов периферийных чипов.
Эти правила "написаны кровь".
Умный дом на Raspberry Pi и Home Assistant: добавляем диммеры и реле Wiren Board
К нам обратился Петр из Минска, который решил рассказать о своем опыте сборки умного дома. Он выбрал популярную платформу Raspberry Pi и интегрировал домашние устройства в Home Assistant.
Но со светом возникли проблемы: Петр запланировал везде диммирование, причем диммеры должны работать, даже когда контроллер выключен. Здесь как раз подошли модули Wiren Board. Но как сделать так, чтобы эти модули заработали под Home Assistant?
Петр установил шлюз Modbus-Ethernet и написал на Python интеграцию модулей Wiren Board в Home Assistant.
Мы посетили умный дом Петра и спешим поделиться с читателями подробностями.
От желания управлять газовым котлом удалённо до полной автоматизации отопления дома
В статье расскажу про свой путь разработки DIY железок для работы с Home Assistant с целью автоматизации отопления в частном доме.
Глава 0: предыстория
Захотелось построить дом. Дом построили, встал вопрос с отоплением и управлением, а так как в доме иногда отсутствовали по несколько месяцев, то переплачивать за газ не очень-то и хотелось. Газа ведь магистрального нет, но «мы скоро проведем». До этого «скоро» закопали газгольдер, а газ там в +-10 раз дороже магистрального. Пытливый ум решил: будем поддерживать в доме температуру 15 градусов, когда там никого нет. Как это сделать? Повесить контроллер/термостат для котла.
«Умная дача» реального человека, без рекламных интеграций
Начитавшись рекламных статей из цикла «умная дача», и испытав достаточно сильную фрустрацию от качества контента и «адекватности» предлагаемых технических решений, решил поделиться своим опытом автоматизации загородного дома.
Information
- Rating
- Does not participate
- Registered
- Activity