Рубрика «Блог компании Одноклассники» - 6

О пользе технологий больших данных в повседневной жизни - 1

Среди многих исследователей и разработчиков бытует мнение, что инструменты обработки больших данных в области машинного обучения часто избыточны – всегда можно сделать сэмпл, загнать в память и использовать любимые R, Python и Matlab. Но на практике встречаются задачи, когда даже относительно небольшой объем данных, размером в пару гигабайт, обработать в таком стиле затруднительно – и тут-то и могут помочь те самые технологии «больших данных».

Хорошим наглядным примером такой задачи является задача нашего конкурса SNA Hakathon 2016: дан социальный граф одного миллиона пользователей и их демография. Задача — найти скрытые связи в этом графе. Размер предоставленного графа всего два гигабайта в GZip и, казалось бы, применение технологий больших данных здесь не оправданно, но это только на первый взгляд.

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

Казалось бы, для решение этой задачи впору поднимать небольшой кластер, но спешить не стоит: взяв на вооружение принципы обработки больших данных и соответствующие технологии, задачу можно решить и на обычном ноутбуке. Из принципов мы возьмем «разделяй и властвуй» и «руби хвосты сразу», а в качестве инструмента — Apache Spark.
Читать полностью »

Класс дедлоков про дедлок классов - 1

Знаете ли вы, как избежать дедлоков в своей программе? Да, этому учат, про это спрашивают на собеседованиях… И тем не менее, взаимные блокировки встречаются даже в популярных проектах серьёзных компаний вроде Google. А в Java есть особый класс дедлоков, связанный с инициализацией классов, простите за каламбур. Такие ошибки легко допустить, но трудно поймать, тем более, что сама виртуальная машина вводит программиста в заблуждение.

Сегодня пойдёт речь про взаимные блокировки при инициализации классов. Я расскажу, что это такое, проиллюстрирую примерами из реальных проектов, попутно найду багу в JVM, и покажу, как не допустить такие блокировки в своём коде.

Читать полностью »

Всем привет! Меня зовут Артур, я аналитик в отделе анализа данных департамента рекламных технологий Mail.Ru Group. И я попробую рассказать о том, как мы используем кластеризацию в своей работе.

Чего в этой статье не будет: я не буду рассказывать об алгоритмах кластеризации, об анализе качества или сравнении библиотек. Что будет в этой статье: я покажу на примере конкретной задачи что такое кластеризация (с картинками), как ее делать если данных действительно много (ДЕЙСТВИТЕЛЬНО много) и что получается в результате.

Как мы кластеризуем подарки в ОК
Читать полностью »

История «Титанов», часть 2

Первая часть истории «Титанов» закончилась на том, что мы завершили разработку новой социальной мидкорной стратегии. Игра в тестовом режиме была запущена в Одноклассниках, а полноценный запуск состоялся 15 августа. Почти целый месяц после релиза мы изучали статистику, и можно сказать, что запуск прошел вполне успешно. Сегодня я предлагаю вам посмотреть на реальную статистику современной социальной игры, а также попробовать на её основе сделать предположения о возможных изменениях в игре.
Читать полностью »

Продолжаем разбирать задачи прошлого года, и на очереди задача про почту.

«В почту уже давно приходят не только письма от друзей. Большинство ящиков забиты рассылками, квитанциями, авиа- и кинобилетами, заказами из интернет-магазинов, купонами, уведомлениями от соцсетей и другими «полезными» письмами от роботов. Сухой и скучный список явно не лучший способ отображения такого контента. Придумайте, как адаптировать веб-версию любой популярной почты под существующую реальность. И, конечно, не забудьте про письма от людей — они самые важные».

Несколько решений прокомментировали главные дизайнеры трёх крупнейших почт в России: Томилов Сергей (Яндекс), Алексей Кандауров (Mail.Ru) и Александр Ковбович, разработавший последнюю версию дизайна Рамблер Почты. Давайте посмотрим, что сказали профи нашим конкурсантам.

Антон Тюленев

Улучшение почты: решения задачи Russian Design Cup 2013
Всё решениеЧитать полностью »

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

В каждой эпохе развития IT-индустрии существовали свои buzzwords — слова, которые у всех были на слуху, каждый знал, что за ними будущее, но лишь немногие знали, что действительно стоит за этим словом и как им правильно воспользоваться. В своем время баззвордами были и «водопад», и «XML», и «Scrum», и «веб-сервисы». Сегодня одним из основных претендентов на звание баззворда №1 является «big data». С помощью больших данных британские ученые диагностируют беременность по чеку из супермакета с точностью, близкой к ХГЧ-тесту. Крупные вендоры создают платформы для анализа больших данных, стоимость которых зашкаливает за миллионы долларов, и нет сомнений, что каждый пиксель в любом уважающем себя интернет-проекте будет строиться с учетом больших данных не позднее, чем к 2020 году.
Читать полностью »

“А я… карбюратор промываю!”
Анекдот

Введение

В детском садике мы с единомышленниками препарировали кузнечиков в надежде разобраться в их строении. В школе распаивали радиоприёмник “Россия”. В институте дошла очередь до автомобилей, гайки которых были многократно переставлены. Интересы поменялись, но желание “разбирать” иногда просыпается, и сегодня оно направлено на Андроид.

Сколько раз вас выручало наличие исходников Андроида? Меня — уже не счесть. Андроид — открытый проект, но, к сожалению, у нас есть возможность только читать; править код Андроида, не будучи сотрудником Google, практически невозможно. Погрустим над этим моментом и загрузим репозиторий. Как это сделать, отлично описано на официальном сайте.

Обзор особенностей ядра Андроида
Читать полностью »

Копаемся в памяти JVM. Манипуляции с флагами

HotSpot JVM имеет множество опций для отслеживания происходящего в виртуальной машине: PrintGC, PrintCompilation, TraceClassLoading и т.п. Как правило, они включаются параметрами командной строки, например, -XX:+PrintGCDetails. Однако порой возникает необходимость включить или выключить такой флаг непосредственно во время работы приложения, когда перезапуск JVM с другими параметрами невозможен. Этого можно добиться как штатным, так и хакерским способом, причем последний и мощнее, и интереснее. Впрочем, внимания заслуживают оба.

Из данной статьи вы узнаете:

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

Читать полностью »

Ни одна социальная сеть не может обойтись без социальных кнопок для распространения контента. Устанавливая кнопки соцсетей на сайт, его владелец получает новые возможности по распространению своего контента, а социальные сети — необходимую им активность внутри сети. И именно поэтому разработка социальных кнопок требует дотошности — нужно убедиться, что и у владельцев сайтов и у пользователей кнопки будут работать безупречно.

Под катом — список проблем, которые мы выявили за время над нашей кнопкой Класс, а также способы их разрешения, которые мы проверили на собственном опыте.

Читать полностью »

Итак, Russian AI Cup завершен!

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

Раунд 1: 900 участников из Песочницы, тройка лидеров выглядела так:
1. Геннадий Короткевич — tourist (Гомель, Беларусь)
2. Роман Удовиченко — Romka (Белорусский ГУ, Минск, Беларусь)
3. Николай Вабищевич — Mr.Smile (Москва, Россия)

Раунд 2: 300 + 45 участников(Изначально должно было пройти 300 человек, согласно правилам. Но ввиду большой популярности мы выдали 45 вайлдкардс тем кто следовал сразу за 300), лучшими на этом этапе стали:
1. Александр Миланин — Milanin (Таврический НУ, Симферополь, Украина)
2. Роман Удовиченко — Romka (Белорусский ГУ, Минск, Беларусь)
3. Александр Важев — valex (Челябинск, Россия)

И наконец (барабанная дробь…) в финале чемпионата Russian AI Cup 2012 сразились 50 участников, и мы торжественно объявляем победителей!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js