Search
Write a publication
Pull to refresh
-11
0
Send message

Почему LLVM может вызвать никогда не вызываемую функцию?

Reading time14 min
Views18K
Что бы ни сказал тебе твой дракон, он солгал. Драконы лживы. Ты не знаешь, что ждет тебя на другой стороне.
Майкл Суэнвик. «Дочь железного дракона»

Не так давно на Хабре был опубликован пост под названием "Как может вызваться никогда не вызываемая функция?". Выводы из статьи простые: в случае undefined behaviour компилятор вправе предпринимать любые действия, даже если они будут совершенно неожиданными. Однако меня заинтересовал сам механизм этой оптимизации. Результатом своего небольшого исследования я хочу поделиться с уважаемым сообществом хабра.


Читать дальше →

Алгоритмы построения пути для беспилотного автомобиля. Лекция Яндекса

Reading time12 min
Views29K
Яндекс уже некоторое время ведет разработку беспилотного автомобиля. Перед вами одна из первых технических лекций на эту тему. В направлении беспилотных автомобилей работают сотрудники Яндекса в разных городах, включая и Минск. Автор лекции Роман Удовиченко как раз из Минска — он руководит группой обработки дорожной ситуации. На сентябрьском Я.Субботнике Роман рассказал об одной из больших задач, стоящих перед его группой.


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

Выбираем оптимальный процессор для ноутбуков диапазона 30-50 тыс рублей

Reading time16 min
Views71K
Мы продолжаем «потрошить» ноутбуки с целью выбора оптимального CPU. В прошлой публикации мы сконцентрировались на бюджетных моделях. Теперь посмотрим, как обстоят дела у их более дорогих собратьев — стоимостью от 30 до 50 тыс. рублей. Под катом — обзор, анализ, сравнительные таблицы и обоснованные выводы.


Читать дальше →

Безопасность Wi-Fi под угрозой из-за множества обнаруженных в WPA2 уязвимостей

Reading time2 min
Views32K

Интернет замер в ожидании релиза proof-of-concept эксплоита под названием KRACK (аббревиатура от Key Reinstallation Attacks). Дело в том, что в минувшие выходные стало известно, то сводная группа специалистов готовит скоординированное раскрытие информации о неких критических проблемах WPA2, которые позволяют обойти защиту и прослушивать Wi-Fi-трафик, передаваемый между точкой доступа и компьютером.


Формально исследователи расскажут о найденных ими уязвимостях лишь 1 ноября 2017 года, на конференции ACM CCS. На мероприятии будет представлен доклад, озаглавленный Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2 («Атака на реинсталляцию ключей: принудительное повторное использование nonce в WPA2»).

Читать дальше →

Такты для разработчиков

Reading time10 min
Views24K


Если у вас есть опыт создания ПО и вы хотите познакомиться с проектированием цифровых логических схем (digital design), то одна из первых вещей, которые вам нужно понять, — это концепция тактов. Она раздражает многих программных инженеров, начинающих HDL-проектирование. Без использования тактов они могут превратить HDL в язык программирования с $display, if и циклами for, как в любом другом языке. Но при этом такты, которые новички игнорируют, — зачастую один из основополагающих элементов при проектировании любых цифровых логических схем.


Ярче всего эта проблема проявляется именно при рассмотрении первых схем, созданных начинающими HDL-разработчиками. Я недавно общался с некоторыми из них. Новички опубликовали свои вопросы на форумах, которые я читаю. Когда я проанализировал то, что они делают, от увиденного волосы встали дыбом.

Читать дальше →

В человеческом мозге нашли лимфатическую систему для удаления отходов

Reading time3 min
Views23K

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

Учёные давно подозревали, что сеть лимфатических сосудов в мозге может использоваться для удаления результатов жизнедеятельности. Исследования даже показывали, в каком положении во сне отходы удаляются эффективнее всего (лёжа на боку). В мозге эта сеть располагается рядом с кровеносными сосудами. В 90-е годы считалось, что в эту систему поступает только небольшая часть иммунных клеток и цереброспинальной жидкости. Но последние исследования показали, что на самом деле через дренажную лимфатическую систему из мозга удаляется гораздо больше макромолекул и иммунных клеток, чем было принято думать.

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

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

Уязвимость алгоритма хеширования в платформе MIGS

Reading time8 min
Views5K

С появлением кредитных карт и Интернета совершение покупок стало намного проще и, как говорят, безопаснее. Всего пара кликов и нужный Вам товар уже на пути к Вашему дому. Однако не все системы идеальны, точнее таких нет. Всегда можно найти какую-то ошибку, брешь, позволяющую злоумышленникам делать свое черное дело. Сегодня я хотел бы обратить Ваше внимание на исследование очень талантливого программиста Yohanes Nugroho, рассказавшего об уязвимости в системе MIGS.
Читать дальше →

Выжимаем все соки из Chromium на Linux

Reading time7 min
Views136K
В этой статье рассмотрим, как выжать все соки из Хромиума и максимально ускорить его или другой браузер на его движке (Chromium, Google Chrome, Opera, Vivaldi, Яндекс и др.). За счет включения многих экспериментальных возможностей по вынесу вычислений с процессора на видеокарту и включения использования находящихся в разработке программных алгоритмов. За счет этого наш любимый хромиум станет работать быстрее, может перестать тормозить или моргать экраном.

Поехали!
Читать дальше →

Как запустить Java-приложение с несколькими версиями одной библиотеки в 2017 году

Reading time18 min
Views14K

Как запустить Java-приложение с несколькими версиями одной библиотеки в 2017 году


КДПВ, ничего интересного


Хочу поделиться решениями одной проблемы, с которой мне пришлось столкнуться, плюс исследование данного вопроса в контексте Java 9.


дисклеймер

Писатель из меня ещё тот (пишу в первый раз), поэтому закидывание вкусными помидорами с указанием причин только приветствуется.
Сразу договоримся, что статья не годится в качестве руководства по:


  • Java 9
  • Elasticsearch
  • Maven

Если по последним именам информации в сети полно, то по первому… со временем появится, по крайней мере здесь есть необходимая информация.


Представим себе простую ситуацию: разворачиваем кластер Elasticsearch и загружаем в него данные. Мы пишем приложение, которое занимается поиском в этом кластере. Поскольку постоянно выходят новые версии Elasticsearch, мы привносим в кластер новые проблемы фичи с помощью rolling upgrade. Но вот незадача — в какой-то момент у нас сменился формат хранимых данных (например, чтобы максимально эффективно использовать какую-то из новых фич) и делать reindex нецелесообразно. Нам подойдёт такой вариант: ставим новый кластер на этих же машинах — первый кластер со старой схемой данных остаётся на месте только для поиска, а поступающие данные загружаем во второй с новой схемой. Тогда нашему поисковому компоненту потребуется держать на связи уже 2 кластера.

Читать дальше →

Криптоалгоритмы. Классификация с точки зрения количества ключей

Reading time52 min
Views119K


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

Атакуем DHCP часть 2. DHCP + WiFi = MiTM

Reading time4 min
Views18K

LOGO


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

Делаем MitM с помощью openssl на Android

Reading time18 min
Views13K

image


Мотивация


В русскоязычном интернете трудно найти информацию об API-библиотеке OpenSSL. Большое внимание уделяется использованию консольных команд для манипуляции с самоподписанными сертификатами для веб-серверов или OpenVPN-серверов.


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


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


Отдельно стоит отметить сетевую составляющую. Если сертификат есть и просто лежит на диске, он бесполезен.


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


Данная статья — компиляция моего опыта по работе с библиотекой OpenSSL при реализации клиент-серверного приложения. Описанные в ней функции будут работать как на десктопе, так и на Android-устройствах. К статье прилагается репозиторий с кодом на C/C++ для того, чтобы вы могли увидеть работу описываемых функций.


Цель

Читать дальше →

IBM учит ИИ вести себя как человеческий мозг

Reading time6 min
Views11K
image

Со времен «Орнитопера» Да Винчи величайшие умы человечества черпали вдохновение из мира природы. В современном мире ничего не изменилось, и новейшие достижения в машинном обучении и искусственном интеллекте были созданы на основе самого передового вычислительного органа: человеческого мозга.
Читать дальше →

Как работает видеопроцессор

Reading time29 min
Views74K
image

[Прим. пер.: оригинал статьи называется GPU Performance for Game Artists, но, как мне кажется, она будет полезной для всех, кто хочет иметь общее представление о работе видеопроцессора]

За скорость игры несут ответственность все члены команды, вне зависимости от должности. У нас, 3D-программистов, есть широкие возможности для управления производительностью видеопроцессора: мы можем оптимизировать шейдеры, жертвовать качеством картинки ради скорости, использовать более хитрые техники рендеринга… Однако есть аспект, который мы не можем полностью контролировать, и это графические ресурсы игры.

