Лекции/мастер-классы для участников

Разработка задач для онлайн курсов - вторая половина сентября (22 или 29)

Архитектура:

Как видит студент:

терминал

многократная отправка решения

Как видит автор задачи:

Bootstrap

Pytest, 2.7

Docker

Пробуем сделать простую задачу - заменить содержимое файла на заданное

Очевидные грабли

Pytest

Русский язык

Использование слешей

Неочевидные грабли

Права в Bootstrap

Использование репозиториев

Текущая директория

Преступная смекалка студентов курса

Разные условия задач

Решение - использовать заготовку

Генерация SSH-ключа

Заготовка bootstrap

Как писать генератор задания

Заготовка Pytest

Жульничество и точное выполение буквы задания

Цель задания - отработать определенный навык

Часто есть обходные пути

Как можно отсечь возможности для этого:

Как удалить sudo доступ дефолтного пользователя

Как проверить запуск определенных команд (история команд)

Посложнее:

кастомная libc и переопределение библиотечных вызовов

очень хитрая настройка прав

Известные проблемы https://support.stepik.org/en/support/solutions/articles/19000015512-linux-challenge-issues

Отладка веб-приложений (29.09 или 06.09)

https://stepik.org/course/154

Общая схема работы архитектуры клиент-сервер

Коды ошибок HTTP

Когда сломался JS/верстка

Режим инкогнито!!

Консоль

выполнение JS

проверка CSS свойств

Когда сломался сервер:

Логи

апача

приложения в веб-интерфейсе

syslog

Типичные грабли

HTML / JS

отностиельные пути

внешние ресурсы (js, img)

фрагментированный JS (внутри HTML)

js, не обернутый в функции или $(document).ready

jquery вместо dom

console.log

поле id и class у тегов

Бакенд:

Используйте максимум возможностей БД (пример с list(…))

локальное имя в hosts для удобства

apache вместо run.py

MongoDb (29.09 или 06.09)

https://bitbucket.org/mark_zaslavskiy/nosql_inroduction/src/353f681b18fbdd4b17d58fa062f51f8a0f6dc413/slides/3_document-oriented_databases.pdf?at=master&fileviewer=file-view-default

В перспективе будет заменено на презентацию и модуль в MOOC.

Установка

apt-get install

как проверить успешность установки

как отключить журналироварние

mongo shell -

как запустить,

подключится к БД,

как просмотреть список БД,

Идея

базу не нужно создавать явно

таблицы = коллекции

нет ссылок между коллекциями

must have id

CRUD

insert - создаем новый документ

update - меняем/удаляем поля

remove -

find

поиск по одному полю

or, and

поиск по подстроке и рег.выражению

поиск по вложенным полям

sort, limit, offset

как проделать запросы в python.

Написание тестов (???)

К лекции нужно сделать репо с примерами.

Какие бывают тесты и зачем

Общая идея:

тестируем хорошее и плохое поведение

чистая тестовая среда

не подгоняем тестовую среду под тесты

Пример юнит-теста на Python

Как запускать много тестов одним скриптом

Пример Selenium теста Python

Настройка selenium

Параметризованный тест

Скрипт для запуска всех тестов

Докер и развертывание (??)

https://www.katacoda.com/courses/docker

Очень примерно про архитектуру

Устанавливаем докер (используем правильный репо)

Запускаем простой образ

Смотрим как он выглядит в docker ps

Убиваем docker kill

Cмотрим на образы в docker image

Добавляем Vagrant

Установка

Настройка плагинов

пишем vagrant-file

Указываем образ ubuntu14:04 (или аналогичный)

Указываем проброс портов

Запускаем и убеждаемся, что проброс работает

Подключаемся по ссш

Смотрим статус vagrnt status

Убиваем конфигурацию vagrant destroy -f

Создаем свой Docker-образ

Через Dockerfile

Идея

Заготовка Dockerfile - какие правила написания

Собираем образ

Отправляем образ в репозиторий

Через docker commit