Как стать автором
Обновить
0
@schpncread⁠-⁠only

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

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

Архитектура и алгоритмы индексации аудиозаписей ВКонтакте

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


Расскажем о том, как устроен поиск похожих треков среди всех аудиозаписей ВКонтакте.

Зачем всё это надо?


У нас действительно много музыки. Много — это больше 400 миллионов треков, которые весят примерно 4 ПБ. Если загрузить всю музыку из ВКонтакте на 64 ГБ айфоны, и положить их друг на друга, получится башня выше Эйфелевой. Каждый день в эту стопку нужно добавлять еще 25 айфонов — или 150 тысяч новых аудиозаписей объёмом 1.5 ТБ.

Конечно, далеко не все эти файлы уникальны. У каждого аудио есть данные об исполнителе и названии (опционально — текст и жанр), которые пользователь заполняет при загрузке песни на сайт. Премодерации нет. В результате мы получаем одинаковые песни под разными названиями, ремиксы, концертные и студийные записи одних и тех же композиций, и, конечно, совсем неверно названные треки.

Если научиться достаточно точно находить одинаковые (или очень похожие) аудиозаписи, можно применять это с пользой, например:

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

Читать дальше →
Всего голосов 90: ↑88 и ↓2+86
Комментарии87

Типичные распределения вероятности: шпаргалка data scientist-а

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

У data scientist-ов сотни распределений вероятности на любой вкус. С чего начать?


Data science, чем бы она там не была – та ещё штука. От какого-нибудь гуру на ваших сходках или хакатонах можно услышать:«Data scientist разбирается в статистике лучше, чем любой программист». Прикладные математики так мстят за то, что статистика уже не так на слуху, как в золотые 20е. У них даже по этому поводу есть своя несмешная диаграмма Венна. И вот, значит, внезапно вы, программист, оказываетесь совершенно не у дел в беседе о доверительных интервалах, вместо того, чтобы привычно ворчать на аналитиков, которые никогда не слышали о проекте Apache Bikeshed, чтобы распределённо форматировать комментарии. Для такой ситуации, чтобы быть в струе и снова стать душой компании – вам нужен экспресс-курс по статистике. Может, не достаточно глубокий, чтобы вы всё понимали, но вполне достаточный, чтобы так могло показаться на первый взгляд.
Читать дальше →
Всего голосов 86: ↑85 и ↓1+84
Комментарии28

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Время на прочтение9 мин
Количество просмотров86K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Всего голосов 158: ↑149 и ↓9+140
Комментарии15

Inperfo – минималистичный мониторинг сети

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

image


В первую очередь Inperfo предназначен для мониторинга сетевых интерфейсов на свитчах и роутерах. Конечно же, можно мониторить сетевые интерфейсы непосредственно на серверах, когда, например, у вас нет доступа к сетевому оборудованию, но есть десятки или сотни арендуемых серверов (физических или виртуальных).

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

Дело было вечером. Автомасштабируемый веб-сервис с балансировкой нагрузки на примере Bitrix в Google Cloud Platform

Время на прочтение7 мин
Количество просмотров11K
Сразу стоит оговориться, что данная статья написана скорее не для того, чтобы показать возможность работы данного продукта на Google Cloud Platform (GCP), он и без этого будет на ней работать. Bitrix был взят для опытов просто как популярная платформа. Он и сам умеет строить пулы, ноды и прочее в своем “веб окружении”, правда со своими грабельками. И именно поэтому были взяты даже машины на Debian для тестов, а не любимый всеми CentOS.

На самом деле материал применим ко многим веб-проектам. Точнее это простенький гайд по построению отказоустойчивых и распределенных приложений на базе виртуальных машин Google Compute Engine, баз Google Cloud SQL и балансировщика нагрузки Google.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии8

Как сделано интро на 64k

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

Введение в интро


Демосцена — это о создании классных штук, которые работают в реальном времени (как бы «крутятся в вашем компьютере»). Их называют демки. Некоторые из них по-настоящему маленькие, скажем, 64k или меньше — такие называются интро. Название происходит от рекламирования или представления взломанных программ (crack intro). Итак, интро — это просто маленькая демка.

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

Бинарник под Windows: guberniya_final.zip (61.8 kB) (немного ломается на картах AMD)
Всего голосов 91: ↑90 и ↓1+89
Комментарии24

$126 за 5 минут: как использовать ценовую разницу для стран против маркетологов

Время на прочтение4 мин
Количество просмотров91K
Привет, Geektimes! Не за горами 12 июня, а значит, нас снова ждут длинные выходные. Как и в мае, многие россияне улетят в небольшой отпуск, чтобы отдохнуть от суеты. Поэтому в преддверии июньских выходных мы решили коснуться интересной и прикладной темы — как сэкономить деньги, используя VPN.

Самое простое — экономия на аренде автомобиля.

Пример: бронируем автомобиль в Брисбане (Австралия), сначала используя швейцарский IP:


