Pull to refresh
1
0

User

Send message

Как работает протокол HLS

Reading time10 min
Views6K

Вот уже несколько недель я разрабатываю серверную поддержку коротких видео для компании Bluesky.

Основное назначение этой фичи – обеспечивать потоковый показ небольших (максимум 90 секунд) видеороликов. Показ должен быть бесплатным и при этом не слишком накладным для нас.

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

Притом, что такая CDN – это полнофункциональный продукт, мы не хотели чрезмерно замыкаться на конкретном производителе и поэтому решили внести в нашу потоковую платформу некоторые улучшения, тем самым расширив спектр предлагаемых на ней услуг и творчески подойти к реализации протоколов потокового видео.

Читать далее
Total votes 9: ↑8 and ↓1+10
Comments4

Свой плеер для DASH: вошли и вышли, приключение на 20 минут. Доклад Яндекса

Reading time20 min
Views2.7K

Меня зовут Оля, я разработчик в Yandex Infrastructure и я делаю веб‑плеер — библиотеку для воспроизведения видео на разных сервисах Яндекса (например, на Кинопоиске, Диске, Практикуме и Погоде).

Эта история о том, как мы отказались от опенсорс‑решения для воспроизведения потокового видео и написали свой велосипед. Я расскажу об архитектуре нашего решения и о том, с чем мы столкнулись, когда воплощали его в жизнь. Также покажу, какие эксперименты мы проводили и на какие метрики ориентировались.

Читать далее
Total votes 17: ↑16 and ↓1+19
Comments7

Playwright: Лучшая альтернатива Selenium. Первое знакомство

Level of difficultyEasy
Reading time13 min
Views3.8K

Друзья, рад представить вам свою новую статью, посвященную Playwright — мощному инструменту для автоматизации браузера и тестирования. Этот фреймворк уже превзошел Selenium по многим параметрам и продолжает набирать популярность. В статье я подробно рассказываю о его преимуществах и особенностях.

Материал станет первой частью нового цикла. Если тема вам интересна, с удовольствием продолжу делиться своими знаниями о Playwright.

Читать далее
Total votes 14: ↑14 and ↓0+16
Comments26

История оптимизации Python сервиса: пара простых системных улучшений

Level of difficultyMedium
Reading time9 min
Views3.4K

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

Читать далее
Total votes 22: ↑21 and ↓1+24
Comments6

Давайте сделаем крупное приложение на Flask (язык Python)

Reading time18 min
Views15K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее
Total votes 19: ↑19 and ↓0+25
Comments43

Как развивалась технология экстремального сжатия LLM: от QuIP до AQLM с PV-tuning

Reading time4 min
Views8.1K

Мы живём в эпоху LLM — компании применяют на практике всё более крупные модели с миллиардами параметров. Это здорово, потом что большие модели открывают пользователям сервисов новые возможности, но не всё так просто. Размер накладывает ограничения — запускать такие модели очень дорого, а на пользовательских компьютерах — ещё дороже и сложнее. Поэтому часто исследователи и инженеры сначала обучают большую модель, а потом придумывают, как сжать её с минимальными потерями качества, чтобы сделать доступнее. 

Модели выкладываются в формате float16, где на один вес выделяется 16 бит. Два года назад человечество научилось хорошо сжимать нейросети до 4 бит с помощью таких методов, как GPTQ. Но на этом исследователи не остановились, и сейчас актуальная задача — сжатие моделей до 2 бит, то есть в 8 раз. 

Недавно исследователи Yandex Research совместно с коллегами из IST Austria и KAUST предложили новый способ сжатия моделей в 8 раз с помощью комбинации методов AQLM и PV-tuning, который уже доступен разработчикам и исследователям по всему миру — код опубликован в репозитории GitHub. Специалисты также могут скачать сжатые с помощью наших методов популярные опенсорс-модели. Кроме того, мы выложили обучающие материалы, которые помогут разработчикам дообучить уменьшенные нейросети под свои сценарии.

О том, как исследователи пришли к сегодняшним результатам, мы расскажем на примере двух «конкурирующих» команд и их state-of-the-art алгоритмов сжатия — QuIP и AQLM. Это короткая, но увлекательная история «противостояния» исследователей, в которой каждые пару месяцев случаются новые повороты, появляются оптимизации и оригинальные подходы к решению проблем.

Читать далее
Total votes 35: ↑35 and ↓0+44
Comments14

Python — Эволюция создания объектов (первая часть)

Level of difficultyMedium
Reading time10 min
Views7.1K

Как упростить себе жизнь или почему ты должен уметь создавать объекты правильно?

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

В вопросе "как создавать объект?" я сторонник эволюционного подхода. Я не стремлюсь использовать порождающие паттерны при первой возможности. У меня есть простой набор вопросов самому себе, который помогает мне принять решение, стоит ли изменить способ создания объекта или нет.

Читать далее
Total votes 11: ↑10 and ↓1+10
Comments10

Почему квантовая механика и теория относительности несовместимы?

Reading time7 min
Views87K


Несмотря на то, что мы достигли определенных успехов в понимании внутреннего устройства вселенной (бозон Хиггса, ага), в наших знаниях все еще есть зияющие пробелы. В конце концов, почему у нас до сих пор нет Теории Великого Объединения и Теории Всего?.. И почему Общая теория относительности Эйнштейна никак не может подружиться с квантовой механикой?

Кстати говоря, а зачем нам их вообще дружить?

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

Могут ли они сосуществовать вместе?

Вы наверно уже догадались, что мы точно не знаем, как квантовая механика и ОТО могут объединиться в квантовую гравитацию. Не смотря на больше количество любопытных теорий о том, как это можно сделать, я не буду сейчас на них останавливаться, а просто попытаюсь объяснить, зачем это вообще нужно.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments83

Как обхитрить мозг и заставить его полюбить сложные задачи [Дофаминовый детокс]

Level of difficultyEasy
Reading time7 min
Views145K

Как часто вы ловили себя на мысли «Вот, блин, весь выходной прозалипал в бесконечных лентах, а ничего полезного так и не сделал»? Не спешите себя винить! Скорее всего, все дело в вашем мозге, который привык баловаться дофамином. Увы, с этой проблемой сталкиваются большинство современных людей (и мы в beeline cloud — не исключение). Хорошая новость: ее можно решить!

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

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

А теперь попробуйте целый час посвятить учебе... Звучит очень утомительно. А что, если вместо этого часок-другой поработать над своим сайд-проектом? Хм. Всё равно скукотища.

Читать далее
Total votes 118: ↑106 and ↓12+105
Comments144

Шпаргалка по безопасной сборке Docker-образов

Reading time17 min
Views17K

Каждый контейнер Docker основан на образе, который обеспечивает базу для всего, что вы когда-либо будете развертывать и запускать. Если злоумышленник как-то повлияет на сборку образа и изменит Dockerfile, то сможет совершить навредить вашим системам. Например, добавить вредоносный код, получить доступ к секретным данным сборки или атаковать хост-компьютер. Поэтому защита начинается уже во время подготовки образа, с первой инструкции.

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Продолжаю рассказывать о безопасности в Docker. Под катом расскажу, как настроить сборку образов, обеспечить безопасность и добавить сканирование в пайплайн.
Читать дальше →
Total votes 53: ↑51 and ↓2+67
Comments7

Сложнейшая проблема компьютерных наук: центрирование

Level of difficultyMedium
Reading time7 min
Views33K

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →
Total votes 194: ↑189 and ↓5+227
Comments56

Настоящая причина, по которой вы не станете сеньором

Level of difficultyEasy
Reading time5 min
Views12K

История о воробушках, правильном фидбеке и житейских проблемах/

В 1958 году Мао Цзэдун инициировал «Большой скачок» — организованную китайской коммунистической партией кампанию по трансформации страны в индустриально развитое государство.

Акция «Четыре зла» входила в число первых шагов, предпринятых в рамках «Большого скачка». Под девизом «Человек должен победить природу» власти нацелились на уничтожение четырех вредителей: крыс, мух, комаров и воробьев.

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

Истребление воробьев привело к серьезному экологическому дисбалансу. Отсутствие естественных хищников повлекло за собой нашествие насекомых на поля и порчу урожая, что в итоге послужило одной из причин Великого китайского голода 1959-1961 годов.

Читать далее
Total votes 38: ↑19 and ↓19+3
Comments24

10 полезных сочетаний клавиш в PyCharm

Reading time2 min
Views134K

Привет, мои дорогие!

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

Читать далее
Total votes 18: ↑6 and ↓12-5
Comments12

Этот опасный рефакторинг

Level of difficultyMedium
Reading time7 min
Views6.7K

Ошибки во время рефакторинга могут дорого обойтись. Модернизация, ведущая к отказу системы, или внесение новой функциональности параллельно с ошибочными правками явно принесут вред. Но степень вреда может быть разной.
Читать дальше →
Total votes 27: ↑24 and ↓3+37
Comments19

Делаем код-ревью правильно

Level of difficultyMedium
Reading time12 min
Views22K

В начале своей карьеры я как-то работал над одним заказом, создавая платформу сентимент-анализа для социальных сетей. В то время Twitter ещё был Twitter’ом. Наша команда состояла из семи человек, среди которых я был джуниором. Мы были молоды и полны энтузиазма. Наш девиз можно было описать как: «Мы гибкие, быстрые и всё ломаем!». Да, мы действительно гордились своей скоростью. Код-ревью? Я вас умоляю. Мы считали эту практику бюрократическим пережитком корпоративного мира.

И что вы думаете? Через несколько месяцев наша база кода стала подобна минному полю. Причём баги нас волновали меньше всего, хотя их была уйма. Реальная проблема заключалась в том, что никто не мог понять код, написанный другими. У нас во многих местах дублировалась логика, и в модулях использовались разные стили кода. Всё было очень печально.

Тогда до нас дошло! Нужно взять всё под контроль. Код-ревью реально помогают сохранять код читаемым, обслуживаемым и масштабируемым.

Итак, в двух словах: если вы не проводите код-ревью, или делаете их «для галочки», то обрекаете себя на боль, пусть не сразу, но в конечном итоге однозначно. Это можно сравнить с возведением дома на фундаменте из песка. Какое-то время он, может, и простоит, но явно недолго. А в мире стартапов второго шанса у вас может уже не быть.
Читать дальше →
Total votes 50: ↑48 and ↓2+70
Comments26

Немыслимое – как тебя обсуждать?

Level of difficultyEasy
Reading time7 min
Views3.6K

В своей предпоследней статье на Хабре, «Оде о бесполезности споров» я рассказал об эксперименте, в котором ученый пытался переубедить убежденного сторонника плоской Земли. Как вы помните, он отказался даже посмотреть в телескоп, заявляя что «Сама мысль об искривленной поверхности воды оскорбительна для здравого смысла».

Многие читатели, уверен, задавались вопросами: Как это работает? О чем думает сторонник плоской Земли, когда отказывается проверять главную теорию своей жизни на практике? Принимает ли он решение на основании неверно истолкованных фактов или опирается исключительно на эмоции? Я берусь продемонстрировать это способом, понятным каждому разумному человеку — вывернув ситуацию наизнанку.

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

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

Набраться мужества и посмотреть в телескоп
Total votes 29: ↑19 and ↓10+14
Comments192

Как я уронил прод на полтора часа (и при чем тут soft delete и partial index)

Reading time7 min
Views40K

В жизни любого разработчика наступает момент, когда он роняет прод. Представьте: полдень, в Skyeng час пик, тысячи запланированных онлайн-уроков, а наша платформа лежит… 

Все упало из-за ошибки в процессе деплоя, которая связана с тонкостью PostgreSQL. К сожалению, на этом моменте у нас прокололась не одна команда. И чтобы такое больше не произошло ни у нас, ни в другой компании — велкам под кат.

Читать далее
Total votes 146: ↑142 and ↓4+165
Comments174

Самый лучший в мире курс по Машинному обучению — Алгоритмы Машинного обучения с нуля

Reading time1 min
Views25K

Краткий обзор курса, который я недавно закончил пилить на степике. Курс хардкорный :) В нем необходимо с нуля писать алгоритмы машинного. Наверное это один из лучший способов досконально разобраться в алгоритме.

Курс бесплатный: https://stepik.org/course/68260/promo

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

Как эффективно самостоятельно изучать английский язык

Level of difficultyEasy
Reading time8 min
Views44K

Читатели Хабра, категорически вас приветствую! В этой статье я хочу поделиться с вами моделью эффективного изучения английского языка, которую я постарался сформировать исходя из своего n-летнего опыта его изучения.

Расскажу вам насколько это актуально, с чего начать, какие ресурсы и приемы использовать и как эффективно достичь результата.

Читать далее
Total votes 24: ↑23 and ↓1+25
Comments27

Small talk для большого успеха: общение с рекрутером, коллегами и новыми знакомыми

Level of difficultyEasy
Reading time6 min
Views10K

Ребята, привет! Это Лена, методист курсов английского языка в Практикуме, преподаватель и англоговорящий интервьюер в международных IT-компаниях. Мы с вами уже знакомы по статье о собеседовании на английском для разработчиков.

Я хочу более подробно раскрыть пункт о софтскилах, а точнее, поговорить про small talk. Это часть англоязычной культуры, освоить которую полезно всем, кто хочет работать общаться с иностранными коллегами.

Но вот загвоздка: small talk часто кажется чем-то неловким — непонятно, о чём говорить и как долго. Именно с этим я и постараюсь помочь.

Читать далее
Total votes 12: ↑10 and ↓2+10
Comments3
1
23 ...

Information

Rating
Does not participate
Registered
Activity