P(hD)ython
214 subscribers
39 photos
26 links
О Python, PhD, распределённых системах и не только

Автор - Михаил Масягин (@masyagin1998):
- Python Lead в NDA HFT;
- преподаватель в Бауманке;
- эксперт по СУБД System Design World;
- любитель PhD и авторегрессии.
Download Telegram
«Как похорошела Бауманка...»

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

Я работаю в Бауманке совместителем уже 2 года и сейчас продлеваюсь на третий год. До осени 2024 года я был оформлен по ТК РФ на основном месте работы в НТЦ «Атлас», но уже год работаю как ИП. Если Вы окажетесь в моей ситуации (ИП + совместительство в вузе) и у вас потребуют справку с основного места работы, то... вы можете выписать её себе сами 😅

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

Очень хороший гайд доступен в блоге Совкомбанка (не реклама, но от копейки не откажусь 😁)

С уважением,
Михаил Масягин
7🔥6👍3
Делаем с Вовой Невзоровым трейлер разбора 8 главы книги Мартина Клеппмана «Высоконагруженные Приложения» - «Проблемы распределённых систем» и немного кринжуем 😁

Я регулярно выступаю на канале https://t.me/system_design_world со стримами, где разбираю Клеппмана aka «кабанчика» 🐗

Половина глав пройдена, так что скоро мы приступим к новой крутой книге по System Design!

🎥 Записи стримов можно посмотреть на YouTube.

С уважением,
Масягин Михаил
5🔥5👍2
P(hD)ython
Во вступлении я сказал, что много где преподаю, и это чистая правда 😋 Недавно я провёл пилотный запуск моего курса «Практика высокопроизводительных систем», читаемого студентам последнего курса бакалавриата и первого курса магистратуры Назарбаев Университета…
А вот и... вторая лекция!

https://www.youtube.com/watch?v=Zyy_nhsrMuA

На лекции поговорим о:
- процессах & потоках;
- атомарных операциях:
- race condition & data race;
- spinlock;
- блокирующей синхронизации:
- mutex, condvar, semaphore;
- futex syscall;
- о... языке Go!
- кэшах в многопоточных программых: MESI

GitHub курса: https://github.com/masyagin1998/hp-systems-course
В коде всё ещё много ошибок 😁

ТПМС - отличный курс от Романа Липовского из МФТИ по Concurrency. Глубже ещё ничего не встречал. Нам будут актуальны лекции:
- ТПМС / Лекция 2 / Взаимное исключение
- ТПМС / Семинар 3 / Futex, Memory Orders

Как устроен PAUSE в процессоре:
https://c9x.me/x86/html/file_module_x86_id_232.html

man7: mutex, condvar, semaphore
https://man7.org/linux/man-pages/man3/pthread_mutex_lock.3.html
https://man7.org/linux/man-pages/man3/pthread_cond_wait.3.html
https://man7.org/linux/man-pages/man3/sem_init.3.html
https://man7.org/linux/man-pages/man2/futex.2.html

futex:
https://github.com/torvalds/linux/blob/master/kernel/futex/waitwake.c

Гуляем по коду Go (не пугайтесь, знать наизусть не надо, я тоже не знаю):
https://github.com/golang/go/blob/master/src/sync/mutex.go
https://github.com/golang/go/blob/master/src/internal/sync/mutex.go
https://github.com/golang/go/tree/master/src/internal/race
https://github.com/golang/go/blob/d37624881f60f79dfba4ef81661024bee9dfc2d3/src/runtime/lock_futex.go

MESI:
https://lwn.net/Articles/252125/
https://www.youtube.com/watch?v=3NmyqUmvlbQ&list=PL4_hYwCyhAva37lNnoMuBcKRELso5nvBm&index=7
https://www.scss.tcd.ie/jeremy.jones/vivio/caches/MESIHelp.htm

P.S. Даже если Вы не системный программист, эти материалы могут быть для Вас очень полезны. Не так давно я собесился в пару известных HFT/MFT (успешно), и на скринингах/первых собесах помимо вопросов о памяти (1 лекция) было много вопросов и по многопоточной синхронизации.

С уважением,
Михаил Масягин
🔥12👍52
«Экспертные заключения и котики»

Мне регулярно приходится получать экспертные заключения на статьи, которые мы публикуем с научным руководителем (Владимир Борисович, здравствуйте! 👋)

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

В этот раз у меня были только стикеры с котиками 😺 — и… всё подписали меньше чем за неделю! Похоже, на факультете тоже любят котиков 🐈😻🐈‍⬛️

Своего рода лайф-хак 😁

С уважением,
Михаил Масягин

P.S. А ведь можно провести A/B-тест, подавая статьи с котиками и без, и сравнивать время их подписания. А потом написать об этом статью и... подать её тоже С КОТИКАМИ! 😺
🔥9😁5👍2
«FPGA & HFT»

Я ни разу не специалист в сфере FPGA, но за последние пару недель несколько подписчиков одновременно спрашивали меня о том, как FPGA используется в трейдинге. Делюсь с вами тем, что знал и что узнал 😅

FPGA (Field Programmable Gate Array) - это микросхема, в которой вы сами программируете логику на уровне логических блоков и соединений между ними. Если ядро CPU выполняет инструкции последовательно (опуская детали ILP и SIMD), то FPGA сразу раскладывает их в виде аппаратного конвейера, где множество операций идут параллельно, и с минимальными задержками.

Безусловно, передача данных между FPGA и CPU вносит дополнительную задержку, но грамотная архитектура с буферизацией, минимизацией пересылаемого объёма данных и zero-copy позволяет сделать оверхед пренебрежимо малым.

В HFT (High-Frequency Trading) FPGA чаще применяют для работы с классическими биржами, которые предоставляют коллокацию - размещение ваших торговых серверов в дата-центрах биржи, компактные бинарные протоколы и т.д., нежели с криптобиржами. На них можно эффективно реализовать:

- кодирование и декодирование маркет-даты (ITCH, OUCH и прочие бинарные данные);
- построение книги заявок;
- быстрые проверки лимитов и позиций до отправки заявки;
- генерацию несложных торговых сигналов и фильтрацию биржевых шумов;
- в отдельных случаях значительную часть торговой логики!

И всё это до того, как данные попадут на CPU!

К сожалению, есть у такого подхода и ряд существенных недостатков. Ключевые из них:
- сложность разработки и отладки, и, как следствие, значительное повышение time-to-market;
- проблемы с поиском FPGA-разработчиков - их рынок очень маленький, особенно по сравнению с нами - питонистами 😅;
- чрезвычайно (!!!) высокая стоимость FPGA-решений.

В комментариях приложены ссылки на статьи по теме и даже... пара русскоязычных вакансий на стыке FPGA и HFT, которые я нашёл ☺️

С уважением,
Михаил Масягин
🔥8💯53🤔2
«Курсы & Мерч»

Как и положено любому уважающему себя айтишнику, добрую половину моего гардероба составляет «мерч» - худи, футболки, кепки, значки. Удобно и практично 😅

Пару дней назад пришли особенно ценные для меня экземпляры - футболка и стикеры курса по System Design от System Design World, где я выступал в роли соавтора: читал лекции по базам данных, делился опытом прохождения System Design Interview и, конечно, отвечал на вопросы. До этого я преподавал только в вузах, а тут - интенсивный практический курс для разработчиков с опытом. Было волнительно, но ни разу не пожалел! 💪

Курс получился живой и интересный: обсуждали как строить RAG'и и DWH, ругали CAP и PACELC, пытались чинить конфликты в multi-master'ах и холиварили на тему того, можно ли всё запихать в Neo4j 😂

Огромное спасибо @vova_dev за доверие и возможность поучаствовать в таком крутом проекте, а участникам - за вопросы и жаркие обсуждения!

P.S. Инсайд: второй поток на подходе 👀

С уважением,
Михаил Масягин
👍95🔥3
Заглянул на огонёк к @vova_dev на канале System Design World!

Поговорили о траназакциях, выкинули букву I из ACID и узнали, что REPEATABLE READ в PostgreSQL вовсе и не REPEATABLE READ... 😅
Буду рад вашим просмотрам и комментариям под роликом на YouTube! ❤️

P.S. Дел было ооочень много, но скоро продолжу радовать вас новыми лекциями по системному программированию на своём канале 💪

С уважением,
Масягин Михаил
👍92🤩2
Forwarded from System Design World (Владимир в IT)
🧠💡 Транзакция в СУБД. Клеппманн 7 глава. BEGIN!

✔️ Что такое транзакция?
✔️ Составляющие ACID в реальности
✔️ Уровни изоляций в СУБД
✔️ Подробней о Read Commited
✔️ Особенности Репликации в контексте транзакций
✔️ Применение полученных знаний в System Design Интервью и на работе
✔️ Варианты прокачки в СУБД в контексте System Design

COMMIT

Всё это за насыщенные 55 минут.
Автор разбора - Михаил Масягин.
Преподаватель System Design Интенсива.

👀 Смотреть - Youtube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4🎉4
«System Design & Counter Strike»

Встретился с ребятами из System Design World — обсудили System Design, рынок IT в РФ в 2025, банки, HFT и стартапы. Обменялись мыслями и смешными историями из индустрии 🚀.

Для баланса сыграли вместе в VR-версию Counter Strike: я бегал с пулемётом и прикрывал @vova_dev, идущего с дробовиком в атаку на вражеские позиции 🔫! Никогда бы не подумал, что играя в CS можно вспотеть не меньше, чем в тренажёрном зале 😅

С уважением,
Михаил Масягин
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥74
«Если ваши ночные релизы не похожи на это, не зовите меня 😁»
🔥11💅4🙏3😁1
«Ну что, работяги, пора становиться волками!» 🐺

#профсоюзная
https://unionconf.ru/

Я редко выбираюсь на конференции, но мимо такого события пройти не смог - IT-конференция Профсоюзная от Антона Назарова и «Осознанной меркантильности».

Скажу честно: история с одновременной тайной работой на нескольких работодателей мне не близка. У меня был другой опыт - почти три года я совмещал работу в американско-дубайском стартапе и российском ИБ, причём обе стороны знали друг о друге. Для меня «осознанная меркантильность» — это не про количество работодателей, а про уважение к своему времени, умение считать деньги и трезвый взгляд на профессию и карьеру 🚀.

Очень хочу послушать выступления Олега Козырева и Максима Аверина, так как и сам совместно с @voda_dev занимаюсь образованием в сфере IT 📚.

Если тоже окажетесь там - пишите, будет классно пересечься 👋

P.S. Говорят, там будет конкурс волчьих костюмов — может, прикупить маску?.. 😅🐺

С уважением,
Михаил Масягин
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93👍2😱1
Ауф 🐺🐺🐺

С великим и ужасным @M0rtyMerr!!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14🥰3👍2
P(hD)ython
«Ну что, работяги, пора становиться волками!» 🐺 #профсоюзная https://unionconf.ru/ Я редко выбираюсь на конференции, но мимо такого события пройти не смог - IT-конференция Профсоюзная от Антона Назарова и «Осознанной меркантильности». Скажу честно: история…
«Ну что, работяги, волки вернулись с охоты!» 🐺

#профсоюзная
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…
Что-то мой канал об 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 👍

С уважением,
Михаил Масягин
126🔥3🙏2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥8🎉54🥰2
«На чилле, на расслабоне 😁»

Автор канала временно скрылся в отпуске, но уже с середины сентября (15-20 числа) будет шквал апдейтов: преподавание, диссертация, гранты и не только 🎉

Курение и употребление алкоголя вредит вашему здоровью! (поэтому оставьте это мне 😉)

С уважением,
Михаил Масягин
14🔥11💅5👍2🤩2