• Микросервисы (Microservices)

    От переводчика: некоторые скорее всего уже читали этот титанический труд от Мартина Фаулера и его коллеги Джеймса Льюиса, но я все же решил сделать перевод этой статьи. Тренд микросервисов набирает обороты в мире enterprise разработки, и эта статья является ценнейшим источником знаний, по сути выжимкой существующего опыта работы с ними.

    Термин «Microservice Architecture» получил распространение в последние несколько лет как описание способа дизайна приложений в виде набора независимо развертываемых сервисов. В то время как нет точного описания этого архитектурного стиля, существует некий общий набор характеристик: организация сервисов вокруг бизнес-потребностей, автоматическое развертывание, перенос логики от шины сообщений к приемникам (endpoints) и децентрализованный контроль над языками и данными.
    Читать дальше →
  • Просто о микросервисах

      Вступление


      Чуть ли не каждый второй, кто впервые сталкивается с MSA (Micro Service Architecture), на первых порах восклицает: «Да я эти микросервисы еще …надцать лет назад». Отчасти они правы. И я тоже был из этой самой половины, и не понимал — почему такой шум?



      В самом деле! Ведь MSA — это тоже про разработку софта. Какие здесь могут быть революции? Все методики знакомы. В некоторых местах можно даже удивиться: «А разве бывает по-другому»? Фанаты Agile и DevOps тоже скажут, что это всё наше, родное.

      Но всё же прошу вас набраться терпения и продолжить читать дальше.
      Читать дальше →
    • Как объяснить бабушке, что такое Agile за 15 минут с картинками

      • Translation
      «Любое дело всегда длится дольше, чем ожидается, даже если учесть закон Хофштадтера.»
      — закон Хофштадтера

      image

      Самый просматриваемый ролик на YouTube по теме agile. 744 625 просмотров на момент публикации данной статьи. Легкий стиль изложения, картинки и всего 15 минут — лучшее что я видел. TED отдыхает.
      Читать дальше →
    • Структура данных B-дерево

      • Translation
      Всем привет! Мы запустили новый набор на курс «Алгоритмы для разработчиков» и сегодня хотим поделиться интересным переводом, подготовленным для студентов данного курса.



      В деревьях поиска, таких как двоичное дерево поиска, AVL дерево, красно-чёрное дерево и т.п. каждый узел содержит только одно значение (ключ) и максимум двое потомков. Однако есть особый тип дерева поиска, который называется B-дерево (произносится как Би-дерево). В нем узел содержит более одного значения (ключа) и более двух потомков. B-дерево было разработано в 1972 году Байером и МакКрейтом и называлось Сбалансированное по высоте дерево поиска порядка m (Height Balanced m-way Search Tree). Свое современное название B-дерево получило позже.
      Читать дальше →
      • +7
      • 8.4k
      • 5
    • Открытый курс машинного обучения. Тема 6. Построение и отбор признаков

        Сообщество Open Data Science приветствует участников курса!


        В рамках курса мы уже познакомились с несколькими ключевыми алгоритмами машинного обучения. Однако перед тем как переходить к более навороченным алгоритмам и подходам, хочется сделать шаг в сторону и поговорить о подготовке данных для обучения модели. Известный принцип garbage in – garbage out на 100% применим к любой задаче машинного обучения; любой опытный аналитик может вспомнить примеры из практики, когда простая модель, обученная на качественно подготовленных данных, показала себя лучше хитроумного ансамбля, построенного на недостаточно чистых данных.


        UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.



        Читать дальше →
      • Неофициальный пост про ребрендинг Хабра + Конкурс

          Сегодня Deniskin сообщил пользователям Хабра о начале ребрендинга, а я решил сделать то же самое, но с тёплыми ламповыми воспоминаниями и конкурсом. Как говорится, добро пожаловать под кат, %username%.

          Читать дальше →
        • Списки с пропусками: вероятностная альтернатива сбалансированным деревьям

          • Translation
          image

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

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

          Балансировать структуру данных вероятностно проще, чем явно обеспечивать баланс. Для многих задач списки пропуска это более естественное представление данных по сравнению с деревьями. Алгоритмы получаются более простыми для реализации и, на практике, более быстрыми по сравнению со сбалансированными деревьями. Кроме того, списки с пропусками очень эффективно используют память. Они могут быть реализованы так, чтобы на один элемент приходился в среднем примерно 1.33 указатель (или даже меньше) и не требуют хранения для каждого элемента дополнительной информации о балансе или приоритете.
          Читать дальше →
          • +61
          • 27.4k
          • 9
        • LSTM – сети долгой краткосрочной памяти

          • Translation

          Рекуррентные нейронные сети


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

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

          Решить эту проблемы помогают рекуррентые нейронные сети (Recurrent Neural Networks, RNN). Это сети, содержащие обратные связи и позволяющие сохранять информацию.
          Читать дальше →
          • +37
          • 76.1k
          • 2
        • Введение в архитектуры нейронных сетей



            Григорий Сапунов (Intento)


            Меня зовут Григорий Сапунов, я СТО компании Intento. Занимаюсь я нейросетями довольно давно и machine learning’ом, в частности, занимался построением нейросетевых распознавателей дорожных знаков и номеров. Участвую в проекте по нейросетевой стилизации изображений, помогаю многим компаниям.

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

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

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

            После этого рассмотрим 2 сравнительно продвинутых темы и закончим небольшим обзором фреймворков и библиотек для работы с нейросетями.
            Читать дальше →
            • +48
            • 100k
            • 2
          • Зачем нужны скрытые игровые механики

            • Translation


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

            Формирование этих ощущений — вот в чем суть геймдизайна. Каждый твист или игровая механика помогает создавать эмоции. Большинство из них очевидны для игрока, но иногда приходится хитрить. Разработчики скрывают определенные механики, чтобы подарить игроку лучший экспириенс. Они есть, работают в фоне, но игрока об этом никогда не информируют.
            Читать дальше →
          • Гармонические колебания

              На хабре было несколько статей по преобразованию Фурье и о всяких красивостях типа Цифровой Обработки Сигналов (ЦОС), но неискушённому пользователю совершенно не понятно, зачем всё это нужно и где, а главное как это применить.


              АЧХ шума.

              Лично мне после прочтения этих статей (например, этой ) не стало понятно, что это и зачем оно нужно в реальной жизни, хотя было интересно и красиво.
              Хочется не просто поглядеть красивые картинки, а так сказать, ощутить нутром, что и как работает. И я приведу конкретный пример с генерацией и обработкой звуковых файлов. Можно будет и послушать звук, и поглядеть его спектр, и понять, почему это так.
              Статья не будет интересна тем, кто владеет теорией функций комплексной переменной, ЦОС и прочими страшными темами. Она скорее для любопытствующих, школьников, студентов и им сочувствующих :).
              Читать дальше →
            • Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах

                Комикс XKCD про 14 конкурирующих стандартов: Надпись: СИТУАЦИЯ: есть 14 конкурирующих стандартов. Гик: 14?! Абсурд! Нам необходимо разработать один универсальный стандарт, на все случаи жизни. Спутница гика: Да! Надпись: Скоро: СИТУАЦИЯ: Есть 15 конкурирующих стандартов.

                This article is also available in English

                Из-за массового выпуска смартфонов без аудиоразъема 3.5 мм беспроводные Bluetooth-наушники для многих стали основным способом прослушивания музыки и общения в режиме гарнитуры.
                Производители беспроводных устройств не всегда пишут подробные характеристики товара, а статьи о Bluetooth-аудио в интернете противоречивы, местами некорректны, не рассказывают о всех особенностях, и часто копируют одну и ту же не соответствующую действительности информацию.
                Попробуем разобраться с протоколом, возможностями Bluetooth-стеков ОС, наушников и колонок, Bluetooth-кодеков для музыки и речи, выясним, что влияет на качество передаваемого звука и задержку, научимся собирать и декодировать информацию о поддерживаемых кодеках и других возможностях устройств.

                TL;DR:
                • SBC — нормальный кодек
                • У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
                • aptX не настолько хорош, как о нём говорят рекламные анонсы
                • LDAC — маркетинговое фуфло
                • Качество звука в режиме разговора всё ещё низкое
                • В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.

                Читать дальше →
              • Магия тензорной алгебры: Часть 1 — что такое тензор и для чего он нужен?

                  Содержание


                  1. Что такое тензор и для чего он нужен?
                  2. Векторные и тензорные операции. Ранги тензоров
                  3. Криволинейные координаты
                  4. Динамика точки в тензорном изложении
                  5. Действия над тензорами и некоторые другие теоретические вопросы
                  6. Кинематика свободного твердого тела. Природа угловой скорости
                  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
                  8. О свертках тензора Леви-Чивиты
                  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
                  10. Получаем вектор угловой скорости. Работаем над недочетами
                  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
                  12. Параметры Родрига-Гамильтона в кинематике твердого тела
                  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
                  14. Нестандартное введение в динамику твердого тела
                  15. Движение несвободного твердого тела
                  16. Свойства тензора инерции твердого тела
                  17. Зарисовка о гайке Джанибекова
                  18. Математическое моделирование эффекта Джанибекова


                  Введение



                  Это было очень давно, когда я учился классе в десятом. Среди довольно скудного в научном плане фонда районной библиотеки мне попалась книга — Угаров В. А. «Специальная теория относительности». Эта тема интересовала меня в то время, но информации школьных учебников и справочников было явно недостаточно.



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



                  Читать дальше →
                • Как работает реляционная БД

                  • Translation
                  • Tutorial
                  Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

                  На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
                  Читать дальше →
                • 10 фич для ускорения анализа данных в Python

                  • Translation

                  Источник

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


                  1. Профилирование Pandas Dataframe


                  Профилирование помогает лучше понять наши данные, и пакет Pandas Profiling создан как раз для этого. Библиотека даст возможность просто и быстро выполнить разведочный анализ Pandas Dataframe. Обычно в таких случаях в качестве первого шага используются функции df.describe() и df.info(), но они сообщают мало и плохо справляются с большими наборами данных. Одна строка кода с использованием Pandas Profiling, напротив, выведет много информации в интерактивном HTML-отчете.


                  Вот что вычисляется для заданного набора данных:


                  Статистика выводимая Pandas Profiling.

                  Установка


                  pip install pandas-profiling
                  или
                  conda install -c anaconda pandas-profiling

                  Использование


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

                  Читать дальше →
                  • +14
                  • 10.4k
                  • 6
                • Немного о клеточных автоматах


                    На хабре уже много-много-много раз писали про игру «Жизнь». Совсем недавно была удивительная статья Жизнь на плоскости Лобачевского. Но игра «Жизнь» является частным случаем т. н. клеточных автоматов. Существует много других клеточных автоматов совсем не похожих на игру «Жизнь», но тем не менее очень интересных. Про некоторые из них и хочется рассказать здесь.

                    Начнём с того, что рассмотрим ряд клеток, в которых, кроме одной, находятся нули:

                    ... 0  1  0  0  0  0  0  0 ...

                    Рассмотри следующее правило, заменяем число в клетке на сумму этого числа и соседа слева. Получим следующую серию состояний:

                    ... 0  1  0  0  0  0  0  0 ...
                    ... 0  1  1  0  0  0  0  0 ...
                    ... 0  1  2  1  0  0  0  0 ...
                    ... 0  1  3  3  1  0  0  0 ...
                    ... 0  1  4  6  4  1  0  0 ...
                    ... 0  1  5 10 10  5  1  0 ...
                    ... 0  1  6 15 20 15  6  1 ...
                    

                    Не сложно увидеть, что это — треугольник Паскаля. А теперь вместо обычного сложения будем использовать сложение по модулю два. Известно (и даже недавно рассказывалось в хабрастатье Треугольник Серпинского и треугольник Паскаля), что получится дискретный аналог треугольника Серпинского:

                    ... 0  1  0  0  0  0  0  0 ...
                    ... 0  1  1  0  0  0  0  0 ...
                    ... 0  1  0  1  0  0  0  0 ...
                    ... 0  1  1  1  1  0  0  0 ...
                    ... 0  1  0  0  0  1  0  0 ...
                    ... 0  1  1  0  0  1  1  0 ...
                    ... 0  1  0  1  0  1  0  1 ...
                    

                    Интересно? Читаем дальше!
                    Читать дальше →
                  • Простейшие клеточные автоматы и их практическое применение

                      Этот мир просто охренеть какой сложный, каждый день поражаюсь.

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

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

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

                      image

                      Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?

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

                      Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
                      Хватит воды, давай к сути
                    • Алексей Савватеев и теория игр: «Какова вероятность, что в ближайшие пять лет будет скинута атомная бомба?»

                        image

                        Расшифровка видеозаписи лекции.

                        Теория игр — дисциплина, которая прочно зависла между математикой и социальными науками. Одним канатом к математике, другим канатом — к социальным наукам, прочно прикреплена.

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

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

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

                        • Теория игр в Талмуде.
                        • Теория игр в русской классике.
                        • Телеигра или задача о парковочных местах.
                        • Люксембург в Евросоюзе.
                        • Синдзо Абэ и Северная Корея
                        • Парадокс Брайеса в Метрогородке (Москва)
                        • Два парадокса Дональда Трампа
                        • Рациональное безумие (снова Северная Корея)

                        (В конце поста — опрос про бомбу.)
                        Читать дальше →
                      • [ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

                        • Translation


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

                        Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
                        Читать дальше →
                      • Как легко понять логистическую регрессию

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

                        image
                        Читать дальше →
                        • +13
                        • 94k
                        • 2