4 декабря 2024

eur = 112.80 -1.51 (-1.32 %)

btc = 96 436.00$ 1 110.72 (1.17 %)

eth = 3 834.42$ 263.87 (7.39 %)

ton = 6.97$ 0.32 (4.87 %)

usd = 107.18 -0.57 (-0.52 %)

eur = 112.80 -1.51 (-1.32 %)

btc = 96 436.00$ 1 110.72 (1.17 %)

Форум

История о том, как Славик участвовал в конкурсе Telegram и выиграл $5000

4 минуты на чтение
История о том, как Славик участвовал в конкурсе Telegram и выиграл $5000

Привет! Меня зовут Славик, я инженер, мне 26 лет. Сегодня я хочу рассказать о своем участии в конкурсе Telegram для разработчиков. Ранее конкурсы были для дизайнеров, но этой осенью мессенджер предложил задачи для C++ программистов, а призовой фонд составил более $1 000 000.

Обо мне

Сперва хотелось бы сказать, что я не программист в общепринятом понимании. Восемь лет я занимаюсь разработкой электроники, и программирование для меня — это сопутствующий навык. Я серьезно увлекся электроникой и программированием в университете (МФТИ): начинал с аналоговых схем — радиоприемники, примочки для гитары и так далее, а затем стал включать в схемы микросхемы цифровой логики и в итоге добрался до микроконтроллеров и FPGA.

Чаще всего для программирования микроконтроллеров используется язык C, поэтому это мой первый и основной высокоуровневый язык (после ассемблеров).

На C++ я разрабатывал различные ПК-приложения для инженерных и научных задач, например, анализатор видео с высокоскоростной (1600 к/с) камеры, системы компьютерного зрения для робототехники и так далее. В последние годы C++ стал активно проникать в embedded-разработку, например, в IoT (интернет вещей), которым я и занимаюсь.

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

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

Что касается Telegram, то я начинал с разработки небольших ботов для автоматизации процессов в своей компании примерно 4 года назад, 2 года назад сделал ботов для загрузки аудио/видео с YouTube (@AudioTubeBot/@VideoTubeBot).

А еще я «научил» бота транслировать радио через звонки — позвонив юзерботу, несколько человек могут одновременно слушать через Telegram аудио в реальном времени.

Конкурс

Я раньше собирался самостоятельно реализовать групповые звонки в Telegram, но никак не доходили руки, а когда анонсировали конкурс по VoIP — меня это очень заинтересовало.

В качестве хобби я модифицирую клиент Telegram Desktop, например, я ускорил загрузку файлов и реализовал видео в отдельном окне. Так что с кодом немного знаком. Когда опубликовали задание, я почти сразу стал искать с кем скооперироваться, так как было очевидно, что для хорошего решения и отладки времени не хватит, но в итоге пришлось делать все одному. Порадовали другие участники — многие общались в чате, подсказывали друг другу, делились опытом и помогали разобраться с библиотекой звонков. Мне удалось познакомиться со многими хорошими разработчиками — хоть мы и соперники, но все оставались людьми, уважали друг друга и продуктивно общались.

Задание состояло из двух частей: приложение для тестирования звонков, использующее вместо микрофона и динамика аудиофайлы, и приложение для автоматической оценки качества связи.

На первую часть я планировал потратить не более 2-3 дней — дабы не вмешиваться в тестируемый код, я решил использовать контейнеры и виртуальные аудиоустройства, чтобы запускать на одном компьютере несколько звонков одновременно и независимо управлять каждым соединением. Далее, используя эмулятор плохой сети, сгенерировать из тестовых аудиофайлов большую выборку, попросить подписчиков моего канала @MediaTube_stream расставить оценки и обучить нейросеть оценивать качество звонка, как это делает человек.

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

Разумеется, реализовывать изначальное решение за это время было безумием, даже планируемые 7 дней — это впритык, а о 6 часах и речи быть не могло. Но всегда нужно бороться до конца и лучше сделать что-то, чем ничего, поэтому я решил использовать алгоритм с открытым исходным кодом от британской телекоммуникационной компании. Используемые в нем подходы мне не очень нравились — уверен, что моя реализация дала бы лучший результат. Но, как говорится, «дареному коню...». Поэтому далее я использовал свой трехлетний опыт подгонки отчетов лабораторных работ по физике, чтобы адаптировать алгоритм к задаче, и отправил, что успел.

Что было дальше?

Оказалось, что программа для звонков не запустилась на сервере судей, и они даже написали комментарий на странице моей работы, но я, к сожалению, к тому времени уже забыл о конкурсе и не следил за комментариями, а программа для оценки показала третий результат в рейтинге. Кроме того, за первую часть я получил небольшой «штраф», но в итоге занял 2-е место.

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

В любом случае, я благодарен организаторам за их работу и возможность пообщаться с крутыми специалистами в одном месте (и $5000 бонусом). Пока я ожидаю второго раунда конкурса звонков, поучаствую в конкурсе по кластеризации, для которого уже опубликован датасет из огромного количества html-страниц на разных языках — похоже, что нужно будет группировать их по языку/тематике. Но это уже совсем другая история...

Читать первым в Telegram-канале «Код Дурова»

Важные новости коротко — от GigaChat Max 
1-bg-изображение-0
img-content-1-изображение-0

GigaChat Max: коротко о главном

Как изменился Код Дурова вместе с GigaChat Max?

Узнай о всех возможностях в FAQ-статье 
5c25aafc-64fb-4237-84db-155bb72ea9eb-изображение-0f770ca81-ab03-4846-9d18-cb4db1830b85-изображение-16eb4c526-1233-42bb-9353-d467199dd466-изображение-2

GigaChat Max: коротко о главном

Концептуальный Jaguar Type 00 показался на живых фото

Полная версия 
fbaaf910-e24b-44aa-b06a-fb9f65620dcd-изображение-0

GigaChat Max: коротко о главном

Telegram будет сотрудничать с Internet Watch Foundation для борьбы с распространением детской порнографии

Полная версия 

Реализовано через GigaChat Max 

Сейчас читают
Новости
Карьера
Блоги 298
Газпромбанк
МТС
Т-Банк
X5 Tech
Сбер
билайн
Яндекс Практикум
Ozon Tech
Циан
Банк 131