• Продолжение очередной статьи: STM32 для начинающих. Интерфейсы

      Предыдущая публикация: «Очередная статья — STM32 для начинающих»

      И как этим пользоваться?


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

      Возьмем для примера простенький опрос кнопок:


      Для этой схемы в простейшем случае опрос будет выглядеть так:

      int GetKey()
      {
        volatile uint32_t* addr = reinterpret_cast<uint32_t*>(GPIOA_IDR);
        uint32_t ret_val = *addr;
        return ret_val & 0x0F;
      }
      Читать дальше →
    • Как я стал программистом в 35 и стоит ли оно того?

      image

      Привет, Хабр!


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

      Для чего я решил написать этот пост? Отчасти поделиться опытом, советами, отчасти меня сподвигла на это статья «Как я не стал программистом в 35 лет», я тоже решил написать свой пост на схожую тему, но в то время у меня не были выполнены два условия: 1. Мне не было 35; 2. Я только устроился на свою первую работу разработчиком, но я считал что не могу называться программистом если не отработал в этой должности хотя бы 1 год. Сейчас все условия соблюдены, если вам интересно прошу под кат.
      Читать дальше →
    • Анализируем причинно-следственные связи метрик ВКонтакте

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



        Читать дальше →
      • Дорожная карта развития продукта: Курс «Создание программного продукта и управление его развитием»

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


          Читать дальше →
          • +20
          • 2.4k
          • 5
        • Профессиональная работа в VS Code: 4 совета

          • Translation
          VS Code — это, в наши дни, один из самых популярных редакторов кода. Продуманный подход к использованию этого редактора способен значительно повысить продуктивность программиста. В этом материале представлено несколько советов по профессиональному использованию VS Code. Хочется надеяться, что эти советы вам пригодятся.


          Читать дальше →
        • Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня)

            Продолжаем тему музыкального программирования — ранее мы говорили о языках Csound, SuperCollider и Pure Data, а сегодня рассказываем Python и библиотеках FoxDot, Pippi и Music-Code.

            Читать дальше →
            • +26
            • 7.5k
            • 1
          • Очередная статья: STM32 для начинающих

              Всех приветствую!

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

              Начнем с предыстории. Когда-то мне пришлось перейти на микроконтроллеры ARM фирмы ST. Это было связано с тем, что PIC и AVR уже не хватало и хотелось новых приключений. Из доступного в хлебобулочных магазинах и большого количества статей о «быстром старте» выбор пал именно на STM32F100.

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

              Когда я попытался сделать первый проект меня ждало разочарование — CMSIS! Кому как, но для меня это было (и остается) ужасом: много буков, длинные и для меня не понятные структуры. Вникать во все это было не интересно. Попытался скомпилировать пару примеров и понял — это не наш метод.
              Читать дальше →
            • Подсказки по микросервисной автоматизации процессов

              • Translation

              Camunda Microservice Workflow Automation 1


              Возможно, ваша компания захочет перейти на архитектуру микросервисов и автоматизировать рабочие процессы (в этом посте блога я не вдаюсь в мотивацию, но вы, возможно, захотите прочитать о 5 Workflow Automation Use Cases You Might Not Have Considered или BizDevOps — the true value proposition of workflow engines). Это ставит вас в ряд со многими нашими клиентами. Как правило, у вас возникнут вопросы:


              • Область применения и границы — какой рабочий процесс вы хотите автоматизировать и как он ложится на несколько микроуслуг, или разраниченный контекст в вашем ландшафте. Я ограничен объемом этого поста, поэтому я не затрону эту тему сегодня, но вы, возможно, захотите прочитать Avoiding the «BPM monolith» when using bounded contexts или Real-Life BPMN.
              • Стек и инструменты — какой движок процессов я могу использовать?
              • Архитектура — я запускаю движок процесса централизованно или децентрализованно?
              • Управление — кто владельцы модели рабочего процесса и как ее развертывать?
              • Операции — как мне сохранить контроль?
              Читать дальше →
            • Оценка производительности CNI для Kubernetes по 10G сети (август 2020)

              • Translation


              TL;DR: Все CNI работают как надо, за исключением Kube-Router и Kube-OVN, Calico за исключением автоматического определения MTU — лучше всех.

              Читать дальше →
              • +16
              • 2.3k
              • 2
            • K8s в проде и в разработке: четыре мифа

              • Translation

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

              Не будет.

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

              Читать далее
            • Как получить доступ к ресурсам Kubernetes Pod

              • Translation
              The Reward by Tohad

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

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

              Команда Kubernetes aaS от Mail.ru перевела статью о ресурсах контейнеров (CPU & MEM), запросах и ограничениях ресурсов. Вы узнаете, какие преимущества дают эти настройки и что произойдет, если их не установить.
              Читать дальше →
              • +32
              • 2.9k
              • 1
            • Разработка python module, чтобы продакшн радовал

                Всем привет! Я представляю команду разработчиков некоммерческой организации CyberDuckNinja. Мы создаём и поддерживаем целое семейство продуктов, которые позволяют облегчить разработку backend-приложений и сервисов машинного обучения.

                Сегодня хотелось бы затронуть тему интеграции Python в C++.



                Все началось со звонка друга в два часа ночи, который пожаловался: «У нас под нагрузкой ложится продакшн ...» В разговоре выяснилось, что код продакшена написан с использованием ipyparallel (пакет Python, который позволяет производить параллельные и распределённые вычисления) для обсчета модели и получения результатов в режиме онлайн. Мы решили разобраться в архитектуре ipyparallel и провести профайлинг под нагрузкой.
                Читать дальше →
                • +24
                • 5.1k
                • 7
              • Проектирование заголовочных частей сайтов с использованием CSS Flexbox

                • Translation
                Когда я, изучив основы HTML и CSS в 2014 году, занялся разработкой сайтов, сложнее и страшнее всего для меня было создание их заголовочных частей. Тогда технология Flexbox была ещё достаточно новой, поэтому мы вынуждены были использовать старые методы — вроде float-позиционирования и техники clearfix. Сегодня мир фронтенд разработки стал совсем другим. А именно, технология Flexbox получила широкую браузерную поддержку, что открывает нам множество новых возможностей.



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

                А именно, здесь я расскажу о том, как, используя Flexbox-макеты, создавать качественные заголовочные части сайтов. Я поделюсь некоторыми советами, а в итоге продемонстрирую мой проект, созданный специально для этого материала. Поэтому, если вам и правда интересна тема, которую я тут решил поднять, вам, определённо, стоит дочитать эту статью до конца.

                Здесь я исхожу из предположения о том, что вы владеете основами Flexbox-вёрстки. Вот, на всякий случая, моя статья, написанная для тех, кто хочет узнать больше о CSS-свойстве flex.
                Читать дальше →
                • +29
                • 9.1k
                • 7
              • Опционы: пут-колл парити, броуновское движение. Ликбез для гика, ч. 7

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

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


                  Читать дальше →
                • Автоматизируем работу системы отопления в квартире без переделки интерьера — умный дом z-wave

                    Давно у меня стояла задача по автоматизации работы системы отопления в доме. Дано — классические термостаты теплого пола ballu с крутилкой — покупались в leroymerlin в далеком 2017 году для управления электрическим полом.


                    Сейчас мне необходимо автоматически включать теплые полы в ванной и на балконе по геолокации, семидневному расписанию или событию. Для своей цели я долго выбирал смарт термостаты и остановился на Heatit Z-TRM3 — термостат с Z-Wave чипом 5го поколения на частоте 869mhz.

                    В комплекте все что нужно — инструкция на русском языке, ntc type температурный датчик теплого пола и сам термостат со съемной монтажной рамкой для удобства.

                    Можно теперь объединить термостат в общую рамку с выключателями и розетками серией system55, легко устанавливается и смотрится эстетично.


                    Сам термостат есть в черном и белом цвете, он позволяет устанавливать температуру теплого пола не только с телефона или контроллера Z-Wave, но и с дисплея на термостате.
                    Читать дальше →
                  • Вышел релиз GitLab 13.3 с полным покрытием фаззинг-тестированием и матрицей сборки для CI/CD

                    • Translation

                    Картинка для привлечения внимания


                    DevSecOps помогает командам обнаруживать и устранять неисправности и уязвимости на ранних стадиях разработки ПО. В GitLab 13.3 создавать безопасное программное обеспечение стало проще благодаря тестированию фаззингом, интегрированному в ваш рабочий процесс разработки. Фаззинг-тестирование, направленное на полное покрытие кода, вместе с запуском DAST (динамического тестирования безопасности приложений) по требованию помогут обнаруживать реальные уязвимости программного обеспечения быстрее и эффективнее. Кроме того, с новой матрицей сборки для CI/CD станет проще выпускать релизы более часто. Наконец, панель состояния подов повысит эффективность работы специалистов по эксплуатации за счёт сокращения переключений контекста: все данные о состоянии подов Kubernetes теперь находятся в одной панели. Мы надеемся, что вам понравятся основные фичи релиза, а также ещё 69 новых фич, включённых в этот релиз.

                    Читать дальше →
                  • В мире кибербезопасности 2019 год запомнился наступлением шифровальщиков, ростом направленных атак на юридических лиц и возросшим вниманием злоумышленников к ценной информации. 2020 год зажёг вообще для всех, а в ИБ он добавил тренд на атаки по распределённым инфраструктурам. Чтобы показать этот опасный мир не на безликих цифрах, а на реальных историях, мы вместе с «Лабораторией Касперского» подготовили опрос про инциденты ИБ, с которыми вам приходилось сталкиваться, и используемые инструменты защиты. Через две недели мы обработаем результаты опроса в отдельном мегапосте, а самые интересные истории выложим апдейтом.
                    Пройти опрос
                  • Continuous Integration как практика, а не Jenkins. Андрей Александров


                      Обсудим почему CI-инструменты и CI – это совсем про разное.


                      Какую боль CI призвано решить, откуда возникла идея, какие последние подтверждения что оно работает, как понять что у вас есть именно практика, а не просто установленный Jenkins.

                      Читать дальше →
                    • Как раскрутить Телеграм-канал за 500$ и избежать ботоводов

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

                        To buy or not to buy

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

                        В итоге я решил делать канал с нуля. Над тематикой долго думать не пришлось, так как у меня есть много викторин в Google Play, и этот же контент я и решил использовать в Телеграме, заодно рекламируя и свои мобильные викторины. Так появился мой канал @TriviaGames, в который я решил не вкладывать сразу кругленькую сумму, а пиарить постепенно, но более эффективно. В итоге за 4 месяца мне удалось взять рубежи в 10к подписчиков и 2к охвата. Это конечно не ахти какие показатели, но при этом мои затраты составили около 500 долларов, часть из которых я уже отыграл. И в этом хабе, я решил поделиться кейсом продвижения канала и дать некоторые советы, как закупать рекламу с максимальной эффективностью и избегать ботоводов.
                        Читать дальше →
                      • ICFP Contest 2020 от идеи до воплощения. Как организовать контест и выжить


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

                          Читать дальше →