Создание музыкального рекомендателя, который не рекомендует Nickelback

Создание музыкального рекомендателя, который не рекомендует Nickelback

Представьте: вы только что создали идеальный плейлист с треками в стиле synthwave, и вдруг приложение предлагает вам «How You Remind Me» уже в третий раз за неделю. Давайте создадим что-то получше, используя коллаборативную фильтрацию — ту же технологию, что лежит в основе Spotify Discover Weekly (но, надеюсь, без Чада Крюгера). К концу этого руководства вы будете рекомендовать музыку настолько персонализированно, что ваши пользователи подумают, будто вы установили жучок в их AirPods....

17 июня 2025 14:00 · 4 минуты · 729 слов · Maxim Zhirnov
Apache Airflow против Prefect: дилемма оркестратора

Apache Airflow против Prefect: дилемма оркестратора

Представьте себе управление оркестром, где половина музыкантов играет Бетховена, а другие пытаются исполнить «Macarena». Вот так и ваш конвейер данных без должного управления. Давайте рассмотрим двух «маэстро» — Apache Airflow и Prefect, чтобы понять, какое решение позволит вашим данным звучать в гармонии. Подготовка сцены: основные реализации Симфония «Hello World» от Airflow from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import datetime default_args = { 'owner': 'mozart', 'retries': 3 } with DAG('classical_music', start_date=datetime(2025, 6, 4), schedule_interval='@daily') as dag: tune = BashOperator( task_id='play_requiem', bash_command='echo "The show must go flow!...

4 июня 2025 14:01 · 3 минуты · 513 слов · Maxim Zhirnov
Великое выяснение зависимостей Python: Когда поэзия встречается с Pipenv в виртуальном восьмиугольнике

Великое выяснение зависимостей Python: Когда поэзия встречается с Pipenv в виртуальном восьмиугольнике

Представьте: вы стоите в проходе с упаковками Python и смотрите на два блестящих инструмента, которые обещают упорядочить ваши зависимости лучше, чем Мари Кондо организует ящики для носков. Давайте разберёмся, почему разработчики всё чаще выбирают Poetry вместо Pipenv, даже если оба инструмента утверждают, что приносят радость в управление зависимостями. Виртуальные среды: танго с .venv # Тонкое приглашение Poetry poetry init -n && poetry install # Усердный подход Pipenv pipenv install --python 3....

1 июня 2025 14:00 · 3 минуты · 473 слова · Maxim Zhirnov
Почему Жесткое кодирование учетных данных Похоже на хранение Запасных Ключей под ковриком для приветствия (И когда Вам Все равно следует это делать)

Почему Жесткое кодирование учетных данных Похоже на хранение Запасных Ключей под ковриком для приветствия (И когда Вам Все равно следует это делать)

Давайте признаем очевидное: указание учётных данных в виде открытого текста — это как пицца с ананасами в сфере кибербезопасности — все её критикуют, но разработчики в определённых контекстах её тайно ценят. Прежде чем сторонники строгой безопасности придут ко мне с вилами и уязвимостями нулевого дня, позвольте объяснить, почему иногда, в контролируемых средах разработки, хранение учётных данных на видном месте может быть практичным решением. Адвокат дьявола: файл Docker Compose Рассмотрим этот вполне разумный проступок:...

28 мая 2025 06:00 · 3 минуты · 635 слов · Maxim Zhirnov
Важность идиоматического кода: Написание Python как Pythonista (или JavaScript как JS Pro)

Важность идиоматического кода: Написание Python как Pythonista (или JavaScript как JS Pro)

Ах, идиоматичный код — это разница между написанием программного обеспечения и созданием цифровой поэзии. Представьте, что вы заказываете «жидкую сущность обжаренных зёрен Coffea arabica в цилиндрической термоизолированной ёмкости», когда можно просто сказать «кофе с собой». Давайте разберёмся, почему написание кода, который «пахнет» своим языком программирования, важнее, чем вы думаете. Почему важен идиоматичный код (не только для того, чтобы похвастаться) Идиоматичный код подобен хорошо подогнанному костюму: Поддерживаемый (будущий вы отправит благодарственные письма) Производительный (проникает оптимизация, о существовании которой вы не знали) Коллективный (использует тайный язык жестов команды) Рассмотрим этот поединок на Python:...

15 мая 2025 14:00 · 3 минуты · 548 слов · Maxim Zhirnov