Python Ninja | Программирование
6.89K subscribers
1.21K photos
115 videos
1.06K links
Канал для всех кто хочет освоить или прокачать навыки программирования на Python. Присоединяйся, чтобы стать настоящим Python Ninja!

Связь: @sfoninja
Download Telegram
Это, пожалуй, одна из лучших технических книг о том, как большие языковые модели обучают в огромных масштабах:

> память GPU и профилирование
> разбиение вычислений на блоки, объединение ядер и FlashAttention
> параллелизм по данным, тензорам, конвейеру и контексту

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

Бесплатно прочитать её можно и на Hugging Face:

https://huggingface.co/spaces/nanotron/ultrascale-playbook

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Проверка уникальности работает через =, а NULL = NULL не даёт true. По умолчанию NULL не считается уникальным значением.

Postgres не может доказать равенство двух NULL, поэтому пропускает обе строки.

Простой пример, где это ломается, — составной ключ:

-- UNIQUE (user_id, org_id, deleted_at)

INSERT INTO memberships VALUES (1, 10, NULL);
INSERT INTO memberships VALUES (1, 10, NULL);

-- обе строки будут вставлены


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

NULLS NOT DISTINCT

Начиная с Postgres 15, уникальные ограничения и индексы могут считать NULL равными:

UNIQUE NULLS NOT DISTINCT (user_id, org_id, deleted_at)


Второй INSERT уже завершится ошибкой.

Но это также запретит две строки с одинаковым значением deleted_at, а не только две активные строки.

Частичный уникальный индекс

Если уникальность нужно обеспечить только для активных строк, используйте partial unique index:

CREATE UNIQUE INDEX ON memberships (user_id, org_id)
WHERE deleted_at IS NULL;


✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Программирование c нуля «От новичка к уверенности в коде на Python»

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

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

Программа курса:

✅переменные и типы данных
✅условия и логика программ
✅циклы и рекурсия
✅функции и работа с вводом данных
✅списки, словари и множества
✅базовое ООП
✅работа с библиотеками Python
✅десятки задач и упражнений

Эти знания фундамент для написания простых ботов и автоматизации задач

🔗Скидка 25% действует 48 часов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
«Understanding Linear Algebra» — бесплатный учебник, который связывает теоретические основы линейной алгебры с практическими применениями и информатикой.

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

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

https://scholarworks.gvsu.edu/cgi/viewcontent.cgi?article=1026&context=books

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Python-библиотека для получения цен и расписания рейсов из Google Flights.

https://github.com/AWeirdDev/flights

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Репозиторий содержит Jupyter-ноутбуки к книге O’Reilly «Transformers: The Definitive Guide».

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

https://github.com/Nicolepcx/transformers-the-definitive-guide

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Если полностью разберётесь в этой статье, то будете понимать инференс лучше 90% людей.

И это, кстати, всего лишь первый материал в репозитории AI Performance Engineering.

Страшно представить, сколько знаний в остальных.

https://github.com/wafer-ai/gpu-perf-engineering-resources

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Представьте, что роботы смогут делать ещё через 10 лет...

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4
Каждый новый else if — это ещё одно критическое допущение, о котором ты уже забыл.

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

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
OpenResearch в пятницу занял первое место среди самых популярных репозиториев на GitHub.

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

Теперь OpenResearch доступен и на Windows.

https://github.com/alphaXiv/OpenResearch

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
11 принципов разработки ПО, которые я хотел бы понять раньше

1. SOLID — качественное объектно-ориентированное проектирование
2. DRY — не повторяйся
3. KISS — делай проще
4. YAGNI — не создавай то, что пока не нужно
5. SRP — одна ответственность
6. Open/Closed — расширяй, не ломая существующее
7. Dependency Inversion — меньше жёстких связей
8. Composition — собирай систему из гибких компонентов
9. Separation of Concerns — разделяй зоны ответственности
10. Fail Fast — выявляй проблемы как можно раньше
11. Measure First — оптимизируй только то, что действительно имеет значение

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Вот как сегодня выглядит «фабрика программного обеспечения» OpenAI, где значительная часть работы уже строится вокруг агентов.

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Гайд по основным командам для диагностики сетей, которые должен знать каждый Sysadmin.

Сравнение инструментов, используемых в системах Linux/macOS и Windows.

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Это что за имба

An Introduction to Statistical Learning это полноценный учебник по статистике, Machine Learning. Бесплатная учебная база: регуляризация, классификация, регрессия, деревья решений, SVM, Deep Learning, статистические тесты и практическая лабораторные работы в каждой главе.

https://www.statlearning.com/

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Совет на ближайшие годы — идите в Data Science и ML

Пока ИИ забирает работу у одних специалистов, другие строят на нём карьеру и зарабатывают всё больше. И вопрос уже не в том, изменит ли ИИ рынок, а в том, по какую сторону этих изменений окажетесь вы. DS/ML – один из самых прямых способов оказаться среди тех, кто на этом выигрывает

А чтобы не тратить годы на хаотичное обучение – держите в подписках Data Portal. Там практикующие ML-инженеры понятным языком разбирают главное: новые модели, библиотеки, исследования, датасеты, гайды, курсы и практические кейсы.

Подписывайтесь: @LLMScience
❤2
Не нарушайте принцип единственной ответственности

Функция должна делать одну вещь, делать её хорошо и только её.

Эта функция делает слишком много:

def calculate_final_total(
price: float,
quantity: int,
discount_rate: float,
tax_rate: float
) -> float:
# Расчёт промежуточной суммы
subtotal = price * quantity

# Применение скидки
discounted_amount = subtotal * (1 - discount_rate)

# Расчёт налога
final_total = discounted_amount * (1 + tax_rate)

return final_total


Проблема здесь в том, что расчёт промежуточной суммы, скидки и налога объединён в одну функцию. Любое изменение одного из этапов может повлиять на весь расчёт.

Лучше разбить логику на небольшие специализированные функции:

def calculate_subtotal(price: float, quantity: int) -> float:
return price * quantity

def apply_discount(subtotal: float, discount: float) -> float:
return subtotal * (1 - discount)

def calculate_tax(amount: float, tax_rate: float) -> float:
return amount * (1 + tax_rate)


Так намного лучше.

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

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

Поэтому держите функции простыми и сфокусированными.

Одна функция — одна ответственность.

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Небольшой факт про Python.

Оператор := называют «моржом» из-за того, что символы напоминают глаза и бивни моржа.

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

Например:

while (line := input("Say something: ")) != "quit":
print(f"You said: {line}")


Без него пришлось бы отдельно получать значение через input(), а затем уже проверять его.

Пользовались когда-нибудь := в своём коде?

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Одно из главных правил GROUP BY в SQL.

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

Почему это важно: GROUP BY определяет, что означает одна строка результата. База должна понимать, какое единственное значение поставить в каждую ячейку.

Например, если одна строка результата соответствует должности внутри отдела, группировать нужно и по department, и по job_title.

Если оставить столбец, который внутри одной группы может иметь несколько значений, одни СУБД просто вернут ошибку, а другие в некоторых режимах могут выбрать неопределённое значение из группы.

Простое правило: если столбец может иметь несколько значений внутри группы, его нужно либо добавить в GROUP BY, либо агрегировать через COUNT, SUM, MAX, MIN и другие функции.

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
В репозитории LLM Internals собрали цельную дорожную карту от токенизации и BPE до обучения, дообучения, RAG, агентов и оптимизации вывода.

Разбираются Q/K/V, RoPE, каузальные маски, GQA, Transformer, MoE, LoRA, нормализация, обратное распространение ошибки, кросс-энтропия, RLHF и рассуждающие модели.

Отдельный блок посвящён ускорению вывода: KV Cache, Flash Attention, Paged Attention и спекулятивное декодирование.

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

https://github.com/amitshekhariitbhu/llm-internals

✈️ Python Ninja
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем»

В программе только важные аспекты:

— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других

Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам

48 часов доступен со скидкой 25%

↗️ Пройти курс на Stepik
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2