избегаем blueprint-ы с логикой (прототип в blueprint, потом переносится в C++);
стараемся blueprint-ы использовать только как dataonly.
При этом бинарные формат имеет еще одну проблему: там лежит много мусора, который никто не видит.
К примеру, я бы предпочёл видеть за пределами ассетов:
предрасчитанное освещение карты;
предрасчитанный навигационный граф;
скомпилированный байт-код blueprint-ов.
Из-за подобного мусора не только сильно увеличивается размер исходных ресурсов, но и появляются паразитные изменения в файлах, которые меняться не должны.
Утилиты просмотра и слияния изменений, которые пишут Epic Games проблему не решают:
Я бы не стал полагаться на SO_KEEPALIVE. Там таймаут порядка 2-х часов.
В моей практике был прецедент: между серверами, которые держали неактивное соединение, находился statefull firewall и через час данные переставали через него проходить, хотя формально с обоих сторон соединение открыто.
Насколько я помню, как минимум под Linux вечно соединение без данных жить не будет.
Оно схлопнется, когда истечет параметр net.netfilter.nf_conntrack_tcp_timeout_establishe (по умолчанию: через 5 суток).
Windows, к примеру, позволяет создавать файлы, которые могут содержать не корректную UTF-16 последовательность.
Из-за этого, в частности, родилось надмножество над UTF-8 для кодирования таких последовательностей с замечательным названием WTF-8: https://simonsapin.github.io/wtf-8/
cp1251, cp866, недо-utf-16 в одной системе одновременно.
При этом, к примеру, реализация стандартного режима китайского ввода (https://ru.wikipedia.org/wiki/IME) с каждой версией (Windows XP, Windows Vista, Windows 7, Windows 8) начитает вести себя на уровне API по-другому.
У нас получился следующий алгоритм:
При этом бинарные формат имеет еще одну проблему: там лежит много мусора, который никто не видит.
К примеру, я бы предпочёл видеть за пределами ассетов:
Из-за подобного мусора не только сильно увеличивается размер исходных ресурсов, но и появляются паразитные изменения в файлах, которые меняться не должны.
Утилиты просмотра и слияния изменений, которые пишут Epic Games проблему не решают:
Мне довелось работать с:
В Unreal Engine лично меня расстраивает их приверженность бинарному хранению данных.
Причем во всем:
Это сильно мешает использованию веток при разработке.
К сожалению, сами EpicGames проблемы в этом не видят, и от того ситуация вряд ли скоро изменится :(
А в остальном — это лучший движок, с которым мне приходилось работать.
Я бы не стал полагаться на SO_KEEPALIVE. Там таймаут порядка 2-х часов.
В моей практике был прецедент: между серверами, которые держали неактивное соединение, находился statefull firewall и через час данные переставали через него проходить, хотя формально с обоих сторон соединение открыто.
Насколько я помню, как минимум под Linux вечно соединение без данных жить не будет.
Оно схлопнется, когда истечет параметр
net.netfilter.nf_conntrack_tcp_timeout_establishe
(по умолчанию: через 5 суток).В Москве есть две "улицы 8 Марта". Одна из них ранее была в поселке Липки, но теперь он часть Москвы. Название улицы при этом не изменялось.
Так же в Москве "улица Станиславского" несколько переместилась в пространстве:
Когда у меня мой бложик похакали, я почесал репу и переделал его на Hugo (благо динамический контент на нём не требовался).
В результате удалось избавиться от CMS, PHP и MySQL. Остался только Linux и nginx.
Да, я постоянно путаю LE и BE :(
Порядок сортировки сохраняется для UTF-8 и UTF-16BE.
Важная особенность UTF-8 и UTF-16LE: при побайтовом сравнении Unicode-строки не меняют свой порядок.
Windows, к примеру, позволяет создавать файлы, которые могут содержать не корректную UTF-16 последовательность.
Из-за этого, в частности, родилось надмножество над UTF-8 для кодирования таких последовательностей с замечательным названием WTF-8: https://simonsapin.github.io/wtf-8/
На первом слайде имена и лица на фотографии в разном порядке… Им бы его поправить, чтобы народ не путать...
Глубоко копаете. Попробуйте просто поставить Microsoft Visual Studio 2010 на Windows 10.
Получите массу удовольствия.
В TreeSize pacman-ов нету :(
На счет обратной совместимости на базе столь малой выборки выводы делать рано.
Так же надо отметить, что совместимость так же требует сохранения старых проблем.
К примеру:
При этом, к примеру, реализация стандартного режима китайского ввода (https://ru.wikipedia.org/wiki/IME) с каждой версией (Windows XP, Windows Vista, Windows 7, Windows 8) начитает вести себя на уровне API по-другому.
Проблему постоянного копирования данных решали в рамках реализации Cap’n Proto (https://capnproto.org).
Я не понял претензию к строкам.
Предложение хранить строки в национальных кодировках а-ля CP-1251 порождает гораздо больше проблем, чем решает.
А за счет чего в такой ситуации обеспечивается безопасность работы с указателями?
В D, если я правильно понимаю, активно используется GC. И это ставит крест на многих областях применения, ради которых используют C/C++.
Проблему с JMX можно решить завернув его в JSON на стороне Java: https://jolokia.org/
Судя по тексту, это цифры за 2015 год.
Я так понял, что в 2010 было где-то 39% и 33%.