Обновить
512K+

Python *

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

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

Инкапсуляция в Python: property, name mangling и никаких кофемашин

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

Когда разработчики приходят в Python из Java или C++, у них часто случается культурный шок. Они безуспешно ищут модификаторы private или protected и задают логичный вопрос: «А как здесь вообще прятать данные?»

Добро пожаловать в мир, где язык вам доверяет, а Гвидо ван Россум говорит: «Мы здесь все взрослые люди». В новой статье разбираем архитектурный дзен Python:

🔹 Почему двойное подчеркивание (__) — это не аналог private (и как его взломать в одну строчку).
🔹 Почему классические геттеры и сеттеры в Python — это антипаттерн.
🔹 Как элегантно защитить данные с помощью @property, дескрипторов и slots.
Никаких заезженных метафор про пульты от телевизора. Только суровая (и красивая) реальность Python-way.

Читать далее

Как я в отпуске написал генератор магазинов для OpenCart и чуть не сошел с ума

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

Привет, Хабр! Меня зовут… хотя какая разница. Важно другое: я программист, и у меня есть неприятная особенность — вместо того чтобы нормально отдыхать, я начинаю писать код. Обычно это заканчивается каким-нибудь полурабочим скриптом, который потом пылится на гитхабе. Но в этот раз получилось нечто большее. Возможно, даже полезное.

Всё началось с того, что клиент попросил создать 50 поддоменов для своего интернет-магазина на OpenCart. Ну, знаете, эти мультимагазины: spb.akarius.rumsk.akarius.runsk.akarius.ru и так далее. Вручную создавать каждый — это 50 раз заполнить одну и ту же форму, 50 раз привязать категории, товары, производителей, 50 раз скопировать SEO-урлы. При этом важно не ошибиться в путях к логотипам, не забыть про SSL и прочую ерунду. Я прикинул: если на один магазин тратить 15 минут, то на 50 — больше 12 часов чистой, монотонной, убивающей мозг работы.

И тут я понял: либо я сейчас напишу скрипт, либо уволюсь к чертям. Пальцы сами потянулись к клавиатуре. В итоге родилась программа, которую я скромно назвал DataGrip-style OpenCart Store Generator. Звучит пафосно, но на самом деле это просто генератор SQL-запросов, который берет данные из Excel и дампа существующего магазина, а на выходе дает готовый скрипт для вставки в базу.

Читать далее

Проклятие легких побед: как вайбкодинг убивает волю к решению проблем

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

«Вайбкодинг» ‑ это просто ролевая игра для парней, которые хотят чувствовать себя хакерами, не делая сложной работы, или это мощный инструмент, меняющий процессы даже ML‑инженера? Я думал, что это просто игрушка, пока не попробовал.

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

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

Читать далее

Как я автоматизировал юридическую рутину

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

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

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

Читать далее

Робот с видеонаблюдением и отслеживанием объекта

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

Введение

Данный проект, является логическим продолжением развития темы "Солнечный трекер на Arduino".

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

Распознавать маркеры можно по разным критериям: выбранному цвету, текстуре, форме и т.д.

Я выбрал второй вариант. Делаю фото объекта web-камерой, с выбранным однородным цветом, которую буду использовать на роботе.

Подготовка ПО

Для корректной работы программы вам нужно:

1. Установить Python https://www.python.org/

2. Установить модули numpy, opencv и pyserial используя инструмент pip https://pypi.org/project/numpy/

https://pypi.org/project/opencv-python/

https://pypi.org/project/pyserial/

3. Установить Arduino ide

https://learnlange.blogspot.com/p/blog-page_28.html

Сборка робота

Система представляет стационарную установку с двумя степенями свободы, которые позволяют вращаться в пространстве цилиндрической формы. На верхней части системы закреплена USB web-камера (её можно заменить на smart камеру или ip камеру).

Для быстрого создания прототипа использую образовательный набор КЛИК: базовый и ресурсный
Поворотные механизмы реализованы с использованием DC моторов с понижающей передачей.

Читать далее

Wish-лист на 8 марта по книге «Пять языков любви» или как автоматизировать романтику

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

Мне 34, из них больше десяти лет я в коммерческой разработке. И примерно столько же я женат. Каждый год 7 марта я ловил себя на мысли, что стою в торговом центре с пустым взглядом, пытаясь угадать с подарком. В этом году я решил подойти к проблеме не как муж в панике, а как инженер.

Я прочитал книгу Гэри Чепмена «Пять языков любви», поймал пару инсайтов и за 5 вечеров написал сервис-переводчик для пар. Внутри: Flask, Vanilla JS (да, в 2025 году, и я объясню почему), DeepSeek API для генерации карточек в стиле «Love is…» и алгоритм матчинга, который понимает мою жену лучше, чем я за 10 лет брака. Под катом — история о том, как код помогает чинить баги в коммуникации.

Читать далее

Менеджер памяти CPython — проектируем с нуля, простым языком

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

Менеджер памяти CPython — одна из тех частей интерпретатора, о которых часто слышат, но редко понимают, как они устроены на самом деле.

Каждый объект Python — число, строка, список или словарь — должен где-то жить в памяти. Интерпретатор создаёт миллионы таких объектов и так же быстро их уничтожает. Чтобы это работало эффективно, CPython использует собственный аллокатор памяти и несколько уровней оптимизации.

В этой статье мы пошагово спроектируем менеджер памяти CPython, начиная с самой простой модели и постепенно приходя к архитектуре:

Arena → Pool → Block → Reference Counting → Cycle GC

Читать далее

Darts: библиотека для временных рядов

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

В Python хватает инструментов для работы с временными рядами, но обычно приходится жонглировать тремя-четырьмя пакетами с разными API. Darts — библиотека, которая собирает всё в одном месте: статистические модели, градиентный бустинг, нейросети — и работает по знакомой схеме fit() / predict(). Сегодня разберём её подробно: что умеет, где удобна, как использовать в задачах.

Читать далее

FunGP: питоничность против церемониальности JavaCard

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

Всем привет!

Традиционное вступление в стиле "плач Ярославны": GlobalPlatform, ISO 7816, JavaCard и прочие смежные стандарты - боль. Тонна материала написанная сухим языком так и навивает мысль, что авторы этого всего не инженеры, а юристы. Для примера скажу, что каждый стандарт ETSI начинается со смысловых определений глаголов "shall", "shall not", "should", "should not" и т.д. Нет, в канцелярском стиле ничего плохого нет. Плохо становится когда он плавно переходит поросячью латынь - и это одно из самых терпимых определений. Это же додуматься надо "размазать" требования к несчастной SMS-ске между пятью стандартами (ETSI 102-223/-225/-226 и 131-111/-115).

Ну вот ты преодолел пучины стандартов, затем засел за написание JavaCard-апплета, с чем тоже успешно справился, ну а дальше начинается квест "найди все тулзы". Инструментарий от Oracle для сборки .cap-файлов недоступен из России, благо есть один удобный в открытом доступе. Там же рядышком лежит тулза для установки/удаления апплетов (да и вообще управления жизненным циклом карты).

Итак, ты скомпилировал и загрузил апплет на карту. Классно! А дальше? А дальше поговорим в статье.

Читать далее

Мониторинг того, что нельзя «пощупать»: как следить за cron-задачами, бэкапами и серверами за NAT с помощью Heartbeat

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

Heartbeat-мониторинг — единственный способ проверить cron-задачи, фоновые процессы и устройства за NAT. Рассказываю, как работает эта технология в PingZen, и почему она проще и надежнее self-hosted решений.

Читать далее

Собственная облачная LLM на 16 ГБ VRAM — часть 1: базовая сборка, tools и MCP

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

Привет, Хабр! На фоне ажиотажа вокруг нейросетей все чаще встает вполне приземленный вопрос — сколько стоит содержать собственную LLM.

Современные ИИ-агенты уровня Claude, ChatGPT и DeepSeek уже давно перестали быть «чатами для развлечения». Это сложные системы, которые перед тем как выдать ответ, тратят десятки тысяч токенов на внутренние рассуждения, вызывают внешние функции, взаимодействуют с MCP-серверами и даже работают напрямую с интерфейсом ОС.

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

В статье я покажу практичный компромисс: как развернуть собственную облачную LLM, которая укладывается в 16 ГБ видеопамяти, поддерживает инструменты и вызов функций, интегрируется с MCP-серверами и может использоваться как полноценный API-сервис для бэкенд-задач. 

Читать далее

Знакомьтесь, Ричард Джонс (цикл заметок о выдающихся питонистах)

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

PyPI — централизованный каталог Python-пакетов. Сегодня в нем более 865 тысяч проектов общим весом 36 терабайт.

PyPI создал Ричард Джонс. В октябре 2002-го, в электричке, по дороге на работу в Мельбурн.

Будет интересно

Что с QA в 2026? Профессия умирает? Или все преувеличивают?

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

