DeepMind не остановить: ИИ теперь умеет играть в Quake III Arena

Компания DeepMind, бывшая некогда подразделением корпорации Google, занимается разработкой ИИ (слабой его формы) для различных целей. Сейчас команда DeepMind активно участвует в создании разных форм ИИ, заточенных для игр, как логических, настольных, так и шутеров. Игр много — это и го, и StarCraft, а теперь — и Quake III Arena.

Разработчики заявили в своем блоге о том, что они обучили систему ИИ играть в Quake III Arena примерно так, как это делает человек. То есть компьютерная система научилась адаптироваться к быстро изменяющимся условиям игры, включая переключение уровней и их элементов. Традиционно, при обучении использовалась система с подкреплением.
Читать дальше →
DeepMind не остановить: ИИ теперь умеет играть в Quake III Arena
Source: geektimes

Амплитудная модуляция на пальцах

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

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

Читать дальше →
Амплитудная модуляция на пальцах
Source: geektimes

Специалисты обошли защиту от Spectre в популярных браузерах

Группа исследователей из Aleph Security нашла ряд атак, использующих уязвимость Spectre, которые позволяют обойти средства защиты популярных браузеров. В отчете речь идет о Spectre v1 (CVE-2017-5753) — это разновидность уязвимости Spectre, которую можно эксплуатировать через браузер.

Защита от нее была реализована еще до публикации Aleph Security (V8 — Chome&Chromium, Chrome, Chromium, Firefox, Edge/IE, Safari Webkit), так как исследователи заблаговременно связались с разработчиками. Принципы защиты разнятся от браузера к браузеру, но в основном используются изоляция сайтов (проекты на базе Chromium), снижение точности и добавление большего разброса значений для таймеров performance.now(), и отключение функции SharedArrayBuffer (Firefox, Edge).
Читать дальше →
Специалисты обошли защиту от Spectre в популярных браузерах
Source: geektimes

[Из песочницы] Дейкстра за линейное время

Приветствую всех и особенно тех кто интересуется задачами дискретной математики и теорией графов.

Предыстория

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

Читать дальше →
[Из песочницы] Дейкстра за линейное время
Source: geektimes

Низкоуровневая реализация префиксного дерева trie на PHP

Предисловие

Описанная здесь реализация trie на PHP делает пока слишком жирный словарь, который соответственно довольно долго загружается в память, что нивелирует довольно неплохую скорость её работы. Скорость поиска составляет ~80 тыс. слов в секунду. Словарь сделан из списка лемм словаря opencorpora.org и включает в себя 389844 слова. В несжатом виде словарь весит ~150мб, а сжатый gzip ~6мб. Однако довольно неплохие результаты быстродействия доказывают, что на чистом PHP можно сделать вполне работоспособное префиксное дерево trie.
Читать дальше →
Низкоуровневая реализация префиксного дерева trie на PHP
Source: geektimes

[Перевод] Рефакторинг программы на Go: ускорение в 23 раза

Привет! Меня зовут Марко, я работаю в Badoo в отделе «Платформы». У нас довольно много всего написано на Go, и зачастую это критичные к производительности системы. Именно поэтому сегодня я предлагаю вашему вниманию перевод статьи, которая мне очень понравилась и, я уверен, будет вам очень полезна. Автор пошагово показывает, как он подходил к проблемам производительности и как их решал. В том числе вы познакомитесь с богатым инструментарием, доступным в Go для такой работы. Приятного чтения!

Несколько недель назад я прочитал статью «Хороший код против плохого кода в Go», где автор шаг за шагом демонстрирует рефакторинг реального приложения, решающего реальные бизнес-задачи. Она сфокусирована на превращении «плохого кода» в «хороший код»: более идиоматичный, более понятный, полноценно использующий специфику языка Go. Но автор также заявлял о важности производительности рассматриваемого приложения. Во мне взыграло любопытство: давайте попробуем её ускорить!
Читать дальше →
[Перевод] Рефакторинг программы на Go: ускорение в 23 раза
Source: geektimes

10 причин [не] использовать k8s

Сегодня мы поговорим про Kubernetes, про грабли, которые можно собрать при его практическом использовании, и про наработки, которые помогли автору и которые должны помочь и вам. Постараемся доказать, что без k8s в современном мире никуда. Противникам k8s также предоставим отличные причины, почему не стоит на него переходить. То есть в рассказе мы будем не только защищать Kubernetes, но и ругать его. Отсюда в названии появилось это [не].

Эта статья основана на докладе Ивана Глушкова на конференции DevOops 2017. Последние два места работы Ивана так или иначе были связаны с Kubernetes: и в Postmates, и в Machine Zone он работал в инфракомандах, и Kubernetes они затрагивают очень плотно. Плюс, Иван ведет подкаст DevZen. Дальнейшее изложение будет вестись от лица Ивана.

Читать дальше →
10 причин [не] использовать k8s
Source: geektimes

Как использовать soy, requirejs, backbone js в плагинах для Atlassian Jira

В этой статье разработаем плагин, который будет сохранять настройки плагина в Jira. Мы будем использовать библиотеки soy, requirejs, backbone js для отображения пользовательского интерфейса. Soy, requirejs, backbone js это встроенные в Jira библиотеки.
Читать дальше →
Как использовать soy, requirejs, backbone js в плагинах для Atlassian Jira
Source: geektimes

[Из песочницы] Формула Таппера и реализация алгоритма на Python

Вместо предисловия

Не так давно на просторах интернета узнал о такой замечательной и удивительной копии Вавилонской библиотеки как о формуле Таппера. Вернее, это больше неравенство Таппера, чем формула. Особенность данного неравенства — оно создает собственное же изображение на графике. Просто посмотрите на это чудо!

image
Читать дальше →
[Из песочницы] Формула Таппера и реализация алгоритма на Python
Source: geektimes

Visual Studio Coded UI Tests: теория и практика применения в нашей компании

Picture 2

Автоматизированные тесты пользовательских интерфейсов — тема, к которой настороженно относятся даже опытные разработчики. При этом технология такого тестирования не представляет собой чего-либо экстраординарного, а в случае Visual Studio Coded UI Tests является расширением встроенной системы модульного тестирования Visual Studio Team Test. В этой статье я хочу остановиться как на теме UI-тестирования в общем, так и на нашем частном опыте применения Visual Studio Coded UI Tests в работе над статическим анализатором PVS-Studio.
Читать дальше →
Visual Studio Coded UI Tests: теория и практика применения в нашей компании
Source: geektimes