Обновить
793.97

Python *

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

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

Отладка «Тетрисом»: Пошаговый гайд по созданию и сокрытию классической игры в вашем проекте

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

Привет, Хабр! У каждого разработчика в серьезном проекте наступает момент, когда хочется отвлечься и написать что-то для души. Что-то простое, классическое, но в то же время увлекательное. Часто такие "внутренние пет-проекты" становятся «пасхальными яйцами» — секретами для самых любопытных пользователей.

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

Читать далее

Athenix — мониторинг котировок с глубоким анализом объёмов и прогнозами от ИИ

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

Проект Athenix — это уникальная система мониторинга котировок с глубоким анализом объёмов торгов и прогнозами на основе искусственного интеллекта. Если вы интересуетесь финансовыми рынками, трейдингом и современными технологиями, эта статья для вас.

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

Проект предлагает практичный подход к сложностям анализа рынка — концентрируется на главном, снимая с трейдера необходимость обрабатывать сотни показателей вручную. Будут подробно рассмотрены методы обработки объёмных данных, шумоподавление с вейвлет-преобразованиями, бинарное прогнозирование и использование LSTM-нейросетей.

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

Читать далее

Обработка результатов моделирования Fire Dynamics Simulator на Python (часть 1)

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

Здравствуйте меня зовут Роман, я занимаюсь обеспечение пожарной безопасности в зданиях и сооружениях более 15 лет, основной профиль моей деятельности - это моделирование развития пожара.

В основном моделирование развития пожара провожу в специализированном программном обеспечении Fire Dynamics Simulator (FDS), оно используется от Японии до США при обосновании отступлений требований пожарной безопасности. При моделировании развития пожара очень много времени занимает обработка результатов моделирования. В цикле статей я хочу поделиться способами обработки данных, которые использую при работе.
 
Статья ориентирована на специалистов, которые уже используют FDS в своей работе. Подробности моделирования развития пожара в FDS в данной статьи не будут рассматриваться.

Читать далее

Ожившие фото: Создаем приватный стеганографический аудиоплеер на Python и PyQt6

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

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

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

Это не магия, а стеганография. Сегодня я расскажу о проекте ChameleonLab, а точнее — о его уникальной функции: стеганографическом имидж-плеере. Это десктопное приложение, которое позволяет не только прятать аудиофайлы внутри изображений, но и проигрывать их, как в обычном плеере, создавая новый способ для приватного и творческого обмена информацией. Проект уже имеет готовые сборки для Windows и macOS.

Читать далее

Гибридный квантовый эмулятор с топологическим сжатием: вдохновленный фотонными вычислениями

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

Архитектура эмулятора

Наш эмулятор строится по принципу фотонного вычислителя, описанного vsradkevich: "лазер → модулятор → решетка интерферометров → фотодетекторы → АЦП → CMOS-блок".

Читать далее

Скрытая грамматика: почему len() — это полисемия, а хороший код — набор идиом. Как филология объясняет «чистый код»

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

Оживленная дискуссия под моей первой статьей (https://habr.com/ru/articles/940782/) показала: разговор о единстве языка со сферой программирования задевает многих за живое. Тем не менее, cпасибо всем за сотню комментариев, сохранений и невероятно полезного и ценного опыта!

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

Вместе с тем один из наиболее сильных и частых аргументов от скептиков звучал примерно так: «весь код — это чистая, бездушная логика для машины». На мой взгляд, это самое большое заблуждение в этой индустрии. Знали ли вы, что оператор + в вашем коде семантически богаче, чем многие слова в русском языке? Или что конструкция if not my_list — это не просто синтаксис, а настоящая идиома, которая отделяет «носителя языка» от «иностранца»? Задача настоящей работы — исследовать, как в строго детерминированной среде кода возникают сложнейшие семантико-прагматические явления, свойственные живому языку. 

Давайте забудем про имена и заглянем в самое сердце кода — в его грамматику и риторику. Пристегните ремни безопасности :-)

Читать далее

Android. Starting Kivy App and Service on bootup. API 35

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

Эта заметка является дополнением к статье Android. Starting Kivy App and Service on bootup, в которой запускал сервисом kivy приложение на API 22 Android 5. Теперь будем запускать на последних версиях Android. C API 26 Android 8 и по текущий API 35 Android 15 который есть у меня, постигли изменения, которые необходимо внести для автостарта сервиса. Проверял работу на API 22...35, телефоны: Highscreen power five, Nokia 8, Xiaomi Redmi Note 14.

