YAPyB – Telegram
Неожиданная для меня ветка развития Джуна - разработка open source'а.

Не думал, что там кому-то могут платить, а тем более - что у этого есть другие плюсы, кроме как уметь читать и писать код.

Вполне отличная штука, если тебе нужен ментор, а ментору - свободные руки.

https://habr.com/ru/articles/967610/
Убил пару часов залипая на карту Github: https://anvaka.github.io/map-of-github/

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

Например, я узнал, что на FastStream поставили звездочки 3 категории людей:
1. подписчики Соболева❤️
2. любители смузи-стека - Robyn, polyfactory, msgspec, litestar, granian
3. Те, кто реально искал очереди - Faust, taskiq, arq

А еще раскопал 100500 некро-DI проектов для python😅

В общем, рекомендую позалипать - мб тоже что интересное найдете.

А ссылку стащил с канала человека, который на меня подписался - https://news.1rj.ru/str/dotrubic/218
Да, я иногда сталкерю всех подписчиков и отписчиков тоже🌚
всем любителям .env посвящается
$ cat dumpenv.py 
import os
print(os.getenv("XXX"))

$ cat .env
XXX = 1
export XXX=2

$ uv run --env-file=.env ./dumpenv.py
1

$ dotenv run python ./dumpenv.py
2


ещё больше вкусного в комментариях
😍1
Forwarded from 418 I'm a Teapot 🫖
Чё там, AGI soon? Надеюсь, что традиции машинного перевода останутся 🙏
😁2
Если кто-то занимается разработкой агентных приложений (или просто LLM-based) и волнуется на тему безопасности, то у меня для вас есть полезный сканер от NVIDIA

https://github.com/NVIDIA/garak/

Это штука неплохо находит prompt injection, system prompt leaking, jailbreak'и и прочие радости AI-based приложений. И - оно правда работает (парочку уязвимостей мы им нашли😢)

Только не надо его натравливать на приложения вайбкодеров... Пожалуйста
🥴1
Forwarded from CPython notes
Кто-то говорит что киллер-фича 3.15 это lazy imports. Nah, not even close.

Реальная киллер-фича 3.15 это встроенный статистический профилировщик Tachyon.
Корокто: вы можете запустить его на проде, и ваше приложение (которое вы профилируете) никак не пострадает по перфомансу.

> Есть wall-clock/cpu режимы
> async-aware (Господи, наконец-то). При чем умеет отображать как те корутины что прямо сейчас жрут CPU, так и те которые ждут IO/лока, и так далее
> Умеет в native stack (удивительно)
> GC-aware
> GIL-aware
> Умеет сэмплировать все треды, а не только текущий
🔥2
Forwarded from Хитрый Питон
Astral выпустили бета-версию своего тайп-чекера ty (версия 0.0.2). Я последний раз пробовал с ним играться весной, когда его только анонсировали и тогда он был откровенно сырым. Попробовал сейчас по-быстрому (`uvx ty check` если в проекте уже есть uv), вот первые впечатления:

- Действительно супер быстрый, с mypy не сравнить
- Очень подробный отчет о найденных ошибках в консоли, мне нравится
- Ругается на то, на что mypy не ругается, но я пока его не конфигурировал
- Часть проблем в коде, которые он нашел выглядят валидными, вторая часть спорная но наверное это можно побороть покопавшись в настройках

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

Ссылка на анонс https://astral.sh/blog/ty
🔥1🌚1
Для себя открыт ещё один способ утечки памяти в питоне.

Если ошибку один раз константой задать и рейзить её периодически - то стек будет добавляться каждый раз и не очищаться.

Типа
foo = Exception('awesome error')

for _ in range(1_000_000):
try:
raise foo
except Exception:
pass

Вот такой код течёт.

Что нашёл, тем делюсь)

Проверьте, нет ли у вас где глобальных переменных м ошибками, типа енамов

UPD:
код проверки, что память течёт
import time

