Представляете, я таки досмотрел Ковбоя Бибопа (98-ого года).
Это была моя третья или четвертая попытка, и даже она заняла несколько месяцев. Обычно мне не хватало терпения, хотя и очень нравилось его смотреть. [Лично мне] нужно было прям меланхоличное настроение, чтобы перейти к очередному эпизоду. Зато, когда оно таки случалось (не так уж редко в последнее время), Бибоп подходил просто идеально.
Что тут скажешь, не зря это аниме считается шедевром. История каждого из четырех (ладно, пяти!) главных персонажей прописана просто, но как-то очень душевно, веришь им и реально сочувствуешь. Как Фэй в конце не хотела отпускать Спайка на верную смерть... эх. Кажется, проникся ее историей больше всех.
Сеттинг космического вестерна, конечно, своеобразный, но я то его очень люблю (тем забавнее, что я сначала посмотрел Светлячка, а уж потом Бибопа). Рисовка супер приятная, особенно ближних боев, а уж музыка... да, это шедевр по всем параметрам.
Самое забавное, что в сериале реально не чувствуется кульминации. Вот совсем. Это меланхоличное состояние на фоне бесконечного экшена просто продолжается все 26 эпизодов. Но от этого совершенно не становится хуже, наоборот, это делает его целостным.
Короче, кайф. Если вдруг вы такой же тормоз, как я, и почему-то не смотрели, исправляйтесь.
#министерство_культуры
Это была моя третья или четвертая попытка, и даже она заняла несколько месяцев. Обычно мне не хватало терпения, хотя и очень нравилось его смотреть. [Лично мне] нужно было прям меланхоличное настроение, чтобы перейти к очередному эпизоду. Зато, когда оно таки случалось (не так уж редко в последнее время), Бибоп подходил просто идеально.
Что тут скажешь, не зря это аниме считается шедевром. История каждого из четырех (ладно, пяти!) главных персонажей прописана просто, но как-то очень душевно, веришь им и реально сочувствуешь. Как Фэй в конце не хотела отпускать Спайка на верную смерть... эх. Кажется, проникся ее историей больше всех.
Сеттинг космического вестерна, конечно, своеобразный, но я то его очень люблю (тем забавнее, что я сначала посмотрел Светлячка, а уж потом Бибопа). Рисовка супер приятная, особенно ближних боев, а уж музыка... да, это шедевр по всем параметрам.
Самое забавное, что в сериале реально не чувствуется кульминации. Вот совсем. Это меланхоличное состояние на фоне бесконечного экшена просто продолжается все 26 эпизодов. Но от этого совершенно не становится хуже, наоборот, это делает его целостным.
Короче, кайф. Если вдруг вы такой же тормоз, как я, и почему-то не смотрели, исправляйтесь.
#министерство_культуры
❤🔥19✍2👍2🙈1
Алло, у нас тут Владимиров и Елизаров выступают на одной сцене в один день на студне SnowOne, как слышно? Ну и что, что я сам позвонил, пора бежать, все, пока.
Нет, серьезно, студенты, такое просто нельзя пропускать. Я очень доволен этой программой.
Нет, серьезно, студенты, такое просто нельзя пропускать. Я очень доволен этой программой.
❤17👍2❤🔥1🔥1
Forwarded from SnowOne-канал
Опубликованы спикеры студенческого дня!
Напоминаем, что на SnowOne есть специальный студенческий день 28 февраля, куда можно попасть бесплатно, если: а) вы студент (в таком случае при регистрации выбирайте билет Academic), б) вы посетитель основного дня и у вас есть билет.
Что же на нем будет происходить в этом году?
1) Константин Владимиров, про которого мы уже рассказывали в анонсе хардкорных спикеров, будет рассказывать про особенности статических компиляторов (доклад особенно подойдет студентам, кому интересно системное программирование);
2) Екатерина Шевчук поможет разобраться, что такое CI/CD, и как это поможет в вашей будущей карьере разработчика;
3) Алексей Овсянников покажет самые популярные Java и Kotlin библиотеки для написания Telegram Bots;
4) Роман Елизаров объяснит, зачем было создавать язык Kotlin: это рассказ из первых уст одного из главных дизайнеров и разработчиков Kotlin и автора механизма корутин в языке.
Получается такой супер-сплав практической пользы и уникальных знаний, не пропустите!
Больше деталей про доклады студенческого дня можно посмотреть вот здесь, а зарегистрироваться/приобрести билеты все еще можно вот здесь.
Напоминаем, что на SnowOne есть специальный студенческий день 28 февраля, куда можно попасть бесплатно, если: а) вы студент (в таком случае при регистрации выбирайте билет Academic), б) вы посетитель основного дня и у вас есть билет.
Что же на нем будет происходить в этом году?
1) Константин Владимиров, про которого мы уже рассказывали в анонсе хардкорных спикеров, будет рассказывать про особенности статических компиляторов (доклад особенно подойдет студентам, кому интересно системное программирование);
2) Екатерина Шевчук поможет разобраться, что такое CI/CD, и как это поможет в вашей будущей карьере разработчика;
3) Алексей Овсянников покажет самые популярные Java и Kotlin библиотеки для написания Telegram Bots;
4) Роман Елизаров объяснит, зачем было создавать язык Kotlin: это рассказ из первых уст одного из главных дизайнеров и разработчиков Kotlin и автора механизма корутин в языке.
Получается такой супер-сплав практической пользы и уникальных знаний, не пропустите!
Больше деталей про доклады студенческого дня можно посмотреть вот здесь, а зарегистрироваться/приобрести билеты все еще можно вот здесь.
🔥17👍1
Алло, это отладочная?
Давненько меня не вызывали в деканат на разговор, конечно.
Вы чего так разволновались все, не отчисляют меня, все норм)
🥰25🍌2😁1
вопрос, который мучает меня второй день: воруют ли цыганские дети поней?
🤔17🤣5🙈4🤡1
Алло, это отладочная?
He was a javac boy, but she was a gcc girl
Контекст: многие компиляторщики считают javac не совсем настоящим, а таким, довольно второсортным компилятором.
Соответственно разработчик javac это, конечно, в каком-то компиляторщик, но такой... особенный.
Как человек, который написал кучу кода в форке джавака (не всегда по своей воле и совершенно не по любви) и который не считает себя компиляторщиком, полностью с этой точкой зрения согласен.
Соответственно разработчик javac это, конечно, в каком-то компиляторщик, но такой... особенный.
Как человек, который написал кучу кода в форке джавака (не всегда по своей воле и совершенно не по любви) и который не считает себя компиляторщиком, полностью с этой точкой зрения согласен.
👍1
Forwarded from Алиса копается
#dev
Все мы знаем, что разыменовывать нулевой указатель плохо, потому что программа крашнется и вообще это UB, отстаньте. На самом деле, за этим утверждением скрывается много всякого интересного и неожиданного.
Начнем с того, что есть нуль, а есть ноль.
Как вытекает из предыдущего, ничего особенного в адресе
Впрочем, одно дело — UB по стандарту, другое — поведение на практике. В прошлом стандарт C воспринимался скорее как гайдлайн, чем правила. Старые компиляторы не делали умных оптимизаций, и вообще Ритчи не подразумевал, что за счет UB будут оптимизировать, поэтому на многих платформах разыменование нулевого указателя только и делало, что читало значение в памяти по адресу
В современном мире писать по адресу, совпадающему с адресом
Хочется верить, что по крайней мере на современных платформах разыменовывание
Потом эту лавочку прикрыли, и даже не потому, что это скрывает баги в программах на C. Ну, точнее, ровно поэтому, только программой на C здесь выступает само ядро. Достаточно большое количество ядерных эксплоитов того времени заключалось в том, чтобы дата рейсом или иным методом заставить ядро разыменовать нулевой указатель. Поскольку внутри ядра (была) видна память текущего процесса, это приводило к тому, что пользовательская память начинала интерпретироваться как ядерные структуры. Чтобы этого избежать, сейчас Linux не позволяет аллоцировать страницы ниже адреса
На этом история с разыменованием нуля могла бы закончиться: в Windows ограничение на память на малых адресах было уже давно, в Linux ввели, других операционных систем не существует. Но хипстеры придумали WebAssembly, и поскольку с ним вопрос об изоляции внутри контейнера не встает, по адресу
Такие дела.
Все мы знаем, что разыменовывать нулевой указатель плохо, потому что программа крашнется и вообще это UB, отстаньте. На самом деле, за этим утверждением скрывается много всякого интересного и неожиданного.
Начнем с того, что есть нуль, а есть ноль.
NULL
не обязан иметь адрес 0
и, например, на некоторых архитектурах и интерпретаторах C это не так. Прагматичным людям из POSIX это не нравится, поэтому там NULL
всегда имеет адрес 0
. Впрочем, не обязательно даже уходить далеко в прошлое: amdgcn определяет NULL
как -1
, так что встретиться с таким сегодня вполне реально. Типичное определение NULL
как (void*)0
на таких машинах все еще работает, потому что (void*)0
стандарт определяет равным NULL
, но вот int x = 0; (void*)x
портабельно NULL
не даст.Как вытекает из предыдущего, ничего особенного в адресе
NULL
а нет, и в железе никто не запрещает существовать странице по адресу 0
. Железу плевать на то, какие правила накладывает стандарт C, и поэтому, например, на процессорах x86 в real mode по адресам 0
— 256
хранятся таблицы прерываний. Разыменовывать адрес 0
в C все еще UB, но вот 1
разыменовать никто не запрещает.Впрочем, одно дело — UB по стандарту, другое — поведение на практике. В прошлом стандарт C воспринимался скорее как гайдлайн, чем правила. Старые компиляторы не делали умных оптимизаций, и вообще Ритчи не подразумевал, что за счет UB будут оптимизировать, поэтому на многих платформах разыменование нулевого указателя только и делало, что читало значение в памяти по адресу
0
. Компилятор C на HP-UX (это были еще те времена, когда свободных компиляторов C не было, и под каждую платформу были свои компиляторы, зачастую платные), например, давал опцию: мапать страницу по адресу 0
, чтобы *(int*)NULL
возвращало 0
(гарантированно! без современного понимания UB!), или не мапать, чтобы падало.В современном мире писать по адресу, совпадающему с адресом
NULL
, опасно прям совсем. В embedded, где такое периодически приходится делать, у этой проблемы есть два решения: молоток и микроскоп. Во-первых, можно написать код для записи по адресу 0
на ассемблере, железо сожрет. Во-вторых, иногда железо игнорирует старшие биты адреса, поэтому можно записывать не по адресу 0
, а, например, по адресу 0x80000000
, который железо воспримет так же, а компилятор проинтерпретирует корректно.Хочется верить, что по крайней мере на современных платформах разыменовывание
NULL
(если его не выкинет компилятор, конечно) приведет к сегфолту или чему-то подобному. Это не так. Во-первых, Linux поддерживает флаг personality MMAP_PAGE_ZERO
, аллоцирующий страницу по адресу 0
на старте программы для совместимости с System V. Во-вторых, даже без этого вы можете с помощью mmap
аллоцировать страницу по адресу 0
руками — этим даже пользовались эмуляторы.Потом эту лавочку прикрыли, и даже не потому, что это скрывает баги в программах на C. Ну, точнее, ровно поэтому, только программой на C здесь выступает само ядро. Достаточно большое количество ядерных эксплоитов того времени заключалось в том, чтобы дата рейсом или иным методом заставить ядро разыменовать нулевой указатель. Поскольку внутри ядра (была) видна память текущего процесса, это приводило к тому, что пользовательская память начинала интерпретироваться как ядерные структуры. Чтобы этого избежать, сейчас Linux не позволяет аллоцировать страницы ниже адреса
sysctl vm.mmap_min_addr
— 64 кибибайта на большинстве устройств. (Нет бы писать без багов...)На этом история с разыменованием нуля могла бы закончиться: в Windows ограничение на память на малых адресах было уже давно, в Linux ввели, других операционных систем не существует. Но хипстеры придумали WebAssembly, и поскольку с ним вопрос об изоляции внутри контейнера не встает, по адресу
0
здесь вполне есть доступная память. Некоторых это бесит, некоторых удивляет, меня — радует, ибо нефиг проталкивать ограничения уровней абстракции вниз (впрочем, с этим в WebAssembly проиграли в других местах).Такие дела.
👍16🔥9✍3