Реализация гомоморфного шифрования: Математическая магия для конфиденциальных данных

Реализация гомоморфного шифрования: Математическая магия для конфиденциальных данных

Взломать код, не взломав сейф: гомоморфное шифрование без ограничений Представьте, что вы отдаёте свой запертый дневник незнакомцу и просите его подсчитать, сколько раз вы написали «пицца», не давая при этом ключа. Это и есть гомоморфное шифрование (ГС) вкратце: выполнение вычислений над зашифрованными данными без их расшифровки. В условиях огромного объёма чувствительных данных — медицинских записей, финансовых транзакций, личной переписки — ГС предстаёт тем криптографическим единорогом, которого мы так долго искали. Сегодня мы реализуем практические решения ГС на Python, превращая математическое волшебство в рабочий код....

30 июня 2025 14:00 · 5 минут · 857 слов · Maxim Zhirnov
Создание музыкального рекомендателя, который не рекомендует 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