Обновить
1024K+

Python *

Высокоуровневый язык программирования

600,37
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Почему нельзя генерировать пароли через random в Python: разбор на практике

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7K

Вы уверены, что ваш “случайный” пароль действительно случайный?

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

В статье я последовательно разбираю:

почему классическая “энтропия пароля” часто вводит в заблуждение;

как устроен Mersenne Twister и в чём его фундаментальная проблема;

почему даже хороший seed (через os.urandom) не делает random безопасным;

и что на практике можно (и нельзя) восстановить, имея время генерации, код и несколько паролей.

Я попытался воспроизвести реальную атаку: восстановить seed по временной метке и набору сгенерированных паролей. Спойлер — всё оказалось сложнее, чем кажется.

Отдельно показываю, где проходит граница между «кажется надёжным» и «действительно криптостойким», и почему secrets — это не просто «рекомендованный модуль», а принципиально другой класс генерации.

Читать далее

Отчёт об инциденте атаки на цепочку поставок LiteLLM/Telnyx + рекомендации по улучшению безопасности

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.3K

В данном отчёте экспертов PSF(Python Software Foundation) об инциденте атаки на цепочку поставок популярных пакетов litellm и telnyx вы узнаете технические подробности и рекомендации для разработчиков и сопровождающих PyPI‑пакетов о том, как подготовиться и защититься от подобных инцидентов.

Читать далее

Монолит с отчётами на 30 секунд: как я переписал архитектуру и что из этого вышло

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели8.4K

Пришёл в проект, там легаси погоняет легаси. Спагетти такие что уже в рот лезут. Отчёты по филиалам открывались 30 секунд. Команда реально боялась нажать кнопку в рабочее время, а вдруг база ляжет.

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

Первое, что я сделал: открыл EXPLAIN ANALYZE.

Как отчёты ускорились в 20 раз

Реверс-инжиниринг безымянного табло электронной очереди: когда 1 бит весит целый байт, а математику за тебя делает ИИ

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8.7K

Я работаю в компании, которая разрабатывает и продаёт систему электронной очереди. Пришёл недавно, успел написать веб-клиент для их очереди — общение по SOAP, веб сайт, талоны с QR кодом, ничего особенного. Потом руководство поставило задачу: интегрировать физическое табло с вызовом клиентов через веб. Старое десктопное приложение как-то умеет зажигать на нём цифры — надо сделать то же самое, но из веба.

Окей, задача понятная. Первым делом пошёл к тем, кто делал это приложение.

Читать далее

Глухой телефон для ИИ: мы замерили физику LLM-графов и поняли, почему добавление агентов всё ломает

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7.1K

Индустрия ИИ переживает бум мультиагентных систем. Кажется, рецепт AGI найден: просто соедините 10 умных нейросетей в команду, дайте им роли, и они свернут горы.

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

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

Так появился опенсорсный проект llm-coordination-harness - строгий измерительный стенд (measurement rig), который доказывает, что у общения нейросетей есть своя физика, которую можно и нужно измерять.

Под катом рассказываем и показываем на графиках. Никаких заявлений про AGI - только честный хардкорный ресёрч, физика графов и отрицательные результаты, которые оказались важнее положительных.

Заглянуть в черный ящик

Chat Mountain | WebView, звук и статус проекта

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели10K

За последний месяц основной фокус сместился на стабильность и удобство. Мобильная версия получила полный адаптив — своя навигация, отдельные экраны для серверов, чатов, профиля и поиска. Часть функционала сознательно упростили, чтобы интерфейс оставался отзывчивым даже на слабых устройствах.

В голосовых комнатах появилось нейросетевое шумоподавление. Фоновый шум, клавиатура, вентиляторы — всё это теперь фильтруется на лету. Для тех, кому важна экономия ресурсов, остаётся классический режим.

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

Поле ввода сообщений переработали: обновлённая панель форматирования, поддержка диаграмм и опросов прямо из тулбара.

На бэкенде пересобрали хранение данных о прочтениях и добавили индексы под основные запросы — снизилась задержка и ускорился вывод информации.

Читать далее

Гибридный поиск по коду в GitLab: как я ускорил поиск по 100+ GitLab-проектам с часов до минут

Время на прочтение6 мин
Охват и читатели7.7K

Когда проектов в GitLab становится много, довольно быстро появляется одна и та же задача: найти, где используется конкретный API, URL, env-переменная или конфигурационный параметр.

Пока репозиториев мало, всё просто: открыл поиск, ввел строку, получил результат. Но когда проектов уже больше сотни, а нужные вхождения лежат не только в коде, но и в YAML-конфигах, Helm-чартах, .env и JSON-файлах, жизнь становится менее романтичной.

Первый лобовой вариант — просто скачать все проекты локально и искать по ним через grep, ripgrep или IDE. Работает, но тащить 100+ репозиториев на локальную машину ради одной проверки — идея так себе. Ноутбук, скорее всего, энтузиазма не разделит.

Мне хотелось искать прямо поверх GitLab, без локального зеркала всей группы репозиториев. Я начал с просмотра готовых вариантов, а в итоге пришёл к своему гибридному краулеру: код ищется через GitLab API, а конфиги добираются отдельным глубоким обходом файлов. В результате поиск по 100+ проектам сократился с часов до нескольких минут.

Читать далее

Почему argsort(argsort(x)) возвращает ранги элементов массива

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели7.9K

Иногда в программировании встречаются трюки, которые отлично работают, но почти нигде не объясняется — почему.

Один из таких приёмов в NumPy — вычисление рангов элементов массива с помощью двойного argsort: argsort(argsort(x)). Этот однострочник часто рекомендуют на форумах и в ответах на Stack Overflow, однако строгого объяснения обычно не приводят.

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

Читать далее

Невидимый след: автоматическая очистка метаданных из буфера обмена на Python

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.7K

Существуют десятки утилит для очистки метаданных (от ExifTool до встроенных средств ОС), но у всех них есть общий минус — они требуют ручного действия.

В результате родился MetaPure — фоновый демон для Windows, который перехватывает файлы в буфере обмена в момент копирования и бесшовно выжигает из них метаданные, прежде чем вы нажмете Ctrl+V.

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

Читать далее

Вайбкодинг с Claude | Оформление Telegram-бота, UX и сценарии взаимодействия

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.6K

В Telegram-боте побеждает не тот, у кого круче код, а тот, кем удобно пользоваться. Можно написать идеальную архитектуру, подключить базу данных, настроить асинхронные запросы — и всё равно получить ноль реальных пользователей, потому что ботом невозможно пользоваться. Человек заходит, видит простыню текста, не понимает, что делать, нажимает не туда, получает ошибку и закрывает чат навсегда.

Разница между «бот работает» и «ботом пользуются» — это UX. В этой статье разбираем, как сделать так, чтобы пользователь не думал, а просто проходил сценарий. Поговорим о первом сообщении, кнопках и их группировке, сценариях вместо команд, FSM (машине состояний), текстах и обратной связи. А также покажем официальные цветные кнопки и премиум-эмодзи из Bot API 9.4, которые теперь доступны всем. В конце — чеклист для проверки вашего бота.

Читать далее

Я устал настраивать ПК и написал свое приложение для Windows на Flutter

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели18K

Привет. Меня зовут Никита.

Наверняка многим знакома ситуация: кто‑то из друзей или родственников просит «почистить комп», «передалать PNG в JPG» или «раскидать свалку файлов в загрузках».

В какой‑то момент мне это надоело и я решил обернуть все свои рутинные скрипты в удобный графический интерфейс. Чтобы можно было просто скинуть человеку один.exe файл, и всё работало из коробки. Никаких установок питона, никаких консолей.

Так появился мое приложение SmartLauncher.

Читать далее

DIY мультирум: переключаем ТВ между комнатами с помощью Home Assistant

Время на прочтение13 мин
Охват и читатели15K

Прежде чем начать, хочу сказать спасибо @metalstiv за вдохновение и отличную статью «DIY мультирум: переключаем ТВ между комнатами с помощью смартфона». Именно после её прочтения у меня созрела идея повторить и немного адаптировать решение под свои задачи — но с одним важным отличием: я решил доверить написание кода и текста искусственному интеллекту.

Читать далее

Python: с чего начинать, где брать знания и как не бросить после первых трудностей — интервью с Алексеем Голобурдиным

Уровень сложностиСредний
Время на прочтение43 мин
Охват и читатели14K

