Как стать автором
Обновить
29
0
Александр Свешников @alexglue

Руководитель оптимизации процессов в Кинопоиске

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

Как научиться чувствовать треки? Визуализация музыкальных частот в Моей волне

Время на прочтение6 мин
Количество просмотров16K
Разработчики всего мира потратили миллионы часов на создание визуализаций музыки в приложениях и плеерах. Наверняка многие из вас помнят анимации в старом-добром Winamp. Или разные скины JetAudio. Олды вообще скажут: «Погоди-ка, ты забыл про Atari Video Music, всего-то 1976-й был!» — и будут правы.

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



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

Меня зовут Андрей Бобков, я Android-разработчик, и в этом посте я расскажу, как при помощи высшей математики и цифрового анализа сигнала мы научили Мою волну чувствовать треки, которые вы слушаете, и визуализировать частоты.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+35
Комментарии48

Оцениваем разработчика на основе объективных данных

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

В небольшой команде тимлид может попытаться судить обо всем происходящем на основе субъективных ощущений, но, чем больше компания, тем важнее использовать объективные данные и метрики. Александр Киселев (AleksandrKiselev) и Сергей Семенов в своем докладе на TeamLead Conf показали, как использовать данные, которые вы уже накопили, где взять дополнительные, и что они все вместе могут помочь определить неочевидные проблемы. И даже, аккумулировав опыт многих коллег, предложили варианты решения.


О спикерах: Александр Киселев и Сергей Семенов в IT мы уже больше 8 лет. Оба прошли путь от разработчика до тимлида и далее до product-менеджера. Сейчас работают над аналитическим сервисом GitLean, который автоматически собирает аналитику у команд разработки для тимлидов и CTO. Задача этого сервиса в том, чтобы технические менеджеры могли принимать свои решения на основе объективных данных.
Всего голосов 48: ↑39 и ↓9+30
Комментарии19

Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]

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

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

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Всего голосов 83: ↑82 и ↓1+81
Комментарии59

HTTP/3: развёртывание HTTP/3 на практике. Часть 3

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

Фото Wolfgang Rottmann, Unsplash.com

После почти пятилетних разработок протокол HTTP/3 наконец приближается к окончательному выпуску. Рассказываем, какие трудности могут возникнуть при развёртывании и тестировании HTTP/3 и как адаптировать к нему сайты и ресурсы.

Это третья и последняя часть серии о новых протоколах HTTP/3 и QUIC. Если, прочитав предыдущие две части об истории и основных концепциях и функциях производительности HTTP/3, вы решили, что новые протоколы срочно нужно внедрять (будем надеяться, что так вы и решили), здесь мы расскажем, как это сделать.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии12

Завышенный уровень делегирования, или «Если бы мне так объяснили, я бы все понял»

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

"...5 лет назад я работал в почтовом сервисе. В мои обязанности входило сопровождение разнообразных проектов по международным перевозкам. Как-то раз мой начальник пришел ко мне и поручил следующее задание: «Саша, нужно до конца месяца решить проблему с недостатком машин по маршруту Кишинев».

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

Когда вся информация была собрана, я пришел к начальнику и начал показывать ему мои расчеты и таблицы. Он прослушал меня минуты 2 максимум, а потом резко остановил и достаточно нервно сказал: «Саша, что ты мне принес?! Я тебя попросил вопрос с машинами решить, а ты мне математику показываешь. Прошла неделя, а ты ничего не сделал! Что тебе не понятно? Пойди к фин. директору и скажи, чтоб согласовал покупку еще двух машин класса А».



Умение поручать задания сотрудникам — это наука всех времен. Сколько книг написано, сколько анекдотов сочинено, а тема всегда популярна. Но в этих всех книгах и анекдотах проблема описывается исключительно со стороны потерь для бизнеса, а о сотруднике и его чувствах говорится мало. Поэтому, я немного дополню проблему именно со стороны демотивации.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии23

Tinkoff инвестиции –> Prometheus –> Grafana

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

В последний год (примерно) появилось много постов, как сделать таблички в Google Sheets/MS Excel для отображения актуальной информации о своем инвестиционном портфеле и т.п. Действительно хочется видеть, что там творится. Особенно актуально для продвинутых подписок/тарифных планов, когда требуется определенная сумма на счетах, и будет обидно, если из-за падения акций или курса доллара сумма снизится ниже пороговой…

Я попробовал несколько вариантов от электронных таблиц до записи в MySQL скриптом на python, и на текущий момент остановился на отображении моих инвестиционных счетов в Grafana.

Кому интересны плюсы/минусы разных вариантов, с какими нюансами я столкнулся – добро пожаловать под кат.

Посмотреть
Всего голосов 29: ↑29 и ↓0+29
Комментарии16

Мой уход из Яндекса, как не потерять мотивацию за полгода подготовки в FAANG и реджект в Google

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

Мой уход из Яндекса, как не потерять мотивацию за полгода подготовки в FAANG и реджект в Google.

Читать далее
Всего голосов 168: ↑158 и ↓10+148
Комментарии297

Стажёр Вася и его истории об идемпотентности API

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

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

На главной «Кинопоиска» появился Яндекс-директ

Время на прочтение1 мин
Количество просмотров23K
Девять месяцев — прекрасный срок, чтобы разродиться новостями. Первым заметным изменением крупнейшего киносайта Рунета 9 месяцев после его покупки Яндексом спустя стало появление Яндекс-директа прямо на морде портала. Смотрится это, прямо скажем, дико:


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

Теперь я тимлид, но почему мне так плохо? Практические советы

Время на прочтение4 мин
Количество просмотров42K
Почему-то считается, что тимлид — это более высокая ступень эволюции инженера, чем все квалификационные уровни, включая senior. При том что всем известно, навыки и умения там нужны совсем другие. Но факт продолжает оставаться фактом, в большинстве компаний тимлидами становятся лучшие инженеры. Иногда, потому что руководству кажется, что это даст сотруднику новую мотивацию и вообще — это же повышение. Иногда, в силу необходимости — наняли много новых сотрудников, и кто-то должен за них отвечать и помогать им пилить новые фичи. Неудивительно, что неподготовленный человек, брошенный в новые обязанности, как в воду, сваливается в состояние экзистенциального кризиса.



То, что доклад на эту тему был признан лучшим на конференции для тимлидов и о тимлидах, показывает, насколько действительно часто встречается такая ситуация. Но надо признать, конечно, что Евгений Кот (bunopus) заработал это «признание» еще и великолепным перформансом. С удовольствием делимся с вами его записью.
Всего голосов 52: ↑51 и ↓1+50
Комментарии9

CSS Grid — швейцарский армейский нож для макетов сайтов и приложений

Время на прочтение9 мин
Количество просмотров52K
В течение последних двух месяцев я углубился в изучение CSS Grid. В этой заметке я хочу поделиться своими основными соображениями. Чтобы было более понятно, я объясню все с помощью диаграмм.

Вероятно, вы уже знакомы с блоковой моделью CSS для обычных элементов. Давайте начнем с аналогичного «общего обзора» для CSS Grid:


В основе структуры CSS Grid находится основной контейнер, представляющий собой обычный div, имеющий margin, border и padding. Для создания CSS grid контейнера добавим свойство display: grid. Элементы сетки — это потомки, размещенные внутри родительского контейнера. Они обычно определяются как список, описывающий header, sidebar, footer или другие аналогичные элементы макета сайта, зависящие от его дизайна.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии21

Новый программерский жаргон

Время на прочтение7 мин
Количество просмотров50K
Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.

Читать дальше →
Всего голосов 411: ↑373 и ↓38+335
Комментарии193

Entity vs Value Object: полный список отличий

Время на прочтение6 мин
Количество просмотров58K
Тема отличий таких понятий как Entity (Сущность) и Value Object (Объект-Значение) из Domain-Driven Design не нова. Тем не менее, я не смог найти статью с полным списком их отличий, так что решил написать свою.
Читать дальше →
Всего голосов 25: ↑15 и ↓10+5
Комментарии20

Symfony и Command Bus

Время на прочтение16 мин
Количество просмотров43K
Уже больше года использую паттерн Command Bus в своих Symfony-проектах и наконец решил поделиться опытом. В концев концов обидно, что в Laravel это есть «из коробки», а в Symfony, из которого Laravel во многом вырос — нет, хотя самому понятию Command/Query Separation уже не менее 10 лет. И если с буквой «Q» из аббревиатуры «CQRS» еще понятно что делать (лично меня вполне устраивают custom repositories), то куда приткнуть букву «C» — неясно.

На самом деле, даже в банальных CRUD-приложениях Command Bus дает очевидные преимущества:

  • контроллеры становятся «худыми» (редкий «экшен» занимает более 15 строк),
  • бизнес-логика покидает контроллеры и становится максимально независимой от фреймворка (в результате ее несложно повторно использовать в других проектах, даже если они написаны не на Symfony),
  • упрощается unit-тестирование бизнес-логики,
  • сокращается дублирование кода (когда, например, необходимо реализовать «фичу» как через Web UI, так и через API).

КДПВ
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии121

Golang, PHP, Кинопоиск и Telegraph — Что их объединяет?

Время на прочтение6 мин
Количество просмотров18K
Периодически, чтобы не покрыться пылью, я стараюсь создавать интересные штуки, которые смогли бы облегчить чью-то жизнь. Я стремлюсь к тому, чтобы они были, полезнее, чем социальная сеть для кошек. Один из недавних примеров — Телеграм-бот, который позволяет в указанных координатах найти известные Wi-Fi-точки и посмотреть пароли к ним.

Этот раз не стал исключением и я задумал создать бота, который позволял бы с наибольшим комфортом и минимумом усилий смотреть любимые фильмы и сериалы, да еще и предоставлял контент в нескольких вариантах озвучки. Сказано — сделано. И теперь, когда железный друг человека радостно раздает пользователям их любимые шоу, я бы хотел поговорить о том, что сопутствовало созданию бота, какие проблемы вставали на моем пути и как они были решены. В первой главе я расскажу о Go глазами PHP-разработчика, во второй главе о поиске дзена для парсинга Кинопоиска, а в третьей — о недокументированной фиче Telegraph.

image
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии41

Мой опыт внедрения Apache Cassandra

Время на прочтение3 мин
Количество просмотров56K
Как и большинство NoSQL-решений, C* подвержена одной крайне неприятной эпидемии: она является отличным инструментом для узкого класса задач, но позиционируется евангелистами как очередная серебряная пуля по хранению данных. В этой статье я расскажу о своём опыте внедрения C* в (сравнительно) нагруженный проект веб-аналитики. Она будет полезна всем, кто стоит перед выбором масштабируемого хранилища данных, и развенчает мифы и заблуждения об этом инструменте.


Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии19

Planning Poker: как сделать процесс постановки задач максимально прозрачным и четким

Время на прочтение3 мин
Количество просмотров50K
В прошлом посте мы рассказали о том, как работаем с бэклогом, а сегодня поделимся подробностями о процессе планирования, который в нашем случае не только полезный, но и увлекательный, поскольку оценку задач мы проводим с помощью «Planning Poker».

image
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии16

Непрерывная интеграция и TeamCity

Время на прочтение4 мин
Количество просмотров102K
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

imageВ этом топике мы в общих чертах рассмотрим процесс реализации непрерывной интеграции на примере TeamCity Enterprise 6.0 EAP (build 15400) и обратим внимание на применении инструментов рассмотренных в прошлой теме: Обеспечение качества программного продукта.
Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии49

Обзор расширения OPCache для PHP

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


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии25

VulnHub Разбор HackDay: Albania

Время на прочтение4 мин
Количество просмотров11K
Продолжаем разбор лаб с VulnHub. На этот раз займемся HackDay: Albania. К образу имеется следующее описание, из которого видно, что это таск с HackDay Albania's 2016 CTF
This was used in HackDay Albania's 2016 CTF.
The level is beginner to intermediate.
It uses DHCP.
Note: VMware users may have issues with the network interface doing down by default. We recommend (for once!) using Virtualbox.

Таск как и прошлый рассчитан на новичков. Поэтому в некоторые моменты в статье будут рассмотрены более подробно.
Читать дальше →
Всего голосов 30: ↑23 и ↓7+16
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность