Shanraq.org Shanraq.org
Выпуск 1.1: веб-версия и честная модель облака
Общество

Информатика: создаём своего цифрового помощника Урок 46 из 46

Выпуск 1.1: веб-версия и честная модель облака

Выпустим локальную веб-версию помощника, проверим старые правила и честно обозначим пределы «облака».

Где мы на карте

Это урок 46 из 72, блок «Интернет, веб и облако» (39–46). Мы продолжаем один проект: три вымышленные записи и пять результатов напоминания из версии 1.0 должны сохраниться. На опорной схеме показан ровно тот переход, который можно объяснить и проверить; стрелка не означает, что все промежуточные устройства нарисованы.

Выпуск 1.1: веб-версия и честная модель облака

Ситуация и вопрос

Одноклассник видит страницу в браузере и говорит: «Значит, проект уже в интернете». Проверьте утверждение. Программа слушает 127.0.0.1, а это адрес того же компьютера; другой человек не получит к ней доступ через публичный интернет. Зато мы можем реально проверить веб-интерфейс и объяснить, что потребовалось бы для следующего шага.

Новые слова без пропусков

Развёртывание — запуск версии в среде, доступной целевой аудитории. Облако — арендованные или управляемые вычислительные ресурсы, а не отдельный физический вид сети. Loopback — путь компьютера к самому себе через 127.0.0.1. Регрессия — поломка правила, которое уже работало. Контрольная точка — сохранённые код, данные, инструкции и проверяемые результаты. Граница доверия отделяет местный учебный процесс от открытого сайта с пользователями и их данными.

Опорный сигнал

Прочитайте схему слева направо. Для каждой стрелки назовите вход, действие и проверяемый результат. Затем закройте подпись следующей карточки и предскажите её своими словами. Вернитесь к реальному примеру: различайте учебную аналогию, работу localhost и возможный удалённый сайт. Если картинка обещает больше, чем объяснение, исправьте объяснение или рисунок.

Разбираем шаг за шагом

Из step-04 запустите python3 web_assistant.py --port 8765 и откройте http://127.0.0.1:8765/?lang=ru&today=2026-10-09. Получите три исходных задачи и статусы REMIND, DONE, NO_DATE, как в выпуске 1.0. Смените язык на kz, затем на en: подписи меняются, расчёт нет. Укажите дату 2026-02-29 и убедитесь, что ответ 400. Попробуйте POST и получите 405. Сравните контрольную сумму tasks.json до и после: файл неизменен. Затем запустите python3 -m unittest discover -s tests: это повторяемая проверка поведения, а не оценка внешнего вида на глаз.

Предскажите и проверьте

Не запускайте код сразу. Выпишите точный ожидаемый результат, включая порядок строк и символы. Объясните, что код доказывает, а чего не доказывает: этот маленький пример моделирует одно правило и не создаёт настоящий интернет, TLS-сертификат или открытый сервер. Затем выполните фрагмент в каталоге step-04 и сравните результат посимвольно. Измените один вход, сначала предскажите новый результат, потом проверьте.

from datetime import date
from assistant_core import load_document, reminder_status
tasks = load_document("tasks.json")["tasks"]
for task in tasks:
    print(task["id"], reminder_status(task, date(2026, 10, 9)))

Ожидаемый вывод

t-01 REMIND
t-02 DONE
t-03 NO_DATE

Поймайте ошибку

Публично открывать этот http.server нельзя: стандартная библиотека предупреждает, что он имеет только базовые проверки и не подходит для production. На локальном HTTP нет TLS, регистрации, разграничения прав и защиты пользовательских данных. Поэтому слова «веб-версия» означают браузерный интерфейс на своей машине, а «модель облака» — понимание будущей архитектуры, не уже выполненный деплой.

Изменение проекта

Сохраните step-04: точную копию ядра 1.0, вымышленные три записи, новый читающий веб-сервер, тесты и инструкции на трёх языках. Не меняйте формат tasks.json и пять результатов напоминаний. В журнале решений запишите будущие задачи: HTTPS, пользователи, права, безопасное хранение и профессиональный сервер — это материал следующих блоков.

Задание и доказательство

Для зачёта объясните 8 из 10 вопросов об адресе, DNS, доставке, TLS, HTTP, HTML и доступности; покажите три языка и три статуса. Через неделю повторите минимум 7 ответов. Передайте инструкцию человеку, который не писал код: он должен открыть страницу, найти несуществующую дату и объяснить, почему файл остался прежним.

Десять вопросов для самопроверки

  1. Кто начинает запрос и кто отвечает, если сервер запущен на вашем компьютере?
  2. Что означает 127.0.0.1 и почему страница может открываться без интернета?
  3. Почему один IP-адрес не доказывает, что за ним один человек?
  4. Что возвращает DNS и почему этого недостаточно для доверия сайту?
  5. Как TCP и простая UDP-модель ведут себя при потере части 2?
  6. Что проверяет TLS и чего не обещает значок замка?
  7. Какие ответы дают 200, 400, 404 и 405 в нашем проекте?
  8. Почему GET у нас не отмечает задачу выполненной?
  9. Зачем странице связка label/input и экранирование названия задачи?
  10. Какие три изменения нужны прежде, чем дать доступ семьям через интернет?

Перенос в новую ситуацию

Школа просит показать список задач всем семьям. Что изменится в адресе, доступе, защите данных и выборе серверной среды? Назовите минимум три требования, прежде чем вы даже подумаете переносить эту учебную программу из localhost.

Возврат через 1, 7 и 30 дней

Через 1 день нарисуйте главный переход по памяти и приведите контрпример к слишком простой аналогии. Через 7 дней объясните новый случай однокласснику, не читая готовый текст; проверьте не менее 7 из 10 вопросов. Через 30 дней повторите опыт с локальной веб-версией и убедитесь, что три исходных задачи и пять правил сохранились. Запишите, какой термин всё ещё непонятен, и вернитесь к его первому объяснению.

Первоисточник для проверки

Официальная документация

Все уроки курса

Все уроки

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

Проверить доказательство проекта

Запишите наблюдение, объяснение, исправление ошибки и изменение своего проекта. Модель укажет первую перепутанную или недоказанную связь, но не даст готовый ответ.

Чтобы проверить, нужно войти. Войти

Комментарии (0)

Пока нет комментариев. Будьте первым.