за document.write надо сразу нахуй из професии. ну а проблема в том что вместо </script> надо писать </s” + “cript> иначе это закрытие тега для браузера
Чуваки, я понимаю что весь интернет кричит “document.write – это bad practice!” то если программер совершенно тупой, то обязательно поймет что-то не так и напортачит с document.write, но видите ли, данный тест чуть хитрее, и к тому же мне обычно, извиняюсь, насрать на то, что в Интернете считается плохой практикой. И вам тоже должно быть. Вобщем речь не о том.
: ну у меня от document.write лютая попаболь с тех пор как я лоадер скриптов для нигмы писал, там очень много ебли было как раз из за 3rd-party любителей document.write. Давай лучше ты мне приведёш пару примеров где ты считаеш его умемсно использовать, а я скажу почему его там не стоит использовать?
: дело в том, что у тэга script нет хорошего способа узнать где он сам находится в документе. (Вроде какие-то кривые методы есть, но не уверен насчет их кросс-браузерности) Так если ты хочешь сгенерировать HTML прямо из script-тэга, и чтоб код был компактным, то лучше всего сделать это с document.write. Нет?
: ну я могу предположить про XSS, но откуда берётся arg1 и arg2 ничего неизвестно, может быть они полностью безопасны. Ну а еще во времена нетскейпа и IE4 скрипты вставленные из document.write не работали. Больше догадок не имею.
: что-то ты сильно много сделал для отвода глаз и надеешься что испытуемый сможет с первой попытки угадать что ты на самом деле хотел? 🙂 А в итоге окажется, что у тебя по принятому code style положено точку с запятой в конце ставить.
: для интервью это всегда хорошо, когда человек рассуждает о вещах, а ты ему говоришь: ладно, а что еще? то есть open-end вопрос.
Скажем у меня есть еще такой вопрос: где лучше держать JPG файлы, в базе или в файловой системе? Тут на любой аргумент придумывается контр аргумент, и так часами ты можешь раскапывать реальные знания человека о вещах – о СУБД, файловых системах, веб серверах, итд
: Несмотря на все “bad practice”, бывают случаи когда совершенно необходимо вставленный скрипт выполнить синхронно. Например, из-за особенностей скрипта или задачи. Соответственно, скрипт, вставленный через document.write будет выполнен сразу после текущего блока скрипта.
Я думаю “что не так в этом скрипте” заключается в первую очередь в том, что значения аргументов не экранируются. А вариант с сработает лишь в случае, когда этот скрипт находится в другом блоке скрипт, что неочевидно из условия вопроса.
: да блять, умник, на Amazon CloudFront не “хранятся” файлы, по крайней мере в том же смысле, в котором они могут храниться на диске или в бд (что можно их туда записать, что они там вечно, если не удалять, и так далее)
: причина в другом. если использовать document.write уже после загрузки страницы, то все пойдет по пизде т.к. произойдет document.open и создастся новый документ.
: и это всё? То есть из-за какого-то я извиняюсь идиота, который сделает document.write полсе загрузки страницы, никто ни при каких обстоятельствах не должен вызывать document.write?
: например, если использовать CloudFront, это решит проблему показа файлов пользователю, но их все равно надо где-то хранить – из этого хранилища их будет брать CloudFront. например: на s3, на своем сервере, в базе данных
итак, мы по совету прикрутили CDN, но вопрос “где хранить файлы?” остается открытым. спасибо, всезнайка !
: а нельзя повесить хэндлер на какой-нибудь onDocumentLoad, получить document.body / document.head[0] и добавлять через appendChild? в JSONP так делают. по-моему это самое тру.
Здесь говорят о компьютерах, ноутбуках, железе, серверах, операционных системах и прочем харде и софте. Всё, что вы найдёте здесь, вы можете полностью и свободно перепечатать и процитировать. Ссылка на http://www.hardblog.net не обязательна, но если вы её поставите, то будет здорово.
о шит, парсер все съел
document.write(‘<script type=”text/javascript”>myfunc(” + arg1 + ”,’ + arg2 +’)</script>’);
за document.write надо сразу нахуй из професии.
ну а проблема в том что вместо </script> надо писать </s” + “cript> иначе это закрытие тега для браузера
а я не прочитал что это для собеседования, тогда единственный правильный ответ:”использование document.write”
: гуглу это скажи.
: “использование document.write” – что именно с этим не так?
Чуваки, я понимаю что весь интернет кричит “document.write – это bad practice!” то если программер совершенно тупой, то обязательно поймет что-то не так и напортачит с document.write, но видите ли, данный тест чуть хитрее, и к тому же мне обычно, извиняюсь, насрать на то, что в Интернете считается плохой практикой. И вам тоже должно быть. Вобщем речь не о том.
: а ответ про </s’+’cript> тебя чем не устроил?
: кстати вот за </s” + “cript> – вон из профессии 🙂
ближе к программированию вот так: “</script>”
: это только для отвода глаз 😉
: ну у меня от document.write лютая попаболь с тех пор как я лоадер скриптов для нигмы писал, там очень много ебли было как раз из за 3rd-party любителей document.write. Давай лучше ты мне приведёш пару примеров где ты считаеш его умемсно использовать, а я скажу почему его там не стоит использовать?
: дело в том, что у тэга script нет хорошего способа узнать где он сам находится в документе. (Вроде какие-то кривые методы есть, но не уверен насчет их кросс-браузерности) Так если ты хочешь сгенерировать HTML прямо из script-тэга, и чтоб код был компактным, то лучше всего сделать это с document.write. Нет?
: ну я могу предположить про XSS, но откуда берётся arg1 и arg2 ничего неизвестно, может быть они полностью безопасны.
Ну а еще во времена нетскейпа и IE4 скрипты вставленные из document.write не работали.
Больше догадок не имею.
: спойлер: написанный код эквивалентен такому: myfunc(arg1, arg2), нет? 🙂
arg1 и arg2 могут иметь такие значения, которые могут привести к синтаксической ошибке – например, строка содержащая символ кавычки.
: ну так то да, с небольшой поправкой– arg1 нужно преобразовать в строку. Но тогда задача имеет тот же смысл что и:
Вопрос: Что не так в выражении 1 + 2?
Ответ: Выражение эквивалентно 3.
: : это да, но честное слово, делал это только для отвода глаз 🙂 положим один аргумент – безобидная и заискейпленная строка, а другой – всегда число.
: да, но если бы это было так же просто как и 1+2=3, то все бы сразу догадались 🙂
: а кстати преобразовывать ничего не надо, оно заработает именно так
: что-то ты сильно много сделал для отвода глаз и надеешься что испытуемый сможет с первой попытки угадать что ты на самом деле хотел? 🙂
А в итоге окажется, что у тебя по принятому code style положено точку с запятой в конце ставить.
: а откуда я знаю что там внутри myfunc? Может быть там проверка что первый аргумент строка?
Ты же спросил про эквивалентность.
: для интервью это всегда хорошо, когда человек рассуждает о вещах, а ты ему говоришь: ладно, а что еще? то есть open-end вопрос.
Скажем у меня есть еще такой вопрос: где лучше держать JPG файлы, в базе или в файловой системе? Тут на любой аргумент придумывается контр аргумент, и так часами ты можешь раскапывать реальные знания человека о вещах – о СУБД, файловых системах, веб серверах, итд
: нехватает кавычек у arg2?
вдруг он строка
: блядь, зачем вам всем цдату придумали? Для красоты штоле?
: нет. С хуёв-то?
: CDN
: Chinese Developers Network?
: в приёме на работу отказать.
: CDN это не место хранения файлов, если че. это прокси
: прокси? Ну оок, лол.
: по крайней мере, Amazon CloudFront работает как reverse-proxy
правильный ответ то какой?
: Несмотря на все “bad practice”, бывают случаи когда совершенно необходимо вставленный скрипт выполнить синхронно. Например, из-за особенностей скрипта или задачи. Соответственно, скрипт, вставленный через document.write будет выполнен сразу после текущего блока скрипта.
Я думаю “что не так в этом скрипте” заключается в первую очередь в том, что значения аргументов не экранируются. А вариант с сработает лишь в случае, когда этот скрипт находится в другом блоке скрипт, что неочевидно из условия вопроса.
: вариант с </s’ + ‘cript> ^
: Content Delivery Network
: никакой
: в посте совсем другой вариант.
: как устроен CDN внутри – абсолютно по хуй.
: а потом ты придешь на собеседование и опа-на – знаешь ответ!
: по возможности старайтесь избегать этого
: да блять, умник, на Amazon CloudFront не “хранятся” файлы, по крайней мере в том же смысле, в котором они могут храниться на диске или в бд (что можно их туда записать, что они там вечно, если не удалять, и так далее)
: “потому что все так говорят” – пиздатая причина
: причина в другом. если использовать document.write уже после загрузки страницы, то все пойдет по пизде т.к. произойдет document.open и создастся новый документ.
: тебе надо задачу решить или попиздеть?
: и это всё? То есть из-за какого-то я извиняюсь идиота, который сделает document.write полсе загрузки страницы, никто ни при каких обстоятельствах не должен вызывать document.write?
: идиот – тот, кто пишет код, который будет работать только до загурзки старницы 😉
: “залить файлы на CDN” это не решение задачи. в общем случае*, на CDN залить файлы нельзя
* – кажется, существуют комбинированные решения хостинг + CDN, на которые можно “залить файлы”
: например, если использовать CloudFront, это решит проблему показа файлов пользователю, но их все равно надо где-то хранить – из этого хранилища их будет брать CloudFront. например: на s3, на своем сервере, в базе данных
итак, мы по совету прикрутили CDN, но вопрос “где хранить файлы?” остается открытым. спасибо, всезнайка !
: Истеричка.
: нормальные CDN идут вкупе с файлопомойкой. Сюрприз!
: а нельзя повесить хэндлер на какой-нибудь onDocumentLoad, получить document.body / document.head[0] и добавлять через appendChild? в JSONP так делают. по-моему это самое тру.
: надо писать посты на блогу в блокноте