Раз в несколько месяцев я вижу одни и те же обсуждения:
«Manual QA больше не нужны»,
«Рынок перегрет»,
«Всё автоматизируют и заменят».

Если коротко — нет, QA никуда не исчезает.
Но профессия действительно сильно меняется. И тем, кто работает в тестировании, важно понимать в какую сторону.

В этой статье расскажу. Что нужно делать, чтобы не остаться у мусорки без работы 👇

Читать далее

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

Copper Filler: экономим на производстве печатных плат в KiCad

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

Copper Filler: экономим на производстве печатных плат в KiCad без нарушения изоляции

Привет, коллеги-разработчики!

Каждый, кто проектирует многослойные печатные платы в KiCad, сталкивался с необходимостью в процессе трассировки оставлять по схемотехническим или каким-то иным причинам большие по площади области свободными от медных (подключённых или не подключённых к цепям) полигонов. На внешних слоях это не представляет особых проблем. На внутренних всё немного не так. Cо стороны топологии это нормально, но с точки зрения производства — не очень.

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

Зачем это нужно?

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

Продолжим?

PEP — это не стиль, это язык, которым ты думаешь о коде

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

Я долго думала, что PEP — это про оформление. PEP 8: называй переменные вот так, PEP 257: пиши докстринги вот так.

Потом начала использовать их по‑настоящему и выяснилось, что часть из них вообще не про то, как выглядит код!

Читать далее

Я устал каждый раз собирать проект с нуля — и сделал универсальный Docker+Python-шаблон

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

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

Эта статья (и несколько последующих) будет посвящена сугубо технической части вопроса. Я расскажу о своём шаблоне для разработки и тестирования MVP, который ускоряет дело. Он у меня появился потому, что я любитель экспериментов и много раз делал разные микропроекты — боты, игры, сайты, парсеры и тому подобное В какой‑то момент я заметил что таскаю между проектами один и тот же кусок кода, который здорово ко всему подходит и с которого начинается каждый мой новый проект.

Итак, вашему внимаю представляю МЕГА ШАБЛОН УДОБНОГО БЫСТРОГО ПРОГРАММИРОВАНИЯ

«Чем же он так хорош?», спросите вы. И правильно сделаете что спросите! А я вам отвечу.

Читать далее более сильнее погнале

Как мы научились честно считать эффект промокодов: Causal Inference в онлайн-доставке X5 Digital

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

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

Представьте стандартный отчёт по промокампании: «Пользователи, применившие промокод, потратили на 800 рублей больше среднего». Бизнес доволен, маркетинг рапортует об успехе. Но подождите, а сколько из них потратили бы эти деньги и без промокода?

Это не риторический вопрос. Это принципиальная проблема, которая называется selection bias — систематическая ошибка отбора.

Читать далее

__str__ vs __repr__ в Python: конец путанице

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

«str для людей, а repr для машин» — эту фразу слышали многие, но на практике путаница всё равно остается. Почему функция print() иногда игнорирует ваши настройки? Что такое односторонний фолбэк? И зачем вообще писать оба метода?

Читать далее

Научил ИИ-агента помнить важное и забывать лишнее в SQLite

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

Я делаю локально работающего ИИ-агента и столкнулся с тем, что стандартный подход «закинуть текст в векторную базу, достать по косинусу» для долгоживущего агента не работает: контекст замусоривается, факты конфликтуют, ничего не забывается. Вместо этого реализовал графовую когнитивную память поверх одного файла SQLite: эпизодические и семантические узлы, типизированные рёбра, именованные сущности, гибридный поиск (FTS5 + vector + graph) с Reciprocal Rank Fusion, кривую забывания Эббингауза и фоновую LLM-консолидацию. В статье — полная архитектура с кодом, SQL-схемой и формулами. Код и минимальный пример — в репозитории.

Дальше long-read

10 900 тестов: Как мы обеспечиваем качество в PingZen, или Почему ваш мониторинг должен быть протестирован

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

Мониторинг мониторинга - звучит как масло масляное, но именно этим мы постоянно занимаемся в PingZen. Ведь наш сервис должен быть надёжнее, чем объекты, которые он отслеживает. Если PingZen упадёт, кто сообщит о падении вашего сайта?

Сегодня я залезу под капот тестирования PingZen и расскажу, как мы дошли до 10 900 автоматических тестов (5100 на бэкенде и 5812 на фронтенде). Все цифры и технологии - строго из нашего репозитория . Без хайпа, только факты, код и архитектурные решения.А статью подробнее про Pingzen можете посмотреть здесь

Читать далее