KingMaximax, неправильно, нельзя "обойти виртуальную машину", код в любом случае на ней выполняется. Это главное отличие C# от нативных C\C++, но речь в статье вообще не об этом.
Есть понятие управляемого и неуправляемого кода. Так вот шарп по-умолчанию использует управляемый код, это когда все данные жестко контролируются средой, ты не управляешь памятью напрямую и не можешь критически накосячить, а ненужные данные удаляются автоматически (то есть утечки памяти практически невозможны).
Но существует и возможность работать с неуправляемым кодом, использовать прямой доуступ к памяти, о чем собственно статья. Это считается небезопасным (отсюда и ключевое слово unsafe), потому что работоспособность, стабильность и защищенность программы начинает на 100% зависеть от уровня криворукости программиста.
KingMaximax, какой-то странный вопрос. Синтаксически C# происходит от C, что вроде очевидно. Соответсвенно и форма записи указателей взята оттуда.
Но несмотря на внешнюю схожесть, внутри C# работает абсолютно по-другому. Даже в небезопасном контексте с прямым доступом к памяти, код все равно выполняется на виртуальной машине.
uranus, быстрее чем функции стандартной библиотеки можно добиться и не прибегая к небезопасному коду (написать собственную реализацию), тут о другом речь.
Msey, плохой случай. Надо писать так, чтобы проверки границ в сейф коде убирались оптимизатором.
То есть допустим в случае
//a - некоторый массив
for(int i = 0; i < a.Length; i++)
проверки границ не будет. И разницы производительности с небезопасным вариантом тоже. Потому что оптимизатор умный.
Лезть ради этого в небезопасный контекст - крайне сомнительное занятие, нужно просто правильно писать в безопасном.
Забыл написать для чего это вообще надо. Для начала использования небезопасного кода нужно стараться избегать (помните что 95% дырок безопасности в истории это вина программиста, прозевавшего проверки в неуправляемом коде). Реально же практическое применение я вижу в двух вариантах:
Если в проекте используется неуправляемая библиотека. И то очень специфически, если у вас структуры данных прибиты гвоздями. В большинстве же случаев можно обойтись маршалингом в безопасным контексте.
Вы кулхацкер, который по каким-то причинам захотел использовать именно шарп. Тогда думаю вы в этой статье и не нуждаетесь. Хотя кстати я могу привести личные примеры такого применения )
Narkranoth, ну да, в контексте варкрафта не важно.
Хотя если рассуждать почему для звуков использован PCM довольно интересно. Думаю они посчитали что соотношение качество/вес для коротких файлов так получается лучше. Это уже надо экспериментальным путем выяснять.
Сейчас любая кофеварка поддерживает выход 192 КГц, но толку нет, человек просто не может различить. Как минимум просто по причине того, что любые динамики портят звук в любом случае.
PrincePhoenix, ну прога сделана на коленке за 15 минут. Она не проверяет наличие уже имеющихся файлов, а в тупую дописывает, то есть существующие файлы продублируются в менеджере импорта. Возможно с этим связано.
Narkranoth, чатота дискретизации в 11 КГц очень хреново звучит так-то. По ощущениям как mp3 с битрейтом 32 кбит. Для адекватной передачи надо хотя бы 44+ КГц, вот выше уже реально человеческое ухо практически перестает различать.
KingMaximax, карты каском не будут. Каск архивы подписываются секретными ключами, которые есть только у разрабов. Если не понимаешь, почитай в инете как работают цифровые подписи и сертификаты.
От нубов - оптимайзер.
От профессионалов - никак. В особенности из-за того, что никакие мемхаки и прочие трюки на последней версии игры не работают. А отрезать возможность играть в карту на актуальной версии игры равнозначно собственноручному закапыванию шанса на хоть какую-то популярность.
Тут вы не правы, они выпускают патч, советуясь с hive
WEX разработан на хайве, при чем чуваком которого вроде в итоге даже на работу сами близы взяли. И на 1.30 теперь он бац и не будет работать. Где логика.
я передаю их слова. они продолжают тасовать файлы по папкам и из-за этого mpq целиком перекачивать игрокам. обновлялся бы вместе со всеми - знал бы, что всегда скачивается весь сет, а не только игровые дллки.
Так раньше же все норм было, патчили архивы без проблем. Просто они свой сраный ланчер прикрутили, который нормально умеет только в casc.
DracoL1ch, патчи и так всегда маленькие были, по размеру изменений.
А шифрование и защита процессов от отладки для чего? На случай нападения рептилоидов?
KingMaximax, я тут поковырял 1.30, и могу сказать что на ней подобный моддинг скорее всего вообще умрет, включая расширения редактора. Так как ресурсы защищены и зашифрованы, а процессы игры и редактора теперь защищают себя от отладки и вторжений извне.
» WarCraft 3 / Map Import Manager
Ну предлагайте свои цвета, я в дизайне аутист.
» Программирование / Работа с небезопасным кодом в C#
Есть понятие управляемого и неуправляемого кода. Так вот шарп по-умолчанию использует управляемый код, это когда все данные жестко контролируются средой, ты не управляешь памятью напрямую и не можешь критически накосячить, а ненужные данные удаляются автоматически (то есть утечки памяти практически невозможны).
Но существует и возможность работать с неуправляемым кодом, использовать прямой доуступ к памяти, о чем собственно статья. Это считается небезопасным (отсюда и ключевое слово unsafe), потому что работоспособность, стабильность и защищенность программы начинает на 100% зависеть от уровня криворукости программиста.
» Программирование / Работа с небезопасным кодом в C#
Но несмотря на внешнюю схожесть, внутри C# работает абсолютно по-другому. Даже в небезопасном контексте с прямым доступом к памяти, код все равно выполняется на виртуальной машине.
» Программирование / Работа с небезопасным кодом в C#
» Программирование / Работа с небезопасным кодом в C#
То есть допустим в случае
Лезть ради этого в небезопасный контекст - крайне сомнительное занятие, нужно просто правильно писать в безопасном.
Ред. Hanabishi
» Программирование / Работа с небезопасным кодом в C#
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
Хотя если рассуждать почему для звуков использован PCM довольно интересно. Думаю они посчитали что соотношение качество/вес для коротких файлов так получается лучше. Это уже надо экспериментальным путем выяснять.
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» Hanabishi's Blog / Wc3BatchImport
» Hanabishi's Blog / Wc3BatchImport
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» Мир безумного / WarCraft 3 - 1.30 PTR
» Мир безумного / WarCraft 3 - 1.30 PTR
» Мир безумного / WarCraft 3 - 1.30 PTR
PrincePhoenix:
Ред. Hanabishi
» WarCraft 3 / [Защита] Если код в карте был изменён, значит не запускать карту
От профессионалов - никак. В особенности из-за того, что никакие мемхаки и прочие трюки на последней версии игры не работают. А отрезать возможность играть в карту на актуальной версии игры равнозначно собственноручному закапыванию шанса на хоть какую-то популярность.
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
Melissa: Да, через Allow Local Files вроде пока работает.
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
Ред. Hanabishi
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
А шифрование и защита процессов от отладки для чего? На случай нападения рептилоидов?
Ред. Hanabishi
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
Ред. Hanabishi
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
Скачай и посмотри как игра устроена теперь.
Ред. Hanabishi
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов
» WarCraft 3 / Простой способ подключения собственных MPQ-архивов