class SharedError(Exception):
pass


def tblen(traceback):
c = 0
t = traceback
while t:
c += 1
t = t.tb_next
return c


def main() -> None:
iterations = 5000000
progress_every = 50000
shared_error = SharedError("expired token")

for index in range(iterations):
try:
raise shared_error # рейзим шаренный эксепшн, не создаем новый
except SharedError as e:
if (index + 1) % progress_every == 0:
print(tblen(e.__traceback__))

if (index + 1) % progress_every == 0:
print(f"raised {index + 1} exceptions")

time.sleep(60)

if __name__ == "__main__":
main()
🔥71🌚1
Ребятки. Я тут решил порелаксировать по поводу канала.

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

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

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

Отсюда к вам вопрос, дорогие подписчики, какой формат канала вас больше устраивает.
З.Ы. постараюсь просто больше контента делать на тему, что вы выберете, но не перестану вкидывать других вещей.
🎉21
Кто там хотел локальной Claude Code ?

ollama с версии 0.14 поддерживает Anthropic Messages API, что позволяет использовать Claude Code с локальными моделями вроде qwen3-coder или GPT-OSS.

Говорят, что нужно переключить переменные окружения вот так


{
"env": {
"ANTHROPIC_BASE_URL": "http://localhost:11434",
"ANTHROPIC_AUTH_TOKEN": "ollama",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}


И потом запустить примерно так


claude --model qwen3-coder


Еще говорят, что после такого люди сразу начинают понимать ценность стандартной подписки на Claude Code))

Ваш, @llm_under_hood 🤗
😁3
Не так всё однозначно ©️

Подоспел очередной бенчмарк версий CPython (3.10 - 3.14). В целом, конечно, производительность улучшилась, но есть и деградация. Например, pickle/unpickle (что может быть важно для ML), работа с json и корутинами.

https://en.lewoniewski.info/2025/python-314-vs-313-312-311-310-performance-testing-video/ #python
Тренд ИИ автоматизации продолжается.

На этот раз я наткнулся на app.devin.ai - ИИ ревьюер.

Почему выделил его среди остальных:
1. Бесплатный для открытых проектов
2. Даёт вполне внятные комментарии. Примеры: 1, 2, 3
3. Достаточно просто подключить и позвать при необходимости.
4. Умеет смотреть на уже закрытые ПРы.

На данный момент я не особо активный опен сурсер, но наверняка среди вас такие есть - призываю посмотреть и попробовать этот инструмент. Я его нашёл в чате по reagento проектам (dishka,adaptix), которые стараются не использовать лишние инструменты, но даже им это зашло. Например, этот и этот коммент

В этом месяце думаю ещё пару постов на тему ИИ закину, ждите)
🔥2
Forwarded from CPython notes
PyPy... умирает?
Для тех кто не знает PyPy является одной из реализаций Python, прямой аналог CPython, при чем с крутым джитом.
Один из мейнтейнеров PyPy предложил numpy дропнуть поддержку для PyPy со словами "PyPy is no longer under active development": https://github.com/numpy/numpy/issues/30416
Печальная новость для всего Python сообщества.

За ссылку спасибо @serjflint
😱4
Ну а теперь если серьёзно

Последние месяцы я достаточно загружен на работе всякими созвонами/планированиями/1to1 и прочими менеджерскими обязанностями, но кодить то меньше хотеть не стало. На работке дали доступ к ИИ агентам - в частности я юзал claude это время. И хочу сказать - я немного изменил парадигму программирования и чаще ловлю себя за синдромом самозванца - теперь я, по сути, постоянный ревьюер того, что нагенерила ЛЛМ.

Из плюсов:
- снимает головную боль / позволяет не загружать голову контекстом задачи - ты описываешь, что надо сделать и следишь за тем, что ЛЛМ делает и направляешь её
- ЛЛМ пишет достаточно много кода. Если измерять продуктивность в строках - моя продуктивность на том же уровне, когда я был разрабом и писал код или даже выше, при меньших временных затратах (субъективщина)
- ЛЛМ способна делать разного рода задачи и мгновенно накидывать идеи и/или реализации твоих идей.

Минусы:
- Ты не пишешь код руками в большинстве случаев - только правишь явно или промптом говоришь, что надо поправить. Меньше морального удовлетворения.
- Теперь ты не кодер, ты ревьюер
- Всякие психологические моментики, что тебя скоро заменит машина (не заменит, уверен, но трансформирует работу) и что она может писать код иногда лучше тебя (скорее про отношение скорость/качество)

Ниже в статейке чел ловит похожие инсайты, которыми делюсь и с вами

https://devby.io/news/10-veschei-kotorye-ya-ponyal-ob-ii-kodinge-razrab-sozdal-50-proektov-i-vygorel
1
И ещё вдогонку забавный пост про работу пидантика с inf/nan. Каких правильно сериализовать и десериализовать

Tl;dr - ser_json_inf_nan='constants'. По крайней мере если работаем в рамках питона и пидантика. Если нужны другие языки - в ход идут кастомные поля

https://www.fmularczyk.pl/posts/2026_01_nan_null_none/
Forwarded from Опенград
Листал я тут сохраненки в телеге за прошлый год и нашёл прекрасное. На скрине я чут-чут попросил Gemini поработать за меня в кубере, но ушлый индус по ту сторону такой наглости не стерпел и сразу вывалил порчу на санскрите, но чтобы не палиться -- оставил READY и тифика.

Если серьёзно, то я ума не приложу как она вообще к такому пришла. Помню только что я усердно пытался заставить её (модель) что-то сделать в контексте сертификатов, что было нужно мне, но до неё это никак не доходило. Было это во время версии 2.5 Pro.
Forwarded from Pavel
Python 3.13:
>>> from typing import get_origin
>>> get_origin(None | str)
<class 'types.UnionType'>


Python 3.14:
>>> from typing import get_origin
>>> get_origin(None | str)
<class 'typing.Union'>

Иногда такое чувство, что вот функции анализа типов в питоне это такой вот троллинг, где тебе каждый релиз всё переставляют и меняют местами
🥰1😁1
Увидел ссылку в соседнем паблике, но всё же добавлю немного Tl;dr.

Дипсик придумал немного другую архитектуру llm.
Раньше - это были N-граммы. Сейчас - трансформеры. Он же придумал - Engram - рядом с трансформером рядом стоит фильтр из N-граммы.

Кратко - ллм станет быстрее и использовать меньше памяти.

Более полно, в чём различие абстрактно - увидел в комментах под статьёй.

Спасибо damakin

"Александр Македонский" в новой архитектуре рассматривается как единая сущность, только когда эти два слова идут строго друг за другом; "Александр Невский" - совсем другая 2-грамма. Близкий аналог - составные слова "Нейросеть" и "Нейрохирургия": похоже начинаются, но совсем разные по значению.

Transformer "рассуждает" примерно так: "Александр", "Македонский". Как эти слова связаны между собой? "Македонский" означает, что этот некто из страны "Македония". Знаю ли я какого-нибудь Александра из Македонии (складываю векторы Александр + Македония)? О да, в древности был такой знаменитый царь (в векторном пространстве рядом оказались понятия "Древний мир" и "Правитель").

Engram не разбивает "Александр Македонский" на отдельные слова. В его памяти эта 2-грамма - единое понятие, к которому уже привязаны понятия "Древний мир", "Правитель", "Македония". Если Engram увидит "Александр Невский", и в памяти (грубо говоря, кэше знаний) нет информации о такой личности, она разобьёт 2-грамму на 2 вектора: "Александр", "Невский" и пойдёт рассуждать по старому пути, найдя в итоге поблизости понятия "Русь" и "князь".

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

https://habr.com/ru/companies/bothub/articles/989538/
👍1