Теперь меняем IP-адрес на США и пробуем снова:


Сэкономили $9 в день. Представьте, что вы едете путешествовать по Австралии на 2 недели. Соответственно, вы сэкономите $126, что очень неплохо. Сервисы по аренде автомобилей предлагают разные цены и предложения в зависимости от страны. Если вы попробуете забронировать автомобиль, допустим, из США, России и Бангкока, цены будут отличаться.

Разберем подробнее и другие примеры:
Читать дальше →
Всего голосов 120: ↑118 и ↓2+116
Комментарии140

Как говорить с искусственным интеллектом?

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

Перевод поста Стивена Вольфрама (Stephen Wolfram) "How Should We Talk to AIs?".
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации



Содержание


Вычисления — это сила
Язык вычислительного мышления
Понимание ИИ
Что будет делать ИИ?
Постановка целей для ИИ
Разговор одного ИИ с другим
Сбор информации: обзор миллиарда лет
А что, если бы каждый мог писать код?
Действительно ли это будет работать?
Скажу больше



Еще совсем недавно идея иметь компьютер, который может отвечать на вопросы на английском языке, казалась научной фантастикой. Но когда мы в 2009 году выпустили Wolfram|Alpha, одним из самых больших сюрпризов (по крайней мере, для меня!) стало то, что мы сумели сделать наш продукт реально работающим. И теперь люди ежедневно задают личным помощникам несметное количество вопросов — на обычном разговорном языке.



Все это достаточно неплохо работает (хотя мы всегда стараемся сделать лучше!). Но как насчет более сложных вещей? Как общаться с искусственным интеллектом?

Я долго думал об этом, пытаясь совместить философию, лингвистику, неврологию, информатику и другие области знания. И я понял, что ответ всегда был перед моим носом, и лежал он в той сфере, которой я занимался последние 30 лет: Wolfram Language.

Может быть, это как раз тот случай, когда у вас есть молоток, и вы видите вокруг одни гвозди. Хотя я уверен, что дело не только в этом. По крайней мере, продумывание этого вопроса — хороший способ понять больше об искусственном интеллекте и его взаимоотношениях с людьми.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии7

No free lunch. Введение в участие в соревнованиях по анализу данных на платформе Kaggle

Время на прочтение14 мин
Количество просмотров14K
Цель статьи — познакомить широкую аудиторию с соревнованиями по анализу данных на Kaggle. Я расскажу о своем подходе к участию на примере Outbrain click prediction соревнования, в котором я принимал участие и занял 4ое место из 979 команд, закончив первым из выступающих в одиночку.

Для понимания материала желательны знания о машинном обучении, но не обязательны.
Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии10

Заметки о Cisco Catalyst: настройка VLAN, сброс пароля, перепрошивка операционной системы IOS

Время на прочтение11 мин
Количество просмотров101K
Пошаговое руководство по выполнению наиболее типовых задач, связанных с обслуживанием коммутаторов Cisco Catalyst 2950. А именно: настройка VLAN, сброс пароля, переустановка повреждённой операционной системы Cisco IOS. Подробно рассмотрен вопрос подключения, в том числе через com-порт.


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

О возникновении спиралей в циклическом клеточном автомате

Время на прочтение6 мин
Количество просмотров8.4K
О циклических клеточных автоматах было написано в этой статье. Целью данной статьи является рассмотрение условий возникновения спиралей, также известных как демоны. Средством достижения цели является изменение начальных условий и слежение за развитием клеточного автомата. В результате будут сделаны обобщающие выводы об условиях образования спиралей.

Кратко опишем циклический клеточной автомат.
Решетка представляет собой замкнутую двумерную ортогональную сетку квадратных клеток, каждая из которых находится в одном из 15 возможных состояний, в пределах от 0 до 14.


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


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



Как видно из рисунка выше, клеточный автомат проходит три этапа:

1. Случайное поле.
2. Цветные области.
3. Спирали, также известные как демоны.

Добавим еще одно измерение к решетке. В этом измерении мы отобразим состояние ячейки. Ячейка будет подниматься до тех пор, пока она не достигнет вершины кубоида, а затем она упадет вниз. Такая модель является хорошим представлением об изменении состояния клеточного автомата.


Выберем несколько (например 12) случайных ячеек и рассмотрим изменение их состояний во времени.
Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии6

Делаем любой объект потокобезопасным

Время на прочтение30 мин
Количество просмотров75K
image

В этих 3-ех статьях я детально расскажу об атомарных операциях, барьерах памяти и о быстром обмене данными между потоками, а так же о «sequence-points» на примере «execute-around-idiom», а заодно постараемся вместе сделать что-нибудь полезное — умный указатель, который делает любой объект потоко-безопасным для любых операций с его членами переменными или функциями. А затем покажем как используя его достичь производительности высоко-оптимизированных lock-free алгоритмов на 8 — 64 ядрах.
Читать дальше →
Всего голосов 57: ↑57 и ↓0+57
Комментарии29

