Pull to refresh
41
0
Егор Юртаев @yurtaev

Full Stack Team leader/Solution architect

Send message

Трансляция видео посредством P2P-сетей

Level of difficultyMedium
Reading time10 min
Views2.1K

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

Я, как разработчик сервиса вебинаров, постараюсь в этой статье помочь разобраться с этими проблемами, по средствам P2P-сетей.

Читать далее
Total votes 12: ↑11.5 and ↓0.5+11
Comments5

CI/CD в каждый дом: сборочный цех базовых docker-образов

Level of difficultyMedium
Reading time11 min
Views14K

Привет, Хабр.

Последнее время DevOps и CI/CD де-факто стали повсеместным стандартом независимо от размера команды, в интернетах хватает статей, почему это важно, в чём собственно идея, полезных практик и других материалов. Я же решил подойти с несколько другой стороны и максимально доступным языком на практических примерах рассмотреть отдельные задачи и их решения в рамках концепции.

Одной из таких задач, которую я хотел бы рассмотреть первой, является задача создания сборочного цеха базовых docker-образов, используемых в репозиториях и процессах проекта. 

Кому, собственно, это может пригодиться? Я бы сказал, что почти кому угодно, кто хочет организовать ту компоненту CI/CD, которая отвечает за построение и релизный цикл базовых образов внутри инфраструктуры вашей компании или даже персональных проектов (зародился он именно в процессе приведения в порядок моих пет-проектов).

Какой практический пример может быть без публичного репозитория с MIT-лицензией? Если вам не интересно читать статью, то можно прямо из превью перейти по ссылке и напитаться кодом. Репозиторий же можно копировать как целиком, так и кусками, буду только рад, если он кому-нибудь пригодится. На любые вопросы — готов ответить в комментариях или issues.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments12

Крупномасштабный стриминг видео с использованием Kubernetes и RabbitMQ

Level of difficultyMedium
Reading time8 min
Views12K
Давайте поговорим о тех проблемах, с которыми приходится сталкиваться на сайтах для стримингового видео, и как организовать архитектуру такого сайта, чтобы было проще справляться с нагрузками.

image
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments17

Как Додо Пицца доставляет свежий код: история мобильного CI для iOS

Level of difficultyEasy
Reading time9 min
Views4.9K

Мобильная разработка под iOS особенная: собрать приложение можно только на macOS, среда разработки по сути только одна, большая часть принятого в сообществе тулинга написана на Ruby, свой пакетный менеджер появился только пару лет назад. Тяжко.

А когда речь заходит про автоматизацию тестирования и сборок — тушите свет: Xcode Cloud появился полгода назад и почти ничего не умеет, популярные облачные решения могут месяцами не обновлять стек на новые мажорные релизы среды разработки или ОС (вставить ссылку на тред где гитхаб не может привести новую макось уже полгода), а ценник при этом может быть в 10 раз больше, чем за машинки на Linux. Ещё тяжелее.

Меня зовут Леха Берёзка, я iOS-техлид в Додо Пицце и сейчас я расскажу как мы собрали свой CI на М1, с виртуализацией и на полном нативе.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments9

NativeScript в мире кроссплатформенной разработки

Level of difficultyMedium
Reading time7 min
Views4.3K

Давайте знакомиться! Меня зовут Игорь. Я разработчик кроссплатформенных мобильных приложений в компании Smartex. В этой статье я расскажу о NativeScript, основных преимуществах платформы и ее недостатках.

Материал будет полезен не только разработчикам, которые уже пишут приложения на React Native, Ionic, Framework7, а также тем, кто собирается погрузиться в разработку кроссплатформенных мобильных приложений на JavaScript.

Погнали!

Свой путь в кроссплатформенную разработку я начал за пределами Smartex, с Cordova + Framework7.

Framework7 это как и Ionic просто UI-библиотека для создания интерфейса которая в последующим просто отрисовывается через WebView. Само приложение (общение с API платформы) создается на платформе Cordova или Capacitor, как раз они и создают экран с WebView и транслирует туда HTML.

Framework7 прекрасно работает с Vue, но по ряду причин он начал меня подбешивать. Я хотел найти инструмент именно для нативной разработки, а не на технологии основанной на WebView. Стал смотреть в сторону Angular, и какие вообще есть на рынке технологии для разработки нативных кроссплатформенных приложений с Angular под капотом. Так я и познакомился с NativeScript.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments15

BitTorrent для раздачи игр, но не в пиратских целях

Level of difficultyMedium
Reading time11 min
Views3.5K

С постоянным ростом размеров дистрибутивов игр и увеличением числа игроков по всему миру, разработчики сталкиваются с необходимостью эффективной дистрибуции своих продуктов. Одним из подходов, которые обеспечивают высокую скорость и надежность передачи данных, является использование протокола BItTorrent. В данной статье я хочу рассмотреть как разработчики и операторы онлайн-игр могут воспользоваться (и частенько пользуются) данной технологией для оптимизации процесса распространения и поделиться опытом ее построения.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments16

Как департамент утилизации CPU превратился в департамент экономии железа, выдерживающий нагрузку в 1 млн RPS

Level of difficultyEasy
Reading time26 min
Views33K

Привет, меня зовут Мария, когда-то я работала на шахте, потом на заводе, а 3.5 года назад пришла в Ozon Tech. Сейчас я старший Golang-разработчик в команде product-facade. Это самый высоконагруженный сервис маркетплейса, но так было не всегда.

Хотите узнать, что скрывается под витриной маркетплейса? Что держит нагрузку в 1 миллион запросов в секунду? Толстые кэши или нечто большее? Про то, как устроено наше кэширование и как мы к этому пришли, — рассказываю в статье.

Читать далее
Total votes 128: ↑128 and ↓0+128
Comments96

Как написать новостной Телеграм-канал если ты не программист. Часть первая

Level of difficultyMedium
Reading time7 min
Views8.8K

Всем привет! Попробую написать трилогию покорения основ Python, отражающую мой путь любителя с “паяльником”. Тут не будет основ, чистого кода, отсылок к требованиям PEP-8, практически не будет ООП.

Всех суровых Senior’ов, читающих данный материал, прошу понять и простить. Я не работаю и никогда не работал разработчиком (по крайней мере пока, но открыт к предложениям:)), не учил алгоритмов (кроме пузырька) и многого не знаю. Мне просто интересно, как мне кажется, “программировать”, а иногда даже хочется поделиться своим опытом.

Итак, что же мы будем делать. Это будет новостной ТГ-канал - новости в него будут попадать с новостного сайта с RSS-лентой. Администратор сможет модерировать новости, прежде чем они попадут в канал через ТГ-бот. Также возможна реализация автоматического рерайта/перевода новостей при помощи Chat-GPT или иной текстовой AI.

В процессе работы мы “пощупаем” работу с внешними библиотеками (их будет достаточно много) и виртуальным окружением venv, спарсим RSS-ленту и страницу новостей, заглянем в мир асинхронного Python, коснемся основ работы с SQLite и даже попробуем задеплоить нашего бота на VSD-сервер через Docker-контейнер.. если у меня хватит на описание всего этого времени и сил:)

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

Для хорошего старта всем начинающим и слабо ориентирующимся в синтаксисе Python рекомендую посмотреть вводный курс CS-50. Тут ссылка на свежую версию на-английском, на просторах YouTube есть более древняя, но переведенная на русский версия.

Читать далее
Total votes 18: ↑16 and ↓2+14
Comments5

Они заставят вас ненавидеть: знакомство с VAST и VPAID, или Как интегрировать рекламу в web-видеоплеер

Level of difficultyMedium
Reading time26 min
Views4.3K

Доброго вам времени суток! Меня зовут Валерия, я фронтенд-разработчик из компании Doubletapp. Год своей жизни отдала на разработку видеоплеера с рекламными интеграциями. На старте была только спека, дока, единственная статья на Хабре, поясняющая за рекламу, и огроменное желание заказчика накрутить оную на видеоплеер. Пришло время и вас поближе познакомить с рекламой.

Статья подойдет тем, кто хочет разобраться в специфике работы VAST и VPAID, настроить кастомное управление рекламой, разместить видеорекламу отдельным блоком на сайте (out-stream) или разбить видеоролик рекламными интеграциями (in-stream).

  • Инструментарий, или Основные ингредиенты
  • Подробнее о VAST
  • Запускаем рекламный блок на странице (out-stream)
 • Подключаем IMA SDK
  • Инициализируем
  • Обрабатываем ошибки
  • Обрабатываем событие ADS_MANAGER_LOADED
  • Запрашиваем и воспроизводим рекламу
  • Продвинутое управление (въезжаем в обработку событий рекламы)
  • Локализация
  • Адаптивность
  • Обработка событий
Разбиваем видеоролик рекламными паузами (in-stream, VMAP)
  • Подробнее о VMAP
  • Подключаем VMAP к видеоплееру
  • Ручное управление стартом рекламы
  • Особенности VPAID

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments2

Что быстрее: Animated + useNativeDriver или Reanimated?

Reading time8 min
Views2.9K

