• «Половина научных работ по Concurrency — полная чушь!» — интервью с Романом Елизаровым из Devexperts

      Добрый день, это «Без слайдов». В гостях у меня побывал Роман Елизаров aka elizarov, Java Champion, эксперт по Java и многопоточности (а с недавнего времени — еще и по финансовой математике), спикер многочисленных конференций, председатель жюри Северо-Восточного Европейского региона ACM-ICPC, престижнейшей в мире олимпиады по программированию, лектор в ИТМО и, наконец, VP по технологиям в компании Devexperts. В общем, «человек и пароход».

      В разговоре мы затронули следующие темы:
      • что такое финансовая математика и как ее учить;
      • как устроен софт для финансовой индустрии;
      • как в компании Devexperts появилась исследовательская лаборатория по многопоточности;
      • куда развивается Concurrency, и что будет в моде в ближайшее время;
      • как всемирная олимпиада по программированию пришла в Россию.




      Текстовая версия — под катом.
      Читать дальше →
    • Почему я больше не использую MVC-фреймворки

      • Перевод


      Уважаемые хабравчане.

      Поскольку дискуссия вокруг статьи идет весьма активно, Жан-Жак Дюбре (он читает комментарии) решил организовать чаты в gitter.

      Вы можете пообщаться с ним лично в следующих чатах:
      https://gitter.im/jdubray/sam
      https://gitter.im/jdubray/sam-examples
      https://gitter.im/jdubray/sam-architecture

      Также автор статьи разместил примеры кода здесь: https://bitbucket.org/snippets/jdubray/

      По поводу кода он оставил следующий комментарий:
      I don't code for a living, so I am not the best developer, but people can get a sense of how the pattern works and that you can do the exact same thing as React + Redux + Relay with plain JavaScript functions, no need for all these bloated library (and of course you don't need GraphQL).
      Читать дальше →
    • Внезапный диван леопардовой расцветки

        Если вы интересуетесь искусственным интеллектом и прочим распознаванием, то наверняка уже видели эту картинку:


        А если не видели, то это результаты Хинтона и Крижевского по классификации ImageNet-2010 глубокой сверточной сетью

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

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

        Так вот, на самом деле все совершенно не так.
        под катом пятна
      • Интерактивная SVG картограмма с помощью d3.js

        • Tutorial
        Приветствую вас, хаброжители! Сегодня я расскажу вам как сделать интерактивную SVG картограмму при помощи d3js.org, о возможностях этой JavaScript библиотеки в общем, а также придётся немного разобраться в том как и где лучше хранить геоинформацию для веба. В финале мы получим следующее:

        Картограмма
        Начать сие увлекательное путешествие можно под катом.
        Читать дальше →
      • Удачная модель ветвления для Git

        • Перевод
        Перевод статьи Vincent Driessen: A successful Git branching model

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



        В качестве инструмента управления версиями всего исходного кода она использует Git.

        Читать дальше →
      • Прошивка Arduino Pro Mini через Nano

        Не так давно столкнулся с необходимостью использования Arduino Pro Mini в своем проекте и сразу же встал вопрос как заливать в нее скетч. Конечно продаются различные переходники UART при помощи которых этот вопрос снимается быстро, но в тот момент такого переходника не оказалось под рукой.

        Почитав на сайте http://arduino.cc и посабирав информацию на разлинчых форумах, узнал о возможности прошивать Pro Mini при помощи других плат Arduino.
        Подробности
      • Обработка custom-жестов для Leap Motion. Часть 1

        Всем привет!

        На время праздников мне в руки попал сенсор Leap Motion. Довольно давно хотел поработать с ним, но основная работа и бесполезное времяпрепровождение сессия не позволяли.

        Когда-то, лет 10 назад, когда я был школьником и ничем не занимался, я покупал журнал «Игромания», в комплекте с которым поставлялся диск с всякими игровыми интересностями и shareware-софтом. И в этом журнале была рубрика о полезном софте. Одной из программ оказалась Symbol Commander — утилита, позволяющая записывать движения мышью, распознавать записанные движения и при распознавании выполнять действия, назначенные на это движения.

        Сейчас, при развитии бесконтактных сенсоров (Leap Motion, Microsoft Kinect, PrimeSence Carmine) возникла идея повторить подобный функционал для одного из них. Выбор пал на Leap Motion.
        Читать дальше →
      • Интересные видео про Leap Motion

          image

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

          Кстати, для тех, кто пропустил новости — недавно ASUS заключила контракт на поставку устройства с некоторыми из моделей своих компьютеров, а сам Leap станет доступным для пользователей этой весной.

          Для тех же, кто еще не слышал про данное устройство, заметим, что Leap Motion — это контроллер с распознаванием жестов в воздухе. Ближайшим аналогом является Kinect от Microsoft, но устройства трудно поставить на одну ступень — точность распознавания жестов у Leap составляет 0.01 мм, что в сотню раз лучше аналогичного показателя у Kinect. Для получения более подробной информации про устройство добро пожаловать на официальный сайт, видео на котором стоит посмотреть обязательно. На русском были отдельные посты на Хабре (1, 2 и 3).
          Читать дальше →
        • Генетический алгоритм — наглядная реализация

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

          Кратко об алгоритме


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

          Сама суть метода заключается в том, что мы модулируем эволюционный процесс: у нас есть какая-то популяция (набор векторов), которая размножается, на которую воздействуют мутации и производится естественный отбор на основании минимизации целевой функции. Рассмотрим подробнее эти процессы.
          Читать дальше →
        • Генетические алгоритмы в лицах

            Генетические алгоритмы были изобретены в 1950-х годах как результат первых экспериментов по моделированию естественной эволюции на компьютере. С тех пор они используются для решения самых разнообразных оптимизационных задач, где градиентные методы почему-то не подходят. Биологическая составляющая генетических алгоритмов имеет здесь очень упрощенный вид и речь в данном случае идет скорее о следовании общей идее эволюционного отбора, чем полноценному его моделированию. Тем не менее, иногда результаты работы ГА получается интерпретировать в биологическом смысле. В нашей статье мы рассказываем об опыте применения генетических алгоритмов для задачи распознавания лиц с целью получения «регионов важности» лица. Применение этого подхода позволило в среднем на 20% повысить точность распознавания нашей системы распознавания лиц.
            Читать дальше →