Тут снова вопрос не в том, что лучше, а что удобнее в данной ситуации. XML общий язык, не привязан к JavaScript. Его можно использовать для передачи данных в AJAX, можно для передачи мгновенных сообщений (Jabber), а можно в формате XML хранить конфиг своей умной микроволновки. В этом его сила в возможности обмена информацией между разными программами и поддержке во многих платформах.
JSON же удобен, когда данные специально генерируются для одного клиента на JavaScript.
Ну это как посмотреть. С одной стороны, с XML мы не можем "автомагически" выполнять JavaScript на клиенте. С другой, нехорошо смешивать данные и код, даже если всё 100% безопасно. Хотя в принципе, что мешает добавить в XML-документ элемент <evalthis> и исполнять на клиенте, но только при помощи явного eval()?
У меня недавно полетел такой. В соседнем топике сказали, что скорее всего из-за перегрева (хотя рядом стоят несколько Western Digital и с ними всё хорошо). http://www.habrahabr.ru/blog/infosecurity/23561.html#comment328103
Подразумевать, что теги в XML-документе расположены в определённом порядке одна из самых распространённых ошибок при работе с XML: http://forums.worsethanfailure.com/forums/thread/126704.aspx
Это не только ломает расширяемость, но и ставит под угрозу возможность редактирования XML-файлов вручную: ведь мало кто способен выучить строгий порядок следования 20-и тегов. К тому же, это противоречит спецификации.
> Итак, только сами разработчики при создании приложения могут инициировать отправку cookies на сторонний сайт.
Вы упустили возможность такой атаки: представьте себе, что вы загружаете данные гостевой книги через JSON. Серверный скрипт неправильно обрабатывает данные escape-последовательностями, но не все, а только некоторые спецсимволы, и сообщение предыдущего пользователя будет выполнено через eval().
Диск был Samsung SP1614N. Одним утром у меня повисла система. Потом после загрузки:
$ ls /
ls: чтение каталога /: Input/output error
Я быстро выключил компьютер, поехал купил новый диск и сдампил со старого всё, что прочиталось. Потом из чистого интереса запустил Victoria, она мне показала кучу бедов в пределах первых 2Gb и ещё кучку где-то на 50Gb. Хорошо, что на первых 2Gb находился раздел, где стояла система, а не раздел, где были мои данные.
Насчёт мака и XP... Можно объяснить тем, что у клиента было слишком много свободного времени. Или он просто очень хотел использовать Windows XP, но не знал про VMware.
Нужно закрыть спецификацию HTML, выпустить новую спецификацию, которая описывает веб-сайты на бинарных файлах, которые может писать только очень дорогостоящее программное обеспечение, запретить генерацию пользовательского контента (убрать методы GET и POST), а доступ на 80-й порт выдавать по паспорту.
Это Интернет, он открыт для всех. В этом его сила.
У меня есть жёсткий диск. Нет, не так. У меня _был_ жёсткий диск. Не отработал даже года (судя по SMART, 300 дней, система работает 24/7). Экстремальных условий не создавал. Сроки эксплутатации не превышал. И почему же он полетел?
Парсер код разбирает лексически и на основе разбора формирует в памяти удобные для выполнения структуры. Потом их читает интерпретатор и, собственно, выполняет.
> Я много слышал о том, что указатель на функцию нельзя класть в int, но не мог придумать, почему.
В C этого тоже лучше не делать. Когда-то Ваш код будет скомпилирован на платформе, где sizeof(int) < sizeof(void *). И это отнюдь не далёкое будущее: например, сейчас на x86_64 sizeof(int) = 4, sizeof(void *) = 8.
Согласен, особенно код CreateProcess(). Такой сложный код никак не может просто стартовать процесс, он должен управлять атомной электростанцией не меньше.
И не только а авто. Оцените количество профессиональных CD дек в студиях, концертных залах и театрах. Они стоят немалых денег, их выпускают и покупают до сих пор. Audio CD будет жить ещё очень долго.
Вот только не надо говорить, что зато Windows все их поддерживает. Не дальше, чем сегодня знакомые мне пожаловались, что не могут подключить новый mp3-плеер к своему компьютеру с Windows XP SP2 (компьютер тоже почти новый). Ну я пришёл, посмотрел. Выяснилось, что диск, идущий в комплекте с плеером, драйверов не содержит, только всякие бесполезные конвертаторы музыки, изображений и видео. Windows плеер как USB Mass Storage не опознаёт (хотя это заявлено в документации). Порылся на сайте производителя гордая надпись "драйвер не нужен!". Взял я плеер к себе домой, подключил к своему Linux не опознаёт. После гугления и чтения форумов, с какого-то левого сайта скачал непонятно какие драйверы, которые позволили увидеть плеер хотя бы в Windows Media Player. В результате, я посоветовал им сдать этот плеер и купить другой, другого производителя.
JSON же удобен, когда данные специально генерируются для одного клиента на JavaScript.
Купил Western Digital 3200AAJB очень тихий.
Это не только ломает расширяемость, но и ставит под угрозу возможность редактирования XML-файлов вручную: ведь мало кто способен выучить строгий порядок следования 20-и тегов. К тому же, это противоречит спецификации.
> Итак, только сами разработчики при создании приложения могут инициировать отправку cookies на сторонний сайт.
Вы упустили возможность такой атаки: представьте себе, что вы загружаете данные гостевой книги через JSON. Серверный скрипт неправильно обрабатывает данные escape-последовательностями, но не все, а только некоторые спецсимволы, и сообщение предыдущего пользователя будет выполнено через eval().
$ ls /
ls: чтение каталога /: Input/output error
Я быстро выключил компьютер, поехал купил новый диск и сдампил со старого всё, что прочиталось. Потом из чистого интереса запустил Victoria, она мне показала кучу бедов в пределах первых 2Gb и ещё кучку где-то на 50Gb. Хорошо, что на первых 2Gb находился раздел, где стояла система, а не раздел, где были мои данные.
Насчёт мака и XP... Можно объяснить тем, что у клиента было слишком много свободного времени. Или он просто очень хотел использовать Windows XP, но не знал про VMware.
Нужно закрыть спецификацию HTML, выпустить новую спецификацию, которая описывает веб-сайты на бинарных файлах, которые может писать только очень дорогостоящее программное обеспечение, запретить генерацию пользовательского контента (убрать методы GET и POST), а доступ на 80-й порт выдавать по паспорту.
Это Интернет, он открыт для всех. В этом его сила.
> Случайные ошибки(случайное форматирование, переустановка системы).
Случайная переустановка системы? o_O
Как переустановка системы повлияет на Flash-накопители?
Парсер код разбирает лексически и на основе разбора формирует в памяти удобные для выполнения структуры. Потом их читает интерпретатор и, собственно, выполняет.
В C этого тоже лучше не делать. Когда-то Ваш код будет скомпилирован на платформе, где sizeof(int) < sizeof(void *). И это отнюдь не далёкое будущее: например, сейчас на x86_64 sizeof(int) = 4, sizeof(void *) = 8.