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
- Telegram Web
Telegram Web
Первое место. Приэльбрусье, Терскольская обсерватория.

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

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

Сначала думал остановиться на водопаде, но этот маршрут какой-то абсолютно наркоманский, после каждого витка серпантина хочется сделать следующий, а потом еще и еще. Так я добежал до местной обсерватории, набрав в сумме 920 метров подъема.

Ощущения были чем-то похожи на Кисловодск, только возведенные в квадрат. Здесь ты чувствуешь себя действительно на вершине мира и в полном, окончательном одиночестве, полностью наедине с величественной местной природой.

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



Такой вот у меня топ-5!

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

А какой у вас рейтинг топовых мест? Для бега/хайка/прогулки, это в целом про одно и тоже.

#гчкм
Тут недавно один юный компиляторщик у видел у нас в рантайме название BIBOB и очень смеялся необычно звучащему для него слову: "что это за названия у вас в рантайме такие смешные?"

Но для рантаймщика то это звучит вполне естественно, это один из самых базовых терминов. Наверное и вы, читатели, если когда-нибудь занимались управлением памятью в виртуальных машинах, узнали здесь небольшую модификацию классической техники BIBOP (BIg Bag Of Pages), которая представляет из себя довольно простую штуку.

В рантайме по любому объекту в памяти нужно уметь быстро понимать его свойства, при том, как instance-специфичные (самое простое: помечен он сейчас GC-ом или нет? Хэшировали уже объект или нет?), так и class-специфичные (это массив или нет? у класса есть нетривиальный финализатор или нет? Размер объекта какой?). И если для instance-специфичной информации в объекте обычно зарезервировано несколько байт в заголовке (за битики в этом заголовке идет настоящая битва, всем надо), то class-специфичная информация обычно хранится отдельно. Для доступа к ней в объект записывают адрес на соответствующую рантайм структуру, в хотспоте, например, это Klass*.

Но это же получается целое поле под этот адрес для метаинфы в каждом объекте хранить! Объектов миллионы, дороговато получается, дороговато. В общем случае в современных языках этого не избежать, но в некоторых частных случаях может захотеться иметь альтернативный способ получения этой метаинформации об объектах. И тут срабатывает классический трюк: давайте кодировать информацию в адресах объектов. Я сейчас не про то, чтобы записывать что-то в старшие биты адреса и потом маркировать (так тоже делают, конечно, но это скорее instance- или даже pointer-специфичная инфа), а про то, чтобы использовать сам адрес для быстрого поиска нужной вам информации: давайте аллоцировать все объекты с одинаковыми свойствами (например, массивы) рядом, в заранее известных регионах памяти. Тогда вы за пару сдвигов сможете понять по адресу объекта, в каком он регионе и соответственно получить всю необходимую метаинфу.

Если чуть обобщить, то вы просто делаете хэш-таблицу из адресов в объектов в метаинфу, что освобождает вас от необходимости хранить адрес на метаинфу в каждом объекте (но накладывает ограничение на аллокации и перемещения объектов, трейдоф понятен). Вот такая техника и называется BIBOP (BIg Bag Of Pages). Pages там, понятно, из-за того, что обычно хранится информация не конкретно об объекте, а о страничке, в которой он (и похожие на него объекты) аллоцирован.

У нас в рантайме используется похожая техника, но не для конкретных объектов, а для наших собственных блоков памяти (поэтому вместо Pages, у нас Blocks, и аббревиатура превращается в BIBOB).

Забавно, что техника BIBOP один из первых раз описана была в 1977 году, вот здесь, для реализации MacLisp на PDP-10. Хотя даже там автор уже подтрунивает на самим термином и говорит, что так уже называют схему, когда новые страницы под данные выделяют с верхних адресов к нижним, а код, наоборот, загружают в нижние адреса. И вот дырка в середине, которую с двух сторон съедают во время исполнения, называется "BIg Bag of Pages" (автор использует словосочетание "whimsically named"), поэтому и схему с аллокацией объектов вместе и кодированием метаинфы в адресах автор тоже решил назвать BIBOP.



В общем, это настолько древняя (почти 50 лет!) и понятная технология, что слово BIBOP не звучит для рантаймщика, как что-то странное, совершенно.

Но я же недавно посмотрел Сowboy Bebop! А дальше уже просто не смог удержаться: пошел и подписал к комменту над нашим бибопом одну строчку в качестве шалости. See you, space cowboys.

#дух_машины
Когда забанил реакцию клоуна
Что думаете? Пойдете?
Идеальная компания собралась у меня на окне, конечно
тяготы гейминга
Хочу до конца семестра сделать 5 новых лекций по 4 разным предметам. Помянем 🫡
Ну, это круто, кстати!
This media is not supported in your browser
VIEW IN TELEGRAM
Тут как считать, конечно, но точно не меньше четырех уже было)
а я вот люблю среды, my dudes
Да что тут решать то
This media is not supported in your browser
VIEW IN TELEGRAM
После этого видео захотелось сразу две вещи сделать: вернуться в Скайрим и пересмотреть Интерстеллар
Пофиг на локальное похолодание, у меня весна ☺️
2025/04/10 16:50:20
Back to Top
HTML Embed Code: