• Управление прожекторами при помощи Arduino

    Здравствуйте, уважаемые хабрчане! Друг купил прожекторы, которые управляются при помощи инфракрасного пульта, и попросил автоматизировать их, чтобы каждый час была возможность выставить нужный цвет и яркость. Идея выставить настройки для аквариума, чтобы освещение переключалось автоматически каждый час, в течении 24 часов.

    Для реализации проекта была выбрана плата Arduino UNO, так как есть готовые библиотеки для считывания и отправки инфракрасного сигнала. Вначале были прочитаны команды пульта, используя микросхему VS1838B (Ардуино библиотека писала, что это протокол LG и используются 28 бит). Попробовал генерировать такие же сигналы используя функцию sendLG - ничего не получилось (осциллоскопа нету, увидеть сигнал в живую возможности не было). Поэтому 8 команд (включить, выключить, ярче, темнее, белый, красный, синий, розовый) были прочитаны в режиме raw , и каждой команде соответствовал свой массив из 67 unsigned int значений. Конечно это плохое решение, потому что занимает 60% динамической памяти, но других вариантов как решить эту задачу у меня не было.

    Далее была работа над меню устройства. Необходимо было дать возможность выставить текущее время, а также выбрать параметры освещения под каждый час. Был взят символьный дисплей 20х4 (использовал параллельное подключение, т.к. переходник на I2C глючил) и три кнопки, всего получилось семь окон для символьного дисплея. Для реализации меню пришлось повозится, используется Конечный автомат (Finite-state machine) с 77 состояниями.

    Читать далее
    • –1
    • 3.2k
    • 6
  • Domain Driven Design на практике

    • Tutorial
    Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще определить используется DDD в проекте или нет?

    Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

    Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
    Читать дальше →
  • Как думает программист?

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

    Читать далее
  • Как научиться учиться. Часть 3 — тренируем память «по науке»

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

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

      Читать дальше →
    • HTML трюки

      • Translation
      image

      1. Атрибут `loading=lazy`


      Совет по производительности. Вы можете использовать атрибут loading = lazy, чтобы отложить загрузку изображения до тех пор, пока пользователь не домотает до них.

      <img src='image.jpg' loading='lazy' alt='Alternative Text'>  
      Читать дальше →
    • Опенсорсные инструменты и пакеты для работы с HTTP API

      • Translation

      Мы продолжаем серию статей о создании HTTP API с помощью .NET 5. В предыдущей статье мы рассмотрели создание обнаруживаемых HTTP API с помощью ASP.NET Core 5 Web API. В этой статье мы рассмотрим пакеты и инструменты для работы с HTTP API с открытым исходным кодом. Ну что ж, приступим!

      Читать далее
    • Учимся подтягиваться на одной руке по программе Пола Уэйда

      • Translation

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

      Приступить к тренировке
    • Аспекты хороших юнит-тестов

        Эта статья является конспектом книги «Принципы юнит-тестирования».

        Давайте для начала перечислим свойства хороших юнит-тестов.

        Первое. Интегрированы в цикл разработки. Пользу приносят только те тесты, которые вы активно используете; иначе писать их нет смысла.

        Второе. Тестируют только самые важные части вашего кода. Не весь рабочий код заслуживает одинакового внимания.

        Третье. Дают максимальную защиту от багов с минимальными затратами на сопровождение. Для этого нужно уметь распознавать эффективные тесты и писать их.

        Однако распознавание и написание эффективного теста – два разных навыка. И для приобретения второго навыка необходимо сначала освоить первый. Далее в этой статье будет показано, как распознать эффективный тест. Также будет рассмотрена пирамида тестирования и тестирование по принципу «черного ящика» / «белого ящика».

        Читать далее
      • Fiddler = удобный сниффер + прокси сервер

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

          Читать далее
        • Анатомия юнит-теста

            Эта статья является конспектом книги «Принципы юнит-тестирования». Материал статьи посвящен структуре юнит-теста.

            В этой статье рассмотрим структуру типичного юнит-теста, которая обычно описывается паттерном AAA (arrange, act, assert — подготовка, действие и проверка). Затронем именование юнит-тестов. Автор книги описал распространенные советы по именованию и показал, почему он несогласен с ними и привел альтернативы.

            Читать далее
          • Все английские времена в одной простой схеме

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

            Как это часто бывает, по-настоящему понимаешь какую-то тему, только когда начинаешь рассказывать о ней другим («метод Фейнмана»). Несколько друзей, позавидовав моим «успехам», попросили помочь разобраться с английским. Тут и обнаружилось, что хотя я уже успешно использую английский в повседневной работе, обучать ему кого-то ещё — это совершенно отдельный навык.

            Первоначальная идея. Сначала разъяснить все английские времена за один присест удавалось, надёргав различных идей из интернета: обрывки чьих-то схем, начинали склеиваться в свою схему и обрастать собственными легендами, а применение времён почти всегда было проще пояснить, используя хрестоматийную «систему английских времен с точки зрения употребления глагола “to vodka”». С каждой новой импровизированной лекцией, схема и нарратив продолжали меняться. «Ученики» попадались с различным базовым уровнем, что позволило понять, откуда нужно начинать плясать, чтобы урок был понятен всем, кто хоть раз слышал что-то про глаголы have и be. Когда счёт обученных уже пошёл на десятки, я решил оформить идею в более стройную лекцию. От первых попыток преподавания английских времён, до этого момента прошло пять лет. За это время было обучено ещё пару сотен человек. Обучено — по приколу. Денег за эти уроки я не брал.

            Читать далее
          • Теория цвета как основа для дизайна и иллюстрации

            • Translation

            Цвета присутствуют во всем, выражаясь во множестве оттенков, градиентов и комбинаций. Если повнимательнее рассмотреть окружающий нас мир, то можно удивиться, насколько большим разнообразием цветов и оттенков он наполнен. В то время как некоторые из них непосредственно вызывают в нас приятные чувства, существуют также и уникальные цветовые смеси, оказывающее заметное влияние на человеческие эмоции. Для лучшего же понимания всех этих особенностей, необходимо знать теорию цвета.
            Читать дальше →
            • +52
            • 11.8k
            • 7
          • Как быть более продуктивным, не заставляя себя

            • Translation

            Представьте, что вы могли бы работать больше и при этом быть супер-продуктивным. И знаете, что самое приятное? В этом случае вам не пришлось бы заставлять себя работать.

            Есть люди, у которых дела обстоят именно так. Они могут просто сидеть и работать, без какого-либо беспокойства и насилия над собой. Более того, они работают с удовольствием. Есть хорошие новости — вы тоже можете этому научиться.

            Давайте начнем.

            Большинство людей испытывает негативные чувства по отношению к своей работе. Они думают, что работа — это что-то неприятное, в отличие от развлечений. Работа воспринимается как раздражающее занятие, которое мешает людям делать то, чем им на самом деле хочется заниматься. Люди также полагают, что отдых и полное безделье — это идеальное состояние, в котором они хотели бы находиться всё время. Такое мышление приводит к тому, что человек начинает думать, что нужно заставлять себя работать через силу, и что работа — это очень тяжело, и лишь железная сила воли поможет справиться с ней.
            Читать дальше →
          • Как «продать» технические задачи бизнесу

              Поддерживать высокое техническое качество кода — прямая обязанность техлида. Но чтобы этого добиться, зачастую приходится доказывать начальству и заказчикам необходимость вкладывать в улучшение кода силы и время. Как сделать это, не стаптывая в бесконечных согласованиях железные башмаки и не стирая язык до мозолей? Об этом в своем докладе на конференции TechLead Conf 2020 Online рассказал консультант Better Life Company Алексей Дерюшкин.

              Приведенные в статье примеры и истории помогут читателям выстроить баланс между продуктовыми и техническими задачами в диалоге с заказчиком и руководителями. А проверенные на практике советы — правильно подготовиться к этому разговору.

              Читать далее
              • +13
              • 3.1k
              • 2
            • Лучшие практики обработки исключений в C#

              • Translation

              Я плавно приближаюсь к своему двадцатилетнему юбилею в технической индустрии. На протяжении этих лет я своими глазами повидал почти все анти-паттерны обработки исключений (да что уж там, и я сам тоже совершал ошибки). В этой статье я собрал собственные лучшие практики работы с исключениями в C#.

              Читать далее
            • Как найти удаленную работу в зарубежной компании. 10 шагов



                Каждый год Оксфордский словарь английского языка выбирает «Слово года». Но в 2020-м что-то пошло не так. Издательство Оксфордского университета описало 2020-й как «год, который лишил нас дара речи», и сказало, что к нему невозможно подобрать правильное слово.


                Но на наш взгляд, такое слово всё-таки есть. С прошлого марта в мире резко возросло использование слова «удаленно». Большинство предприятий отошли от традиционной модели офисной работы и стали пытаться организовать труд сотрудников из дома. Для разработчиков из СНГ это прекрасная возможность начать работу в лучших мировых компаниях. Зарплаты за рубежом выше, а возможностей сейчас стало больше, чем когда-либо прежде.


                Мы постоянно исследуем рынок. Публикуем сотни вакансий ежедневно. И сейчас 40% выручки получаем от иностранных компаний, которые в основном нанимают программистов для удаленной работы.


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

                Читать дальше →
              • Рейтинг лучших бесплатных программ для 3D-моделирования (для начинающих) на весну 2021 года

                Существуют сотни различных бесплатных программных инструментов для 3D-моделирования для новичков, желающих создать свои собственные 3D-модели. Пользователи могут экспортировать свои модели и либо напечатать их на 3D-принтере, либо разместить в интернете, чтобы другие могли загрузить их бесплатно или за деньги.

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

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

                Читать далее
              • Полное руководство по CSS Flex + опыт использования

                  Как и CSS Grid, Flex Box довольно сложен, потому что состоит из двух составляющих: контейнера и элементов внутри него.

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

                  Читать!
                • Разработка защищённого WEB интерфейса для микроконтроллеров

                  • Tutorial

                  Цель - разработка компактного, простого, быстрого, защищённого и адаптивного WEB интерфейса для встраиваемого устройства на микроконтроллере. Микроконтроллер класса STM32[F/H] или подобный, с размером Flash 1-2... Мегабайта и RAM 200-500... Кбайт, частота ядра 100-500... МГц.

                  Читать далее