Как стать автором
Обновить
473.49

Python *

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

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

BlackWave: Как я создал симулятор соцсети с тысячами ИИ-ботов и почему перешёл на Python

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

Эта статья — не просто рассказ о разработке. Это путь от сумасшедшей идеи «социальной сети для одного» до полноценной open-source платформы, где каждый бот — личность. Я поделюсь тем, как строил архитектуру, зачем отказался от C# в пользу Python и почему важно, чтобы ИИ-боты вели себя не как алгоритмы, а как настоящие люди.

Читать

Ищем игры для Atari в случайных данных

Уровень сложностиПростой
Время на прочтение24 мин
Количество просмотров12K

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч. Затем система классификатора просканировала их при помощи эмулятора Atari 2600, чтобы проверить, окажется ли какой-то из этих случайных файлов игрой для Atari. Этот проект отвечает на вопросы, которые никто не задавал, он никому не нужен и представляет собой огромную пустую трату ресурсов. Что, если засунуть в GPU миллиард обезьян и заставить их написать игру для Atari 2600?

Благодаря прогрессу GPU, ИИ и машинного обучения сегодня мы можем (очень быстро) написать на Python скрипт, который дампит мусор в ROM по 4 КБ и спрашивает: «похоже ли это на игру?». Проект был создан не из ностальгии, моей первой консолью была NES. Я вознамерился исследовать нечто невообразимо обширное и посмотреть, найдётся ли там что-нибудь странное.

Читать далее

5 техник, применяемых в анализе временных рядов, которые должен знать каждый. Часть 2

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров5.8K

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

В этом разделе мы рассмотрим некоторые из наиболее эффективных методов.

Читать далее

Ускорение тестового набора PyPI на 81%

Время на прочтение12 мин
Количество просмотров1.3K

Компания Trail of Bits уже несколько лет сотрудничает с репозиторием PyPI, помогая добавлять в проект новые возможности и улучшать стандартные параметры безопасности в экосистеме управления пакетами Python.

Читать далее

Брайлекс — мобильное устройство ввода текста шрифтом Брайля

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров887

Что такое BraiLex?

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

BraiLex можно использовать для ввода текста без фиксированного основания даже во время ходьбы.

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

(По состоянию на 11 июня 2025 года).

Читать далее

Как и когда использовать Celery — мой опыт на проде

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.2K

Как и когда использовать Celery — мой опыт на проде

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

Читать далее

Постоянный логин в автотестах? Решаем с Playwright и экономим время

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

Привет, тестировщики и кодеры! Представь: пишешь автотесты для UX, всё красиво, запускаешь — и каждый тест начинает с нуля: логин, пароль, кнопка. Как будто у тестов амнезия! Это бесит, тормозит и превращает код в копипасту. Давай разберёмся, как выкинуть повторный логин на свалку и ускорить всё с Playwright и Python.

Читать

Залезаем на плечи гигантов — создаем модуль для ComfyUI для свободного движения камеры и создание 6dof сцен из фото

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.3K

Всем привет!

Я много работаю с видео для виртуальной реальности, и одна из задач, которая всё ещё маячит на горизонте и требует уймы усилий — удобное создание и стриминг полноценного 6Dof видео. Большинство существующих решений сводятся к двум крупным направлениям.

В этой статье мы рассмотрим, как расширить возможности генеративных моделей для виртуальной реальности (VR), создав модуль для ComfyUI, который позволит:

преобразовывать изображения и видео между pinholefisheye и equirectangular проекциями;

итеративно дорисовывать панорамы до полного сферического охвата;

синтезировать новые ракурсы свободным движением камеры в 3‑D‑пространстве.

Я покажy, как объединить продвинутый reprojection grid_sample с outoainting, картами глубины и облаками точек, чтобы получить реалистичные «новые виды» из одного изображения. Кроме того совместим этот подход с подходом Video Generation.

Читать далее

Делаем ИИ автоответчик в Telegram

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.3K

Привет, Хабр! Хочу поделиться своим опытом создания бота, который может имитировать стиль общения любого пользователя Telegram. Проект AI Telegram Responder позволяет обучать модели на основе истории переписки и использовать их для автоматических ответов в определенных чатах.

Читать далее

Фундаментальные вопросы по ML/DL, часть 1: Вопрос → Краткий ответ → Разбор → Пример кода. Линейки. Байес. Регуляризация

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров4.2K

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

Времени мало, объема много, цели амбициозные - нужно научиться легко и быстро объяснять, но так же не лишая полноты!

Обращу внимание, самый действенный способ разобраться и запомнить - это своими руками поисследовать задачу! Это самое важное, оно происходит в секции с кодом.

Будет здорово получить ваши задачи и разобрать в следующих выпусках!

Как только разберетесь приступайте к части 2!

Взглянуть на старое под новым углом →

MCP (Model Context Protocol). «Мне только попробовать!»

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

Если вам довелось уже почитав статьи про mcp технологию озадачиться вопросом «а что же происходит под капотом» и при этом какое то представление о том, что же такое mcp, у вас все таки есть, то, возможно, эта заметка поможет вам сделать еще один шаг к пониманию что за всем этим скрывается.

Читать дальше

Поговорим о DevSecOps и культурной трансформации в мире разработки

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров2.4K

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

Почему «последняя миля» в тестировании безопасности — это провал: статистика OWASP и NIST о том, как 97% приложений содержат уязвимости, а исправление ошибок после релиза обходится в 6 раз дороже.

Как DevSecOps убирает барьеры между командами: интеграция безопасности в CI/CD, автоматизация проверок и сдвиг «влево» (Shift Left) — от теории к реальным кейсам Microsoft, Netflix и Capital One.

Почему успех DevSecOps зависит не от инструментов, а от культуры: как руководство может создать среду, где безопасность становится общей ответственностью, а не «чужой заботой».

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

Статья подойдёт для разработчиков, руководителей IT-команд, специалистов по кибербезопасности и всем, кто хочет превратить уязвимости в прошлое.

Читать далее

Создаем свой RAG: от загрузки данных до генерации ответов с LangGraph. Часть 2

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

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

Технология RAG (Retrieval-Augmented Generation) сочетает поиск информации с генерацией ответов, делая AI-системы более точными и осмысленными. В этой статье разберём практическую реализацию RAG с помощью LangGraph — гибкого инструмента для построения агентов и графов.

Читать далее

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

Обыгрываем казино, с блэкджеком и стратегиями

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.8K

В данной статье рассмотрим работу с библиотекой gymnasium для изучения машинного обучения с подкреплением. Реализуем агента, который использует метод машинного обучения q-learning для максимизации выигрыша в карточной игре blackjack. Сравним средний выигрыш за 100000 игр при различных реализациях игры blackjack.

Читать далее

Быстрый деплой бота (и не только) на Docker-хостинге с Portainer

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров3.8K

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

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

За эти два года мне в личку и в чат Telegram-канала довольно часто пишут новички и их вопросы можно разделить на две категории:

Читать далее

Оптимизация запросов в Django. Подробное руководство

Уровень сложностиСложный
Время на прочтение60 мин
Количество просмотров4.3K

Привет, хабр! В данной статье хочу рассказать больше чем обычно про оптимизацию запросов к базе данных в Django. Расскажу о том, как не только запрашивать, но и создавать или обновлять записи в базе. В статье будет много примеров, генерируемый SQL, типы данных, индексы и выводы планировщика запросов.

Данная статья подходит как для начинающих, так и для достаточно опытных разработчиков на django, а также для всех, кто еще не интересовался, что происходит под капотом ORM.

Читать далее

От кнопки до продакшена: как мы делаем Telegram Mini Apps

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров7.3K

Привет! Мы Дима и Илья, работаем в команде ТМА-разработки Doubletapp и расскажем, как создать Telegram Mini App на стеке React + Python.

Telegram Mini Apps — это мощный инструмент, который позволяет создавать интерактивные веб-приложения, работающие прямо внутри мессенджера. Они идеально подходят для игр, маркетплейсов, сервисов бронирования и многого другого.

В этом туториале мы разберем процесс создания Mini App:

настроим проект
создадим фронтенд на React с поддержкой Telegram SDK
реализуем бэкенд на Python (Django)
свяжем все компоненты и развернем приложение.

Читать далее

Вычисление функции потерь и градиентов в AI переводчике

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров788

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

Меня зовут Алексей Рудак, я основатель компании Lingvanex, которая разрабатывает решения в области машинного перевода и транскрипции речи. Продолжаю цикл статей о том, как устроен переводчик на нейронных сетях изнутри. И сейчас хочу рассказать про работу функции потерь. Для тренировки модели используется opensource фреймворк OpenNMT-tf.

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

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

Читать далее

DRF captcha своими руками

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров604

Пришла мне тут по работе задача сделать возможность добавления товара в корзину пользователем без авторизации. Корзина, причем должна храниться на бэке для того, чтобы можно было проводить аналитику по неоформленным заказам, а также, если пользователь авторизуется, то добавлять эту корзину к его профилю для доступности ее с любых других устройств, на которых он (пользователь авторизован).
Ясное дело, что для корзины одного пользователя в сеансе оформления заказа нужен уникальный идентификатор, по которому можно определить в какую “корзину” поместить товар.

Так как на проекте мы использует REST подход к проектированию API, я подумал, что можно генерировать uuid ключ на клиенте и передавать его при каждом запросе добавления товара в корзину.

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

Читать далее

Я сделал поисковик хуже Elasticsearch

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров5.9K

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

BEIR — это бенчмарки поиска информации, ориентированные на сценарии использования в формате «вопрос-ответ».

Мой хобби-проект SearchArray добавляет в Pandas полнотекстовый поиск. Поэтому естественно, чтобы ощутить трепет от моих потрясающих навыков разработчика, я решил использовать BEIR для сравнения SearchArray с Elasticsearch (с тем же запросом + токенизацией). Поэтому я потратил субботу на интеграцию SearchArray в BEIR и измерение релевантности и производительности с корпусом MSMarco Passage Retrieval (8 миллионов документов).

Барабанная дробь...

Читать далее

Вклад авторов