Алгоритмы поиска в строке

Постановка задачи поиска в строке Часто приходится сталкиваться со специфическим поиском, так называемым поиском строки (поиском в строке). Пусть есть некоторый текст Т и слово (или образ) W. Необходимо найти первое вхождение этого слова в указанном тексте. Это действие типично для любых систем обработки текстов. (Элементы массивов Т и W […]

Производительность PHP: планируем, профилируем, оптимизируем

 На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей. Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся […]

Вычисляем по IP: как бороться со спамом в социальной сети

Спам в социальных сетях и мессенджерах — это боль. Боль и для честных пользователей, и для разработчиков. Как с ней борются в Badoo, рассказал Михаил Овчинников на Highload++, далее текстовая версия этого доклада.

Учим матчасть: Фотонки в PvZ

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

Оптимизация запросов MySQL с использованием пользовательских переменных

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

Использование Sphinx для нахождения ближайших объектов по координатам

Для одного из проектов потребовалось реализовать программный функционал поиска ближайших объектов на карте в определенном радиусе от заданной точки с координатами широты и долготы. Такие задачи как правило требуют решения Прямой и Обратной геодезических задач, а поскольку с геодезией я совершенно не дружу, то обратил свое внимание на готовые решения, […]

Сокращатель ссылок на Node и Redis

Началось с того, что я решил попробовать Redis в каком-нить проекте, а поскольку давно планировал сделать собственную сокращалку ссылок, то решил именно ее и написать. Связка NodeJS + Redis вообще показалась наиболее легко реализуемой. Закончилось тем что помимо Redis написал еще и реализацию для MongoDB. Не буду вдаваться в подробности сравнения MongoDB и Redis, на эту тему итак уже написано куча статей […]

Перевернуть строку на PHP

Самая популярная задача на собеседованиях это переворот строки без использования функции srtrev. Решил добавить свои 5 копеек, какой я вижу эту задачу. Первое решение на знание других встроенных функций (никто ведь не запрещал использовать их).

Сниппет для форматирования телефонных номеров

Задача. Есть большой список телефонных номеров, которые нужно переформатировать под единый формат (или форматы). Номера есть нескольких типов 7, 10 и 11 значные. Для каждого из этих типов необходимо вывести номер телефона в своем формате. В php есть такие функции как money_format и number_format, но нет такой функции как phone_format, этот пробел я и […]

Как поменять местами значения в колонках таблицы

Условия задачи: есть MySQL таблица table1. Используя только язык SQL запросов необходимо поменять местами значения из колонок value1 и value2. Структура таблицы имеет следующий вид: CREATE TABLE `table1` ( `id` INT NOT NULL AUTO_INCREMENT , `value1` VARCHAR(50) NOT NULL DEFAULT » , `value2` VARCHAR(50) NOT NULL DEFAULT » , PRIMARY KEY (`id`) ) ENGINE = MyISAM;