• StereoPi — наша железка для изучения компьютерного зрения, дронов и роботов

      Всем привет!

      Сегодня я бы хотел рассказать вам о нашей новой железке на базе Raspberry Pi Compute Module, предназначенной для изучения компьютерного зрения и установки на роботов и дронов. По сути это «умная» стереокамера — она поддерживает работу с двумя камерами одновременно, имеет в качестве «сердца» настоящую малину и, самое важное – работает со стоковой версией Raspbian.
      Вот как выглядит собранное решение, с установленными двумя камерами и Pi Compute модулем.

      image
      Читать дальше →
    • Поработать в Швеции

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

        Читать дальше →
      • Как я писал предложение к стандарту С++

          Это будет история младшего разработчика из Яндекс.Паспорта о появлении предложения в стандарт С++, разработанного в соавторстве с Антоном antoshkka Полухиным. Как часто бывает в жизни, что-то новое началось с боли, а точнее — с желания её прекратить.


          Жила-была библиотека у меня на поддержке. Всё у неё было хорошо: собиралась под Linux, работала, не падала. Однажды пришли люди с просьбой (требованием) собрать её под Windows. Почему бы и нет? Но с первого раза не получилось. Корнем зла оказалась рукописная криптография, которая в какой-то момент умножала два 64-битных целых числа. Для сохранения результата такого умножения потребуется число на 128 бит, и в библиотеке использовался тип __int128. Он прекрасен: имеет естественный интерфейс, поддерживается несколькими компиляторами (gcc, clang), работает без аллокации памяти, но главное — он есть.

          Читать дальше →
        • Kaggle: Британские спутниковые снимки. Как мы взяли третье место


            Сразу оговорюсь, что данный текст — это не сухая выжимка основных идей с красивыми графиками и обилием технических терминов (такой текст называется научной статьей и я его обязательно напишу, но потом, когда нам заплатят призовые $20000, а то, не дай бог, начнутся разговоры про лицензию, авторские права и прочее.) (UPD: https://arxiv.org/abs/1706.06169). К моему сожалению, пока устаканиваются все детали, мы не можем поделиться кодом, который написали под эту задачу, так как хотим получить деньги. Как всё утрясётся — обязательно займемся этим вопросом. (UPD: https://github.com/ternaus/kaggle_dstl_submission)

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

            • Tutorial
            Статья изложенная ниже — рассматривает лишь один из аспектов касающихся уплаты налогов при работе с Upwork. В данный момент существует более полное руководство — Легальный вывод средств с Upwork в РФ.



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

            Прореагировав на шквал возмущений, на неопределенный срок Upwork вернулся к старому документообороту. Напряженное ожидание, когда же Upwork прекратит работу со старыми договорами закончилось неожиданно — 3 июля 2016 года были внесены изменения в Налоговый кодекс, вступившие в силу с 1 января 2017 года. Отныне закону до лампочки, какие договора используются — НДС теперь надо платить всем. Подробнее проблема описана в статье Налоговый cуслик — 2.

            Развернувшиеся на тостере дебаты о том, как ко всему этому относиться, еще продолжаются. Но выпущенное 3 дня назад Эльбой обновление, в том что платить НДС все-таки надо (хотя бы с точки зрения закона) убедило почти всех.

            image
            Читать дальше →
          • Еще про внедрение таймзон в долгоживущий проект

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

                logo

                Введение


                Здравствуйте, уважаемые читатели. Сегодня на повестке дня у нас небольшое тестирование —
                первых ≈100 тысяч по популярности сайтов в интернете (ранжирование на основе статистики посещаемости с Alexa Rank). Стоит отметить, что оное тестирование будет достаточно узконаправленным, а именно — проверим каждый сайт на предмет существования и открытости Git-репозитория без аутентификации прямо из веба по url-адресу искомого. Напомню, что такая брешь в безопасности зачастую позволяет прочитать актуальные исходные коды на сервере, получить чувствительную информацию (файлы конфигов, структуру системы и т.д.) и, в последствии, получить определенного рода права на сервере. Рай для различного рода негодяев, да и только :)
                Совершенно аналогичную проверку я делал для себя порядка 100 дней назад, и сегодня мы сделаем это ещё раз, посмотрим что изменилось и что с этим делать.
                Разумеется, использовать будем список сайтов, полученный в рамках первого тестирования.
                Для заинтересовавшихся милости прошу под кат.
                Читать дальше →
              • Особенности протокола в IO-играх

                  Допустим, вы хотите создать IO-игру. Что-то похожее на agar.io, slither.io и тысячи их.

                  Что такое IO -игры
                  Такое название закрепилось за браузерными, клиент-серверными многопользовательскими играми в реальном времени.

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

                  Родоначальником жанра является agar.io

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

                  Сейчас я так не думаю.
                  Расскажу почему
                • Самая простая в мире lock-free хеш-таблица

                  • Translation
                  image

                  Безблокировочная хеш-таблица — это медаль о двух сторонах. В некоторых случаях они позволяют достигать такой производительности, которой не получить другими способами. С другой стороны, они довольно сложны.
                  Читать дальше →
                  • +28
                  • 17.6k
                  • 4
                • Переход от Google Analytics к Firebase

                  Статья о впечатлениях перехода с Google Analytics (GA) на Firebase в контексте аналитики для мобильных приложений, а именно игр.

                  Итак, последовательно по пунктам:

                  1. Мотив перехода

                  Google активно продвигает Firebase, как замену GA и в своих апдейтах для Android Studio Firebase становиться неотъемлемой частью среды. Если переходить на последнее SDK, то там по умолчанию есть Firebase (как и Play Services а также и последняя Admob с новейшими функциями нативной и ревардер рекламы), а GA как отдельного пакета уже нет.

                  Таким образом, обновить старый Андроид проект, например, на последнее рекламное SDK(Admob) от Google без отказа от GA уже не получится.

                  Вопрос изучения Firebase стал ребром.
                  Читать дальше →
                  • +19
                  • 15.6k
                  • 8
                • UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

                    UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

                    В первой части статьи перечислю кучу костылей UNIX, и вообще разных недостатков. Во второй — про «философию UNIX». Статья написана наскоро, «полировать» дальше не хочу, скажите спасибо, что написал. Поэтому многие факты привожу без ссылок.

                    Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
                    Читать дальше →
                  • Home Assistant или еще один «мозг» для проекта типа «Умный Дом»

                    Добрый день, уважаемый читатель. На днях довелось мне поиграться с многим уже известной игрушкой от Google – Google Home. Штука хорошая — обзор ее я делать конечно не буду. В чулане совершенно случайно завалялись Raspberry PI 3 (RPi), Arduino Mega и еще им подобная мелочь, которую захотелось подключить к Google Home (GH) с целью голосового управления. Простого API у GH нет, но есть возможность с помощью стороннего сервиса организовать голосовое управление системой на RPi + Arduino с задержкой команд в несколько секунд.

                    Читая буржуйские форумы (справедливости ради, нужно отметить, человек я повернутый на автоматизации и IoT), обратил внимание на доселе мне неизвестное нечто, что называют Home Assistant (HASS), эту систему умельцы-то и прикручивают к GH.

                    В двух словах о самой платформе:

                    Система написана на Python, последний релиз был 29 января, текущая версия: 0.37.0

                    Поддерживаемые ОС:

                    • Windows 10
                    • Mac OS X
                    • Ubuntu 14.04
                    • Raspbian (Raspberry PI)
                    • iOS App – beta

                    Поддерживаемые компоненты: 545 шт., включая почти все TV/AV receivers, Broadlink, ZigBee, iCloud, Yandex TTS и многое, многое другое.
                    Читать дальше →
                  • Эффективный расчёт области видимости и линии взгляда в играх

                    • Translation
                    image

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

                    image

                    Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
                    Читать дальше →
                  • Автоматизация публикации приложения в Google Play — прямо из Android Studio

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



                      Но я с радостью готов сообщить, что это — не правда. Публиковать приложение прямо из Android Studio можно! Более того, можно делать это вообще без Android Studio на вашем CI — так как делаться это будет с помощью обычного Gradle task.
                      Читать дальше →
                    • Реализация классификации текста свёрточной сетью на keras

                        Речь, как ни странно, пойдёт о использующем свёрточную сеть классификаторе текстов (векторизация отдельных слов — это уже другой вопрос). Код, тестовые данные и примеры их применения — на bitbucket (уперся в ограничения размера от github и предложение применить Git Large File Storage (LFS), пока не осилил предлагаемое решение).

                        Наборы данных


                        Использованы конвертированные наборы: reuters — 22000 записей, watson-й — 530 записей, и ещё 1 watson-й — 50 записей. Кстати, не отказался бы от подкинутого в комменты/ЛС (но лучше таки в комменты) набора текстов на русском.

                        Устройство сети


                        За основу взята одна реализация описанной тут сети. Код использованной реализации на github.

                        В моём случае — на входе сети находятся векторы слов (использована gensim-я реализация word2vec). Структура сети изображена ниже:


                        Вкратце:

                        • Текст представляется как матрица вида word_count x word_vector_size. Векторы отдельных слов — от word2vec, о котором можно почитать, например, в этом посте. Так как заранее мне неизвестно, какой текст подсунет пользователь — беру длину 2 * N, где N — число векторов в длиннейшем тексте обучающей выборки. Да, ткнул пальцев в небо.
                        • Матрица обрабатывается свёрточными участками сети (на выходе получаем преобразованные признаки слова)
                        • Выделенные признаки обрабатываются полносвязным участком сети

                        Стоп слова отфильтровываю предварительно (на reuter-м dataset-е это не сказывалось, но в меньших по объему наборах — оказало влияние). Об этом ниже.
                        Читать дальше →
                      • Direct3D vs OpenGL: история противостояния

                        По сей день в Интернете можно встретить споры о том, какой же графический API лучше: Direct3D или OpenGL? Несмотря на свой религиозный характер, такие словесные баталии приносят полезный результат в виде неплохих исторических обзоров развития аппаратно-ускоренной графики.

                        image

                        Целью данного поста является перевод одного из таких экскурсов в историю, написанного Джейсоном МакКессоном (Jason L. McKesson) в ответ на вопрос «Почему разработчики игр предпочитают Windows». Этот текст вряд ли отвечает на поставленный вопрос, но историю развития и противостояния двух самых популярных графических API он описывает очень красочно и довольно подробно, поэтому в переводе я сохранил авторскую разметку. Текст написан в середине 2011 года и охватывает промежуток времени, начинающийся незадолго до появления Direct3D и до момента написания. Автор оригинального текста является опытным разработчиком игр, активным участником StackOverflow и создателем обширного учебника о современном программировании 3D-графики. Итак, предоставим слово Джейсону.
                        Читать дальше →
                      • Основы Serverless приложений в среде Amazon Web Services

                        ServerlessДень добрый, дорогие Хабра-пользователи!

                        Сегодня хотелось бы поговорить об активно набирающей обороты технологии в мире ИТ — об одной из облачных технологий, а именно – о бессерверной архитектуре приложений (БСА – Serverless). В последнее время облачные технологии набирают все большую популярность. Это происходит по простой причине – лёгкой доступности, относительной дешевизны и отсутствию начального капитала – как знаний для поддержания и развёртывания инфраструктуры, так и денежного характера.


                        Технология Serverless становится все более и более популярна, но почему-то очень мало освещается в ИТ индустрии, в отличие от других облачных технологий, таких как IaaS, DBaaS, PaaS.


                        Читать дальше →
                      • It’s the future

                        • Translation

                        Этот пост просто шутка и не пытается выставить инструменты, упомянутые здесь, в дурном свете. Я использую их постоянно, они великолепны, и я рекомендую их использовать. По мотивам It's the future @ CircleCI Blog


                        — Эй, я бы хотел научиться писать крутые веб-приложения. Слышал, у тебя есть опыт.


                        — Да, я как раз занимаюсь фронтендом, юзаю пару тулз.


                        — Круто. Я щас делаю простое приложение — обычный TODO-лист, используя HTML, CSS и JavaScript, и планирую заюзать JQuery. Это норм?


                        — Не-не-не. Это олдскул. Джиквери мёртв — никто не использует его теперь! Тебе нужен React. Это будущее.


                        — Окей, лады. А что это?


                        Читать дальше →
                      • Немного про кино или как делать интерактивные визуализации в python


                          Введение


                          В этой заметке я хочу рассказать о том, как можно достаточно легко строить интерактивные графики в Jupyter Notebook'e с помощью библиотеки plotly. Более того, для их построения не нужно поднимать свой сервер и писать код на javascript. Еще один большой плюс предлагаемого подхода — визуализации будут работать и в NBViewer'e, т.е. можно будет легко поделиться своими результатами с коллегами. Вот, например, мой код для этой заметки.


                          Для примеров я взяла скаченные в апреле данные о фильмах (год выпуска, оценки на КиноПоиске и IMDb, жанры и т.д.). Я выгрузила данные по всем фильмам, у которых было хотя бы 100 оценок — всего 36417 фильмов. Про то, как скачать и распарсить данные КиноПоиска, я рассказывала в предыдущем посте.


                          Читать дальше →
                          • +53
                          • 44.2k
                          • 8