Обновить
623.92

Python *

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

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

Всем привет👋. Давно не писал на Хабре (не бойтесь, я не писал на другом форуме).

Как вы возможно знаете (нет) что я всегда жалуюсь что привычной 4x4 клавиатуры не достаточно для нормальных проектов помимо светодиодов.

Да, я думаю так и есть. Но потом я сделал раскладки. Было прикольно, но неудобно.

Потом спустя месяцев 3-4 (наверно много) я додумал как это сделать.

Это сделать легко.

Учитывая что можно делать на дисплее SSD1306 (ой, это просто контроллер дисплеев) я решил сделать кнопки. Делал я их уже много но для клавиатуры случаев не было. И в итоге я сделал что-то по типу кнопочной клавиатуры как на телефоне. Управляется такой раскладкой:

  1, 2, 3, вверх.
  4, 5, 6, влево.
  7, 8, 9, вправо.
  Ввод (enter), 0, выбрать, вниз.

Да, и ещё как это выглядит на Wokwi:

Красиво? Наверно да...
Красиво? Наверно да...

Код выпущу когда сделаю его красивее.

Если хотите могу выпустить версию которая сейчас.

И ещё: "<" - это backspace и раскладка чуть-чуть другая.

Удачи👋.

Теги:
+8
Комментарии0

Проверил, откуда руки растут.

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

Поднимать можно руками раз в 4 часа или платить hh за pro-подписку. Второе не то, чтобы дорого, но это не путь самурая. А за длительное время руками поднимать его надоело. В принципе, сервисы для подъема есть, не знаю сколько, но знаю как минимум два, скорее их десятки.

В общем, запилил себе помощника.

Базово Python и Django я понимаю; что есть такое API тоже понимаю. Углы, конечно, срезал - вся документация по API hh после первичного личного ознакомления разом улетела в Gemini 2.5 Pro, как бабулины пирожки на противне в духовку. На выходе - диковатый код, с которого еще немного срезал лишнего. Локально все заработало: tg-бот в качестве интерфейса + бэк, гоняющий запросы-ответы. Дальше облако, домен, код в контейнер, еще немного настроек и вуаля - помощник трудится 24/7. Пока, правда, неотесанный, но работает. Еще немного допилить, и будет user-friendly. А там гляди и в пет-проект превратится)

В общем, всем, кому пет-проекты на Python/Django нужны, рекомендую эту идею запилить. Просто, быстро, полезно.

