Набросайте нам идей проектов на сиспрошный хакатон!
А заодно подписывайтесь на канал сиспро, там и мемы про системщину и математику будут, спасибо @bsielwk)
А заодно подписывайтесь на канал сиспро, там и мемы про системщину и математику будут, спасибо @bsielwk)
❤🔥2❤1
Forwarded from Системное программирование ММФ НГУ
Уже через неделю пройдет первое в этом семестре сиспрошное мероприятие Хакатон!
Это событие, когда мы дружно запираемся в офисе, разбиваемся по командам, выбираем тему для проекта и весь день кодим в свое удовольствие!
Для нас это шикарная возможность отвлечься от повседневной рутины, пообщаться, и бахнуть какой-нибудь интересной проектик)
Как это прошло в том году, можете посмотреть здесь: https://youtu.be/V886KappFwA?si=_qp9LRIYygubNmar
А в комментариях к этому посту можете поделиться своими идеями для проекта на хакатон! Может, именно ваша идея принесет какой-то из наших команд победу в этом году!
Это событие, когда мы дружно запираемся в офисе, разбиваемся по командам, выбираем тему для проекта и весь день кодим в свое удовольствие!
Для нас это шикарная возможность отвлечься от повседневной рутины, пообщаться, и бахнуть какой-нибудь интересной проектик)
Как это прошло в том году, можете посмотреть здесь: https://youtu.be/V886KappFwA?si=_qp9LRIYygubNmar
А в комментариях к этому посту можете поделиться своими идеями для проекта на хакатон! Может, именно ваша идея принесет какой-то из наших команд победу в этом году!
🔥3❤2
Чем хороши воскресенья: в них нет созвонов => можно и код пописать 😏
🥴10👍7🤣3
Аааа, семестр начинается через 10 минут!
И какой семестр: начинается третий сезон алгосов и второй сезон плюсов на английском! Будет жарко.
И какой семестр: начинается третий сезон алгосов и второй сезон плюсов на английском! Будет жарко.
🔥15❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Так, а как работать после 4 пар в универе с утра?
🔥11❤2
Хуйня эти ваши speaking clubs, хотите прогрессировать, попробуйте прочитать семестр лекций по плюсам на английском.
❤17💯5🔥1🎃1
Искал одну старую картинку (вот эту, помните эту историю про Мэтта Тейлора и его рубашку, да?), случайно увидел свои посты 2012 года... ну я, конечно, тогда был прям агрессивно тупым. Надо как-то законодательно запретить читать свои старые посты, чтобы не расстраиваться.
Хотя с пары постов и картинок я даже посмеялся, неплохо, уже тогда были все задатки твиттерского.
Хотя с пары постов и картинок я даже посмеялся, неплохо, уже тогда были все задатки твиттерского.
❤9🫡4😁1
Хотите паззлер?
Вешают на меня ишуй, говорят: вот, смотри, тест зависает намертво, копай. Я смотрю: ишуй старый, месяц назад и правда зависал тест. Проверяю на ночной сборке - все работает!
Смотрю в асм (да, я сразу смотрю в асм), за месяц изменилось по факту одно место.
Было:
Стало:
На этой ноте я говорю "ах ты сука", начинаю смеяться и зову компиляторщиков посмотреть на их труды.
Ваши идеи, в чем здесь проблема? Почему тест зависал? Почему перестал зависать? Подсказка: тест на некотором managed языке.
Вечером напишу разгадку, кто догадается быстрее и напишет в коментах, тому респект и лайки.
P.S. наши, кто уже видел описание ишуя или просто мой смех гиены в офисе, молчим.
#дух_машины
Вешают на меня ишуй, говорят: вот, смотри, тест зависает намертво, копай. Я смотрю: ишуй старый, месяц назад и правда зависал тест. Проверяю на ночной сборке - все работает!
Смотрю в асм (да, я сразу смотрю в асм), за месяц изменилось по факту одно место.
Было:
mov QWORD PTR [rbp+0x10],r14
mov QWORD PTR [rbp+0x18],0x0
Стало:
mov QWORD PTR [rcx+0x10],r14
mov r14d,0x0
mov QWORD PTR [rcx+0x18],r14
На этой ноте я говорю "ах ты сука", начинаю смеяться и зову компиляторщиков посмотреть на их труды.
Ваши идеи, в чем здесь проблема? Почему тест зависал? Почему перестал зависать? Подсказка: тест на некотором managed языке.
Вечером напишу разгадку, кто догадается быстрее и напишет в коментах, тому респект и лайки.
P.S. наши, кто уже видел описание ишуя или просто мой смех гиены в офисе, молчим.
#дух_машины
🤪9❤1👍1🤡1👀1
Алло, это отладочная?
Хотите паззлер? Вешают на меня ишуй, говорят: вот, смотри, тест зависает намертво, копай. Я смотрю: ишуй старый, месяц назад и правда зависал тест. Проверяю на ночной сборке - все работает! Смотрю в асм (да, я сразу смотрю в асм), за месяц изменилось по…
Разгадка на самом деле очень простая.
Что за тест:
К сожалению это был один из тех откровенно ублюдочных тестов, которые проверяют, что объект, который стал недостижим, будет собран GC.
Работает по очень простой схеме: создаем объект с финализатором, записываем единственную ссылку на него в локал => перетираем эту ссылку каким-нибудь другим значением => крутимся в цикле и ждем, пока финализатор сработает.
—
Почему тест ублюдочный:
Не существует никаких гарантий, что недостижимый объект будет собран. Про GC вообще почти ничего не говорится в спеке, например, языка Java. Это такое секретное внутреннее знание, что трассирующие GC вот так должны работать, но бывают исключения.
Например: обычно во время своей работы GC находит множество корневых объектов, используя информацию от компилятора. Дескать вот здесь, в этой точке на
Но иногда GC может строить корневое множество поконсервативнее: смотреть на все регистры и слоты стека, находить там что-то похожее на ссылки и соответствующие объекты якорить. Это не очень надежно (как мы увидим чуть ниже), но все еще корректно.
Именно в этом методе была такая ситуация: корневое множество строилось консервативно.
—
Что произошло (почему зависало):
На
Дальше крутимся в цикле, ждем срабатывание финализатора, а его все нет (GC раз за разом признает объект живым из-за этой протухшей ссылки на
Что произошло (почему перестало зависать):
За этот месяц в компиляторе проделали большую работу, которая к сожалению в том числе привела к появлению ненужной пересылки. Вместо того, чтобы записать
Это, конечно, пессимизация чистой воды, которую надо чинить. Но нашу то проблему это полечило! Ведь больше в
—
Что было дальше:
Посмеялся, показал компиляторщикам, они очень возмутились, говорят, что надо срочно чинить! А я отвечаю: зачем, отличная работа, вы же баг починили 😂
Ну это шутка, на самом деле нужно здесь гасить консерватизм, мы это сделаем (он вообще случайно здесь вылез). Это то, конечно, просто плохой тест, но такое и в реальных приложениях может сослужить плохую службу и привести к неограниченному потреблению памяти. Рассказывал про это, например, вот здесь.
—
Паззлер первым разгадал @sergey_kachkin, респект!
#дух_машины
Что за тест:
К сожалению это был один из тех откровенно ублюдочных тестов, которые проверяют, что объект, который стал недостижим, будет собран GC.
Работает по очень простой схеме: создаем объект с финализатором, записываем единственную ссылку на него в локал => перетираем эту ссылку каким-нибудь другим значением => крутимся в цикле и ждем, пока финализатор сработает.
—
Почему тест ублюдочный:
Не существует никаких гарантий, что недостижимый объект будет собран. Про GC вообще почти ничего не говорится в спеке, например, языка Java. Это такое секретное внутреннее знание, что трассирующие GC вот так должны работать, но бывают исключения.
Например: обычно во время своей работы GC находит множество корневых объектов, используя информацию от компилятора. Дескать вот здесь, в этой точке на
r14
лежит живая ссылка на объект, значит ты этот объект добавляй в корневое множество и размечай. Но иногда GC может строить корневое множество поконсервативнее: смотреть на все регистры и слоты стека, находить там что-то похожее на ссылки и соответствующие объекты якорить. Это не очень надежно (как мы увидим чуть ниже), но все еще корректно.
Именно в этом методе была такая ситуация: корневое множество строилось консервативно.
—
Что произошло (почему зависало):
На
r14
оставалась ссылка на объект, который на самом деле уже помер. Это мы в исходном коде перетерли ссылку на него, далеко не факт, что после всех оптимизация, она моментально ушла и из r14
.Дальше крутимся в цикле, ждем срабатывание финализатора, а его все нет (GC раз за разом признает объект живым из-за этой протухшей ссылки на
r14
). Вот вам и зависание.Что произошло (почему перестало зависать):
За этот месяц в компиляторе проделали большую работу, которая к сожалению в том числе привела к появлению ненужной пересылки. Вместо того, чтобы записать
0
сразу в [rbp+0x18]
, компилятор сначала услужливо сохранил его на r14
. Имеет право, ведь r14
уже не используется, объект то мертв!Это, конечно, пессимизация чистой воды, которую надо чинить. Но нашу то проблему это полечило! Ведь больше в
r14
нет ссылки на мертвый объект, там нолик. Так что GC объект собирает, финализатор срабатывает, тест проходит.—
Что было дальше:
Посмеялся, показал компиляторщикам, они очень возмутились, говорят, что надо срочно чинить! А я отвечаю: зачем, отличная работа, вы же баг починили 😂
Ну это шутка, на самом деле нужно здесь гасить консерватизм, мы это сделаем (он вообще случайно здесь вылез). Это то, конечно, просто плохой тест, но такое и в реальных приложениях может сослужить плохую службу и привести к неограниченному потреблению памяти. Рассказывал про это, например, вот здесь.
—
Паззлер первым разгадал @sergey_kachkin, респект!
#дух_машины
YouTube
Иван Углянский - Ходячие объекты-мертвецы, или GC всегда прав
Автоматическое управление памятью — одна из основных особенностей Java и других managed языков. При этом в спецификации про GC написано очень мало: как именно собирать мусор каждой конкретной реализации JVM, предлагается решать самостоятельно. В результате…
😈10👍4🔥2
- Пойдешь ко мне в штат?
- Кем?
- Криэйтором.
- Это типа творцом? Если перевести?
- Криэйтором, Вава, криэйтором, — сказал он. — Творцы нам тут нахуй не нужны.
—
Я вот раньше всячески повторял это Пелевенскую цитату, подразумевая, что нужно быть готовым на работе заниматься не только интересными творческими делами, но еще и скучной рутиной.
И в целом то все так, но со временем я стал гораздо больше ценить именно "творцов". Да, с ними бывает сложно; да, иногда чувствуешь себя воспитателем в детском садике; да, скучную рутину все еще нужно кому-то разбирать и да, их бывает трудно на это уговорить.
Зато какие-же крутые вещи они могут сделать, если им дать определенную степень свободы и хорошенько подтолкнуть в правильную сторону! Разве это менее ценно, чем монотонное закрытие мелких тасков по расписанию?
Понятно, что всем творцами не быть, кому-то и приземленные фичи надо криэйтить, но что тут скажешь, для того нам и дано разделение труда.
💯13❤4