Обновить
878.57

Python *

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

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

Python и паттерны GoF, часть 1: Singleton

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

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

Первым паттерном, который мы рассмотрим, разумеется, станет синглетон. Как только его по-русски не называют, кстати. Синглтон. Синглетон. Наконец, ОДИНОЧКА. Не, ну вы представляете, ОДИНОЧКА?! Покажите мне живого человека, который так говорит? Я ни одного за 30 лет использования паттернов GoF не видел.

Казалось бы, что о нём можно сказать разумного, доброго, вечного, а главное — нового? Паттерн довольно тривиальный, всего лишь способ создать объект класса, который нельзя инстанцировать более одного раза, а потом использовать этот объект везде, где нужно (часто в совсем разных местах). И довольно спорный во многих случаях. Особенно в Python, где я обычно не советую его использовать так, как в C++.

Читать далее

Pydantic V2: Почему dataclasses вам ещё больше нужны

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

На написание статьи меня сподвигла статья «Pydantic V2: Почему dataclasses вам больше не нужны» и меткий комментарий:

«Спасибо за статью, но мне кажется Вы учите детей плохому. »

Давайте попробуем разобраться, почему и датаклассы хороши, и pydantic V2 прекрасен, а вместе они становятся ещё лучше.

Или устроить смешанное единоборство?

Я пришел потестить бота, чтобы найти баги, а в итоге нашел работу в BigTech

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

Привет, Хабр. Я из тех людей, у кого аллергия на словосочетание "искусственный интеллект" в маркетинге. Обычно за этим скрывается пара if-else и API OpenAI, прикрученное синей изолентой.

Недавно наткнулся на пост ребят, которые пилят карьерного бота Аврора. Обещали, что он сам ищет вакансии, сам пишет письма и вообще молодец.

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

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

Ниже - история про технические костыли, asyncio и то, как бездушный скрипт продает инженера лучше, чем сам инженер.

Читать далее

Инвест Гусь: телеграм-бот (Open-source) для прогноза стоимости акций и криптовалют

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

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

Га!

Сравнительный анализ 18 LLM моделей: конец монополии?

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

🏆 Open-Source Догнал Топов: Что Произошло в Ноябре 2025?

Конец монополии! Kimi-K2-Thinking (MIT-лицензия) — новый чемпион мысли. Эта open-source модель сравнялась с Claude Sonnet 4, показала 84.5% на GPQA Diamond (научное рассуждение) и 94.5-100% на олимпиадной математике AIME, опередив GPT-4o более чем на 30 процентных пунктов.

Российский GigaChat3-702B взрывает кодинг! Сбер выпустил модель с архитектурой MoE (702B параметров) под MIT-лицензией, которая показала мировой рекорд на бенчмарке HumanEval+ (86.59%), обойдя все закрытые LLM, включая GPT и Claude.

MoE-магия для локального запуска: Qwen3-30B-A3B с архитектурой MoE (3.3B активных параметров) обеспечивает качество 70B+ модели, умещаясь на одной H100 — идеальный компромисс для стартапов и R&D.

Читать далее

Свой мини-«мониторинг как сервис»: Python-демон + Next.js-дашборд

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

«Свой мини-мониторинг как сервис»: Python-демон, Next.js-дашборд и файловая архитектура без лишней инфраструктуры — как я сделал лёгкий self-hosted инструмент для наблюдения за маленькими проектами, который проверяет API, страницы, базы, очереди, TLS и Docker, пишет JSON-снапшоты, сам управляет процессами через встроенный supervisor, умеет следить за ресурсами, логами и сроком жизни сертификатов, собирает стримы производительности и при этом не требует ни базы данных, ни внешнего backend-сервера; просто ставишь рядом с приложением, настраиваешь конфиг, запускаешь демон и получаешь живой Next.js-дашборд, читающий отчёты.

Читать далее

Как раздобыть Nvidia Tesla за копейки и не поселиться в психушке: хардкор-гайд от выжившего

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

Привет, Хабр! Сегодня расскажу вам сагу о том, как мы искали дешёвые AI-мощности для своего проекта и чуть не сошли с ума. Спойлер: спас нас Китай, но эта помощь стоила нам седых волос и нескольких лет жизни. Делюсь опытом, чтобы вы прошли этот путь быстрее.

Читать далее

Полумодулярные схемы

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

Предметом исследования являются полумодулярные схемы (далее ПМС), подкласс схем, не зависящих от скорости, определенных Д. Малером в 1961 году. Этот подкласс включает в себя последовательные схемы, обсуждаемые в статьях с очевидным названием, опубликованные здесь же.

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

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

Читать далее

Любовное письмо LLM, или как я перестал бояться и впервые довел пет-проект до конца

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

