Курс про это ваше программирование
Цели и задачи курса
Познакомить слушателей с основными техниками, использующимися при совместной расработке программного обеспечения, преимущественно под свободной лицензией.
Показать наглядно используемые техники и практики, внушить мотивацию их использования.
Дать возможность опробовать полученные знания и приобрести навыки на базе полу-модельного проекта игры.
Предполагаемый объём курса - 16 часов лекции, 8-16 часов - демонстрации и мастер-классы.
Как попытаться построить курс
Видится три части:
- Общая теория
- Конкретные юзкейсы (особо это всплывёт про стайлгайды, сборку, тестирование, деплой)
- Демонстрация
Попытаться охватить С, shell, Python, js (что ещё?).
Структура курса
- Зачем это всё? Совместная разработка, её эффективность. Роль технологических аспектов (в частности, автоматизации) в повышении производительности и продуктивности разработки.
It's all about code. Стайлгайды.
Теория
- Зачем стайлгайды нужны
- Стайлгайды - не только про короткие строки и имена переменных.
Юзкейсы
- Оформление кода.
Демонстрация
- astyle
- pep8/py.test
Хранение кода. Репозиторий.
Теория
- Басня про git
- (?) git guts
Юзкейсы
- Flow: работа с репозиторием
- Flow: добавление мелкой фичи
- Flow: добавлений крупной фичи
- Flow: синхронизация репозиториев
- Flow: коммит в репозиторий большого количества изменений
- Flow: подготовка патча в апстрим
- Flow: применение патчей
- Flow: поиск регрессий
- git-svn, git-hg
- напиливание хуков
Демонстрация
- Можно, собственно, демонстрировать flow из юзкейсов
- Сборка и деплой.
Теория
- Необхоимость процесса сборки и деплоя
- Свойства процесса сборки: воспроизводимость, корректность
- Одной сборки мало: конфигурация им привязка к окружению
- Установка и пакетирование?
Юзкейсы
- Вычисление зависимостей в make (и вообще его механизмы)
Демонстрация
- Использование make
- Workflow autotools
- cmake
- Отладка и тестирование. Сюда же про тикеты.
Теория
- Ошибки в программах, как их находить и как их избегать. Средства минимизации: отладка, инструментирование, логгирование, тестирование
- Важность информационного обмена в процессе работы над ошибками. Тикет-системы.
- Роль репозитория при работе над ошибками.
Юзкейсы
- NDEDBUG, assert и велосипеды
- gdb, strace, ltrace, gprof
- valgrind
- trac
- Использование bisect, бранчей, принятие патчей в репо
Демонстрация
- Отладка с использованием gdb и strace
- Использовани е тикет-систеы
- Документация
Теория
- Виды документации и их предназначение
- документация как часть информационного пространства
- Автоматизация генерации документации. Документирование в современных ЯП.
- Проблема поддержания актуальности документации
Юзкейсы
- doxygen, sphynx
- man, texinfo, html-документация
Демонстрация
- Использование doxygen, sphynx
- Использование сторонних библиотек
Теория
- Классификация библиотек: стандартная библиотека языка, универсальные фреймворки, специализированные фреймворки и библиотеки
- Когда следует и не следует использовать сторонние библиотеки
- Две стороны: написание велосипедов и овердизайн ("а вот здесь мы работаем со строками, поэтому нам нужен qt")
Юзкейсы
Демонстрация
- libc
- glib, qt, boost
- Потоки и иже: pthreads, libevent,
- Перевод и локализация
Теория
- Зачем: использование более широким кругом пользователей, увеличение применимости
- Что: ресурсы программы, некоторые алгоритмы (даты, особенности экономической системы, законодательные особенности), документация (инф. пространство)
- Юникод, как с ним правильно обрпащаться
- tzdata
- locale
- Юникод, как с ним правильно обрпащаться
- Как
Юзкейсы
- gettext
- перевод документации (moin?)
Демонстрация
- Олокаливание программы
- Обновление перевода документации
- Средства, имеющиеся в современных языках
- Теория
- Тестирование, сборка и пакетирование, документация
- Юзкейсы
- java: junit, ant
- python: doctest/pytest, docstrings/sphynx, setuputils/distutils
- Теория
- Code review
Теория
- Зачем нужен CR. Плюшки CR.
- Регулярный коммиттеры пишут более лучший код и заними нужно всё менее внимательно ревьювить
- Ревью позволяет держать уровень кода в репозитории
- Ревью позволяет выявлять ошибки, не заметные одному отдельно взятому человеку (глаза замылились)
- Регулярный коммиттеры пишут более лучший код и заними нужно всё менее внимательно ревьювить
- Способ организации CR.
- Роль репозитория в CR.
- Зачем нужен CR. Плюшки CR.
Юзкейсы
- Workflow подготовки патчсета на CR
- Workflow review через почту/git
- Workflow review через вебсервис
- Workflow обновления патчсета по итогам ревью
Демонстрация
- Демонстрация подготовки патчсета, засылки в рассылку, ревью, засылк и обновлённого патчсета, принятия в blessed repo
- Пакетирование
Теория
Юзкейсы
Демонстрация