P(hD)ython
«Ну что, работяги, пора становиться волками!» 🐺 #профсоюзная https://unionconf.ru/ Я редко выбираюсь на конференции, но мимо такого события пройти не смог - IT-конференция Профсоюзная от Антона Назарова и «Осознанной меркантильности». Скажу честно: история…
«Ну что, работяги, волки вернулись с охоты!» 🐺
#профсоюзная
https://unionconf.ru/
Профсоюзная финишировала - огонь 🔥.
Маска волка, купленная в последний момент, отработала на все 100% (ладно, лисы… но какая разница 😅).
- Понетворкались с крутыми разработчиками, тимлидами, продактами и архитекторами.
- Подебатировали про менторство в IT - раскатали команду противников этого подхода 💪. Правда я сам не фанат этой темы, но уж что попалось на жеребьёвке, то и отстояли 😂
- А дальше - алкокодинг: решали LeetCode на скорость и на количество выпитого 🍺.
Антон - топовый спикер и организатор: всё по-взрослому, но при этом весело и драйвово.
P.S. На фото - 10 самых огненных людей конфы 🔥.
С уважением,
Михаил Масягин
#профсоюзная
https://unionconf.ru/
Профсоюзная финишировала - огонь 🔥.
Маска волка, купленная в последний момент, отработала на все 100% (ладно, лисы… но какая разница 😅).
- Понетворкались с крутыми разработчиками, тимлидами, продактами и архитекторами.
- Подебатировали про менторство в IT - раскатали команду противников этого подхода 💪. Правда я сам не фанат этой темы, но уж что попалось на жеребьёвке, то и отстояли 😂
- А дальше - алкокодинг: решали LeetCode на скорость и на количество выпитого 🍺.
Антон - топовый спикер и организатор: всё по-взрослому, но при этом весело и драйвово.
P.S. На фото - 10 самых огненных людей конфы 🔥.
С уважением,
Михаил Масягин
❤11🔥7👍4😁3
P(hD)ython
А вот и... вторая лекция! https://www.youtube.com/watch?v=Zyy_nhsrMuA На лекции поговорим о: - процессах & потоках; - атомарных операциях: - race condition & data race; - spinlock; - блокирующей синхронизации: - mutex, condvar, semaphore; - futex…
YouTube
Практика Высокопроизводительных Систем: Мультипроцессинг (лекция 03)
Практика Высокопроизводительных Систем: Мультипроцессинг (лекция 03)
Третья лекция из курса "Практика Высокопроизводительных Систем", читаемого студентам последнего курса бакалавриата и первого курса магистратуры Назарбаев Университета совместно с компанией…
Третья лекция из курса "Практика Высокопроизводительных Систем", читаемого студентам последнего курса бакалавриата и первого курса магистратуры Назарбаев Университета совместно с компанией…
Что-то мой канал об IT стал превращаться в лайф-стайл... Пора это исправить! Третья лекция!
https://www.youtube.com/watch?v=IsdbGojdeK0
Хочу заметить, что на всех известных мне курсах по системному программированию довольно много времени уделяют многопоточной синхронизации, а вот многопроцессную никто не затрагивает. Исправим и это 🤓
На лекции обсудим:
- запуск процессов: fork, vfork, spawn;
- синхронизацию процессов:
- sockets & UNIX-sockets;
- pipes & named pipes;
- message queues;
- shared memory & mmaped-files;
- semaphores;
- устройство и работу shared memory:
- mutex, semaphore, condvar в shared memory;
- lock-free & address-free data structures...
- поговорим про замечательный фильм «Умница Уилл Хантинг» 😁
GitHub курса: https://github.com/masyagin1998/hp-systems-course
Полезные ссылки к лекции:
Хорошая история System V & POSIX:
https://www.opennet.ru/docs/RUS/os_unix/
man7:
https://man7.org/linux/man-pages/man2/mmap.2.html
https://man7.org/linux/man-pages/man2/pipe.2.html
https://man7.org/linux/man-pages/man3/mkfifo.3.html
https://man7.org/linux/man-pages/man3/mq_open.3.html
https://man7.org/linux/man-pages/man3/shm_open.3.html
https://man7.org/linux/man-pages/man2/futex.2.html
https://man7.org/linux/man-pages/man3/sem_open.3.html
futex (снова):
https://man7.org/linux/man-pages/man2/futex.2.html
Как shared memory используют большие дяди:
https://www.youtube.com/watch?v=8uAW5FQtcvE
P.S. Даже если Вы не системный программист, эти материалы могут быть для Вас очень полезны. Вы узнаете как реально работают под капотом системы, о которых мы так любим говорить на System Design Interview 👍
С уважением,
Михаил Масягин
https://www.youtube.com/watch?v=IsdbGojdeK0
Хочу заметить, что на всех известных мне курсах по системному программированию довольно много времени уделяют многопоточной синхронизации, а вот многопроцессную никто не затрагивает. Исправим и это 🤓
На лекции обсудим:
- запуск процессов: fork, vfork, spawn;
- синхронизацию процессов:
- sockets & UNIX-sockets;
- pipes & named pipes;
- message queues;
- shared memory & mmaped-files;
- semaphores;
- устройство и работу shared memory:
- mutex, semaphore, condvar в shared memory;
- lock-free & address-free data structures...
- поговорим про замечательный фильм «Умница Уилл Хантинг» 😁
GitHub курса: https://github.com/masyagin1998/hp-systems-course
Полезные ссылки к лекции:
Хорошая история System V & POSIX:
https://www.opennet.ru/docs/RUS/os_unix/
man7:
https://man7.org/linux/man-pages/man2/mmap.2.html
https://man7.org/linux/man-pages/man2/pipe.2.html
https://man7.org/linux/man-pages/man3/mkfifo.3.html
https://man7.org/linux/man-pages/man3/mq_open.3.html
https://man7.org/linux/man-pages/man3/shm_open.3.html
https://man7.org/linux/man-pages/man2/futex.2.html
https://man7.org/linux/man-pages/man3/sem_open.3.html
futex (снова):
https://man7.org/linux/man-pages/man2/futex.2.html
Как shared memory используют большие дяди:
https://www.youtube.com/watch?v=8uAW5FQtcvE
P.S. Даже если Вы не системный программист, эти материалы могут быть для Вас очень полезны. Вы узнаете как реально работают под капотом системы, о которых мы так любим говорить на System Design Interview 👍
С уважением,
Михаил Масягин
❤12✍6🔥3🙏2
«На чилле, на расслабоне 😁»
Автор канала временно скрылся в отпуске, но уже с середины сентября (15-20 числа) будет шквал апдейтов: преподавание, диссертация, гранты и не только 🎉
Курение и употребление алкоголя вредит вашему здоровью! (поэтому оставьте это мне 😉)
С уважением,
Михаил Масягин
Автор канала временно скрылся в отпуске, но уже с середины сентября (15-20 числа) будет шквал апдейтов: преподавание, диссертация, гранты и не только 🎉
Курение и употребление алкоголя вредит вашему здоровью! (поэтому оставьте это мне 😉)
С уважением,
Михаил Масягин
❤14🔥11💅5👍2🤩2
«Верность заветам Ильича 🫡»
Одно из моих увлечений - история России конца XIX - начала XX веков. Когда погружаешься в её пучину, узнаёшь, что Ленин никогда не говорил «религия - ... для народа» или «мы пойдём другим путём», да и многие другие фразы.
Но зато в 1899 году, в работе «Попятное направление в русской социал-демократии», он точно писал: «учиться, учиться и учиться».
Я решил последовать этому завету Ильича и… поплыл учиться дайвингу! 🤿
Всем рекомендую, это невероятно крутой опыт! Правда, уши потом приходят в себя ещё пару часов ⏰ - но оно того точно стоит.
С уважением,
Михаил Масягин
Одно из моих увлечений - история России конца XIX - начала XX веков. Когда погружаешься в её пучину, узнаёшь, что Ленин никогда не говорил «религия - ... для народа» или «мы пойдём другим путём», да и многие другие фразы.
Но зато в 1899 году, в работе «Попятное направление в русской социал-демократии», он точно писал: «учиться, учиться и учиться».
Я решил последовать этому завету Ильича и… поплыл учиться дайвингу! 🤿
Всем рекомендую, это невероятно крутой опыт! Правда, уши потом приходят в себя ещё пару часов ⏰ - но оно того точно стоит.
С уважением,
Михаил Масягин
🔥9❤6🐳5
«Штормит рынок 🌊 - держи курс! 🧭»
А вот и первый апдейт после отпуска!
Общаюсь с коллегами-разработчиками из разных компаний - и картина у всех схожая: вакансий всё меньше, собеседования всё жёстче, рынок штормит.
Если раньше для Python Senior'а хватало умения написать декоратор с произвольным числом параметров и отличать new от init, то теперь даже на Middle-позицию могут попросить спроектировать Uber, URL-Shortener или даже собственный S3!
Но мы с @vova_dev стараемся быть маяком 🗼 в это непростое время 🚀!
Стартовал второй поток нашего курса по System Design - https://nevzorov.courses!
Я веду часть курса по СУБД и мучаю студентов на мок-интервью 😈
На моих лекциях поговорим о:
- индексах и транзакциях;
- шардировании и репликации;
- кэшах и бэкапах;
- CAP, PACELC и почему их никто не понимает (кроме Мартина Клеппманна и конечно же нас с Вовой 😅);
- и даже... сделаем RAG и устроим эпичную битву Postgres + PGBouncer vs MS SQL SQLOS!
Никакой «воды» - только практика, реальные кейсы и нюансы, которые помогут уверенно пройти System Design Interview и выйти на желаемый оффер.
P.S. Курс уже начался, так что это не реклама, а просто рассказ про то, какие мы молодцы 😄
P.P.S. Залететь на курс ещё не поздно 😂
С уважением,
Михаил Масягин
А вот и первый апдейт после отпуска!
Общаюсь с коллегами-разработчиками из разных компаний - и картина у всех схожая: вакансий всё меньше, собеседования всё жёстче, рынок штормит.
Если раньше для Python Senior'а хватало умения написать декоратор с произвольным числом параметров и отличать new от init, то теперь даже на Middle-позицию могут попросить спроектировать Uber, URL-Shortener или даже собственный S3!
Но мы с @vova_dev стараемся быть маяком 🗼 в это непростое время 🚀!
Стартовал второй поток нашего курса по System Design - https://nevzorov.courses!
Я веду часть курса по СУБД и мучаю студентов на мок-интервью 😈
На моих лекциях поговорим о:
- индексах и транзакциях;
- шардировании и репликации;
- кэшах и бэкапах;
- CAP, PACELC и почему их никто не понимает (кроме Мартина Клеппманна и конечно же нас с Вовой 😅);
- и даже... сделаем RAG и устроим эпичную битву Postgres + PGBouncer vs MS SQL SQLOS!
Никакой «воды» - только практика, реальные кейсы и нюансы, которые помогут уверенно пройти System Design Interview и выйти на желаемый оффер.
P.S. Курс уже начался, так что это не реклама, а просто рассказ про то, какие мы молодцы 😄
P.P.S. Залететь на курс ещё не поздно 😂
С уважением,
Михаил Масягин
⚡9🔥6❤2🕊2
«Коробки & EXPAR»
К сожалению, октябрь выдался совсем без постов - переезд, коробки и постоянные переносы доставок добили меня 😅. Но вот я снова в строю 🫡!
Небольшой научный апдейт: наконец вышла моя статья в «Вестнике МГТУ им. Н. Э. Баумана: сер. естественные науки» совместно с моим научным руководителем - В. Б. Горяиновым:
Вычисление асимптотической ковариационной матрицы оценки Хьюбера в обобщенной экспоненциальной авторегрессионной модели.
Журнал входит в белый список ВАК, Scopus и т.д., так что всё по понятиям 😎
А теперь замолвлю пару слов об экспоненциальной авторегрессионной модели aka EXPAR.
Несмотря на продолжительную историю, она очень активно применяется в различных инженерных и научных областях, включая трейдинг.
Мы получили её асимптотическую ковариационную матрицу для оценки Хьюбера, а затем и для произвольной M-оценки, что позволяет при известном обновляющем процессе по малому набору данных оценивать дисперсию на «большом» наборе для заданной функции потерь и тем самым значительно упрощать её выбор в прикладных задачах.
Ещё один шажок к диссертации 💪.
Для цитирования (а что, а вдруг):
Горяинов В. Б., Масягин М. М. Вычисление асимптотической ковариационной матрицы оценки Хьюбера в обобщённой экспоненциальной авторегрессионной модели. Вестник МГТУ им. Н. Э. Баумана. Сер. Естественные науки, 2025, № 4 (121), с. 23–39. EDN: QCRHHH.
P.S. На фото есть маленькая отсылка к одному из «египетских» постов - кто найдёт, тот молодец 👀
С уважением,
Михаил Масягин
К сожалению, октябрь выдался совсем без постов - переезд, коробки и постоянные переносы доставок добили меня 😅. Но вот я снова в строю 🫡!
Небольшой научный апдейт: наконец вышла моя статья в «Вестнике МГТУ им. Н. Э. Баумана: сер. естественные науки» совместно с моим научным руководителем - В. Б. Горяиновым:
Вычисление асимптотической ковариационной матрицы оценки Хьюбера в обобщенной экспоненциальной авторегрессионной модели.
Журнал входит в белый список ВАК, Scopus и т.д., так что всё по понятиям 😎
А теперь замолвлю пару слов об экспоненциальной авторегрессионной модели aka EXPAR.
Несмотря на продолжительную историю, она очень активно применяется в различных инженерных и научных областях, включая трейдинг.
Мы получили её асимптотическую ковариационную матрицу для оценки Хьюбера, а затем и для произвольной M-оценки, что позволяет при известном обновляющем процессе по малому набору данных оценивать дисперсию на «большом» наборе для заданной функции потерь и тем самым значительно упрощать её выбор в прикладных задачах.
Ещё один шажок к диссертации 💪.
Для цитирования (а что, а вдруг):
Горяинов В. Б., Масягин М. М. Вычисление асимптотической ковариационной матрицы оценки Хьюбера в обобщённой экспоненциальной авторегрессионной модели. Вестник МГТУ им. Н. Э. Баумана. Сер. Естественные науки, 2025, № 4 (121), с. 23–39. EDN: QCRHHH.
P.S. На фото есть маленькая отсылка к одному из «египетских» постов - кто найдёт, тот молодец 👀
С уважением,
Михаил Масягин
🔥12❤7👏5🥰3
«Python для собесов - 2026 🚀»
На днях я понял, что хоть мой канал и называется P(hD)ython, на нём всё ещё нет ни одного полноценного поста про
Исправим это! Запускаю серию постов, которые помогут Вам при прохождении Python-собеседований в 2026 году 😎.
Один из моих любимых вопросов на
Отвечаю! Сам по себе
Так, например,
Всё это достигается за счёт Foreign Function Interface (FFI) - механизма, позволяющего коду на одном языке вызывать функции, написанные на другом. FFI есть не только в
А теперь пример! Сегодня мы напишем свой собственный numpy с поэлементным умножением float-векторов!
Сперва реализуем функцию
Скомпилируем его как разделяемую библиотеку:
Установим
Теперь напишем
Наконец, запустим код:
Сегодня мы узнали, почему медленный🚀 !
С уважением,
Михаил Масягин
На днях я понял, что хоть мой канал и называется P(hD)ython, на нём всё ещё нет ни одного полноценного поста про
Python 😅.Исправим это! Запускаю серию постов, которые помогут Вам при прохождении Python-собеседований в 2026 году 😎.
Один из моих любимых вопросов на
Python-собесах звучит так: «если все ругают Python за скорость, то почему на нём пишут столько ML и математики?!». Удивительно, но часто на нём сыплются даже матёрые разработчики.Отвечаю! Сам по себе
Python и правда медленный (почему - отдельный вопрос), но когда дело доходит до тяжёлых вычислений, оказывается, что он вызывает функции, написанные на компилируемых языках вроде Rust, C\C++ или... Fortran!Так, например,
numpy по сути является обёрткой над С-массивами, а scipy.linalg.lapack обычно импортирует Fortran-библиотеку LAPACK! Даже pytorch, исполняясь на GPU, по факту делает это на C\C++ & CUDA ⚙️.Всё это достигается за счёт Foreign Function Interface (FFI) - механизма, позволяющего коду на одном языке вызывать функции, написанные на другом. FFI есть не только в
Python. Он имеется в Rust (extern "C" & unsafe), Java (JNI & JNA), Go (cgo) и т.д., так что идея этого поста легко обобщается и на другие языки.А теперь пример! Сегодня мы напишем свой собственный numpy с поэлементным умножением float-векторов!
Сперва реализуем функцию
fmul поэлементного умножения float-векторов на C в файле fmul.c:#include <stddef.h>
void fmul(const float* a, const float* b, float* out, size_t n) {
for (size_t i = 0; i < n; ++i) out[i] = a[i] * b[i];
}
Скомпилируем его как разделяемую библиотеку:
gcc -O3 -fPIC -shared -o libfmul.so fmul.c
Установим
cffi для поддержки FFI в Python:pip install cffi
Теперь напишем
Python-класс для работы с float-векторами и fmul в файле fmul.py:from array import array
from pathlib import Path
from cffi import FFI
# через FFI подгружаем разделяемую библиотеку в Python-код
ffi = FFI()
ffi.cdef("void fmul(const float* a,const float* b,float* out,size_t n);")
C = ffi.dlopen(str(Path(__file__).with_name("libfmul.so")))
class F32Vec:
# используем __slots__ для более компактного и производительного представления объектов класса
__slots__ = ("a",)
# требуем, чтобы наш класс конструировался из float-массива Python
def __init__(self, data):
self.a = (
data
if isinstance(data, array) and data.typecode == "f"
else array("f", data)
)
def __len__(self):
return len(self.a)
def _mul_arr(self, other):
if len(self.a) != len(other):
raise ValueError("len mismatch")
# готовим выходной массив
out = array("f", [0.0]) * len(self.a)
# вызываем через FFI C-функцию fmul
C.fmul(
ffi.from_buffer("float[]", self.a),
ffi.from_buffer("float[]", other),
ffi.from_buffer("float[]", out),
len(self.a),
)
return F32Vec(out)
# перегружаем операторы умножения, чтобы поэлементное произведение работало как в numpy
def __mul__(self, other):
if isinstance(other, F32Vec):
return self._mul_arr(other.a)
if isinstance(other, (int, float)):
return self._mul_arr(array("f", [float(other)]) * len(self.a))
return self._mul_arr(array("f", other))
__rmul__ = __mul__
def tolist(self):
return list(self.a)
def __repr__(self):
return f"F32Vec({list(self.a)})"
if __name__ == "__main__":
x = F32Vec([0.0, 0.5, 1.0, 1.5])
y = F32Vec([1.0, 2.0, 3.0, 4.0])
print(x._mul_arr(y.a))
print((x * y).tolist())
print((x * 2.0))
print((2.0 * x).tolist())
Наконец, запустим код:
python3 fmul.py
F32Vec([0.0, 1.0, 3.0, 6.0])
[0.0, 1.0, 3.0, 6.0]
F32Vec([0.0, 1.0, 2.0, 3.0])
[0.0, 1.0, 2.0, 3.0]
Сегодня мы узнали, почему медленный
Python способен быстро перемножать вектора, и как работает FFI! К сожалению, FFI громоздок и требует знания других языков. Как этого избежать - поговорим в следующем посте С уважением,
Михаил Масягин
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥10🏆5✍1
«Python для собесов - 2026 🚀»
Продолжаем подготовку к
В прошлом посте мы перенесли тяжёлую функцию из💅 посредством Python-компиляторов, таких как
У каждого из приведённых инструментов своё собственное поддерживаемое подмножество
-
- Python-примитивы (
- реже - гомогенные числовые списки (
- Вы пишете
- Далее, если компилятор работает как JIT (Just-in-Time), то он... ничего не делает 😄 (
- При исполнении
Пара важных нюансов:
- Переходы между
- Чтобы не бить проект на отдельные компилируемые функции, можно использовать режим
К примерам! Напишем функцию
Numba:
Поставим
Затем создадим файл
Запустим его:
Pythran:
Кстати, пару лет назад на одном из собесов мне пришлось писать
Сегодня мы познакомились с
С уважением,
Михаил Масягин
Продолжаем подготовку к
Python-собесам!В прошлом посте мы перенесли тяжёлую функцию из
Python в C, используя механизм FFI. Сегодня мы научимся делать это более элегантно Numba, Pythran или JAX. Они компилируют подмножество Python в машинный код для CPU или GPU, тем самым повышая производительность и оставаясь в рамках Python.У каждого из приведённых инструментов своё собственное поддерживаемое подмножество
Python, но базово можно считать, что все они способны компилировать функции, принимающие на вход, порождающие внутри себя и возвращающие:-
numpy-структуры данных, исключая object;- Python-примитивы (
int, float, complex, bool, str, ...);- реже - гомогенные числовые списки (
List[float], List[int], ...).Python-компиляторы работают следующим образом:- Вы пишете
Python-функцию и помечаете её компилируемой с помощью декоратора (Numba, JAX) или комментария (Pythran).- Далее, если компилятор работает как JIT (Just-in-Time), то он... ничего не делает 😄 (
Numba, JAX), а вот AOT-компилятор сразу приступает к «конвертации» функции в машинный код (Pythran). Недостатком второго подхода является то, что он требует задавать типы входных данных на этапе написания кода. Кстати, в Numba так тоже можно сделать.- При исполнении
Python-кода в случае AOT'а сразу запускается «бинарная» версия функции, а в случае JIT'а - функция компилируется при первом вызове, а при последующих уже используется её производительная версия. В связи с этим JIT'ованные функции важно «прогревать» - вызывать их с примером входных параметров при инициализации приложения, дабы исключить задержки компиляции при исполнении. Отмечу, что Numba и Pythran налагают ограничения только на типы входных данных, а JAX - ещё и на их размер, то есть для Numba и Pythran вызовы func([1, 2, 3]) и func([4, 5]) идентичны, а для JAX они, грубо говоря, приводят к двум разным функциям.Пара важных нюансов:
- Переходы между
Python и скомпилированным кодом дороги. Чтобы их минимизировать, следует делать компилируемые функции крупнее. Например, если в коде есть обработка данных в цикле, то лучше компилировать цикл целиком.- Чтобы не бить проект на отдельные компилируемые функции, можно использовать режим
jit в Numba: он скомпилирует лишь то, что сможет. К сожалению, его производительность непредсказуема.К примерам! Напишем функцию
fmul из прошлого поста на Numba и Pythran. А на JAX можете написать сами 😄.Numba:
Поставим
Numba:pip install numba
Затем создадим файл
numba_demo.py:import numpy as np
from numba import njit
@njit
def fmul_numba(a, b, out, n):
for i in range(n):
out[i] = a[i] * b[i]
out = np.empty(4, dtype=np.float64)
fmul_numba(np.array([0.0, 0.5, 1.0, 1.5]), np.array([1.0, 2.0, 3.0, 4.0]), out, 4)
print(out)
Запустим его:
python3 numba_demo.py
[0. 1. 3. 6.]
Pythran:
pip install pythran
fmul_pythran.py:# pythran export fmul_pythran(float[], float[], float[], int)
def fmul_pythran(a, b, out, n):
for i in range(n):
out[i] = a[i] * b[i]
pythran_demo.py:import numpy as np
from fmul_pythran import fmul_pythran
import sys
print(sys.modules["fmul_pythran"])
out = np.empty(4, dtype=np.float64)
fmul_pythran(np.array([0.0, 0.5, 1.0, 1.5]), np.array([1.0, 2.0, 3.0, 4.0]), out, 4)
print(out)
pythran fmul_pythran.py
ls
fmul_pythran.cpython-312-x86_64-linux-gnu.so fmul_pythran.py pythran_demo.py
python3 pythran_demo.py
<module 'fmul_pythran' from './fmul_pythran...so'>
[0. 1. 3. 6.]
Кстати, пару лет назад на одном из собесов мне пришлось писать
Numba-код, так что это даже более актуально, чем FFI 🤓.Сегодня мы познакомились с
Python-компиляторами, в следующем посте поговорим о том, как понять, какие именно функции нам надо компилировать! ⚙️🚀С уважением,
Михаил Масягин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍4💯3
«Сдеаноню NDA HFT на 300+ человек 😈😬»
Уже в это воскресенье я буду выступать с живой лекцией на 300+ человек на четвертьфинале ICPC в Сколково и публично расскажу о том, как построить современную и прибыльную HFT-инфраструктуру с нуля 😎!
Присоединяйтесь: https://t.me/moscowregional_news/48 🚀!
О чём поговорим:
- как выглядит живой пайплайн HFT изнутри, а не в учебных статьях;
- почему shared memory решает;
- что такое hot- и cold-path;
- что точно должен уметь делать ваш бэктест;
- и ещё о миллионе технических нюансов!
- ах да, и о том, где лучше работать в HFT 🤑
Если вдруг вы будете среди этих 300+ человек (а я точно знаю, что в этом канале сидит несколько олимпиадников ❤️), подходите после доклада - поболтаем про HFT, борьбу за микросекунды и вот это вот всё наше!
P.S. А ещё у нас будет свой собственный олимпиадный контест с уклоном в HFT и стенд с рафом, матчей и чётким мерчом для чётких разработчиков 😎
С уважением,
Михаил Масягин
Уже в это воскресенье я буду выступать с живой лекцией на 300+ человек на четвертьфинале ICPC в Сколково и публично расскажу о том, как построить современную и прибыльную HFT-инфраструктуру с нуля 😎!
Присоединяйтесь: https://t.me/moscowregional_news/48 🚀!
О чём поговорим:
- как выглядит живой пайплайн HFT изнутри, а не в учебных статьях;
- почему shared memory решает;
- что такое hot- и cold-path;
- что точно должен уметь делать ваш бэктест;
- и ещё о миллионе технических нюансов!
- ах да, и о том, где лучше работать в HFT 🤑
Если вдруг вы будете среди этих 300+ человек (а я точно знаю, что в этом канале сидит несколько олимпиадников ❤️), подходите после доклада - поболтаем про HFT, борьбу за микросекунды и вот это вот всё наше!
P.S. А ещё у нас будет свой собственный олимпиадный контест с уклоном в HFT и стенд с рафом, матчей и чётким мерчом для чётких разработчиков 😎
С уважением,
Михаил Масягин
🔥13❤10💯3⚡2
«HFT-доклад прошёл по плану 😎»
День Московского четвертьфинала ICPC позади 😌
Поговорили с многими десятками студентов, раздали тонны мерча и ещё больше ребят завлекли на наш контест 😈
Я очень волновался перед выступлением, но всё прошло просто супер! Были и доп. вопросы, и бурные овации! ❤️
Особенно приятно было видеть студентов из родной Бауманки! Ребята - вы лучшие! 🔥
P.S. Больше фото в комментариях!
P.P.S. А вот и видео https://youtu.be/i8GXmeoMmn8?t=28055 !
С уважением,
Михаил Масягин
День Московского четвертьфинала ICPC позади 😌
Поговорили с многими десятками студентов, раздали тонны мерча и ещё больше ребят завлекли на наш контест 😈
Я очень волновался перед выступлением, но всё прошло просто супер! Были и доп. вопросы, и бурные овации! ❤️
Особенно приятно было видеть студентов из родной Бауманки! Ребята - вы лучшие! 🔥
P.S. Больше фото в комментариях!
P.P.S. А вот и видео https://youtu.be/i8GXmeoMmn8?t=28055 !
С уважением,
Михаил Масягин
🔥18❤5💯4🤩1
YouTube
Архитектура HFT-компании в 2025
Архитектура HFT-компании в 2025
В видео рассказывается о том, как в построить современную, надёжную и масштабируемую инфраструктуру HFT-компании на примере FAST FORWARD - спонсора московского этапа ICPC 2025 года.
Автор доклада: Масягин Михаил Михайлович…
В видео рассказывается о том, как в построить современную, надёжную и масштабируемую инфраструктуру HFT-компании на примере FAST FORWARD - спонсора московского этапа ICPC 2025 года.
Автор доклада: Масягин Михаил Михайлович…
«Горячий HFT-доклад 🔥»
Выложил запись своего выступления про HFT-инфраструктуру с Moscow ICPC 2025 на YouTube!
https://youtu.be/us53niWItTg?si=UwSvvEsaJMDFJ_RM
Смотрите, комментируйте, поддерживайте лайками и репостами!
В докладе про HFT, FPGA, Kernel-Bypass и много-много денег 🤑!
P.S. Сразу после выступления очень сильно заболел, поэтому видео немного задержалось. Но лучше поздно, чем никогда 💪!
С уважением,
Михаил Масягин
Выложил запись своего выступления про HFT-инфраструктуру с Moscow ICPC 2025 на YouTube!
https://youtu.be/us53niWItTg?si=UwSvvEsaJMDFJ_RM
Смотрите, комментируйте, поддерживайте лайками и репостами!
В докладе про HFT, FPGA, Kernel-Bypass и много-много денег 🤑!
P.S. Сразу после выступления очень сильно заболел, поэтому видео немного задержалось. Но лучше поздно, чем никогда 💪!
С уважением,
Михаил Масягин
🔥13❤7👍5👏1
Telegram
Студенческий совет факультета ИУ
💻 Интересуешься олимпиадным программированием? Совсем скоро пройдет лекция «Архитектура HFT-компании в 2025» от Fast Forward!
ИТ-компания Fast Forward проведет лекцию для студентов, которые имеют опыт в олимпиадном или спортивном программировании. Если…
ИТ-компания Fast Forward проведет лекцию для студентов, которые имеют опыт в олимпиадном или спортивном программировании. Если…
«Эффект попугая у публичных спикеров 🦜»
Периодически посматриваю лекции и выступления известных учёных и программистов - на YouTube, в подкастах, на конференциях и т.д.
С лёгким ужасом для себя обнаружил, что большинство профессиональных спикеров на разных площадках рассказывают одно и то же: те же истории, те же тезисы, иногда даже те же слайды.
Но чем больше я на это смотрю, тем сильнее понимаю: этого не избежать. Со временем у тебя формируется стабильный набор экспертных тем, десяток любимых слайдов и пара-тройка шуток - они становятся таким же твоим неизменным атрибутом, как потрёпанный портфельчик у Жванецкого 😅
https://t.me/studsovet_iu/1319
Уже в следующую среду читаю расширенный доклад о современной HFT-инфраструктуре в Бауманке. Постепенно превращаюсь в профессионального спикера. Обещаю, что добавлю хотя бы один новый слайд и пару новых шуток, но это не точно 😄
P.S. Помню о рубрике «Python для собесов - 2026 🚀». На выходных выложу новый пост 🤝!
С уважением,
Михаил Масягин
Периодически посматриваю лекции и выступления известных учёных и программистов - на YouTube, в подкастах, на конференциях и т.д.
С лёгким ужасом для себя обнаружил, что большинство профессиональных спикеров на разных площадках рассказывают одно и то же: те же истории, те же тезисы, иногда даже те же слайды.
Но чем больше я на это смотрю, тем сильнее понимаю: этого не избежать. Со временем у тебя формируется стабильный набор экспертных тем, десяток любимых слайдов и пара-тройка шуток - они становятся таким же твоим неизменным атрибутом, как потрёпанный портфельчик у Жванецкого 😅
https://t.me/studsovet_iu/1319
Уже в следующую среду читаю расширенный доклад о современной HFT-инфраструктуре в Бауманке. Постепенно превращаюсь в профессионального спикера. Обещаю, что добавлю хотя бы один новый слайд и пару новых шуток, но это не точно 😄
P.S. Помню о рубрике «Python для собесов - 2026 🚀». На выходных выложу новый пост 🤝!
С уважением,
Михаил Масягин
🔥8❤6💯3👍1
YouTube
#FaangTalk 87 - Систем дизайн Trading платформы
Стрим посвящен построению быстрой HFT-инфраструктуры и разбору 6 основных компонентов торговой системы.
В программе:
Три кита HFT: Детальный разбор связки «Торговый робот — Gateway — Backtest».
Low Latency оптимизации: Разделение пайплайна на hot/cold path…
В программе:
Три кита HFT: Детальный разбор связки «Торговый робот — Gateway — Backtest».
Low Latency оптимизации: Разделение пайплайна на hot/cold path…
«А почему бы и... да 😂😎!»
https://youtube.com/live/F8A6Nq8c13U?feature=share
https://t.me/faangtalk_news/329
И уже в эту среду в 9 вечера по Москве самая полная, подробная и хардокрная версия HFT-доклада!
Да ещё и под соусом System Design!
Да ещё и у самих t.me/faangtalk 😎!
С уважением,
Михаил Масягин
https://youtube.com/live/F8A6Nq8c13U?feature=share
https://t.me/faangtalk_news/329
И уже в эту среду в 9 вечера по Москве самая полная, подробная и хардокрная версия HFT-доклада!
Да ещё и под соусом System Design!
Да ещё и у самих t.me/faangtalk 😎!
С уважением,
Михаил Масягин
🔥17❤6👏4💯1
«Python для собесов - 2026 🚀»
Продолжаем серию постов для
В прошлых постах мы научились ускорять
Базовый алгоритм выглядит следующим образом:
1. Замерили время выполнения кода.
2. Нашли узкое место.
3. Оптимизировали.
4. Проверили, что стало лучше. Если нет или недостаточно, то возвращаемся к пункту 1 😄.
Начнём с простейших измерений.
На собесах часто спрашивают как в коде замерить время выполнения отдельной функции. К сожалению, ответ🕚 - они не монотонны (могут перепрыгивать из-за NTP, смены поясов, гибернации), а их точность и разрешение невысоки и зависят от настроек ОС. Вместо них лучше использовать монотонные счётчики:
-
-
Пример кода:
и его запуск:
Один прогон не слишком показателен - виной тому «шум» планировщика, кэши, вызовы GC и т.д. diff счётчиков можно сохранять в массив в цикле, но лучше использовать готовый инструмент -
Пример кода:
и его вызов:
Ещё короче:
Поговорим о профилировании - определении конкретных медленных участков кода с
Запуск профайлера для программы:
Файл
И внутри
и запуск:
Существуют и другие инструменты вроде
С уважением,
Масягин Михаил
Продолжаем серию постов для
Python-собесов!В прошлых постах мы научились ускорять
Python (FFI & Python Compilers). Теперь поговорим о том, что именно нужно ускорять, потому что оптимизировать абсолютно всё - сложно, долго и дорого (да зачастую и не нужно) 😵.Базовый алгоритм выглядит следующим образом:
1. Замерили время выполнения кода.
2. Нашли узкое место.
3. Оптимизировали.
4. Проверили, что стало лучше. Если нет или недостаточно, то возвращаемся к пункту 1 😄.
Начнём с простейших измерений.
На собесах часто спрашивают как в коде замерить время выполнения отдельной функции. К сожалению, ответ
time() встречается неприлично часто. Однако time() это так называемые «wall clock» -
perf_counter_ns() - точный и монотонный аналог time() (для общих случаяев);-
process_time_ns() - только время на CPU (удобен для числодробилок).Пример кода:
from time import perf_counter_ns as pc_ns
def work(n):
s = 0
for i in range(n):
s += i*i
return s
if __name__ == "__main__":
t = pc_ns()
work(1000000)
dt = pc_ns() - t
print(f"{dt/1e6:.3f} ms")
и его запуск:
python3 pc_ns_demo.py
23.767 ms
Один прогон не слишком показателен - виной тому «шум» планировщика, кэши, вызовы GC и т.д. diff счётчиков можно сохранять в массив в цикле, но лучше использовать готовый инструмент -
timeit. Он позволяет запускать много раз функции или даже программы, задавая как число прогонов в замере (number), так и число самих замеров (repeat), тем самым получая устойчивое распределение времени.Пример кода:
import timeit
from pc_ns_demo import work
rs = timeit.repeat(lambda: work(1000000), number=10, repeat=10)
print("runs:")
for i, t in enumerate(rs, 1):
print(f" {i:02d}: {t/10*1e3:.3f} ms")
bs = min(rs)
print(f"min: {bs/10*1e3:.3f} ms")
и его вызов:
python3 timeit_demo.py
runs:
01: 23.849 ms
...
10: 23.650 ms
min: 23.650 ms
Ещё короче:
python3 -m timeit -n 10 -r 10 -u msec -s "from pc_ns_demo import work" "work(1000000)"
10 loops, best of 10: 23.5 msec per loop
Поговорим о профилировании - определении конкретных медленных участков кода с
cProfile. Он позволяет подсчитать число вызовов каждой функции (ncalls), её целевое и суммарное время исполнения (без/с учётом вызовов функций внутри) (tottime, percall, cumtime, percall) с привязкой к определению (filename:...).Запуск профайлера для программы:
python3 -m cProfile -o prof.bin pc_ns_demo.py
24.467 ms
python -c "import pstats;p=pstats.Stats('prof.bin');p.sort_stats('tottime').print_stats(20)"
Fri Dec 19 06:00:17 2025 prof.bin
7 function calls in 0.024 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.024 0.024 0.024 0.024 pc_ns_demo.py:3(work)
...
Файл
prof.bin можно визуализировать пакетом snakeviz - скрин в комментах.И внутри
python-кода:import cProfile
import pstats
from io import StringIO
from pc_ns_demo import work
def kek(a, b, c):
return work(a) + work(b) + work(c)
pr = cProfile.Profile()
pr.enable()
print(kek(1000000, 2000000, 3000000))
pr.disable()
s = StringIO()
pstats.Stats(pr, stream=s).sort_stats("cumtime").print_stats(5)
print(s.getvalue())
и запуск:
python3 cprofile_demo.py
11999993000001000000
6 function calls in 0.146 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.146 0.146 /home/mikhail/cprofile_demo.py:6(kek)
3 0.146 0.049 0.146 0.049 /home/mikhail/pc_ns_demo.py:3(work)
...
Существуют и другие инструменты вроде
py-spy и scalene. Они позволяют периодически дампить callstack процесса, а scalene показывает ещё и аллокации 🤓. Вот мы и познакомились с джентльменским набором тайминга и профайлинга в Python! ⚙️🚀С уважением,
Масягин Михаил
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4💯3⚡1❤1
«Розыгрыш 🎰, дедлайны ❌ и Рождество 🎄»
Ну что, классика жанра: к дедлайну я, как всегда, не успел - поэтому розыгрыш будет не к Новому году, а… к Рождеству 😅
В честь праздников разыгрываю среди подписчиков бумажную книгу Майкла Льюиса «Flash Boys: A Wall Street Revolt» - самое то, чтобы начать плавное погружение в HFT, попивая какао ☕️ у рождественской ёлки 🎄
Если вы в Москве - с радостью вручу лично и угощу кофе/пивом/какао 🍾
Как участвовать:
- подписаться на канал (нас уже 150+ - спасибо вам ❤️);
- нажать кнопку «Участвую!» под постом;
- сделать репост в своё сообщество, добавив друзей по ссылке и т.д. - шанс на победу x2 💰;
- ждать итогов 7 января 🎁.
С уважением,
Михаил Масягин
Ну что, классика жанра: к дедлайну я, как всегда, не успел - поэтому розыгрыш будет не к Новому году, а… к Рождеству 😅
В честь праздников разыгрываю среди подписчиков бумажную книгу Майкла Льюиса «Flash Boys: A Wall Street Revolt» - самое то, чтобы начать плавное погружение в HFT, попивая какао ☕️ у рождественской ёлки 🎄
Если вы в Москве - с радостью вручу лично и угощу кофе/пивом/какао 🍾
Как участвовать:
- подписаться на канал (нас уже 150+ - спасибо вам ❤️);
- нажать кнопку «Участвую!» под постом;
- сделать репост в своё сообщество, добавив друзей по ссылке и т.д. - шанс на победу x2 💰;
- ждать итогов 7 января 🎁.
С уважением,
Михаил Масягин
❤13⚡4🎄3🥰2☃1💯1🍓1
«Итоги 2025: Python 3.14 🐍 и немного моей жизни 🎄 »
Ну что, под Новый Год самое время подвести итоги. 7 октября 2025 вышла финальная версия
1. Kill GIL! Как известно, у змей - раздвоенный язык, и
2.
3. Отладка современного
4. Инкрементальный GC - осталось лишь 2 поколения объектов: молодое и старое, и на каждом цикле GC сканируется всё молодое и эвристически лишь часть старого. За счёт этого работа сборщика мусора стала предсказуемее и стабильнее.
5. Ряд оптимизаций байткода
6. t-strings - всё те же
7. Аннотации больше не тормозят import'ы, так как вычисляются отложенно, а ещё их можно анализировать через
8. Все мы знаем, что
9. И много-много чего ещё!
Все фичи подробно разберём в постах 2026 года!
Ну и пару слов о моих итогах 😅:
1. Начал разбирать Кабанчика 🐷 на System Design World с @vova_dev!
2. Запустили с @vova_dev наш курс по System Design! Уже прошло 3 потока и на подходе 4!
3. + 1 новая статья ВАК/WoS и Conference Paper в IEEE - за последнее отдельное спасибо @Kvassir!
4. Выступил с лекциями по HFT на ICPC, FaangTalk (@volyx ❤️) и в Бауманке!
5. Пережил ремонт и даже несмотря на него побывал в новой стране - Вьетнаме!
6. Познакомился со столькими замечательными людьми: @vova_dev, @LooksOfTheMoon, @terapsyda - вы лучшие ❤️!
7. Начал активно собесить не только питонистов, но и растовчан на работе 💪!
8. Завёл канал, где вы сейчас и читаете этот пост! Нас уже 160+ 👫!
Были и факапы, главный - диссер с конца 2025 года переехал на весну 2026 года 😢.
К чему я это всё? Думаю, к тому, что надо работать, фигачить, выкладываться на 110%! Достичь всего - нереально, многого - очень сложно, но возможно 💪!
С Новым Годом, друзья 🎄! Соблюдаем Work-Job Balance и идём седлать огненного коня 2026 года 🎠!
С уважением,
Михаил Масягин
Ну что, под Новый Год самое время подвести итоги. 7 октября 2025 вышла финальная версия
Python 3.14.0, меняющая как внутреннее устройство языка, так и добавляющая в него новые полезные функции. Число и значимость изменений сравнимы с 3.4.0, подарившей нам asyncio в 2014 году!1. Kill GIL! Как известно, у змей - раздвоенный язык, и
Python теперь - не исключение. Начиная с 3.14.0 существуют 2 сборки CPython - стандартная 3.14 и... 3.14t без GIL! Теперь, пусть и с рядом новых трудностей, мы можем достигать в Python истинного параллелизма потоков исполнения прямо как в C\C++, Java и т.д.!2.
concurrent.interpreters - до тех пор, пока 3.14t не станет стандартом запуск нескольких независимых интерпретаторов всё ещё актуален. Что же, теперь мы можем делать это в рамках одного процесса, минимизируя траты на IPC!3. Отладка современного
Python-кода стала ещё проще и приятнее - к целевому процессу можно подключиться на лету без необходимости его перезапуска!4. Инкрементальный GC - осталось лишь 2 поколения объектов: молодое и старое, и на каждом цикле GC сканируется всё молодое и эвристически лишь часть старого. За счёт этого работа сборщика мусора стала предсказуемее и стабильнее.
5. Ряд оптимизаций байткода
Python, включая Tail Calling.6. t-strings - всё те же
f-strings, но теперь завёрнутые в отдельный класс!7. Аннотации больше не тормозят import'ы, так как вычисляются отложенно, а ещё их можно анализировать через
annotationlib.8. Все мы знаем, что
zstd - это база, а теперь это знает и Python! zstandard теперь входит в стандартную поставку интерпретатора!9. И много-много чего ещё!
Все фичи подробно разберём в постах 2026 года!
Ну и пару слов о моих итогах 😅:
1. Начал разбирать Кабанчика 🐷 на System Design World с @vova_dev!
2. Запустили с @vova_dev наш курс по System Design! Уже прошло 3 потока и на подходе 4!
3. + 1 новая статья ВАК/WoS и Conference Paper в IEEE - за последнее отдельное спасибо @Kvassir!
4. Выступил с лекциями по HFT на ICPC, FaangTalk (@volyx ❤️) и в Бауманке!
5. Пережил ремонт и даже несмотря на него побывал в новой стране - Вьетнаме!
6. Познакомился со столькими замечательными людьми: @vova_dev, @LooksOfTheMoon, @terapsyda - вы лучшие ❤️!
7. Начал активно собесить не только питонистов, но и растовчан на работе 💪!
8. Завёл канал, где вы сейчас и читаете этот пост! Нас уже 160+ 👫!
Были и факапы, главный - диссер с конца 2025 года переехал на весну 2026 года 😢.
К чему я это всё? Думаю, к тому, что надо работать, фигачить, выкладываться на 110%! Достичь всего - нереально, многого - очень сложно, но возможно 💪!
С Новым Годом, друзья 🎄! Соблюдаем Work-Job Balance и идём седлать огненного коня 2026 года 🎠!
С уважением,
Михаил Масягин
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🎉4💯3🎄2☃1🎅1
