Сегодня в универе празднуют день препода, а на работе у нас получился импровизированный день ментора с поздравлением менторов от наших менти :)
Смотрите, как живой!
Смотрите, как живой!
❤🔥39😍2
Алло, это отладочная?
Последнее время чувствую себя Гермионой, которая набрала все факультативы на третьем курсе. Только почему-то Макгонагалл забыла мне при этом выдать маховик времени. Так что остается только молча охреневать от нагрузки и выглядеть, как уставший зомби. Ах да…
Ситуация изменилась ❤️
❤🔥27🔥9😁6
Существует ли вообще жизненная ситуация, которую нельзя описать набором стикеров из вот этого стикерпака Disco Elysium?
Картинка с лучшим коллабом бонусом.
Картинка с лучшим коллабом бонусом.
❤17
Прочитал про еще одно дерзкое вмешательство государства в дела бизнеса и понял, что я в общем-то совершенно и не против. С учетом того, со сколькими компаниями я за последнее время поговорил ну вот фактически про тоже самое (я говорил про стажировки для студентов, это тоже часть описанного в статье предложения), и как тяжело это шло местами.
Forbes.ru
Минцифры решило обязать сотрудников IT-компаний преподавать в вузах
IT-компании с выручкой от 1 млрд рублей могут обязать заняться поддержкой вузов, узнал «Коммерсантъ». Бизнес будет должен помогать в техническом оснащении вузов, направлять туда своих сотрудников в качестве преподавателей и организовывать стажировки
👍8🤔6👎2🤬2
– Очень надо срочно залить небольшую правку, горим! Поревьюишь?
– Это не запланировано, дел до жопы, давай не на этой неделе.
– Но залить надо сейчас!! Глянь, ну одним глазочком, ну пожалуйста!
– Бля, ну давай.
*скидывает ревью на +1755 -1*
– Ты зачем ассерт в чужом коде закомментировал?
– Ну так он после моих правок срабатывал, а мне надо, чтобы все работало)
– Так может неспроста? Может ты что-то не так сделал?
– Да не знаю я, но он какой-то сложный, я не разобрался. Давай потом, а сейчас без него закоммитаем? Очень нужно!
– Так ты сейчас весь рантайм сломаешь, это один из главных ассертов вообще.
– Т.е. не пустишь?
– Нет, конечно!
– ... ну ладно тогда :(
—
Что за чудный день 🔥
– Это не запланировано, дел до жопы, давай не на этой неделе.
– Но залить надо сейчас!! Глянь, ну одним глазочком, ну пожалуйста!
– Бля, ну давай.
*скидывает ревью на +1755 -1*
– Ты зачем ассерт в чужом коде закомментировал?
– Ну так он после моих правок срабатывал, а мне надо, чтобы все работало)
– Так может неспроста? Может ты что-то не так сделал?
– Да не знаю я, но он какой-то сложный, я не разобрался. Давай потом, а сейчас без него закоммитаем? Очень нужно!
– Так ты сейчас весь рантайм сломаешь, это один из главных ассертов вообще.
– Т.е. не пустишь?
– Нет, конечно!
– ... ну ладно тогда :(
—
Что за чудный день 🔥
🔥28🤪14😁5😢4😭4
Написать последний пост из серии про кранчи оказалось сильно сложнее, чем первый и второй.
Причина проста: написать про старый, пережитый, возможно даже отрефлексированный кранч – это намного проще, чем про тот, в котором ты сейчас. Писать о текущем моменте – это похоже на то, как Гатс дрался один против 100 войнов в Берсерке (все еще аниме, которое попадает в меня точнее всего). Он там как раз в этот момент пытался рефлексировать, что же он делает, почему дерется один против сотни, ради чего, ради кого? И чем больше думал, тем больше ударов пропускал, поэтому в конце просто отбросил все мысли и сосредоточился на бое (в результате смог победить).
Поэтому ограничусь предысторией, сухим описанием кранча, да парой мыслей о том, чем он отличается от остальных. Речь, конечно, про кранч преподавательский. ↓
Причина проста: написать про старый, пережитый, возможно даже отрефлексированный кранч – это намного проще, чем про тот, в котором ты сейчас. Писать о текущем моменте – это похоже на то, как Гатс дрался один против 100 войнов в Берсерке (все еще аниме, которое попадает в меня точнее всего). Он там как раз в этот момент пытался рефлексировать, что же он делает, почему дерется один против сотни, ради чего, ради кого? И чем больше думал, тем больше ударов пропускал, поэтому в конце просто отбросил все мысли и сосредоточился на бое (в результате смог победить).
Поэтому ограничусь предысторией, сухим описанием кранча, да парой мыслей о том, чем он отличается от остальных. Речь, конечно, про кранч преподавательский. ↓
👍6❤4
Я преподавал на ММФ программирование почти 10 лет (с одним уходом в саббатикал на семестр): со своего пятого курса до конца 2021-ого года. За это время я многому научился сам; встретил огромное количество крутейших студентов, многие из которых стали моими коллегами и друзьями; подготовил два неплохих курса по С и плюсам (со вставками алгосов) и даже смог поучаствовать в некоторых реформах в преподавании на кафедре.
Было неплохо, но после 10 лет захотелось чего-то... большего? Нет, не совсем, скорее другого. Понимаете, ММФ такой факультет, что большей части людей там все-таки было просто неинтересно программировать, им важнее было что-то другое (математика, например, что прекрасно!). Но я то хотел показывать людям красоту именно проги, а особенно дизайна языков программирования и, конечно, их реализации. Почти в каждой моей группе находилось несколько человек, кто эту красоту понимали, проникались ей и решали связать с этим жизнь. С нами или нет – это уже было для меня не так важно. Но, к сожалению, остальным студентам приходилось терпеть (я никогда не мог остановиться и делал лекции все более обширными).
И вот, спустя 10 лет, я предложил Вове Соловьеву перестать бороться с ветряными мельницами, а просто долбануть по ним из гаубицы. Вместо попыток выцыганить себе еще один семестр для какого-нибудь нового курса, мы решили сделать целый новый профиль, на котором за 4 года мы добавим 16 новых курсов, но только для одной отдельно взятой группы. Людей же в эту группу будем отбирать еще до 1 курса по принципу: "с каждым из них мы хотим работать".
О том, что происходило после, я подробно рассказывал, например, здесь. Если коротко: я уверен, что у нас получается. Не без сложностей, не сразу все выходит идеально, но мы продвигаемся. Сейчас наш первый набор приближается к своему шестому семестру, и мы ими очень гордимся, как и младшими поколениями.
Но пост не об этом, пост про кранчи. Как вы думаете, что началось в жизни моей и некоторых других преподавателей на профиле с приближением первого семестра? Ну конечно же, жесточайший кранч. ↓
Было неплохо, но после 10 лет захотелось чего-то... большего? Нет, не совсем, скорее другого. Понимаете, ММФ такой факультет, что большей части людей там все-таки было просто неинтересно программировать, им важнее было что-то другое (математика, например, что прекрасно!). Но я то хотел показывать людям красоту именно проги, а особенно дизайна языков программирования и, конечно, их реализации. Почти в каждой моей группе находилось несколько человек, кто эту красоту понимали, проникались ей и решали связать с этим жизнь. С нами или нет – это уже было для меня не так важно. Но, к сожалению, остальным студентам приходилось терпеть (я никогда не мог остановиться и делал лекции все более обширными).
И вот, спустя 10 лет, я предложил Вове Соловьеву перестать бороться с ветряными мельницами, а просто долбануть по ним из гаубицы. Вместо попыток выцыганить себе еще один семестр для какого-нибудь нового курса, мы решили сделать целый новый профиль, на котором за 4 года мы добавим 16 новых курсов, но только для одной отдельно взятой группы. Людей же в эту группу будем отбирать еще до 1 курса по принципу: "с каждым из них мы хотим работать".
О том, что происходило после, я подробно рассказывал, например, здесь. Если коротко: я уверен, что у нас получается. Не без сложностей, не сразу все выходит идеально, но мы продвигаемся. Сейчас наш первый набор приближается к своему шестому семестру, и мы ими очень гордимся, как и младшими поколениями.
Но пост не об этом, пост про кранчи. Как вы думаете, что началось в жизни моей и некоторых других преподавателей на профиле с приближением первого семестра? Ну конечно же, жесточайший кранч. ↓
YouTube
Иван Углянский — Системными программистами не рождаются
Даты ближайшего фестиваля TechTrain будут анонсированы позднее.
Подробнее о TechTrain: https://jrg.su/YR8JKw
— —
Системными программистами становятся. И мне есть, что об этом рассказать.
Как обучить компиляторщика? Как подготовить JVM-инженера? Мы в Excelsior…
Подробнее о TechTrain: https://jrg.su/YR8JKw
— —
Системными программистами становятся. И мне есть, что об этом рассказать.
Как обучить компиляторщика? Как подготовить JVM-инженера? Мы в Excelsior…
❤19🔥4👍2
Если чуть более детально:
1) Новые курсы. Если вы когда-нибудь готовили новый курс, то понимаете, какая это изнуряющая нагрузка: каждую неделю вынь да положь новую лекцию. Хорошая лекция по моему опыту – это около 8 часов работы. Где взять дополнительные 8 часов в неделю, когда ты уже работаешь 40 часов? Правильно, у тебя сразу отнимается один выходной. Что уж говорить про подготовку новых задач: для многих курсов подготовить оригинальную задачу – это настоящее искусство, что также занимает огромное количество времени. Вот в таком режиме (без по крайней мере части, а иногда и всех выходных) я прожил два года подряд, сделав с нуля 4 новых курса, которые продолжаю вести и улучшать и сейчас.
2) Административная работа. Профиль не может возникнуть и жить сам по себе, нужно решать кучу организационных и бюрократических вопросов: всякие учебные планы, составление расписаний, набор студентов, отчисление студентов и т.д. и т.п. Это все нужно кому-то делать (мне тут очень помогают в деканате, за что им огромное спасибо, я бы никогда сам не затащил, но все-таки – мне этим нужно заниматься тоже).
3) Эмоциональная нагрузка. Я в целом то подзаряжаюсь от общения со студентами, но а) люди очень сложные, иногда взаимодействие идет совсем не так гладко, как хотелось бы, бывают и обиды и разочарования; б) я очень боюсь подвести студентов, это давит. Обычно тут скорее выхожу в плюс или хотя бы получаю игру с нулевой суммой, но бывают тяжелые деньки.
—
Думаю, вполне понятно, как все это влияет на остальную жизнь. Ущерб отношениям, например, еще только предстоит оценить, но уже очевидно, что он огромный. Вспоминаю, как рассказал Кате про идею профиля, а она ответила, что разведется со мной, если я это сделаю) В шутку, наверное. Догадываюсь, что для большинства людей собеседник из меня теперь тоже так себе, т.к. я очень быстро скатываюсь в разговоры об образовании (ну в лучшем случае об алгосах или плюсах). Не могу сказать, что мной довольны и на основной работе: нет-нет, да мне ставят на вид, что вот, что-то я многовато провожу времени в универе (и это с учетом того, что я всегда отрабатываю все часы).
Ну и кстати, да, как вы понимаете, здесь то точно нет никакого "провала менеджмента", ответствен за этот кранч целиком и полностью я сам.
Так зачем это все? ↓
1) Новые курсы. Если вы когда-нибудь готовили новый курс, то понимаете, какая это изнуряющая нагрузка: каждую неделю вынь да положь новую лекцию. Хорошая лекция по моему опыту – это около 8 часов работы. Где взять дополнительные 8 часов в неделю, когда ты уже работаешь 40 часов? Правильно, у тебя сразу отнимается один выходной. Что уж говорить про подготовку новых задач: для многих курсов подготовить оригинальную задачу – это настоящее искусство, что также занимает огромное количество времени. Вот в таком режиме (без по крайней мере части, а иногда и всех выходных) я прожил два года подряд, сделав с нуля 4 новых курса, которые продолжаю вести и улучшать и сейчас.
2) Административная работа. Профиль не может возникнуть и жить сам по себе, нужно решать кучу организационных и бюрократических вопросов: всякие учебные планы, составление расписаний, набор студентов, отчисление студентов и т.д. и т.п. Это все нужно кому-то делать (мне тут очень помогают в деканате, за что им огромное спасибо, я бы никогда сам не затащил, но все-таки – мне этим нужно заниматься тоже).
3) Эмоциональная нагрузка. Я в целом то подзаряжаюсь от общения со студентами, но а) люди очень сложные, иногда взаимодействие идет совсем не так гладко, как хотелось бы, бывают и обиды и разочарования; б) я очень боюсь подвести студентов, это давит. Обычно тут скорее выхожу в плюс или хотя бы получаю игру с нулевой суммой, но бывают тяжелые деньки.
—
Думаю, вполне понятно, как все это влияет на остальную жизнь. Ущерб отношениям, например, еще только предстоит оценить, но уже очевидно, что он огромный. Вспоминаю, как рассказал Кате про идею профиля, а она ответила, что разведется со мной, если я это сделаю) В шутку, наверное. Догадываюсь, что для большинства людей собеседник из меня теперь тоже так себе, т.к. я очень быстро скатываюсь в разговоры об образовании (ну в лучшем случае об алгосах или плюсах). Не могу сказать, что мной довольны и на основной работе: нет-нет, да мне ставят на вид, что вот, что-то я многовато провожу времени в универе (и это с учетом того, что я всегда отрабатываю все часы).
Ну и кстати, да, как вы понимаете, здесь то точно нет никакого "провала менеджмента", ответствен за этот кранч целиком и полностью я сам.
Так зачем это все? ↓
❤21
А очень просто: именно это кажется мне сейчас важнейшим делом в моей жизни (боже, как же пафосно звучит, хочется рот помыть, но вот так). Не беру в расчет семью, я именно про самореализацию. Это такая простая, понятная цель: сделать мир лучше, чем он был до меня. Возвращаясь к метафоре Берсерка: это аналог замка, о котором мечтал Гриффит, ради которого он и завоевывал континент.
А что такое какой-то там небольшой кранч по сравнению с мечтой, а?
—
Весь этот пост может прозвучать депрессивно, но я думаю, что все хорошо. У нас мощнейшая команда, делать профиль с которой для меня – огромное удовольствие и честь. Наши студенты – умницы, с ними банально интересно говорить, обсуждать те самые языки программирования и их реализации, а уж следить за их успехами – это просто очень круто. Наблюдать же, как все курсы складываются сквозь семестры в единый паззл про наше видение красоты – это прекрасно.
Ну а я что? Я справлюсь. Побегу, пожалуй, дальше махать мечом и побеждать свою сотню. До рассвета еще далеко.
А что такое какой-то там небольшой кранч по сравнению с мечтой, а?
—
Весь этот пост может прозвучать депрессивно, но я думаю, что все хорошо. У нас мощнейшая команда, делать профиль с которой для меня – огромное удовольствие и честь. Наши студенты – умницы, с ними банально интересно говорить, обсуждать те самые языки программирования и их реализации, а уж следить за их успехами – это просто очень круто. Наблюдать же, как все курсы складываются сквозь семестры в единый паззл про наше видение красоты – это прекрасно.
Ну а я что? Я справлюсь. Побегу, пожалуй, дальше махать мечом и побеждать свою сотню. До рассвета еще далеко.
🔥31❤17🫡4👍3🙏2
Есть в
А вот как вы думаете, что будет, если из таких вот колбэков позватьага, щас прям, размечтался, ты не в Java)
Вполне допускаю, что может и сегфолтнуться, но вчера отлаживал прекрасный дедлок, который был вызван вот таким кодом. Прекрасно в нем то, дедлокнулся такой код со случайным тредом-доходягой.
Вот представьте, живет и работает себе тред №1, никак с вашим кодом не связанный. В какой-то момент решает помереть, позвав
А в этот момент тред №2 такой классный шарится по всем сошкам через
Понятно, что пример можно было бы намного проще написать: любой другой тред, который пойдет звать
Да, кстати, в мане для
—
Смешно, что раньше в нашей кодовой базе на вызове dl_iterate_phdr висела кое-что подсказывающая компилятору пометка
#дух_машины
libc
такая функция dl_iterate_phdr. Она позволяет проитерироваться по всем загруженным so-шкам и на каждой выполнить колбэк, который ей передается в качестве параметра. Удобная, классная штука! А вот как вы думаете, что будет, если из таких вот колбэков позвать
dlopen
: функцию, которая загружает новые so-шки. Т.е. в момент итерации по коллекции сошек добавить туда новые элементы? Понятно, что идея звучит не блестяще, но все-таки: что именно случится? Сегфолт? UB? Зависнет? Какое-нибудь красивое поведение, типа "вернуть на очередной итерации специальное значение, которое обозначает, что коллекция изменилась"? (Вполне допускаю, что может и сегфолтнуться, но вчера отлаживал прекрасный дедлок, который был вызван вот таким кодом. Прекрасно в нем то, дедлокнулся такой код со случайным тредом-доходягой.
Вот представьте, живет и работает себе тред №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
Одна из самых безумных мыслей, которая время от времени приходит мне в голову, звучит, как: "нужно сделать третий семестр курса по алгоритмам".
🔥13🌚3🤔2❤1💯1