Pull to refresh
0
0
Игорь Руло @igoriok

Senior Software Engineer

Облачный Умный Дом. Часть 1: Контроллер и датчики

Reading time 16 min
Views 54K


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

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

Вашему вниманию предлагается цикл из трех статей, где будет рассказано о всех основных компонентах системы облачного умного дома, лично разработанной автором и запущенной в эксплуатацию. Первая статья посвящена оконечному клиентскому оборудованию, устанавливаемому внутри умного дома, вторая — архитектуре системы облачного хранения и обработки данных, и, наконец, третья — клиентскому приложению для управления системой на мобильных и стационарных устройствах.
Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Comments 19

Настройка НА-кластера Kubernetes на «голом железе» с kubeadm. Часть 1/3

Reading time 18 min
Views 50K

Часть 2/3 тут
Часть 3/3 тут


Всем привет! В этой статье я хочу упорядочить информацию и поделиться опытом создания и использования внутреннего кластера Kubernetes.


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


0. Вступление


Kubernetes — это масштабируемая технология оркестровки, которая может начинаться с установки на одной ноде и достигать размеров огромных НА-кластеров на основе нескольких сотен нод внутри. Большинство популярных облачных провайдеров представляют разные виды реализации Kubernetes — бери и пользуйся. Но ситуации бывают разные, и есть компании, которые облака не используют, а получить все преимущества современных технологий оркестровки хотят. И тут на сцену выходит инсталляция Kubernetes на «голое железо».


Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Comments 5

Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

Reading time 9 min
Views 75K
Вот уже около трех лет я использую в работе принципы Spec By Example, Domain Driven Design и CQRS. За это время накопился опыт практического применения этих практик на платформе .NET. В статье я хочу поделиться нашим опытом и выводами, которые могут быть полезными командам, желающим использовать эти подходы в разработке.

Факты, цифры, код
Total votes 39: ↑39 and ↓0 +39
Comments 45

Аутентификация и авторизация в микросервисных приложениях

Reading time 11 min
Views 212K

Автор: Вячеслав Михайлов, Solutions Architect

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

Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.
Читать дальше →
Total votes 41: ↑40 and ↓1 +39
Comments 15

Прекратите скручивать (восклицательный знак)

Reading time 6 min
Views 1.7M
Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

Дальше много текста, фотографий, разборок. Ну все как обычно
Total votes 682: ↑667 and ↓15 +652
Comments 360

Перехват функций .NET/CLR

Reading time 16 min
Views 19K
Иногда при разработке программного обеспечения требуется встроить дополнительную функциональность в уже существующие приложения без модификации исходного текста приложений. Более того, зачастую сами приложения существуют только в скомпилированном бинарном виде без наличия исходного текста. Широко известным способом решения указанной задачи является т.н. “сплайсинг” – метод перехвата функций путем изменения кода целевой функции. Обычно при сплайсинге первые байты целевой функции перемещаются по другим адресам, а на их исходное место записывается команда безусловного перехода (jmp) на замещающую функцию. Поскольку сплайсинг требует низкоуровневых операций с памятью, то он осуществляется с использованием языка ассемблера и С/C++, что также накладывает определенные ограничения на реализацию замещающих функций – они обычно также реализованы на С/C++ (реже на ассемблере).

Метод сплайсинга для перехвата API-функций в Windows широко описан в Интернете и в различных литературных источниках. Простота указанного перехвата определяется следующими факторами:
  1. целевая функция является статической – она сразу присутствует в памяти загруженного модуля;
  2. адрес целевой функции легко определить (через таблицу экспорта модуля или функцию GetProcAddress).

Реализация замещающих функций на C/C++ при перехвате API-функций является оптимальным вариантом, поскольку Windows API реализовано, как известно, на языке C, и замещающие функции могут оперировать теми же понятиями, что и заменяемые.
Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Comments 26

Client-side Linq to NHibernate

Reading time 19 min
Views 9.6K
Практически любой .NET разработчик так или иначе использует в своей практике технологию Linq. Linq позволяет писать красивый и лаконичный код для получения объектов из источника данных с возможностью определения критериев получения и/или трансформации запрошенных объектов «на лету». Поддержка Linq присутствует практически во всех популярных ORM-фреймворках, в том числе и в NHibernate. NHibernate предоставляет Linq-провайдер, с помощью которого мы можем написать запрос на этапе разработки (Design-Time), но для того, чтобы составить запрос в runtime, придется повозиться с Reflection. Однако, если возникнет потребность в формировании запроса во внешнем процессе, например, в клиентской части сервиса, то в таком случае Reflection уже не спасет, клиентская часть, как правило, не знает (и не должна ничего знать) про серверный ORM.
Ниже мы разберем как создать API для написания Linq запросов к NHibernate в ситуации, когда запрос пишется в одном процессе, а выполняется в другом. Также, реализуем собственный IQueryProvider, который будет транслировать запросы из приложения-источника в исполняющее приложение.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 14

58 признаков хорошего интерфейса

Reading time 16 min
Views 380K
У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

1 Один столбец вместо нескольких


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

image
Читать дальше →
Total votes 226: ↑182 and ↓44 +138
Comments 102

d3o — эластичный материал, поглощающий физические воздействия

Reading time 1 min
Views 27K
image
d3o (ди-три-о) — это новый материал, мягкий и эластичный до тех пор, пока к нему не будет применено резкое сильное воздействие.
Он мягкий как жвачка, но если ударить по комку этого материала молотком — комок почти не деформируется.
image
Благодаря этому свойству материал уже применяют для производства снаряжения горнолыжников: наколенники, налокотники.
В перспективе, планируется делать из этого материала бронежелеты — эластичные и не сковывающие движений, но не пробиваемые пулями и осколками.

Читать дальше →
Total votes 123: ↑116 and ↓7 +109
Comments 181

Рефакторинг: миссия (не)выполнима?

Reading time 4 min
Views 2K
Что делать, если исходники проекта напоминают болото, а жить в нем планируется еще долго? Рефакторинг исходных кодов проекта — это более выгодная из двух альтернатив разобраться с означенной проблемой. Вторая из альтернатив — выбросить и переписать все заново — обычно не устраивает, по разным причинам.

А как делать этот самый рефакторинг, если даже неизвестно, с чего начать? Как осушить болото кода и не утонуть нем?

Конечно, идеальный вариант — считать рефакторинг одной из активности на проекте с самого его начала и выделять на него проектное время команды. В жизни, как ни странно, однако чаще всего оказывается, что предыдущий лид проекта не сильно озадачивался этим вопросом, предпочитая плыть по течению; возможно, он надеялся когда-нибудь сбагрить эту ношу менее удачливому лиду — пока проект еще не развалился; а может быть, просто не знал, что делать. Шеф, усё пропало!

Читать дальше →
Total votes 65: ↑64 and ↓1 +63
Comments 52

День знаний — Рекрутинг студентов

Reading time 3 min
Views 2.5K
Многие, даже средние компании, зачастую не прочь заняться выращиванием специалистов с нуля. Встает вопрос о том, как проводить отбор. При должной рекламе по окрестным университетам и хорошей репутации компании, желающих может оказаться достаточно много. А проводя традиционное интервью, нацеленное на проверку практических навыков, не всегда можно корректно оценить главные качества, которые хочется получить от стажера — умение учиться и желание работать.

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

Я хочу поделится с хабрасообществом опытом проведения интервью и списком вопросов. Cвежепринятые сотрудники еще стесняются критиковать старожилов, надеюсь получить какие-то возражения, или альтернативные идеи по механизму отбора здесь.
Читать дальше →
Total votes 62: ↑56 and ↓6 +50
Comments 55

Рупор. Городской громкоговоритель

Reading time 2 min
Views 853
Обычно принято, что у любого провайдера есть свой официальный (ну или полуофициальный) форум, который зачастую перерастает это понятие и становится воистину народным ресурсом.

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

Так миру явился Рупор.

Читать дальше →
Total votes 48: ↑40 and ↓8 +32
Comments 94

Ставим точки в MVC Framework. Механизм работы, часть вторая

Reading time 4 min
Views 4.3K
Это третья статья из цикла статей про MVC Framework. В первой я постарался дать ответ на вопрос “Зачем нужен MVC Framework?”, а во второй начал рассказ о том, как он устроен. Рассказ в предыдущей статье подразумевал поверхностное описание всего процесса работы MVC Framework без углубления в детали. Детали последуют позднее в ходе цикла статей. Эта статья продолжит рассказ про внутренний механизм работы MVC Framework, который был прерван на описании Model Binding. C него и начнем.
Читать дальше →
Total votes 38: ↑26 and ↓12 +14
Comments 8

Ставим точки в MVC Framework. Фабрика контроллеров

Reading time 5 min
Views 8.7K
В этой главе ставится точка в ответе на вопрос “Как и зачем работает фабрика контроллеров?”.

imageЭто третья статья из цикла статей про внутреннее устройство MVC Framework. Краткое содержание предыдущих частей: Нужно ли переходить на MVC Framework?; механизм работы MVC Framework: Часть 1 и часть 2. В этой статье речь пойдет о механизме фабрики контроллеров, важной части MVC Framework, с которой начинается работа всего фреймворка.
Читать дальше →
Total votes 34: ↑27 and ↓7 +20
Comments 9

Ставим точки в MVC Framework. Механизм работы, часть первая

Reading time 5 min
Views 7.1K
В этой и следующей статьях точки ставятся в ответе на вопрос “Как работает MVC Framework?”

imageЭто продолжение цикла заметок про ASP.NET MVC Framework. Начало было положено в предыдущей статье, в которой поднимался вопрос необходимости перехода на MVC Framework. После появления комментариев стало очевидно, что статья была написана не зря, так как определенная часть читателей не представляет значение и различие двух подходов: классического ASP.NET и MVC Framework. Надеюсь, что поднятые вопросы первой главы заставили кого-то задуматься.

В этот раз речь пойдет о том как устроен изнутри механизм MVC Framework. На Habrahabr уже была публикация по этому поводу, но я постараюсь дать более подробное описание и затронуть механизмы которые в той статье не были упомянуты.
Читать дальше →
Total votes 50: ↑35 and ↓15 +20
Comments 12

ASP.NET MVC Framework – ставим точки

Reading time 4 min
Views 23K
Точка первая ставится в вопросе “Нужно ли переходить на MVC Framework и почему?”

Этой статьей я хотел бы открыть цикл статей про MVC Framework. Последнее время я очень плотно работаю с ним и с его внутренностями и у меня накопилось несколько мыслей, интересных наблюдений и знаний которыми хотелось бы поделиться. Если вы программист ASP.NET и не знакомы или знакомы не очень хорошо с MVC Framework, то, хотелось бы верить, мои статьи помогут вам понять этот инструмент лучше. В любом случае, даже если вы очень хорошо знаете предмет, я думаю, нам с вами будет что обсудить в комментариях на каждую поднятую тему.
Читать дальше →
Total votes 64: ↑44 and ↓20 +24
Comments 99

Использование Direct3D совместно с Qt

Reading time 7 min
Views 7.2K
Однажды, у меня появилась необходимость использования Direct3D совместно с Qt. После нескольких дней поисков в интернете, я нашел всего лишь какие-то обрывки информации. Полноценного описания механизма использования Direct3D не было нигде. В результате, после долгих изысканий я добился того, чего хотел:)
Под катом находится инструкция «сближения“ Direct3D и Qt, а так же код виджета, который можно использовать as is
Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Comments 10

Information

Rating
Does not participate
Location
Николаев, Николаевская обл., Украина
Date of birth
Registered
Activity