[Перевод] Прощай, чистый код

Был поздний вечер.

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

Код работал.

Но в нём было много повторяющихся однотипных конструкций. Каждая фигура (вроде того же прямоугольника или овала) обладала различным набором маркеров. Перемещение этих маркеров в разных направлениях по-разному влияло на позицию и размер фигуры. А если пользователь, двигая маркеры, удерживал нажатой клавишу Shift, нам, кроме того, надо было сохранять пропорции фигуры при изменении её размера. В общем — в коде было много вычислений.
Читать дальше →
[Перевод] Прощай, чистый код
Source: habrahabr

Новый год, новый браузер: Microsoft Edge вышел из стадии предварительной оценки и теперь доступен для загрузки

Чуть более года назад мы объявили о намерении перестроить Microsoft Edge на основе проекта с открытым исходным кодом Chromium. Это было нужно для того, чтобы улучшить совместимость для всех пользователей, уменьшить фрагментацию для веб-разработчиков и установить партнерские отношения с сообществом Chromium для улучшения самого ядра Chromium. На Ignite мы представили наше новое видение веб-технологий и поиска, новый красочный логотип и новую концепцию Microsoft Edge + Bing — браузера и поисковой системы для бизнеса. И теперь мы с нетерпением ждем ваших отзывов!

Мы проделали невероятную работу и сегодня рады сообщить, что новый Microsoft Edge уже доступен для скачивания во всех поддерживаемых версиях Windows и macOS на более чем 90 языках. Microsoft Edge также доступен на iOS и Android, что означает великолепную кросс-платформенность. Новый Microsoft Edge предлагает производительность мирового класса с повышенной конфиденциальностью, большей скоростью и эффективностью — он в два раза быстрее, чем прежний Edge. На новый браузер распространяется наша политика конфиденциальности, и вы сможете оценить новые функции, такие как предотвращение отслеживания, которое включено по умолчанию и обеспечивает три уровня контроля при просмотре веб-страниц. Читать дальше →
Новый год, новый браузер: Microsoft Edge вышел из стадии предварительной оценки и теперь доступен для загрузки
Source: habrahabr

ИБ-факапы 2019 – типичные и не очень


«Зато не скучно!» — так звучит неформальный девиз сотрудников нашего центра мониторинга киберугроз Solar JSOC (и надо сказать, 2019 год полностью ему соответствовал). В начале нового года многие любят подводить итоги и ставить новые цели, но мы решили вместо этого рассказать несколько «ужасов нашего городка» – кейсов 2019 года, которые впечатлили даже видавших виды аналитиков. Вывод же из этих историй только один: технологии развиваются и эволюционируют, а человеческая лень, халатность и безалаберность вечны. Читать дальше →
ИБ-факапы 2019 – типичные и не очень
Source: habrahabr

[Перевод] Linux: удаление пула блокировок /dev/random

Как известно, у /dev/random, криптографически стойкого генератора псевдослучайных чисел (CSPRNG), имеется одна неприятная проблема – блокировки. В данной статье рассказывается, каким образом можно ее решить.

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

Энди Лутомирски (Andy Lutomirski) опубликовал третью версию патча в конце декабря. Он вносит «два основных семантических изменения в случайных API Linux». Патч добавляет новый флаг GRND_INSECURE к системному вызову getrandom() (хотя Лутомирский обращается к нему как к getentropy(), который реализован в glibc с помощью getrandom() с фиксированными флагами); этот флаг заставляет вызов всегда возвращать количество запрошенных данных, но без гарантии, что эти данные случайны. Ядро просто приложит все усилия, чтобы дать наилучшие случайные данные, которые у него есть на данный момент времени. «Вероятно, лучшее, что можно сделать, это назвать его „INSECURE“ (небезопасным), чтобы воспрепятствовать использованию этого API для вещей, которые нуждаются в безопасности». Читать дальше →
[Перевод] Linux: удаление пула блокировок /dev/random
Source: habrahabr

TensorRT 6.x.x.x — высокопроизводительный инференс для моделей глубокого обучения (Object Detection и Segmentation)

image
Больно только в первый раз!

Всем привет! Дорогие друзья, в этой статье я хочу поделиться своим опытом использования TensorRT, RetinaNet на базе репозитория github.com/aidonchuk/retinanet-examples (это форк официальной репы от nvidia, который позволит начать использовать в продакшен оптимизированные модели в кратчайшие сроки). Пролистывая сообщения в каналах сообщества ods.ai, я сталкиваюсь с вопросами по использованию TensorRT, и в основном вопросы повторяются, поэтому я решил написать как можно более полное руководство по использованию быстрого инференса на основе TensorRT, RetinaNet, Unet и docker.
Читать дальше →
TensorRT 6.x.x.x — высокопроизводительный инференс для моделей глубокого обучения (Object Detection и Segmentation)
Source: habrahabr

PostgreSQL Antipatterns: редкая запись долетит до середины JOIN

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

Такие запросы любят «кушать» процессорное время и активно почитывать данные практически на ровном месте. Причем, это вовсе не обязательно какие-то сложные запросы, наоборот — чем проще он написан, тем больше шансов получить проблемы. А уж если в дело вступает оператор JOIN…

Само по себе соединение таблиц не вредно и не полезно — это просто инструмент, но и пользоваться им надо уметь.
Читать дальше →
PostgreSQL Antipatterns: редкая запись долетит до середины JOIN
Source: habrahabr

Легко и непринужденно деплоим приложения на Tarantool Cartridge (часть 2)

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

Любознательных прошу под кат!

Читать дальше →
Легко и непринужденно деплоим приложения на Tarantool Cartridge (часть 2)
Source: habrahabr

[Перевод — recovery mode ] Java 14: записи (records preview)

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

Читать дальше →
[Перевод — recovery mode ] Java 14: записи (records preview)
Source: habrahabr

Открытые лекции лабораторий JetBrains Research

В прошедшем осеннем семестре сотрудники лабораторий JetBrains Research провели несколько открытых лекций в Computer Science Center. Тематика докладов разнообразная, как и области исследований лабораторий. Для удобства собрали ссылки на все выступления. Приятного просмотра!
Читать дальше →
Открытые лекции лабораторий JetBrains Research
Source: habrahabr