habrahabr.ru

    Лучшие публикации за сутки

  • Марсианский зонд InSight успешно работает на Красной планете


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

    Наблюдения стали возможными благодаря специально сконструированному сейсмосметру. Он защищен от пыли, ветра и вибраций при помощи крышки, которая помогает обеспечить работоспособность модуля в течение длительного времени.
    Читать дальше → Read more »
  • Удобный БЭМ


    Приветствую. В этой статье я расскажу, как можно изменить БЭМ, сохранив лучшие его черты и избавившись от худших.
    Читать дальше → Read more »
  • В MIT научились передавать звук с помощью лазера
    Группа исследователей из MIT представила новый метод передачи направленного звука при помощи лазера. Под катом, рассказываем, на чем построена эта технология.

    Читать дальше → Read more »
  • Kонсенсус в Exonum: как он работает
    ExonumTM — это наш открытый фреймворк для создания приватных блокчейнов. Сегодня мы расскажем, как работает его алгоритм консенсуса.

    Читать дальше → Read more »
  • [Перевод] Что не так с Raspberry Pi


    Raspberry Pi — невероятно популярное устройство, известное своей доступностью, универсальностью, возможностями и активным сообществом. Легко найти фанатские сайты и статьи, но большинство людей не знают о его слабых местах, пока сами не пострадают от них и не поищут информацию на форумах.

    Постараюсь рассказать о некоторых вопросах, с которыми я столкнулся лично, а также о некоторых типичных проблемах, которые чаще всего появятся у людей, ничего не подозревающих об этом. И, наконец, почему я не рекомендую Pi для некоторых приложений, в частности, NAS-услуг, таких как NextCloudPi и Open Media Vault. Надеюсь, это сэкономит мне время, чтобы не повторять всё это на форумах.
    Читать дальше → Read more »
  • Ускоряем неускоряемое или знакомимся с SIMD
    Есть класс задач, которые нельзя ускорить за счёт оптимизации алгоритмов, а ускорить надо. В этой практически тупиковой ситуации к нам на помощь приходят разработчики процессоров, которые сделали команды, позволяющие выполнять операции на большим количеством данных за одну операцию. В случае x86 процессоров это инструкции сделанные в расширениях MMX, SSE, SSE2, SSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, AVX512.

    В качестве «подопытного кролика» я взял следующую задачу:
    Есть неупорядоченный массив arr с числами типа uint16_t. Необходимо найти количество вхождений числа v в массив arr.
    Классическое решение, работающее за линейное время выглядит так:

    int64_t cnt = 0;
    for (int i = 0; i < ARR_SIZE; ++i)
        if (arr[i] == v)
            ++cnt;
    

    В таком виде бенчмарк показывает следующие результаты:

    ------------------------------------------------------------
    Benchmark                     Time           CPU Iterations
    ------------------------------------------------------------
    BM_Count                   2084 ns       2084 ns     333079
    

    Под катом я покажу как его ускорить в 5+ раз.
    Читать дальше → Read more »
  • [Перевод] Как семеро моддеров Mount and Blade создали игровую студию

    Игра Mount and Blade: Warband — удобная игровая площадка для любителей моддинга, позволяющая перенести игроков в Средиземье, Вестерос или далёкую-далёкую галактику «Звёздных войн». Однако антуражем самого важного мода для неё стала не выдуманная реальность, а Британия седьмого века. Brytenwalda — это фанатский проект испанского моддера Альберто «Ibidil» Фуэнтевилья де Диего, превратившего Тёмные века Британии в мод, потом в DLC, а затем создавшего инди-студию. Когда Альберто только начинал экспериментировать в свободное время с файлами игры, он ещё не догадывался, как далеко заведут его решимость и любовь к игре.

    Ibidil — творческий человек, он всегда рассказывает истории; в сообществе моддеров он завоевал признание благодаря работе над Iberia: Total War, созданной в 2005 году тотальной конверсией Rome: Total War. Ibidil взялся за работу, когда сообщество испанских геймеров решило, что их нация отражена в игре со слишком большими историческими неточностями; Iberia: Total War разрабатывалась в том числе и затем, чтобы устранить эти ошибки. Ibidil занимался документацией к моду, а также редактировал боевую систему и организовывал работу создателей моделей и текстур, что дало ему большой опыт на будущее.

    Как и сама Британия, Ibidil перешёл от Рима к Тёмным векам. К этому его привело чтение материалов о падении Римской империи и о постримской Британии. «Это был мир с чётко заданной динамикой, состоящий из маленьких воинственных королевств, правители которых знали, что в боях на карту поставлено всё», — рассказывает он. Это идеально подходило для игры. От того периода сохранилось не так много записей, поэтому он и называется Тёмными веками, но это ещё больше вдохновило Ibidil. Он полюбил богатую и сложную историю Британии седьмого века и хотел оживить этот период — Альберто считал постыдным, что «такие имена, как Пенда или Кэдвалла, известны только историкам». Он даже перевёл сборник ранних валлийских поэм Canu Heledd на свой родной испанский язык.
    Читать дальше → Read more »
  • Russian AI Cup 2018, история 9 места

    Итак


    Меня, как и в прошлом году, зовут Андрей Рыбалка, только в этот раз мне 33. И, раз уж я оказался в десятке лучших, я решил снова поделиться своим подходом к написанию игрового бота для Russian AI Cup 2018.


    В этот раз заданием был футбол. Сама задача несколько напоминала RAIC 2014 года, когда был хоккей, но вот решение было совсем другим.


    Мир в этот раз был трёхмерным и эта трёхмерность использовалась по полной программе. Сама игра больше всего напоминала Rocket League.


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


    Читать дальше → Read more »
  • [Перевод] Reflective Shadow Maps: Часть 2 ― Реализация
    Привет, Хабр! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации.

    image
    Рисунок 1: Слева направо: без RSM, с RSM, разница
    Читать дальше → Read more »
  • GPT-2 нейросеть от OpenAI. Быстрый старт

    image


    Не успели отшуметь новости о нейросети BERT от Google, показавшей state-of-the-art результаты на целом ряде разговорных (NLP) задач в машинном обучении, как OpenAI выкатили новую разработку: GPT-2. Это нейронная сеть с рекордным на данный момент числом параметров (1.5 млрд, против обычно используемых в таких случаях 100-300 млн) оказалась способна генерировать целые страницы связного текста.


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


    Тем не менее, в OpenAI выложили в общий доступ уменьшенную версию нейросети GPT-2, со 117 млн параметров. Именно ее мы запустим через сервис Google Colab и поэкспериментруем с ней.

    Читать дальше → Read more »
  • Технология, которая приблизит запуск квантовых сетей
    Физики из Университетов Торонто, Осаки и Тоямы представили концепцию квантового повторителя, который не использует ячейки квантовой памяти и способен работать при комнатной температуре. В перспективе он позволит реализовать масштабные квантовые сети.

    Рассказываем, в чем заключается инновация.

    Читать дальше → Read more »
  • [Из песочницы] Учимся проектированию Entity Relationship — диаграмм
    Здравствуйте. Данная статья посвящена одной из самых популярных, а также и многим знакомой, модели проектирования — ER(Entity Relationship), которая была предложена учёным, в области информатики — Питером Ченом, в 1976 году.

    image

    По ходу статьи простым языком на простых примерах из жизни — мы с Вами разработаем разные варианты диаграммы, которые будут зависеть от их типа связи. Начнём!

    Объектно Ориентированное Проектирование


    В первую очередь, хотелось бы сказать пару слов об ООП(Объектно Ориентированном Программировании/Проектировании), чтобы не было проблем с пониманием парадигмы самой диаграммы. Мне удобнее абстрагировать эту модель с принципом ООП, где сущность — объект, атрибуты — его характеристики, а связи — что-то вроде посредника(в некоторых случаях — как метод).
    Читать дальше → Read more »
  • [Из песочницы] Распределённый чат на Node.JS и Redis

    Результат пошуку зображень за запитом "голубиная почта"


    Небольшой вопрос/ответ:


    Для кого это? Людям, которые мало или вообще не сталкивались с распределенными системами, и которым интересно увидеть как они могут строится, какие существуют паттерны и решения.


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


    Постановка задачи


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


    Стоит отметить что быстрый отклик очень важен, пресловутый realtime, ведь это же чат! а не доставка почты голубями.


    %рандомная шутка про почту россии%


    Использовать будем Node.JS, он идеален для прототипирования. Для сокетов возьмем Socket.IO. Писать на TypeScript.


    И так, что вообще мы хотим:


    1. Чтоб пользователи могли слать друг-другу сообщения
    2. Знать кто онлайн/оффлайн

    Как мы это хотим:

    Читать дальше → Read more »
  • [Из песочницы] Vuex — чрезмерное использование геттеров в приложении. Разбор ошибки


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


    Примечания перед прочтением: рекомендуется иметь базовые знания Vue и Vuex.

    Читать дальше → Read more »
  • [Перевод] SMAA: улучшенное субпиксельное морфологическое сглаживание

    Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

    Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

    Старые способы сглаживания (антиалиасинга)


    Долгие годы стандартами для реализации сглаживания были методы MSAA (Multisampling Antialiasing) и SSAA (Supersampling Antialiasing). На самом деле, они и по-прежнему обеспечивают наивысшее качество среди всех современных методов сглаживания. Как мы знаем, алиасинг возникает из-за нехватки сэмплов, как на пространственном (ломаные линии), так и на временном уровне (мерцание), обычно рядом с гранями и областями изображения с высоким/низким контрастом. Для борьбы с ним у нас имеются два способа, которые когда-то были единственными решениями: Supersampling и Multisampling. При суперсэмплинге мы увеличиваем изображение, а затем снижаем его дискретизацию до нужного разрешения. Этот принцип отлично работает, потому что распространяется на все аспекты проблемы. При мультисемплинге используется похожее решение. В этом методе каждый сэмпл дублируется на основание определённого коэффициента. При современных больших разрешениях для этого требуются достаточно мощные графические карты. Поэтому нам нужны новые методы сглаживания, как на пространственном, так и на временном уровнях. Все эти методы используют в своей работе один алгоритм — распознавание краёв. Но они выполняют и другие операции.
    Читать дальше → Read more »
  • Капитализация Reddit достигла $3 млрд после привлечения $300 млн инвестиций


    Соцсеть Reddit в ходе очередного инвестиционного раунда привлекла $300 млн. Оценка капитализации компании достигла $3 млрд. Среди инвесторов компании венчурные фонды Sequoia, Fidelity, Tacit, а также рэп-исполнитель Снуп Дог – они участвовали в новом раунде совместно с компанией Tencent, вложившей в соцсеть $150 млн. Читать дальше → Read more »
  • [Перевод] Как Project Infer от Facebook помогает искать баги в мобильных приложениях перед деплоем


    Несколько дней назад команда инженеров Facebook отличилась — ее удостоили награды Most Influential POPL Paper Award. В среде специалистов по машинному обучению это весьма почетно. Награду вручили за работу Compositional Shape Analysis by Means of Bi-abduction, которая раскрывает нюансы Project Infer. Сам проект предназначен для обнаружения и ликвидации багов в коде мобильного приложения перед его деплоем.

    Баги в программном обеспечении для мобильных устройств обходятся очень дорого как разработчикам, так и пользователям. Что касается первых, то обнаружение проблемы в уже размещенном в каталогах приложении — ночной кошмар для любого специалиста. Конечно, софт тестируется, работу программ проверяют по определенным шаблонам. Но чаще разработчики не могут предусмотреть всего, и баги в приложении обнаруживаются уже после деплоя.
    Читать дальше → Read more »
  • [Перевод] Reflective Shadow Maps: Часть 1
    image

    Привет, Хабр! Представляю вашему вниманию перевод статьи «Reflective Shadow Maps» автора Eric Polman.

    Reflective Shadow Maps (RSM) (отражающие карты теней) ― это алгоритм, расширяющий “простые” shadow map. Алгоритм учитывает свет, рассеянный после первого попадания на поверхность (diffuse). Это означает, что кроме прямого освещения, вы получаете непрямое освещение. В данной статье я разберу алгоритм из официальной статьи, чтобы объяснить его по-человечески. Я также кратко расскажу о shadow mapping.
    Читать дальше → Read more »
  • [Перевод] Оверинжинирг 80 уровня или редьсюеры: путь от switch-case до классов

    image


    О чем пойдет речь?


    Посмотрим на метаморфозы редьюсеров в моих Redux/NGRX приложениях за последние пару лет. Начиная с дубового switch-case, продолжая выбором из объекта по ключу и заканчивая классами с декораторами, блекджеком и TypeScript. Постараемся обозреть не только историю этого пути, но и найти какую-нибудь причинно-следственную связь.

    Читать дальше → Read more »
  • Полиция Москвы получит очки с распознаванием лиц

    Фото: Светлана Холявчук / Интерпресс / ТАСС

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

    «ДИТ проводит тестирование применения технологии распознавания лиц с передачей информации на очки дополненной реальности», — заявили источники РБК, уточнив, что пока рано говорить о подробностях проекта, не говоря уже о его результатах.
    Читать дальше → Read more »