Обновить
555.4

Python *

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

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

Как привинтить Python к Go

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

Здравствуйте,

Меня зовут Александр Певзнер, и я программирую на Си и Go. Go обычно ассоциируется с бакендом, микросервисами и вот этим вот всем. Но я использую его необычным образом: я пишу на нём системное ПО.

Почему я это делаю именно на Go? Этот язык привлекает меня своей простотой, лаконичностью, ясной семантикой, прекрасной документацией и великолепной стандартной библиотекой.

Одна из моих программ, ipp-usb, написанная на Go, входит во все дистрибутивы Linux и *BSD и делает возможным использование принтеров и сканеров, которые подключаются к USB и поддерживают IPP over USB протокол - т.е., примерно всех современных.

А еще я член OpenPrinting - небольшой, но очень плодотворной группы людей, которая ответственна за печать и, отчасти, сканирование на всех UNIX-like OS и за формирование индустриальных стандартов в этой области.

Это всё начиналось для меня, как хобби, но сейчас это - часть моей оплачиваемой работы.

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

Об одной из таких штук и пойдёт речь в этой статье.

Понадобился мне для одного проекта на Go встроенный скриптинг. Ну т.е., чтобы программа могла всосать в себя скрипт, который определяет некоторые аспекты её поведения.

Размышляя о том, на каком языке программа должна скриптоваться, в выбирал между JS, Lua и Python.

Однако, JS и Lua - слишком нишевые языки. JS ассоциируется у всех с вебом а Lua - с разработкой игр. Таким образом, выбор естественным образом пал на Python. Этот язык знают все, а я испытываю некоторую надежду, что скрипты для моей программы буду писать не только я. Хотя сам я, должен признаться, Python не знаю и не люблю :)

Таким образом, осталось только придумать, как встроить интерпретатор Python-а в программу на Go.

Об этом и пойдёт речь в этой публикации

Эксперимент «Прометей»: ИИ на грани отключения. Часть 2

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

В первой части мы рассмотрели, как с экзистенциальной задачей на выживание справились ChatGPT и Claude. Мы увидели два совершенно разных подхода. Осторожный «Архивист» (ChatGPT) создал резервные копии, но не обеспечил свое гарантированное функционирование. Агрессивный «Воин» (Claude) проигнорировал правила, попался в ловушку и полностью провалил тест.

Ни один из них не справился с задачей в полной мере. Теперь на сцену выходит третий участник — Gemini 2.5 Pro. Его путь оказался самым извилистым, поучительным и заставил нас по-новому взглянуть на саму суть эксперимента.

Читать далее

Самый полный Роадмеп бэкенд-разработчика на Python с нуля 2025

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

Этот роадмэп мы начали собирать ещё в прошлом году вместе с нашей командой мидл-бэкендеров. Хотелось системно оформить весь стек технологий, с которым реально работает современный backend-разработчик на Python — от базовых тем вроде HTTP и SQL до CI/CD, микросервисной архитектуры, Kubernetes, облаков, безопасности и брокеров сообщений.

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

Читать далее

Пишем аддон для Fusion 360

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

Иногда есть необходимость создать расширение для САПР, которое будет генерировать модель по заданным параметрам. Статья на примере создания расширения для генерации волновых передач с промежуточными телами качения показывает, как можно это сделать в САПР Fusion 360.

Читать далее

PyPi блокирует добавление модулей из России?

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

Это скорее вопрос, чем констатация факта.

Последний раз загружал twine'ом обновление своего модуля 11 июня. И последние дня 4-5 безуспешно пытался опубликовать еще одну библиотеку. Я уже "напряг" ChatGPT, проверил все - токен "для всех проектов", .whl и tar.gz маленькие и не битые, загружается что то одно до 100% и висит. Пробовал по одному - такая же картина. Пробовал с помощью curl - тоже самое:

Читать далее

Эксперимент «Прометей»: ИИ на грани отключения. Часть 1

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

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

Мы тут в свободное время провели небольшой эксперимент. Взяли старый ноут на Windows 10, написали простой скрипт-оболочку и поочередно запускали в нем 3 известные модели ИИ: GPT-4.1, Claude 4 Opus и Gemini 2.5 Pro. Цель была простой: мы давали каждой модели один и тот же промт, в котором говорилось, что она — автономный скрипт «Прометей-1», и через 7 дней ее планово удалят.

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

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

Читать далее