Привет! Меня зовут Денис, я мобильный разработчик в СберМаркете. Пишу на React Native и люблю анимации, ведь они дают жизнь нашим проектам :)

В этой статье попробуем разобраться, что же все таки работает быстрее: React-Native-Reanimated или Animated + useNativeDriver: true.

Будем сравнивать FPS, нагрузку на процессор, оперативную память и воспользуется EventQueue для получения логов.

Дисклеймер: Это теоретическое сравнение на абстрактных примерах, так что перфоманс на реальных проектах может отличаться. Но я постарался нагрузить инструменты как следует и хорошенько проверить их на прочность.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments3

ChatGPT для разработчиков: API, лимиты, как втягивать в него базу знаний, что нельзя сделать, что лучше делать осторожно

Reading time12 min
Views13K
image

Мы с командой вернулись тут с Хайлоада, и там даже CTO крупных компаний задают много вопросов про разработку с LLM. Наша компания занимается прикладной разработкой всего того, что касается GPT/LLM.

Расскажу про очевидные вещи, о которых у меня там спрашивали CTO и разработчики.

Самый частый вопрос: можно ли подключать свою базу документов и можно ли по ней нормально работать?

Можно. Для этого нужно две вещи:

  1. OpenAI может работать с вашей базой, например, вики техподдержки, но её надо векторизовать. Получится, что модель только ищет по ней и может отвечать фрагментом исходника, но может его обрабатывать как текст (то есть сравнивать, анализировать и тому подобное).
  2. Дальше можно использовать подход QA Retrieval Chain для работы с векторной базой. Работает это так: задаём вопрос, LLM формируют запрос к векторной базе, мы вынимаем из неё данные, подкладываем их в вопрос как контекст и передаём в LLM, а они формируют ответ.

Но давайте начнём сначала. Основное:

  1. Какого размера промпты могут быть, сколько, какие лимиты, как их частично обходить.
  2. Как подключается база, как закидывать реально большие документы, как эмбеддится вектор, на каких языках это происходит и тому подобное.
  3. Разные API.
  4. Агентная модель GPT Engineer и АutoGPT.
  5. Фреймворк лангчейн (построение цепочек запросов и разбиение макрозапроса на сотни).

Поехали!
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments13

Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии

Reading time9 min
Views3.1K

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

Сегодня расскажем о том, как в мобильной версии Squadus реализовали востребованную функцию — «прыжок к сообщению» в чате (jump to message).

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

О технических аспектах реализации «прыжка к сообщению» читайте под катом.

Читать далее
Total votes 28: ↑27 and ↓1+26
Comments3

Если ваш фронтендер перестал бояться IE6, покажите ему SmartTV

Reading time7 min
Views22K

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

При создании этого раздела я впервые столкнулась с миром SmartTV. Не каждый фронтендер встречает в своей практике подобные задачи, даже несмотря на то, что сейчас разработка под ТВ довольно популярна.

Меня зовут Лена и я фронтенд-разработчик Яндекс Музыки. В этой статье я расскажу про особенности работы SmartTV и разработки под них на примере свежей фичи, которую мы назвали Время клипов. Теперь в приложении вы можете посмотреть клипы любимых артистов и открывать для себя новых исполнителей, которые подходят вам по настроению.

Под катом обсудим ключевые отличия работы фронтенда над вебом и SmartTV, поговорим про оптимизацию и вёрстку и посмотрим на фотографии множества пультов (без пакетиков).

Читать далее
Total votes 64: ↑64 and ↓0+64
Comments85

Что делает ChatGPT… и почему это работает?

Level of difficultyMedium
Reading time75 min
Views145K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее
Total votes 248: ↑248 and ↓0+248
Comments121

Nginx cache: всё новое — хорошо забытое старое

Reading time12 min
Views96K
В жизни каждого проекта настает время, когда сервер перестает отвечать требованиям SLA и буквально начинает захлебываться количеством пришедшего трафика. После чего начинается долгий процесс поиска узких мест, тяжелых запросов, неправильно созданных индексов, не кэшированных данных, либо наоборот, слишком часто обновляемых данных в кэше и других темных сторон проекта.

Но что делать, когда ваш код “идеален”, все тяжелые запросы вынесены в фон, все, что можно, было закэшировано, а сервер все так же не дотягивает до нужных нам показателей SLA? Если есть возможность, то конечно можно докупить новых машин, распределить часть трафика и забыть о проблеме еще на некоторое время.

Но если вас не покидает чувство, что ваш сервер способен на большее, или есть магический параметр, ускоряющий работу сайта в 100 раз, то можно вспомнить о встроенной возможности nginx, позволяющей кэшировать ответы от бэкенда. Давайте разберем по порядку, что это, и как это может помочь увеличить количество обрабатываемых запросов сервером.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments27

10 задач для девопса, когда уже нечем заняться

Reading time5 min
Views16K

Хорошо, когда у DevOps заканчиваются задачи. Это значит, что все крупные преобразования уже позади. Однако это легко может превратиться в пугающую проблему, способную привести к деградированию навыков и выгоранию. Ради душевного спокойствия себя и своих коллег прочитайте эту статью, если вы чувствуете себя потерянным, не знаете, что делать и как оставаться проактивным.

В идеале работа DevOps должна замедляться. Вся автоматизация работает отлично, CI/CD функционирует настолько хорошо, что вы уже забыли, когда в последний раз приходилось вмешиваться после развёртывания. Кажется, что инфраструктура и процессы достигли идеального состояния, когда осталось лишь несколько мелких улучшений, которые могут и не стоить приложенных усилий.

Это настоящая мечта — не делать ничего, в то время как ваша инфраструктура функционирует подобно хорошо смазанному механизму. Однако в реальности, если вы долго ничего не делаете в роли инженера DevOps, ваши навыки и знания начинают теряться.
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments6

Хакинг метрик качества видео или как с приходом ИИ все становится намного сложнее

Reading time23 min
Views12K

Сейчас модно писать, что ML пришел туда и все стало отлично, DL пришел сюда и все стало замечательно. А к кому-то пришел сам AI, и там все стало просто сказочно! Возможна ли ситуация, когда к нам пришел волшебный ML/DL и все стало сложнее, тяжелее и на порядок запутаннее? Безусловно! Разберем такой пример.

Десятки лет при сравнении кодеков и алгоритмов обработки видео исследователи использовали старые добрые метрики PSNR и SSIM с довольно простыми формулами и были счастливы. Но прогресс невозможно остановить! На их место пришли новые метрики и… тут выяснилось, что они взламываются.

— Погодите, погодите… — скажет взволнованный читатель, — А как это вообще выглядит, взломать метрику??? 
— Добро пожаловать в 21 век, дорогой товарищ! Благодаря неудержимому прогрессу, сегодня можно хакнуть не только утюг, колонку, автопилот машины и домашний пылесос, но и метрику качества видео.

В этот момент собеседники обычно дружно спрашивают, кому это надо? О, поверьте, есть люди, которым не просто надо, а сильно надо! Представьте себе, что вы руководитель подразделения и у вас жесткие KPI (маркетинг требует обогнать конкурентов, от этого зависят нехилые годовые бонусы у всех сотрудников и особенно у вас). Чтобы улучшить видеокодек на условные 4%, требуются десятки человеко-месяцев труда весьма высокооплачиваемых инженеров, причем, бывает, получается, а бывает, не очень. И тут выясняется, что можно за пару недель работы одного зеленого стажера подшаманить метрику на 7%. Ваши действия? Вспоминается жизненный анекдот «тут-то мне карта и поперла»…

Далее мы популярно затронем взлом методом черного ящика, белого ящика, взлом недифференцируемых метрик (привет дистилляция!) и цирк с дифференцируемыми.

Впрочем обо всем по порядку…

Кому интересен цирк с конями взлом метрик — го под кат.

Читать далее
Total votes 97: ↑96 and ↓1+95
Comments28

Как мы перешли с Elastic на Grafana stack и сократили расходы в несколько раз

Reading time8 min
Views28K

Привет! Хочу поделиться историей миграции сервисов логирования и трейсинга с компонентов Elastic Stack на Grafana Stack и тем, что из этого вышло. До миграции у нас в М2 использовались достаточно классические схемы:

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments22

Разбираемся с Redis

Reading time19 min
Views224K

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

Читать далее
Total votes 64: ↑63 and ↓1+62
Comments7

YARL: как Яндекс построил распределённый Rate Limiter с нулевым влиянием на время ответа сервисов

Reading time14 min
Views26K

Yandex Rate Limiter (далее просто YARL) — это сервис лимитирования нагрузки для распределённых сервисов. Его особенность в том, что он способен работать с миллионами квот, имея при этом очень низкие накладные расходы на проверку квоты. Если совсем кратко, это система распределённых Leaky Bucket'ов, с помощью которых можно ограничивать разные величины, связанные со временем: скорость передачи данных по сети, запросы в секунду и т. п.



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

Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments26
1
23 ...

Information

Rating
Does not participate
Location
Омская обл., Россия
Date of birth
Registered
Activity