Читать далее

ChameleonLab: Как мы портировали стеганографический инструмент на macOS. Грабли, решения и планы на Android

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

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

В наших прошлой и позапрошлой статьях мы рассказывали о создании нашего инструмента для стеганографии и стеганоанализа ChameleonLab. Мы получили массу ценных отзывов, и один из самых частых запросов был: «А когда версия для macOS?». Что ж, по вашим многочисленным просьбам, мы сделали это — ChameleonLab теперь доступен для macOS!

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

Читать далее

Парсим и управляем постами VK: Разбор Python-скрипта для работы с API ВКонтакте

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

В этой статье разберем создание Python-скрипта для работы со стеной VK. Научимся автоматизировать сбор постов и рассмотрим осторожное удаление контента через API. Началось все с того, что я решил почистить свою стенку в ВК. Жизнь, знаете ли, непредсказуемая нынче :) Но, в целом, мне видится, что код может быть полезен как для общего развития, так и в качестве основы для бэкапа данных, модерации контента или анализа своей активности в соцсети.

Читать далее

Ищем порт на коммутаторах D-Link

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

Предисловие.

Есть у нас сеть. Не вдаваясь в подробности, состоит она из нескольких десятков коммутаторов D-Link и Cisco. Последние выполняют роль агрегаторов трафика, а D-Link занимаются доступом. Соответственно много VLAN, много устройств. И очень часто, пользователи меняют свое расположение, а вместе с ними переезжают их компьютеры и МФУ. Всё это дело хоть и подключается к нумерованным розеткам, часто поиск порта на коммутаторе для замены VLAN довольно долог и не удобен. Кроме того, техники, которые занимаются непосредственно подключением оборудования, не имеют доступа на коммутаторы. Им приходится глазами искать кабель в стойке, а потом просить инженеров проверить VLAN. Хотелось как-то упростить процесс.

Я уже давно неспешно изучаю Python в качестве дополнительного образования. В основном для применения в автоматизации на работе и дома. Ну тут вот и сошлось: Python, проблема и статья на Хабре Python3. Автоматизация конфигурации мультивендорного сетевого оборудования / Хабр. Прямо брать код из ее не стал, такой функциональности не требуется. Да и хотелось самому разобраться, опираясь на идею.

Написание кода началось с запроса к GigaChat, заодно было интересно проверить насколько он хорошо пишет скрипты. Не буду утомлять приводя весь цикл нашего общения, остановлюсь кратко: сперва GigaChat выдал скрипт на основе библиотеки paramiko, после уточнения, что нужно для Telnet выдал и эту версию. После нескольких итераций, в том числе с асинхронными функциями, остановился на библиотеке telnetlib. В Python 3.12 есть ее замена telnetlib3, т.к. сама telnetlib вырезана в релизе - устарела. ИИ вполне можно использовать для написания небольших скриптов, как отработка идеи или небольших функций в проектах. Однако стоит проверять код, т.к. в части случаев он получается совсем не рабочий. Ну и заодно - изображение в начале текста тоже сделал GigaChat, я то рисовать не умею.

Читать далее

Хватит тестировать на «кошках»! Разворачиваем циничный API на FastAPI за 5 минут для реальных AQA-задач

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

Привет, Хабр! Меня зовут Ваня, и я AQA-инженер. Как и многие из вас, я занимаюсь обучением будущих покорителей Postman и Pytest. И, как многие из вас, я столкнулся с проблемой: все существующие тестовые API — невыносимо скучные.

Todo-листы, интернет-магазины с товарами Item 1, Item 2, API для управления книгами... Серьезно? После пятого GET /todos начинаешь сомневаться не только в своей карьере, но и в смысле бытия. Данные в них стерильны, как операционная, а сценарии предсказуемы, как сюжет российского сериала.

Моим ученикам было скучно. Мне было скучно. Я понял, что нужен свой API. С блэкджеком и... ну, вы поняли. С API, который будет не просто функциональным, но и забавным. Который захочется «потыкать» просто ради того, чтобы увидеть очередной перл в ответе сервера.

