C ++ позволяет перегружать операторы >>
и <<
. std::stringstream
является производной от std::istream
и наследует перегрузки операторов >>
из std::istream
.
std::istream
имеет множество перегрузок для многих распространенных типов. Вы можете найти их список здесь .
Типичная перегрузка оператора std::istream
>>
выглядит следующим образом:
std::istream& operator>>(std::istream& stream, YourType& var) {
/*
** code here to parse and read a 'YourType' into 'var'
*/
/* var is set */
return stream; /* return the same stream to allow chaining */
}
Когда вы делаете some_stream >> YourType_object
, вызывается соответствующая перегрузка оператора >>
. В вышеупомянутом случае наша перегрузка оператора вызывается с параметром stream
, принимающим some_stream
, и var
, принимающим YourType_object
.
Перегрузки >>
(и перегрузки <<
тоже) интеллектуально возвращают поток, которым они управляли; тем самым, позволяя объединить ряд операторов >>
.
Объясните связь модели DOM с каждая из следующих технологий: HTML, CSS, JavaScript.
Цель здесь состоит в том, чтобы дать понять, что студент понимает, что HTML генерирует структуру DOM, CSS влияет на то, как эта структура отображается, а JavaScript влияет на то, как эта структура изменяется. Если вы понимаете, как все это связано с DOM, все кодирование на стороне клиента становится простым.
Забавный вопрос :-) Как насчет ...
При веб-разработке вам необходимо разделить контент, стиль и поведение. Опишите, почему это делается и какие технологии вы используете на каком слое. Каждая аббревиатура должна быть написана в полном тексте при первом использовании . (10 стр)
или ...
Опишите, что происходит в веб-браузере (шаг за шагом), когда веб-страница передается в Интернете с веб-сервера по протоколу передачи гипертекста клиенту. Рассмотрим все различные технологии, которые вы использовали в этом курсе. (10 р)
Вы можете попросить объяснить, как реализовать шаблон MVC. И в этом паттерне MVC каждая технология используется. Скорее как и почему?
Ну, на мгновение надев мою «злую» шляпу, вы могли бы спросить, как внутренняя модель данных должна диктовать макет внешнего интерфейса, и любой ответ, кроме некоторого варианта «Это не так», доходит до возьми класс снова >: -)
Представьте, что вы работаете на охранное агентство, и вам было поручено разработать веб-сайт. Полевые агенты специально просили, чтобы сайт мог менять цвета, чтобы они могли использовать его как в ночное время, так и в офисе. Из того, что вы узнали, опишите, как вы будете отделять контент от структуры, чтобы разрешить переключение между днем и ночью, и какие меры безопасности вы бы предприняли, чтобы предотвратить вражеские данные другого вражеского агентства.
Уточненный вопрос. Я всегда нахожу своих студентов более заинтересованными, когда помещаю их в середину сюжета.
попросить разработать систему базы данных ученика, в которой пользователь может искать в базе данных дату рождения.
здесь следующие технологии могут быть использованы и проверены.
1. HTML для элементов управления формой
2. CSS для эстетики
3. Javascript для проверки даты
4. очень важно объяснить SQL-инъекцию.
5. JSP
6. СЕРВЛЕТЫ
7. JDBC
8. ЛЮБАЯ база данных
9. AJAX
10. Может использоваться шаблон проектирования MVC .
Объясните, что происходит и какие технологии можно использовать, когда пользователь входит на защищенный веб-сайт, используя логин на основе формы, который устанавливает HTTP cookie. (Начиная с HTML-формы до базы данных и обратно в браузер.) Дополнительный вопрос: что меняется при использовании AJAX для входа в систему?
Ответ (основные моменты):
HTML: Форма (с использованием POST ) с полями ввода текста и кнопкой. Безопасность: форма отправляется через HTTPS. Сама страница входа также должна быть страницей HTTPS (в противном случае форму можно было бы заменить на mallory -> MITM)
Javascript: выполняет некоторую базовую проверку (например, пустой пароль) и отображает сообщение об ошибке перед отправкой на сервер.
Сервлет: принимает запрос POST, принимает параметры имени пользователя и пароля (в виде открытого текста), вычисляет (соленый) хеш из пароля, отбрасывает пароль в виде открытого текста.
JDBC: Выбирает хешированный пароль из БД. Используется для сравнения с переданным паролем.
Сервлет: в случае успеха создает новый сеанс (приводит к созданию заголовка cookie). Подготавливает объекты, которые будут использоваться на странице JSP (и сохраняет их в области сеанса или запроса).
JSP: подготавливает HTML-страницу, которая будет отправлена в браузер.
Браузер: получает ответ HTTP, устанавливает cookie и отображает страницу.
Бонус (AJAX): серверу не нужно готовить всю страницу, а только отправляет клиенту необходимые данные и / или фрагменты HTML. Браузер не перезагружает всю страницу, а изменяет текущую страницу с помощью JavaScript. Безопасность: AJAX не может выполнять межсайтовые запросы, поэтому невозможно, чтобы HTTP-страница отправляла данные для входа через HTTPS.
Предостережение
Следует отметить, что это не предназначено для использования в качестве HOWTO для создания механизма безопасного входа в систему. Это описание упрощено и не охватывает все аспекты безопасности. OTOH, как вопрос экзамена, вероятно, следует упростить и адаптировать к содержанию учебной программы.
Почему любой фреймворк, который вы используете, должен генерировать HTML, CSS и JS?
DRY
Что-то вроде ...
Объясните, как вы будет отображать результаты вызова внешнего XML-канала, когда пользователь выполняет какое-либо действие в браузере. Браузер не должен перемещаться.
Хороший ответ мог бы удовлетворить потребность в сценариях на стороне клиента, проблему XSS и компонент на стороне сервера, необходимый для решения проблемы XSS, возможно, с помощью псевдокода или фрагментов.
Поскольку студенты уже разработали упрощенный твиттер во время курса, вы можете задать вопрос, какие дополнительные шаги они сделают, чтобы сделать настоящий сайт твиттера или его клон, и попросить описать каждый шаг от html до ORM / базы данных. Вы можете явно указать технологии, которые должны быть использованы.