Как проверить гипотезы и заработать на Swift с помощью сплит-тестов

Всем привет! Меня зовут Саша Зимин, я работаю iOS-разработчиком в лондонском офисе Badoo. В Badoo очень тесное взаимодействие с продуктовыми менеджерами, и я перенял у них привычку проверять все гипотезы, которые возникают у меня относительно продукта. Так, я начал писать сплит-тесты для своих проектов.

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

Топ-10: лучшие доклады DotNext 2017 Moscow

Привет, Хабр! В апреле мы официально выложили в открытый доступ лучшие видеозаписи с DotNext 2017 Moscow. В результате получился плейлист из 25 докладов. Просто напомню здесь об этом магическом плейлисте.

Я сейчас отсматриваю самые интересные видео и приглашаю присоединиться! Чтобы было легче влиться в просмотр записей конференции, под катом вас ждут короткие заметки о десяти докладах, которые получили наивысшие оценки от посетителей прошлого DotNext. Если из 25 штук вы чувствуете себя в силах посмотреть всего несколько докладов, смело выбирайте из этого списка.

Формально, чем ниже по списку, тем выше рейтинг. Но тут есть важное уточнение: все доклады из первой десятки имеют очень-очень высокий рейтинг, и их точное положение сильно зависит от нюансов подсчета. Например, если использовать soft quorum, то кейноут Андрея Акиньшина про перформанс-тестирование обгонит доклад Саши Гольдштейна про отладку и профилирование на Linux. Иначе говоря, смотрите всё 🙂

Под катом будет оглавление для удобной навигации по содержимому поста.

Читать дальше →
Топ-10: лучшие доклады DotNext 2017 Moscow
Source: habrahabr

DesignOps, стремительно ворвавшийся в тренд

Баззворд «DesignOps» грозится вытеснить «UX-стратегию» и другие термины для описания дизайн-менеджмента. Он периодически всплывал в последние годы, но с подачи методички «DesignOps Handbook» от InVision ворвался на вершину хайпа. Авторы: Dave Malouf (Digital Ocean), Collin Whitehead (Dropbox), Meredith Black (Pinterest), Kate Battles (Fitbit). Организационные модели, координация команд, Research Ops.
Читать дальше →
DesignOps, стремительно ворвавшийся в тренд
Source: habrahabr

Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 3

Продолжаем приключения.

Краткое содержание предыдущих частей

Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost’у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.

Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. На этом описание core.h почти закончено, но оно было бы не полным без nullptr.

Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:

Коммиты и конструктивная критика приветствуются

Итак, продолжим.
Читать дальше →
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 3
Source: habrahabr

Дисней представила собственную систему анимации волос HairControl

Одна из самых сложных проблем современной 3D-анимации до сих пор заключается в такой, на первый взгляд, простой вещи, как отрисовка волос. На самом деле создание прически — это одна из наиболее сложных и трудоемких операций, которую можно себе вообразить. Анимационные и игровые студии уже достаточно давно научились использовать реальных актеров для снятия их движений и придания реалистичности действиям персонажей. Тоже касается и животного мира, когда речь идет о «звериных» анимационных фильмах, даже если персонажей делают антропоморфными (как, например, в «Зверополисе»). Но если анимация шерсти или коротких «полубокс» стрижек еще кое-как дается художникам, то с длинными женскими прическами все крайне и крайне неоднозначно. По этой причине многим студиям и проектам приходится отказываться от реализма в своих работах и использовать более простую, «мультяшную» рисовку.


Фото: Disney Research

Компания Дисней (с учетом ее имперских амбиций на рынке) с таким подходом мириться не хотела, поэтому несколько дней назад публике был представлен новый метод трекинга и управления поведением волос анимационных персонажей. При этом разработка применима как и для рынка анимационных фильмов, так и для рынка геймдева. Основное отличие новой системы от устоявшихся практик: отказ от создания сетки «локонов» и переход к динамической системе с «якорями». В своем релизе специалисты Дисней рассказывают о новой системе генерации волос, которая базируется на принципе взаимодействия с центром масс и опорных точек внутри локонов.
Читать дальше →
Дисней представила собственную систему анимации волос HairControl
Source: habrahabr

[Перевод] Браузеры отключают звук в вашем WebRTC-приложении. Стоп, что?