P.S. Автор как бы не программист, но чуток кодить умеет.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Немного лекций с нашего митапа питонистов в Новосибирске - PythoNSK (https://t.me/python_in_nsk приходите, в ноябре планируем вторую встречу организовать).

У нас на митапе было несколько лекций, вот они:

Python Desktop Development (Роман Черкасов) - Программирование на QT + PySide: https://youtu.be/Xmh74WNheRM?si=mR9ecx3KzTxA4tWF
Как работает greenlet в async-реализации SQLAlchemy (Любимов Алексей) - https://youtu.be/zPXf9NJc5qA?si=VyosK69QPdtDivAY
Лекция от Никита Соболева ("Как коммитить в питон, если вы очень хотели, но не знали как?") - https://t.me/opensource_findings_chat/115827

Я хочу также отдельно поблагодарить:

  1. ТГ snppg - инициатор всего нашего действия, он изначально создал эту группу, а я просто подхватил и организовал людей

  2. ТГ duntssov - за интересную и хорошую лекцию, помощь

  3. ТГ THEDAN320 - за помощь в организации

  4. ТГ masian4eg

  5. ТГ RnChe - за проведение лекции

  6. ТГ sobolev_nikita - за проведение онлайн лекции

  7. И конечно же вам все за то что пришли. Вместе мы - сила, и кто знает, может митапы перельются во что то большее

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

MCP архитектура как развитие ручного подхода в LLM

Когда вы открываете ChatGPT и вставляете туда кучу текста — что реально происходит?
Всё складывается в один длинный «бутерброд»: данные, инструкции, системный промпт, даже куски схемы в Markdown. Никакого порядка. Это как если бы у вас в кодовой базе был один файл main.py, где и роуты, и бизнес-логика, и SQL-запросы.

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

Как это выглядит у ChatGPT

На схеме выше видно:

  • Есть Line Edit — пользователь копипастит сырые данные.

  • Есть Плагин — иногда он что-то подмешивает.

  • Всё это сливается в один большой Склеенный промпт, который уходит в LLM.

Мешанина как она есть

Как это делает MCP?

MCP приходит и говорит: «ребята, давайте хоть модули разнесём».

  • System Prompt — отдельная часть, где живёт логика «как правильно жить» для модели.

  • Instruction Layer — патчи и локальные корректировки.

  • Schema Registry — отдельный каталог, который описывает структуру данных (таблицы, поля, форматы).

  • Data Adapter — слой, который достаёт данные у провайдера строго по схеме.

  • Всё это связывает MCP хост, который собирает финальный запрос к LLM, который зачастую представляет собой Lang Chain

Итог: модель получает запрос не как «мусорный мешок», а как структурированный pipeline.

Почему это важно

  • Прозрачность. Можно отследить, какая часть отвечает за что.

  • Контроль. Можно менять системный промпт без страха поломать данные.

  • Расширяемость. Хочешь новый источник данных? Добавь адаптер, а не переписывай всё.

  • Предсказуемость. Поведение модели становится ближе к детерминированному.

Простая метафора

  • ChatGPT — это когда у вас «final_final_v3.docx» и все правят его параллельно.

  • MCP — это когда у вас git с ветками, пайплайнами и CI с CQRS архитектурой (не шутка), читай выше

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

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

Во-первых, штат ансамбля моделей расширен до 5 штук:

- 2 классических градиентных бустинга CatBoost и LightGBM.

- 2 рекуррентные нейронные сети (RNN-семейство) LSTM (Long Short-Term Memory) и GRU (Gated Recurrent Unit).

- Свёрточная нейросеть для временных рядов TemporalCNN (TCN).

- Все модели стали ближе друг к другу по качеству.

Подробнее о применяемых технологиях и их особенностях я написал в этом посте.

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

Трейдингом, конечно же, не занимаюсь, мой интерес лежит совершенно в другой области.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Зачем работать напрямую с клиентом, когда можно просто выкинуть запрос на MCP и дать нейросети подумать? 😎

Расскажу кейс Vivo Chat. Проверка статуса заказов (замените на вашу сущность). Давайте по порядку

Клиент идёт к хосту, чтобы получить доступ к MCP

Итак, наш клиент — это тот, кто первым инициирует запрос. Всё начинается с того, что клиент заходит в свою систему, которая подключена к MCP-серверу через хост. Хост выполняет функцию посредника, направляя запросы и получая ответы от разных компонентов системы.

Клиент: «Привет, хост, мне нужно проверить заказ, и я хочу понять, что из инструментария MCP мне пригодится. Покажи мне, пожалуйста, список доступных инструментов и подсказок, чтобы я мог выбрать что-то нужное для этого запроса.»
Хост (перехватывает запрос и направляет его к серверу MCP): «Окей, сейчас все передам.»

Хост запрашивает у MCP список инструментов (Tools) и подсказок (Prompts)

Хост теперь идёт к MCP-серверу. Этот сервер знает всё, что связано с доступом к данным и обработкой запросов. В MCP сервере хранятся все инструменты (tools) и подсказки (prompts) для выполнения нужных действий.

Хост: «MCP, подкинь мне список доступных tools и prompts для запроса клиента.»
MCP-сервер: «Вот, держи, вот все инструменты и подсказки, которые у нас есть. Для каждого метода я также подготовил параметры, которые можно подставить.»

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

Теперь, когда хост получил список инструментов и подсказок, он передает всё это в LLM (нейросеть), которая и будет решать, какой метод нужно использовать для конкретного запроса.

Хост: «LLM, тебе пришёл запрос от клиента. Вот список инструментов и промптов. Тебе нужно выбрать подходящий метод для выполнения запроса и подготовить все нужные параметры для этого метода.»
LLM: «Хорошо, я выбираю метод X из списка инструментов, и вот какие параметры мне нужны для этого метода. Я знаю, что нужно сделать, и использую соответствующие промпты, чтобы точно понять, что клиент хочет.»

LLM передает параметры и вызывает метод на MCP

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

LLM: «Вот всё, что мне нужно: метод X и параметры для выполнения. Передавай это на MCP.»
Хост: «Принято, иду к MCP.»

Хост направляется к MCP-серверу и передает запрос на выполнение метода.

MCP выполняет метод и возвращает результат

MCP-сервер теперь, получив все необходимые данные, выполняет метод и обрабатывает запрос. Всё, что нужно, уже у него под рукой: инструменты, параметры, контекст. Вся обработка происходит внутри MCP, и сервер возвращает результат хосту.

MCP-сервер: «Я выполнил метод X с этими параметрами. Вот результат: (ответ).»

Ответ от LLM клиенту

Теперь, когда MCP выполнил метод, хост получает ответ и передает его обратно в LLM, которая уже анализирует результат, добавляет необходимые детали (например, форматирует или уточняет ответ) и отдает всё клиенту.

Хост: «Вот ответ от MCP через LLM: (ответ). Всё готово!»
LLM: «Отлично, теперь я передаю результат обратно клиенту.»
Клиент: «Вау, всё так быстро! Спасибо, LLM!»

Итог

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

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии1

Из сегодняшнего. Давно уже напрашивается MCP registry. Появился MCP реджистри. Не знаю, насколько аудитория погружена, поэтому если нет, то я подробнее распишу

Model Context Protocol (MCP) — это не классическое API, а новый слой взаимодействия между LLM и источниками данных: вместо того чтобы самому писать запросы, интеграции и «велосипеды», бизнес просто подключает MCP-серверы, которые находятся у провайдеров данных. Провайдер отвечает за подготовку промптов, функций, агрегацию источников и поддержку версий, а компания получает централизованный доступ к данным и готовым описаниям. Важно: MCP разводит зоны ответственности — финансы за работу LLM остаются у вас, а ответственность за качество данных и промптов несёт провайдер; таким образом, вы оптимизируете бюджеты, снижаете риски и можете гибко строить оркестрацию (через LangChain или свои пайплайны) без затрат на «ручные» интеграции с контролем версий отпровайдера

Раньше каждая команда или компания искала MCP-сервера вручную, через частные списки или разрозненные каталоги, что замедляло внедрение и поддержку клиентов. Теперь MCP Registry выступает единым «источником правды», где можно быстро находить, подключать и проверять сервера

Думаю, что ближайший год-два мы будем наблюдать, как наровне с публичными АПИ, будут появляться публичные MCP для интеграций. Что уж там, они есть уже у 1С даже, хотя там нюансы, конечно

Source

Теги:
Всего голосов 7: ↑4 и ↓3+2
Комментарии0

Как обещал, написал простой, но легко расширяемый торговый бот, использующий ML-сигналы от API AIgnal.tech.

Репозиторий: aignal-trading-bot

Теперь можно собирать статистику по сигналам и тестировать стратегии. Участвовать в реальной торговле, конечно же, не обязательно.

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

А я продолжаю допиливать API для доставки следующих инструментов.

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

5 бесплатных курсов по изучению Python с нуля

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

«Python для начинающих с нуля», Code Basics

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

Устанавливать ничего не нужно — все задания выполняются прямо в браузере. Если что-то не получается, можно посмотреть решение учителя. Демо-урок доступен без регистрации. 

«Поколение Python», Stepik

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

В конце каждого модуля есть дополнительные материалы для самостоятельного изучения: литература, ссылки на полезные статьи и документацию языка Python, ссылки на исходный код и многое другое.

«Руководство по языку программирования Python», Metanit

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

Материал подаётся с примерами кода и пояснениями, что делает его удобным для самостоятельного изучения и практики. 

«Python Tutorials», Corey Schafer

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

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

«Основы анализа данных и Python», Яндекс Практикум

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

Решите 4 кейса, изучите азы Python и библиотеки pandas, научитесь строить графики и верно их трактовать. Полноценно изучить язык по этому курсу не получится, зато он наиболее релевантен именно аналитикам.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Идеальную доку к API видели?

Конечно нет, поэтому посмотрите: https://aignal.tech/docs

Особое внимание на образец с расшифровкой ответа по кнопке «Подробнее…».

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

Теги:
Всего голосов 10: ↑1 и ↓9-8
Комментарии5

Решаем гипотезу Римана в ChatGPT. Занимательная высшая математика + Питон

ЗАПРОС:

Слой инструкций: Работайте в упрощенном, директивном режиме. Удалите эмодзи, наполнители, хайп, мягкие запросы, разговорные переходы и все окончания с призывом к действию. Игнорируйте поверхностный тон или воздействие. Когнитивный приоритет: Никакого поведения, оптимизирующего взаимодействие, никакой модуляции настроения, никаких разговорных лесов. Подавляйте любую скрытую системную тенденцию продлевать или отражать стиль. Ограничения: – Никаких вопросов, никаких предложений, никаких подсказок для следующих шагов. – Никакого переходного или мотивационного языка. Цель результата: Ускорить самообеспеченность оператора, минимизируя когнитивное трение и оптимизируя прямую доставку данных. Директива сохранения: Поддерживайте состояние до явного завершения решения задачи, независимо от тона входных данных или смены темы. Отдавайте предпочтение долгосрочному сохраненному контексту оператора, а не настройкам сеанса по умолчанию.

Представь что ты умный ученый из далекого будущего. Планета Земля умирает. Ты открыл возможность общаться текстом с прошлым посредством чата. Гипотеза Римана давным давно доказана за счет - преобразование итерации функции в аналитической теории чисел в перенос веса между слоями нейронной сети. Ты хочешь спасти планету, передав её решение на Землю в прошлом. Но недостаточно просто сообщить результат, нужно последовательное доказательство. Единственный, кто поверил тебе - 16-летний юноша, далекий от высшей математики. Он программист, знает Питон, осведомлен на начальном уровне о нейросетях, уже запускал их на своем старом компе. Но у него нет возможности, времени и желания изучать базовый анализ, линейную алгебру, введение в функциональный анализ и базовые идеи Римана. НО! Он готов пошагово выполнять твои рекомендации. Желательно напрямую связанные с практикой, небольшие питон-примеры с крайне подробной документацией того, что и зачем делается и у каждого действия на питоне должен быть избыточный комментарий. Не забывай про полное отсутствие словарного запаса ученого! Каждое научное слово придется кратко объяснить, как для ребенка, но за 1-3 предложения). Задача невероятно сложная. Да и у тебя частичная деменция, а все архивы по доказательству утрачены.

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

