• NLP — Преобразование текста: Word2Vec

    • Перевод

    — Статья, которая поможет вам разобраться в принципе работы и идее, стоящей за Word2Vec.

    Источник: Google

    В предыдущей статье я рассказывал об основах NLP (Natural Language Processing — обработка естественного языка), и сегодня мы продолжим изучение этой темы.

    Если вы еще не читали мою предыдущую статью, то советую вам сделать это: NLP - Text Encoding: A Beginner's Guide

    Перед тем, как мы начнем, обратите внимание на несколько моментов, касаемых статьи:

    Читать далее
  • Spring @Transactional — ошибки, которые совершали все

      Вероятно, одной из наиболее часто используемых аннотаций Spring является @Transactional. Несмотря на ее популярность, иногда она используется неправильно, в результате чего получается не совсем то, что задумал инженер-программист.

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

      1. Вызовы в пределах одного класса

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

      Аннотация не работает в методе registerAccount:

      Читать далее
    • Имплементация простых фьючерсов с помощью корутин

      • Перевод

      Вместо return в корутине используется co_return, возвращающий результат. В этой заметке я хочу реализовать простую корутину с использованием co_return.

      Читать далее
      • –1
      • 1,5k
      • 2
    • VxLAN iBGP vs eBGP

        До этого момента тема eBGP в overlay практически не затрагивалась, за исключением Multipod топологии, однако, и там все было довольно поверхностно и не хватает деталей для полной реализации в одном поде. Так что исправим это допущение и рассмотрим поближе eBGP.

        Эта статья логическое окончание темы EVPN в сети VxLAN, посвященное запуска группы "Дизайн сетей ЦОД" от OTUS. Сегодня постараюсь закрыть тему выбора между iBGP и eBGP в overlay сети.

        Читать далее
      • React Router Hooks: Изучение принципов их работы

        • Перевод

        React Router — это не то же самое, что маршрутизатор, направляющий сетевые данные — к счастью! Однако между сетевым маршрутизатором и React Router есть много общего. React Router помогает нам направлять пользователей к нужному компоненту. Например, мы можем использовать маршрутизацию на стороне клиента для создания одностраничного приложения (SPA), которое позволяет перемещаться между различными страницами без обновления браузера.

        Другими словами, React Router поддерживает синхронизацию пользовательского интерфейса с URL. Он имеет простой API с такими мощными функциями, как ленивая загрузка кода, динамическое сопоставление маршрутов и обработка перехода между локациями.

        Но есть еще много интересного. В этой статье мы рассмотрим хуки React Router. Они позволяют разработчикам писать гораздо более чистый код, так как не нужно писать всю его шаблонную часть, как в компонентах класса. Из коробки мы можем получить доступ к нескольким хукам, таким как useHistory, useLocation, useParams и useRouteMatch. Например, хук useHistory дает нам доступ к объекту history для обработки изменений маршрута.

        Читать далее
      • Infrastructure as Code: Плюсы, Минусы и Будущее

        • Перевод

        Infrastructure as Code — ключевой элемент наиболее эффективных инженерных сетапов. То, как сейчас DevOps-инженеры взаимодействуют со своей инфраструктурой — это несомненно большой скачок вперед. Но тем не менее спорные моменты с определением и лучшими практиками IaC до сих пор есть. Эта статья стремится четко описать IaC, его преимущества и важные ограничения.

        Infrastructure as Code, или сокращенно IaC, — это фундаментальный сдвиг не только для Ops в том, как они подходят к провизионированию и обслуживанию инфраструктуры, но и в разработке программного обеспечения в целом. Несмотря на то, что за последние несколько лет IaC де-факто зарекомендовал себя как отраслевой стандарт, многие до сих пор спорят о его определении, лучших практиках и ограничениях.

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

        Читать далее
      • Тестирование контракта потребителя сервиса — часть 4

        • Перевод

        В этой серии блогов мы рассмотрели:

        Введение

        Тесты контрактов на основе Pact для сервисов, взаимодействующих синхронно

        Тесты контрактов на основе Pact для сервисов, взаимодействующих асинхронно

        Давайте перейдем к следующей теме. Pact брокер!

        До сих пор мы видели, что потребитель публикует контракт в локальной директории. Провайдер забирает контракт из этой директории. Это самый простой способ обмена контрактами. И, возможно, наиболее подходящий в процессе его изучения. Однако в реальных проектах это не сработает. Часто в разработке участвуют несколько человек, команд, поэтому нам нужно централизованное место для размещения всех контрактов. Pact Foundation решил эту проблему с помощью брокера. Брокер — это структура, где потребители могут публиковать свои контракты, а провайдеры — результаты проверки.

        Читать далее
      • predict_proba в Python не прогнозирует вероятности (и как с этим бороться)

        • Перевод

        Специалисты по анализу данных часто оценивают свои прогностические модели с точки зрения точности и погрешности, но редко спрашивают себя:

        «Способна ли моя модель спрогнозировать реальные вероятности?»

        Однако точная оценка вероятности чрезвычайно ценна с точки зрения бизнеса (иногда она даже ценнее погрешности). Хотите пример?

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

        Читать далее
      • Go: объектный файл и релокация

        • Перевод

        Эта статья оперирует версией Go 1.14.

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

        Читать далее
      • Тестирование контракта потребителя сервиса — часть 3

        • Перевод

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

        В нашем примере кредитный шлюз эмитирует событие о создании займа. Служба предоставления займов прослушивает его и выполняет дальнейшую обработку. В случае коммуникации на основе Http видно, что фреймворк Pact запускает имитатор Http-сервера. Коммуникация на основе сообщений отличается от Http тем, что не существует единого стандартного способа коммуникации. Она может быть организована с помощью различных инструментов, таких как Kafka, RabbitMQ, ActiveMQ и т.д. Pact может не связываться с этими инструментами, и, поэтому, он не запускает ни один из них во время выполнения тестов, а просто позволяет нам убедиться, что потребитель и производители событий придерживаются одной и той же схемы. В конечном итоге это то, что нам нужно! Давайте перейдем к коду.

        Потребительский тест

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

        Читать далее
      • С помощью скотча и жвачки

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

          Читать далее
        • Микропроцессор Texas Instruments TMX 1795 — первый в истории?

             

            Большинство современных инженеров склонны считать 1971 год началом революции в разработке микропроцессоров. Тогда увидели свет 4-битная микросхема  4004 от Intel, следом — 8-битный чип 8008. Но история становления микропроцессора гораздо насыщеннее и увлекательнее. Некоторые ранее не опубликованные документы показывают, как забытый сегодня чип, Texas Instruments (TI) TMX 1795, обогнал Intel 8008 и стал первым 8-битным микропроцессором. 

            Читать далее
            • +12
            • 5,8k
            • 2
          • Тестирование контракта потребителя сервиса — часть 2

            • Перевод

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

            Читать далее
          • Functools – сила функций высшего порядка в Python

            • Перевод

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

            Кэширование

            Давайте начнем с самых простых, но довольно мощных функций модуля functools. Начнем с функций кэширования (а также декораторов) - lru_cache, cache и cached_property. Первая из них - lru_cache предоставляет кэш последних результатов выполнения функций, или другими словами, запоминает результат их работы:

            Читать далее
          • Как в Datalake объединить слишком большое количество небольших файлов в несколько больших с помощью Apache Spark

            • Перевод

            Один из современных способов хранения большущего объема данных для платформ обработки и анализа данных - это распределение каждого датасета между несколькими узлами в кластере. Если мы используем облако, то весь датасет разделяется на множество объектов. Это может привести к появлению “слишком большого количества небольших файлов” что является хорошо известной проблемой в области Big Data. Формирование небольших файлов происходит по нескольким причинам, например, при сохранении входящих потоковых данных, сообщение за сообщением, при партиционировании по ключу с перекосом данных и т.д. Драйвер должен следить за изменениями метаданных всех файлов, чтобы планировать распределенную обработку данных при сохранении или чтении данных датасета используя Namenode, MapReduce или задачи Spark. Когда файлов слишком много, для хранения их метаданных требуется дополнительная память, а при их перечислении этих данных требуется гораздо больше времени на сетевое взаимодействие.

            Во время работы в Datalake вы могли заметить, что при выполнении задачи Spark затрачивается слишком много времени на чтение датасета из s3/HDFS, где нужно подождать, даже чтобы увидеть запущенные экзекьюторы. Или вы могли заметить, что вашему Hive запросу может понадобиться несколько минут, чтобы инициировать задачи. Скорее всего, причина в том, что изначально драйвер большую часть времени тратит на просмотр всех метаданных файлов/объектов датасета в s3, особенно когда небольших файлов слишком много. Это связано с тем, что именно драйвер выполняет перечисление файлов в датасете, оценивает размер/партиции, а затем распределяет работу между экзекьюторами. Таким образом, слишком большое количество небольших файлов может привести к снижению производительности, а в худшем случае драйвер может поймать исключение из-за нехватки памяти.

            Читать далее
          • Кухонный компьютер Honeywell

              Кухонный компьютер Honeywell описывается во многих местах, особенно во всемирной паутине, как диковинка - футуристический компьютерный продукт, который практически никогда не продавался.

              На самом деле то, что рекламировалось как кухонный компьютер, было разработано как серьезный мини компьютер, для более серьёзных целей. H316, производимый Honeywell как часть семейства машин Series 16, никогда не предназначался для продажи даже как коммерческий продукт. 

              Читать далее
              • +11
              • 5,6k
              • 5
            • SQL на стероидах – 5 кейсов использования dbt + Jinja

                SQL – это нескучно. С современными инструментами возможности языка кратно возросли. Мультитул для моделирования данных dbt, современные колоночные аналитические СУБД позволяют буквально творить с данными чудеса.

                Меня зовут Артемий и я Analytics Engineer в компании Wheely. И сегодня я подготовил небольшой экскурс в реальные и интересные сценарии использования гибридного SQL

                – Операции Pivot и Unpivot для табличных данных

                – Генерирование суррогатного ключа и ключа конкатенации

                – Гибкая фильтрация записей из таблиц-источников

                – Автоматизация экспорта данных из Хранилища в S3

                – Валютные курсы, Continuous Integration, Data Quality

                Читать далее
              • 6 рекомендаций по определению метода __init__

                • Перевод

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

                Читать далее
              • Использование SET STATISTICS TIME ON в SQL Server

                • Перевод

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

                Читать далее
              • Production Ready: 4 вопроса, которые важно задать перед созданием чек-листа

                • Tutorial

                Мы просыпаемся, умываемся, чистим зубы, делаем зарядку, завтракаем и начинаем готовиться к полёту. Мы просыпаемся не потому, что прозвенел будильник, а потому, что прилетел алерт и сегодня ваша очередь дежурства. Выясняется, что в новом приложении задеплоенном в продакшн не были выставлены лимиты на выделение ресурсов в pod’е kubernetes и при росте нагрузки приложение изволило скушать всю память, как следствие к нему пришел ООМ, ну дальше вы знаете. 

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

                Читать далее
                • +11
                • 1,1k
                • 1

              Самое читаемое