Pull to refresh
31
0
Dmitrii Sharikhin @Dima_Sharihin

Embedded SW Engineer

Send message

Самая дешевая заводская панель управления умным домом, которая отлично работает

Level of difficulty Hard
Reading time 4 min
Views 75K

Несколько лет назад уже писал про свои поиски идеальной и недорогой панели управления умным домом (статья собрала 200 закладок), тогда в 2020 году я остановился на недорогом андроид планшете, который перепрошил на чистый андроид для выполнения удаленных команд через ADB.

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

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

Выбор пал на NSPanel из‑за цены около 3,5 тысяч рублей, а также возможности установки в подрозетник или покупки настольной подставки — как у меня на фото.

Панель в подрозетник или на стол
Total votes 106: ↑103 and ↓3 +100
Comments 126

Линус Торвальдс, Бьёрн Страуструп и Брендан Грегг контрибьютят в мой хобби-проект. Зачем?

Reading time 8 min
Views 70K

Смотрите сами: вот проект, вот история коммитов.



Список контрибьюторов с главной страницы репозитория:



Ссылки на аватарках ведут на странички профилей реальных людей.


Всё на месте. Кроме плашечки "Verified" как здесь:





Знатоки Git и GPG, не торопитесь проматывать ленту: эта статья не про необходимость подписывать свои коммиты. Она про неявные допущения, которые мы делаем, пользуясь "интуитивно-понятными" монстрами GitHub и GitLab и доверяя им контроль доступа к нашим репозиториям.

Читать дальше →
Total votes 209: ↑205 and ↓4 +201
Comments 67

Внутренняя кухня промышленного дизайна: от эскиза до продукта в коробке

Reading time 9 min
Views 6.8K


Бывает, на первой встрече клиенты говорят «нам нужна только картинка», «сэкономим на дизайне», «нам просто накинуть идею», «ой, да что там делать». Мало кто представляет себе полную картину того, что происходит на внутренней кухне дизайнера, тем более промышленного. В этой статье мы раскроем весь процесс — от первых эскизов (а даже раньше) до запуска серийного производства — и объясним, почему промдизайн — это не просто картинка.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 3

CreateRemoteThread для Linux

Reading time 46 min
Views 14K

Мицуха несёт новые потокиВ WinAPI есть функция CreateRemoteThread, позволяющая запустить новый поток в адресном пространстве другого процесса. Её можно использовать для разнообразных DLL-инъекций как с нехорошими целями (читы в играх, кража паролей, и т. д.), так и для того, чтобы на лету исправить баг в работающей программе, или добавить плагины туда, где они не были предусмотрены.


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


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


Для понимания текста потребуются базовые знания о системном программировании под Linux: язык Си, написание и отладка программ на нём, осознание роли машинного кода и памяти в работе компьютера, понятие системных вызовов, знакомство с основными библиотеками, навык чтения документации.

Читать дальше →
Total votes 76: ↑75 and ↓1 +74
Comments 27

Облысение: Теория и практика лечения, ч.2 «Даже у простаты есть гланды, простагландины»

Reading time 5 min
Views 25K

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


image

Использование простагландинов, либо препаратов их блокирующих, является довольно новой (и экспериментальной) формой лечения в борьбе с облысением, которая может стать как альтернативой для миноксидил-финастерид терапии так и дополнении к ней.
Читать дальше →
Total votes 22: ↑19 and ↓3 +16
Comments 32

Оптимизация энергопотребления STM32: практическое руководство

Reading time 19 min
Views 53K
Привет, Хабр!

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

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

Восполнять данный пробел мы будем на примере STM32L1 — контроллера весьма популярного, достаточно экономичного и при этом имеющего некоторые специфические именно для этой серии проблемы. Практически всё сказанное будет также относиться к STM32L0 и STM32L4, ну и в части общих проблем и подходов — к другим контроллерам на ядрах Cortex-M.



Практический результат должен выглядеть примерно так, как на фотографии выше (и да, о применимости мультиметров и других средств измерения к подобным задачам тоже поговорим).
Читать дальше →
Total votes 95: ↑92 and ↓3 +89
Comments 95

Антипаттерны тестирования ПО

Reading time 31 min
Views 89K

Введение


Есть несколько статей об антипаттернах разработки ПО. Но большинство из них говорят о деталях на уровне кода и фокусируются на конкретной технологии или языке программирования.

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

Терминология


К сожалению, в тестировании пока не выработали общую терминологию. Если спросить сотню разработчиков, в чём разница между интеграционным, сквозным и компонентным тестом, то получите сто разных ответов. Для этой статьи ограничимся такой пирамидой тестов:


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

Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Comments 31

Деловая переписка на английском языке: фразы и советы

Reading time 18 min
Views 597K
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

Задача становится сложнее, если вы общаетесь на неродном английском языке с представителями других культур. В статье я поделюсь, на что в этом случае обратить внимание, как избежать ошибок и достичь взаимопонимания с иностранными коллегами и партнерами.
Читать дальше →
Total votes 104: ↑100 and ↓4 +96
Comments 80

Разработка для Sailfish OS: Тестирование QML-кода, зависящего от C++ в Sailfish OS

Reading time 6 min
Views 4.1K
Здравствуйте! Данная статья является продолжением цикла статей, посвященных разработке для мобильной платформы Sailfish OS и их тестированию. Одна из предыдущих статей была посвящена тестированию QML-компонентов приложения. Однако, часто разработчики сталкиваются с потребностью написания собственных компонентов на языке C++ для использования функционала, недоступного из QML, или для улучшения производительности. Об этом также уже было написано. Тестирование таких компонентов отличается от тестирования уже существующих. В данной статье мы расскажем, как тестировать собственные QML-компоненты, написанные на языке C++.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 0

Анализ трафика GSM сетей в Wireshark

Reading time 5 min
Views 43K


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

Для работы нам osmocom-bb совместимый телефон, способный принимать сигнал на частотах GSM, для России это 900 МГц и 1800 МГц и компьютер с установленным сниффером Wireshark.
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 25

Лучшие доклады конференции DotNext 2015 Piter: Часть 2 (Видео внутри)

Reading time 4 min
Views 17K
Три дня назад я рассказал о тех докладах конференции DotNext 2015 Piter, которые, согласно опросу участников, заняли места с 6 по 10. Теперь пришло время рассказать про лучшую пятерку докладов.




5 место


Кирилл Скрыган, JetBrains — ReSharper vs. Roslyn
Средняя оценка: 4.33



Казалось бы, ReSharper — плагин к Visual Studio, который расширяет возможности IDE. Roslyn — компилятор (набор компиляторов). Что общего?

Дело в том, что для того, чтобы делать все возможные рефакторинги, подсказки и пр., ReSharper строит собственную модель, собственное синтаксическое дерево. А значит, в нем есть, фактически, половина компилятора, компиляторный front-end. А значит, его можно сравнить с фронтэндом Roslyn, что Кирилл и сделал в этом докладе.

Акценты Кирилл расставил не в пользу Roslyn:
  • ReSharper на 10 лет старше, в нем гораздо больше фич
  • Roslyn работает только для C# и VB, никаких JavaScript и прочих прелестей
  • синтаксическое дерево у ReSharper изменяемое и поэтому быстрое, а у Roslyn неизменяемое, генерит много memory traffic и поэтому медленное.




Основной вывод, который сделал я — Roslyn еще пока довольно сырой продукт, а почти все описанные Кириллом болезни — «детские». Пройдет время и наверняка от всех от них Рослин избавится. Ну а что будет на самом деле — покажет время.

Первые 4 места...
Total votes 28: ↑25 and ↓3 +22
Comments 3

Неконстантные константные выражения

Reading time 24 min
Views 39K
// <какой-то код>
 
int main ()
{
        constexpr int a = f ();
        constexpr int b = f ();
 
        static_assert (!= b, "fail");
}

Можно ли в приведенном выше фрагменте вместо комментария вставить такое определение f (), чтобы a получила значение, отличное от b?

“Разумеется, нет!” — скажете вы, немного подумав. Действительно, обе переменные объявлены со спецификатором constexpr, а значит, f () тоже должна быть constexpr-функцией. Всем известно, что constexpr-функции могут выполняться во время компиляции, и, как следствие, не должны зависеть от глобального состояния программы или изменять его (иными словами, должны быть чистыми). Чистота означает, что функция при каждом вызове с одними и теми же аргументами должна возвращать одно и то же значение. f () оба раза вызывается без аргументов, поэтому должна оба раза вернуть одно и то же значение, которое и будет присвоено переменным a и b… правильно?

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

Я ошибался.
Увиденное под катом уже не развидеть
Total votes 61: ↑57 and ↓4 +53
Comments 28

Алгоритм выбора STL-контейнера

Reading time 1 min
Views 64K


UPD: схема заменена на вариант с контейнерами из С++11, соавторы — в комментариях ниже

Первый вариант схемы - без контейнеров из С++11

Total votes 86: ↑74 and ↓12 +62
Comments 54

Блок-схема для выбора STL-алгоритма

Reading time 1 min
Views 28K


Третьего дня, во время сортировки старых закладок, попалась мне на глаза блок-схема с алгоритмом выбора STL-контейнера. «Почему же для контейнеров есть, а для стандартных алгоритмов нет? — подумал я. — Это необходимо исправить». Подумано — сделано. Сперва планировалось за пару часов нарисовать нечто простенькое, но в дальнейшем обнаружилось, что алгоритмы никак не хотят умещаться в простенькую схему. Я слегка увлекся, и спустя два вечера схема вобрала в себя 84 алгоритма, а также немного дополнительной информации. Под катом можно увидеть, что получилось в итоге.
Долой велосипеды!
Total votes 56: ↑52 and ↓4 +48
Comments 19

Самая устаревшая инфраструктура, которую только можно купить за деньги

Reading time 8 min
Views 60K
На днях исполняется 10 лет с тех пор, как я получил самую странную свою работу.

Шел 2005-ый год. Мой интерес к разработке системы управления контентом на Java для компании, недавно купившей наш стартап, неуклонно улетучивался, в то время как моей настоящей страстью была разработка компиляторов и инструментов языковой инфраструктуры (в основном для SBCL). Как-то раз я заметил открытую вакансию как-раз по этому направлению, что вообще-то было достаточно редким явлением. Я быстро прошел интервью — настолько быстро, что даже не задал нужных вопросов и проигнорировал несколько тревожных звоночков.

Меня ожидало захватывающее путешествие в мир ретрокомпьютинга.
Читать дальше →
Total votes 129: ↑125 and ↓4 +121
Comments 42

Автоматический определитель электронных компонентов

Reading time 3 min
Views 163K


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

Для этого потребуется совсем немного деталей, которые обычно есть у каждого начинающего ардуинщика: микроконтроллер ATMEGA, двухстрочный дисплей и несколько резисторов.
Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Comments 71

Самые нужные плагины для Grunt

Reading time 6 min
Views 49K


Доброго времени суток, всем! Кто-то умный, не помню в какой статье именно на Хабре, буквально недавно размышлял о процессе разработки с явным призывом автоматизировать все, что только можно автоматизировать. И лучше один раз потратить время на автоматизацию, чтобы потом экономить его на протяжении всего проекта.

У веб-разработчиков есть прекрасный инструмент для автоматизации массы задач, который называется Grunt. И моя страсть к таксономии заставила себя собрать огромную коллекцию почти из 100 ценных плагинов для этого сборщика. Думаю многие кто уже использует Grunt найдут для себя что-то нужное, а кто нет, глядя на возможности, получит хорошую мотивацию установить его и понять как эта штука работает.

А еще я выложил подборку на GitHub, чтобы каждый мог пополнить коллекцию.

Читать дальше →
Total votes 53: ↑48 and ↓5 +43
Comments 43

Jump Start в PowerShell (часть I)

Reading time 5 min
Views 248K
Только автоматизация. Только PowerShell.



Предисловие


В качестве хобби и при наличии времени преподаю студентам в УКИТ (бывший Московский государственный колледж информационных технологий). На данный момент у меня мало времени, чтобы уделить его группе студентов, зато вполне достаточно, чтобы подготовить пост здесь, на Хабре.

Я работаю системным администратором в крупной не ИТ-компании с большой завязкой на ИТ ресурсы. По роду деятельности представляется решать большое количество однотипных задач по обслуживанию пользователей.

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

Внимание: PowerShell вызывает привыкание.
Читать дальше →
Total votes 46: ↑37 and ↓9 +28
Comments 63

Atari 800XL: Смотрим, разбираем, включаем

Reading time 6 min
Views 54K
Наверняка многие читатели Хабра выросли на компьютерах ZX Spectrum и БК-0010/0011, ну или как минимум сталкивались с ними в далёких 90-х годах. Для многих эти ПК стали отправной точкой в мир ИТ. Но, как и многое другое, в нашу страну восьмибитные домашние ЭВМ пришли гораздо позже остального цивилизованного мира, да и не в полном объёме. Там же эта эра началась почти на 10 лет раньше, в конце 70-х годов, когда вышли Atari 400/800, Commodore PET и, конечно, Apple II. Массовое же распространение домашние компьютеры начали получать в начале 80-х. В 1982 году увидели свет знаменитый ZX Spectrum 48 и не менее знаменитый Commodore 64, в 1983 году вышел Atari 800XL, а в 1984 году на прилавках магазинов появился первый Macintosh. Как и большинство домашних компьютеров на тот момент, Atari 800XL был основан на процессоре 6502C с частотой 1.79 МГц, имел 64Кб памяти, умел запускать игры с кассет, трещать 5,25" дискетами, выгуливать на экране 61440 разноцветных пикселей и много чего ещё. Об этой замечательной железке я и собираюсь сегодня поговорить, впрочем, не только поговорить!


Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Comments 23

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Reading time 1 min
Views 109K
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

Читать дальше →
Total votes 201: ↑192 and ↓9 +183
Comments 45

Information

Rating
Does not participate
Location
Невинномысск, Ставропольский край, Россия
Works in
Date of birth
Registered
Activity