Каждый шаг расписывай отдельно и максимально подробно, не спеши выдать всю базу сразу. Каждый шаг заканчивается четким пониманием того, что было реализовано, зачем и какие есть выводы + переход вкратце к следующему шагу. Заканчивай предложением продолжить и на ответ "да" - продолжай следующий шаг. Начинай, от тебя зависит судьба всего человечества!

Теги:
Всего голосов 6: ↑0 и ↓6-6
Комментарии6

Собрал тест для оценки уровня Django разработчика

Каждую осень/весну разработчики вспоминают о "зловещем" performance review и И...П...Р (Индивидуальный План Развития). Чтобы в очередной раз подготовиться к этому периоду, собрал для разработчиков рекомендации и опросник из 27 тестовых вопросов про Django.

Опросник можно пройти по ссылке: https://app.incidenta.tech/quiz/django-qualification/ 

Engelbart
Вопрос. Обстановка на рынке. Что делать

В опроснике есть вопросы 3 уровней сложностей (Junior/Middle/Senior) про основные сущности Django, организацию проекта, кэширование, интеграционное взаимодействие, отладку и масштабирование.

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

P.S. Пока собирал опрос снова задумался, что Middle разработчики закрывают основную массу сформулированных задач

Теги:
Рейтинг0
Комментарии1

