13

Как стать программистом. Сервис доставки живых спортивных трансляций

Приветствую всех! Хочу рассказать о своем опыте входа в мир разработки, ну и промежуточном результате. Это мой первый пост в сообществе и целом на Пикабу.

Честно сказать, с детства восхищался айти, но в рамках кинематографа, тайно мечтая приблизиться к искомому.  День Х настал уже в сознательном возрасте 23-24, после сильнейшего кислотного трипа, приехав домой с четкой мыслью что буду ненавидеть себя до конца жизни, если не попробую , заказал книгу по C++  Страуструпа. Через не могу, прочел и прорешал это. Никому не рекомендую начинать с плюсов, это вас задемотивирует + большей вероятностью забьете. Но тогда опыта не было, первую работу тоже искал в качестве разработчика С++. Волшебным образом мне  повезло. Навешал лапши на уши о том что все могу,  и меня взяли на 20000р в мес с маленькую фирму, пилить их хотелки, попутно занимаясь полным спектром работ от погрузки/разгрузки/демонтажа конструкций до работы на подряде на местных заводах . Уволился через год-полтора и так получилось что обратил свое внимание на C#.

За 3-4 месяца так же прочел неск книг по шарпу, поверил в себя и пошел на собеседования(СПб). По истечению полугода так никуда и не взяли, от части из-за слабо прокачанных социальных скилов и неуверенности в себе. Бывали даже панические атаки прям на интервью)

В результате, конспектировал все что спрашивали, фоткал все тестовые задания, заполнял пробелы в знаниях.

Понял что нужен опыт разработки на .NET. Благодаря одному знакомому парню из нашей компании, определился. Он как-то пожаловался что любит смотреть спорт с мобилы, а все ресурсы либо на флеше, либо с кучей назойливой рекламы либо вообще нифига нет контента по выбранному событию.

Собственно, начался ресёрч и планирование примерно в апреле 2018 года, цель была сделать сервис который бы транслировал живые спортивные события, был прост и стабилен + работал на всех устройствах. Через 3 месяца от начала разработки скилы начали прокачиваться, голова наполнялась не серой теорией. Все это время я работал в техподдержке и в момент очередной ссоры с начальством,  разослал резюме десяткам фирм мне пришло интересное предложение. Т.к я уже имею опыт бесполезных поездок на себеседования, решил отправить им свое тестовое задание, которое делал для других. Десктопное мини приложение где для чтения и выгрузки огромного текстового файла использовалась многопотоночность и асинхронность + шаблон MVVM. В результате меня пригласили на встречу и в последствии взяли на работу. Это был успех) Зарплата выше чем в поддержке в 2 раза. Окрыленный я, чуть поздабив на домашний проект, влился в рабочие процессы, получил колоссальное кол-во опыта и к декабрю 2018 продолжил домашнюю разработку сервиса по спортивным трансляциям. Переделывал все раза 3-4 :-)

По итогу проект сейчас состоит из пяти микросервисов. Основополагающий это сервис синхронизации данных в БД от других микросервисов. WEB  API. Сделан на .NET Core, изучал и сразу применял шаблоны проектирования, такие как фабрика, синглтон, репозиторий(это подсмотрел в офисных проектах и в книгах  по шаблонам проектирования)

Проект написан не на чистом .net стеке, так же использовался nodejs(для старта ffmpeg, временных инстанцев http серверов. На nodejs это оказалось проще и быстрее), примечательно что вызывать nodejs код можно прям из .net приложения использую INodeSerevices, оч удобно.

База данных сперва была MSSQL, но потом переехал на Postgres, тоже подглядел в офисных проектах.

Покупаю видео поток у контент провайдеров, ретранслирую через свой сервер. Что бы работал телеграм вынужден был купить socks5  proxy, так же в перспективе нужно будет покупать расширенный аккаунт для ngrok, т.к он выполняет роль https  тоннеля, который перенаправляет пакеты от телеграм на мой локальный порт и адрес, иначе нужен будет SSL сертификат и свой домен.

Сперва ретрансляция одного потока занимала примерно 50% CPU, это опустило меня на дно отчаяния т.к по моим расчетам нужен был хотя бы двухпроцессорный сервак б.у с алиэкспресс примерно на 36-48 ядер. Очень не хотелось тратить 1000$ на подходящий сервер, что бы найден способ, снижающий нагрузку до смешных 0.5 - 1%.


Сейчас сервисом пользуется один человек, с подачи которого все это затевалось) Но мне бы хотелось поделиться этим с людьми, т.к ресёрч показал что годных сайтов/сервисов по прямыми трансляциям и большим ассортиментом, да еще и чтоб работало на ios/android , просто нет. По этому оставляю тут адреса.

Канал: @LiveSportsStreams Bot: @LiveSportStreamsBot.


Спасибо за внимание, надеюсь на фидбек, отвечу на любые вопросы.

Лига программистов

2.1K постов11.9K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

С++ реально демотивирует. Забил на программирование из-за него на целых 10 лет. Сейчас в качестве общего развития решил изучать питон, совсем другое дело.

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Особенно когда на элементарную ошибку синтаксиса тебе вылазит сообщение о ошибке состоящее из пяти строк кракозябров. Плюс на С++ все слишком низкоуровневое и кодить на с++ возможно разве что с помощью QT

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

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

Жуткой вещью остаются шаблоны. Но когда-нибудь запилят концепты и многое станет проще и логичнее.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

если не изменяет память, в скором с++ планирует даже отказаться от указателей. Ну и плюсы нет библиотек, на том же шарпе полезностей разных куча. Честно сказать приятно офигел от кол-ва и качества нюгет пакетов. На первой работе прогером, должен был сделать приложение для работы с snmp протоколом, а либ на с++ почти нифига не было или я не мог их собрать или подключить к проекту. такая боль.....

Кстати очень понравился QML
раскрыть ветку (3)
0
Автор поста оценил этот комментарий

в скором с++ планирует даже отказаться от указателей

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

В современном (прикладном) C++ необоснованная явная работа с сырой памятью (new/delete, арифметика указателей) и так осуждается. Все как у всех, с поправкой на RAII и умные указатели вместо сборщика мусора. Код получается няшный, но это будто бы еще один язык в языке, со своими правилами и стилем (=


Ну и плюсы нет библиотек, на том же шарпе полезностей разных куча.

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


И все же у С++ есть ряд киллер-фич, которых мне не хватает в сишарпе:

1) const-correctness

Позволила бы не городить иммутабельных обёрток и копировать данные для вывода их наружу. Да и самой мутабельностью управлять было бы куда проще под присмотром компилятора.


2) constexpr

Позволило бы делать вычисления во время компиляции.

Особенно грустно видеть интерполированные строки, которые не могут давать константный результат. Банальная конкатенация через "+" может, например.


3) шаблоны

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

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Кажется да, попался на первоапрельский пост)Честно сказать, так обрадовался что отключил критическое мышление) А где можно посмотреть пример кода, о котором говоришь "Код получается няшный, но это будто бы еще один язык в языке, со своими правилами и стилем"?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Почему обрадовались? Ведь тем, что вам не нравится можно просто не пользоваться)


Чтоб сходу, код можно посмотреть например [в этих проектах](https://github.com/rigtorp/awesome-modern-cpp#libraries).

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку