aruslan: (Default)
2007-12-20 08:23 pm

Ассеты и линкер

Иногда создается ощущение, что то, как линкер работает - военная тайна.
И поэтому делают странное и смешное.

Например, в процессе чтения одного ассета (или библиотеки ассетов) - лезут в другой, в третий, обратно в первый, обратно во второй.
До тех пор, пока много секунд загрузки не будут потрачены исключительно на DVD seek.
Про циркулярные зависимости я промолчу. И про тонны копирований внутри - тоже.
Ну и про отсутствие минимального контроля целостности.

А вот линкеры - они обычно умнее. Особенно те, что разрешают связи при загрузке.
Пусть не все, но у нас и задача попроще )
Замечу - эта схема более чем тривиальная.
Её в самом тупом виде реализовать ничуть не сложнее, чем сложную обычную.
Учитывая управление временем жизни и прочее счастье вроде хэш-таблиц - так еще и проще.

Грустно про это рассказывать, на самом деле. Ведь не стриминг бесконечных миров даже.
Вот и дядя Дима на gamedeff рассказывает хоть и уровнем повыше, но всё про то же.

Зачем делать плохо - вот загадка.
Лучше уж не делать совсем - хотя бы устойчивее работать будет, да и дешевле.
aruslan: (Default)
2007-12-20 08:06 pm

Принудительная диагностика

Иногда возникает брутальное желание запретить коммит кода, если в нём нет или мало ассертов.
С одной стороны - учить пользоваться вилкой глупо если код как пюре.
Но ведь становятся же люди веселее, когда берут образ веселого человека?..

[Poll #1109174]
aruslan: (Default)
2007-12-20 07:27 pm
Entry tags:

Номер версии

Иногда создается ощущение, что проблемы диагностики бинарной несовместимости не были решены обычным дайджестом лет сорок назад.
Т.е. не на Microsoft 360, а на вполне себе IBM 360.

В самом тупом случае используют просто номер версии. Слишком хрупко ибо человеки.
Или CRC32 всего текста шейдера или там описания класса. Это чересчур строго.

Более жизнеспособен дайджест бинарной совместимости.
Т.е. хэш того, от чего эта самая бинарная совместимость зависит.

Например для классов - это хэш от layoutа и сигнатур виртуальных функций плюс layoutа полей.
Для шейдеров - описание внешних связей (порядок, типы, имена/семантика).

И всё - при построении ассета, который требует конкретного шейдера, - считаем дайджест шейдера и пишем его прямо в ассет (32 бита например или там MD5).
А в рантайме берем дайджест теперь уже реального шейдера (из рантайма) и сравниваем с дайджестом что в ассете.

Очевидно следующий шаг - вообще побороть несовместимость, но это обычно дорого и через это ненужно.
Поэтому все или делают дайджесты или делают абсолютно быстрый и прозрачный бандлинг.

И вместо невероятных глюков и access violation спокойно говорят - "сорри, бинарная несовместимость".
aruslan: (Default)
2007-09-14 04:01 pm
Entry tags:

Пятничное - Линус жжот

Ограничения решают, факт.
И Линус идёт на полный и тотальный пролом!

http://article.gmane.org/gmane.comp.version-control.git/57918

Особенно понравилось
  Quite frankly, even if the choice of C were to do *nothing* but 
  keep the C++ programmers out, that in itself would be a huge 
  reason to use C.

via [livejournal.com profile] sim0nsays


Update: Не забывайте читать камменты дальше по ветке - там Линус отвечает на вопросы и W.B. который "D" получает ответы :)
aruslan: (Default)
2007-07-23 12:21 am

Снайперам на заметку

Орфографический словарь
 ретироваться, -руюсь, -руется

Словарь трудностей
 РЕТИРОВАТЬСЯ (неправильно ретироваться).

Толково-словообразовательный
 РЕТИРОВАТЬСЯ несов. и сов.
    1. устар. Отступать во время боевых действий.
    2. разг. Уходить, скрываться (обычно с оттенком шутливости).
Русское словесное ударение
 ретироваться, ретируюсь, ретируешься[не ретироваться, ретируюсь, ретируешься]

via gramota.ru


P.S. Встречаемся в центре Красной площади. Форма одежды - удобная ;)
aruslan: (Default)
2007-06-30 12:48 am

Синтаксис

На всякий синтаксический сахар найдётся синтаксический диабет.
А также синтаксическая изжога и синтаксическая язва.
aruslan: (Default)
2007-04-25 10:03 pm

Про ржавые гвозди

Смотрел сегодня зачем-то немножко всякого кода.
Мысль остановилась на втором экране невнятной сети несвязанных между собою условий.
Понял, что волю читать мегапростыни кода я утратил. Особенно ненужного. Бажного.
А чем больше кода - тем скорее он станет ненужным.

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

Не пишите лишний код. Пишите нужный.
aruslan: (Default)
2006-10-18 07:56 pm
Entry tags:

И вновь золотой осенний дождь

http://www.dtf.ru/articles/read.php?id=42536
Сказано хорошо.
Но то ли еще будет, конечно.

"Третий год правлю, а уже пять заговоров подавил. За что меня так не любят? За то что приказал Макрону покарсить стену своей кровью с разбегу? За то что попросил Птолемея подарить мне его пурпурный плащ вместе с головой? За коня, насравшего в сенате? Дык просто люди шуток не понимают! А я же им акведуки строю, лимес возвожу, даже евреев не громлю... Вот скажи, Херея, за что меня не любят. Прекращай жрать говно, меня это уже не забавляет."
-- Гай Юлий Цезарь Август Германик Калигула (из разговоров во время оргии)
(ц) [livejournal.com profile] satanov