Как стать автором
Обновить
1
0
Олексій @Assada

Пользователь

Отправить сообщение

Уязвимость ВКонтакте: отправляем сообщение с кодом восстановления страницы на чужой номер

Время на прочтение5 мин
Количество просмотров129K


Обычным весенним днем, занимаясь «подготовкой» к ЕГЭ по информатике, наткнулся на статью об уязвимости Facebook, позволявшей взломать все аккаунты в социальной сети, за которую выплатили 15000$. Суть уязвимости заключалась в переборе кодов восстановления на тестовом домене компании. Я подумал, а чем собственно ВКонтакте хуже? И решил попробовать провернуть подобный трюк у них. Зная, что веб-версия уже достаточно хорошо исследована, жертвой должен был стать Android клиент, а что из этого вышло можно прочитать под катом.
Всего голосов 221: ↑219 и ↓2+217
Комментарии144

Вебсокеты на php. Выбираем вебсокет-сервер

Время на прочтение6 мин
Количество просмотров123K
Давным-давно я публиковал статью на хабре, как написать свой вебсокет-сервер с нуля. Статья переросла в библиотеку. Несколько месяцев я занимался её развитием, ещё несколько лет — поддержкой и багфиксом. Написал модуль интеграции с yii2. Какой-то энтузиаст написал интеграцию с laravel. Моя библиотека совместима с php7. Недавно я решил отказаться от её дальнейшей поддержки (причины ниже), поэтому хочу помочь её пользователям перейти на другую библиотеку.


Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии58

GitLab CI для непрерывной интеграции и доставки в production. Часть 1: наш пайплайн

Время на прочтение6 мин
Количество просмотров150K


Итак, GitLab CI: что можно ещё рассказать о нём? На хабре уже есть статьи про установку, про настройку раннеров, про командное использование, про GitLab Flow. Пожалуй, не хватает описаний того, как используется GitLab CI в реальном проекте, где задействовано несколько команд. А в современном мире разработки ПО это действительно так: ведь есть (как минимум) разработчики, тестировщики, DevOps- и релиз-инженеры. С подобным разделением на команды мы работаем уже несколько лет. В этой статье я расскажу о том, как мы, используя и улучшая возможности GitLab CI, реализовали и применяем в production для коллектива из нескольких команд процессы непрерывной интеграции (CI) и отчасти доставки приложений (CD).
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии25

Big Data в Райффайзенбанке

Время на прочтение6 мин
Количество просмотров23K
Всем привет! В этой статье мы расскажем про Big Data в Райффайзенбанке. Но прежде чем перейти к сути, хотелось бы внести ясность по поводу самого определения Big Data. Действительно, в последние несколько лет этот термин употреблялся во множестве контекстов, что привело к размытию границ самого термина и потере содержательной части. Мы в Райффайзенбанке выделили три направления, которые мы относим к Big Data:
Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии44

Observer vs Pub-Sub

Время на прочтение4 мин
Количество просмотров66K
Observer и Pub-sub, наверное самые известные паттерны взаимодействия в мире разработки интерфейсов и JavaScript. Но несмотря на свою известность, некоторые разработчики считают эти паттерны одинаковыми, что и послужило подспорьем написать данную статью.



Пофилософствуем
Всего голосов 16: ↑13 и ↓3+10
Комментарии43

Использование Pinba в Badoo: то, чего вы еще не знаете

Время на прочтение13 мин
Количество просмотров11K


Привет, Хабр! Меня зовут Денис, я – PHP-разработчик в Badoo, и сейчас я расскажу, как мы сами используем Pinba. Предполагается, что вы уже знаете, что это за инструмент, и у вас есть опыт его эксплуатации. Если нет, то для ознакомления рекомендую статью моего коллеги, Максима Матюхина.


Вообще на Хабре есть достаточно материалов об использовании Pinba в различных компаниях, включая пост Олега Ефимова в нашем блоге. Но все они касаются других компаний, а не Badoo, что немного нелогично: сами придумали инструмент, выложили в open source и не делимся опытом. Да, мы часто упоминаем Pinba в различных публикациях и в докладах на IT-конференциях, но обычно это выглядит как-то так: «А вот эти замечательные графики мы получили по данным из Pinba» или «Для измерения мы использовали Pinba», и всё.


Общение с коллегами из других компаний показало две вещи: во-первых, достаточно много людей используют Pinba, а во-вторых, часть из них не знают или не используют все возможности этого инструмента, а некоторые не до конца понимают его предназначение. Поэтому я постараюсь рассказать о тех нюансах, которые явно не указаны в документации, о новых возможностях и наиболее интересных кейсах применения Pinba в Badoo. Поехали!

Читать дальше →
Всего голосов 56: ↑56 и ↓0+56
Комментарии8

Миллион WebSocket и Go

Время на прочтение11 мин
Количество просмотров99K

image


Привет всем! Меня зовут Сергей Камардин, я программист команды Почты Mail.Ru.


Это статья о том, как мы разработали высоконагруженный WebSocket-сервер на Go.


Если тема WebSocket вам близка, но Go — не совсем, надеюсь, статья все равно покажется вам интересной с точки зрения идей и приемов оптимизации.

Читать дальше →
Всего голосов 119: ↑115 и ↓4+111
Комментарии78

Как HBO делала приложение Not Hotdog для сериала «Кремниевая долина»

Время на прочтение23 мин
Количество просмотров24K


Сериал HBO «Кремниевая долина» выпустил настоящее приложение ИИ, которое распознаёт хотдоги и не-хотдоги, как приложение в четвёртом эпизоде четвёртогого сезона (приложение сейчас доступно для Android, а также для iOS!)

Чтобы добиться этого, мы разработали специальную нейронную архитектуру, которая работает непосредственно на вашем телефоне, и обучили её с помощью TensorFlow, Keras и Nvidia GPU.
Всего голосов 25: ↑25 и ↓0+25
Комментарии12

Внутреннее представление значений в PHP7 (часть 1)

Время на прочтение13 мин
Количество просмотров28K
В связи с большим объёмом материала, публикацию пришлось разбить на две части. В первой из них я расскажу о том, как менялись реализации zval (Zend value) начиная с пятой версии PHP. Также обсудим реализацию ссылок. Во второй части будет подробно рассмотрена реализация отдельных типов данных, таких как строки и объекты.

zval’ы в PHP 5


Структура zval в пятой версии выглядит так:

typedef struct _zval_struct {
    zvalue_value value;
    zend_uint refcount__gc;
    zend_uchar type;
    zend_uchar is_ref__gc;
} zval;

Как видите, конструкция включает в себя value, type и дополнительную информацию __gc, о чём я расскажу ниже. Value представляет собой объединение различных возможных значений, которые может хранить zval:
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии3

Интерактивная кредитка для ввода платежа

Время на прочтение6 мин
Количество просмотров12K
Эта статья повествует о не самом сложном способе разработки интерактивных элементов практически сразу в браузере, если вы не разработчик.



Интерфейсная анимация сейчас в тренде. Причин несколько: улучшение юзабилити и повышение привлекательности продукта в целом. И третья — развитие инструментов для анимирования на глобальном IT рынке. Сейчас так много разных утилит, чтобы оживить любой дизайн / прототип, что странно было бы пройти мимо такого движения, нужно приобретать навыки. Инструментов множество, перечислять все не буду. Но об одном конкретном упомяну…

Я работаю в Axure. Самый весомый плюс для меня оказался в нём благодаря возможности создавать интерфейсы практически сразу в браузере. Я вижу все элементы, шрифты, отступы сразу в “боевой готовности”, едва успев внести их в макет. Я знаю, что такими же увидят их разработчики. Я знаю, что в 99% ничего “не поломается” в дизайне.
Всего голосов 15: ↑14 и ↓1+13
Комментарии33

Docker: Окружение для тестирования

Время на прочтение13 мин
Количество просмотров83K


Последние пять лет принесли в нашу жизнь огромное количество технологий, с помощью которых можно быстро создавать изолированные окружения для разработки и тестирования. Но не смотря на это, организовать стабильное окружение для тестирования — далеко не самая простая задача. А если нужно тестировать сетевые взаимодействия компонентов и анализировать предельный уровень нагрузки на них, то задача становится еще сложнее. Добавив возможность быстрого развертывания окружения и гибкой настройки отдельных компонентов, мы сможем получить небольшой интересный проект.
В этой статье мы подробно расскажем о создании окружения на базе Docker контейнеров для тестирования нашего клиент-серверного приложения. При этом, если смотреть глобально, то данная статья будет хорошей иллюстрацией использования Docker и его ближайшей экосистемы.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

PHP extension. Пишем простой массив с Traversable и ArrayAccess

Время на прочтение26 мин
Количество просмотров10K
В этой статье предлагаю на примере простого массива рассмотреть как именно работают внутренние интерфейсы Traversable и ArrayAccess.

Сразу приведу список ресурсов, на которые далее по тексту будет множество ссылок.

И про платформу: я писал код по ubuntu, так что для других linux дистрибутивов (да и OS X) понадобится минимум изменений (поменять apt-get). Если хотите писать под Windows, то придется поискать информацию в других интернетах (все равно никто не пишет код по windows).

Картинки не будет. Приступаем.
Всего голосов 29: ↑29 и ↓0+29
Комментарии5

Побеждаем Android Camera2 API с помощью RxJava2 (часть 1)

Время на прочтение21 мин
Количество просмотров37K


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


Ниже будет показан пример использования Camera2 API, который пока довольно слабо задокументирован и изучен сообществом. Для его укрощения будет использована RxJava2. Вторая версия этой популярной библиотеки вышла сравнительно недавно, и примеров на ней тоже немного.


Для кого этот пост? Я рассчитываю, что читатель – умудрённый опытом, но всё ещё любознательный Android-разработчик. Очень желательны базовые знания о реактивном программировании (хорошее введение – здесь) и понимание Marble Diagrams. Пост будет полезен тем, кто хочет проникнуться реактивным подходом, а также тем, кто хочет использовать Camera2 API в своих проектах. Предупреждаю, будет много кода!


Исходники проекта можно найти на GitHub.

Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии9

PHDays 2017: как это было

Время на прочтение2 мин
Количество просмотров3.6K


Команда mClouds.ru побывала на международном форуме по практической безопасности Positive Hack Days (PHDdays VII), который прошёл 23-24 мая 2017 года в Москве. Форум собрал большой круг специалистов в области информационной безопасности, руководствуясь принципом — минимум рекламы и максимум полезных знаний.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии2

Must-Have 3: игровые интерфейсы и ассеты для дизайнера и художника

Время на прочтение4 мин
Количество просмотров15K
Эти наборы интерфейсов будут незаменимыми для тех, кто хочет придать игре окончательный вид или добавить в нее графический интерфейс, способный объединить остальные ассеты.


Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии2

Как изменились карты Google и Apple за год

Время на прочтение8 мин
Количество просмотров29K
Вскоре после того, как в июне прошлого года автор опубликовал сравнение карт, он заметил, что компания Google обновила некоторые участки:

image

Совпадение это или нет, но это было любопытно. Автор задумался о том, что еще изменится, если мы будем продолжать следить за картами. Будет ли Google продолжать детализировать карту? И начнет ли Apple по примеру Google тоже вносить свои изменения?

Автор решил написать скрипт, который делает скриншоты карт Google и Apple [1]. Спустя тринадцать месяцев удалось собрать данные за целый год:

image
Всего голосов 46: ↑41 и ↓5+36
Комментарии65

Как обойти блокировки сайтов, не направляя весь трафик через VPN

Время на прочтение3 мин
Количество просмотров122K
Обход блокировок — насущная необходимость. Возможно, сегодня в вашей стране заблокировали ресурсы, которые вы не так часто посещали, однако мир нестабилен и завтра в списке могут оказаться ваши любимые сайты и приложения.

На Хабре, да и не только на нем, есть множество инструкций, как обойти блокировки с помощью VPN, в частности, с помощью OpenVPN, есть и прекрасные пошаговые консольные скрипты установки OpenVPN. Однако чаше всего подобные инструкции подразумевают, что в результате весь интернет-трафик будет идти через VPN-соединение, что может быть неудобным по ряду причин. И в этом коротком посте я хотел рассказать, как настроить OpenVPN Access Server и обычный OpenVPN для обслуживания только заблокированных ресурсов.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии52

О дженериках в PHP и о том, зачем они нам нужны

Время на прочтение6 мин
Количество просмотров32K


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

Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии89

GPD Win — исследуем миниатюрный ноутбук с диагональю 5.5", предназначенный для игр и эмуляторов

Время на прочтение8 мин
Количество просмотров35K
Я обожаю миниатюрные клавиатурные устройства. Эта любовь у меня еще со времен первого Psion 5MX. С тех пор была еще Nokia E90 и так далее. Увы, со временем небольших устройств с клавиатурой становится все меньше, а любить их я не перестал (может быть тоже стоит сказать, увы). Поэтому мимо GPD Win пройти я никак не мог. Выглядит он вот так.



Диагональ его экрана составляет всего 5,5", он помещается во внутреннем кармане куртки, но внутри это самый что ни на есть полноценный нетбук на Windows.
Читать дальше →
Всего голосов 28: ↑20 и ↓8+12
Комментарии115

Ценности GitLab

Время на прочтение11 мин
Количество просмотров17K


Компания GitLab уже несколько раз привлекала наше внимание: мы писали об инциденте с базой данных, решении перейти на собственное железо и о том, как пользователи убедили GitLab не уходить из облака. Все эти истории объединяет небывалая открытость, которую проявила компания при ликвидации последствий аварий и принятии жизненно важных решений. Мы решили узнать причины такой публичности и нашли замечательный документ, в котором описаны ценности GitLab.


Помимо открытости в нем оказалось много вещей, с которыми, как нам кажется, будет интересно познакомиться и читателям Хабра. Многие из нас работают в похожих условиях: из дома, общаясь удаленно, иногда годами не видя своих коллег. У такого типа работы есть не только преимущества, но и недостатки, а компания GitLab накопила немалый опыт, который может оказаться полезен нам всем. Перевод ценностей GitLab вы можете найти под катом.

Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии10

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность