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



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

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

    Вашему вниманию предлагается цикл из трех статей, где будет рассказано о всех основных компонентах системы облачного умного дома, лично разработанной автором и запущенной в эксплуатацию. Первая статья посвящена оконечному клиентскому оборудованию, устанавливаемому внутри умного дома, вторая — архитектуре системы облачного хранения и обработки данных, и, наконец, третья — клиентскому приложению для управления системой на мобильных и стационарных устройствах.
    Читать дальше →
  • Настройка НА-кластера Kubernetes на «голом железе» с kubeadm. Часть 1/3

    • Translation

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


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


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


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


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


    Читать дальше →
    • +24
    • 18.3k
    • 5
  • Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали

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

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

      • Tutorial

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

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

      Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.
      Читать дальше →
    • Прекратите скручивать!

      • Tutorial
      Ну действительно, прекратите. Есть куча прикольных штук для соединения самых разнообразных проводов, а все равно технология «откусить зубами изоляцию, скрутить, замотать изолентой» жива до сих пор.

      Дальше много текста, фотографий, разборок. Ну все как обычно
    • Перехват функций .NET/CLR

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

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

      Реализация замещающих функций на C/C++ при перехвате API-функций является оптимальным вариантом, поскольку Windows API реализовано, как известно, на языке C, и замещающие функции могут оперировать теми же понятиями, что и заменяемые.
      Читать дальше →
    • Client-side Linq to NHibernate

        Практически любой .NET разработчик так или иначе использует в своей практике технологию Linq. Linq позволяет писать красивый и лаконичный код для получения объектов из источника данных с возможностью определения критериев получения и/или трансформации запрошенных объектов «на лету». Поддержка Linq присутствует практически во всех популярных ORM-фреймворках, в том числе и в NHibernate. NHibernate предоставляет Linq-провайдер, с помощью которого мы можем написать запрос на этапе разработки (Design-Time), но для того, чтобы составить запрос в runtime, придется повозиться с Reflection. Однако, если возникнет потребность в формировании запроса во внешнем процессе, например, в клиентской части сервиса, то в таком случае Reflection уже не спасет, клиентская часть, как правило, не знает (и не должна ничего знать) про серверный ORM.
        Ниже мы разберем как создать API для написания Linq запросов к NHibernate в ситуации, когда запрос пишется в одном процессе, а выполняется в другом. Также, реализуем собственный IQueryProvider, который будет транслировать запросы из приложения-источника в исполняющее приложение.
        Читать дальше →
      • 58 признаков хорошего интерфейса

        • Translation
        У хорошего интерфейса пользователя высокая конверсия и его просто использовать. То есть, он хорош и для бизнеса, и для использующих его людей. Вот список опробованных нами идей.

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


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

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

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

          Читать дальше →
        • Рефакторинг: миссия (не)выполнима?

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

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

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

            Читать дальше →
          • День знаний — Рекрутинг студентов

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

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

              Я хочу поделится с хабрасообществом опытом проведения интервью и списком вопросов. Cвежепринятые сотрудники еще стесняются критиковать старожилов, надеюсь получить какие-то возражения, или альтернативные идеи по механизму отбора здесь.
              Читать дальше →
            • Рупор. Городской громкоговоритель

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

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

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

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

                  Это третья статья из цикла статей про MVC Framework. В первой я постарался дать ответ на вопрос “Зачем нужен MVC Framework?”, а во второй начал рассказ о том, как он устроен. Рассказ в предыдущей статье подразумевал поверхностное описание всего процесса работы MVC Framework без углубления в детали. Детали последуют позднее в ходе цикла статей. Эта статья продолжит рассказ про внутренний механизм работы MVC Framework, который был прерван на описании Model Binding. C него и начнем.
                  Читать дальше →
                  • +14
                  • 4.1k
                  • 8
                • Ставим точки в MVC Framework. Фабрика контроллеров

                    В этой главе ставится точка в ответе на вопрос “Как и зачем работает фабрика контроллеров?”.

                    imageЭто третья статья из цикла статей про внутреннее устройство MVC Framework. Краткое содержание предыдущих частей: Нужно ли переходить на MVC Framework?; механизм работы MVC Framework: Часть 1 и часть 2. В этой статье речь пойдет о механизме фабрики контроллеров, важной части MVC Framework, с которой начинается работа всего фреймворка.
                    Читать дальше →
                    • +20
                    • 7.6k
                    • 9
                  • Ставим точки в MVC Framework. Механизм работы, часть первая

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

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

                      В этот раз речь пойдет о том как устроен изнутри механизм MVC Framework. На Habrahabr уже была публикация по этому поводу, но я постараюсь дать более подробное описание и затронуть механизмы которые в той статье не были упомянуты.
                      Читать дальше →
                    • ASP.NET MVC Framework – ставим точки

                        Точка первая ставится в вопросе “Нужно ли переходить на MVC Framework и почему?”

                        Этой статьей я хотел бы открыть цикл статей про MVC Framework. Последнее время я очень плотно работаю с ним и с его внутренностями и у меня накопилось несколько мыслей, интересных наблюдений и знаний которыми хотелось бы поделиться. Если вы программист ASP.NET и не знакомы или знакомы не очень хорошо с MVC Framework, то, хотелось бы верить, мои статьи помогут вам понять этот инструмент лучше. В любом случае, даже если вы очень хорошо знаете предмет, я думаю, нам с вами будет что обсудить в комментариях на каждую поднятую тему.
                        Читать дальше →
                      • Использование Direct3D совместно с Qt

                          Однажды, у меня появилась необходимость использования Direct3D совместно с Qt. После нескольких дней поисков в интернете, я нашел всего лишь какие-то обрывки информации. Полноценного описания механизма использования Direct3D не было нигде. В результате, после долгих изысканий я добился того, чего хотел:)
                          Под катом находится инструкция «сближения“ Direct3D и Qt, а так же код виджета, который можно использовать as is
                          Читать дальше →