Рабочее пространство для лабораторной работы

2021-01-16 · 5 мин. для прочтения

При выполнении лабораторной работы следует придерживаться структуры рабочего пространства.

Содержание

1 Основные идеи

  • Стандартные соглашения об именах
  • Стандартное соглашение для путей к файлам
  • Стандартная настройка курса внутри шаблона курса

2 Используемые стандарты и программные продукты

3 Дополнительное программное обеспечение

3.1 Средства разработки

3.1.1 Fedora

  • Установите средства разработки:
    sudo dnf -y group install development-tools
    

3.2 Quarto

3.2.1 Установка

  1. Windows

  1. Linux

    1. Linux в общем

      • Установка с помощью скрипта:
        #!/bin/bash
        
        ## Система
        TARGET=/opt
        TARGET_BIN=/usr/local/bin
        ## Домашний каталог
        # TARGET=~/opt
        # TARGET_BIN=~/.local/bin
        
        
        ## Получить тег
        TAG=`basename $(curl -sL -o /dev/null -w %{url_effective} https://github.com/quarto-dev/quarto-cli/releases/latest)`
        TAG=${TAG/v/}
        
        ## Скачать
        cd /tmp
        wget https://github.com/quarto-dev/quarto-cli/releases/download/v${TAG}/quarto-${TAG}-linux-amd64.tar.gz
        
        ## Распаковать
        mkdir -p ${TARGET}
        tar -C ${TARGET} -xvzf /tmp/quarto-${TAG}-linux-amd64.tar.gz
        mv ${TARGET}/quarto-${TAG} ${TARGET}/quarto
        
        ## Симлинк на исполняемый файл
        mkdir -p ${TARGET_BIN}
        ln -s ${TARGET}/quarto/bin/quarto ${TARGET_BIN}/quarto
        
    1. Gentoo

    1. Arch

      • Arch linux:
        pacman -S quarto-cli-bin
        
      • Manjaro linux:
        pamac install quarto-cli-bin
        
    1. Fedora

      • Установка из CORP:
        sudo dnf -y copr enable iucar/rstudio
        sudo dnf -y install quarto
        sudo dnf -y install libxcrypt-compat
        

3.3 Общепринятые коммиты

3.3.1 Установка Node.js

  • На Node.js базируется программное обеспечение для семантического версионирования и общепринятых коммитов.
  • Для управления пакетами лучше использовать pnpm, но можно и yarn.
  • Gentoo
  • Ubuntu
    apt-get install nodejs
    apt-get install yarn
    apt-get install pnpm
    
  • Fedora
    sudo dnf -y install nodejs
    sudo dnf -y install yarn pnpm
    
  • Windows
  • MacOS
    brew install node
    

3.3.2 Настройка Node.js

Для работы с Node.js добавим каталог с исполняемыми файлами, устанавливаемыми пакетным менеджером, в переменную PATH.

  • Linux
    • pnpm
      • Запустите:
        pnpm setup
        
      • Перелогиньтесь, или выполните:
        source ~/.bashrc
        
    • yarn
      • В файле ~/.bashrc добавьте к переменной PATH:
        PATH=~/.yarn/bin:$PATH
        

3.3.3 Установка git-flow

  • Linux

    • Gentoo
      emerge dev-vcs/git-flow
      
    • Ubuntu
      apt-get install git-flow
      
    • Fedora
      • Устанавливается из COPR:
        sudo dnf -y copr enable elegos/gitflow
        sudo dnf install gitflow
        
  • Windows Git-flow входит в состав пакета git.

    choco install git
    
  • MacOS

    brew install git-flow
    

3.3.4 Общепринятые коммиты

  1. commitizen

    • Данная программа используется для помощи в форматировании коммитов.
      • pnpm:
        pnpm add -g commitizen
        
      • yarn:
        yarn global add commitizen
        
    • При этом устанавливается скрипт git-cz, который мы и будем использовать для коммитов.
  1. standard-version

    • Данная программа автоматизирует изменение номера версии.
      • pnpm:
        pnpm add -g standard-version
        
      • yarn:
        yarn global add standard-version
        

