diff --git a/99 System/Export/Подготовка к экзамену по веб-разработке.html b/99 System/Export/Подготовка к экзамену по веб-разработке.html index b578b5a..9e1b437 100644 --- a/99 System/Export/Подготовка к экзамену по веб-разработке.html +++ b/99 System/Export/Подготовка к экзамену по веб-разработке.html @@ -184,6 +184,12 @@ margin-top: 0; } + .back { + margin: -4px 0 14px; + color: var(--muted); + font-size: 14px; + } + .pill { display: inline-block; margin: 0 6px 6px 0; @@ -253,108 +259,108 @@

Карта тем

-
+

1. Адресация, IPv4, IPv6

-

Кратко:IP-адрес указывает узел сети. IPv4 - 32 бита, IPv6 - 128 бит. Домен через DNS превращается в IP.

+

Кратко:IP-адрес нужен, чтобы доставить пакет до конкретного узла сети. IPv4 записывается как четыре числа и занимает 32 бита, поэтому адресов мало; IPv6 занимает 128 бит и записывается шестнадцатеричными блоками. Доменное имя само по себе не является сетевым адресом: перед подключением DNS превращает его в IP.

Подробнее:адресация и IP

Вопрос:Чем IPv4 отличается от IPv6?

-
+

2. TCP, порты, NAT и подсети

-

Кратко:TCP отвечает за надёжную передачу, порт выбирает приложение, маска делит сеть, NAT переводит приватные адреса в публичные.

+

Кратко:TCP устанавливает соединение и контролирует доставку данных: порядок, подтверждения и повторную отправку. IP выбирает устройство, а порт выбирает приложение на этом устройстве. Маска подсети отделяет адрес сети от адреса хоста, а NAT позволяет приватным адресам локальной сети выходить наружу через публичный IP.

Подробнее:TCP, порты, NAT

Вопрос:Зачем нужен NAT и как он связан с портами?

-
+

3. DNS, URI, URL, URN

-

Кратко:DNS находит IP по имени. URI - общий идентификатор, URL - адрес получения ресурса, URN - устойчивое имя.

+

Кратко:DNS сопоставляет доменное имя с IP-адресом, чтобы браузер понял, к какому серверу подключаться. URI - общее понятие для идентификатора ресурса. URL является частным случаем URI: он указывает, где находится ресурс и как его получить; URN задаёт устойчивое имя без обязательного сетевого адреса.

Подробнее:DNS и идентификаторы

Вопрос:Почему URL является URI, но не каждый URI является URL?

-
+

4. HTTP, HTTPS, HTTP/3

-

Кратко:HTTP - запрос и ответ. HTTPS добавляет TLS. HTTP/3 переносит HTTP на QUIC поверх UDP.

+

Кратко:HTTP - прикладной протокол обмена сообщениями: клиент отправляет запрос, сервер возвращает ответ со статусом, заголовками и, возможно, телом. GET обычно получает данные, POST отправляет данные в теле запроса. HTTPS - это HTTP внутри TLS-соединения, а HTTP/3 сохраняет смысл HTTP, но использует QUIC поверх UDP.

Подробнее:HTTP-протоколы

Вопрос:Чем GET отличается от POST?

-
+

5. Идентификация, аутентификация, OAuth 2.0

-

Кратко:Идентификация - кто ты, аутентификация - докажи, авторизация - что тебе можно. OAuth 2.0 выдаёт ограниченный доступ без передачи пароля.

+

Кратко:Идентификация отвечает на вопрос "кто пользователь?", аутентификация проверяет доказательство личности, например пароль или код. Авторизация решает, какие действия разрешены уже проверенному пользователю. OAuth 2.0 используется, чтобы стороннее приложение получило ограниченный access token без получения пароля пользователя.

Подробнее:доступ и OAuth

Вопрос:Почему OAuth 2.0 называют протоколом авторизации?

-
+

6. HTML-документ

-

Кратко:HTML описывает структуру страницы. head хранит служебные данные, body - видимое содержимое.

+

Кратко:HTML описывает смысловую структуру страницы: заголовки, абзацы, ссылки, изображения, таблицы и разделы. В head находятся служебные данные: кодировка, viewport, заголовок вкладки, подключение CSS и скриптов. В body находится видимый контент; семантические теги помогают показать назначение частей страницы.

Подробнее:HTML-структура

Вопрос:Для чего нужен meta viewport?

-
+

7. HTML-формы

-

Кратко:Форма отправляет данные на сервер. name уходит в запросе, id связывает поле с label.

+

Кратко:HTML-форма собирает ввод пользователя и отправляет его на сервер по адресу из action методом GET или POST. Атрибут name определяет имя параметра в запросе, а id обычно нужен для связи поля с label. required, type и другие атрибуты дают базовую проверку в браузере.

Подробнее:HTML Forms

Вопрос:Чем radio отличается от checkbox?

-
+

8. CSS selectors и специфичность

-

Кратко:Селектор выбирает элементы. Специфичность решает, какое CSS-правило победит при конфликте.

+

Кратко:CSS-селектор выбирает элементы, к которым применяются свойства. При конфликте правил учитываются каскад, специфичность и порядок записи. ID сильнее класса, класс сильнее тега; если специфичность равна, побеждает правило, написанное ниже.

Подробнее:CSS selectors

Вопрос:Какой селектор сильнее: body .content или div p?

-
+

9. CSS box model и базовые свойства

-

Кратко:Блок состоит из content, padding, border и margin. border-box включает padding и border в заданную ширину.

+

Кратко:Каждый элемент в CSS рассматривается как прямоугольный блок: content, padding, border и margin. При content-box ширина задаёт только content, а padding и border добавляются сверху. При border-box заданная ширина уже включает content, padding и border, поэтому размеры проще контролировать.

Подробнее:блочная модель

Вопрос:Какая ширина у блока с width:100px и box-sizing:border-box?

-
+

10. Flexbox и Grid

-

Кратко:Flexbox раскладывает по одной оси. Grid работает со строками и столбцами одновременно.

+

Кратко:Flexbox удобен для одномерной раскладки: элементы распределяются вдоль главной оси, а поперечная ось используется для выравнивания. Grid решает двумерные задачи: одновременно управляет строками, столбцами, линиями, ячейками и областями. fr, repeat() и minmax() помогают задавать гибкую сетку.

Подробнее:Flexbox и Grid

Вопрос:Какое значение align-items по умолчанию?

-
+

11. Django models и ORM queries

-

Кратко:Модель описывает таблицу. ORM строит запросы через Python. QuerySet ленивый и поддерживает цепочки методов.

+

Кратко:Модель Django описывает таблицу базы данных: класс - таблица, поле - колонка, объект - строка. ORM позволяет строить SQL-запросы через Python-методы вроде filter(), get(), annotate() и aggregate(). QuerySet ленивый: запрос обычно выполняется только тогда, когда реально нужны данные.

Подробнее:Django models и queries

Вопрос:Когда использовать select_related, а когда prefetch_related?

-
+

12. Django views, URLs, templates, forms

-

Кратко:View принимает request и возвращает response. URL связывает путь и view. Template получает context. Form валидирует данные.

+

Кратко:Django view принимает request и возвращает HTTP-ответ: HTML, redirect, JSON или ошибку. URL-маршрут связывает путь с view, шаблон получает context и отображает данные, а форма описывает поля, валидирует ввод и отдаёт очищенные значения через cleaned_data. FBV проще как функция, CBV удобнее для типовых страниц.

Подробнее:Django web layer

Вопрос:Что будет, если в ListView не указать ни model, ни queryset?

@@ -467,6 +473,7 @@

Адресация и IP

+

← к краткой карточке

IP-адрес нужен, чтобы доставить пакет до конкретного узла сети. Доменное имя удобно человеку, но сеть работает с IP.

IPv4 32 бита, запись вроде 192.168.1.10. Адресов мало, поэтому используют приватные диапазоны и NAT.

IPv6 128 бит, запись вроде 2001:db8::1. Адресов намного больше, запись можно сокращать через ::.

@@ -475,6 +482,7 @@

TCP, порты, NAT и подсети

+

← к краткой карточке

TCP устанавливает соединение через три шага: SYN, SYN-ACK, ACK. Он следит за порядком данных, потерями и повторной отправкой.

Порт выбирает приложение внутри одного IP-адреса. HTTP обычно работает на 80, HTTPS - на 443.

Маска подсети показывает, где в IP-адресе часть сети, а где часть хоста. В 192.168.1.10/24 сеть - 192.168.1.0, хост - .10.

@@ -483,6 +491,7 @@

DNS и URI/URL/URN

+

← к краткой карточке

DNS - система имён. Она ищет IP-адрес по домену. Упрощённо: кэш браузера, кэш ОС, resolver, root, TLD, авторитативный DNS-сервер.

@@ -497,6 +506,7 @@

HTTP, HTTPS, HTTP/3

+

← к краткой карточке

HTTP-сообщение состоит из стартовой строки, заголовков, пустой строки и необязательного тела.

GET /posts/?page=2 HTTP/1.1
 Host: example.com
@@ -511,6 +521,7 @@ Content-Type: text/html

Идентификация, аутентификация, авторизация, OAuth 2.0

+

← к краткой карточке

Идентификация: пользователь сообщает, кто он. Аутентификация: система проверяет доказательство. Авторизация: система проверяет права.

OAuth 2.0 позволяет приложению получить access token без знания пароля пользователя. Права ограничиваются scope, сроком жизни токена и настройками сервиса.

    @@ -524,6 +535,7 @@ Content-Type: text/html

    HTML-структура

    +

    ← к краткой карточке

    HTML задаёт смысловую структуру документа. Комментарий пишется так: <!-- comment -->.

    head содержит meta, title, link, script. meta viewport нужен, чтобы мобильный браузер корректно рассчитывал ширину страницы.

    Блочные элементы занимают строку: div, p, section, form. Строчные идут внутри текста: span, a, strong, em.

    @@ -532,6 +544,7 @@ Content-Type: text/html

    HTML Forms

    +

    ← к краткой карточке

    form отправляет данные. action задаёт URL, method - способ отправки: get или post.

    id уникален на странице и связывает поле с label. name - имя параметра, которое уйдёт на сервер.

    <label for="email">Email</label>
    @@ -542,6 +555,7 @@ Content-Type: text/html
     
       

    CSS selectors и специфичность

    +

    ← к краткой карточке

    Селекторы: *, p, .class, #id, div p, div > p, h2 + p, input[required], :hover, :nth-child(2).

    Специфичность: inline-style сильнее id, id сильнее class/attribute/pseudo-class, class сильнее tag.

    body .content сильнее div p, потому что класс имеет больший вес, чем селектор тега.

    @@ -550,6 +564,7 @@ Content-Type: text/html

    CSS box model и базовые свойства

    +

    ← к краткой карточке

    Блок состоит из content, padding, border и margin. content-box считает width только как ширину контента. border-box включает padding и border в width.

    width: 100px;
     padding: 10px;
    @@ -561,6 +576,7 @@ box-sizing: border-box;

    Flexbox и Grid

    +

    ← к краткой карточке

    Flexbox создаётся через display: flex или display: inline-flex. Главная ось зависит от flex-direction.

    justify-content выравнивает по главной оси, align-items - по поперечной. Значение align-items по умолчанию - stretch.

    flex-grow отвечает за рост, flex-shrink - за сжатие, flex-basis - за базовый размер.

    @@ -569,6 +585,7 @@ box-sizing: border-box;

    Django models и ORM queries

    +

    ← к краткой карточке

    Модель - Python-класс таблицы. Поле - колонка. Объект - строка. Если не указать primary key, Django создаёт id.

    CharField требует max_length. null=True разрешает NULL в БД, blank=True разрешает пустое значение в форме.

    ForeignKey - многие к одному. related_name задаёт обратную связь. ManyToManyField(..., through="Model") задаёт промежуточную модель.

    @@ -585,6 +602,7 @@ box-sizing: border-box;

    Django views, URLs, templates, forms

    +

    ← к краткой карточке

    FBV - функция. Она принимает request и возвращает response. В render() первым аргументом должен быть request.

    def home(request):
         return render(request, "index.html", {"title": "Home"})
    diff --git a/99 System/Export/Подготовка к экзамену по веб-разработке.pdf b/99 System/Export/Подготовка к экзамену по веб-разработке.pdf index 6ad8dc5..4a00b0a 100644 Binary files a/99 System/Export/Подготовка к экзамену по веб-разработке.pdf and b/99 System/Export/Подготовка к экзамену по веб-разработке.pdf differ
ЗаписьСмысл