• Пишем голосового ассистента на Python

    Введение


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

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

    image
    Читать дальше →
  • Когда вы учили произношение английских слов, вы материли Уильяма Кэкстона, даже если не знали, кто это вообще такой



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

      Но в средние века не было интернета. В каждом графстве постепенно устоялся свой собственный способ написания и произношения. К примеру, слово «church» на территории Англии могли произносить 22 разными способами, а «she» — 60 вариантами. Знакомое всем «though» и вовсе имело целых 500 вариантов написаний и произношений.

      Изменил все один человек — Уильям Кэкстон. Но большинство студентов, которые учат английский как иностранный, ругают этого джентльмена последними словами, когда узнают, как именно читаются слова в английском. Спойлер: как попало. И ругают его, даже если вообще никогда не слышали это имя. Мы расскажем, почему.
      Читать дальше →
    • Квантовая теория. Вселенная из волн вероятностей

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

        image Что будет, если по аналогии с двущелевым опытом, все пространство на пути частицы до экрана будет заполнено щелями?
        Читать дальше →
      • 4 главных вещи, которые я не знал перед выходом на стажировку в разработку

          Всем привет! Меня зовут Даниил, и я программист-самоучка.

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

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


          Читать дальше →
        • С нуля до автоматизации контейнеров за 7 минут

          • Translation

          В статье ранее (на португальском) я рассказал, как создать полнофункциональный бэкенд GraphQL, используя только образ Docker и файл конфигурации. Все это можно найти на сайте Azure. А сейчас давайте поговорим о том, как автоматизировать развертывания, созданные для нашего хостинга, и обновления нашей серверной части!


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


          Вместо этого мне бы хотелось, чтобы с каждым push в главной ветке генерировалась новая версия файла и обновление отправлялось на сайт Azure. Однако я не хочу использовать для этого другие инструменты. Мне бы хотелось, чтобы весь стек был максимально простым, так как мы пользуемся только GitHub и Azure. Нет ничего проще, чем продолжать пользоваться GitHub для автоматизации, верно?


          Вот почему мы будем использовать GitHub Actions


          Читать дальше →
        • Как построить надежное приложение на базе Event sourcing

            Привет! В этой статье я хочу рассказать, как из модного микросервисного приложения можно сделать рабочую, управляемую систему с помощью трех проверенных годами методик: на примере проекта внутренней performance-based рекламы Joom.


            Читать дальше →
            • +17
            • 4.6k
            • 3
          • 11 инструментов для разработки микрофронтендов, о которых стоит знать

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



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

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

            Существует много подходов к разработке микрофронтендов: от интеллектуальной интеграции компонентов во время сборки проекта до организации совместной работы разных частей приложения во время выполнения кода путём использования особых подходов к маршрутизации. В этом материале я собрал самые заметные инструменты, направленные на разработку микрофронтендов.
            Читать дальше →
          • «Живи, вкалывай, вкалывай, вкалывай, сдохни! Репортаж с темной стороны Кремниевой долины» Отзыв о книге

              image

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

              Кори Пайн
              Читать дальше →
            • Чистая архитектура с Go

                Меня зовут Эдгар (ZergsLaw), я работаю в компании, которая занимается  финтех-разработкой для b2b и b2c. Когда только устроился в компанию, то попал в команду большого финтех-проекта и получил «в нагрузку» небольшой микросервис. Мне поручили его изучить и подготовить план рефакторинга, чтобы в дальнейшем выделить отдельную команду поддержки для сервиса.



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

                «Мой» сервис — это пример плохой архитектуры и изначально неправильного проектирования. Все мы понимаем, что так делать нельзя. Но почему нельзя, к каким последствиям это приводит и как попытаться все исправить, я и расскажу.
                Читать дальше →
              • Почему автоматическая регистрация зависимостей — зло

                  image

                  Есть много проектов типа Simple Injector для различных языков программирования, позволяющих по имени класса, интерфейса или неймспейса, а иногда и папки зарегистрировать класс или всю группу классов, объединенных этим признаком, в каком-то регистре. Это делается для цели автоматического инстанцирования объекта без явного указания его зависимостей. Такую регистрацию группы объектов по общему признаку в регистре с целью дальнейшего инстанцирования я называю автоматической регистрацией зависимостей.
                  Читать дальше →
                • «Просто похудеть» — непросто

                    Интернет наводнен статьями о том, как похудеть "просто съедая меньше чем потратил" и отчетами об успешном опыте некоторых везунчиков. Чего нету (ну или очень мало) в интернете — это отчетов о том, как миллионы людей безрезультатно пытаются просто "съесть меньше", садясь на все новомодные диеты и неизменно возвращаясь к тому, с чего начинали, а иногда и скатываясь по шкале индекса массы тела в еще более красную зону.


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

                    Хакнуть свой мозг
                  • Какая асинхронность должна была бы быть в Python

                      В последние несколько лет ключевое слово async и семантика асинхронного программирования проникла во многие популярные языки программирования: JavaScript, Rust, C#, и многие другие. Конечно, в Python тоже есть async/await, они появились в Python 3.5.

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


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

                        Мы решили вспомнить былое и выяснили, что случилось с теми проектами, которые некогда были у всех на устах. Плюс посмотреть, появилось ли что-то новое на рынке модульных устройств. Подборка получилась субъективной, и, возможно, в нее не попали некоторые интересные проекты. Будет здорово, если в комментариях вы вспомните другие существующие и новые инициативы такого рода.
                        Читать дальше →
                      • Применение CQRS & Event Sourcing в создании платформы для проведения онлайн-аукционов

                          Коллеги, добрый день! Меня зовут Миша, я работаю программистом.

                          В настоящей статье я хочу рассказать о том, как наша команда решила применить подход CQRS & Event Sourcing в проекте, представляющем собой площадку для проведения онлайн-аукционов. А также о том, что из этого получилось, какие из нашего опыта можно сделать выводы и на какие грабли важно не наступить тем, кто отправится путем CQRS & ES.
                          image

                          Читать дальше →
                        • Валидация параметров конфигурации Spring Boot при запуске

                          • Translation
                          • Tutorial

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


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


                          Spring Boot предлагает нам удобный способ валидации параметров конфигурации. Мы собираемся связать входные значения со @ConfigurationProperties и использовать Bean Validation для их валидации.

                          Читать дальше →
                        • Почему список в кортеже ведет себя странно в Python?

                          В языках программирования меня всегда интересовало их внутреннее устройство. Как работает тот или иной оператор? Почему лучше писать так, а не иначе? Подобные вопросы не всегда помогают решить задачу «здесь и сейчас», но в долгосрочной перспективе формируют общую картину языка программирования. Сегодня я хочу поделиться результатом одного из таких погружений и ответить на вопрос, что происходит при модификации tuple'а в list'е.
                          Читать дальше →
                        • Разбираемся с алгоритмом коллапса волновой функции

                          • Translation

                          После появления DeBroglie и Tessera меня много раз просили объяснить, как они работают. Генерирование может выглядеть как волшебство, но лежащие в его основе правила на самом деле просты.
                          Читать дальше →
                        • Реалистичный боевой ИИ для 2D-игры

                          • Translation
                          image

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

                          Окружение и ограничения


                          Игровое окружение состоит из полигонов. Большинство полигонов блокирует движение, область видимости и стрельбу, однако есть и «низкие» полигоны, только блокирующие движение. Окружение плотно заставлено препятствиями и укрытиями.

                          ИИ тоже ограничен несколькими техническими факторами. Самый важный из них: сервер, на котором выполняются боты, когда онлайн находится мало игроков, должен быстро работать на недорогом VPS как минимум при десяти ботах. Кроме того, нагрузка на ЦП должна оставаться достаточно низкой, чтобы можно было выполнять несколько инстансов сервера на одном VPS без превышения лимита ЦП, и не при этом вызвать санкций со стороны поставщика услуг VPS.
                          Читать дальше →
                          • +40
                          • 9.5k
                          • 2
                        • Ловушки для хакера. Обнаруживаем взлом на раннем этапе с помощью Canarytokens

                            Honey Tokens (англ. — «медовые приметы/признаки/идентификаторы») одна из разновидностей идеи Honeypot, приманки для злоумышленников, позволяющей обнаружить факт взлома или опознать его источник. Когда атакующий уже проник в систему, он, скорее всего, выполнит действия, несвойственные обычному пользователю. Это можно использовать как способ обнаружения взлома. В статье мы рассмотрим, как легко сделать собственные триггеры для обнаружения взлома на раннем этапе. Такие ловушки полезно использовать системному администратору и даже обычному пользователю, переживающему о приватности своих данных.


                            До изобретения газоанализаторов шахтеры брали c собой в шахту канарейку. Из-за маленького организма и быстрого обмена веществ, птицы намного раньше реагировали на опасные газы в воздухе и предупреждали шахтеров.
                            Читать дальше →
                          • Книги для начинающих подкастеров: что почитать про заработок и монетизацию разговорных передач

                              Решил перепостить с другой площадки материал dmitrykabanov в качестве продолжения его более ранней подборки «Вышел на дистанционку — запустил подкаст: что для этого почитать».

                              Читать дальше →
                              • +12
                              • 2.7k
                              • 2