4 Общие правила

  • Для именования каталогов и файлов будем использовать соглашение Denote (см. Denote. Соглашение об именовании).

  • Рабочее пространство по предмету располагается в следующей иерархии:

    ~/work/study/
    └── <учебный год>/
        └── <учебный год>==<код предмета>/
    
  • Например, для 2025-2026 учебного года (второй семестр) и предмета «Операционные системы» (код предмета os-intro) структура каталогов примет следующий вид:

    ~/work/study/
    └── 2026-1/
        └── 2026-1==os-intro/
    
  • Название проекта на хостинге git имеет вид:

    <учебный год>--study--<код предмета>
    
  • Например, для 2025-2026 учебного года и предмета «Операционные системы» (код предмета os-intro) название проекта примет следующий вид:

    2026-1--study--os-intro
    
  • Каталог для лабораторных работ имеет вид labs.

  • Каталоги для лабораторных работ имеют вид lab<номер>, например: lab01, lab02 и т.д.

  • Каталог для групповых проектов имеет вид group-project.

  • Каталог для персональных проектов имеет вид personal-project.

  • Каталог для внешнего курса имеет вид external-course.

  • Если проектов несколько, то они нумеруются подобно лабораторным работам.

  • Этапы проекта обозначаются как stage<номер>.

5 Шаблон для рабочего пространства

5.1 Сознание репозитория курса на основе шаблона

5.1.1 Создание с помощью утилит

  • Создание выглядит следующим образом:
    gh repo create <new-repo-name> --template="<owner/template-repo>"
    
  • Например, для 2024-2025 учебного года и предмета «Операционные системы» (аббревиатура предмета — os-intro) создание репозитория примет следующий вид:
    mkdir -p ~/work/study/2026-1/2026-1==study--os-intro
    cd ~/work/study/2026-1/2026-1==study--os-intro
    gh repo create 2026-1--study--os-intro --template=yamadharma/course-directory-student-template --public
    git clone --recursive git@github.com:<owner>/2026-1--study--os-intro.git
    

5.1.2 Создание вручную

5.2 Структура шаблона

  • Посмотреть доступные цели make:
    make help
    
  • Посмотреть список доступных курсов:
    make list
    
  • При создании структуры название курса берётся из следующих мест:
    • название курса находится в файле COURSE;
    • каталог курса называется как аббревиатура курса.

5.3 Настройка каталога курса

  • Перейдите в каталог курса:
    cd ~/work/study/2026-1/2026-1==study--os-intro/2026-1--study--os-intro
    
  • Создайте необходимые каталоги:
    echo os-intro > COURSE
    make prepare
    
  • Отправьте файлы на сервер:
    git add .
    git commit -am 'feat(main): make course structure'
    git push
    

5.4 Использование git flow

5.4.1 Конфигурация git-flow

  • Инициализируем git-flow
    git flow init
    
    Префикс для ярлыков установим в v.
  • Проверьте, что Вы на ветке develop:
    git branch
    
  • Загрузите весь репозиторий в хранилище:
    git push -u --all
    
  • Создадим релиз с версией 1.0.0
    git flow release start 1.0.0
    
  • Создадим журнал изменений
    standard-changelog --first-release
    
  • Добавим журнал изменений в индекс
    git add CHANGELOG.md
    git commit -am 'chore(site): add changelog'
    
  • Зальём релизную ветку в основную ветку
    git flow release finish 1.0.0
    
  • Отправим данные на github
    git push --all
    git push --tags
    
  • Скопируем CHANGELOG.md в каталог release:
    mkdir -p ../release
    cp CHANGELOG.md ../release
    
  • Создадим релиз на github. Для этого будем использовать утилиты работы с github (см. github: утилиты командной строки):
    gh release create v1.0.0 -F ../release/CHANGELOG.md
    

6 Видео

Рабочее пространство для лабораторной работы
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.