• 10 лет в IT с диагнозом шизофрения, советы по выживанию

    Мой диагноз параноидная шизофрения. Заболел я через год после окончания университета. Вот уже 10 лет я работаю в IT, сейчас моя должность — старший инженер-программист. Хочу рассказать, с какими проблемами может столкнуться человек с серьезным психическим заболеванием при построении карьеры.

    Это практическая статья. В ней я почти не буду касаться моих симптомов и описывать свой опыт. Таких статей и без меня не мало, и на хабре они тоже есть. Есть целое издательство, которое специализируется на книгах о шизофреническом опыте.
    Читать дальше →
  • Камеры глубины — тихая революция (когда роботы будут видеть) Часть 2



      В первой части этого текста мы рассмотрели камеры глубины на основе структурного света и измерения round-trip задержки света, в которых в основном применяется инфракрасная подсветка. Они отлично работают в помещениях на расстояниях от 10 сантиметров до 10 метров, а главное — весьма дешевы. Отсюда массовая волна их текущего применения в смартфонах. Но… Как только мы выходим на улицу, солнце даже сквозь облака засвечивает инфракрасную подсветку и их работа резко ухудшается. 

      Как говорит Стив Бланк (по другому поводу, впрочем): «Хотите успеха — выходите из здания». Ниже речь пойдет про камеры глубины, работающие вне помещений. Сегодня эту тему сильно двигают автономные автомобили, но, как мы увидим, не только.


      Источник: Innoviz Envisions Mass Produced Self-Driving Cars With Solid State LiDAR

      Итак, камеры глубины, т.е. устройства снимающие видео, в каждом пикселе которого расстояние до объекта сцены, работающие при солнечном свете!

      Кому интересно — добро пожаловать под кат!
      Читать дальше →
    • Камеры глубины — тихая революция (когда роботы будут видеть) Часть 1




        Недавно я описывал, благодаря чему роботы завтра начнут НАМНОГО лучше соображать (пост про аппаратное ускорение нейросетей). Сегодня разберем, почему роботы скоро будут НАМНОГО лучше видеть. В ряде ситуаций намного лучше человека.

        Речь пойдет про камеры глубины, которые снимают видео, в каждом пикселе которого хранится не цвет, а расстояние до объекта в этой точке. Такие камеры существуют уже больше 20 лет, однако в последние годы скорость их развития выросла многократно и уже можно говорить про революцию. Причем многовекторную. Бурное развитие идет по следующим направлениям:
        • Structured Light камеры, или камеры структурного света, когда есть проектор (часто инфракрасный) и камера, снимающая структурный свет проектора;
        • Time of Flight камеры, или камеры, основанные на измерении задержки отраженного света;
        • Depth from Stereo камеры — классическое и, пожалуй, наиболее известное направление построения глубины из стерео;
        • Light Field Camera — они же камеры светового поля или пленоптические камеры, про которые был отдельный подробный пост;
        • И, наконец, камеры, основанные на Lidar-технологиях, особенно свежие Solid State Lidars, которые работают без отказа примерно в 100 раз дольше обычных лидаров и выдают привычную прямоугольную картинку.

        Кому интересно, как это будет выглядеть, а также сравнение разных подходов и их текущее и завтрашнее применение — добро пожаловать под кат!
        Читать дальше →
      • Deep (Learning+Random) Forest и разбор статей

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


          Читать дальше →
          • +20
          • 24,8k
          • 4
        • Пионеры новых технологий: Вадим Арцев рассказал, как перестал быть незрячим



            В пятницу 28 июня первые пользователи технологии vOICe vision встретились со слабовидящими людьми, чтобы рассказать о новом способе восприятия пространства, которому они научились благодаря сенсорному замещению.

            Трое молодых людей первыми в России овладели навыками Звукового Зрения и смогли вновь видеть мир, оставаясь слепыми. Вадим, Руслан и Ислам – так зовут основателей и первых членов «Клуба Звукового Зрения». У них разные взгляды на жизнь и разные истории. Но то, что их объединяет заметно каждому.

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

            Технология vOICe vision разработана с одной целью – научить незрячих людей видеть. И участники клуба уверены, что это возможно. В разной степени каждый из них уже научился это делать.
            Читать дальше →
          • Стажёр Вася и его истории об идемпотентности API

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


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


              image

              Читать дальше →
            • Умножение матриц: эффективная реализация шаг за шагом



                Введение


                Умножение матриц — это один из базовых алгоритмов, который широко применяется в различных численных методах, и в частности в алгоритмах машинного обучения. Многие реализации прямого и обратного распространения сигнала в сверточных слоях неронной сети базируются на этой операции. Так порой до 90-95% всего времени, затрачиваемого на машинное обучение, приходится именно на эту операцию. Почему так происходит? Ответ кроется в очень эффективной реализации этого алгоритма для процессоров, графических ускорителей (а в последнее время и специальных ускорителей матричного умножения). Матричное умножение — один из немногих алгоритмов, которые позволяет эффективно задействовать все вычислительные ресурсы современных процессоров и графических ускорителей. Поэтому не удивительно, что многие алгоритмы стараются свести к матричному умножению — дополнительная расходы, связанные с подготовкой данных, как правило с лихвой окупаются общим ускорением алгоритмов.

                Так как реализован алгоритм матричного умножения? Хотя сейчас существуют множество реализаций данного алгоритма, в том числе и в открытых исходных кодах. Но к сожалению, код данных реализаций (большей частью на ассемблере) весьма сложен. Существует хорошая англоязычная статья, подробно описывающая эти алгоритмы. К моему удивлению, я не обнаружил аналогов на Хабре. Как по мне, этого повода вполне достаточно, чтобы написать собственную статью. С целью ограничить объем изложения, я ограничился описанием однопоточного алгоритма для обычных процессоров. Тема многопоточности и алгоритмов для графических ускорителей явно заслуживает отдельной статьи.

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

                  Небольшое вступление

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

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

                  Большое вступление

                  Некоторое время назад мне захотелось прочитать цикл Дугласа Адамса «Автостопом по галактике». Я попробовал почитать несколько переводов и не один меня не устроил. Поэтому было принято решение — читать на английском! Найти эти книги в оригинале в наших книжных магазинах довольно сложно. А если и есть, то только первая часть цикла. В электронном виде найти несколько проще. Но я предпочитаю читать с бумаги (читалку на E-ink куплю обязательно — очень нравятся), поэтому книги я распечатываю.

                  Первые две книги выглядели так:
                  image

                  Я их прочитал с огромным удовольствием, но выглядели они не очень хорошо. И я решил, что «Life, the Universe, and Everything» нужно делать книжкой.

                  Процесс с картинками и комментариями под катом. Осторожно, действительно много картинок.
                  Читать дальше →
                • Введение в разработку типичного Open Source решения

                    11 сентября в Санкт-Петербурге прошел Java Meetup, полностью посвященный Apache Ignite. Огромное спасибо организаторам за приглашение и возможность рассказать об Open Source от лица разработчика этого самого Open Source. Учитывая позитивную реакцию зала, я решил поделиться презентацией и с теми, кто не смог присутствовать на митапе.

                    Под катом вас ожидает текстовая версия презентации, полная субъективного восприятия Open Source, как позитивного, так и негативного.


                    Читать дальше →
                    • +21
                    • 5,7k
                    • 6
                  • 11 JavaScript-библиотек для визуализации данных, о которых стоит знать в 2018 году

                    • Перевод
                    Мы живём во времена взрывного роста объёмов данных, генерируемых и потребляемых человечеством. Практически в каждом из разрабатываемых сегодня приложений данные либо используются где-то внутри них, либо визуализируются. Программисты, используя данные, стремятся сделать работу с их программами максимально комфортной.

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

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

                    image

                    Сегодня мы представляем вашему вниманию перевод материала, в котором рассмотрены опенсорсные JavaScript-библиотеки для визуализации данных.
                    Читать дальше →
                  • Как обойти SMS-идентификацию при подключении к публичным Wi-Fi сетям?

                    В 2014 году начали свое действие постановления правительства РФ №758 №801, обязывающие владельцев публичных WiFi сетей настроить на роутерах идентификацию пользователей через паспортные данные, sms или портал гос. услуг. Нежелание владельцев кафе тратиться за Captive portal'ы поспособствовало некоторым провайдерам в распространении своих точек доступа с платной sms-авторизацией. У меня возникло желание проверить, можно ли подобную sms-авторизацию обойти.

                    image
                    Читать дальше →
                  • Цикл статей: построение защищённого NAS, либо домашнего мини-сервера


                    Статьи цикла:


                    1. Обзор материалов и литературы по NAS. По предложениям пользователей ссылки на материалы будут сведены в отдельную статью.
                    2. Выбор железа. Описан один из вариантов выбора железа и дан краткий обзор рынка домашних и офисных NAS систем.
                    3. Установка ОС, на которой будет строиться NAS. В отдельной статье описано дополнение, позволяющее отказаться ото всех файловых систем, кроме ZFS.
                    4. Проектирование поддерживающей инфраструктуры, которая будет лежать в основе всех сервисов NAS.
                    5. Реализация поддерживающей инфраструктуры.
                    6. Механизм аварийной удалённой разблокировки. Требуется для того, чтобы разблокировать систему, не имея к ней физического доступа.
                    7. Повышение защищённости NAS. Исправление ошибок, допущенных в предыдущих статьях и описание Hardening процесса.
                    8. Система контроля версий на базе Git. Установка Gitlab в контейнере.
                    9. Система резервного копирования. От регламента до установки ПО, где в качестве примера используется UrBackup.
                    10. Персональное облако. Обеспечивает хранение персональных файлов пользователя, обмен файлами между пользователями, а также интеграцию различных сервисов между собой.
                    11. Сквозная аутентификация контейнеров.
                    12. Управление файлами.
                    13. Библиотека.
                    14. Мультимедийная система 1: музыка.
                    15. Мультимедийная система 2: медиа сервер.
                    16. Фронтенд. Интерфейс, позволяющий быстро обращаться к сервисам.
                    17. Заметки про управление контейнерами.
                    Читать дальше →
                  • Вы и Брэд Питт похожи на 99%

                      Завтра в отпуск


                      Мы в отделе аналитики онлайн-кинотеатра Okko любим как можно сильнее автоматизировать подсчёты сборов фильмов Александра Невского, а в освободившееся время учиться новому и реализовывать классные штуки, которые почему-то обычно выливаются в ботов для Телеграма. К примеру, перед началом чемпионата мира по футболу 2018 мы выкатили в рабочий чат бота, который собирал ставки на распределение итоговых мест, а после финала подсчитал результаты по заранее придуманной метрике и определил победителей. Хорватию в четвёрку не поставил никто.


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

                      Уронить запад
                    • Learn OpenGL. Урок 5.6 – Parallax Mapping

                      • Перевод
                      • Tutorial
                      OGL3

                      Parallax Mapping


                      Техника текстурирования Parallax Mapping по своему эффекту несколько схожа с Normal Mapping’ом, но основана на другом принципе. Схожесть в том, что, как и Normal Mapping, данная техника значительно увеличивает визуальную сложность и детализацию поверхности с нанесенной текстурой заодно создавая правдоподобную иллюзия наличия на поверхности перепадов высот. Parallax Mapping отлично работает в связке с Normal Mapping для создания весьма достоверных результатов: описываемая техника передает эффект рельефа гораздо лучше Normal Mapping, а Normal Mapping дополняет его для правдоподобной имитации динамического освещения. Parallax Mapping вряд ли можно считать техникой, прямо относящейся к методам имитации освещения, но все же я выбрал этот раздел для его рассмотрения, поскольку метод является логическим развитием идей Normal Mapping. Также отмечу, что для разбора этой статьи требуется хорошее понимание алгоритма работы Normal Mapping, в особенности понятия касательного пространства или tangent space.
                      Читать дальше →
                      • +19
                      • 10,6k
                      • 9
                    • Руководство по фоновой работе в Android. Часть 5: Корутины в Котлине

                      • Перевод

                      Остров Котлин

                      Предыдущие тексты этой серии: про AsyncTask, про Loaders, про Executors и EventBus, про RxJava.

                      Итак, этот час настал. Это статья, ради которой была написана вся серия: объяснение, как новый подход работает «под капотом». Если вы пока не знаете и того, как им пользоваться, вот для начала полезные ссылки:


                      А освоившись с корутинами, вы можете задаться вопросом, что позволило Kotlin предоставить эту возможность и как она работает. Прошу заметить, что здесь речь пойдёт только о стадии компиляции: про исполнение можно написать отдельную статью.
                      Читать дальше →
                      • +24
                      • 10,6k
                      • 5
                    • Как нас анализируют в кинотеатрах… и не только

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

                        Читать дальше →
                      • Облысение: Теория и практика лечения, ч.1 «Дигидротестостерон мой, враг мой»

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


                        image

                        В первом посте будет описание самой болезни (как бы странно это не звучало, но большинство людей, даже столкнувшихся с АГА, не понимают природу болезни), то с чего она начинается, и собственно методы лечения основанные на блокировке ДГТ и андрогенных рецепторов, несмотря на то что подобные подход довольно сильно устарел за последние 10 лет, он все еще является более чем эффективным.
                        Читать дальше →
                      • Как выбрать инструмент для прототипирования в 2018 году?

                          Здравствуй, Хабр! Меня зовут Саша Отважный, я работаю команде Digital Business Platform Сбербанка и Сбертеха, и занимаюсь дизайном мобильных приложений и веб-проектов. Большая часть моей работы состоит из сборки прототипов разной степени детализации для разных целей. Новые инструменты и сервисы для дизайна и прототипирования выходят и обновляются каждый день. Я провёл полное и глубокое исследование инструментов, представленных сегодня на рынке, и помогу в них разобраться.

                          Я разбил список на три большие группы по функциональности и разберу каждую по отдельности:


                          Читать дальше →
                        • Оптимальная игра в 2048 с помощью марковского процесса принятия решений

                          • Перевод

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

                          В этом посте мы используем математический аппарат под названием «марковский процесс принятия решений» для нахождения доказуемо оптимальных стратегий игры 2048 для полей размером 2x2 и 3x3, а также на доске 4x4 вплоть до тайла 64. Например, вот оптимальный игрок в игру 2x2 до тайла 32:

                          GIF

                          Случайное начальное число (random seed) определяет случайную последовательность тайлов, добавляемых игрой на поле. «Стратегия» игрока задаётся таблицей, называемой алгоритмом (policy). Она сообщает нам, в каком направлении нужно сдвигать тайлы в любой возможной конфигурации поля. В этом посте мы рассмотрим способ создания алгоритма, оптимального в том смысле, что он максимизирует шансы игрока на получение тайла 32.

                          Оказывается, что в игре 2x2 до тайла 32 очень сложно выиграть — даже если играть оптимально, игрок выигрывает только примерно в 8% случаев, то есть игра оказывается не особо интересной. Качественно игры 2x2 сильно отличаются от игр 4x4, но они всё равно полезны для знакомства с основными принципами.

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

                          Однако мы можем найти оптимальный алгоритм для укороченной игры 4x4 до тайла 64, и, к счастью, мы увидим, что оптимальная игра на полях 3x3 качественно выглядит похожей на некоторые успешные стратегии полной игры.

                          Код (исследовательского качества), на котором основана эта статья, выложен в открытый доступ.
                          Читать дальше →
                          • +30
                          • 14,6k
                          • 9
                        • Tarantool: когда на сервис оповещения миллиона пользователей нужно 500 строк кода


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


                            На написание данной статьи меня натолкнула эта статья.


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

                            Читать дальше →