• История второго места в Mini AI Cup 4: Paper IO

    Меня зовут Волков Игорь. Я работаю в консалтинговой компании на позициях Java разработчика, архитектора, руководителя команды, технического менеджера. Разные роли в зависимости от текущих потребностей проекта. Обратил внимание на конкурсы от mail.ru давно, но активно поучаствовать получилось только на Paper IO.


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


    Читать дальше →
    • +21
    • 4.8k
    • 1
  • Уличная грязь и симуляция движения пешеходов

      С приходом весны и дождей на улице в глаза все чаще бросается одна проблема. Вот эта:



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

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

      Шел я как-то по дорожке и вяло размышлял на тему того, что опять придется или тащиться в обход, или пачкать обувь. С возмущения типа «вот же дураки это проектируют» мысль плавно перетекла на слышанную когда-то байку про некий наукоград, где дорожки во дворах сперва не сделали вовсе, а потом просто заасфальтировали протоптанные людьми тропинки, получив сеть удобных жителям маршрутов. А оттуда мысль перекочевала к идее «а почему бы не сделать то же самое, но на компьютере?». Разработать программу, которая по заданной карте предскажет, где люди будут топтать газоны и где неплохо бы сделать асфальтовое покрытие?

      Под катом — описание алгоритма и пара примеров его работы для реальных питерских дворов.
      Читать дальше →
    • О PBR на пальцах


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

        Читать дальше →
      • Проблема с обновлением MikroTik RouterOS на роутерах с 16MB FLASH



          Недавно ребята из MikroTik накосячили (опять?) и мой любимый «hAP lite» перестал обновляться. С версии 6.45.1 на 6.45.2 не обновлялся, писал, что недостаточно места. Косяк заметили и в версии 6.45.3 для архитектуры SMIPS уменьшили размер пакета, выкинув из него «лишнее» (smips — reduced RouterOS main package size (disabled LTE modem, dot1x and SwOS support)). Теперь пакет скачивается, места ему хватает, но… После перезагрузки версия остаётся 6.45.1 а в логе видим сообщение «no enough space for upgrade». Факир был пьян и фокус не удался.
          Окей, гугл, mikrotik no enough space for upgrade
        • TCP против UDP или будущее сетевых протоколов

            Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

            По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

            Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

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


            Осторожно, под катом 99 иллюстраций и схем и все важные.
            Читать дальше →
          • Разбор: как на самом деле защищены деньги при торговле на бирже



              Изображение: Unsplash

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

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

              Сегодня мы ответим на ряд популярных вопросов о том, как именно реализуется защита средств биржевых инвесторов.
              Читать дальше →
            • Еще одно мнение о разнице между bin, sbin, usr/bin, usr/sbin

              Недавно я обнаружил вот такую статью: Разница между bin, sbin, usr/bin, usr/sbin. Хотелось бы поделиться своим взглядом на стандарт.

              /bin


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

              Там ожидается присутствие таких команд:

              cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, false, hostname, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount, uname.

              Можно сделать симлинки на /usr, но хотя во времена systemd /usr на отдельном устройстве не встречается, его еще можно встретить на встраиваемой системе, светофоре, кофемолке и PDP-11 обслуживающем важный прибор в одной из лабораторий Академии Наук.

              /sbin


              Утилиты, используемые для системного администрирования (и другие команды только для root), /sbin содержит двоичные файлы, необходимые для загрузки, восстановления, восстановления и/или восстановления системы в дополнение к двоичным файлам в /bin. Программы, выполняемые после того, как /usr монтируется (когда проблем нет), обычно помещаются в /usr/sbin. Локально установленные программы системного администрирования должны быть помещены в /usr/local/sbin.

              Ожидаются:

              fastboot, fasthalt, fdisk, fsck, getty, halt, ifconfig, init, mkfs, mkswap, reboot, route, swapon, swapoff, update.

              Один из способов защиты системы от шаловливых рук юзеров — это запрет запуска этих утилит кому-попало, установкой атрибута x.
              К тому же, замена /bin и /sbin на копии из архива (одинакового для всех однотипных систем) является быстрым способом починки систем без пакетного менеджера.
              Читать дальше →
            • FFmpeg практика аппаратного декодирования DXVA2

                Привет! Эта статья продолжение моей статьи FFmpeg начало работы Visual Studio. Здесь мы приступим к аппаратному декодированию RTSP-потока FULL HD. Заранее скажу, что с данной задачей легко справится даже Intel ATOM Z8350.

                Задача: аппаратное декодирование и запись до 4-х кадров в оперативную память для последующей параллельной обработки (четырьмя ядрами процессора) с IP-камеры RTSP h.264. Обработанные кадры отображаю с помощью функций WinAPI. Как итог мы получим быстродействующую систему для компьютерной обработки RTSP-потока в параллельном режиме. Далее можно подключать алгоритмы Компьютерного зрения для обработки кадров Real Time.

                image

                Вступление


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

                DirectX Video Acceleration (DXVA) — это API для использования аппаратного ускорения для ускорения обработки видео силами графических процессоров (GPU). DXVA 2.0 позволяет перенаправлять на GPU большее количество операций, включая захват видео и операции обработки видео.
                Читать дальше →
              • Откуда этот конфиг? [Debian/Ubuntu]

                  Цель этого поста: показать технику отладки в debian/ubuntu, связанную с "поиском первоисточника" в системном конфигурационном файле.


                  Тестовый пример: после долгих издевательств над tar.gz копией установленной ОС и после её восстановления и установки апдейтов мы получаем сообщение:


                  update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
                  W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
                  W: but no matching swap device is available.
                  I: The initramfs will attempt to resume from /dev/dm-1
                  I: (/dev/mapper/foobar-swap)
                  I: Set the RESUME variable to override this.

                  Цель: понять, откуда это значение (U1563304817I0) пришло и как его правильно поменять. Это первый попавшийся пример, не особо интересный сам по себе, но удобный, чтобы показать практические методы работы с Linux.


                  Шаг номер 1: Откуда пришёл RESUME?

                  Читать дальше →
                • «Мобильный контент» бесплатно, без смс и регистраций. Подробности мошенничества от Мегафона

                    UPD 07: Телеграм чат для обсуждения операторов сотовой связи tg.guru/opsosru

                    После того как я опубликовал статью «Как Мегафон спалился на мобильных подписках», я попытался получить комментарий от Мегафона.


                    Ответа до сих пор нет.

                    Но вместо этого я получил зависающий интернет. То есть в какой-то момент трафик перестаёт идти и ютубчик перестаёт играть. Так же с мобильного Мегафона совсем перестал открываться moy-m-portal.ru. На Теле2, МТС и Билайне всё стабильно. То есть Мегафон решил просто мне отомстить…

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

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


                    Читать дальше →
                  • Почему ['1', '7', '11'].map(parseInt) возвращает [1, NaN, 3] в Javascript?

                    • Translation


                    Javascript — странный. Не верите? Ну попробуйте тогда преобразовать массив строк в целые числа с помощью map и parseInt. Запустите консоль (F12 на Chrome), вставьте код ниже и нажмите Enter


                    ['1', '7', '11'].map(parseInt);

                    Вместо ожидаемого массива целых чисел [1, 7, 11] мы получаем [1, NaN, 3]. Но как так? Чтобы узнать в чём тут дело, сначала нам придётся поговорить о некоторых базовых концепциях Javascript. Если вам нужен TL;DR, пролистывайте статью до самого конца.

                    Читать дальше →
                  • Мошенники и ЭЦП — всё очень плохо


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

                      Читать дальше →
                    • Популярные заблуждения про радиационную стойкость микросхем

                        Примерно в каждой второй теме на Хабре, касающейся космонавтики или электроники, всплывает тема радиационной стойкости. Через новости об отечественной космонавтике красной нитью проходит тематика импортозамещения радстойкой элементной базы, но в то же самое время Элон Маск использует дешевые обычные чипы и гордится этим. А изральтяне в «Берешите» использовали радстойкий процессор и тоже гордятся этим. Да и в принципе микроэлектронная отрасль в России живет по большей части за счет госзаказа с соответствующими требованиями. Наблюдение за регулярными спорами насчет того, как надо правильно строить спутники, показывает, что подготовка участников обычно невысока, а их аргументация отягощена стереотипами, случайно услышанными вырванными из контекста фактами и знаниями, устаревшими много лет назад. Я подумал, что читать это больше нет сил, поэтому, дорогие аналитики, устраивайтесь поудобнее на своих диванах, и я начну небольшой (на самом деле большой) рассказ о самых популярных заблуждениях на тему того, что такое радиационная стойкость интегральных микросхем.


                        Рисунок 1. Непременная красивая картинка про космическое излучение и хрупкую Землю.
                        Читать дальше →
                      • Сложные системы. Выход на критический уровень

                        • Translation
                        Если вы потратили какое-то время на размышления о сложных системах, то наверняка понимаете важность сетей. Сети правят нашим миром. От химических реакций внутри клетки, до сети взаимоотношений в экосистеме, торговых и политических сетей, которые формируют ход истории.

                        Или рассмотрим эту статью, которую вы читаете. Вероятно, вы нашли её в социальной сети, скачали из компьютерной сети и в настоящее время расшифровываете смысл с помощью своей нейронной сети.

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

                        Это наша тема на сегодня: как, насколько хаотично всё движется и распространяется. Некоторые примеры, чтобы подогреть аппетит:

                        • Инфекционные заболевания, переходящие от носителя к носителю внутри популяции.
                        • Мемы, распространяющиеся по графу фоловеров в социальных сетях.
                        • Лесной пожар.
                        • Идеи и практики, проникающие в культуру.
                        • Каскад нейтронов в обогащённом уране.
                        Читать дальше →
                        • +37
                        • 7.4k
                        • 6
                      • Н.М.Д. (Не Моё Дело)

                        • Translation
                        В последние несколько лет передо мной жёстко встал вопрос расстановки приоритетов. Я видела, что многие друзья и коллеги тоже страдали от этого: как понять, какую проблему решать, а какую игнорировать? Где проходит черта?

                        Установка


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

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

                        И всё же, несмотря на эти сильные стороны, часто вы чувствуете разочарование. Вы видите вокруг так много проблем, а когда указываете на них, люди иногда злятся. Они плохо воспринимают ваши отзывы. Они не хотят вашей помощи в исправлении ситуации. Коллеги игнорируют замечания, менеджер не слушает, менеджер вашего менеджера сочувственно кивает, а затем продолжает ничего не делать.
                        Читать дальше →
                        • +16
                        • 5.3k
                        • 5
                      • Витамин Д. Пить или не пить, вот в чем вопрос. (Или рассказ о том, как я сдавал анализ, который мне не назначали)

                          Предыстория


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



                          Читать дальше →
                        • Поиск похожих изображений, разбор одного алгоритма



                            Пришлось мне недавно решать задачку по оптимизации поиска дубликатов изображений.

                            Существующее решение работает на довольно известной библиотеке, написанной на Python, — Image Match, основанной на работе «AN IMAGE SIGNATURE FOR ANY KIND OF IMAGE» за авторством H. Chi Wong, Marshall Bern и David Goldberg.

                            По ряду причин было принято решение переписать всё на Kotlin, заодно отказавшись от хранения и поиска в ElasticSearch, который требует заметно больше ресурсов, как железных, так и человеческих на поддержку и администрирование, в пользу поиска в локальном in-memory кэше.

                            Для понимания того, как оно работает, пришлось с головой погружаться в «эталонный» код на Python, так как оригинальная работа порой не совсем очевидна, а в паре мест заставляет вспомнить мем «как нарисовать сову». Собственно, результатами этого изучения я и хочу поделиться, заодно рассказав про некоторые оптимизации, как по объёму данных, так и по скорости поиска. Может, кому пригодится.
                            Читать дальше →
                          • Как мы боремся с копированием контента, или первая adversarial attack в проде

                              Привет.


                              Вы знали, что платформы для размещения объявлений часто копируют контент у конкурентов, чтобы увеличить количество объявлений у себя? Они делают это так: обзванивают продавцов и предлагают им разместиться на своей платформе. А иногда и вовсе копируют объявления без разрешения пользователей. Авито — популярная площадка, и мы часто сталкиваемся с такой недобросовестной конкуренцией. О том, как мы боремся с этим явлением, читайте под катом.


                              Читать дальше →
                            • В этой статье слишком много воды

                                «Мы начинаем разработку новой игры, и нам нужна классная вода. Такую сможешь?»


                                , — cпросили меня. «Да не вопрос! Конечно, смогу», — ответил я, но голос предательски задрожал. «А, еще и на Unity?», — и мне стало понятно, что впереди очень много работы.
                                Читать дальше →
                              • «Невзламываемый» eyeDisk защищён сканом радужной оболочки глаза, но передаёт пароль в открытом виде


                                  USB-накопитель eyeDisk с биометрической защитой, который «невозможно взломать»

                                  Самые современные методы биометрической защиты не всегда означают повышенную безопасность. Провал разработчиков eyeDisk на самом деле показывает более общие тенденции. К сожалению, в IT-отрасли случается так, что под впечатлением «блестящих» новых технологий люди забывают об основах безопасности.

                                  Разработчики рекламировали eyeDisk как «невзламываемый» USB-накопитель — и успешно оформили на «Кикстартере» более $21 тыс. предварительных заказов.
                                  Читать дальше →