Python любят за «плавный вход» и огромную экосистему. Но вокруг него было много мифов: от «Python медленный» до «джунам не пробиться без накрутки опыта». В этом интервью я - Александр, автор (телеграм-канала «Shulepov Code»), поговорил с Алексеем Голобурдиным – автором книги «Типизированный Python», основателем канала на Ютубе «Диджитализируй» (170k+ подписчиков) и практиком, совмещающим продуктовую разработку, обучение и эксперименты с БЯМ (большая языковая модель) LLM и ИИ-агентами. В разговоре затронуты: устройство Python и CPython, роль PEP8, корректный подход к изучению Python с нуля, а также ситуации, в которых нейросети действительно помогают, и случаи, когда они формируют лишь иллюзию обучения.

Читать далее

Ближайшие события

Контролируемая эволюция RAG-системы: оценка mcp серверов и кеширование результатов запрос-ответ

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели9.3K

Контролируемая эволюция RAG-системы: оценка mcp серверов и кеширование результатов запрос-ответ

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

Читать далее

Проверяем веб-расчёт потерь в шинах на соответствие стандартам

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели4.2K

От уравнений до верификации: как мы сравнивали разработанный веб-модуль для анализа потерь в НКУ (низковольтных комплектных устройствах) с нормативной базой

А можно ли рассчитать потери и нагрев шин для оценки тепловыделения в НКУ быстро, точно и прямо в браузере?

Мы решили проверить — и разработали веб-ориентированное расчётное ядро, которое затем сравнили с требованиями ГОСТ.

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

Шины, при протекании по ним тока, нагреваются из-за Джоулевых потерь, и если температура выходит за рамки нормы, последствия предсказуемы: ускоренное старение изоляции, рост потерь энергии, а в критическом сценарии — перегрев и выход из строя оборудования.

На практике инженеры часто оказываются перед выбором:

Нормативные таблицы — надёжно и консервативно;

Дорогие CAE-пакеты (COMSOL, ANSYS) — сложно, точность требует времени и бюджета;

Упрощённые ручные расчёты — быстро, но менее точно.

А что, если объединить скорость, точность и прозрачность в одном веб-инструменте?

В этой статье мы покажем, как на основе физических уравнений мы разработали веб-ориентированное расчётное ядро для теплового расчёта шин, а затем — докажем его точность в сравнении с ГОСТ.

Читать далее

Достаточно подробно изучаем, что происходит внутри Feed-Forward Neural Networks, и реализуем в коде

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели5.1K

Нейронные сети сегодня уже не какая-то магия из научных статей. Они стоят за рекомендациями в сервисах, распознаванием изображений и, конечно, за LLM-моделями, которыми мы пользуемся каждый день. Но знакомство с ними у многих происходит через готовые библиотеки такие, как PyTorch или TensorFlow: написал пару строк кода — модель обучилась — всё работает. А что именно произошло внутри обычно остаётся загадкой.

Feed-forward нейронная сеть (FNN) — одна из самых базовых архитектур, на основе которой исторически выросли более сложные модели: DNN, CNN и многие другие современные подходы. Хотя сама по себе она редко используется в практических задачах в чистом виде, именно через неё проще всего понять фундаментальные принципы обучения нейросетей.

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

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

Читать далее

Как я построил автоматический сервис защиты данных: FastAPI + Marzban + Docker

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели8.6K

Задача: человек регистрируется, оплачивает, получает ключ на почту и сразу подключается. Без ручной работы с моей стороны. Под капотом — FastAPI, Marzban, PostgreSQL, React, ЮKassa, Resend. Расскажу про архитектуру, грабли и неочевидные решения.

Читать далее

Маленький LLM-чат на Python с Ollama и LiteLLM. Часть 3: добавляем историю сообщений и контекст

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части добавляем историю сообщений — и чат наконец начинает помнить разговор.

Читать далее

Как засунуть 62ГБ в 15ГБ и не сойти с ума: Партизанский MLOps на примере Gemma 4 31B

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели11K

TL;DR: В этой статье мы возьмем новейшую Gemma 4 31B, которая в оригинале весит 62 ГБ, и заставим её работать и выгружаться на бесплатном Kaggle с лимитом диска в 57 ГБ. Спойлер: нам придется удалять исходники прямо во время работы Python-скрипта.

Читать далее

Authorization без middleware: как я завернул Casbin в декораторы для FastAPI

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.6K

Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.

Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(get_enforcer), одна ручная проверка. Потом роутов становится больше, правил доступа становится больше, и внезапно половина endpoint’ов начинает содержать не бизнес-логику, а обвязку вокруг нее.

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

В итоге я собрал casbin-fastapi-decorator — тонкий слой над Casbin для FastAPI, который позволяет описывать authorization через декораторы.

Идея простая:

Читать далее