Так родился «Cynical Circle API» — API для тех, кто понял жизнь и устал от ванильных примеров.

(Так выглядит наша интерактивная документация. Уже интригует, не правда ли?)

Читать далее

Разработка Битрикс-бота: история о том, как документация врала, а облака смеялись

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

Привет, Хабр! (И тебе, случайный читатель, который зашёл сюда просто потому, что заскучал в корпоративном чате.)

Сегодня я расскажу вам историю о том, какая задача посетила меня на этот раз и как я сделал «корпоративного бота с возможностью оценки сотрудников» — казалось бы, простая задача, но…

Читать далее

Нейросетевой помощник для Catan Universe: как я научил ИИ считать карты соперников

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

Привет, коллеги-катановцы!

Знакомо чувство, когда в пылу битвы за овец и кирпичи напрочь забываешь, сколько ресурсов только что сбросил соперник? Вот и я вечно путался — пока не загорелся безумной идеей: А что если заставить нейросеть следить за картами вместо меня?

Пару месяцев, несколько килограммов кофе и одна сгоревшая видеокарта спустя — представляю вам Catan Neural Assistant — шпаргалку, которая в реальном времени подсчитывает ресурсы оппонентов!

Но сначала — лирическое отступление для тех, кто вдруг не в теме.

кто вдруг не в теме.

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

Удаляем незваных подписчиков из своего телеграм канала

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

Казалось бы - все бьются над увеличением количества подписчиков в своих Telegram-каналах - зачем уменьшать их число?

Я сам заинтересовался этой темой после странного всплеска трафика. Опубликовал статью про голосовых ассистентов - и из-за неудачного заголовка она внезапно стала вирусной. Обычно мои тексты собирают около 7 тысяч просмотров (медиана), но в этот раз счётчик вырос до 140 тысяч. А до этого я уже слышал истории, как на каналы без рекламы и инфоповодов «наливаются» сотни или тысячи подписчиков. Звучит как подарок судьбы, но на практике это тревожный сигнал: чаще всего - это фейковые аккаунты.

Мёртвая аудитория - это падение вовлеченности (ER - уровень вовлеченности, ERR - вовлеченность на охват), потеря интереса со стороны рекламодателей и снижение позиций канала в поиске Telegram. Особенно сейчас, когда алгоритмы всё больше ориентируются на наличие Premium-подписчиков.

В этой статье покажу, как выявить и удалить нежелательных подписчиков с помощью open-source скрипта на Python - который работает даже несмотря на ограничения Telegram API, позволяющий получить лишь последние 200 участников.

Боты, уходите!

Обратный звонок с сайта: соединяем пользователя с компанией автоматически через Callback API

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

Привет, Хабр. Это Екатерина Саяпина, менеджер продукта в МТС Exolve.
Сегодня покажу, как реализовать анонимный обратный звонок с сайта через Callback API — ни клиент, ни менеджер не видят номера друг друга, соединение идёт через виртуальный номер. Всё на Django, просто и надёжно.

Читать далее

Тесты не лгут — прислушивайтесь к ним. Часть 1

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

(Статья — результат со вместной работы с Максимом Степановым)

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

Связанный код, который сложно поддерживать и расширять, сложно и тестировать. Как сказал Боб Мартин

«Тестируемый код — синоним разъединённого кода»

А значит, тестируемость может быть маркером хорошей архитектуры. Именно это мы и попробуем здесь продемонстрировать.

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

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

Читать далее

Bash vs Python: битва, где нет проигравших

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

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

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

Читать далее

Промышленная автоматизация металлургического производства. Архитектурные решения и техническая реализация

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

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

Читать далее

BirdCLEF+ 2025: обзор соревнования и ключевые решения топ-5 команд

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

BirdCLEF+ 2025 — очередная часть ежегодного соревнования от Cornell Lab of Ornithology по распознаванию звуков дикой природы. В этом году участникам предстало предсказывать целевое животное на коротких фрагментах записи, балансируя между качеством моделей и жёсткими ограничениями железа.

Разобраться в псевдолейблинге...

Продолжаем делать реализацию LISP на Python. Часть 1: структуры

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

Да. Спустя наверно 3 дня я решил сделать это. Долго конечно, но что тут поделаешь.

Также если нужно, можете посмотреть на первую статью об этом лиспе.

Читать далее