Как стать автором
Обновить
1
0
Антон @Vilko

Пользователь

Отправить сообщение

Дрон боевой, полностью твой. Обучаем игровой AI методом перебора стратегий

Время на прочтение13 мин
Количество просмотров14K
В продолжение статьи «Поиск в пространстве стратегий. AI водитель». Я сделал мини-игру жанра «файтинг», где обучаемый AI дерётся с другими, рукописными ботами, и разрабатывает стратегию победы методом проб и ошибок.
В этой игре дерутся два парня вроде такого:


Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии27

Алгоритм машинного обучения Flappy Bird

Время на прочтение4 мин
Количество просмотров48K
Я познакомлю вас с полным туториалом на HTML5 с демо по алгоритму машинного обучения видеоигре Flappy Bird. Цель этого эксперимента — написать игровой контроллер искусственного интеллекта на основе нейросетей и генетического алгоритма.

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

Прочитав теорию, лежащую в основе этого проекта, можно скачать исходный код в конце этого туториала. Весь код написан на HTML5 с использованием фреймворка Phaser. Кроме того, мы использовали библиотеку Synaptic Neural Network для реализации нейросети, чтобы не создавать её с нуля.

Демо


Для начала посмотрите демо, чтобы оценить алгоритм в действии:



Запустить в полноэкранном режиме
Всего голосов 60: ↑58 и ↓2+56
Комментарии26

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

Время на прочтение7 мин
Количество просмотров700K
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →
Всего голосов 212: ↑212 и ↓0+212
Комментарии352

Удобства на улице для MySQL драйвера в Node.js

Время на прочтение12 мин
Количество просмотров60K
Кто пишет на Node.js и использует MySQL, тот непременно знает, что наш дорогой товарищ Felix Geisendörfer три года назад совершил героический и самоотверженный подвиг: в одиночку разработал очень качественный драйвер для подключения к MySQL, нативно реализовав двоичный протокол этой СУБД на JavaScript. Потом к проекту подключились другие уважаемые товарищи, была реализована поддержка пулов соединений, кластеров, транзакций, восстановление при временной утере соединения и т.д. Сейчас драйвер является самым развитым, хорошо проработанным и активно поддерживаемым из того, что мы имеем в открытых репозитариях npm и github. Удивительно даже, что при хорошо проработанной низкоуровневой реализации, все удобства, которые предоставляет это драйвер для прикладного разработчика, сводятся к одному методу query. Для меня лично, этого очень мало, ну привык дедушка к удобствам для возврата скалярных значений, строк и столбцов в массивы, интроспекции структур БД. Так что, с удовольствием делюсь этими наработками с вами, мои дорогие Хабравчане, но предупреждаю, что все удобства будут на улице. Есть конечно вариант тесной интеграции с драйвером, но FelixGe желает оставить драйвер исключительно низкоуровневым, поэтому я остановился на варианте внешней библиотеки с добавлением к драйверу через примеси. В виде примесей, удобства попали и в платформу Impress, а так же, опубликованы как патч к драйверу. О функционале и вариантах использования далее.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии26

Безопасность прошивок на примере подсистемы Intel Management Engine

Время на прочтение10 мин
Количество просмотров101K


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

Встречайте – подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.

Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии47

Как включить Intel AMT, если производитель это «забыл»

Время на прочтение6 мин
Количество просмотров68K

В мои руки попал уже второй ноутбук поддерживающий Intel AMT, т.е. технологию удалённого управления на уровне железа, но по какой-то причине заблокированной производителем. Попробуем исправить этот маленький недостаток.

Читать дальше →
Всего голосов 63: ↑61 и ↓2+59
Комментарии40

Декомпозиция blockchain

Время на прочтение2 мин
Количество просмотров16K
В данной статье будет рассмотрена максимально простая модель, описывающая сущность блокчейна. Специфика хранимой в блоках информации не рассматривается, будь то транзакции, умные контракты или что-то еще. То есть блоки просто хранят записи, значения которых зависят от конкретного применения. Такой подход позволит понять принцип работы блокчейна в целом, не затрагивая деталей конкретной реализации.
Читать дальше →
Всего голосов 28: ↑16 и ↓12+4
Комментарии23

Устройство файла UEFI BIOS, часть полуторная: UEFI Platform Initialization

Время на прочтение6 мин
Количество просмотров89K
В первой части этой статьи мы познакомились с форматом UEFI Capsule и Intel Flash Image. Осталось рассмотреть структуру и содержимое EFI Firmware Volume, но для понимания различий между модулями PEI и драйверами DXE начнем с процесса загрузки UEFI, а структуру EFI Firmware Volume отставим на вторую часть.
Читать полуторную часть
Всего голосов 39: ↑37 и ↓2+35
Комментарии11

Ubuntu интегрировали в Windows 10

Время на прочтение2 мин
Количество просмотров401K
Сегодня на конференции Build компания Microsoft расскажет о последних нововведениях, которые сделаны в новом билде Windows 10 Redstone. Незадолго до презентации стало известно, что на конференцию приглашены сотрудники Canonical, и этому есть веская причина.



Дело в том, что Microsoft совместно с Canonical сумели интегрировать операционную систему Ubuntu внутрь Windows 10 (что-то вроде эмулятора).
Читать дальше →
Всего голосов 195: ↑181 и ↓14+167
Комментарии609

Миниатюрный беспилотный мультикоптер QR Ladybird “Букашка”

Время на прочтение5 мин
Количество просмотров134K
image
QR Ladybird от компании Walkera — небольшой квадрокоптер, продается в комплекте “включил и летай”, стоит от $90, включая доставку. Есть комплектация с FPV — к коптеру подвешена камера и передатчик видео, в пульт встроен приемник и экран — можно практиковаться в полетах «от первого лица».
Читать дальше →
Всего голосов 103: ↑100 и ↓3+97
Комментарии80

Как получить и измерить высокоскоростное соединение по TCP

Время на прочтение7 мин
Количество просмотров60K
Надежная передача данных в Интернете осуществляется на базе протокола TCP (Transmission Control Protocol), спецификация к которому была опубликована почти 30 лет назад. Алгоритм TCP (RFC793), позволяет подключенному устройству адаптироваться для работы в сети на скоростях в пределах десятков мегабит в секунду и задержки до 100 секунд. С бурным развитием новых технологий передачи данных, уже через 10 лет после внедрения стало ясно что производительность протокола не будет хватать для более широких каналов.
Читать дальше →
Всего голосов 106: ↑105 и ↓1+104
Комментарии41

Умелец создал действующий лазерный пистолет

Время на прочтение2 мин
Количество просмотров34K


И в отличии от многих подобных девайсов, которые требуют подключения к стационарной электросети и весят при этом чуть не центнер, эта разработка действительно является лазерным пистолетом. Разработчик, Патрик Прибе, назвал свое детище Pulse Laser Gun, которое работает на основе импульсного лазера (собственно, принцип его работы отображен в названии). Пистолет настолько мощный, что свободно прожигает пластик, тонкий металл и пенопласт (ну да, пенопласт — самая непробиваемая штука в мире). Производит впечатление и действие лазера на дерево — участок, на который направлено дуло, вспыхивает и обугливается в доли секунды.

Читать дальше →
Всего голосов 195: ↑185 и ↓10+175
Комментарии259

Обзор мозгокомпьютерного интерфейса Emotiv Epoc

Время на прочтение9 мин
Количество просмотров95K
Вот тут давно сокрушались, что нет героя в отечестве, который бы купил какой-нибудь нейрокомпьютерный интерфейс, помучил бы его на благо сообщества и поделился с окружающими результатами мучений. Собственно есть. Я его купил и попытался использовать. Подробности с картинками под катом.

Читать дальше →
Всего голосов 159: ↑159 и ↓0+159
Комментарии172

Жизнь разработчика (в картинках)

Время на прочтение1 мин
Количество просмотров65K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Всего голосов 884: ↑700 и ↓184+516
Комментарии132

Все технологии туннелирования IPv6 понятным языком

Время на прочтение4 мин
Количество просмотров68K
Ура-ура, появился хаб IPv6!
В этой статье я хотел бы рассмотреть все актуальные способы туннелирования IPv6 через готовую IPv4-инфраструктуру, описанные в RFC 7059. Один из немногих RFC, написанных понятным человеческим языком, кстати.
Вы все еще сомневаетесь, нужен ли вам IPv6?
  • У всех устройств белый IP. Никаких NAT, никаких пробросов портов
  • Выше скорость скачивания торрентов за счет пиров, имеющих IPv6-адрес, но с «серым» IPv4.
  • В некоторых случаях, выше скорость доступа к сайтам (YouTube через IPv6 не тормозит по вечерам)
  • Доступ к сайтам, заблокированным в РФ, имеющим IPv6-адрес (nnm-club, например)
Но это еще не все. Представьте ситуацию, когда у вас сломался DHCP-сервер, а на компьютер в этой сети нужно побыстрее бы зайти. Он не получает IP-адрес, вы не можете на него зайти. Беда. Однако, если у вас был просто включен IPv6 — даже не настроен — то вы можете просто пропинговать магический адрес ff02::1, получить ответ от этого компьютера (т.к. у него в любом случае будет link-local IPv6-адрес!) и зайти на него.

Ну да ладно, перейдем к туннелированию.

6in4
Один из самых старых способов туннелирования, придуманный аж в 1996 году, и до сих пор очень популярный. Такие крупные туннель-брокеры, как Hurricane Electric, gogo6 и SIXXS используют его. Использует протокол 41 (не путайте с портом!) и не работает через NAT. Поддерживается всеми современными ОС из коробки.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии23

HTML5: Web Workers и AJAX

Время на прочтение4 мин
Количество просмотров50K
Все прочнее в среду разработчиков входит HTML5. Важным его достоинством является наличие такой технологии, как web workers, которая позволяет в некоторой степени обеспечить, если не мультипоточность, то ее подобие при выполнении скриптов.

Суть технологии проста — в отдельные файлы выносятся функции, обеспечивающие функционирование AJAX, либо функции обрабатывающие большие массивы информации, которые во время работы уменьшают скорость построения страницы. Таких файлов может быть столько сколько нужно. При выполнении скрипта на стороне браузера создается специальный объект Worker, который и отвечает за вызов необходимых функций. Многие современные браузеры поддерживают данную технологию.
Читать дальше →
Всего голосов 49: ↑42 и ↓7+35
Комментарии56

Используем console на полную

Время на прочтение6 мин
Количество просмотров457K
Метод console.log() — отличный способ вывести отладочную информацию, не мешая пользователю. Но знаете ли Вы, что объект console имеет еще уйму других не менее полезных методов? Очень редко разработчики используют этот функционал, ограничиваясь неблокирующим alert'ом. Что-ж, давайте исправим это положение.

Вкусности console
Всего голосов 172: ↑168 и ↓4+164
Комментарии29

Как мы делали API для социальной сети (REST API для WEB)

Время на прочтение9 мин
Количество просмотров55K
Я в своей работе часто сталкиваюсь с разными новыми концепциями, идеологиями и проектами. В основном из-за того, что участвую в разработке разных больших проектов, в каждом из которых встречаю что-то новое. Сегодня я хочу рассказать о своем опыте с REST API. Идеологии, которую мне как-то раз довелось применить при разработке одной социальной сети.

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

Хочу сразу оговориться: REST для меня — это, в первую очередь, идеология, к которой я отношусь трепетно и нежно. И, если кто-то не готов принять ее такой, какая она есть — не стоит читать дальше эту статью. У программиста всегда есть куча полезных дел, которыми можно заняться, пока приходит понимание необходимости писать узнаваемые интерфейсы и прятать за их простотой логику приложений любой сложности…

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

Теперь давайте по порядку.
Читать дальше →
Всего голосов 61: ↑49 и ↓12+37
Комментарии52

Делаем Hyperboria hotspot. Пособие по ковырянию роутера

Время на прочтение13 мин
Количество просмотров31K
В этой статье я попытаюсь рассказать, как прошить на роутер OpenWrt и установить туда cjdns. По правде говоря, изучение тонкостей этого дела отняло у меня много времени и нервов. В основном потому, что многое в OpenWrt недодокументировано, и приходилось многое искать по форумам и додумывать. Думаю, это как раз тот случай, когда лучшей документацией являются исходники. Так что эту статью я попытаюсь написать такой, какую я хотел бы прочитать в самом начале этого пути.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии16

Беспроводной звук. Часть 1. Препарируем Bluetooth

Время на прочтение20 мин
Количество просмотров316K
Иногда, бывает, натыкаешься на какой-то баг впервые, списываешь все на обстоятельства и забываешь о нем. Затем он повторяется снова и снова, вынуждая тебя приступить к поиску проблем и, по возможности, их устранению. И вот когда ты обнаруживаешь себя в глубокой ночи за анализом дампом/дебагом/чтением_мануалов, то становится понятно, дело на полпути бросать уже нельзя и дело принципа — довести его до конца.

Такая история со мной приключилась в момент обзора с коллегой r3s потребительской беспроводной Bluetooth-акустики Klipsch KMC 3. Я столкнулся с ситуацией, когда «беспроводной» аудиопоток начинал безбожно прерываться, стоило лишь мне расположить источник звука у себя за спиной. Пищи для размышлений мне подкинула другая Bluetooth-аудиосистема, которая в тех же условиях вела себя куда лучше. Такая простая проблема выродилась в нырок с головой во внутренности протокола Bluetooth и детали передачи аудио с его помощью.

Под катом первой части цикла статей мы в легкой и непринужденной форме познакомимся с основными протоколами стека Bluetooth, покопаемся в дампе соединения источника и приемника звука, разберемся в причинах конфликта Bluetooth и Wi-Fi и обнаружим корень моей проблемы — прерывающегося звука.
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии38

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность