Адресация в Интернете. IPv4. IPv6.
В TCP/IP есть физический адрес, IP-адрес и символьное DNS-имя. IPv4 — 32 бита, 4 октета по 0-255; IPv6 — 128 бит, шестнадцатеричная запись и намного больше адресов.
Подробно: IP-адресацияВ TCP/IP есть физический адрес, IP-адрес и символьное DNS-имя. IPv4 — 32 бита, 4 октета по 0-255; IPv6 — 128 бит, шестнадцатеричная запись и намного больше адресов.
Подробно: IP-адресацияTCP — транспортный протокол с установлением соединения, порядком пакетов, подтверждениями и повторной передачей. Надёжнее UDP, но тяжелее по задержкам.
Подробно: TCPМаска отделяет сетевую часть IPv4-адреса от хостовой. `/24` значит 24 бита сети и 8 бит хоста; `255.255.255.0` — классический пример такой маски.
Подробно: подсетиПубличные адреса распределяются через ICANN/IANA и региональные регистраторы. NAT переводит приватные адреса во внешний адрес. `127.0.0.1`/`localhost` указывает на сам хост.
Подробно: NAT и localhostDNS сопоставляет доменные имена с IP-адресами. Цепочка обычно идёт через кэширующий resolver, корневые серверы, TLD-серверы и авторитативные серверы домена.
Подробно: DNSHTTP — прикладной протокол WWW. Клиент отправляет запрос, сервер возвращает ответ. HTTP stateless: связь между запросами не хранится без cookies, сессий или токенов.
Подробно: HTTPСообщение состоит из стартовой строки, заголовков, пустой строки и тела. Методы: `GET`, `POST`, `HEAD`, `PUT`, `PATCH`, `DELETE`. Коды: `2xx` успех, `3xx` редирект, `4xx` ошибка клиента, `5xx` ошибка сервера.
Подробно: HTTP-сообщенияHTTPS — HTTP поверх TLS. Даёт шифрование, проверку подлинности сервера через сертификат и защиту от подмены данных. Порт по умолчанию — `443`.
Подробно: HTTPSHTTP/3 работает поверх QUIC/UDP. Семантика HTTP сохраняется, но транспорт меняется: независимые потоки, встроенный TLS 1.3, меньше блокировок при потере пакетов.
Подробно: HTTP/3Порт указывает процесс внутри IP-адреса. Всего 0-65535. HTTP обычно `80/tcp`, HTTPS `443/tcp`, DNS `53`, SSH `22`, альтернативный HTTP часто `8080`.
Подробно: портыИдентификация: "кто ты?". Аутентификация: "докажи". Авторизация: "что тебе разрешено?". В HTTP часто встречаются Basic, Digest и Bearer.
Подробно: authOAuth 2.0 — протокол авторизации: приложение получает ограниченный доступ к ресурсам пользователя через токен, не получая пароль пользователя.
Подробно: OAuth 2.0URI — общий идентификатор ресурса. URL указывает местоположение и способ получения. URN задаёт устойчивое имя без привязки к расположению. Все URL — URI, но не все URI — URL.
Подробно: URI/URL/URNHTML5-документ начинается с <!doctype html>, затем <html>, внутри <head> с метаданными и <body> с видимым содержимым.
Комментарий пишется как <!-- текст -->. Браузер его не отображает, но он виден в исходном коде.
В <head> обычно находятся <title>, <meta>, <link>, <style>, <script> и технические данные страницы.
<meta charset="utf-8"> задаёт кодировку. viewport нужен адаптивной вёрстке: width=device-width, initial-scale=1.0.
Нормальный поток — базовое расположение элементов без flex/grid/position: блочные идут сверху вниз, строчные текут внутри строки.
Подробно: HTMLБлочные занимают доступную ширину и начинаются с новой строки: `div`, `p`, `section`. Строчные занимают место по содержимому: `span`, `a`, `strong`.
Подробно: HTML`header`, `nav`, `main`, `section`, `article`, `aside`, `footer` описывают смысл блоков. Это важно для доступности, SEO и читаемости кода.
Подробно: HTMLАтрибуты уточняют элемент: `href`, `src`, `alt`, `class`, `id`, `name`, `type`. Обычно пишутся в открывающем теге.
Подробно: HTML`class` задаёт один или несколько CSS-классов. Один класс можно использовать на многих элементах.
Подробно: HTML`id` должен быть уникален на странице. Используется для якорей, JS и CSS-селектора `#id`.
Подробно: HTML`h1-h6` задают структуру заголовков, `p` — абзац, `ul/ol/li` — списки, `table/tr/th/td` — табличные данные.
Подробно: HTMLСсылка: <a href="...">. Картинка: <img src="..." alt="...">; alt важен для доступности и случаев, когда изображение не загрузилось.
В HTML последовательности пробелов схлопываются. Перенос строки в коде обычно не равен переносу на странице; для явного переноса есть <br>.
`form` собирает пользовательский ввод. Главные атрибуты: `action` — куда отправлять, `method` — `get` или `post`.
Подробно: HTML forms`id` связывает поле с `label` и должен быть уникальным. `name` — имя параметра, под которым значение уйдёт на сервер.
Подробно: HTML forms`radio` выбирает один вариант в группе с одинаковым `name`. `checkbox` — независимый флажок. `submit` отправляет форму.
Подробно: HTML forms`label` подписывает поле и улучшает доступность. Связь делается через `for="field-id"` или вложением input внутрь label.
Подробно: HTML forms`fieldset` объединяет связанные поля, `legend` задаёт подпись группы. Часто используется для radio-групп.
Подробно: HTML forms`required` запрещает отправку формы браузером, если поле пустое. Серверную валидацию всё равно нужно делать отдельно.
Подробно: HTML forms`placeholder` показывает подсказку внутри пустого поля. Это не замена `label`, потому что исчезает при вводе.
Подробно: HTML forms`button` без `type` внутри формы часто ведёт себя как `submit`. Для обычной кнопки явно пишут `type="button"`.
Подробно: HTML forms`textarea` — многострочное текстовое поле. Текст по умолчанию пишется между открывающим и закрывающим тегом.
Подробно: HTML forms`*` выбирает все элементы. Часто применяют для сброса `box-sizing`, но специфичность у него нулевая.
Подробно: CSS selectors`p` выбирает теги, `.card` — класс, `#main` — уникальный id. ID специфичнее класса и тега.
Подробно: CSS selectors`A B` — потомок, `A > B` — прямой ребёнок, `A + B` — следующий сосед, `A ~ B` — последующие соседи.
Подробно: CSS selectors`[attr]`, `[type="email"]`, `a[href^="https"]` выбирают элементы по наличию или значению атрибута.
Подробно: CSS selectors`:hover`, `:focus`, `:checked`, `:nth-child()` выбирают состояние или позицию элемента. Структурные псевдоклассы зависят от места в DOM.
Подробно: CSS selectorsСелекторы через запятую получают одно правило: `h1, h2, h3 { margin: 0; }`.
Подробно: CSS selectorsКаскад решает конфликт правил по важности, специфичности и порядку. Наследуются в основном текстовые свойства, например `color` и `font-family`.
Подробно: CSS selectorsУсловный вес: inline > ID > классы/атрибуты/псевдоклассы > теги/псевдоэлементы. При равенстве побеждает правило ниже в коде.
Подробно: CSS selectorsБлок состоит из content, padding, border и margin. `box-sizing: border-box` включает padding и border в заданную ширину.
Подробно: CSS свойстваОсновные свойства: `background-color`, `background-image`, `background-repeat`, `background-position`, `background-size`.
Подробно: CSS свойства`margin` задаёт внешний отступ. Для центрирования блочного элемента с заданной шириной часто используют `margin-left/right: auto`.
Подробно: CSS свойства`font-family`, `font-size`, `font-weight`, `font-style` задают семейство, размер, толщину и наклон текста.
Подробно: CSS свойства`text-align` управляет горизонтальным выравниванием текста, `text-decoration` — подчёркиванием и другими линиями.
Подробно: CSS свойства`line-height` задаёт высоту строки, `letter-spacing` — расстояние между буквами. На читаемость влияют сильнее, чем кажется.
Подробно: CSS свойства`text-shadow: x y blur color;` добавляет тень к тексту. В тестах важно помнить порядок смещения, размытия и цвета.
Подробно: CSS свойства`display: flex` создаёт flex-контейнер. Главная ось задаётся `flex-direction`, поперечная идёт перпендикулярно.
Подробно: Flex/Grid`display: inline-flex` делает контейнер flex-контейнером, но сам контейнер ведёт себя как строчный элемент во внешнем потоке.
Подробно: Flex/Grid`justify-content` выравнивает по главной оси, `align-items` — по поперечной. `align-content` работает при нескольких строках.
Подробно: Flex/Grid`flex-basis` — базовый размер, `flex-grow` — как элемент растёт, `flex-shrink` — как сжимается при нехватке места.
Подробно: Flex/Grid`display: grid` создаёт двумерную сетку. Колонки задаются `grid-template-columns`, строки — `grid-template-rows`.
Подробно: Flex/Grid`fr` — доля свободного пространства grid-контейнера. `1fr 2fr` делит свободное место в пропорции 1 к 2.
Подробно: Flex/Grid`repeat(3, 1fr)` повторяет трек. `minmax(200px, 1fr)` задаёт минимум и максимум размера трека.
Подробно: Flex/GridМодель — класс-наследник `models.Model`; поля класса описывают столбцы таблицы. Модели обычно лежат в `models.py` приложения.
Подробно: Django modelsПервичный ключ уникально идентифицирует запись. Если не задать явно, Django создаёт поле `id` автоматически.
Подробно: Django models`makemigrations` создаёт файлы миграций из изменений моделей, `migrate` применяет их к базе данных.
Подробно: Django models`class Meta` задаёт метаданные модели: `ordering`, `verbose_name`, `db_table`, ограничения и другие настройки.
Подробно: Django models`null=True` разрешает `NULL` в БД. `blank=True` разрешает пустое значение на уровне форм/валидации Django.
Подробно: Django models`CharField` хранит короткую строку и требует `max_length`. Для длинного текста обычно берут `TextField`.
Подробно: Django models`ForeignKey` задаёт связь многие-к-одному. `on_delete` определяет поведение при удалении связанного объекта; `related_name` задаёт имя обратной связи.
Подробно: Django models`ManyToManyField` задаёт связь многие-ко-многим. Django создаёт промежуточную таблицу автоматически, либо можно указать свою через `through`.
Подробно: Django modelsFunction-Based View — функция, которая принимает `request` и возвращает `HttpResponse`, `render`, `redirect` или ошибку.
Подробно: Django FBV`render(request, template, context)` рендерит шаблон с контекстом и возвращает `HttpResponse`.
Подробно: Django FBVДанные передаются словарём context: ключи становятся именами переменных в шаблоне.
Подробно: Django FBV`get_object_or_404(Model, pk=pk)` возвращает объект или генерирует HTTP 404, если записи нет.
Подробно: Django FBVВ `urlpatterns` функция передаётся напрямую: `path("posts/<int:pk>/", views.detail, name="detail")`.
Подробно: Django FBV`TemplateView` показывает шаблон, `DetailView` — один объект, `ListView` — список объектов.
Подробно: Django CBVДля `ListView`/`DetailView` можно указать `model = Post`; Django сам построит queryset и стандартные имена шаблонов.
Подробно: Django CBVДополнительный контекст обычно добавляют через `get_context_data`, вызывая `super()` и дополняя словарь.
Подробно: Django CBV`ListView` отдаёт `object_list` и `modelname_list`; `DetailView` отдаёт `object` и `modelname`.
Подробно: Django CBV`get_queryset()` меняет список объектов, `get_object()` — получение одного объекта. Часто используют фильтрацию по пользователю или статусу.
Подробно: Django CBVВ `ListView` достаточно задать `paginate_by = N`; в шаблоне появится `page_obj`.
Подробно: Django CBVДля `DetailView`: `app/model_detail.html`; для `ListView`: `app/model_list.html`, если не задан `template_name`.
Подробно: Django CBVПри переопределении методов вроде `get_context_data` обычно сначала вызывают `super()`, чтобы не потерять стандартный контекст.
Подробно: Django CBVКласс подключается через `.as_view()`: `path("", PostListView.as_view(), name="post_list")`.
Подробно: Django CBV`path()` задаёт маршрут, view, kwargs и имя. `re_path()` использует regex. `reverse()` строит URL по имени маршрута.
Подробно: Django URLsПеременные пишутся как `{{ value }}`, теги как `{% for %}`, фильтры как `{{ name|lower }}`. Наследование делается через `extends` и `block`.
Подробно: Django templatesQuerySet ленивый и цепочечный. Важно знать `get`, `filter`, `exclude`, `order_by`, `annotate`, `aggregate`, `Q`, `F`, `select_related`, `prefetch_related`.
Подробно: Django queries`forms.Form` — ручная форма, `ModelForm` строится по модели. Валидация через `is_valid`, `cleaned_data`, `clean_field`, `clean`.
Подробно: Django formsПолный текст исходной заметки.
Назад: Адресация, IPv4, IPv6
Полный текст исходной заметки.
Назад: TCP
Полный текст исходной заметки.
Назад: Маска подсети
Полный текст исходной заметки.
Назад: NAT, localhost, подсети
Полный текст исходной заметки.
Назад: DNS
Полный текст исходной заметки.
Назад: HTTP · HTTP-запрос/ответ · HTTPS · HTTP/3
Полный текст исходной заметки.
Назад: Порты
Полный текст исходной заметки.
Назад: Идентификация/auth
Полный текст исходной заметки.
Назад: OAuth 2.0
Полный текст исходной заметки.
Назад: URI, URL, URN
Полный текст исходной заметки.
Назад: HTML · HTML Forms
Полный текст исходной заметки.
Назад: CSS
Полный текст исходной заметки.
Назад: Flexbox и Grid
Полный текст исходной заметки.
Назад: Django models · Django queries
Полный текст исходной заметки.
Назад: Django FBV · Django CBV · Django URLs · Django templates
Полный текст исходной заметки.
Назад: Django forms