Данная лабораторная работа посвещена изучению утилит для разработки проектов
- 1. Ознакомиться со ссылками учебного материала
- 2. Выполнить инструкцию учебного материала
- 3. Составить отчет и отправить ссылку личным сообщением в Slack
В этом блоке добавляем переменные окружения 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
Создание отчета по лабораторной работе
# Добавляем переменную с номером л/р
$ 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↵
- Скачайте библиотеку 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
- Разархивируйте скаченный файл в директорию
~/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*
- Подсчитайте количество файлов в директории
~/boost_1_69_0
не включая вложенные директории.
$ ls -f . | wc -l
20
- Подсчитайте количество файлов в директории
~/boost_1_69_0
включая вложенные директории.
$ find . -type f | wc -l
61191
- Подсчитайте количество заголовочных файлов, файлов с расширением
.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
- Найдите полный пусть до файла
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
- Выведите в консоль все файлы, где упоминается последовательность
boost::asio
.
$ grep -lr 'boost::asio' .
...
...
./doc/html/process/reference.html
- Скомпилирутйе 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
- Найдите топ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