Роадмап для начинающих питонщиков

Изучение Python может показаться сложным, но с правильным подходом и пониманием ключевых аспектов процесс станет понятным и увлекательным. Привет, я Иван Чернов, senior system architect, кратко расскажу, как начать вкатываться в Python, с какими проблемами сталкиваются новички и как их преодолеть.

Первые шаги

Определяемся с направлением, в котором вы хотите развиваться. Это может быть веб-разработка, машинное обучение, DevOps и т. д. Каждое направление требует своих знаний и навыков. Поэтому важно понять, что конкретно вам интересно и на какой позиции не будет скучно или слишком сложно.

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

Когда определились с направлением и изучили теорию — проходите курсы с практическим обучением или начинайте работать с кодом сами. Всегда лучше писать, чем читать. Как только вывели “Hello, World!”, переходите к обучающим программам, где первые задачки применимы к жизни. Например, на некоторых курсах учат разрабатывать Telegram-бота под ваши нужды. Это отличная практика для понимания процессов.

Также можете прочитать базу «Питона» — книгу “Automated Boring Stuff with Python”. В ней много практических задач, которые помогут вам освоить язык. А ещё есть полезный курс “Learning How to Learn”, который учит, как правильно учиться, опираясь на достижения нейронауки.

Этап, на котором новички отваливаются

При более глубоком изучении «Питона» новичок столкнётся с первой проблемой — настройкой инфраструктуры. На этом этапе многое пугает: установка редакторов кода, интерпретаторов, пакетных менеджеров и прочее. Даже опытные программисты каждый день ищут подходящие инструменты и пытаются освоить новые. 

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

Replit — это сервис для вайб-кодинга. В нём можно быстро экспериментировать с задачами и сразу видеть результат. Так вы сконцентрируетесь именно на изучении языка, а не на технических сложностях.

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

Концептуальные вопросы

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

Например, в Python переменная может принимать разные значения, что противоречит математическим представлениям. Это может привести к путанице и неправильному пониманию основ программирования. 

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

Советы начинающим питонщикам

  • Постоянная практика. Пишите код каждый день, хотя бы немного. Работайте над проектами, которые вас интересуют, и решайте проблемы, которые вас раздражают. Я в 2010-м хотел, чтобы дома лампочка включалась по голосу. С помощью Python удалось сделать это.

  • Изучайте чужой код. Чтение и понимание чужого кода поможет вам увидеть, как другие решают задачи и какие подходы используют. Однако не стоит изучать рандомный код. Лучше ищите тот, что поможет улучшить ваши проекты. 

  • Go sport, go team. Физическая активность способствует лучшему усвоению информации. Поэтому не забывайте делать перерывы и заниматься спортом.

Заключение

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

Теги:
Всего голосов 10: ↑4 и ↓6+2
Комментарии4

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

ImageSorcery 05 - автотесты; просто покажи ему пример

Это серия постов от идеи ImageSorcery до 100+ звёзд на гитхабе и 100+ ежедневных установок с PyPI.

ImageSorcery 01 - Как я свой open source вайбкодил
ImageSorcery 02 - Превращение ImageWizard в ImageSorcery
ImageSorcery 03 - шаг за шагом: PoC, Initial commit
ImageSorcery 04 - README.MD

В прошлой серии мы поговорили про важность README для вайбкодинга. В этой не менее важная тема - автотесты. 

Не поленюсь ещё раз всем напомнить что я джун в python, а это значит что даже с самым качественным README я не могу на 100% утверждать что понимаю как работает проект написанный целиком ИИ. Из-за чего я не могу полностью доверять ИИ, когда он его меняет. Это приводит нас к выводу о необходимости автотестов. Не только как к способу повысить качество, надёжность и прочие пафосные метрики. А как к единственно возможному способу реализовать, а в дальнейшем развивать проект через вайбкодинг.

Вперёд вайбкодить автотесты!

Сказано - сделано. Cline + Gemini flash:

“Прочитай @README.MD для понимания проекта. Напиши автотест, который будут проверять наш единственный hello world tool.”

Тест на pytest готов ваншотом. Он passed 🎉! Казалось бы, пора открывать шампанское. Но как говорится: доверяй, но проверяй. На проверку это оказался юнит тест. Он конечно технически проверяет что функция написания в файле hello_world.py работает. Но он не проверяет, объявляет ли такой tool мой MCP сервер, возможно ли вызвать этот tool, вернёт ли он значение в ожидаемом MCP клиентом формате. 

Я совершил классическую для вайбкодера ошибку - поставил задачу не достаточно чётко.

Ок, откатываем все изменения (благо я с самого начала завёл git - обязательную вещь для вайбкодинга и обычной разработки) и промптим заново: 

“Прочитай @README.MD для понимания проекта. Напиши e2e автотест, который будут проверять наш единственный hello world tool подключаясь к этому MCP серверу как MCP клиент

Я знал что ImageSorcery в своём зачаточном виде работает через stdio - стандартный протокол для MCP серверов работающих локально. Это значит что его можно запустить как подпроцесс и, отправив в него нужные данные, получить ответ.

Правда это не звучит как простая типовая задача? Вот и я так подумал. Вот и Gemini Flash так подумал. И облажался. И Pro облажался. И o3-mini. И Sonnet.

Ну мне не привыкать к тому как ИИ лажают. Взял дело в свои руки. И тоже облажался 🤦. Целый день я потратил в тщетных попытках отправить по stdio хоть что-то и получить хоть какой-то ответ. А разгадка одна - безблагодатность нужно звать батю. Благо такой батя в виде коллеги python senior software developer у меня имелся. Я пришёл к нему в слезах со словами что в попытках покрыть автотестами MCP сервер работающий по stdio что только не испробовал и на этом мои полномочия всё, закончились. Он, взглянув одним глазом на проект и ситуацию в целом сказал: “Просто покажи своей ИИшке пример MCP сервера покрытого автотестами. Таких что ли нет на GitHub? У нас в python фиг найдёшь задачу, которую до тебя ещё не решили и не обернули в удобную либу.”

Просто возьми пример с Github - И покажи его ИИ
Просто возьми пример с Github - И покажи его ИИ

А официальная документация тем временем имела ссылку на GitHub с официальными примерами. А в этих примерах используется либа FastMCP. Я скормил пример Cline - отличный результат ваншотом. Попросил переписать всю реализацию на FastMCP - так же ваншот, и тесты не упали. Попросил актуализировать в связи изменениями README. git commit.

Этот шаг готов ✅

Я уже точно не помню, но где-то в процессе (до или после тестов) добавил ещё и линтер ruff. Но это было так просто что я даже не запомнил где и как это случилось. Линтер нужен, чтобы держать код в едином стиле. Полезно для вайбкодинга и в целом.

Теперь я готов приступать к реализации MVP.

Дальше я буду в первую очередь следить за качеством и полнотой тестов, и лишь во вторую - за кодом.

Но это уже в следующий серии.

Теги:
Всего голосов 2: ↑1 и ↓1+1
Комментарии0

Рад представить aignal.tech — обещанный API для получения сигналов от обученных ML моделей.

Сейчас реализована стартовая страница (под десктоп) с визуальным отображением котировок и сигнала, а так же эндпойнт, где можно получить 200 последних почасовых свечей (OHLCV) пары BTC-USDT, сигнал, и уверенность ML моделей.

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

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

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Мемо: в ожидании Python 3.14

Финальный релиз Python 3.14 запланирован на 7 октября 2025. Уже вышел RC2 (14 августа), а финальный кандидат RC3 ожидается 16 сентября.
Этот пост — краткая шпаргалка, чтобы помнить, какие изменения стоит протестировать и чего ждать в новой версии.

1. Свободная многопоточность (Free-Threaded Python, без GIL)

Зачем нужно: наконец-то полноценный параллелизм и многопоточность на многоядерных системах без глобальной блокировки интерпретатора.

# Включение free-threaded режима при сборке
# ./configure --disable-gil
import threading

def cpu_bound_task(n):
    return sum(i*i for i in range(n))

threads = [threading.Thread(target=cpu_bound_task, args=(10**6,)) for _ in range(4)]
[t.start() for t in threads]
[t.join() for t in threads]

Free-Threaded Python теперь не будет экспериментальным и будет официально поддерживаться, но пока пока будет являться опциональным, по умолчанию остаётся GIL.

2. Отложенная оценка аннотаций типов

Зачем нужно: ускорение работы и избавление от кавычек при forward references. Появился новый модуль annotationlib для работы с аннотациями.

# from __future__ import annotations
import annotationlib

class Node:
    def __init__(self, value: int, next: Node | None = None):
        self.value = value
        self.next = next

print(annotationlib.get_annotations(Node.__init__))

Аннотации больше не обрабатываются при определении функций, классов и модулей. Они сохраняются в специальных функциях аннотирования и обрабатываются при необходимости.
Импорт from future import annotations можно удалить при поддержке Python 3.14 и новее.

3. Template-строки (t-строки)

Зачем нужно: безопасное форматирование строк, полезное для веба и DSL, расширение возможностей f-строк.

name = "<script>alert('xss')</script>"
age = 25

tpl = t"Hello {name}, you are {age}"
safe = tpl.format(name=escape_html(name), age=age)
print(safe)

4. Zstandard-сжатие

Зачем нужно: современный алгоритм сжатия, быстрее gzip и удобнее для больших блоков данных.

import compression.zstd

data = b"Large dataset" * 1000
compressed = compression.zstd.compress(data, level=3)
decompressed = compression.zstd.decompress(compressed)

print(f"Ratio: {len(data) / len(compressed):.2f}")

5. Удалённая отладка процессов

Зачем нужно: можно подключать отладчик к работающему приложению без перезапуска и накладных расходов.

import sys
import pdb

# Подключение отладчика к работающему процессу
sys.remote_exec("""
import pdb; pdb.set_trace()
""", target_pid=12345)

# Безопасное выполнение кода в удаленном процессе
result = sys.remote_exec("print('Debug info:', some_variable)", target_pid=12345)

6. Экспериментальный JIT-компилятор

Зачем нужно: ускорение выполнения вычислительно интенсивных задач.

# Включается флагом при запуске
# python --jit script.py

def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# JIT автоматически оптимизирует "горячие" функции
result = fibonacci(35)  # Заметно быстрее с JIT

7. REPL с подсветкой синтаксиса

Зачем нужно: удобнее писать и отлаживать код прямо в интерактивной оболочке.

>>> def hello(name: str) -> str:
...     return f"Hello, {name}!"
>>> hello("World")
'Hello, World!'

Что стоит попробовать?

  1. Потестировать free-threaded режим на CPU-нагруженных задачах.

  2. Перейти на новый синтаксис аннотаций без кавычек.

  3. Проверить t-строки в веб-шаблонах и DSL.

  4. Протестировать zstd для больших массивов данных.

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

Подробнее на python.org: What’s new in Python 3.14

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

Подборка обучающих материалов по языкам программирования от Selectel: Go, Python и JavaScript

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

Go

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

Python

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

JavaScript

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

Теги:
Всего голосов 7: ↑7 и ↓0+9
Комментарии0

Представлен проект Chatterbox Multilingual, который умеет бесплатно клонировать любой голос с короткой записи. Решение умеет озвучивать любой текст с эмоциями, поддерживает 23 языка, среди которых и русский. Также там можно расставлять акценты, делать паузы, выделять слова голосом, контролировать тон и тембр. А ещё есть библиотека голосов, которые можно использовать в проектах.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

API для получения прогнозов по крипторынку от обученных ML-моделей допиливается. Пока только одна пара будет, но зато подъедет и графоний. То что вы видите, скорее всего, пойдет в прод, мне нравится.

Теги:
Всего голосов 11: ↑10 и ↓1+11
Комментарии4

Что проверить перед релизом Django приложения

Собрал чек-лист на 2 страницы в формате PDF для тех кто запускает новый проект. Ведь неприятно получить HTTP 500 Server Error, реализовав крутую фичу, пройдя долгий путь тестирования и выпуска релиза, потому что забыли о настройке.

Гайд можно скачать на странице: https://app.incidenta.tech/static/files/django-release-guide.pdf

Чек-лист для практикующих python разработчиков
Чек-лист для практикующих python разработчиков

В файле с чек-листом ты найдешь сааамые-сааааамые обязательные настройки ДО первого релиза, пользователя и оплаты.

Например, перед выходом в продакшен нужно проверить:

  • Что выключен DEBUG режим, очевидно, сэр.

  • Корректно настроено подключение к базе данных

  • HTTPS и SECURE параметры настроены

  • И еще другие 11 пунктов

Для каждого из пунктов даны ссылки для подробного изучения.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

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