• Сбербанк или туда и обратно



    ГЛАВА 1. Нежданные гости


    Все началось в то злополучное утро, когда Project Manager сообщил, что сроки реализации проекта должны быть быстро и решительно сокращены на месяц. Точнее говоря проект должен быть готов через 4 дня. Нет, наш PO не зверь, и ничуть не похож на сову (разве что чуть-чуть на ворона), просто так сложилось. Ну раз надо, так надо, тем более что команде (а я являюсь ведущим разработчиком команды «С») было обещано что-то вкусное. На часах и календаре был четверг, 11:00, к понедельнику проект должен быть готов.

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

      Эта статья — продолжение серии материалов про электронный микроскоп в гараже. На всякий случай вот ссылка на первый выпуск.

      Наш проект подошёл к тому этапу, когда нужен детектор (электронов, вторичных или упруго-отражённых). Но прежде расскажу вам, зачем именно этот детектор нужен и как учёные пришли к его современной конструкции.



      Для наглядности сделаем это в виде таймлайна.
      Читать дальше →
    • Интересные алгоритмы кластеризации, часть вторая: DBSCAN

        Часть первая — Affinity Propagation
        Часть вторая — DBSCAN
        Часть третья — кластеризация временных рядов
        Часть четвёртая — Self-Organizing Maps (SOM)
        Часть пятая — Growing Neural Gas (GNG)

        Углубимся ещё немного в малохоженные дебри Data Science. Сегодня в очереди на препарацию алгоритм кластеризации DBSCAN. Прошу под кат людей, которые сталкивались или собираются столкнуться с кластеризацией данных, в которых встречаются сгустки произвольной формы — сегодня ваш арсенал пополнится отличным инструментом.


        Читать дальше →
        • +24
        • 33.9k
        • 4
      • Порождение и выбор моделей машинного обучения. Лекция в Яндексе

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


          Под катом — лекция ведущего научного сотрудника РАН, доктора наук и главного редактора журнала «Машинное обучение и анализ данных» Вадима Стрижова, а также большинство слайдов.

          Читать дальше →
          • +48
          • 19.5k
          • 1
        • Дайджест Университета ИТМО: #3 Нейронные сети: интересные статьи из журналов Университета ИТМО



            Сегодня в дайджесте (первый выпуск и второй выпуск) вас ждет подборка научных статьей о нейронных сетях, вышедших в разные годы в журналах Университета ИТМО: начиная со свойств и характеристик нейронных сетей разных типов, возможностей улучшения качества и ускорения работы нейронных сетей при решении тех или иных задач, моделирования различных процессов человеческого мозга и заканчивая различными практическими вариантами применения нейросетей.
            Читать дальше →
          • Давайте соберем клеща-мозгоеда под микроскопом или focus-stacking фотографий из консоли

            • Tutorial


            Надеюсь, данный пост не станет причиной ночных кошмаров у особо чувствительных хабрачитателей. В этом посте я постараюсь рассказать о простом способе увеличения ГРИП. Это весьма актуальная проблема для тех, кто работает с микроскопом и занимается макрофотографией. Суть проблемы в том, что на больших увеличениях размытие удаленных от точки фокуса предметов становится большой проблемой. Это в традиционной портретной съемке размытие фона позволяет подчеркнуть объект. В научной микрофотографии это чаще всего негативный эффект. Радует, что есть методика focus-stacking, которая позволяет сшить в единую резкую картинку стопку фотографий с разной точкой фокусировки. Но хватит рассуждать об абстрактном. Внесите клеща в студию!
            Читать дальше →
          • Киберконтрразведка. Как Palantir может «сноуденов» ловить

              Вместе с компанией Edison продолжаем расследование возможностей системы Palantir.


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

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

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

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

              Тридцатого уничтожить.
              (За помощь в подготовке статьи отдельное спасибо Алексею Ворсину, российскому эксперту по системе Palantir)
              Читать дальше →
            • Нейрореволюция в головах и сёлах

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



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

                Я работаю в области связанной с анализом изображений. Это одна из областей которую новые идеи затронули сильнее всего. Одна из таких идей — свёрточные нейронные сети. Четыре года назад с их помощью впервые начали выигрывать конкурсы по обработке изображений. Победы не остались незамеченными. Нейронными сетями, до тех пор стоящими на вторых ролях, стали заниматься и пользоваться десятки тысяч последователей. В результате, полтора-два года назад начался бум, породивший множество идей, алгоритмов, статей.

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

                Кто лишится в ближайшие лет десять работы, а у кого будут новые перспективные вакансии.
                Читать дальше →
              • Некоторые алгоритмы под капотом мозга

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

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

                • Translation
                • Tutorial
                В статье подробно рассказано о самомодифицирующимся коде (СМК), и о том, как его использовать в своих программах. Примеры написаны на C++ с использованием встроенного ассемблера. Ещё я расскажу о том, как выполнять код на стеке, что является существенным козырем при написании и выполнении СМК.



                1. Вступление


                Ну что ж, поехали. Статья обещает быть длинной, так как мне хочется написать её такой, чтобы у вас не возникло никаких вопросов. На тему СМК уже существует миллион статей, но здесь представлено моё видение проблемы – после сотен часов написания СМК… Я попытаюсь впихнуть все свои труды сюда. Всё, хватайте томатный сок (или что вы там предпочитаете пить), делайте музыку громче и готовьтесь узнать, как избавить своё приложение от начинающих кракеров! Попутно, я расскажу вам о памяти Windows и некоторых других вещах, о которых вы даже и не подозреваете.
                Читать дальше →
              • Новость позвала в дорогу: сверхбыстрый энергоэффективный оптический сопроцессор для больших данных



                  На прошлой неделе Phys.org разразился новостью: стартап LightOn предложил альтернативу центральным процессорам (CPU) и графическим процессорам (GPU) для решения задач анализа больших данных. Авторский коллектив базируется в университете Пьера и Марии Кюри, Сорбонне и всех прочих правильных местах во Франции. Решение основано на оптической аналоговой обработке данных «со скоростью света». Звучит интересно. Поскольку в пресс-релизе не было никаких научно-технических подробностей, пришлось поискать информацию в патентных базах данных и на сайтах университетов. Результаты расследования под катом.
                  Читать дальше →
                • Колумбия и Южная Америка глазами инженера

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


                    Площадь Че в национальном университете UNAL, первое мая.
                    Читать дальше →
                  • Как мы строили квест в реальности

                      Нет нужды лишний раз объяснять, что такое квесты в реальности и с чем их едят. Тем более, эта тема уже не раз освещалась на Хабре (и Гиктаймс) [1] [2] [3]. Расскажу, как мы строили «Космическую одиссею» — самый технически сложный и, наверное, самый высокобюджетный из квестов «Клаустрофобии».



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

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



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

                        Сегодня мы представляем вашему вниманию подборку сред программирования и инструментов для создания торговых роботов.
                        Читать дальше →
                      • Переписываем с java на C++ на платформе Android

                        Хочу с вами поделиться опытом переписывания с java на C++ на платформе Android и тем, что в результате получилось.

                        Для своего маленького домашнего проекта был использован алгоритм поиска лиц Виола-Джонса, java-исходники с моделью были взяты отсюда code.google.com/p/jviolajones с небольшой модификацией — были добавлены два класса: Point и Rectangle. Уточню почему не стал использовать OpenCV под Android — для его работы необходимо поставить отдельно приложение-библиотеку, что в моем случае будет весьма неудобно, и опыты показали его падение без предупреждения, разбираться с этим долго не стал, также и с поиском других библиотек, и решил взять простейшую готовую реализацию.

                        Быстродействие алгоритма показало плачевные результаты, на фотографии размером 400 на 300 на моем стареньком разбитом GT-I9300I — 54 секунды, на avd (виртуальном устройстве) и то дольше — 250 секунд.
                        Читать дальше →
                      • Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

                          Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



                          Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

                          Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

                          Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

                          Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

                          Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
                          Читать дальше →
                        • Динамические метаобъекты (part 1, изучение)

                          Предисловие


                          Надеюсь, всем, кто использовал в разработке Qt, было интересно узнать, как же устроена метаинформация и что же происходит внутри этого прекрасного фреймворка? Об этом и будет эта запись — мы заглянем внутрь исходников и попробуем написать реализацию динамического метаобъекта (но не в этой записи). Метаобъекта, в котором можно создавать сигнали и слоты в realtime.
                          Читать дальше →
                          • +14
                          • 7.2k
                          • 5
                        • Летняя суперкомпьютерная академия в МГУ им. Ломоносова

                          На «Хабрахабре» регулярно появляются статьи о разнообразных летних школах, посвященных вопросам теории и практики информационных технологий. Летние школы организуют и проводят ведущие вузы и IT-компании, — дело, вне всякого сомнения, важное и нужное, — но о Летней суперкомпьютерной академии (далее — ЛСА), которая проводится МГУ имени Ломоносова несколько лет, развернутых отчетов на таком ресурсе как Geektimes я не читал.

                          Существующие материалы о ЛСА, размещенные в Интернете, большей частью дублируют материал официального сайта Академии и содержат «сухую» информацию. Живых отзывов и анализа образовательных программ, которые так ищут будущие участники, мне встречать не приходилось и данную статью можно рассматривать в качестве попытки восполнить этот пробел.
                          Читать дальше →
                        • Лекции Техносферы. 2 семестр. Методы распределенной обработки больших объемов данных в Hadoop

                          • Tutorial
                          Предлагаем вашему вниманию новый курс лекций Техносферы. Он представляет собой введение в Hadoop, фокусируясь на проектировании и реализации распределенных алгоритмов, которые могут применяться в различных сферах: обработка текстов, графов, связанных данных и т.п. Также рассматриваются различные компоненты платформы Hadoop и программные модели. Целью курса является знакомство студентов со стеком технологий Hadoop, применяемых для хранения, доступа и обработки больших объемов данных. Преподаватели курса: Алексей Романенко, Михаил Фирулик, Николай Анохин.

                          Лекция 1. Введение в Big Data и MapReduce


                          Что такое «большие данные». История возникновения этого явления. Необходимые знания и навыки для работы с большими данными. Что такое Hadoop, где он применяется. Что такое «облачные вычисления», история возникновения и развития технологии. Web 2.0. Вычисление как услуга (utility computing). Виртуализация. Инфраструктура как сервис (IaaS). Вопросы параллелизма. Управление множеством воркеров. Дата-центры и масштабируемость. Типичные задачи Big Data. MapReduce: что это такое, примеры. Распределённая файловая система. Google File System. HDFS как клон GFS, его архитектура.


                          Читать дальше →
                          • +34
                          • 31.5k
                          • 3