ТП весна 2027 Продвинутый: различия между версиями
Общее описание курса |
update |
||
| (не показано 5 промежуточных версий этого же участника) | |||
| Строка 4: | Строка 4: | ||
= Описание курса = | = Описание курса = | ||
Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы | Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы Git, реализация Docker средствами ядра Linux, общий принцип работы интерпретаторов командной оболочки и др.) | ||
<b>Важно!</b> Курс <b>не</b> предусматривает <i>какого-либо использования ИИ (не | <b>Важно!</b> Курс <b>не</b> предусматривает <i>какого-либо использования ИИ (не рекомендуется даже поиск информации)</i> и использование ИИ-инструментов карается вплоть до дисциплинарных взысканий. Одним из результатов курса является умение верифицировать на высоком уровне результаты генерации кода с помощью ИИ, однако получить такой навык, используя ИИ нельзя. | ||
Курс досточно объемный, интенсивный и для закрытия на высокую оценку | Курс досточно объемный, интенсивный и для закрытия на высокую оценку потребуется потратить много времени. Домашние задания будут публиковаться каждую неделю. Помимо них будут устные сдачи по блокам курса в формате тех собесов: теоретические вопросы, решение различных кейсов, лайвкодинг. | ||
Обратите внимание, что курс не затрагивает вопросов архитектуры и проектирования ПО, управления процессами. Мы будем затрагивать исключительно технические аспекты устройства и использования компьютера, ОС и инструментов разработки. | |||
Перед регистрацией курса просим просмотреть страницу курса: материалы прошлых лет, политики курса. Если вы уже определились, что будете заниматься только математикой/физикой/аналитикой, то высока вероятность, что вам курс не зайдет, а времени придется потратить много даже на уд3. Поэтому давайте уважать время друг друга и выбирать продвинутый поток осмысленно. Мы со своей стороны постараемся подобрать хороший ассистентов, готовых потратить на вас достаточно своего времени. Ожидается, что курс наиболее подходит тем, кто планирует связать свою карьеру с программной инженерией (осмысленной: если вы планируете быть <i>"слоп-машиной"</i>, то курс также будет бессмысленным) и хочет прокачать хард-скиллы. | |||
= Пререквизиты курса = | |||
; Закрытый хотя бы на хор курс С++ | |||
: Продвинутый поток продолжает изучать экосистему С/С++, а также использует их механизмы для изучения ОС. Без хороших знаний первого семестра пройти курс будет достаточно сложно. | |||
; Знание основных структур данных | |||
: Мы не ожиданием умения ''"вслепую написать RBT дерево"'', однако ждем, что вы понимаете общие принципы работы основных структур данных из 1го семестра и можете их сравнивать. Например, ожидается понимание различий AVL, RBT и B деревьев. | |||
; Наличие Linux платформы | |||
: Так как курс про Linux и его инструменты, то без него (или mac OS) курс пройти будет невозможно. | |||
; Умение и готовность самостоятельно искать информацию | |||
: Домашние задания специально продуманы так, чтобы вы сталкивались с различными ошибками и нестандартными ситуациями. Мы ожидаем, что вы готовы гуглить ошибки, читать man страницы, stackoverflow и другие linux форумы. <i>Использование ИИ для разрешения ошибок максимально не приветствуется, а для решения задач вообще запрещается.</i> | |||
= Установка Linux системы = | |||
Требуется только если у вас уже нет ни Linux, ни mac OS. | |||
''Если вы впервые работаете с Linux, то советуем выбрали либо Ubuntu, либо Fedora.'' Ubuntu -- более Windows-like система с большим числом гайдов в интернете, однако потребляет много ресурсов. Fedora -- более дружелюбная по потреблению ресурсов система, также позволяет выбрать графическое окружение (KDE или GNOME), однако уже дальше от Windows по дизайну и чуть меньше гайдов, преимущественно на английском языке. | |||
== Oracle VM Box == | |||
Подойдет людям с 6+ ядрами процессора, 16ГБ+ оперативной памяти и 256ГБ+ жесткого диска (!= нельзя поставить иначе, просто будут часто фриззы в системе). Причем свободного места на диске должно быть хотя бы 64ГБ. Позволяет иметь полноценный Linux, однако придется чуть заморочиться. При работе с ВМ на хосте лучше не запускать ресурсо-требовальных приложений (например, несколько окон Chrome) -- тут уже ориентируйтесь на объем вашей оперативной памяти. | |||
Скачайте образ диска ОС (<code>.iso</code>-файл): | |||
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/43/Workstation/x86_64/iso Fedora 43], 44 версия слишком свежая, пока лучше не ставить | |||
* [https://ubuntu.com/download/desktop Ubuntu 2026], не устанавливайте нечетные версии, можно альтернативно 24, более старые не стоит. | |||
Устновите [https://www.virtualbox.org/wiki/Downloads Oracle VM Box] и создайте виртуальную машину по следующим гайдам: | |||
* [https://sergiolearns.com/en/install-fedora-on-virtualbox Fedora] | |||
* [https://brb.nci.nih.gov/seqtools/installUbuntu.html Ubuntu] | |||
Рекомендуемые параметры ВМ: | |||
* Оперативная память | |||
** Fedora: 6ГБ+, оптимально 8ГБ+ | |||
** Ubuntu: 8ГБ+, оптимально 10ГБ+ | |||
* Диск | |||
** Тип: VDI, динамически расширяемый | |||
** Объем: 64ГБ+, должны уложиться в 128ГБ | |||
* Минимум 2 ядра, а так лучше 4+ ядер (больше половины лучше не отдавать) | |||
Крайне советуем сразу настроить возможность копировать данные из хоста в ВМ и обратно. Дополнительно полезно создать разделяемую папку, чтобы перекидывать файлы туда-сюда. | |||
== Dual boot == | |||
Подойдет тем, кто имеет 512ГБ+ жесткого диска (оптимально 1ТБ+). Позволяет иметь две независимые системы на одном устройстве, однако самый сложный процесс настройки из всех вариантов. Здесь уже лучше найти видео-гайды в ютубе по тому, как настроить для вашей версии Windows и выбранной ОС. | |||
== WSL == | |||
Подойдет всем у кого стоит Windows, поставит почти что Linux (все же WSL -- не до конца полноценный Linux и на курсе мы это увидим, с дз этого курса проблем не будет, но в будущем могут быть приколы, если начнете заниматься низкоуровневым программированием) причем будет возможность из Linux взаимодействовать с файлами в Windows. | |||
Установите WSL 2 по [https://learn.microsoft.com/ru-ru/windows/wsl/install официальному гайду]. Рекоммендации по дистрибутиву сохраняются. | |||
= Система оценивания = | = Система оценивания = | ||
| Строка 17: | Строка 69: | ||
Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса ''aka теормин''. | Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса ''aka теормин''. | ||
Также для положительного (не пересдача) закрытия курса потребуется набрать в сумме ненулевое число баллов за домашки по каждому из блоков курса. | |||
= Программа курса = | = Программа курса = | ||
Курс представляет из себя 30 пар, по формату являющихся чем-то средним между лекцей и семинаром. Презентации с пар и часть материалов курса будут на английском языке для более эффективного погружения в среду. | |||
Основная практика вынесена на домашние задания и взаимодействие с ассистентами. Мы не штрафуем за непройденное ревью с первого раза: смысл ревью -- довести ваше решение до идеала. Пока ревью не пройдено баллы за задачу не учитываются. В среднем по опыту необходимо пройти 3-5 итераций ревью, чтобы зачли задачу. Без получения ненулевого балла за домашки по каждому блоку закрыть курс не получится, поэтому приготовьтесь | |||
== Основные темы курса == | |||
* Linux | |||
** Файловая система | |||
*** Типы файлов | |||
*** Разрешения файлов | |||
*** Монтирования ФС | |||
*** Общее устройство ФС ext семейства | |||
*** Временные и lock файлы | |||
** Systemd | |||
*** Монтирования | |||
*** Сервисы | |||
*** journalctl | |||
** Пакетные менеджеры | |||
*** dpkg и apt (apt-get) | |||
*** apt репозитории | |||
*** rpm и dnf (yum) | |||
*** yum репозитории | |||
** Интерпретатор командной строки | |||
*** Bash и bash скрипты, автодополнение | |||
*** Процесс инициализации zsh & bash | |||
*** Принцип работы ИКС, фунции fork & exec | |||
*** Терминалы и эмуляторы терминалов | |||
*** Взаимодействие процессов (фоновые задачи, сигналы) | |||
** Man pages и их создание | |||
** Утилита xdg-open и MIME | |||
* Git | |||
** Основные команды | |||
** Внутреннее устройство и принципы работы | |||
** Сабмодули | |||
** Настройка репозитория (основные файлы, project badges, особенности GitLab & GitHub) | |||
** LFS | |||
* Взаимодейтсвие с ресурсами по сети | |||
** curl, wget (для HTTP & FTP) | |||
** Сертификаты HTTPS | |||
** SSH клиент | |||
** Утилита nmcli | |||
** nginx | |||
** Правила отдачи статического контента | |||
* Сборка С/С++ | |||
** Этапы компиляции | |||
** Макросы | |||
** Базовые команды ASM x86, устройство стека исполнения | |||
** Объектные файлы, name mangling, виды символов | |||
** Хедеры, поиск системных хедеров | |||
** Библиотеки: статические и динамические | |||
** Линковка. ldd, rpath, LD_LIBRARY_PATH. Поиск динамических библиотек. | |||
** Дебаггер gdb | |||
** Санитайзер. Алгоритм работы ASAN | |||
** Линтеры: clang-format, clang-tidy | |||
** GNU Make | |||
** Дефолтные пути в системе и стандартные переменные окружения | |||
** Установка библиотек и бинарей в Linux | |||
** CMake. Настройка сборки проекта | |||
** CMake модули. Подключение зависимостей через FetchContent | |||
** Устновка через CMake. CMake пакеты | |||
* Тестирование C/C++ | |||
** Фреймворки gtest и gmock | |||
** Принципы работы gtest & gmock | |||
** Мутационное тестирование: фреймворк Mull | |||
** Фаззинг: фреймворк fuzztest | |||
** Покрытие тестов: утилиты gcov, lcov, gcovr | |||
* Профилирование C/C++ | |||
** Утилиты /usr/bin/time и perf, flamegraph | |||
** Фреймворк google benchmark | |||
** Эмпирическая сложность алгоритмов | |||
* Контейнеризация и виртуализация | |||
** Написание Dockerfile и сборка контейнеров | |||
** GitLab & GitHub Container Registry | |||
** Multistaging build | |||
** Плагины buildx & compose | |||
** Healthcheck | |||
** Запуск докера внутри контейнеров: DOOD & DIND | |||
** Принцип работы Docker (linux namespaces, chroot, cgroups, overlayfs) | |||
** Docker VS Podman | |||
** Oracle VM Box. Виртуальные машины | |||
* CI | |||
** GitLab CI | |||
** Настройка и создание GitLab Runners | |||
** GitHub Actions | |||
** GitLab & GitHub pages | |||
** Antora для генерации сайтов | |||
* Прочее | |||
** Markup languages (JSON, YAML, TOML, XML) и схемы данных | |||
** Asciidoctor | |||
** Regex | |||
** Основные Open-source лицензии | |||
** Цифровые подписи (gpg) | |||
== План == | |||
Драфт плана на весну можно посмотреть [https://docs.google.com/spreadsheets/d/1wpWrBUTu2o78XmHzUE0Lg8bhoIVskOzxLIWI9crGSZ4/edit?usp=sharing здесь]. <i>План будет обновлен в декабре, пока это неболее чем набросок тем и возможной их очередности.</i> | |||
== Пересдачи == | |||
Для получения хотя бы уд3 необходимо сдать <b>все</b> задачи с курса и написать <i>"теормин"</i>. Оценка выше выставляется по результатам устной беседы с командой курса (является необязательной для уд3). | |||
= Отбор на курс = | |||
На курсе планируется 55-60 студентов (мах 60). Для отбора на курс необходимо зарегистрироваться на [https://gitlab.com GitLab] (регистрация -- это нулевой этап отбора) и заполнить [[форму]] (появится позже). | |||
<i> | |||
GitLab имеет систему защиты от ботов, поэтому при подозрительных действиях может потребовать пройти дополнительную верификацию, которую в РФ сделать проблематично. Как не попасть под подозрения: | |||
# Не использовать VPN и прочие средства модификации интернет трафика | |||
# Использовать человеческие имена и пароли (минимизировать число паттернов сгенерированного набора символов) | |||
# Не использовать одну сеть для регистрации большого числа аккаунтов. Так, если с сети уже был недавно найден подозрительный аккаунт, то последующие регистрации также могут вызвать подозрения | |||
# Не спидранить регистрацию и не быть улиткой: заполняйте все поля в среднем, спокойном темпе | |||
# Использовать почту <code>phystech.edu</code> -- она вызывает минимум сомнений | |||
# При повторной попытке регистрации не использовать данные похожие на прошлые: если уже в подозрения улетел ник <code>qwerty</code>, то <code>qwerty2008</code> будет также вызывать подозрения | |||
# Иногда может помогать режим инкогнито | |||
</i> | |||
В случае превышения числа желающих 60 человек будет произведен отбор по следующим параметрам: | |||
* Студенты ФУПМа и ПМИ.Мат имеют наинизший приоритет | |||
* Студенты ПМИ.Инф и ИВТсп имеют более высокий приоритет при прочих равных | |||
* Ожидается, что студенты закрыли курсы плюсов и алгосов на хор и выше | |||
* Будут проведены устные собесы, по результатам которых отранжируем желающих | |||
<i>Собесы будут больше не про знания, а про мотивацию/интересы.</i> | |||
Если вы не прошли отбор, то вы можете посещать занятия при наличии мест в аудитории и закрывать задачи для себя без ревью: все домашние задания будут в открытом доступе. <b>Важно</b>: не публикуйте свои решения, позвольте другим получить знания! Также просьба уважать авторские права создателей курса и следовать лицензиям, под которыми распространяются наши материалы! | |||
== Факультативное закрытие курса == | |||
Возможность факультативного закрытия курса обсуждается индивидуально с лектором. Для этого напишите ему в личные сообщения. | |||
= Команда курса = | = Команда курса = | ||
Лектор: Иван Калинин | Лектор: Иван Калинин (tg: [https://t.me/taekwandodo @taekwandodo]) | ||
Старший ассистент: Виктория Попова | Старший ассистент: Виктория Попова | ||
| Строка 31: | Строка 208: | ||
* [https://devtools-course.github.io/book/ DevTools Book (In progress), I.Kalinin, V.Popova, M.Agafonov] | * [https://devtools-course.github.io/book/ DevTools Book (In progress), I.Kalinin, V.Popova, M.Agafonov] | ||
* [https://devtools-course.github.io Сайт курса (также информация о прошлых итерациях курса)] | * [https://devtools-course.github.io Сайт курса (также информация о прошлых итерациях курса)] | ||
* [https://devtools-course.github.io/exam/exam.pdf Пример программы итогового зачета] | |||
Текущая версия от 11:18, 7 октября 2026
Внимание! Страница в разработке. Данные могут меняться! Дождитесь окончательной публикации страницы!
Описание курса
Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы Git, реализация Docker средствами ядра Linux, общий принцип работы интерпретаторов командной оболочки и др.)
Важно! Курс не предусматривает какого-либо использования ИИ (не рекомендуется даже поиск информации) и использование ИИ-инструментов карается вплоть до дисциплинарных взысканий. Одним из результатов курса является умение верифицировать на высоком уровне результаты генерации кода с помощью ИИ, однако получить такой навык, используя ИИ нельзя.
Курс досточно объемный, интенсивный и для закрытия на высокую оценку потребуется потратить много времени. Домашние задания будут публиковаться каждую неделю. Помимо них будут устные сдачи по блокам курса в формате тех собесов: теоретические вопросы, решение различных кейсов, лайвкодинг.
Обратите внимание, что курс не затрагивает вопросов архитектуры и проектирования ПО, управления процессами. Мы будем затрагивать исключительно технические аспекты устройства и использования компьютера, ОС и инструментов разработки.
Перед регистрацией курса просим просмотреть страницу курса: материалы прошлых лет, политики курса. Если вы уже определились, что будете заниматься только математикой/физикой/аналитикой, то высока вероятность, что вам курс не зайдет, а времени придется потратить много даже на уд3. Поэтому давайте уважать время друг друга и выбирать продвинутый поток осмысленно. Мы со своей стороны постараемся подобрать хороший ассистентов, готовых потратить на вас достаточно своего времени. Ожидается, что курс наиболее подходит тем, кто планирует связать свою карьеру с программной инженерией (осмысленной: если вы планируете быть "слоп-машиной", то курс также будет бессмысленным) и хочет прокачать хард-скиллы.
Пререквизиты курса
- Закрытый хотя бы на хор курс С++
- Продвинутый поток продолжает изучать экосистему С/С++, а также использует их механизмы для изучения ОС. Без хороших знаний первого семестра пройти курс будет достаточно сложно.
- Знание основных структур данных
- Мы не ожиданием умения "вслепую написать RBT дерево", однако ждем, что вы понимаете общие принципы работы основных структур данных из 1го семестра и можете их сравнивать. Например, ожидается понимание различий AVL, RBT и B деревьев.
- Наличие Linux платформы
- Так как курс про Linux и его инструменты, то без него (или mac OS) курс пройти будет невозможно.
- Умение и готовность самостоятельно искать информацию
- Домашние задания специально продуманы так, чтобы вы сталкивались с различными ошибками и нестандартными ситуациями. Мы ожидаем, что вы готовы гуглить ошибки, читать man страницы, stackoverflow и другие linux форумы. Использование ИИ для разрешения ошибок максимально не приветствуется, а для решения задач вообще запрещается.
Установка Linux системы
Требуется только если у вас уже нет ни Linux, ни mac OS.
Если вы впервые работаете с Linux, то советуем выбрали либо Ubuntu, либо Fedora. Ubuntu -- более Windows-like система с большим числом гайдов в интернете, однако потребляет много ресурсов. Fedora -- более дружелюбная по потреблению ресурсов система, также позволяет выбрать графическое окружение (KDE или GNOME), однако уже дальше от Windows по дизайну и чуть меньше гайдов, преимущественно на английском языке.
Oracle VM Box
Подойдет людям с 6+ ядрами процессора, 16ГБ+ оперативной памяти и 256ГБ+ жесткого диска (!= нельзя поставить иначе, просто будут часто фриззы в системе). Причем свободного места на диске должно быть хотя бы 64ГБ. Позволяет иметь полноценный Linux, однако придется чуть заморочиться. При работе с ВМ на хосте лучше не запускать ресурсо-требовальных приложений (например, несколько окон Chrome) -- тут уже ориентируйтесь на объем вашей оперативной памяти.
Скачайте образ диска ОС (.iso-файл):
- Fedora 43, 44 версия слишком свежая, пока лучше не ставить
- Ubuntu 2026, не устанавливайте нечетные версии, можно альтернативно 24, более старые не стоит.
Устновите Oracle VM Box и создайте виртуальную машину по следующим гайдам:
Рекомендуемые параметры ВМ:
- Оперативная память
- Fedora: 6ГБ+, оптимально 8ГБ+
- Ubuntu: 8ГБ+, оптимально 10ГБ+
- Диск
- Тип: VDI, динамически расширяемый
- Объем: 64ГБ+, должны уложиться в 128ГБ
- Минимум 2 ядра, а так лучше 4+ ядер (больше половины лучше не отдавать)
Крайне советуем сразу настроить возможность копировать данные из хоста в ВМ и обратно. Дополнительно полезно создать разделяемую папку, чтобы перекидывать файлы туда-сюда.
Dual boot
Подойдет тем, кто имеет 512ГБ+ жесткого диска (оптимально 1ТБ+). Позволяет иметь две независимые системы на одном устройстве, однако самый сложный процесс настройки из всех вариантов. Здесь уже лучше найти видео-гайды в ютубе по тому, как настроить для вашей версии Windows и выбранной ОС.
WSL
Подойдет всем у кого стоит Windows, поставит почти что Linux (все же WSL -- не до конца полноценный Linux и на курсе мы это увидим, с дз этого курса проблем не будет, но в будущем могут быть приколы, если начнете заниматься низкоуровневым программированием) причем будет возможность из Linux взаимодействовать с файлами в Windows.
Установите WSL 2 по официальному гайду. Рекоммендации по дистрибутиву сохраняются.
Система оценивания
Итоговая оценка вычисляется по формуле min{Ex, Ts + Iv}, где
Ex-- Оценка за итоговый зачетTs-- Оценка за домашние задания (45% оценки)Ex-- Оценка за устные сдачи в формате технических интервью (55% оценки)
Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса aka теормин.
Также для положительного (не пересдача) закрытия курса потребуется набрать в сумме ненулевое число баллов за домашки по каждому из блоков курса.
Программа курса
Курс представляет из себя 30 пар, по формату являющихся чем-то средним между лекцей и семинаром. Презентации с пар и часть материалов курса будут на английском языке для более эффективного погружения в среду.
Основная практика вынесена на домашние задания и взаимодействие с ассистентами. Мы не штрафуем за непройденное ревью с первого раза: смысл ревью -- довести ваше решение до идеала. Пока ревью не пройдено баллы за задачу не учитываются. В среднем по опыту необходимо пройти 3-5 итераций ревью, чтобы зачли задачу. Без получения ненулевого балла за домашки по каждому блоку закрыть курс не получится, поэтому приготовьтесь
Основные темы курса
- Linux
- Файловая система
- Типы файлов
- Разрешения файлов
- Монтирования ФС
- Общее устройство ФС ext семейства
- Временные и lock файлы
- Systemd
- Монтирования
- Сервисы
- journalctl
- Пакетные менеджеры
- dpkg и apt (apt-get)
- apt репозитории
- rpm и dnf (yum)
- yum репозитории
- Интерпретатор командной строки
- Bash и bash скрипты, автодополнение
- Процесс инициализации zsh & bash
- Принцип работы ИКС, фунции fork & exec
- Терминалы и эмуляторы терминалов
- Взаимодействие процессов (фоновые задачи, сигналы)
- Man pages и их создание
- Утилита xdg-open и MIME
- Файловая система
- Git
- Основные команды
- Внутреннее устройство и принципы работы
- Сабмодули
- Настройка репозитория (основные файлы, project badges, особенности GitLab & GitHub)
- LFS
- Взаимодейтсвие с ресурсами по сети
- curl, wget (для HTTP & FTP)
- Сертификаты HTTPS
- SSH клиент
- Утилита nmcli
- nginx
- Правила отдачи статического контента
- Сборка С/С++
- Этапы компиляции
- Макросы
- Базовые команды ASM x86, устройство стека исполнения
- Объектные файлы, name mangling, виды символов
- Хедеры, поиск системных хедеров
- Библиотеки: статические и динамические
- Линковка. ldd, rpath, LD_LIBRARY_PATH. Поиск динамических библиотек.
- Дебаггер gdb
- Санитайзер. Алгоритм работы ASAN
- Линтеры: clang-format, clang-tidy
- GNU Make
- Дефолтные пути в системе и стандартные переменные окружения
- Установка библиотек и бинарей в Linux
- CMake. Настройка сборки проекта
- CMake модули. Подключение зависимостей через FetchContent
- Устновка через CMake. CMake пакеты
- Тестирование C/C++
- Фреймворки gtest и gmock
- Принципы работы gtest & gmock
- Мутационное тестирование: фреймворк Mull
- Фаззинг: фреймворк fuzztest
- Покрытие тестов: утилиты gcov, lcov, gcovr
- Профилирование C/C++
- Утилиты /usr/bin/time и perf, flamegraph
- Фреймворк google benchmark
- Эмпирическая сложность алгоритмов
- Контейнеризация и виртуализация
- Написание Dockerfile и сборка контейнеров
- GitLab & GitHub Container Registry
- Multistaging build
- Плагины buildx & compose
- Healthcheck
- Запуск докера внутри контейнеров: DOOD & DIND
- Принцип работы Docker (linux namespaces, chroot, cgroups, overlayfs)
- Docker VS Podman
- Oracle VM Box. Виртуальные машины
- CI
- GitLab CI
- Настройка и создание GitLab Runners
- GitHub Actions
- GitLab & GitHub pages
- Antora для генерации сайтов
- Прочее
- Markup languages (JSON, YAML, TOML, XML) и схемы данных
- Asciidoctor
- Regex
- Основные Open-source лицензии
- Цифровые подписи (gpg)
План
Драфт плана на весну можно посмотреть здесь. План будет обновлен в декабре, пока это неболее чем набросок тем и возможной их очередности.
Пересдачи
Для получения хотя бы уд3 необходимо сдать все задачи с курса и написать "теормин". Оценка выше выставляется по результатам устной беседы с командой курса (является необязательной для уд3).
Отбор на курс
На курсе планируется 55-60 студентов (мах 60). Для отбора на курс необходимо зарегистрироваться на GitLab (регистрация -- это нулевой этап отбора) и заполнить форму (появится позже).
GitLab имеет систему защиты от ботов, поэтому при подозрительных действиях может потребовать пройти дополнительную верификацию, которую в РФ сделать проблематично. Как не попасть под подозрения:
- Не использовать VPN и прочие средства модификации интернет трафика
- Использовать человеческие имена и пароли (минимизировать число паттернов сгенерированного набора символов)
- Не использовать одну сеть для регистрации большого числа аккаунтов. Так, если с сети уже был недавно найден подозрительный аккаунт, то последующие регистрации также могут вызвать подозрения
- Не спидранить регистрацию и не быть улиткой: заполняйте все поля в среднем, спокойном темпе
- Использовать почту
phystech.edu-- она вызывает минимум сомнений - При повторной попытке регистрации не использовать данные похожие на прошлые: если уже в подозрения улетел ник
qwerty, тоqwerty2008будет также вызывать подозрения - Иногда может помогать режим инкогнито
В случае превышения числа желающих 60 человек будет произведен отбор по следующим параметрам:
- Студенты ФУПМа и ПМИ.Мат имеют наинизший приоритет
- Студенты ПМИ.Инф и ИВТсп имеют более высокий приоритет при прочих равных
- Ожидается, что студенты закрыли курсы плюсов и алгосов на хор и выше
- Будут проведены устные собесы, по результатам которых отранжируем желающих
Собесы будут больше не про знания, а про мотивацию/интересы.
Если вы не прошли отбор, то вы можете посещать занятия при наличии мест в аудитории и закрывать задачи для себя без ревью: все домашние задания будут в открытом доступе. Важно: не публикуйте свои решения, позвольте другим получить знания! Также просьба уважать авторские права создателей курса и следовать лицензиям, под которыми распространяются наши материалы!
Факультативное закрытие курса
Возможность факультативного закрытия курса обсуждается индивидуально с лектором. Для этого напишите ему в личные сообщения.
Команда курса
Лектор: Иван Калинин (tg: @taekwandodo)
Старший ассистент: Виктория Попова
Ассистенты: tbd..