Skip to content

Instantly share code, notes, and snippets.

@hackallcode
Last active November 27, 2017 22:46
Show Gist options
  • Save hackallcode/06e1c04c4f43d9f22932b8ede3f19fcd to your computer and use it in GitHub Desktop.
Save hackallcode/06e1c04c4f43d9f22932b8ede3f19fcd to your computer and use it in GitHub Desktop.
lab13

Laboratory work XIII

Написать программы на C++ для сериализации и десериализации структуры Person.

Структура Person определяется следующим образом:

struct Email {
  std::string nickname;
  std::string server;
};

struct Person {
  std::string  first_name;
  std::string  last_name;
  Email        email;
  size_t       age;
  std::string  phone;
};

Структура репозитория должна иметь следующий вид:

cmake/HunterGate.cmake
sources/
- pack.cpp 
- unpack.cpp
CMakeLists.txt

Сериализованные данные должны пройти проверку валидатора jsonlint

Tasks

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

Tutorial

$ export GITHUB_USERNAME=hackallcode
$ alias edit=nano
$ cd ~/workspace
$ source scripts/activate
$ mkdir projects/lab13 && cd projects/lab13
$ git inti
$ git remote add origin git@github.com:${GITHUB_USERNAME}/lab13
$ edit CMakeLists.txt
$ edit sources/pack.cpp
$ edit sources/unpack.cpp
$ cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install
$ cmake --build _build --target install
$ ./_install/bin/pack artifacts/test.json
Enter data to fields of the Person structure.
First name:
John
Last name:
Smith
E-mail:
john-smith@yandex.ru
Age (optional):

Phone (optional):
+1-111-111-11-11
$ ./_install/bin/unpack artifacts/test.json
[Person]
First name: John
Last name:  Smith
E-mail:     john-smith@yandex.ru
Phone:      +1-111-111-11-11
$ jsonlint artifacts/test.json
{
  "age": 0,
  "email": {
    "nickname": "john-smith",
    "server": "yandex.ru"
  },
  "first_name": "John",
  "last_name": "Smith",
  "phone": "+1-111-111-11-11"
}
$ cat >> .travis.yml <<EOF
before_install:
  - if [ "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi
addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - gcc-4.9
      - g++-4.9
language: cpp
script:
- cmake -H. -B_build -DCMAKE_INSTALL_PREFIX=_install
- cmake --build _build --target install
- ./_install/bin/unpack artifacts/test.json
- npm install jsonlint -g
- jsonlint artifacts/test.json
EOF
$ git add .
$ git commit -m"first commit"
$ git push origin master
$ travis login --auto
$ travis enable

Report

$ cd ~/workspace
$ source scripts/activate
$ mkdir reports/lab12 && cd reports/lab13
$ edit REPORT.md
$ gistup -m "lab13"

Links

Copyright (c) 2017 Братья Вершинины
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment