Category: лытдыбр

smile

(no subject)

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

This entry was originally posted at https://glav.dreamwidth.org/684486.html. Please comment there using OpenID.
smile

(no subject)

В рамках аутотренинга расширения сознания периодически пытаюсь знакомиться с мыслями просвещённых людей в Мордоре. Вот, например, Алексей Савватеев, по собственной характеристике - православный панк-профессор, по религиозным взглядам - ватник, по профессии - математик, причём, говорят, хороший. Вообще я стараюсь не обсуждать конкретных людей, но тут занимательная ситуация. С одной стороны, Савватеев - действительно яркая незаурядная личность, с другой стороны - является собирательным воплощением как популярного лектора, так и одной из под-категории архетипичных ватных взглядов. Вот такая беседа с ним, в принципе, всё ожидаемо, но два момента привлекли внимание.

Во-первых, занимательно его видение проблем народа (22:20):
Если мы движемся вперёд, реально вперёд, не к благоденствию, а к большим интересным проектам. Что такое будущее для меня? Это не когда у меня больше бутербродов, мне не надо, я сейчас могу есть больше, у меня есть деньги на то, чтобы есть больше. Мне не нужно есть больше я не голоден, я сыт. И я не понимаю идеи, что мы сейчас будем ещё больше жрать, я просто её не приемлю.

Люди у которых не хватает денег, как правило, они накупили себе айфонов зачем-то.
Во-вторых, на другую важную тему, которая меня занимает, о корреляции этических и профессиональных качеств. Вроде бы, взаимодействуя с людьми по профессиональным вопросам, нет нужды заморачиваться их взглядами на несвязанные вопросы, "ценим мы его не за это". Но тем не менее (37:10):
Я именно двигаюсь в направлении "Русской весны". Точка. Моя математика, профессия, она тоже в ту же сторону идёт. Тот факт, что Я читаю лекции по математике, и ИХ слушают во всех сопредельных с нами ныне независимых государствах, и люди готовы их слушать несмотря на мои взгляды,- уже шаг в эту сторону. Человек в интернете лезет "ну какой же ты ватник, какая же ты скотина, - но какие у тебя лекции". И я чувствую, - "ага, парень, ты от нас не уйдёшь. В хорошем смысле. Твой мозг будет обработан и его освободят от этих мифов".


This entry was originally posted at https://glav.dreamwidth.org/681766.html. Please comment there using OpenID.
smile

Вклад человечества в глобальное потепление

По случаю приближающегося конца света построил график зависимости уровня углекислого газа в атмосфере от количества населения.


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

Но какой выход? Боюсь, решение "отменить всех людей" никому не понравится...

This entry was originally posted at https://glav.dreamwidth.org/680506.html. Please comment there using OpenID.
smile

c++ undefined behavior

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

Тот, что попроще, выглядел примерно так, как описано тут: при удалении массива программа "зависает" и, судя по отладчику, количество выделенной памяти не уменьшается. Увидев схожее поведение, я обнаружил и ошибку: действительно, при работе с массивом я обращаюсь к памяти за его пределами. То, что обращение к "не своей" памяти приводит к непредсказуемым эффектам в момент обращения, это я знаю. А вот то, что такое обращение может повлиять на процесс освобождения этой памяти гораздо позже этого обращения, оказалось неожиданным. Я так понимаю, как конкретно хранить размер массива - это compiler-specific поведение, и в моём случае массив просто завершается неким стоп-символом, типа '\0'. Обращаясь к следующему за последним элементом массива я затираю этот стоп-символ, так что оператор delete[] либо пытается освободить вообще всю доступную память, либо просто начинает грустить.

Второй баг связан с тем, что я использовал метод std::sort вместе с дефолтным оператором сравнения для сортировки пары std::pair<double,MyClass>. Число double - не уникальный идентификатор, но случайное число в достаточно широком диапазоне. Каким-то образом так сложились звёзды, что два случайных числа оказалсь одинаковыми, а std::sort не гарантирует сохранения порядка элементов в этом случае. Если бы сортировались просто числа, это не имело бы никакого значения, но я сортирую пары, которые содержат объект MyClass, каждый из которых уникальный. Из-за этого примерно в половине случаев после сортировки я получал список (..., object1, object2, ...), а в другой половине случаев - (..., object2, object1, ...), что создавало две альтернативные timelines. В нормальной ситуации это должно было бы обнаружиться сразу в момент расщепления timelines. Но меня интересует поведение не отдельных объектов, а их статистические свойства. В течение некоторого времени после расщепления timelines каждый из объектов продолжал жить своей жизнью, не оказывая никакого влияния на общую статистику, - до тех пока пока две timelines не разошлись достаточно далеко. Место и время, в которых эта разница проявилась, никак не указывали на настоящую локацию расщепления timelines, тем более на причину этого расщепления, так что пришлось повозиться. В итоге переключился на std::stable_sort и собственный оператор сравнения, что и решило исходную проблему.

This entry was originally posted at https://glav.dreamwidth.org/678892.html. Please comment there using OpenID.