[Перевод] GLSL: Центр или центроид? Или когда шейдеры атакуют

Дорабатывая шейдер для готовящейся к выходу игры, я столкнулся с неприятным артефактом, который проявляется только при включении аппаратного MSAA. На скриншоте ландшафта видно несколько чересчур ярких пикселей. Значения цвета в нескольких из них было настолько велико, что после наложения блума они превратились в разноцветных «призраков».
image

Предлагаю вашему вниманию перевод статьи, которая детально объясняет причину этого феномена и способ борьбы с ним.
Читать дальше →
[Перевод] GLSL: Центр или центроид? Или когда шейдеры атакуют
Source: habrahabr

Как перестать беспокоиться и начать писать тесты на основе свойств

В последнее время все чаще встречаются упоминания о некоем волшебном средстве — тестировании на основе свойств (property based testing, если надо погуглить англоязычную литературу). Большинство статей на эту тему рассказывают о том, какой это классный подход, затем на элементарном примере показывают как написать такой тест используя какой-то конкретный фреймворк, в лучшем случае подсказывают несколько часто встречающихся свойств, и… на этом все заканчивается. Дальше изумленный и воодушевленный читатель пытается применить все это на практике, и упирается в то, что свойства как-то не придумываются. И к большому сожалению часто на этом сдается. В этой статье я постараюсь расставить приоритеты немного по другому. Начну все-таки с более-менее конкретного примера, чтобы объяснить что это за зверь такой. Но пример, надеюсь, не совсем типичный для подобного рода статей. Затем попробую разобрать некоторые проблемы, связанные с этим подходом, и как их можно решить. А вот дальше — свойства, свойства и только свойства, с примерами куда их можно приткнуть. Интересно?
Читать дальше →
Как перестать беспокоиться и начать писать тесты на основе свойств
Source: habrahabr

[Перевод] Годные туториалы на YouTube

На YouTube много бесплатных обучающих и курсов и туториалов.

image

Я веду freeCodeCamp, YouTube канал без рекламы. У нас есть полные видеокурсы и учебные пособия по многим популярным языкам программирования и фреймворкам (включая JavaScript, Python, Java, Ruby, C, C ++, Angular и не только).

Есть и другие YouTube каналы с бесплатными уроками по программированию, которые ничуть не хуже, а иногда даже лучше, чем платные.

В этой статье я перечисляю десять YouTube каналов, которые можно посмотреть, чтоб прокачаться в программировании. Расположение каналов — случайное.

Бывает полезно посмотреть одну и ту же тему у разных преподов, так можно глубже разобраться в вопросе.

Есть много отличных каналов, для которых у меня не хватило места в этом списке. Поделитесь своими находками в комментах.
Читать дальше →
[Перевод] Годные туториалы на YouTube
Source: habrahabr

Нужны ли cookie-баннеры в эпоху GDPR — обсуждаем ситуацию и требования закона

Баннеры на сайтах с информацией о cookies часто закрывают чуть ли не половину контента, чем раздражают пользователей. Разберемся, что на самом деле требуют европейские законы, из-за которых эти всплывающие окна появились, и можно ли обойтись без баннеров совсем.

Читать дальше →
Нужны ли cookie-баннеры в эпоху GDPR — обсуждаем ситуацию и требования закона
Source: habrahabr

[Перевод] Курс MIT «Безопасность компьютерных систем». Лекция 21: «Отслеживание данных», часть 3

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год

Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3
Лекция 16: «Атаки через побочный канал» Часть 1 / Часть 2 / Часть 3
Лекция 17: «Аутентификация пользователя» Часть 1 / Часть 2 / Часть 3
Лекция 18: «Частный просмотр интернета» Часть 1 / Часть 2 / Часть 3
Лекция 19: «Анонимные сети» Часть 1 / Часть 2 / Часть 3
Лекция 20: «Безопасность мобильных телефонов» Часть 1 / Часть 2 / Часть 3
Лекция 21: «Отслеживание данных» Часть 1 / Часть 2 / Часть 3 Читать дальше →
[Перевод] Курс MIT «Безопасность компьютерных систем». Лекция 21: «Отслеживание данных», часть 3
Source: habrahabr

Использование STP для создания p2p каналов

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

Он основан на построении p2p каналов связи между L3-маршрутизаторами с помощью STP (точнее RSTP) и отключением запоминания MAC-адресов на промежуточных коммутаторах.

Для резервирования каналов связи между маршрутизаторами можно использовать подходящие протоколы динамической маршрутизации.
Читать дальше →
Использование STP для создания p2p каналов
Source: habrahabr

Разработчики Alexa интегрировали цифрового помощника с Wolfram Alpha


Источник: Techcrunch

На днях команда разработчиков голосового помощника Alexa расширила возможности гаджета. Сервис подключили к базе знаний Wolfram Alpha. К сожалению, обновление актуально лишь в отношении пользователей из США — если Alexa покажет себя хорошо, то опыт распространят и на другие регионы.

Голосовой помощник от Amazon теперь умеет отвечать на сложные вопросы научного характера, а также выполнять расчеты. К примеру, если спросить, какая высота полета максимальна для птиц определенного вида, голосовой помощник сможет без труда справиться с этой задачей.
Читать дальше →
Разработчики Alexa интегрировали цифрового помощника с Wolfram Alpha
Source: habrahabr

[Из песочницы] Лошадинная сила в Android или еще раз о RecyclerView.LayoutManager

По мнению автора, статья может быть полезна таким же как он начинающим Android-разработчикам, совершающим свои первые шаги в такой увлекательной области. История предмета этой заметки началась с идеи оснастить учебный проект так называемым “вау-эффектом”. Насколько это удалось, судить вам. Всех любопытствующих прошу под кат.
Читать дальше →
[Из песочницы] Лошадинная сила в Android или еще раз о RecyclerView.LayoutManager
Source: habrahabr

Сам себе devops или настраиваем Nginx прокси для Apache Tomcat на Ubuntu за 5 минут c https и firewall'ом

Я не админ, но иногда возникают задачи, которые проще (и интереснее) решать самому чем кому-то делегировать.

Изредка у нас появляется необходимость «поднять» servlet контейнер (чаще всего Apache Tomcat) и настроить для него проксирование, ssl termination (а проще говоря https) и все это прикрыть firewall’ом (оставив наружу только ssh и http/https).

Так получилось, что за последнюю неделю я эту задачу решал трижды (так стали звезды, а до этого — года два назад) и этот опыт трансформировался в сей небольшой опус.
Читать дальше →
Сам себе devops или настраиваем Nginx прокси для Apache Tomcat на Ubuntu за 5 минут c https и firewall'ом
Source: habrahabr

[Из песочницы] Эксплуатация кроликов (RabbitMQ) в режиме «Выжить любой ценой»

«Компания» — оператор связи ПАО «Мегафон»
«Нода» — сервер RabbitMQ.
«Кластер» — совокупность, в нашем случае трех, нод RabbitMQ работающих как единое целое.
«Контур» — совокупность кластеров RabbitMQ, правила работы с которыми определяются на стоящем перед ними балансировщике.
«Балансировщик», «хап» — Haproxy – балансировщик, выполняющий функции переключения нагрузки на кластеры в рамках контура. Для каждого контура используется пара серверов Haproxy, работающих параллельно.
«Подсистема» — публикатор и/или потребитель сообщений, передаваемых через кролика
«СИСТЕМА» — совокупность Подсистем, являющая собой единое программно-аппаратное решение, используемое в Компании, характеризующееся распределённостью по всей территории России, но обладающее несколькими центрами, куда стекается вся информация и где происходят основные расчёты и вычисления.
СИСТЕМА – географически распределённая система – от Хабаровска и Владивостока до Санкт-Петербурга и Краснодара. Архитектурно это несколько центральных Контуров, разделенных по особенностям подсистем, к ним подключённым.
Читать дальше →
[Из песочницы] Эксплуатация кроликов (RabbitMQ) в режиме «Выжить любой ценой»
Source: habrahabr