- Сотрудники 693
- Новые
- Лучшие
Новости
Видео в звонках ВКонтакте: 4К-скриншеринг и Quality on-demand для тысяч участников
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/e61/aea/4df/e61aea4df6203a4bba90b50ee3b78a28.png)
Что нужно от картинки в видеозвонке? Базово — чтобы не пикселила, не замирала и не вешала весь звонок. Это основы real-time видео, и добиться этого не так трудно.
Всё самое интересное начинается, когда вы хотите, чтобы в одном звонке могли участвовать сколько угодно человек. И при этом все могли включать видео, а не просто смотреть; разрешение скриншеринга было бы 4К; шеринг оставался суперчётким при любом интернете и т. д. И чтобы звонки работали на любых платформах и устройствах на мобильном нестабильном интернете.
Как мы добиваемся всего этого в звонках ВКонтакте, какие хаки в настройках используем, как экономим трафик и CPU, как боремся за latency и где нам пришлось идти в обход WebRTC, читайте под катом.
Делаем на Android анимацию как в Doom. Приложение-огонь
Как же отрисовать огонь? Нам нужно придумать реалистичное движение пикселей, изменение цветов. На самом деле алгоритм очень прост и уже описан не раз. Давайте реализуем его в Android.
Адаптивный layout — как переверстать весь проект, не перевёрстывая его
Вёрстка — это первое, чему обычно учатся начинающие фронтендеры. Но когда вёрстки в вашем проекте становится очень много, поменять что-то — особенно везде и сразу — становится непросто. Переверстать большой проект, как правило, почти нереально. И если начинает казаться, что в какой-то задаче это нужно, вероятно, пришло время для более нестандартных методов.
Всем привет! Меня зовут Юрий Голубев, я разрабатываю frontend в Почте Mail.ru. Сегодня я хочу поделиться опытом того, как мы добавили адаптивности и возможности кастомизации в интерфейс, а заодно — открыли новый для себя способ написания адаптивных компонентов.
Читать не надо слушать: как работает распознавание речи ВКонтакте
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/09c/b1d/583/09cb1d58352df2bbcd194a97ac18fd63.jpg)
Прочитать текстовое сообщение — быстрее, чем прослушать голосовое. Ещё по тексту удобнее искать и уточнять детали. Воспринимать числа, адреса, номера телефонов и подобную информацию тоже проще в написанном виде. С другой стороны, записать голосовое зачастую удобнее, чем напечатать сообщение — ведь это можно делать параллельно с другими занятиями, на ходу или за рулём.
Автоматическое распознавание речи помогает преодолеть этот разрыв. Технология переводит устную речь в текст, а дальше с ним можно делать что вздумается: хоть выводить расшифровку, хоть передавать в поиск, хоть преобразовывать в команды для техники. Или, как в нашем случае, помогать пользователям общаться.
Меня зовут Надя Зуева, я занимаюсь голосовыми технологиями ВКонтакте. В этой статье расскажу, как работает наше распознавание голосовых сообщений: какие модели мы используем, на каких данных их обучаем и какие оптимизации применили для быстрой работы в проде.
Тестовая ферма из Android-устройств: как собрать, отладить и не взорвать офис
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/webt/gi/_z/fh/gi_zfhedtqnform81henfcv-ynk.jpeg)
У нас был небольшой бюджет и большие проблемы с рутинным тестированием в match3-игре, у которой накопилось более 1500 уровней. А вот чего у нас не было, так это идеально подходящего коробочного решения, работающего на лету и без пересборок. Поэтому мы нагородили собственную ферму с высаженной грядкой из десятка Xiaomi, отправкой статистики, отчетами в Slack, блекджеком и коровой.
Я Павел Щеваев, CTO студии BIT.GAMES, которая является частью международного игрового бренда MY.GAMES. Вы можете знать нас по RPG «Гильдия Героев», а ваши мамы — по «Домовятам» в Одноклассниках. Да, это были мы. :) Но сегодня речь пойдет о нашем новом проекте Storyngton Hall. Это головоломка «три в ряд» с сюжетом, по которому красивые леди разгадывают загадки, декорируют комнаты, примеряют платья, устраивают балы, и, в конце концов, выходят замуж.
Core Web Vitals: с чего начать?
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/webt/bw/0g/vv/bw0gvvbu2yjhq8ou31pu24ltf7m.png)
Согласно web.dev, улучшение качества взаимодействия с пользователем — ключ к долгосрочному успеху любого сайта. Понимая, насколько важен для развития интернета качественный пользовательский опыт, компания Google в 2020 году представила инициативу Web Vitals. Это единое руководство по метрикам качества, которые необходимы для обеспечения удобного взаимодействия с пользователем. Хотя за прошедшие годы Google создала ряд инструментов для измерения эффективности взаимодействия и составления отчетов (Lighthouse, PageSpeed Insights и Measure), Web Vitals должна упростить измерение производительности и помогает разработчикам сайтов сосредоточиться на самых важных показателях — Core Web Vitals.
Grafana as code, или как я перестал кликать мышкой в UI и полюбил grafonnet
Когда мы в Tarantool столкнулись с задачей настройки мониторинга для сдачи проекта заказчику, мы решили её с помощью grafonnet. Это библиотека для написания дашбордов Grafana с помощью кода на языке jsonnet, которая заметно облегчила нам жизнь.
Рассказ поделён на две части. В первой я делюсь нашей историей знакомства с grafonnet, причинами, по которым мы выбрали этот инструмент, и задачами, которые мы решили с его помощью. Вторая представляет собой пошаговое обучение написанию простого дашборда для Prometheus. Так что если ситуации, описанные мной в первой половине статьи, покажутся вам знакомыми, вторая позволит вам совершить первый шаг на пути к их разрешению.
Как работать с Tarantool на Golang вместо Lua
Ядро Tarantool-а написано на C, а вся бизнес-логика создаётся на Lua. Это не самый сложный язык, но и не самый популярный. Поэтому сегодня я расскажу, как начать работать с Tarantool, написав всего три строчки кода на Lua. А всё остальное приложение написано на Golang. Чтобы было еще интереснее, я даю альтернативный вариант на Python. Что за проект? Делаем приложение, которое позволяет ставить метки на карте: дом, работа, первое свидание, первый Hello World, первый "too long wal write" Tarantool.
Поехали!
Звонки без ограничений на количество участников, или Аудиопайплайн звонка ВКонтакте
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/3b7/027/b71/3b7027b71b566e92c66154d6d68f718a.png)
Чтобы снять лимиты на число участников в одном звонке, мы реализовали принципиально новую схему работы с видео- и аудиопотоками: построили уникальную архитектуру, которая горизонтально масштабирует звонок на любое количество серверов и потребляет минимум ресурсов — как серверных, так и клиентских.
В этой статье разберёмся, что влияет на качество звука, как и какие из этапов передачи аудиоданных можно потюнить, чтобы обеспечить минимальную задержку и лучшее восприятие качества звонка. А также посмотрим на результаты внедрения нового аудиопайплайна в групповых звонках ВКонтакте.
Разбор алгоритмов генерации псевдослучайных чисел
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/5ea/ee3/bc9/5eaee3bc917534fafbb2cdda98f8c2da.jpg)
Я работаю программистом в игровой студии IT Territory, а с недавних пор перешел на направление экспериментальных проектов, где мы проверяем на прототипах различные геймплейные гипотезы. И работая над одним из прототипов мы столкнулись с задачей генерации случайных чисел. Я хотел бы поделиться с вами полученным опытом: расскажу о псевдогенераторах случайных чисел, об альтернативе в виде хеш-функции, покажу, как её можно оптимизировать, и опишу комбинированные подходы, которые мы применяли в проекте.
Заметки KPHP: тестирование и бенчмарки
Перед вами первая статья из серии «Как использовать KPHP в open source?».
В этих статьях мы будем разбирать разные аспекты работы с KPHP, расширяя информацию, которую вы можете найти в официальной документации.
В сегодняшнем выпуске обсудим:
- базовое использование composer с KPHP;
- как писать и запускать unit-тесты для KPHP;
- бенчмаркинг KPHP-кода (профилирование затронем в другой раз);
- как правильно сравнивать результаты бенчмарков.
NLP At Scale: вся правда о предобученных моделях в Почте Mail.ru (часть 1)
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/webt/_8/vf/qy/_8vfqyknxlljr-ns1upxc5gxuqg.jpeg)
Антиспам Почты Mail.ru — это симбиоз продуктовой логики и инфраструктурных технологий, про который мы решили более подробно рассказать. В основе конечно же лежит инфраструктура, с помощью которой мы получаем возможности для развития моделей машинного обучения, а также платформа ядра, которая обеспечивает работу антиспама в онлайне. Продуктовая логика представлена в виде большого количества эвристик (куда без них) и ручных правил. На вершине продуктовой пирамиды пребывает стек моделей машинного обучения, хотя положение на вершине в данном случае достаточно условно.
В этой статье мы заберемся на эту вершину, где в последнее время часто вбивают новые колышки текстовые модели. Мы спроецируем мир текстовых ML-моделей на наш сервис, поговорим про эволюцию и решение задач Почты, связанных с текстами. Запасайтесь кислородом и свободным временем.
Нейросети против пылесоса, или Как мы убрали лишний шум в звонках ВКонтакте
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/f7e/5a0/bd4/f7e5a0bd4eb1940771f44480cdb6ad0b.png)
Как-как, с помощью магии нейронок, конечно. А если серьёзно, то в этой статье расскажем, как эволюционировали технологии шумоподавления и улучшения речи, какие есть варианты, чтобы собрать своё решение, и какой сетап получился у нас.
Архитектура распределенной очереди в Mail.ru Cloud Solutions
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/webt/-r/vw/ul/-rvwulyqsrtpfv9z9a-qurs02dc.jpeg)
Вряд ли сейчас можно встретить разработчика, который ничего не слышал об очередях сообщений. Самые известные брокеры сообщений это: Apache Kafka, RabbitMQ и IBM MQ. Все также наверняка знают об облачных решениях, предлагаемых Amazon. Есть у них и стандартизованные API для работы с очередями.
Одно из них, Simple Queue Service, мы взяли за основу и разработали распределенную очередь для запуска в облаке Mail.ru. SQS это стандартный API для облаков, его широко используют многие компании, от BMW до NASA.
В статье описано, что такое распределенные очереди и зачем они могут понадобиться, какие в них есть особенности, и о том, какое у нас получилось распределенное решение на базе Tarantool.
Особенности прототипирования игр
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/post_images/9ad/e04/53c/9ade0453ce40f33b27508c81d61a7c04.jpg)
Думаю, во многих компаниях есть свои R&D-команды, которые ищут новые продукты. Такую решили организовать и в нашей студии, и меня туда пригласили. Конечно же, поначалу мы все были окрылены идеей, что сейчас мы в команде экспериментальных проектов и будем писать ПРОТОТИПЫ. Звучит-то как! Мы будем экспериментировать с новыми библиотеками, так сказать «щупать» новые технологии и вообще делать что-то новое почти каждый месяц! Значит, нам не только не надоест какой-то проект, но и можно не заботиться о долгосрочной поддержке кода. Ведь это начальство разрешает забить на качество написания кода в угоду скорости разработки, ведь всё потом полетит в мусорку и будет переписываться с нуля. Но так ли всё радужно?
Меня зовут Андрей, я программист в студии IT Territory/My.Games, работаю в команде экспериментальных проектов. И хочу рассказать вам об особенностях нашего прототипирования игр.
Наш опыт использования Jira: cоздание подзадач по шаблонам
В предыдущей статье "Несколько примеров успешного изобретения велосипеда" мы поделились рядом решений, полученных путем комбинирования наших плагинов для Atlassian, таких как MyGroovy, JSIncluder и MyCalendar. На этот раз мы рассмотрим еще один плагин из нашей коллекции — Custom Select List.
Нагрузочное тестирование игровых серверов
Меня зовут Дмитрий, я специалист по тестированию в студии IT Territory. За 17 лет мы выпустили более 15 успешных игровых проектов с общей аудиторией около 100 млн игроков по всему миру. Вы можете быть знакомы с нами по таким проектам, как Аллоды Онлайн, Hawk, Space Justice, World Above, Rush Royale. И в этом посте я расскажу о том, как мы проводим нагрузочное тестирование игровых серверов.
Как оформить серию коммитов Git, чтобы её приняли в любой проект
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/getpro/habr/upload_files/7f9/7c0/ede/7f97c0ede1291cf68d8908a19ef77656.png)
Добрый день, коллеги! Доказывать, что нужно использовать систему контроля версий, уже давно не нужно. И Git занял тут лидирующую позицию, стремительно вытеснив SVN. Но это инструмент, а инструментом нужно уметь пользоваться, чтобы добиться лучших результатов. Как топором, один человек сможет просто срубить дерево а другой из этого дерева сможет сделать великолепную скульптуру. Так и с помощью Git, один человек сможет просто не потерять результаты своего труда за день, а другие смогут организовать совместную работу над проектом нескольких сотен человек. Да так, что о любой строчке кода можно будет и через пять лет сказать, откуда она взялась и для чего нужна.
Постараюсь рассказать для начинающих и не очень разработчиков, как оформлять свои коммиты, чтобы их максимально быстро и без претензий принимали в любые проекты, как опенсорсные так и коммерческие.
Управляем кластером на Tarantool из командной строки
![](https://webcf.waybackmachine.org/web/20211022032209im_/https://habrastorage.org/webt/_j/sr/yj/_jsryjsnveeoqvjtok-uqwpt954.jpeg)
Два года назад мы уже рассказывали вам, что такое Cartridge и как с его помощью разрабатывать распределенные приложения. Это полноценный фреймворк, в который входит CLI-интерфейс, который сильно упрощает разработку и эксплуатацию приложений на Tarantool Cartridge.
Я расскажу вам, как можно использовать Cartridge CLI для эффективного использования ваших локальных приложений, и об интересных фичах самого CLI. Статья больше ориентирована на тех, кто уже использует Cartridge или хочет начать им пользоваться. Поехали!
Информация
- Дата основания
- Местоположение
- Россия
- Сайт
- vk.com
- Численность
- 5 001–10 000 человек
- Дата регистрации
- Представитель
- Миша Буданов