1 курс, 1 семестр
Язык: русский

Описание

В данном курсе обучающиеся познакомятся с:

  • командной строкой
  • системами контроля версий (на примере Git)
  • регулярными выражениями
  • и прочими инструментами, необходимыми программисту в повседневной работе.

Этот же набор навыков будет необходим для прохождения остальных курсов на нашем направлении и сдачи задач по ним.

Преподаватель

  • Трепаков Иван Сергеевич

Организация курса

Данный курс проводится в виде двухмесячного интенсива (8 недель, 2 академических часа в неделю). В каждом из семи разделов курса обучающимся предстоит выполнить самостоятельное задание.

Подготовка

Все задания будут выполняться в системе GitHub Classroom, в связи с чем, небходимо пройти tutorial Знакомство c GitHub Classroom (source).

На протяжении всего курса мы будем работать с командной оболочкой Unix. Поэтому для прохождения курса обучающимся необходимо иметь доступ к соответствующему Unix-подобному окружению. Во всех заданиях и сопровождающих материалах будут приведены примеры для Ubuntu. Однако, любого другого дистрибутива Linux или Mac тоже должно быть достаточно.

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

Инструкции по виртуализации

Docker

Docker предоставляет средства для создания легковесных Linux-контейнеров. В индустрии Docker применяется в основном для автоматизации и унификации окружения сборки и запуска приложений, но для наших целей будет достаточно только виртуализации Linux-окружения.

Плюсы Минусы
  • Полная изоляция контейнера от хост-системы
  • Легковесные контейнеры
  • Воспроизводимость окружения для сборки и запуска приложений
  • Возможность настройки взаимодействия между контейнерами
  • Широко используется в индустрии
  • Открытый исходный код
  • Сложная настройка запуска графических приложений
  • Сложное взаимодействие с хост-системой

Инструкции

  • Установить Docker Desktop следуя туториалу
  • Запустить в терминале контейнер, подготовленный для нашего курса:
    $ docker run --rm -it --network host liontiger23/mpt
    

    Можно добавить поддержку истории команд, указав дополнительно опцию

    -v <path-to-bash-history-file>:/home/mpt/.bash_history
    

    где <path-to-bash-history-file> — абсолютный путь к файлу, в котором будет храниться история на хост-системе. Например:

    $ docker run -v ~/.mpt_bash_history:/home/mpt/.bash_history --rm -it --network host liontiger23/mpt
    

VirtualBox

VirtualBox предоставляет универсальное средство виртуализации аппаратного обеспечения, позволяющее создать виртуальную машину практически любой конфигурации и установить туда произвольную ОС.

Плюсы Минусы
  • Полная изоляция виртуальной машины от хост-системы
  • Возможность поставить произвольную ОС
  • Полноценный Desktop-experience
  • Открытый исходный код
  • Требуется больше ресурсов, чем в других вариантах
  • За исключением готовых образов, требуется самостоятельная установка и настройка ОС с нуля
  • Сложное взаимодействие с хост-системой
  • Нет поддержки Arm64 (частичная поддержка современных Mac’ов с Apple Silicon)

Инструкции

Получить виртуальную машину Ubuntu в VirtualBox можно двумя способами:

WSL2 (Windows only)

Начиная с Windows 10 можно воспользоваться встроенным в Windows средством виртуализации Windows Subsystem for Linux (WSL).

Плюсы Минусы
  • Бесшовное взаимодействие с программами и файловой системой Windows-хоста
  • Практически не требует дополнительного ПО
  • Менее безопасно, чем другие варианты, из-за прямого доступа к хост-системе
  • Проприетарная технология, заточенная на Windows
  • Могут возникнуть сложности при более детальной настройке системы внутри WSL

Инструкции

Подробные инструкции по установке Ubuntu через WSL2 описаны на официальном сайте.

Зачет

Для получения зачета по курсу в каждом разделе необходимо набрать по 8 и более баллов за задания (из 10 возможных).

Темы

Тема Задание GitHub Classroom
Основы работы с Unix Знакомство с командной строкой Решать
Основы работы с текстом Знакомство с регулярными выражениями Решать
Создание скриптов Знакомство с Bash Решать
Системы контроля версий Знакомство с Git Решать
Автоматизация сборки программного обеспечения    
Языки разметки Знакомство с языками разметки Решать
Локализация и интернационализация программного обеспечения Знакомство с кодировками и локалями Решать

Вспомогательная литература

  1. Raymond, E. S. The Art of Unix Programming (html)
  2. Chacon, S. Pro Git (en, ru)
  3. Friedl, J. Mastering Regular Expressions
  4. Львовский, С. Набор и верстка в системе LATEX
  5. Шнейвайс, А. Б. Азы GNUPLOTа
  6. Markdown Tutorial
  7. Практическое написание сценариев командной оболочки Bash