Skip to content

Instantly share code, notes, and snippets.

@nothingholy
Last active March 4, 2019 18:59
Show Gist options
  • Save nothingholy/3a29ed763a7e7578e831ad5e43e06527 to your computer and use it in GitHub Desktop.
Save nothingholy/3a29ed763a7e7578e831ad5e43e06527 to your computer and use it in GitHub Desktop.
lab01

Laboratory work I

Данная лабораторная работа посвещена изучению утилит для разработки проектов

Tasks

  • 1. Ознакомиться со ссылками учебного материала
  • 2. Выполнить инструкцию учебного материала
  • 3. Составить отчет и отправить ссылку личным сообщением в Slack

Tutorial

В этом блоке добавляем переменные окружения GIST_TOKEN и GITHUB_USERNAME, а также связываем команду edit с вызовом текстового редактора subl3

#Присваиваем переменной свое имя пользователя
$ export GITHUB_USERNAME=<nothingholy> 
#присваем свой токен
$ export GIST_TOKEN=<XXXXXXXXXXXX> 
# Биндим команду edit с вызовом редактора subl3
$ alias edit=subl3

Создание рабочей директории workspace, где будут осуществляться дальнейшие действия

# Создаем дирректорию с нашим именем пользователя и со вложенной папкой workspace
$ mkdir -p ${GITHUB_USERNAME}/workspace 
# Переходим в созданный каталог
$ cd ${GITHUB_USERNAME}/workspace
# Выводим полный путь до текущей дирректории
$ pwd 
/home/nothingholy/nothingholy/workspace
# Возвращаемся наверх(в предыдущую папку)
$ cd .. 
# Выводим полный путь до текущей директории
$ pwd 
/home/nothingholy/nothingholy

Продолжаем создавать подкаталоги в директории workspace

# Создаем каталоги, используя флаг -p
$ mkdir -p workspace/tasks/
$ mkdir -p workspace/projects/
$ mkdir -p workspace/reports/
# Переходим в главный каталог
$ cd workspace

Устанавливаем nodejs в нашу рабочую директорию для дальнейшей работы с ним

# Debian
# Linux
# Скачиваем архив с последней версией nodejs
$ wget https://nodejs.org/dist/v6.11.5/node-v6.11.5-linux-x64.tar.xz
# Распаковываем в текущую директорию (создается каталог с именем файла)
$ tar -xf node-v6.11.5-linux-x64.tar.xz
# Удаляем архив
$ rm -rf node-v6.11.5-linux-x64.tar.xz
# Перемещаем каталог с nodejs в каталог node (переименовываем)
$ mv node-v6.11.5-linux-x64 node

мотрим содержимое каталога node/bin, где хранятся испольняймые файлы nodejs и файлы подключаемых модулей, а также добавляем директорию с nodejs в переменную PATH для работы в терминале

$ ls node/bin
node  npm
# Выводим список директорий, где терминал ищет исполняемые файлы
$ echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Добавляем к переменной PATH путь до бинарных файлов nodejs
$ export PATH=${PATH}:`pwd`/node/bin
# Снова выводим его и видим, что наша директория успешно добавлена
$ echo ${PATH}
${PATH}:/home/nothingholy/nothingholy/workspace/node/bin
# Создаем директорию scripts
$ mkdir scripts
# Создаем в этой директории файл activate
$ cat > scripts/activate<<EOF
export PATH=\${PATH}:`pwd`/node/bin
EOF
# При помощи команды source содержимое файла будет исполнено как набор команд
$ source scripts/activate

Устанавливаем утилиту gistup - утилиту для создания Gist из терминала

# Устанавливаем gistup при помощи npm
$ npm install -g gistup
/home/nothingholy/nothingholy/workspace/node/bin/gistup -> /home/nothingholy/nothingholy/workspace/node/lib/node_modules/gistup/bin/gistup
/home/nothingholy/nothingholy/workspace/node/bin/gistup-open -> /home/nothingholy/nothingholy/workspace/node/lib/node_modules/gistup/bin/gistup-open
/home/nothingholy/nothingholy/workspace/node/bin/gistup-rename -> /home/nothingholy/nothingholy/workspace/node/lib/node_modules/gistup/bin/gistup-rename
/home/nothingholy/nothingholy/workspace/node/lib
└─┬ gistup@0.1.3 
  ├─┬ optimist@0.3.7 
  │ └── wordwrap@0.0.3 
  └── queue-async@1.2.1 
# Показываем список файлов директории node/bin и убеждаемся, что все установилось корректно
$ ls node/bin
gistup  gistup-open  gistup-rename  node  npm

Создаем файл .gistup.json, где будет находится наш gist token

