Главная страница

Практика НИР. Практическая работа 1. Подготовка требований к качеству информационной системы 3 1 Основные определения 3 2 Цель практической работы 3


Скачать 298.72 Kb.
НазваниеПрактическая работа 1. Подготовка требований к качеству информационной системы 3 1 Основные определения 3 2 Цель практической работы 3
АнкорПрактика НИР
Дата15.07.2022
Размер298.72 Kb.
Формат файлаdocx
Имя файлаPrakticheskie_raboty_1-6.docx
ТипПрактическая работа
#631229
страница3 из 7
1   2   3   4   5   6   7

Практическая работа №3. Серверное программное обеспечение проведения вычислительных экспериментов

3.1 Необходимое программное обеспечение


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

3.2 Цель практической работы


Цель настоящей практической работы – подготовить серверное программное обеспечение для обработки поступающих запросов с использованием нескольких исследуемых программных решений.

3.3 Задачи практической работы


Для достижения поставленной цели необходимо решить следующие задачи:

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

  2. Установить набор взаимозаменяемых программных решений для проведения вычислительного эксперимента.

  3. Удостовериться в доступности программных решений по протоколу HTTP.

3.4 Рекомендации по выполнению практической работы


Внутри корневой директории, созданной для проведения практических работ, создайте поддиректорию /app. В этой директории будут размещены клиентское и серверное приложения. Создайте поддиректорию /vm/server, в которую поместите файл .npmrc (точка в начале названия обязательна) содержащий единственную строчку (без кавычек): «bin-links=false». Ввиду того, что для экспериментов используются общие папки, создание символических ссылок (symbolic links) может быть проблематичным. Этот файл конфигурации устанавливает настройки пакетного менеджера npm по умолчанию, а указанная опция отключает использование символических ссылок.

В директории /app/server создайте файл с именем package.json и поместите в него следующее содержимое.

{

  "name": "server",

  "version": "1.0.0",

  "description": "",

  "main": "index.js",

  "scripts": {},

  "author": "",

  "dependencies": {

    "express": "4.17.1",

    "fast-levenshtein": "3.0.0",

    "fastest-levenshtein": "1.0.12",

    "fs-extra": "9.1.0",

    "hermetrics": "1.0.0",

    "levdist": "2.2.10",

    "leven": "3.1.0",

    "levenshtein-sse": "1.1.0",

    "natural": "2.4.5",

    "on-finished": "2.3.0",

    "talisman": "1.1.4"

  },

  "license": "UNLICENSED"

}

Файл конфигурации проекта содержит перечень зависимостей, которые должны быть установлены. Чтобы это осуществить, подключитесь к виртуальной машине с помощью команды vagrant ssh, перейдите в каталог проекта (cd /vagrant/app/server) и выполните команду установки – npm install.

Кроме этого, потребуется алгоритм, который бы подключал различные программные решения и обеспечивал к ним доступ извне по единому API (интерфейсу прикладного программирования). Для настоящей работы предлагается использовать следующий программный код, который следует поместить в файл index.js:

const express = require('express');

const onFinished = require('on-finished');

const path = require('path');

const fs = require('fs-extra');
const normalizedPath = path.join(__dirname, 'routes');

const app = express();

const port = 3000;
const logger = function (req, res, next) {

  const start = new Date();
  onFinished(res, (err) => {

    const end = new Date();

    const time = end.getTime() - start.getTime();
    const file = path.join(__dirname, 'log', req.path);

    const exists = fs.pathExistsSync(file);
    if (!exists) {

      fs.ensureFileSync(file);

      fs.appendFileSync(file, 'time,code,data\n');

    }

    fs.appendFileSync(file, `${time},${res.statusCode},${res.body}\n`);

  });
  next();

};
app.use(logger);

fs.readdirSync(normalizedPath).forEach((file) => {

  const route = require(`./routes/${file}`);

  app.get(`/${route.name}`, route.callback);

});
app.listen(port, () => {

  console.log(`Experimental app listening at http://localhost:${port}`);

});

Далее, в соответствии с вариантом задания, поместите рассматриваемые программные решения (см. раздел 3.6) внутрь директории /app/server/routes, предварительно создав её. Файлы могут иметь любое название, а расширение должно быть .js. Пример структуры показан на рисунке Рисунок 2



Рисунок 2 – Структура файлов и директорий

После размещения файлов необходимо проверить работоспособность серверного программного обеспечения. Для того, чтобы его запустить, внутри виртуальной машины перейдите в каталог /vagrant/app/server и выполните команду node index.js (пример на рисунке Рисунок 3)



Рисунок 3 – Запуск серверного программного обеспечения

После чего, в браузере, перейдите по адресу http://192.168.84.123:3000/algorithm?a=qwe&b=q23, где замените algorithm на одно из названий программных решений, которые будут исследоваться в соответствии с вариантом задания. Если в браузере отображается цифра (как показано на рисунке Рисунок 4), соответствующая редакционному расстоянию Левенштейна между строчками a и b (в примере выше – 2), следует считать, что серверное программное обеспечение работает корректно.



Рисунок 4 – Результат вычисления редакционного расстояния Левенштейна серверным программным обеспечением
1   2   3   4   5   6   7


написать администратору сайта