courses:mse:lections
Содержание
Лекции/мастер-классы для участников
Разработка задач для онлайн курсов - вторая половина сентября (22 или 29)
- Архитектура:
- Как видит студент:
- терминал
- многократная отправка решения
- Как видит автор задачи:
- Bootstrap
- Pytest, 2.7
- Docker
- Пробуем сделать простую задачу - заменить содержимое файла на заданное
- Очевидные грабли
- Pytest
- Русский язык
- Использование слешей
- Неочевидные грабли
- Права в Bootstrap
- Использование репозиториев
- Текущая директория
- Преступная смекалка студентов курса
- Разные условия задач
- Решение - использовать заготовку
- Генерация SSH-ключа
- Заготовка bootstrap
- Как писать генератор задания
- Заготовка Pytest
- Жульничество и точное выполение буквы задания
- Цель задания - отработать определенный навык
- Часто есть обходные пути
- Как можно отсечь возможности для этого:
- Как удалить sudo доступ дефолтного пользователя
- Как проверить запуск определенных команд (история команд)
- Посложнее:
- кастомная libc и переопределение библиотечных вызовов
- очень хитрая настройка прав
Отладка веб-приложений (29.09 или 06.09)
- Общая схема работы архитектуры клиент-сервер
- Коды ошибок 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)
В перспективе будет заменено на презентацию и модуль в 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