$ cat > ~/.gistup.json <<EOF
{
  "token": "${GIST_TOKEN}"
}
EOF

Report

Создание отчета по лабораторной работе

# Добавляем переменную с номером л/р
$ export LAB_NUMBER=01
# Клонируем репозиторий с л/р в директорию tasks/lab01
$ git clone https://github.com/tp-labs/lab${LAB_NUMBER} tasks/lab${LAB_NUMBER}
# Создаем директорию для хранения отчетов
$ mkdir reports/lab${LAB_NUMBER}
# Копируем README.md в директорию с отчетами и переименовываем его
$ cp tasks/lab${LAB_NUMBER}/README.md reports/lab${LAB_NUMBER}/REPORT.md
# Переходим в директорию с REPORT.md
$ cd reports/lab${LAB_NUMBER}
# Редактируем его
$ edit REPORT.md
# Создаем gist с сообщением 'lab01'
$ gistup -m "lab${LAB_NUMBER}" # enter: yes↵

Links

Unix commands

Package Managers

Software

Homework

  1. Скачайте библиотеку boost с помощью утилиты wget. Адрес для скачивания https://sourceforge.net/projects/boost/files/boost/1.69.0/boost_1_69_0.tar.gz.
$ wget https://sourceforge.net/projects/boost/files/boost/1.69.0/boost_1_69_0.tar.gz
  1. Разархивируйте скаченный файл в директорию ~/boost_1_69_0
$ tar -xf boost_1_69_0.tar.gz # распаковываем архив
$ rm -rf boost_1_69_0.tar.gz # удаляем архив
$ cd boost_1_69_0 # переходим в каталог с *boost*
  1. Подсчитайте количество файлов в директории ~/boost_1_69_0 не включая вложенные директории.
$ ls -f . | wc -l
20
  1. Подсчитайте количество файлов в директории ~/boost_1_69_0 включая вложенные директории.
$ find . -type f | wc -l
61191
  1. Подсчитайте количество заголовочных файлов, файлов с расширением .cpp, сколько остальных файлов (не заголовочных и не .cpp).
$ find . -type f -name '*.h' | wc -l
296
$ find . -type f -name '*.cpp' | wc -l
13774
$ find . -type f '!' -name '*.cpp' -a '!' -name '*.h' | wc -l
47121
  1. Найдите полный пусть до файла any.hpp внутри библиотеки boost.
$ find . -type f -name 'any.hpp'
./boost/spirit/home/support/algorithm/any.hpp
./boost/type_erasure/any.hpp
./boost/fusion/include/any.hpp
./boost/fusion/algorithm/query/any.hpp
./boost/fusion/algorithm/query/detail/any.hpp
./boost/any.hpp
./boost/hana/any.hpp
./boost/hana/fwd/any.hpp
./boost/proto/detail/any.hpp
./boost/xpressive/detail/utility/any.hpp
  1. Выведите в консоль все файлы, где упоминается последовательность boost::asio.
$ grep -lr 'boost::asio' .
...
...
./doc/html/process/reference.html
  1. Скомпилирутйе boost. Можно воспользоваться инструкцией или ссылкой.
$ ./bootstrap.sh --prefix=boost_output # prefix указывает в какой папке будут скомпилированы библиотеки и include файлы
$ ./b2 install
9. Перенесите все скомпилированные на предыдущем шаге статические библиотеки в директорию `~/boost-libs`.
$ cd ..
$ mv boost_1_69_0/boost_output boost-libs
10. Подсчитайте сколько занимает дискового пространства каждый файл в этой директории.
$ tree -h
  1. Найдите топ10 самых "тяжёлых".
434M    ./Загрузки/CLion-2018.3.4.tar.gz
170M    ./.local/share/baloo/index
147M    ./.CLion2018.3/system/caches/attrib.dat.storageData
135M    ./boost_1_69_0/bin.v2/libs/math/build/gcc-8.2.1/release/threading-multi/src/tr1/pch.hpp.gch
135M    ./boost_1_69_0/bin.v2/libs/math/build/gcc-8.2.1/release/link-static/threading-multi/src/tr1/pch.hpp.gch
95M     ./.local/share/JetBrains/Toolbox/apps/CLion/ch-0/183.5429.37/lib/platform-impl.jar
73M     ./.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox
71M     ./.local/share/JetBrains/Toolbox/apps/CLion/ch-0/183.5429.37/jre64/lib/amd64/libjfxwebkit.so
63M     ./.local/share/JetBrains/Toolbox/apps/CLion/ch-0/183.5429.37/jre64/lib/rt.jar
62M     ./.local/share/JetBrains/Toolbox/apps/CLion/ch-0/183.5429.37/lib/clion.jar
Copyright (c) 2015-2019 The ISC Authors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment