Как стать автором
Обновить
24
0
Zhigaylo Anton @antoooon

Пользователь

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

Концепты: упрощаем реализацию классов STD Utility

Время на прочтение28 мин
Количество просмотров14K


Появляющиеся в C++20 концепты — давно и широко обсуждаемая тема. Несмотря на избыток материала, накопившегося за годы (в т.ч. выступления экспертов мирового уровня), среди прикладных программистов (не засыпающих ежедневно в обнимку со стандартом) все еще остается неразбериха, что же такое С++20-концепты и так ли они нам нужны, если есть проверенный годами enable_if. Частично виной тому то, как концепты эволюционировали за ~15 лет (Concepts Full + Concept Map -> Concepts Lite), а частично то, что концепты получились непохожими на аналогичные средства в других языках (Java/С# generic bounds, Rust traits, ...).


Под катом — видео и расшифровка доклада Андрея Давыдова из команды ReSharper C++ с конференции C++ Russia 2019. Андрей сделал краткий обзор concept-related нововведений C++20, после чего рассмотрел реализацию некоторых классов и функций STL, сравнивая C++17 и С++20-решения. Далее повествование — от его лица.

Всего голосов 27: ↑27 и ↓0+27
Комментарии6

Новый поток в C++20: std::jthread

Время на прочтение5 мин
Количество просмотров11K

Один из участников моего семинара в рамках CppCon 2018 спросил меня: «Может ли std::thread быть прерван (interrupted)?». Мой ответ тогда был - нет, но это уже не совсем так. С C++20 мы можем получить std::jthread (в итоге все таки получили - прим. переводчика).

Позвольте мне развить тему, поднятую на CppCon 2018. Во время перерыва в моем семинаре посвященному параллелизму я побеседовал с Николаем (Йосуттисом). Он спросил меня, что я думаю о новом предложении P0660: Cooperatively Interruptible Joining Thread. На тот момент я ничего не знал об этом предложении. Следует отметить, что Николай является одним из авторов этого предложения (наряду с Хербом Саттером и Энтони Уильямсом). Сегодняшняя статья посвящена будущему параллелизма в C++. Ниже я привел общую картину параллелизма в текущем и грядущем C++.

Читать далее
Всего голосов 14: ↑9 и ↓5+4
Комментарии2

Нужен ли iPod в 2022 году или Make iPod great again

Время на прочтение4 мин
Количество просмотров15K
До и после, с бонусной (перегоревшей) электронной лампой

Я всегда была человеком, который не может ничего делать без музыки, звучащей на заднем плане. Когда-то давно это был маленький mp3-плеер, затем iPod, и в конце концов телефон со Spotify.

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

Так или иначе, за выходные я разобрала iPod Classic (или iPod Video) 5-го поколения и сделала его немного лучше, обновив к 2022 году. Заранее предупреждаю, что под катом много изображений.

Приятного чтения!
Всего голосов 48: ↑47 и ↓1+46
Комментарии22

Анатомия асинхронных фреймворков в С++ и других языках

Время на прочтение20 мин
Количество просмотров42K
Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.

Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.

Пишем синхронный сервер


Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего:

void naive_accept() {
  for (;;) {
    auto new_socket = accept(listener);

    std::thread thrd([socket = std::move(new_socket)] {
      auto data = socket.receive();
      process(data);
      socket.send(data);
    });

    thrd.detach();
  }
}
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии32

Препарируем дельфина: что внутри у Flipper Zero

Время на прочтение12 мин
Количество просмотров43K
Для того, чтобы эффективно разрабатывать под Flipper, надо не только понимать, как писать код, но и понимать, что внутри у него.

На «больших» компьютерах есть куча уровней абстракции и аппаратных средств сделать жизнь пользователя и разработчика проще. В итоге, даже если вы пишете на голом С, вас все равно не волнует как конкретно по PCI передается информация, как работает система питания процессора и какая там микросхема используется для хранения BIOS/UEFI.



Тут все не так, слишком уж близко к железу происходит разработка. Статья — это краткий экскурс в то, как устроен Flipper с железной точки зрения. Поехали.
Читать дальше →
Всего голосов 195: ↑192 и ↓3+189
Комментарии85

Почему 25 лет гарантии на солнечные панели — миф

Время на прочтение6 мин
Количество просмотров49K

Слово гарантия, у нас всегда вызывает четкие ассоциации, и мы знаем, что стоит за 5-ти летней гарантией на телевизор, автомобиль или другую вещь. Покупая солнечные панели, вы неоднократно слышали, что гарантия на солнечные панели составляет 25 лет. Но гарантия на солнечные панели, довольно уникальная вещь, и за этими словами скрывается множество нюансов, о которых продавцы солнечных панелей просто умалчивают. Хоть я и сторонник "Зелёной энергетики", но про некоторые вещи нужно знать до, а не после..

Читать далее
Всего голосов 85: ↑78 и ↓7+71
Комментарии105

Разработка Z-Wave бесшумного выключателя и автоматизация на балконе

Время на прочтение3 мин
Количество просмотров16K

Решился балкон переделать в рабочий кабинет. Фотографий ДО и ПОСЛЕ не будет, но я расскажу об автоматизации, которую там устроил. С самого начала планировал автоматическое управление теплым полом и освещением, а уже по окончанию ремонта решил добавить еще и сенсорную панель управления на стену. Устройства выбрал с технологией Z-Wave, но в процессе использования оказалось, что меня не устраивает функционал управления освещением. Пришлось разработать свой собственный выключатель на базе платы Z-Uno 2 и твердотельных реле Сrydom.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии17

Фриланс-разработка электроники. Что, Как и Зачем?

Время на прочтение7 мин
Количество просмотров32K

▍Как все начиналось


Начну немного издалека, чтобы было понятно с чего все изначально началось.

Электронику я люблю с детства, родители военные и они же инженеры привили любовь не только к морзянке, но и к электронике. За что им отдельное спасибо.

После окончания ВУЗа, работаю по сей день ведущим инженером на одной из атомных станций. Работа веселая и ответственная, но дома надо чем-то занять вечера, не пиво же пить и лежать у телевизора. Для поддержания на должном уровне своей квалификации освоил Ардуино, Attiny, STM, ESP32. Вспомнил давно забытую Java и C++. Освоил заново Easyeda, Altium, Eagle. Свободно работаю во многих программах CAD моделирования. Теоретически я подготовлен хорошо, но нужна была практика в электронике и желательно по очень высоким стандартам.
Читать дальше →
Всего голосов 99: ↑92 и ↓7+85
Комментарии122

Электронная книга своими руками на STM32H750 от А до Э

Время на прочтение22 мин
Количество просмотров36K


В этой статье я хочу поделиться опытом разработки электронной книги с использованием недорогого контроллера STM32H750VB, распространенных дискретных компонентов и относительно недорогого дисплея E-Ink. Статья будет большой, так как приведены будут все процессы от постановки задачи до получения первой версии устройства, способного выполнять поставленную задачу. Все будет снабжено схемами, трассировками, кодом и комментариями. Почему в названии от «от А до Э»? Потому что нельзя просто так взять и сделать конечный продукт без ошибок и недоделок.

Читать дальше →
Всего голосов 127: ↑127 и ↓0+127
Комментарии77

Мониторинг погоды с помощью Node.js, Raspberry Pi и LCD-дисплея

Время на прочтение7 мин
Количество просмотров12K
В последние несколько лет число проданных интеллектуальных домашних устройств постоянно растёт. Ожидается, что в 2021 году будет продано 1,5 миллиарда таких устройств. Среднее количество этих устройств на одно «умное» домашнее хозяйство составляет 8,7. Поэтому вполне возможно то, что у вас дома есть хотя бы несколько подобных устройств.

В этой сфере у программистов есть некоторые преимущества перед другими людьми, так как программисты могут самостоятельно создавать устройства для умного дома.



В нашем распоряжении имеются доступные компоненты, которые позволяют быстро строить самые разные устройства. Здесь я хочу рассказать о том, как, используя Raspberry Pi, LCD-дисплей и несколько строк кода, организовать мониторинг погоды. Наша система будет подключена к интернету, поэтому она позволит наблюдать за погодой в любом месте Земли.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии11

Интеграция в проект LVGL графической библиотеки для микроконтроллеров

Время на прочтение4 мин
Количество просмотров31K
LVGL — Light and Versatile Graphics Library также известная как LittleVGL.


Библиотека поддерживает большое количество микроконтроллеров, таких как STM32, ESP32 и другие. Мне пока удалось запустить полноценную демо программу на ESP32 и STM32f429 Discovery. Библиотека открытая, поддерживает большое количество графических элементов с Dark and Light темами. Распространяется под MIT license. Можно свободно использовать даже в коммерческих продуктах. Можно посмотреть интерактивное Online Demo без установки на устройство
Всего голосов 39: ↑39 и ↓0+39
Комментарии56

Мои поиски физической панели управления умным домом

Время на прочтение5 мин
Количество просмотров51K

Довольно давно у меня появилась мысль установить управляющую панель, расположенную рядом с входной дверью внутри квартиры/дома.


Существует несколько вариантов реализации этой задумки:


  • сенсорная панель оператора ПЛК;
  • планшет;
  • сенсорный дисплей, подключенный к микрокомпьютеру.


Дополнительное требование, которое сразу ограничило выбор устройства: на панель управления автоматически должно выводиться изображение с наружной камеры при срабатывания датчика движения (и только в случае присутствия людей дома).

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии77

Программируем управление освещением по датчикам движения и освещения на Node-RED

Время на прочтение16 мин
Количество просмотров90K
В русскоязычном интернете пока мало статей о такой среде программирования как Node-RED. Данная статья приоткроет тайну завесы об этом продукте и покажет на примере создания алгоритма управления освещением по датчикам движения как просто с помощью Node-RED можно реализовать различные сценарии и правила автоматизации умного дома в полностью в графическом виде без написания какого-либо кода.


Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии32

Полная домашняя автоматизация в новостройке

Время на прочтение8 мин
Количество просмотров218K
Три года назад стал претворять свою давнюю мечту в реальность — максимальная домашняя автоматизация квартиры, купленной в новостройке с нуля. При этом «отделку от застройщика» пришлось принести в жертву умному дому image и полностью переделать, а вся электрика, не связанная с автоматикой приехала с известного китайского сайта. Паяльник не потребовался, но знающих мастеров, электриков и плотников пришлось искать долго.


Панель управления квартирой в феврале 2020 года (Home Assistant)

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


Строительство нашего дома в процессе — ноябрь 2016 года
Умный дом в самом соку...
Всего голосов 138: ↑135 и ↓3+132
Комментарии514

На моей визитке работает Linux

Время на прочтение6 мин
Количество просмотров108K
Перевод статьи из блога инженера Джорджа Хиллиарда


Кликабельно

Я инженер встроенных систем. В свободное время я часто ищу то, что можно будет использовать в проектировании будущих систем, или что-то из разряда моих интересов.

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

Я подумал: «Эти процессоры настолько дешёвые, что их практически можно раздавать даром». И через некоторое время ко мне пришла идея сделать голую карточку для Linux в форм-факторе визитной карточки.
Читать дальше →
Всего голосов 220: ↑215 и ↓5+210
Комментарии116

Как уменьшить потребление wifi модулей в десять и более раз

Время на прочтение4 мин
Количество просмотров28K
Добрый день всем!!!

Данная статья в основном касается популярного модуля ESP8266 (ESP8285).

Недавно на одном из форумов мне задали вопрос о протоколе ESP-NOW. В итоге решил рассказать о способах сокращения потребления датчиков и исполнительных устройств, работающих по WiFi, к ним относится и ESP8266, в частности Sonoff.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии40

Становление термостата: как это получилось

Время на прочтение5 мин
Количество просмотров22K


После нескольких лет плодотворной работы, было принято решение вынести на суд общественности наш первый продукт для управления климатом в умном доме — умный термостат для управления теплым полом.
Читать дальше →
Всего голосов 68: ↑57 и ↓11+46
Комментарии179

Гоним кота: как заставить котов не справлять нужду на лужайке у дома?

Время на прочтение13 мин
Количество просмотров31K
Жил был Роберт Бонд — 65-летний программист из Калифорнии. И была у него жена-садовница, которая очень любила свою чистенькую лужайку. Но это Калифорния, там нет двухметровых заборов с системой защиты от котов. На лужайку ходят соседские коты и гадят!



Проблему нужно было решать. Как же решил её Роберт? Он докупил немного железа к своему компьютеру, подключил к нему камеру наружного наблюдения, смотрящую за лужайкой, и дальше проделал несколько необычную вещь, он загрузил доступный бесплатный Open Source софт — нейросеть, и начинал обучать её распознавать котов на изображении с камеры. И задача в начале кажется тривиальной, ведь если чему-то учить и легко — это котам, потому что котами завален Интернет, их там десятки миллионов. Если было всё так просто, но дела обстоят хуже, в реальной жизни коты ходят гадить в основном ночью. Картинок ночных котов, писающих на лужайке, в Интернете практически нет. И некоторые из котов умудряются даже пить из системы полива во время работы, но всё же потом сваливают.

Читать дальше →
Всего голосов 56: ↑41 и ↓15+26
Комментарии59

5 способов полезного использования Raspberry Pi

Время на прочтение5 мин
Количество просмотров162K
Привет Хабр.

Raspberry Pi наверное есть дома почти у каждого, и рискну предположить, что у многих она валяется без дела. А ведь Raspberry это не только ценный мех, но и вполне мощный fanless-компьютер с Linux. Сегодня мы рассмотрим полезные возможности Raspberry Pi, для использования которых код писать не придется совсем.

Для тех кому интересно, подробности под катом. Статья рассчитана для начинающих.
Читать дальше →
Всего голосов 58: ↑53 и ↓5+48
Комментарии129

Опыт создания сборок Linux под одноплатники с поддержкой обновлений

Время на прочтение9 мин
Количество просмотров29K
image

Введение


На данный момент, на рынке представлен большой ассортимент одноплатников на любой вкус по приемлемой цене.

Как правило, различные сборки от производителей, предназначены для оценки платформы и являются отправной точкой нового проекта, поэтому не всегда подходят под конкретные задачи. В задачах где требуется высокая надежность, перед разработчиком встает вопрос, как доработать дистрибутив и потом не поплатиться за это полной переработкой образа и системы обновления.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии65
1

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность