Pull to refresh

Как мы мигрировали миллионные страны за рабочий день

Badoo corporate blog High performance *Website development *
Badoo — крупнейшая в мире социальная сеть для знакомств с новыми людьми, насчитывающая 190 миллионов пользователей.
Все данные хранятся в двух дата-центрах — европейском и американском. Некоторое время назад мы исследовали качество интернет-соединения у наших пользователей из Азии и обнаружили, что для 7 миллионов пользователей наш сайт будет загружаться в 2 раза быстрее, если мы переместим их из европейского дата-центра в американский. Перед нами впервые встала задача крупномасштабной миграции данных пользователей между дата-центрами, с которой мы успешно справились: мы научились перемещать 1,5 миллиона пользователей за один рабочий день! Мы смогли перемещать целые страны! В первой части мы подробно расскажем о поставленной перед нами задаче и о том, какого результата мы достигли.
Читать дальше →
Total votes 106: ↑87 and ↓19 +68
Views 33K
Comments 41

Эксплуатируем root-уязвимость в роутерах Asus

Information Security *
Sandbox
В начале 2015 года компания Asus исправила критичнейшую уязвимость в своих роутерах. «Дыра» была в службе по имени infosvr, использующейся утилитами Asus для облегчения настройки роутера путём его автоматического обнаружения в локальной сети. Уязвимость позволяла выполнять любые команды с правами root (ведь infosvr тоже root), что давало злоумышленнику полный контроль над системой.

Но Asus выпустила исправленные прошивки. Теперь это всё в прошлом. Или нет? Хм… А как часто обыватели обновляют прошивки на своих роутерах?



Прошу под кат за подробностями, историей обнаружения, исследованиями, инструкциями и… эксплоитами.
Читать дальше →
Total votes 86: ↑86 and ↓0 +86
Views 106K
Comments 33

Четыре способа извлечения значений из скрытых полей в C#

Abnormal programming *.NET *C# *
Добрый день. Не так давно на хабре проскакивала статья, в которой показывалась возможность обращения к закрытым полям объекта из другого экземпляра того же класса.

public class Example
{
  private int JustInt;

  // Some code here

  public void DoSomething(Example example)
  {
    this.JustInt = example.JustInt; // Вполне валидная строка, некоторых удивляет
  }
}

Почему бы не пойти дальше, и не забирать данные из скрытых полей иных классов?
Total votes 20: ↑18 and ↓2 +16
Views 34K
Comments 27

Программный графический сопроцессор на STM32

Developing for Arduino *


Прошел год и многие вечера коротались написанием очередного, куда более крупного и на этот раз полезного проекта. В прошлый раз везде приходилось ужиматься, как только возможно. Ресурсов того многострадального камня мне стало не хватать и в какой-то момент пришло интересное решение. Отдать часть задач другому контроллеру. (Как и в прошлый раз, под катом много воды и изображений.)
Читать дальше →
Total votes 62: ↑61 and ↓1 +60
Views 32K
Comments 10

Портативная аудиосистема MOBISound

Даджет corporate blog Gadgets Sound
Начав работу в блоге компании Даджет с обзора вибродинамика PartyFon MAX, который к моей радости был вами встречен весьма тепло, я решил продолжить работу именно с акустическими системами компании.
И сегодня я вас познакомлю с еще одной их представительницей — портативной аудиосистемой MOBISound. Она достаточно традиционна в техническом плане, но в то же время обладает весьма необычным форм-фактором.
Дисклэймер в отношении зеленого ковра, который присутствует на КДПВ, и во всех остальных фотографиях обзора, я, с вашего позволения размещу до ката.
Disclaimer: мне показалось, что в один из первых дней такой долгожданной весны, зеленый ковер фон должен создать правильный настрой :)
Disclaimer2: да, это просто Bluetooth аудио-система (пусть, качественная, пусть, в необычном форм-факторе). Не ругайтесь сильно, а если вам такие штуки интересны,
Добро пожаловать под кат
Total votes 10: ↑9 and ↓1 +8
Views 3.8K
Comments 4

C и Python: мост между мирами

Python **nix *C *Development for Linux *
Tutorial

Вам интересно подключить всю мощь Python в свою программу на C? Отлично: в статье содержится минимальный крэш-курс по подключению интерпретатора Python, загрузке своего кода и взаимодействию с ним из программы на C.

Приготовления завершены
Total votes 7: ↑5 and ↓2 +3
Views 7.6K
Comments 5

Ansible-vault decrypt: обходимся без Ansible

Python *Delphi **nix *DevOps *

Вы когда-нибудь пробовали разобраться в том, что же происходит внутри ansible-vault? А ещё лучше - не только разобраться, но и что-то сделать на основе полученных знаний? Так вот, статья именно об этом: разбираем исходники ansible, а потом пишем свой расшифровщик для ansible-vault.

Язык для написания расшифровщика был выбран по принципу "я - автор статьи, выбираю что хочу язык под задачу, исходя из технических требований". Результат компилируется за 0.6 секунд в исполняемый файл размером 800Кб, который не требует внешних библиотек.

Заинтригованы? Добро пожаловать под кат!

ansible-vault decrypt go brr
Total votes 8: ↑8 and ↓0 +8
Views 8.3K
Comments 28

Импортозамещение и параллельный импорт без глянца

Server Administration *Reading room

Пришла к нам парочка серверов по программе импорто-параллельно замещения, немного покрутили их в руках. С чем придется столкнуться.

Читать далее
Total votes 50: ↑47 and ↓3 +44
Views 37K
Comments 147

Анализ различий подачи новостей в Telegram-каналах

Python *Data Mining *Data visualization *Machine learning *Natural Language Processing *
Sandbox

Привет. Прошло уже почти полгода как я сделал новостной агрегатор каналов в Телеграме с открытым исходным кодом. Краткую статью про него можно прочитать на VC. Здесь же я бы хотел поделиться некоторыми интересными вещами, которые я нашёл в данных за всё время работы агрегатора.

Дисклеймер 1: многое из этого отчёта может показаться политизированным. Но здесь я не делаю никаких выводов про то, кто прав, а кто виноват; кто грязный пропагандист, а кто носитель священной истины.

Дисклеймер 2: это не руководство по визуализации данных средствами Plotly и PyVis. В самой статье я не привожу никакого кода и не объясняю, почему он устроен именно так. При этом Colab с кодом открыт, и примеры оттуда вполне можно использовать.

Google Colab: ссылка на ноутбук

Хочу знать подробности!
Total votes 47: ↑41 and ↓6 +35
Views 9.7K
Comments 23

Улучшаем маршруты обхода на складе силами веб-программиста и математики

Algorithms *Mathematics *Industrial Programming *

Сразу к сути: есть склад, где все бизнес-процессы уже отлажены и в целом всех всё устраивает. Ничего, что даст рост в 30%, сделать уже невозможно, но хочется. Поставлена цель: оптимизировать маршрут, по которому идёт сборщик товаров, чтобы товар собирался быстрее. Результат 2-3% роста вполне устроит. Ограничения:

- останавливать работу склада для экспериментов нельзя
- денег — кроме зарплаты — не выделим
- специалистов в этой области не имеется — свободен только веб-программист, да и тот без профильного образования
- закончить нужно не то, чтобы ещё вчера, но через две недели точно.

Статью можно считать продолжением темы наглядного применения известных алгоритмов где-нибудь в промышленности. В этот раз в работу вступает алгоритм k-ближайших соседей.

Для прочтения знать сам алгоритм k-ближайших соседей не требуется — он очень простой и станет ясен ещё в ходе прочтения. Он чем-то похож на теорему Пифагора, только на стероидах.

Читать 2500 слов
Total votes 10: ↑10 and ↓0 +10
Views 3.4K
Comments 18