Технология WebRTC (голосовые и видеозвонки) хороша тем, что встроена прямо в веб, который, разумеется, прекрасно подходит для WebRTC. Однако иногда веб доставляет немало хлопот, когда нужды WebRTC идут вразрез с общими требованиями к использованию браузеров. Последний пример – автовоспроизведение (далее – «автоплей») аудио/видео, когда у многих пользователей внезапно пропадал звук. Бывший автор webrtcHacks – Dag-Inge Aas – лично столкнулся с этой проблемой. Ниже его размышления: чего ожидать от браузеров в плане автовоспроизведения, последние изменения в Chrome 66+, а также пару советов, как жить с этими ограничениями.

Браузеры не хотят слышать Зло, поэтому политики автоплея выключают звук в любом медиа. Это может быть проблемой для WebRTC-приложений.
Читать дальше →
[Перевод] Браузеры отключают звук в вашем WebRTC-приложении. Стоп, что?
Source: habrahabr

[Перевод] JavaScript как воплощение зла

JavaScript-разработчики часто жалуются на то, что их язык программирования несправедливо ругают за то, что он имеет слишком много чрезмерно усложнённых, запутанных возможностей. Многие борются с таким отношением к JS, рассказывая о том, почему критиковать этот язык за то, чем он является, неправильно. Автор материала, перевод которого мы сегодня публикуем, решил не защищать JS, обратившись, вместо этого, к тёмной стороне языка. Однако тут он не хочет говорить, например, о тех ловушках, которые JavaScript расставляет для неопытных программистов. Его интересует вопрос о том, что получится, если попытаться подтвердить плохую репутацию языка кодом, который мог бы написать тот, кто совершенно не заботится об окружающих.

В примерах к этому материалу будет использовано множество механизмов языка. Многое из того, что вы здесь увидите, кстати, работает и в других языках, поэтому, при должном усердии, можно обнаружить и их тёмные стороны. Но JavaScript, определённо, обладает настоящим даром ко всякого рода издевательствам, и с ним в этой области очень непросто тягаться другим языкам. Если вы пишете код, с которым нужно будет работать другим людям, JS даёт вам неисчерпаемое количество возможностей для того, чтобы этих людей раздражать, путать, всячески изводить и обманывать. Собственно говоря, тут мы рассмотрим лишь небольшую часть подобных приёмов.
Читать дальше →
[Перевод] JavaScript как воплощение зла
Source: habrahabr

Кластеры Kubernetes в сервисе VPC

Мы добавили возможность удобного запуска Kubernetes в сервисе Виртуальное приватное облако в режиме раннего beta-тестирования.

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

Так как сервис Виртуальное приватное облако построен на базе OpenStack, мы используем один из его компонентов — OpenStack Magnum. Он позволяет быстро создавать приватные кластеры Kubernetes с нужным количеством нод.

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

В этой статье мы расскажем про основные объекты кластера Kubernetes и на примерах рассмотрим процесс создания кластера при помощи OpenStack Magnum.

Читать дальше →
Кластеры Kubernetes в сервисе VPC
Source: habrahabr

[Перевод] Создание мультяшного шейдера воды для веба. Часть 3

image

Во второй части мы рассмотрели плавучесть и линии пены. В этой последней части мы применим как эффект постобработки подводные искажения.

Преломление и эффекты постобработки

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

Постобработка

В общем случае эффект постобработки — это любой эффект, применяемый к всей сцене после её рендеринга, например, оттенки цвета или эффект старого ЭЛТ-экрана. Вместо рендеринга сцены непосредственно на экран, мы сначала рендерим её в буфер или текстуру, а затем, пропустив сцену через свой шейдер, выполняем рендеринг на экран.
Читать дальше →
[Перевод] Создание мультяшного шейдера воды для веба. Часть 3
Source: habrahabr

[Перевод] Может ли хакер заблокировать Ла-Манш?

Оказывается, судоходные маршруты подвержены серьезному риску со стороны хакеров: устаревшие ИТ-системы на борту кораблей в сочетании с современными IoT-устройствами дают кибер-преступникам шансы на успех.
Читать дальше →
[Перевод] Может ли хакер заблокировать Ла-Манш?
Source: habrahabr