Мин-Лун Чоу: Что я разрабатывал для Uncharted 4. Часть 1

Время на прочтение3 мин
Количество просмотров12K
Официальный релиз игры Uncharted 4 уже состоялся, и теперь я могу рассказать, что именно разрабатывал для этого проекта. В основном я был занят созданием искусственного интеллекта для неигрового персонажа (НП) из одиночной игры и для ботов из мультиплеера, а также работал над кое-какой игровой логикой. Я не буду останавливаться на вещах, не вошедших в финальную версию, и на незначительных особенностях, о которых слишком долго писать.


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

Удачная модель ветвления для Git

Время на прочтение10 мин
Количество просмотров995K
Перевод статьи Vincent Driessen: A successful Git branching model

В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.



В качестве инструмента управления версиями всего исходного кода она использует Git.

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

Введение в криптографию и шифрование, часть вторая. Лекция в Яндексе

Время на прочтение21 мин
Количество просмотров39K
Мы возвращаемся к самому краткому введению в криптографическую теорию от Владимира ivlad Иванова. Это вторая половина лекции — первую часть мы опубликовали несколько дней назад. К ней даже можно присылать пуллреквесты на гитхабе.


Под катом — расшифровка и часть слайдов.

Всего голосов 55: ↑52 и ↓3+49
Комментарии11

Функциональное программирование в JavaScript с практическими примерами

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

image


Функциональное программирование (ФП) может улучшить ваш подход к написанию кода. Но ФП непросто освоить. Многие статьи и руководства не уделяют внимания таким подробностям, как монады (Monads), аппликативность (Applicative) и т. д., не приводят в качестве иллюстраций практические примеры, которые могли бы помочь нам в повседневном использовании мощных ФП-методик. Я решил исправить это упущение.


Хочу подчеркнуть: в статье сделан упор на том, ЗАЧЕМ нужна фича Х, а не на том, ЧТО такое фича Х.

Читать дальше →
Всего голосов 35: ↑29 и ↓6+23
Комментарии48

Gixy — open source от Яндекса, который сделает конфигурирование Nginx безопасным

Время на прочтение10 мин
Количество просмотров36K
Nginx, однозначно, один из крутейших веб-серверов. Однако, будучи в меру простым, довольно расширяемым и производительным, он требует уважительного отношения к себе. Впрочем, это относится к почти любому ПО, от которого зависит безопасность и работоспособность сервиса. Признаюсь, нам нравится Nginx. В Яндексе он представлен огромным количеством инсталляций с разнообразной конфигурацией: от простых reverse proxy до полноценных приложений. Благодаря такому разнообразию у нас накопился некий опыт его [не]безопасного конфигурирования, которым мы хотим поделиться.



Но обо всем по порядку. Нас давно терзал вопрос безопасного конфигурирования Nginx, ведь он — полноправный кубик веб-приложения, а значит, и его конфигурация требует не меньшего контроля с нашей стороны, чем код самого приложения. В прошлом году нам стало очевидно, что этот процесс требует серьезной автоматизации. Так начался in-house проект Gixy, требования к которому мы обозначили следующим образом:

— быть простым;
— но расширяемым;
— с возможностью удобного встраивания в процессы тестирования;
— неплохо бы уметь резолвить инклюды;
— и работать с переменными;
— и про регулярные выражения не забыть.
Читать дальше →
Всего голосов 112: ↑112 и ↓0+112
Комментарии18

Hacksplaining — интерактивный курс по веб-уязвимостям

Время на прочтение4 мин
Количество просмотров39K
image
 
Hacksplaining представляет каталогизированный и наглядный онлайн-туториал по основным веб-уязвимостям. По каждой уязвимости представлено подробное описание, насколько часто встречается, как сложно ее эксплуатировать и уровень ее критичности. К каждой уязвимости приложено подробное описание, вектор эксплуатации, уязвимый код и рекомендации по устранению и защите. В качестве примера в статье приведен разбор одного из заданий по взлому виртуального онлайн-банкинга с помощью эксплуатации sql-инъекции.
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии6

Pthreads: Потоки в русле POSIX

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

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



В этой статье мы познакомимся с POSIX Threads для того, чтобы затем узнать как это все работает в Linux. Не заходя в дебри синхронизации и сигналов, рассмотрим основные элементы Pthreads. Итак, под капотом потоки.

Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии28

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Время на прочтение20 мин
Количество просмотров248K
Чтобы сходу понимать материалы об инфраструктуре открытых ключей, сетевой безопасности и HTTPS, нужно знать основы криптографической теории. Один из самых быстрых способов изучить их — посмотреть или прочитать лекцию Владимира ivlad Иванова. Владимир — известный специалист по сетям и системам их защиты. Он долгое время работал в Яндексе, был одним из руководителей нашего департамента эксплуатации.


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

Всего голосов 96: ↑92 и ↓4+88
Комментарии29

Информация

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