Мы надеемся, что художники создадут ресурсы, которые не только хорошо выглядят, но и будут эффективны при рендеринге. Если художники немного больше узнают о том, что происходит внутри видеопроцессора, это может оказать большое влияние на частоту кадров игры. Если вы художник и хотите понять, почему для производительности важны такие аспекты, как вызовы отрисовки (draw calls), уровни детализации (LOD) и MIP-текстуры, то прочитайте эту статью. Чтобы учитывать то влияние, которое имеют ваши графические ресурсы на производительность игры, вы должны знать, как полигональные сетки попадают из 3D-редактора на игровой экран. Это значит, что вам нужно понять работу видеопроцессора, микросхемы, управляющей графической картой и несущей ответственность за трёхмерный рендеринг в реальном времени. Вооружённые этим знанием, мы рассмотрим наиболее частые проблемы с производительностью, разберём, почему они являются проблемой, и объясним, как с ними справиться.
Читать дальше →

Автопилот своими рукам. Добавляем электронное управление steer-by-wire на обычный автомобиль

Reading time10 min
Views25K

Всем привет. Любому автопилоту, очевидно, нужно не только принимать решения по управлению, но и заставлять автомобиль этим решениям подчиняться. Сегодня увидим, как весьма доступными средствами доработать обычный автомобиль полностью электронным рулевым управлением (steer-by-wire). Оказывается, сам авто для разработки не очень и нужен, а большинство функционала можно с комфортом отлаживать дома или в офисе. В главных ролях всем известные компоненты из хобби-магазинов электроники.


Электроника в сборе

И Arduino, конечно, куда же без нее.

Из хирурга в разработчики: как в 40 лет сменить профессию?

Reading time6 min
Views156K

image


Привет! Меня зовут Алексей, я тимлид в крупной IT-компании. Сейчас мне 43, только в 40 лет я стал разработчиком, а до этого 15 лет был практикующим врачом-хирургом. Делюсь с вами, как в середине жизни я поменял профессию, о страхах, рисках и планах с этим связанных.


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

Читать дальше →

Будет ли работать Wi-Fi на скорости 340 км/ч?

Reading time6 min
Views30K
Во время летней интернатуры мне поручили выяснить, будет ли работать беспроводная связь, если приёмник быстро движется относительно передатчика. В этой статье я расскажу об эффекте Доплера и насколько он страшен; что необходимо Wi-Fi устройству, чтобы его не бояться, а также поделюсь результатами эксперимента, в котором мы достигли скорости 340 километров в час!

image

Причуды Stream API

Reading time23 min
Views54K
Stream – таинственный мир функциональщины, несвойственный староверцам в мире объектной Java. Одновременно интересен и чужд мир лямбд, позволяющий вытворять с наборами данных порой такие вещи, что иные, увидев такое, захотят вас сжечь на костре.

Сегодня мы поговорим об Stream API и попробуем приоткрыть завесу тайны в до сих пор до конца неизведанном мире. Несмотря на то, что Java 8 вышла достаточно давно, далеко не все используют полный набор ее возможностей в своих проектах. Открыть этот ящик Пандоры и узнать, что собственно скрывается внутри столь загадочного явления, нам поможет разработчик из JetBrains – Тагир lany Валеев, который давно изучил этого фантастического зверя и места его обитания вдоль и поперек (и совсем недавно написал очередной гайд о том, как правильно, и как неправильно писать стримы), да еще и написал свою библиотеку StreamEx, улучшающую работу с джавовыми стримами. Кому стало интересно, просим под кат!



Любопытная особенность языка Java и коварные ошибки, которые она может повлечь

Reading time3 min
Views8.1K
Привет, Хабр! Представляю вашему вниманию перевод статьи A Curious Java Language Feature and How it Produced a Subtle Bug автора Lukas Eder.

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

package p;
 
import static p.A.x;
 
class A {
    static String x = "A.x";
}
 
class B {
    String x = "B.x";
}
 
class C {
    String x = "C.x";
 
    class D extends B {
        void m() {
            System.out.println(x);
        }
    }
}
 
public class X {
    public static void main(String[] args) {
        new C().new D().m();
    }
}

Будет выведено:

B.x

Потому, что:

Члены суперкласса B скрывают все вложенные элементы класса C, которые, в свою    очередь, перекрывают статический импорт класса A.

Каким же образом все это может привести к ошибкам?


Читать дальше →

Открытые проблемы в области распознавания речи. Лекция в Яндексе

Reading time6 min
Views17K
Работа большинства специалистов по речевым технологиям состоит не в том, чтобы придумывать концептуально новые алгоритмы. Компании в основном фокусируются на существующих подходах. Машинный интеллект уже умеет распознавать и синтезировать голос, но не всегда в реальном времени, не всегда локально и не всегда «избирательно» — когда нужно реагировать только на ключевые фразы, робот может ошибаться. Подобными проблемами как раз и заняты разработчики. Муаммар Аль-Шедиват Laytlas рассказывает об этих и других вопросах, которые пока не удаётся решить даже большим компаниям.


Information

Rating
7,573-rd
Registered
Activity