Обновить
1024K+

Python *

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

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

Забудьте про print(): Современное и красивое логирование в Python с помощью Loguru

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

Все мы начинали с print() для отладки, но в серьезных проектах это превращается в хаос. Стандартный logging? Мощно, но громоздко. Пора это исправить.

Loguru — это библиотека, которая делает логирование простым, как print(), и мощным, как logging, но без боли и десятков строк конфигурации. В статье покажу, как одной строкой настроить цветные логи, автоматическую ротацию файлов и ловить исключения с полным контекстом переменных. Заходите, чтобы сделать свою отладку в разы приятнее.

Читать далее

Как мы превратили цифровое ТВ в радар

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

Как мы превратили цифровое ТВ в радар

Open Source проект по мониторингу воздушного пространства на SDR

Зачем вообще делать радар из телевизора?

Традиционные радиолокационные системы (РЛС) — это огромные антенны, киловатты мощности, разрешения на частоты и бюджеты уровня «военного отдела». Нам же хотелось видеть небо, не нарушая ни законов физики, ни законодательства.

Так родилась идея собрать пассивную когерентную локацию (PCL) — систему, которая ничего не излучает, а просто слушает уже существующие сигналы в эфире.
FM-радио, LTE, цифровое ТВ — всё это мощные «осветители», которые и так покрывают территорию. Почему бы не использовать их?

Мы выбрали сигнал DVB-T2 (546 МГц) — стабильный, мощный, и что особенно приятно — с известной структурой (OFDM).

Результат? Получился радар без передатчика, который можно запустить хоть на балконе. И да, всё это — на полностью open source стеке.

Читать далее

Все об устройстве Q65 с примерами на Python (часть 1)

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

Q65 — цифровой протокол, разработанный Джо Тейлором (K1JT) и его командой в 2021 году для проведения минимальных связей в условиях сложных трасс прохождения радиосигнала, в том числе для проведения связи через отражение сигнала от Луны, где сигналы не только очень сильно ослабевают, но и имеют Доплеровский разброс. В этой статье будут рассмотрены подробности работы протокола.

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

Читать далее

Пушкин vs Лермонтов: поиск истины на Python

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

Можно ли с помощью Python и математических метрик лучше понять поэзию? В этой статье я покажу, как с помощью кода можно количественно сравнить стили Александра Пушкина и Михаила Лермонтова.

Читать далее

Python для начинающих: () или []? Ответ, который изменит ваш код

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

Положа руку на сердце, давайте признаемся: когда вы только начинали учить Python, вам наверняка на первом же занятии вам сказали: «Списки (list) — изменяемые, а кортежи (tuple) — нет. Запомнили? Молодцы».

И большинство из нас кивнуло и пошло дальше. Казалось бы, всё просто: если данные могут меняться — берём квадратные скобки [], если это константа — круглые (). Задача решена.

А что, если я скажу, что на этом простом правиле заканчивается Python для новичков и начинается Python для профессионалов?

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

Читать далее

Repository Pattern в управлении базами данных: пример интеграции NocoDB в Django

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

Классический сценарий: есть база данных и приложение на бэкенде. Для подключения достаточно знать адрес, порт, имя пользователя, пароль — и прямой доступ перед вами. Но что делать, если необходимо подключить no-code базу данных, которой можно управлять только через REST API? Есть ли способ интегрировать такие подключения в логику «красиво», не поломав архитектуру?

Привет, Хабр! Меня зовут Влад, в свободное время я занимаюсь разработкой. В этой статье расскажу, как мне удалось относительно нативно интегрировать работу с платформой NocoDB на бэкенде, какие можно использовать паттерны и зачем мне понадобилось разработать собственный Python-модуль. Подробности под катом!

Читать далее

Как Python раскрыл поэтический гений Маршака

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

Маршак хорошо переводил Шекспира, но насколько он был близок к оригиналу? Сохранен ли у него ритм, размер, смысл и структура? Установлю это математически точно с помощью Python.

Читать далее

Как я создал торговую алго-платформу без опыта или почему для одних ИИ — гений, а для других — идиот

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

Технический разбор процесса разработки торговой платформы с использованием Gemini, Claude и ChatGPT. С настоящими постановками задач, архитектурными проблемами и выводами.

Всем привет! Меня зовут Артём, и последние 6 месяцев я создавал полноценную веб-платформу для алготрейдинга. Около 95% кода было сгенерировано c использованием современных LLM, большая часть с помощью Gemini 2.5 Pro, ручные правки составили менее 5%

Речь о проекте Depth Sight. Это платформа с гибким визуальным конструктором торговых стратегий, бэктестингом, реальной/бумажной торговлей, мобильной pwa версией и нативно встроенным Ai ассистентом для помощи в создании и объяснении торговых стратегий, а также анализа результатов бэктестов. Эта статья не столько об алготрейдинге, сколько о новом подходе к созданию сложных программных продуктов. Это кейс о том, как человек с видением продукта может в одиночку создать платформу промышленного уровня. Или нет? Предлагаю разобраться вместе.

Читать далее

Умный дренажный колодец на ESP32: уведомление в телефон — вместо «сюрпризов» в унитазе, дешевле готовых решений в разы

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

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

Вы бежите к колодцу, поднимаете тяжеленную крышку, а там... уже всё плавает. А через пару минут доходит осознание: насос благополучно проспал момент включения. Привет, внеплановые 20 минут откачки и «удобрение» участка самым неожиданным способом.

Я посмотрел в сторону готовых решений за 3000+ рублей (используют емкостной метод (измеряют точный уровень 0-100%), имеют качественный корпус, готовое приложение и гарантию), но обнаружил, на мой взгляд, подводные камни: мало отзывов — устройства довольно новые на рынке, закрытая система — нельзя ничего доработать под свои нужды.

А мне было нужно простое, как лопата, решение. Чтобы устройство оповестило меня: «Колодец полный, не желаешь ли включить насос? ПОЖАЛУЙСТА 😠» — и желательно в Telegram, где я точно замечу это сообщение.

Да ну, серьёзно?

Магия Python: почему list — не список, а dict находит всё мгновенно

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

Каждый, кто прошел путь от print("Hello, World!") до своего первого серьезного проекта на Python, знает и любит списки и словари. Но как часто мы задумываемся, почему они работают именно так, а не иначе? Эта статья — для тех, кто готов пойти дальше поверхностного использования API и заглянуть в реализацию CPython. Мы разберем, почему list — это на самом деле динамический массив, а не связанный список, и как хеш-таблицы позволяют словарям творить свою магию с амортизированной сложностью O(1). Это знание не только интересно само по себе, но и критически важно для оптимизации производительности в высоконагруженных приложениях.

Читать далее

Тестирование в школе, или Unix-way в системе образования

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

Здравствуйте. Я не айтишник — я учитель истории с более чем десятилетним стажем. Но информационные технологии всегда были моей страстью и надёжным инструментом в работе.

В этой статье я хочу рассказать о собственном опыте внедрения системы тестирования в школьной практике. Моя программа предельно проста — она написана на Python в духе unix-way: делает одну вещь, но делает её хорошо. Опытные разработчики вряд ли увидят в ней что-то новое, но цель текста — показать, как принципы системного администрирования и инженерного мышления могут помочь в решении педагогических задач.

Читать далее

Как мы перестали использовать Python в production LLM-системах — и почему это было необходимо

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

Python идеален для быстрых LLM-прототипов, но в enterprise он часто не справляется с нагрузкой, SLA и требованиями к безопасности.

Как мы заменили Python в критическом пути инференса на JVM, запустили fine-tuned 3B-модель на CPU и снизили стоимость обработки документов в 40 раз, сохранив полный контроль над данными.

Читать

Мы делали продукт, они — презентацию. Угадайте, кто выиграл полмиллиона

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

Мы сделали продакшен-решение под сложное ТЗ, собрали всё — от FastAPI и PostgreSQL до ELK и CI/CD. А победили ребята с презентацией в Figma и пустым сайтом.

Жюри сказало, что «всё по бизнес-требованиям».

Рассказываю, как проходил «самый масштабный хакатон страны» и почему он стал фарсом.

Читать далее

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

Разбираю свой фотоархив

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

Сделал поиск по личному архиву фотографий с применением трех нейросетей, векторного расширения к PostgreSQL и Django

Читать далее

Как with делает ваш Python-код безопаснее и читабельнее

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

Если вы пишете на Python хотя бы пару месяцев, вы наверняка сталкивались с конструкцией with open(...) as f:. Это как ритуал, который мы совершаем, чтобы открыть файл: удобно, понятно, и все говорят, что так надо. Мы интуитивно чувствуем, что это "правильный" способ, потому что он избавляет нас от головной боли с ручным закрытием файла через f.close().

Читать далее

Адский эксперимент: личный сайт на нищих микросервисах

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

Микросервисы тут, микросервисы там… Из каждого утюга доносится дивный сказ про прекрасный мир микросервисов. А ведь это всего лишь один вид из десятка архитектурных стилей, который имеет свои достоинства и недостатки.

В этом эксперименте мы внедрим микросервисы в личный сайт, нарушив ключевые принципы DDD. Я создам антипаттерн «бедных сервисов» (Anemic Domain Model) и покажу, чем опасен прямой доступ к данным между микросервисами.

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

Читать далее

Как не положить API: rate limiting в Python

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

История о том, как я случайно устроил DDoS на внутренний API, обрабатывая 10 миллионов векторов. И как asyncio.Semaphore меня спас.

Читать далее

Как мы воскресили русский NLP и сократили потребление памяти на 90%

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

Как мы воскресили русский NLP и сократили потребление памяти на 90%

Форкнули четыре ключевых библиотеки русского NLP (pymorphy, razdel, slovnet, natasha), которые не обновлялись годами. Сократили потребление памяти на 90%, ускорили загрузку в 30 раз, повысили точность токенизации с 70% до 95%. Всё работает offline, 100% совместимо с оригинальными API. Экосистема MAWO — production-ready инструменты для работы с русским текстом.

Помните ли вы тот момент, когда открываешь проект для обработки русского текста и видишь знакомую картину? В requirements.txt красуется pymorphy2, последний коммит в репозитории датирован 2015 годом, Python 3.12 ругается на deprecated методы, а production ждать не будет. Знакомо? Тогда эта история для вас.

Читать далее

OpenAI ModerationAPI: примеры использования

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

Всем привет!

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

Чтобы понять суть проблемы, представим ИИ в виде ребёнка, который знает правила, но может поддаться на уговоры. Злоумышленник здесь выступает в роли «дяди с конфеткой»: он находит способы убедить модель нарушить установленные ограничения.

Недавно в нашем Telegram‑канале «Код на салфетке» мы опубликовали подробный разбор того, как можно попытаться обойти встроенные ограничения ИИ. Такие попытки обхода называют джейлбрейком (jailbreak). Это термин из сферы IT, который изначально использовался для обозначения взлома защитных механизмов мобильных устройств, а теперь применяется и к ИИ.

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

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

Читать далее

Домашняя векторная БД + RAG

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

Часто приходится искать в огромной куче документов какую нибудь частную, специфичную вещь. На данный момент, только лично у меня более 2Gb различных pdf файлов. Зачастую разбросанных не системно. И хотя обычно представляешь где искать, но это отнимает время. Захотелось иметь инструмент ускоряющий поиск.

Читать далее