Я ненавижу пет-проекты.

Да, я НЕНАВИЖУ их всей своей душой. Ровно с тех пор, как получил свою первую фул-тайм работу разработчиком. Я ненавижу приходить с работы и вставать перед выбором - работать в рамках привычного мне фронтенда, которым я занимаюсь на моей “с 9 до 5” и от которого к концу рабочей недели уже тошнит.

…или с головой погружаться в новые технологии, медленно и мучительно прогрызаясь через них, прежде, чем у тебя получится сделать нечто чуть лучше условного Hello world. Если ты, конечно, не готов жертвовать сном, другими хобби или временем, проведенным с любимыми людьми.

По крайней мере, я так думал до одного забавного дня пару месяцев назад.

Читать далее

Почему Python — не лучший язык для data science. Часть 1 — опыт разработчика и исследователя

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

Команда Python for Devs подготовила перевод статьи Клауса Вилке о том, почему Python, несмотря на статус языка №1 в data science, вовсе не идеален для анализа данных. Автор показывает на реальных примерах из лабораторной практики, что многие операции в Python оказываются куда более громоздкими, чем в R, — и это не вина программистов, а архитектурные особенности инструментов.

Читать далее

Многомерность. Очевидная и неоднозначная

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

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

Читать статью

Магия Python: Почему a = 256 и b = 256 — это один объект, а с 257 это уже не работает?

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

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

Сегодня поговорим о том, как CPython управляет памятью для малых целых чисел (почему диапазон выбран именно от -5 до 256?), как работает паттерн Flyweight на уровне ядра языка и почему две одинаковые строки могут иметь разные id. А также разберем неочевидную разницу работы компилятора в интерактивной оболочке (REPL) и при запуске скриптов.

Читать далее

Компилируем Python так, чтобы он работал везде

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

Это история о том, как написать компилятор Python, генерирующий оптимизированные ядра и при этом позволяющий сохранить простоту кода.

Читать далее

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

Я пена морская. Как BERT не справился с анализом простой поэзии

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

Небольшой опыт использования модели для определения эмоций. Я пытался найти эмоции у Цветаевой с помощью Python. Да не смог.

Читать далее

Все главные нововведения Python 3.14: от JIT до инструментов отладки

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

Представьте: ваш Python-код работает на 30% быстрее благодаря JIT-компиляции, обработка запросов масштабируется на все ядра процессора без ограничений GIL, а отладка высоконагруженных систем происходит в реальном времени, без остановки продакшена. Это не футуристический сценарий “what-if” — это реальность Python 3.14, релиза, который переосмысливает саму природу разработки с высокой производительностью на Python.

Читать далее

Claude Code за 4 часа написал AI чатбот (и мы выложили его в open source)

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

Попросили Claude Code CLI сделать AI-чатбот для нашей платформы. Через 4 часа получили рабочее решение: контекстно-зависимый виджет, база знаний на markdown, эскалация в Telegram, автоматический сбор багов. Работает в production, выложили в open source.

GitHub
Лицензия: MIT

Читать далее

FastAPI: Хватит писать всё в main.py. Гайд по нормальной структуре для новичков

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

Написать API на FastAPI легко. Написать поддерживаемое API — сложнее. Часто новички (и не только) игнорируют структуру проекта, сваливая всё в кучу или создавая циклические зависимости.

В этой статье разбираем эталонную структуру REST API сервиса на стеке 2025 года:

• Уходим от main.py к модульной системе через APIRouter.
• Разбираем, почему нельзя путать Pydantic Schemas и SQLAlchemy Models (и как их подружить через from_attributes).
• Настраиваем честную асинхронность с aiosqlite и Dependency Injection.
• 5 практических задач для закрепления материала.

Читать далее

AI-агенты в аналитике: как я разработал два production-проекта за неделю

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

За 18 часов вместо 120 создал production-ready ETL-инструмент с 30-кратным ускорением. За 6 часов вместо 40 — фреймворк статистического анализа. Экономия времени: 85-88%. Улучшение качества: +48%.

Читать далее

Как я Rust в Python встраивал

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

Rust все популярней, а вместе c этим создается много библиотек для Python на Rust.
В данной статье узнаем, как создать простенькую библиотеку для Python на Rust на примере кодирования данных в Base 64.

Читать далее

Долгая дорога к DiT (часть 3)

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

Заключительная (но ещё не последняя) статья из цикла про диффузные модели, где мы наконец отбросим примитивную модель из полносвязных слоёв и напишем работающий генератор изображений c архитектурой Diffusion Transformer (DiT). Разберёмся зачем нарезать изображения на квадратики и увидим, что произойдёт с вашей генерацией, если проигнорировать главную "слабость" трансформеров - неспособность понимать порядок.

Читать далее

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