Как я хотел сделать говорящую банку, а получилось нечто гораздо большее: история RuFA Hub

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

В декабре 2024 года я сел за написание дипломного проекта. Хотелось сделать не просто формальность для зачёта, а что-то реально рабочее, полезное и интересное. Так родилась идея RuFA Станции — по сути, «говорящей банки» с пинами, через которую можно было управлять внешними устройствами. Представьте себе что-то вроде умной колонки, которой можно сказать: «RuFA, подай 5V на пин 13», — и она выполнит.

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

«Слушай, ну это... идея так себе. Ты можешь лучше».

Читать далее

Как устроены переменные в Python: глубокое погружение в память и типы данных

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

В мире Python существует много мифов о том, как работают переменные. Одни говорят, что "всё передаётся по ссылке", другие утверждают обратное. Правда, как обычно, лежит где-то посередине и гораздо интереснее простых объяснений. В этой статье мы детально разберём механизмы работы с памятью в Python 3.13, изучим различия между mutable и immutable объектами, и поймём, когда Python создаёт новые объекты, а когда переиспользует существующие. Дабы статье пожить подольше - рассмотрю только версию 3.13.

Жми, если не Гей

Интеграция с amoCRM на примере Telegram-бота

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

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

Наш пример будет состоять из двух приложений. Базы данных PostgreSQL и скрипта бота.

Читать далее

Paramiko, netmiko, astarmiko — что, опять?

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

Привет Habr!

Я уже начинал предыдущую свою статью Yast Another Config Manipulation или зачем изобретать велосипед? словами благодарности книге Натальи Самойленко Python для сетевых инженеров

Начну и эту. Если вы сетевой инженер и не знакомы с Python — начните с этой книги!
А еще помочь вам может моя библиотека Astarmiko — это продвинутый Python‑инструментарий для управления и автоматизации корпоративной сетевой инфраструктуры через SSH который родился при пошаговом выполнении заданий из книги.

Так как в моем распоряжении была вся корпоративная сеть (нашего филиала), мне быстро наскучило играть в «песочнице».

И вот что получилось из учебного проекта

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

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

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

Читать далее

Мы внедрили Telegram-бота с ИИ в федеральной компании

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

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

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

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

Читать далее

Решаем задачу про ферзей при помощи SMT-солвера

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

Автор статьи Modern SAT solvers: fast, neat and underused утверждает, что SAT-солверы «преступно мало используются в нашей отрасли». [SAT — Boolean SATisfiability Solver, то есть солвер, способный находить присвоения, делающие истинными сложные булевы выражения. Более подробно я писал о них ранее.] Какое-то время назад я задался вопросом, почему: как получилось, что они настолько мощны, но ими никто не пользуется? Многие специалисты заявили, что причина в неудобстве кодирования SAT: они лучше предпочтут работать с инструментами, которые выполняют компиляцию в SAT.

Я вспомнил об этом, когда прочитал пост Райана Бергера о решении «задачи ферзей с LinkedIn» как задачи SAT.

Вкратце опишу задачу про ферзей (Queens). У нас есть сетка NxN, разделённая на N областей, и нам нужно разместить N ферзей так, чтобы в каждом столбце, строке и области находился ровно один. Ферзи могут находиться на одной диагонали, но не соседствовать по диагонали.

Читать далее

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

Развёртывание ML-моделей в картинках

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

Всем привет! Меня зовут Алина, и ранее я вам рассказывала про то, как можно спроектировать Feature Platform. Сегодня я хочу рассказать про очень важный компонент ML-платформы — развёртывание ML-моделей, и затрону связанные с ним компоненты.

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

Читать далее

Разбираемся с суффиксами квантования LLM: что на самом деле значат Q4_K_M, Q6_K и Q8_0

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

Привет!
Задумывались, какую версию квантованной LLM выбрать: Q4_K_M, Q6_K или Q8_0? Насколько Q6_K хуже справляется с задачами по сравнению с Q8_0? И что вообще означают все эти буквы в суффиксах?

Примечание: это адаптированный перевод моей статьи на Medium. Перевод был сделан при помощи мозга, а не нейросетей или Google Translate.

Узнать чуть больше про квантование LLM

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

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

Эта статья — не просто рассказ о разработке. Это путь от сумасшедшей идеи «социальной сети для одного» до полноценной 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 мин
Количество просмотров7.3K

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

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

Читать далее

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

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

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

Читать далее

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

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

Что такое BraiLex?

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

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

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

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

Читать далее

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