Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
275 - Telegram Web
Telegram Web
Сегодня в универе празднуют день препода, а на работе у нас получился импровизированный день ментора с поздравлением менторов от наших менти :)

Смотрите, как живой!
❤‍🔥39😍2
я и названия рыб
😁303💯2
Существует ли вообще жизненная ситуация, которую нельзя описать набором стикеров из вот этого стикерпака Disco Elysium?

Картинка с лучшим коллабом бонусом.
17
Прочитал про еще одно дерзкое вмешательство государства в дела бизнеса и понял, что я в общем-то совершенно и не против. С учетом того, со сколькими компаниями я за последнее время поговорил ну вот фактически про тоже самое (я говорил про стажировки для студентов, это тоже часть описанного в статье предложения), и как тяжело это шло местами.
👍8🤔6👎2🤬2
– Очень надо срочно залить небольшую правку, горим! Поревьюишь?
– Это не запланировано, дел до жопы, давай не на этой неделе.
– Но залить надо сейчас!! Глянь, ну одним глазочком, ну пожалуйста!
– Бля, ну давай.

*скидывает ревью на +1755 -1*

– Ты зачем ассерт в чужом коде закомментировал?
– Ну так он после моих правок срабатывал, а мне надо, чтобы все работало)
– Так может неспроста? Может ты что-то не так сделал?
– Да не знаю я, но он какой-то сложный, я не разобрался. Давай потом, а сейчас без него закоммитаем? Очень нужно!
– Так ты сейчас весь рантайм сломаешь, это один из главных ассертов вообще.
– Т.е. не пустишь?
– Нет, конечно!
– ... ну ладно тогда :(



Что за чудный день 🔥
🔥28🤪14😁5😢4😭4
Написать последний пост из серии про кранчи оказалось сильно сложнее, чем первый и второй.

Причина проста: написать про старый, пережитый, возможно даже отрефлексированный кранч – это намного проще, чем про тот, в котором ты сейчас. Писать о текущем моменте – это похоже на то, как Гатс дрался один против 100 войнов в Берсерке (все еще аниме, которое попадает в меня точнее всего). Он там как раз в этот момент пытался рефлексировать, что же он делает, почему дерется один против сотни, ради чего, ради кого? И чем больше думал, тем больше ударов пропускал, поэтому в конце просто отбросил все мысли и сосредоточился на бое (в результате смог победить).

Поэтому ограничусь предысторией, сухим описанием кранча, да парой мыслей о том, чем он отличается от остальных. Речь, конечно, про кранч преподавательский. ↓
👍64
Я преподавал на ММФ программирование почти 10 лет (с одним уходом в саббатикал на семестр): со своего пятого курса до конца 2021-ого года. За это время я многому научился сам; встретил огромное количество крутейших студентов, многие из которых стали моими коллегами и друзьями; подготовил два неплохих курса по С и плюсам (со вставками алгосов) и даже смог поучаствовать в некоторых реформах в преподавании на кафедре.

Было неплохо, но после 10 лет захотелось чего-то... большего? Нет, не совсем, скорее другого. Понимаете, ММФ такой факультет, что большей части людей там все-таки было просто неинтересно программировать, им важнее было что-то другое (математика, например, что прекрасно!). Но я то хотел показывать людям красоту именно проги, а особенно дизайна языков программирования и, конечно, их реализации. Почти в каждой моей группе находилось несколько человек, кто эту красоту понимали, проникались ей и решали связать с этим жизнь. С нами или нет – это уже было для меня не так важно. Но, к сожалению, остальным студентам приходилось терпеть (я никогда не мог остановиться и делал лекции все более обширными).

И вот, спустя 10 лет, я предложил Вове Соловьеву перестать бороться с ветряными мельницами, а просто долбануть по ним из гаубицы. Вместо попыток выцыганить себе еще один семестр для какого-нибудь нового курса, мы решили сделать целый новый профиль, на котором за 4 года мы добавим 16 новых курсов, но только для одной отдельно взятой группы. Людей же в эту группу будем отбирать еще до 1 курса по принципу: "с каждым из них мы хотим работать".

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

Но пост не об этом, пост про кранчи. Как вы думаете, что началось в жизни моей и некоторых других преподавателей на профиле с приближением первого семестра? Ну конечно же, жесточайший кранч. ↓
19🔥4👍2
Если чуть более детально:

1) Новые курсы. Если вы когда-нибудь готовили новый курс, то понимаете, какая это изнуряющая нагрузка: каждую неделю вынь да положь новую лекцию. Хорошая лекция по моему опыту – это около 8 часов работы. Где взять дополнительные 8 часов в неделю, когда ты уже работаешь 40 часов? Правильно, у тебя сразу отнимается один выходной. Что уж говорить про подготовку новых задач: для многих курсов подготовить оригинальную задачу – это настоящее искусство, что также занимает огромное количество времени. Вот в таком режиме (без по крайней мере части, а иногда и всех выходных) я прожил два года подряд, сделав с нуля 4 новых курса, которые продолжаю вести и улучшать и сейчас.

2) Административная работа. Профиль не может возникнуть и жить сам по себе, нужно решать кучу организационных и бюрократических вопросов: всякие учебные планы, составление расписаний, набор студентов, отчисление студентов и т.д. и т.п. Это все нужно кому-то делать (мне тут очень помогают в деканате, за что им огромное спасибо, я бы никогда сам не затащил, но все-таки – мне этим нужно заниматься тоже).

3) Эмоциональная нагрузка. Я в целом то подзаряжаюсь от общения со студентами, но а) люди очень сложные, иногда взаимодействие идет совсем не так гладко, как хотелось бы, бывают и обиды и разочарования; б) я очень боюсь подвести студентов, это давит. Обычно тут скорее выхожу в плюс или хотя бы получаю игру с нулевой суммой, но бывают тяжелые деньки.



Думаю, вполне понятно, как все это влияет на остальную жизнь. Ущерб отношениям, например, еще только предстоит оценить, но уже очевидно, что он огромный. Вспоминаю, как рассказал Кате про идею профиля, а она ответила, что разведется со мной, если я это сделаю) В шутку, наверное. Догадываюсь, что для большинства людей собеседник из меня теперь тоже так себе, т.к. я очень быстро скатываюсь в разговоры об образовании (ну в лучшем случае об алгосах или плюсах). Не могу сказать, что мной довольны и на основной работе: нет-нет, да мне ставят на вид, что вот, что-то я многовато провожу времени в универе (и это с учетом того, что я всегда отрабатываю все часы).

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

Так зачем это все? ↓
21
А очень просто: именно это кажется мне сейчас важнейшим делом в моей жизни (боже, как же пафосно звучит, хочется рот помыть, но вот так). Не беру в расчет семью, я именно про самореализацию. Это такая простая, понятная цель: сделать мир лучше, чем он был до меня. Возвращаясь к метафоре Берсерка: это аналог замка, о котором мечтал Гриффит, ради которого он и завоевывал континент.

А что такое какой-то там небольшой кранч по сравнению с мечтой, а?



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

Ну а я что? Я справлюсь. Побегу, пожалуй, дальше махать мечом и побеждать свою сотню. До рассвета еще далеко.
🔥3117🫡4👍3🙏2
Кстати, про рассветы 🌅
🔥243
Есть в libc такая функция dl_iterate_phdr. Она позволяет проитерироваться по всем загруженным so-шкам и на каждой выполнить колбэк, который ей передается в качестве параметра. Удобная, классная штука!

А вот как вы думаете, что будет, если из таких вот колбэков позвать dlopen: функцию, которая загружает новые so-шки. Т.е. в момент итерации по коллекции сошек добавить туда новые элементы? Понятно, что идея звучит не блестяще, но все-таки: что именно случится? Сегфолт? UB? Зависнет? Какое-нибудь красивое поведение, типа "вернуть на очередной итерации специальное значение, которое обозначает, что коллекция изменилась"? (ага, щас прям, размечтался, ты не в Java)

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

Вот представьте, живет и работает себе тред №1, никак с вашим кодом не связанный. В какой-то момент решает помереть, позвав pthread_exit. Но вот pthread_exit во время своей работы может попытаться подгрузить библиотечку libgcc_s.so (нашел время!), конечно же через dlopen => dlopen в свою очередь первым делом захватит лок на загрузку: dl_load_lock => а потом, если мы реально смогли загрузить библиотеку, попытаемся добавить результат в список загруженных сошек, мы возьмем еще один лок: dl_load_write_lock.

А в этот момент тред №2 такой классный шарится по всем сошкам через dl_iterate_phdr и зовет для каждого из них ваш кастомный колбэк. Конечно же, чтобы пробегать по списку он сначала берет dl_load_write_lock, иначе вдруг список поменяется? А наш кастомный колбэк зовет dlopen, который, как мы уже знаем, первым делом возьмет dl_load_lock. Дедлок!

Понятно, что пример можно было бы намного проще написать: любой другой тред, который пойдет звать dlopen – наш конкурент. Но от бедных тредов-доходяг я такого не ожидал. А случалось все это на терминации рантайма, где как раз все и умирают (очень интересное состояние рантайма).

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



Смешно, что раньше в нашей кодовой базе на вызове dl_iterate_phdr висела кое-что подсказывающая компилятору пометка @Quick. Потом ее убрали, и проблема начала проявляться. Вопрос веры, получается: пока верили, что вызов быстрый, он и заканчивался быстро, без всяких дедлоков. Стоило усомниться, и вот мы здесь.

#дух_машины
👍13👾8🙈3
Окей, гугл, как правильно бить грушу.
🤯9🔥3🌚2🎄1
Одна из самых безумных мыслей, которая время от времени приходит мне в голову, звучит, как: "нужно сделать третий семестр курса по алгоритмам".
🔥13🌚3🤔21💯1
И не говори, дорогая, денёк интересный.
12
Под конец семестра мой стол становится похож на склад магазина книг по computer science. И это еще даже не половина 📚
🔥30🤩7🤮1💋1🖕1
🫡
🔥17🫡11😭4😁3😢2
Завтра наш внутрикомандный хакатон, а значит осталась всего одна ночь, чтобы придумать проект!

Все-таки появилась у меня одна идея для шалости, надо немного только обмозговать за ночь 😏
🔥17
2025/07/09 02:49:15
Back to Top
HTML Embed Code: