Проверка уникальности работает через
Postgres не может доказать равенство двух
Простой пример, где это ломается, — составной ключ:
В итоге можно получить две активные записи membership для одного и того же пользователя, потому что ограничение уникальности вообще не срабатывает.
Начиная с Postgres 15, уникальные ограничения и индексы могут считать
Второй
Но это также запретит две строки с одинаковым значением
Частичный уникальный индекс
Если уникальность нужно обеспечить только для активных строк, используйте partial unique index:
✈️ Python Ninja
=, а 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;
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Программирование c нуля «От новичка к уверенности в коде на Python»
На Stepik запустили курс для новичков, которым важно не зубрить команды, а понимать логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает
Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа
Программа курса:
✅ переменные и типы данных
✅ условия и логика программ
✅ циклы и рекурсия
✅ функции и работа с вводом данных
✅ списки, словари и множества
✅ базовое ООП
✅ работа с библиотеками Python
✅ десятки задач и упражнений
Эти знания фундамент для написания простых ботов и автоматизации задач
🔗 Скидка 25% действует 48 часов
На Stepik запустили курс для новичков, которым важно не зубрить команды, а понимать логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает
Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа
Программа курса:
Эти знания фундамент для написания простых ботов и автоматизации задач
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
Он охватывает широкий круг тем: системы уравнений, векторы и матрицы, линейные комбинации, матричные преобразования, базисы и системы координат, определители, подпространства, собственные значения и собственные векторы, динамические системы, цепи Маркова, ортогональность, метод наименьших квадратов, сингулярное разложение и многое другое.
Очень полезный материал для тех, кто изучает линейную алгебру. Стоит сохранить как справочник.
https://scholarworks.gvsu.edu/cgi/viewcontent.cgi?article=1026&context=books
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Python-библиотека для получения цен и расписания рейсов из Google Flights.
https://github.com/AWeirdDev/flights
✈️ Python Ninja
https://github.com/AWeirdDev/flights
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
Внутри — код для задач компьютерного зрения, временных рядов, обработки аудио и обучения с подкреплением.
https://github.com/Nicolepcx/transformers-the-definitive-guide
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
И это, кстати, всего лишь первый материал в репозитории AI Performance Engineering.
Страшно представить, сколько знаний в остальных.
https://github.com/wafer-ai/gpu-perf-engineering-resources
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4
Каждый новый
Убери один граничный случай — и смотри, как вся конструкция начинает шататься.
✈️ Python Ninja
else if — это ещё одно критическое допущение, о котором ты уже забыл.Убери один граничный случай — и смотри, как вся конструкция начинает шататься.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
OpenResearch в пятницу занял первое место среди самых популярных репозиториев на GitHub.
С OpenResearch можно превратить любого агента для вайбкодинга в ресёрч агента, который изучает литературу, формулирует гипотезы, проводит эксперименты и создаёт исследовательские материалы.
Теперь OpenResearch доступен и на Windows.
https://github.com/alphaXiv/OpenResearch
✈️ Python Ninja
С OpenResearch можно превратить любого агента для вайбкодинга в ресёрч агента, который изучает литературу, формулирует гипотезы, проводит эксперименты и создаёт исследовательские материалы.
Теперь OpenResearch доступен и на Windows.
https://github.com/alphaXiv/OpenResearch
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
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 — оптимизируй только то, что действительно имеет значение
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
Сравнение инструментов, используемых в системах Linux/macOS и Windows.
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
An Introduction to Statistical Learning это полноценный учебник по статистике, Machine Learning. Бесплатная учебная база: регуляризация, классификация, регрессия, деревья решений, SVM, Deep Learning, статистические тесты и практическая лабораторные работы в каждой главе.
https://www.statlearning.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Совет на ближайшие годы — идите в Data Science и ML
Пока ИИ забирает работу у одних специалистов, другие строят на нём карьеру и зарабатывают всё больше. И вопрос уже не в том, изменит ли ИИ рынок, а в том, по какую сторону этих изменений окажетесь вы. DS/ML – один из самых прямых способов оказаться среди тех, кто на этом выигрывает
А чтобы не тратить годы на хаотичное обучение – держите в подписках Data Portal. Там практикующие ML-инженеры понятным языком разбирают главное: новые модели, библиотеки, исследования, датасеты, гайды, курсы и практические кейсы.
Подписывайтесь: @LLMScience
Пока ИИ забирает работу у одних специалистов, другие строят на нём карьеру и зарабатывают всё больше. И вопрос уже не в том, изменит ли ИИ рынок, а в том, по какую сторону этих изменений окажетесь вы. DS/ML – один из самых прямых способов оказаться среди тех, кто на этом выигрывает
А чтобы не тратить годы на хаотичное обучение – держите в подписках Data Portal. Там практикующие ML-инженеры понятным языком разбирают главное: новые модели, библиотеки, исследования, датасеты, гайды, курсы и практические кейсы.
Подписывайтесь: @LLMScience
❤2
Не нарушайте принцип единственной ответственности
Функция должна делать одну вещь, делать её хорошо и только её.
Эта функция делает слишком много:
Проблема здесь в том, что расчёт промежуточной суммы, скидки и налога объединён в одну функцию. Любое изменение одного из этапов может повлиять на весь расчёт.
Лучше разбить логику на небольшие специализированные функции:
Так намного лучше.
Небольшие функции с одной задачей проще покрывать модульными тестами, потому что у них меньше зависимостей и требуется меньше моков.
Кроме того, изолированные компоненты проще переиспользовать в разных частях приложения или конвейера, не подтягивая лишние зависимости.
Поэтому держите функции простыми и сфокусированными.
Одна функция — одна ответственность.
✈️ Python Ninja
Функция должна делать одну вещь, делать её хорошо и только её.
Эта функция делает слишком много:
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)
Так намного лучше.
Небольшие функции с одной задачей проще покрывать модульными тестами, потому что у них меньше зависимостей и требуется меньше моков.
Кроме того, изолированные компоненты проще переиспользовать в разных частях приложения или конвейера, не подтягивая лишние зависимости.
Поэтому держите функции простыми и сфокусированными.
Одна функция — одна ответственность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Небольшой факт про Python.
Оператор
Он появился в Python 3.8 и позволяет одновременно присвоить значение переменной и использовать его прямо внутри выражения.
Например:
Без него пришлось бы отдельно получать значение через
Пользовались когда-нибудь
✈️ Python Ninja
Оператор
:= называют «моржом» из-за того, что символы напоминают глаза и бивни моржа.Он появился в Python 3.8 и позволяет одновременно присвоить значение переменной и использовать его прямо внутри выражения.
Например:
while (line := input("Say something: ")) != "quit":
print(f"You said: {line}")Без него пришлось бы отдельно получать значение через
input(), а затем уже проверять его.Пользовались когда-нибудь
:= в своём коде?Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Одно из главных правил
Если в
Почему это важно:
Например, если одна строка результата соответствует должности внутри отдела, группировать нужно и по
Если оставить столбец, который внутри одной группы может иметь несколько значений, одни СУБД просто вернут ошибку, а другие в некоторых режимах могут выбрать неопределённое значение из группы.
Простое правило: если столбец может иметь несколько значений внутри группы, его нужно либо добавить в
✈️ Python Ninja
GROUP BY в SQL.Если в
SELECT есть столбец без агрегатной функции, он должен либо входить в GROUP BY, либо однозначно определяться сгруппированными столбцами.Почему это важно:
GROUP BY определяет, что означает одна строка результата. База должна понимать, какое единственное значение поставить в каждую ячейку.Например, если одна строка результата соответствует должности внутри отдела, группировать нужно и по
department, и по job_title.Если оставить столбец, который внутри одной группы может иметь несколько значений, одни СУБД просто вернут ошибку, а другие в некоторых режимах могут выбрать неопределённое значение из группы.
Простое правило: если столбец может иметь несколько значений внутри группы, его нужно либо добавить в
GROUP BY, либо агрегировать через COUNT, SUM, MAX, MIN и другие функции.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
Разбираются Q/K/V, RoPE, каузальные маски, GQA, Transformer, MoE, LoRA, нормализация, обратное распространение ошибки, кросс-энтропия, RLHF и рассуждающие модели.
Отдельный блок посвящён ускорению вывода: KV Cache, Flash Attention, Paged Attention и спекулятивное декодирование.
Для каждого раздела собраны статьи и видео, поэтому репозиторий особенно полезен, если хочется наконец связать разрозненные знания в одну систему.
https://github.com/amitshekhariitbhu/llm-internals
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
В программе только важные аспекты:
— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других
Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам
48 часов доступен со скидкой 25%
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Один из создателей ChatGPT представил принципиально новый тип ИИ-моделей.
Два года, Диогу Алмейда, втайне разрабатывал Jev — модель, которая не пишет текст и не генерирует токены последовательно.
Она получает любые неструктурированные данные и параллельно принимает заданные разработчиком решения. Например, выбирает одну категорию из списка, выставляет оценку или определяет вероятность утверждения.
Jev также запрещено использовать скрытую цепочку рассуждений. Сложное поведение должно собираться разработчиком из множества простых решений при помощи обычного кода.
Именно поэтому модель работает в 20–200 раз быстрее и обходится в 40–400 раз дешевле. Миллион входных токенов стоит 4,2 цента, а выход остаётся бесплатным навсегда (его вычисление настолько дёшево, что компания не видит смысла его считать.)
Компания заявляет о нулевых галлюцинациях. Jev не может выдать ответ вне заданных вариантов или нарушить структуру. При этом модель может выбрать неправильный вариант.
Это не замена GPT-6 Astra и не новый чат-бот. Jev создан для автоматизации, где программам не нужны тексты. Им нужны быстрые решения в заданном формате.
✈️ Python Ninja
Два года, Диогу Алмейда, втайне разрабатывал Jev — модель, которая не пишет текст и не генерирует токены последовательно.
Она получает любые неструктурированные данные и параллельно принимает заданные разработчиком решения. Например, выбирает одну категорию из списка, выставляет оценку или определяет вероятность утверждения.
Jev также запрещено использовать скрытую цепочку рассуждений. Сложное поведение должно собираться разработчиком из множества простых решений при помощи обычного кода.
Именно поэтому модель работает в 20–200 раз быстрее и обходится в 40–400 раз дешевле. Миллион входных токенов стоит 4,2 цента, а выход остаётся бесплатным навсегда (его вычисление настолько дёшево, что компания не видит смысла его считать.)
Компания заявляет о нулевых галлюцинациях. Jev не может выдать ответ вне заданных вариантов или нарушить структуру. При этом модель может выбрать неправильный вариант.
Это не замена GPT-6 Astra и не новый чат-бот. Jev создан для автоматизации, где программам не нужны тексты. Им нужны быстрые решения в заданном формате.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3