700+ страниц алгебры, после которых слово “абстрактная” перестаёт пугать
Есть бесплатная PDF-версия Basic Algebra Энтони Кнаппа — большой учебник для сильных студентов старших курсов и первого года магистратуры. Digital Second Edition доступна для личного образовательного использования.
Внутри почти весь фундамент современной алгебры:
* целые числа, многочлены, матрицы
* векторные и евклидовы пространства
* группы и действия групп
* линейные операторы и жорданова форма
* тензоры и внешняя алгебра
* кольца, модули, поля
* теория Галуа
* категории и функторы
Особенно ценно, что это не «конспект на 100 страниц», а полноценный маршрут: от конкретных вычислительных примеров к общей теории. Сам Кнапп пишет, что читателям нравились именно широта книги, раннее введение линейной алгебры и большое количество задач.
Для новичка без опыта доказательств будет тяжеловато. Но если уже умеешь читать строгую математику и хочешь собрать мощную базу по алгебре — это прям серьёзная находка.
PDF: https://math.stonybrook.edu/~aknapp/download/b2-alg-coverandinside.pdf
Есть бесплатная PDF-версия Basic Algebra Энтони Кнаппа — большой учебник для сильных студентов старших курсов и первого года магистратуры. Digital Second Edition доступна для личного образовательного использования.
Внутри почти весь фундамент современной алгебры:
* целые числа, многочлены, матрицы
* векторные и евклидовы пространства
* группы и действия групп
* линейные операторы и жорданова форма
* тензоры и внешняя алгебра
* кольца, модули, поля
* теория Галуа
* категории и функторы
Особенно ценно, что это не «конспект на 100 страниц», а полноценный маршрут: от конкретных вычислительных примеров к общей теории. Сам Кнапп пишет, что читателям нравились именно широта книги, раннее введение линейной алгебры и большое количество задач.
Для новичка без опыта доказательств будет тяжеловато. Но если уже умеешь читать строгую математику и хочешь собрать мощную базу по алгебре — это прям серьёзная находка.
PDF: https://math.stonybrook.edu/~aknapp/download/b2-alg-coverandinside.pdf
Бесплатный учебник по геометрии на целый университетский курс 📐
Euclidean Plane and its Relatives Антона Петрунина, профессора Penn State, можно легально скачать бесплатно. Книга рассчитана примерно на один семестр и строит геометрию строго через определения, аксиомы и доказательства.
Внутри:
евклидова геометрия: треугольники, подобие, параллельность;
инверсивная геометрия;
гиперболическая и нейтральная геометрия;
аффинная, проективная и сферическая геометрии;
комплексные координаты, построения и площади.
Автор специально сделал книгу минималистичной и достаточно строгой, предполагая, что читатель уже знаком с матанализом, вещественными числами и непрерывностью. Учебник распространяется по лицензии CC BY-SA.
Скачать книгу бесплатно: https://arxiv.org/pdf/1302.1630v19
Euclidean Plane and its Relatives Антона Петрунина, профессора Penn State, можно легально скачать бесплатно. Книга рассчитана примерно на один семестр и строит геометрию строго через определения, аксиомы и доказательства.
Внутри:
евклидова геометрия: треугольники, подобие, параллельность;
инверсивная геометрия;
гиперболическая и нейтральная геометрия;
аффинная, проективная и сферическая геометрии;
комплексные координаты, построения и площади.
Автор специально сделал книгу минималистичной и достаточно строгой, предполагая, что читатель уже знаком с матанализом, вещественными числами и непрерывностью. Учебник распространяется по лицензии CC BY-SA.
Скачать книгу бесплатно: https://arxiv.org/pdf/1302.1630v19
interlock: Circuit Breaker That Trips on Failure Rate and Latency
https://github.com/bagowix/interlock
https://github.com/bagowix/interlock
Бесплатный учебник по математике — 850 страниц.
«The Rising Sea: Foundations of Algebraic Geometry» Рави Вакила.
Книга предлагает подробное введение в алгебраическую геометрию и множество упражнений, позволяющих учиться на практике.
Требуется минимум предварительных знаний: необходимые инструменты вводятся по ходу материала — от теории категорий и пучков до коммутативной и гомологической алгебры.
Подход построен на примерах и помогает развить математическую интуицию.
Самодостаточный учебник для студентов магистратуры и аспирантуры, а также важный справочник для исследователей.
Link: https://math.stanford.edu/~vakil/216blog/
«The Rising Sea: Foundations of Algebraic Geometry» Рави Вакила.
Книга предлагает подробное введение в алгебраическую геометрию и множество упражнений, позволяющих учиться на практике.
Требуется минимум предварительных знаний: необходимые инструменты вводятся по ходу материала — от теории категорий и пучков до коммутативной и гомологической алгебры.
Подход построен на примерах и помогает развить математическую интуицию.
Самодостаточный учебник для студентов магистратуры и аспирантуры, а также важный справочник для исследователей.
Link: https://math.stanford.edu/~vakil/216blog/
🔴 Завтра тестовое собеседование на Middle Python с разработчиком из Авито
Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
🐍 Как правильно запускать внешние команды из Python
Для большинства задач не нужны
Что здесь происходит:
-
-
-
-
Ошибки лучше обрабатывать явно:
Передавайте команду списком аргументов.
Подробнее:
https://pythonmorsels.com/running-subprocesses-in-python/
Для большинства задач не нужны
os.system() или низкоуровневый Popen. Достаточно subprocess.run() - он запускает программу, передаёт аргументы, возвращает код завершения и позволяет получить вывод.
import subprocess
result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)
print(result.stdout)
Что здесь происходит:
-
capture_output=True сохраняет stdout и stderr-
text=True возвращает строки вместо bytes-
check=True выбрасывает CalledProcessError, если команда завершилась с ошибкой-
timeout=10 не позволяет процессу зависнуть навсегдаОшибки лучше обрабатывать явно:
import subprocess
try:
result = subprocess.run(
["git", "status", "--short"],
capture_output=True,
text=True,
check=True,
timeout=10,
)
except subprocess.TimeoutExpired:
print("Команда выполнялась слишком долго")
except subprocess.CalledProcessError as error:
print(error.stderr)
else:
print(result.stdout)
Передавайте команду списком аргументов.
shell=True нужен редко и может создать уязвимость к внедрению команд, особенно если строка содержит пользовательские данные.subprocess.run() - простой и надёжный мост между Python и системными утилитами, Git, компиляторами, CLI-инструментами и другими программами.Подробнее:
https://pythonmorsels.com/running-subprocesses-in-python/
Лето, ИТ-Пикник и музыка известных артистов уже через несколько дней!
8 августа в Коломенском пройдет ИТ-Пикник.
В программе — выступления проекта LAB Антона Беляева, IOWA, Cream Soda, Pompeya, мартина и Совы.
А днем — научпоп-лекции, дискуссии об ИИ и больших языковых моделях, мастер-классы и интерактивы. Полезные знакомства и развлечения тоже будут.
Зарегистрироваться и узнать подробности можно на сайте мероприятия.
В билет входит +1 — можно позвать близких и друзей.
До встречи в месте притяжения ИТ.
8 августа в Коломенском пройдет ИТ-Пикник.
В программе — выступления проекта LAB Антона Беляева, IOWA, Cream Soda, Pompeya, мартина и Совы.
А днем — научпоп-лекции, дискуссии об ИИ и больших языковых моделях, мастер-классы и интерактивы. Полезные знакомства и развлечения тоже будут.
Зарегистрироваться и узнать подробности можно на сайте мероприятия.
В билет входит +1 — можно позвать близких и друзей.
До встречи в месте притяжения ИТ.
🐍 Free-threaded Python убрал GIL, но NumPy всё равно упирался во внутренние блокировки
Казалось бы, Python 3.13+ без GIL должен позволить нескольким потокам одновременно выполнять численные операции.
Но на практике параллельные
В NumPy 2.5 разработчики устранили несколько ключевых узких мест:
- таблицу диспетчеризации
- часть общих служебных объектов сделали «бессмертными», снизив конкуренцию при подсчёте ссылок;
- выделение памяти перевели на
Теперь независимые операции можно масштабировать обычными потоками:
Главное преимущество перед
Потоки работают в одном адресном пространстве, поэтому могут эффективнее использовать многоядерный CPU и общую память.
Но есть важная оговорка:
free-threaded не означает автоматически thread-safe.
Одновременное изменение одного
Безопаснее использовать:
- отдельный массив для каждого worker;
- общий массив только для чтения;
- явную синхронизацию при записи.
Удалить GIL оказалось недостаточно. Чтобы Python действительно масштабировался по ядрам, пришлось перепроектировать и внутренности NumPy.
Подробнее:
https://labs.quansight.org/blog/scaling-numpy-on-free-threaded-python
Казалось бы, Python 3.13+ без GIL должен позволить нескольким потокам одновременно выполнять численные операции.
Но на практике параллельные
ufunc начинали конкурировать за внутренние структуры NumPy, счётчики ссылок и выделение памяти.В NumPy 2.5 разработчики устранили несколько ключевых узких мест:
- таблицу диспетчеризации
ufunc заменили на lock-free concurrent hash map;- часть общих служебных объектов сделали «бессмертными», снизив конкуренцию при подсчёте ссылок;
- выделение памяти перевели на
PyMem_RawMalloc и PyMem_RawFree.Теперь независимые операции можно масштабировать обычными потоками:
from concurrent.futures import ThreadPoolExecutor
import numpy as np
arrays = [
np.random.rand(5_000_000)
for _ in range(8)
]
with ThreadPoolExecutor(max_workers=8) as pool:
results = list(pool.map(np.sin, arrays))
Главное преимущество перед
multiprocessing - массивы не нужно сериализовать и копировать между процессами.Потоки работают в одном адресном пространстве, поэтому могут эффективнее использовать многоядерный CPU и общую память.
Но есть важная оговорка:
free-threaded не означает автоматически thread-safe.
Одновременное изменение одного
ndarray из нескольких потоков всё ещё может привести к гонкам, повреждённым данным и падению интерпретатора.Безопаснее использовать:
- отдельный массив для каждого worker;
- общий массив только для чтения;
- явную синхронизацию при записи.
Удалить GIL оказалось недостаточно. Чтобы Python действительно масштабировался по ядрам, пришлось перепроектировать и внутренности NumPy.
Подробнее:
https://labs.quansight.org/blog/scaling-numpy-on-free-threaded-python