Тимлид
OpenResty: превращаем NGINX в полноценный сервер приложений
Всем привет, меня зовут Владимир Протасов, я работаю в Parallels. Расскажу чуть-чуть о себе. Три четверти своей жизни я занимаюсь тем, что пишу код. Стал программистом до мозга костей в прямом смысле: я иногда во сне вижу код. Четверть жизни — промышленная разработка, написание кода, который идёт прямо в продакшн. Код, которым некоторые из вас пользуются, но не догадываются об этом.
Чтобы вы понимали насколько всё было плохо. Когда я был маленьким джуниором, я пришёл, и мне выдали такие двухтерабайтные базы. Это сейчас тут у всех highload. Я ходил на конференции, спрашивал: «Ребят, расскажите, у вас big data, всё круто? Сколько у вас там базы?» Мне отвечали: «У нас 100 гигабайт!» Я говорил: «Круто, 100 гигабайт!» А про себя думал, как бы аккуратненько сохранить покерфейс. Думаешь, да, ребята крутые, а потом возвращаешься и ковыряешься с этими многотерабайтными базами. И это — будучи джуниором. Представляете себе, какой это удар?
Я знаю больше 20 языков программирования. Это то, в чём мне пришлось разобраться в процессе работы. Тебе выдают код на Erlang, на C, на С++, на Lua, на Python, на Ruby, на чем-то еще, и тебе надо это всё пилить. В общем пришлось. Точное количество посчитать так и не удалось, но где-то на 20 число потерялось.
Tarantool: Хороший, Плохой, Злой
Система кажется сложной. Несмотря на российские корни, изначально даже не было документации на русском языке. Чем же может помочь этот мощный инструмент обычным парням — программистам и начинающим разработчикам? Остальные могут сразу посмотреть результат
Попробуем написать простой занимательный сервис, способный выдержать большую нагрузку. И никакого SQL!
Как Skype уязвимости чинил
Короткий ответ: никак, им пофиг.
В статье описываются мои безуспешные попытки убедить сотрудников Microsoft, что их сервис уязвим, а также унижения, которые приходится выносить пользователям Skype. Под катом невежество, боль и отчаяние.
UPD
Статья на английском hub.zhovner.com/geek/how-skype-fixes-security-vulnerabilities/
Пост на HackerNews news.ycombinator.com/item?id=13227480
TL;DR:
- Любой может заблокировать ваш аккаунт навсегда так, что вы больше не сможете им пользоваться. Для этого достаточно знать только имя аккаунта. В большинстве случаев Skype откажет вам в восстановлении доступа. Microsoft знает об этой проблеме несколько лет.
- Механизм генерации восьмизначных одноразовых кодов аутентификации (Microsoft Security Code), которые используются для восстановления пароля к аккаунту Microsoft, уязвим. Атакующий может угадать код.
- Техподдержка Skype уязвима для атак социальной инженерии. Microsoft считает это нормальным.
- Техподдержка Skype не знает, что на самом деле происходит с вашим аккаунтом, и почему он заблокирован. В любом случае вы получите стандартный ответ, что ваш аккаунт заблокирован за нарушение правил, даже если аккаунт был удален по вашему запросу.
- Skype по-прежнему раскрывает ваш IP-адрес, в том числе и локальный (тот, что на сетевом интерфейсе). В некоторых случаях возможно раскрытие контактов, подключенных с того же внешнего IP-адреса, что и вы. Например, членов семьи, подключенных к домашнему роутеру.
- Атакующий может скрыть активную сессию из списка авторизованных клиентов (команда /showplaces) используя старые версии SDK. Таким образом, зная пароль, можно незаметно просматривать переписку жертвы.
Canvas-трансформации доступным языком
Почему Hackintosh уже актуален. Развенчание мифов
Каждому iOS разработчику нужен свой уголок с печеньками, плюшевой уточкой и шайтан-машиной на OSX.
В свете перехода на Swift, мощность железа стала особенно востребована. Чтобы комфортно разрабатывать под айфоны, нужен как минимум процессор с частотой 3+ ghz, SSD на 120-250Gb и оперативы гигов 16. Все это как раз для того, чтобы не было желания посмотреть футбол, пока запускается проект или открывается interface builder.
А знаете, что еще было всегда актуально? Сумасшедшие цены на яблочные устройства:
PC с таким же, плюс-минус, железом можно запросто собрать всего за 30.000 рублей! (инфа на ноябрь 2016). Многие, конечно, думают, что раз компания покупает железо, то значит финансы бесконечные, можно не стесняться в средствах. Если вы работаете в Google, то вам повезло и жизнь хороша. Но в остальных случаях это не так.
Что же делать? Не разрабатывать же под Android в конце концов?
Под катом мы узнаем о современном Hackintosh, его роли в разработке, способам безболезненной установки и настройки, услышим мнение людей, работающих на нем не первый год, и проведем тест на iOS инструментах.
Как Discord обрабатывает более 1 000 000 push-запросов в минуту с помощью Elixir GenStage
Discord
Discord испытал небывалый рост. Чтобы справиться с ним, нашему отделу разработки досталась приятная проблема — искать способ масштабирования сервисов бэкенда.
В этом деле мы добились большого успеха с помощью одной технологии, которая называется Elixir GenStage.
Идеальный шторм: Overwatch и Pokémon GO
Этим летом наша система мобильных push-уведомлений стала скрипеть от нагрузки. Чат /r/Overwatch перевалил за 25 000 одновременных пользователей, а чат-группы Pokémon GO возникали повсеместно, так что внезапные всплески потока уведомлений стали серьёзной проблемой.
Анимации на GPU: делаем это правильно
Думаю, все уже знают, что современные браузеры умеют рисовать некоторые части страницы на GPU. Особенно это заметно на анимациях. Например, анимация, сделанная с помощью CSS-свойства transform
выглядит гораздо приятнее и плавнее, чем анимация, сделанная через top/left
. Однако на вопрос «как правильно делать анимации на GPU?» обычно отвечают что-то вроде «используй transform: translateZ(0)
или will-change: transform
». Эти свойства уже стали чем-то вроде zoom: 1
для IE6 (если вы понимаете, о чём я ;) для подготовки слоя для анимации на GPU или композиции (compositing), как это предпочитают называть разработчики браузеров.
Однако очень часто анимации, которые красиво и плавно работали на простых демках, вдруг неожиданно начинают тормозить на готовом сайте, вызывают различные визуальные артефакты или, того хуже, приводят к крэшу браузера. Почему так происходит? Как с этим бороться? Давайте попробуем разобраться в этой статье.
Идеальный программист. Часть 1
Что такое СУБД в оперативной памяти и как она эффективно сохраняет данные
Всем привет. Кто-то из вас, возможно, уже знаком с СУБД для данных в оперативной памяти, но на всякий случай — по ссылке можно найти их общее описание. Если вкратце, такие СУБД хранят данные целиком в оперативной памяти. Что это означает? Каждый раз, отправляя запрос на поиск или обновление данных, вы обращаетесь только к оперативной памяти в обход жесткого диска — на нем никакие операции не производятся. И это хорошо, потому что оперативная память работает намного быстрее любого диска. Примером такой СУБД является Memcached.
Секундочку, скажете вы, а как же восстановить данные после перезагрузки или поломки машины с такой СУБД? Если на машине установлена СУБД для хранения данных только в оперативной памяти, о них можно забыть: при отключении питания данные бесследно исчезнут.
Можно ли объединить достоинства хранения данных в оперативной памяти с надежностью проверенных временем СУБД вроде MySQL или Postgres? Конечно! Повлияет ли это на производительность? Вы удивитесь, но нет!
Как использовать кастомные шрифты в вебе и не сойти с ума
Классический вопрос на собеседовании ops-инженеров и программистов: вы написали в адресной строке браузера habr.com и нажали Enter. Что произойдет? (Ответ на 10 страницах)
Ок, мы указали для своего текста font-family: PFRegal, «Times New Roman». Что произойдет?
Браузер посмотрит, есть ли для PFRegal объявление font-face. Если оно есть, то начнется загрузка файла шрифта. Что будут видеть читатели те секунды (десятки секунд на 3G), пока происходит загрузка?
Когда я говорил…
Когда я говорил, что нельзя заманивать айтишников на конференции печеньками и плюшками, вы покупали пиццу, дарили футболки и айпэды. Теперь у нас любое мероприятие начинается с поисков халявы. Этим же мероприятия и заканчиваются.
Когда я говорил вкладывать деньги в обучение специалистов, вы продолжали раздавать деньги за рекомендации. Теперь у нас никто не работает, а все рекомендуют.
GitLab 8.11: канбан-доска и разрешение конфликтов одним кликом
Эта статья — перевод релизной статьи компании GitLab. Релизы выходят каждый месяц 22 числа.
Если вы пропустили предыдущие, вот ссылки: 8.10, 8.9, 8.8
В новом GitLab 8.11 столько всего интересного, что мы с трудом сдерживаем себя в рамках конструктивного повествования!
Итак, в новой версии появились:
- принципиально новый новый способ представления и работы с тикетами (issues);
- слеш-команды (
/command
) для работы с тикетами; - возможность создавать шаблоны тикетов (в неограниченном количестве);
- онлайн-среда разработки;
- возможность разрешать конфликты мержа не выходя из GitLab;
- настройка прав на пуш в ветку для отдельных участников и групп (только в ЕЕ);
- … и много других фич, о которых мы тоже расскажем.
Интерфейсы в реальном мире: страховка от ошибок пользователя
В Екатеринбурге в одном из зданий для международных конференций есть проблема с «немного глупыми» иностранцами. Говорят, такие же автоматы начали ставить в Москве.
«Пользователь пьян» — базовый принцип проектировщика. Ещё пользователь нечеловечески изобретателен, умён и привередлив, но прямо сейчас пьян. То же самое касается передачи информации. Сейчас покажу физические ограничения на ошибки пользовательских интерфейсов.
Начнём со специальной клавиатурной чашки.
Навигатор 2ГИС: Экстраполяция позиции автомобиля
В приложении 2ГИС теперь есть навигатор. Мы научились «ехать» по треку, озвучивать манёвры, автоматически перестраивать маршрут, рассчитывать время в пути, доводить пользователя до входа в здание или организацию, учитывая заборы и шлагбаумы, — и всё это в честном офлайне. Пробки (вот разве что для них нужен интернет), разведённые мосты и перекрытые улицы учитываем давно. Пока в нашем навигаторе — необходимый минимум. Чуть позже научим его предупреждать о слишком высокой скорости, лежачих полицейских и камерах ГИБДД, настроим ночной режим, сделаем маршруты по платным и грунтовым дорогам опциональными. Чтобы воспользоваться им, нужно обновить 2ГИС в своем смартфоне или скачать в AppStore или Windows Store. Для Android обновление выходит постепенно, начиная с 22 августа (будет доступно на всю аудиторию к сентябрю).
А сегодня расскажем, как навигатор 2ГИС предугадывает положение автомобиля и плавно перемещает стрелочку по маршруту. Ведь именно качество ведения пользователя по маршруту определяет эргономику интерфейса любого современного навигатора, простоту ориентирования на местности и своевременность совершения манёвров.
Про магазины и интровертов: ряд неявных вещей
В прошлый раз разгорелась целая дискуссия про интровертов в магазине. Так вот, интроверты в магазине — это счастье. Потому что именно по ним можно определить, насколько хорошо оный магазин работает. Как минимум четверть населения нашей страны интровертична и при этом доходит до магазинов (то есть это не клинические хикки).
Давайте посмотрим на ряд довольно неочевидных вещей, которые особенно важны для таких людей. И, естественно, которые оказывают влияние на всех остальных тоже, но в меньшей степени.
Итак, самый верный способ сорвать покупку, когда всё хорошо — это пройти за спиной человека, рассматривающего полку. Это знает каждый, кто хоть раз занимался трассировкой потоков в магазинах. Если у человека за спиной образовался второй покупатель или консультант — он начинает беспокоиться, как разработчик, у которого за спиной во время отладки кто-то молча стоит. И чаще всего покидает магазин в ближайшие 30 секунд. Причём часто не осознаёт, почему.
Как мы тестируем взаимодействие с Facebook
Вступление
Привет, хаброжитель! Уже довольно давно я хотел написать статью о том, как у нас в Badoo устроена автоматизация тестирования. Хотелось написать о чем-то интересном и, в то же время, полезном. Поделиться опытом, который можно было бы легко интегрировать почти в любую систему. И вот, такая тема назрела…
Как многие из вас знают, Badoo — это социальная сеть, ориентированная на поиск новых друзей и знакомств. Одной из важнейших задач является верификация пользователя. Ведь всем нам хочется, чтобы привлекательная девушка, с которой у нас назначена встреча, не оказалась дядей Колей из Твери.
Для верификации пользователей у нас существует много различных способов. Некоторые из них довольно привычные, такие, как верификация по номеру телефона. Есть и более необычный — верификация по фотографии. Но самая простая и быстрая — верификация через социальные сети.
Такой способ верификации профиля возможен сразу на момент его создания — регистрация через социальную сеть. Во-первых, это быстро, всего один клик и никаких дополнительных манипуляций с телефоном или веб-камерой. Во-вторых, это удобно, так как при желании можно импортировать фотографии и информацию о себе, вместо того, чтобы вводить их вручную.
Сегодня я расскажу о том, как на Badoo устроена регистрация и верификация через Facebook и о том, как мы научили selenium-тесты ее проверять.
Учимся на ошибках в организации контроля качества
Как собеседовать технического специалиста
Какая-то «не здоровая пьянка» пошла последнее время на хабре про собеседования. Люди, хватит уже, нет ничего страшного и особенного в собеседованиях, я уже несколько лет провожу их с IT-шниками, и в 95% случаев это адекватные и приятные люди. Потому хочу поделиться с вами «дзеном» о том, как лучше проводить именно техническое собеседование, да и вообще оценивать навыки тех. специалистов, так как вопрос оценки компетентности технического специалиста может быть довольно сложным, особенно если вы не хотите проводить собеседование на 3 часа к ряду. С данной моделью вы вполне можете уложить тех. собеседование в 40-50 минут (а то и быстрее) и быть уверенным в решении на 80-90%. Если про оценку эмоционального интеллекта, базовой мотивации и просто уровня адекватности, информации довольно много, то вот про то, как эффективно оценивать технические навыки специалиста, зачастую, «кто в лес, кто по дрова». Данная статья может быть также полезна и тем, кто просто хочет эффективно расти как специалист, потому как именно их знания и рассматриваются.
Шесть мифов разработки продукта
Большинство менеджеров по разработке продукта стараются реализовать проекты вовремя и в рамках бюджета. У них никогда не хватает ресурсов, а их начальники требуют от них предсказуемых графиков и результатов. Поэтому менеджеры заставляют свои команды быть более бережливыми, писать детальные планы, минимизировать отклонения от графика и ненужные траты ресурсов. Но этот подход, который имеет право на жизнь для реализации на производственных предприятиях, может навредить разработке продукта.
Хотя многие компании относятся к разработке как к промышленному производству, у них есть принципиальные различия. В мире изготовления физических объектов задачи повторяются, действия предсказуемы, а произведённые продукты могут находиться в одно время только в одном месте. При разработке софта многие задачи уникальны, проекту нужно постоянно меняться, а получающийся продукт – это информация, которая может одновременно находиться во многих местах.
Неспособность видеть эти различия приводит к ошибкам, мешающим планировать, исполнять и оценивать проекты по разработке программ. Авторы этого текста в сумме провели более 50 лет за изучением и консультированием компаний, занимающихся разработкой, и мы часто встречали подобные ошибки в совершенно разных областях — включая полупроводники, автомобили, потребительскую электронику, медицинские устройства, софт и финансы. В этой статье мы опишем эти заблуждения и способы обхода создаваемых ими проблем.
Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность