Pull to refresh
12
0
Александр Шатилов @alexbraun

Tech Lead using Angular & .net

Send message

Взлом YouTube для быстрого скачивания видео

Reading time9 min
Views73K
Мы неоднократно рассказывали о специальном софте, который позволяет скачивать видео с YouTube. Это в первую очередь youtube-dl (yt-dl) и его клоны, такие как yt-dlp и yt-dlc. С ними воюют могучие копирасты, пытаются удалить их из поисковой выдачи, с хостингов, с Github и так далее, по известной схеме «тотальная война».

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

Сами программки — просто технические инструменты для скачивания общедоступного контента, они ничего не воруют и не пиратят. Просто доступ происходит нестандартным способом, который не предусмотрен официально. Посмотрим, как это делается.
Читать дальше →
Total votes 123: ↑113 and ↓10+148
Comments421

Скачиваем кусок видео с YouTube с помощью ffmpeg

Reading time5 min
Views9K

Я выступил с докладом на WordCamp US 2023 и захотел скачать видео с ним. Я всегда стараюсь хранить собственные копии таких видео, потому что некоторые конференции в прошлом со временем закрывали к ним доступ.

Моя презентация в прямом эфире транслировалась через YouTube, однако получившееся видео длится 9,5 часа!

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

Читать далее
Total votes 6: ↑5 and ↓1+6
Comments8

Синхронизация локальных изменений с docker/kubernetes контейнером

Level of difficultyEasy
Reading time3 min
Views9.2K

Салют!

Хочу рассказать вам про такие замечательные инструменты как docker compose(быть точнее про новую возможность watch), skaffold, tilt.

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

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

Синхронизация локальных изменений с kubernetes контейнером. Часть 2

Level of difficultyEasy
Reading time3 min
Views2.2K

В предыдущей статье показал вам как работают docker desktop watch, skaffold dev и tilt up, которые помогают синхронизировать локальные изменения в контейнер, что очень важно во время разработки.

На этот раз хочу показать DevSpace и Garden, эти инструменты очень похожи на Tilt, у них есть dashboard, как у Tilt, есть мгновенная синхронизация изменений и под катом вы увидите, как легко можно запустить проект в kubernetes и начать разрабатывать.

Читать далее
Total votes 2: ↑1 and ↓10
Comments0

Как уменьшить вес продуктовой анимации в 400 раз (без AI)

Level of difficultyMedium
Reading time4 min
Views11K

Все любят красивую и качественную графику, но обычно такая графика весит много и влечёт проблемы с её добавлением в дистрибутив проекта. А, возможно, и доработки по внешней загрузке или самое частое — сжатие с потерей качества. Каждый дизайнер хоть раз, да говорил «Вот бы можно было и качество сохранить, и отдать разработчикам легкие файлы…». Сегодня нет классных AI-решений для этой задачи, но в этой статье мы расскажем о том, как нам удаётся значительно ужимать графику с использованием растровых и векторных элементов, содержащей альфа-канал.

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

Читать гайд
Total votes 12: ↑8 and ↓4+9
Comments22

React hooks, как не выстрелить себе в ноги. Часть 4

Reading time13 min
Views17K

Использование ref в функциональных компонентах играет две роли:

1. С помощью них можно получить ссылку на dom элементы и react компоненты

2. ref можно использовать как стабильные переменные.

В этой статье сосредоточимся на первой роли, разберем, как с помощью ref получить доступ к dom элементам и компонентам react, включая такие какие способы как createRef, useRef и ref callback. Обсудим для чего нужны forwardRef и useImperativeHandle , и как с их помощью получить ссылку на функциональные компоненты, спойлер: нельзя так просто получить ссылку на функциональный компонент с помощью ref. А уже в следующей статье обсудим роль ref в качестве стабильной переменной, и как это облегчит нам жизнь при использовании useEffect, useMemo, useCallback.

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

Наблюдение за температурой: введение в холодные и горячие Observable в rxjs

Level of difficultyEasy
Reading time4 min
Views16K

По мере изучения RxJS разработчик рано или поздно сталкивается с такими понятиями, как cold и hot observable. А на технических собеседованиях в команды, которые используют RxJS, можно услышать вопросы по этой теме.

Например, чем горячий поток отличается от холодного? Можно ли холодный поток превратить в горячий и наоборот? И если да, то как это сделать?

В статье попробуем разобраться в теме и найти ответы.

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

5 советов для прокачки своих навыков в Angular

Reading time9 min
Views23K

Этим летом мы с Ромой запустили серию твитов с полезными советами и приемами по Angular. Сообщество тепло встретило эту инициативу, и я решил написать обобщающую статью.

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

Читать далее
Total votes 26: ↑25 and ↓1+26
Comments9

Полное руководство по стратегии обнаружения изменений Angular onPush

Reading time8 min
Views105K

image


Default cтратегия обнаружения изменений


По умолчанию Angular использует ChangeDetectionStrategy.Default стратегию обнаружения изменений.


ChangeDetectionStrategy.Default работает таким образом, что каждый раз, когда что-то меняется в нашем приложении, в результате различных пользовательских событий, таймеров, XHR, промисов и т.д., обнаружение изменений будет запускаться по всем компонентам.

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

Ленивые бесконечные списки на основе Deferrable Views

Level of difficultyMedium
Reading time5 min
Views3.4K

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

В статье рассмотрим, как сделать бесконечные ленивые списки на основе Deferrable Views, недавно появившихся в Angular 17 и затронем некоторые моменты оптимизации предлагаемого подхода. Статья содержит примеры кода и демонстрационное приложение, показывающее применение Deferrable Views для решения задачи.

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

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Level of difficultyEasy
Reading time23 min
Views22K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее
Total votes 109: ↑108 and ↓1+133
Comments34

Работа с событиями на стероидах

Level of difficultyEasy
Reading time8 min
Views4.2K

Это будет познавательная статья про одну из самых интересных возможностей Angular, о которой редко вспоминают. Но также это будет и реклама нашей open-source-библиотеки. Поскольку вы, возможно, просто не знаете, насколько она вам нужна. 

За какой-то 1кБ gzip вы сможете улучшить DX во многих различных сценариях, которые мы рассмотрим ниже. Если вы уже знакомы с этой библиотекой, в статье я расскажу про пару новых возможностей.

Как Angular работает с событиями? Что происходит, когда вы пишете (click) в шаблоне? Какая магия обрабатывает клавишу Escape, когда вы подписываетесь на (keydown.esc)? Немного заглянем в исходный код и узнаем про малоизвестный публичный API и как можно использовать его себе во благо.

Читать далее
Total votes 19: ↑17 and ↓2+15
Comments0

Замыкания в JavaScript для начинающих

Reading time8 min
Views93K
Замыкания — это одна из фундаментальных концепций JavaScript, вызывающая сложности у многих новичков, знать и понимать которую должен каждый JS-программист. Хорошо разобравшись с замыканиями, вы сможете писать более качественный, эффективный и чистый код. А это, в свою очередь, будет способствовать вашему профессиональному росту.

Материал, перевод которого мы публикуем сегодня, посвящён рассказу о внутренних механизмах замыканий и о том, как они работают в JavaScript-программах.

Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments54

Как работают this, call, apply и bind в Java Script: разбираемся на примерах

Reading time3 min
Views29K

Привет, Хабр! Эту статью написал Тарас Голомозый, fullstack web-разработчик и преподаватель в школе программирования Эльбрус Буткемп. В своей практике он часто сталкивается с кейсами выпускников, которых на собеседовании просят рассказать о роли ключевого слова this в JavaScript. Простого определения про ссылку на контекст часто оказывается недостаточно, требуется более глубокое погружение в тему. В этой статье он на нескольких примерах разбирает, в каких ситуациях может пригодиться это ключевое слово и как используется call, apply и bind.

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

Squad Health Check: измеряем здоровье команд

Reading time9 min
Views27K
Метрики, KPI, SLA, DoD, OKR — численных показателей производительности и эффективности команд существует много, но часто их недостаточно, чтобы понять, как на самом деле обстоят дела в команде. Довольны ли люди тем, что они делают, гордятся ли своим продуктом, хотят ли идти в офис?

Squad Health Check — модель оценки здоровья команды, придуманная в Spotify, и сегодня расскажем, как мы в Яндекс.Деньгах измеряем наше здоровье и что из этого вышло.


Читать дальше →
Total votes 20: ↑17 and ↓3+16
Comments9

Измеряем команду с JIRA и Grafana: sprint reports, грейдирование и не только

Reading time10 min
Views9.3K

Всем привет! Меня зовут Дмитрий Шкилёв, я тимлид команды Teachers Platform. Мы занимаемся личным кабинетом преподавателя и внутренними ресурсами, которые необходимы для обеспечения работы преподавателей. 

Сегодня хотелось бы поговорить про такую не очень популярную историю, как измерение показателей команды разработки. За рамками статьи хочу оставить, почему необходимо измерять что-либо в работе команды — это тема для отдельного рассказа. Также тут вы не найдёте готовых рецептов для построения бордов в Grafana, но зато получите всё необходимое, чтобы начать их делать самостоятельно. Цель статьи — поделиться, как с минимумом инструментов измерять интересующие тимлида показатели.

Под катом несколько кейсов. Они актуальны для конкретной команды с ее укладом, поэтому прежде всего погружу вас в наши процессы. Но при этом прошу помнить, что статья — не агитация за определённый процесс работы, а описание способа построения дашбордов на примере отдельно взятой команды. Вы вправе сами решить, делать ли вам Code Review, логировать ли время, оценивать с помощью идеальных часов или стори поинтов, использовать ли сабтаски или связанные таски, как связывать баги с задачами и каким образом разделять задачи по эпикам. И я надеюсь, что после прочтения статьи вы сможете создать актуальный для вас борд.

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

Журнал архитектурных решений (ADL) при проектировании информационных систем

Level of difficultyEasy
Reading time4 min
Views7.6K

Для сложных информационных систем бывает крайне сложно принять компромиссные решения с учетом ограниченных ресурсов. Одним из возможных способов решения является подход Architecture Description Log, который внедрен в крупных компаниях, таких как Google, Spotify и Microsoft. В этой статье мы рассмотрим основные положения ADL и обсудим, чем это может быть полезно для создания сбалансированной архитектуры в гибкой методологии разработки.

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

Градиентный бустинг. Реализация с нуля на Python и разбор особенностей его модификаций (XGBoost, CatBoost, LightGBM)

Level of difficultyHard
Reading time28 min
Views13K

На сегодняшний день градиентный бустинг (gradient boosting machine) является одним из основных production-решений при работе с табличными, неоднородными данными, поскольку обладает высокой производительностью и точностью, а если быть точнее, то его модификации, речь о которых пойдёт чуть позже.

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

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

Как работает FaceSwap?

Reading time9 min
Views20K


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


Сегодня мы, команда Sber AI, расскажем про различные подходы к FaceSwap с помощью нейросетей. Также мы хотим разобраться, какие у разных подходов есть преимущества и недостатки? И главное — как же все это работает?

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments1

Пять книг про NLP, с которых можно начать

Level of difficultyEasy
Reading time3 min
Views15K

Всем привет! Меня зовут Валентин Малых, я — руководитель направления NLP-исследований в MTS AI, вот уже 6 лет я читаю курс по NLP. Он проходит на платформе ODS, а также в нескольких университетах. Каждый раз при запуске курса студенты спрашивают меня про книги, которые можно почитать на тему обработки естественного языка. Поскольку я все время отвечаю одно и то же, появилась идея сделать пост про мой список книг, заодно описав их. 

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments7
1
23 ...

Information

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