15 декабря 2024

eur = 110.48 1.92 (1.77 %)

btc = 101 894.00$ 86.56 (0.09 %)

eth = 3 884.52$ -26.71 (-0.68 %)

ton = 6.27$ -0.06 (-0.94 %)

usd = 103.95 0.68 (0.66 %)

eur = 110.48 1.92 (1.77 %)

btc = 101 894.00$ 86.56 (0.09 %)

Форум

История о том, как Славик участвовал в конкурсе 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-статье 
bfc5e6c3-5e3c-41ec-bbe7-97cb39296225-изображение-0caa5f53d-c148-46f9-be3b-795f7a443ddf-изображение-1

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

Какие самые популярные слова искали в Яндексе в 2024 году

Полная версия 
973c20aa-79d4-4842-97cf-4fc2ae0ff6bb-изображение-0

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

Бывший исследователь OpenAI, который обвинил компанию в нарушении авторских прав, был найден мёртвым в своей квартире

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

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

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