Web-орієнтована система для аналізу використання ресурсів комп’ютерної аудиторії студентами

Автор работы: Пользователь скрыл имя, 15 Мая 2013 в 05:41, магистерская работа

Описание

У результаті виконання магістерської роботи отримано наступні наукові та практичні результати:
вдосконалено методи для нагромадження і аналізу кількісних даних про використання комп’ютерних ресурсів, що на відміну від існуючих враховують тривалість інтерактивної взаємодії з користувачем.
розроблено Web-орієнтоване програмне забезпечення для аналізу і візуалізації даних про користування комп’ютерними ресурсами вищих навчальних закладів.

Работа состоит из  1 файл

MT_Кильнік_new.doc

— 1.31 Мб (Скачать документ)

Наступною задачею розроблюваної  програми є пошук позиції у  файлі, де знаходиться стрічка з  поточною датою у читабельній  для людини формі – CURDATE. Як вже було сказано раніше, коли даний цикл проходиться не вперше, то пошук починається з того місця у файлі, де була знайдена поточна дата на попередній ітерації основного циклу (TODAY_POS).

Пошук починається з присвоєння значення хибності локальній булевій  змінній curdatestr_found. Ця змінна описуватиме чи знайшовся у файлі протоколу фрагмент, що відповідає за поточну дату. Якщо ні, то вона так і залишиться у значенні хибності, інакше – набуде значення істини.

Далі починається цикл, що триває щонайбільше до кінця файла. В тілі циклу встановлюється нове значення позиції, що відповідає сьогоднішній даті (TODAY_POS). На початку циклу пошуку це значення повинне збігатися з TODAY_POS, тобто значення змінної лишається без змін. Потім починаючи з поточної позиції файла, за допомогою виклику in.getline(buf,BUF_SIZE) зчитується вся стрічка (вся послідовність символів до символу переведення на нову стрічку (‘\n’). Якщо після зчитування стрічки поточна позиція у файлі in.tellg() лишилася без змін, то це свідчить про те, що у стрічці, на яку вказує поточна файлова позиція відсутній перевід на нову стрічку (символ ‘\n’). Останнє може свідчити про невірний формат файла протоколу і не повинне відбуватися за звичайних умов.

Для перевірки того, чи кожна стрічка  у файлі завершується переведенням на новий рядок (символом ‘\n’), виконується перевірка умови про зміну поточної позиції читання з файлу після прочитання чергової стрічки:

 

if (in.tellg() == TODAY_POS)

 

Якщо поточна позиція файла  не змінюється, то це свідчить про невірне  форматування файла, про що користувач повідомляється відповідним діалоговим повідомленням і програма завершує своє виконання з кодом зупину 1. Коли такої перевірки не зробити, то у випадку порушення структури файлу (відсутності символа ‘\n’ після стрічки), цикл while (!in.eof()) зависає, ніколи не доходячи до кінця файла. Ця ситуація проявляється у тому, що операційна система фіксує, завантаженість ядра центрального процесора процесом розроблюваної програми на рівні 100%. Відлагодити цю ситуацію вдалося за допомогою спостереження за зміною значення поточної позиції файла до та після зчитування стрічки.

Коли помилки форматування файла  немає, виконується аналіз отриманої  стрічки. Це здійснюється за допомогою  об’єкту класу потокової обробки  стрічок istrstream. Аргументом конструктора задається буфер, куди було прочитано стрічку. Створюється ще один тимчасовий локальний буфер tmp_date, що придатний для збереження інформації про дату (довжиною DATESTR_SIZE). Прочитання інформації зі стрічкового буфера здійснюється за допомогою оператора потокового введення ss >> tmp_date. Таку схему обрано з тією метою, щоб забезпечити деяку гнучкість формату файлу, оскільки потоковий ввід пропускатиме всі передуючі символи прогалин (пробіли та табуляції), що можуть знаходитися перед датою. Однак, слід зауважити, що вибір обмеженої довжини DATESTR_SIZE для тимчасового буфера tmp_date може спричинити помилки часу виконання при обробці програмою невірно сформатованих файлів протоколу, що не є її власними. Коли перша стрічка у файлі, без врахування передуючих прогалин, більша за DATESTR_SIZE, то це може призвести до помилки часу виконання (намагання запису в неіснуючу сторінку віртуальної пам’яті). В останньому випадку програма завершиться аварійно без жодних пояснень. Взагалі, з такою поведінкою можна змиритися, оскільки зазвичай користувачі програми не повинні були б намагатися „підсунути” їй фальшиві файли, які вона не генерувала.

Після одержання стрічки дати із стрічки файла протоколу у  тимчасовий буфер tmp_date, здійснюється перевірка, чи не дорівнює ця дата поточній даті CURDATE. Ця перевірка виконується за допомогою об’єкту класу string, що є частиною стандартної бібліотеки С++. Звісно з цією ж самою метою можна було б скористатися функцією strcmp з стандартної бібліотеки обробки стрічок мови С, однак доречно використовувати її сучасніший об’єктно-орієнтований аналог, що реалізується методом compare класу string стандартної бібліотеки С++. Повернення цим методом нуля, аналогічно як функцією strcmp, означає, що стрічки літерально еквівалентні. Коли це так, то булевій змінній curdatestr_found, що відповідає за успішність пошуків поточної дати у файлі протоколу, встановлюється значення істинності і цикл пошуку зупиняється.

Незалежно від успіху пошуків запису поточної дати у файлі протоколу, позначається, що цикл пошуку на даному етапі вже відбувався, отже наступний раз він відбуватиметься не вперше, а вдруге, отже булева змінна for_first_time, що характеризує, чи цей цикл виконується вперше, набуває значення хибності.

Наступні оператори програми виконують вже відомі дії щодо визначення поточного активного процесу, вікно якого є у фокусі.

3.2. Реалізація прикладної частини веб-орієнтовагого додатку

Оскільки у даній магістерській  роботі розробляється веб-орієнтований додаток, то для реалізації його прикладної частини з графічним інтерфейсом користувача використано технологію Java server pages [27].

Середовищем виконання проектів, що написані з використанням технології Java server pages виступає Tomcat. Розробку і дослідження системи, що є предметом магістерської роботи виконано у середовищі Tomcat 6.0.

Розробку проекту, згідно з Брунером [27] слід розпочати зі створення структури каталогів веб-орієнтованої системи у папці, де було встановлено контейнер веб-додатків Tomcat 6.0, а саме слід створити папку CompResAnalyseApp в каталозі C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps. У цій папці слід створити файл index.jsp, що буде містити основне меню доступу до способів використання програми, див. рис. 2.1. Вміст цього файла наведено у додатку Е.

Тепер, коли запустити на виконання  контейнер веб-додатків, виконавши  файл C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\tomcat6.exe, появиться вікно, див. рис. 3.1, що свідчить про його успішний запуск.

 

Рисунок 3.1 – Вікно запуску контейнера веб-додатків Tomcat 6.0

 

Вікно рис. 3.1 можна згорнути. Після  запуску браузера і введення в  стрічці веб-адреси http://localhost/ появиться вікно рис. 3.2, що свідчить про вірне налаштування серверу веб-додатків.

Рисунок 3.2 – Початкове вікно сервера (контейнера) веб-додатків Tomcat 6.0

 

При додаванні в кінець цієї адреси назви проектованого у магістерській  роботі веб-додатку CompResAnalyseApp отримаємо вікно з переліком способів використання системи рис. 3.3.

 

Рисунок 3.3 – Меню способів використання веб-орієнтованої системи аналізу використання комп’ютерних ресурсів студентами

 

Звісно, що на даний момент жоден  з пунктів меню не діє, оскільки ще не було створено файлів edit_ips.jsp, soft_categorization.jsp, static_view.jsp, dynamic_view.jsp, див. додаток Е.

Розпочнемо проектування системи  з локального випадку, тому перший спосіб використання, що передбачає наявність  локальної мережі, реалізовувати  не будемо.

Другий спосіб використання – категоризації виконуваних файлів прикладного програмного забезпечення передбачає асоціацію кожного імені виконуваного файлу з тією чи іншою категорією. Згідно з структурою програмного забезпечення, що була спроектованою в параграфі 2.2 і представлена в таблиці додатку Б, слід створити перелічуваний тип Category. З цією метою необхідно створити нову папку в контейнері веб-додатків: „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF”, а у ній підпапку classes [22]. Саме в папці classes будуть знаходитися всі класи і перелічувані типи розроблюваної веб-орієнтованої системи. Кожен клас, згідно з технологією Java server pages, повинен бути частиною якогось пакету; назва пакету повинна збігатися з назвою підпапки у папці classes. Назвемо пакет розроблюваного веб-додатку ra (від Resource analysis – аналізування ресурсів).

Для перевірки функціонування алгоритму  категоризації використаємо протокол нагромаджених спостережень за користуванням комп’ютерними ресурсами, що наведений в додатку Ж.

З кожною прикладною програмою (ресурсом) асоціюється його категорія і ці дані зберігаються у базу даних. Сервером баз даних обрано MYSQL, оскільки він поширюється на основі безкоштовної ліцензії і його сучасні версії не надто сильно поступаються комерційним СУБД, таким як MS SQL чи Oracle.

Асоціацію назви виконуваного файлу  з ресурсом здійснимо за допомогою  класів Application, ApplicationCollection та ConnectionBean, текст реалізації яких знаходиться в додатку Е). Оскільки категоризація вимагає створення бази даних і таблиці додатків, то таку базу даних ми створимо, запустивши на виконання клієнт для роботи з MYSQL виконавши з командного рядка: mysql –u root, тобто доступ до бази даних під адміністратором. Після виконання цієї команди появляється вікно терміналу рис. 3.4.

 

Рисунок 3.4 – Вікно клієнта MYSQL для адміністрування баз даних

 

Після появи цього вікна виконаємо  наступний скрипт створення бази даних і таблиці додатків, скопіювавши  і вставивши його з буферу обміну:

create database CompResAnalyseDB;

use CompResAnalyseDB;

create table application (exe text, category text, primary key(exe));

 

В результаті його виконання отримано наступний протокол створення:

mysql> create database CompResAnalyseDB;

Query OK, 1 row affected (0.01 sec)

mysql> use CompResAnalyseDB;

Database changed

mysql> create table application (exe text, category text, primary key(exe));

ERROR 1170 (42000): BLOB/TEXT column 'exe' used in key specification without a key length

Отже операція створення бази даних CompResAnalyseDB була успішною, тоді як операція створення таблиці application завершилася з помилкою. Помилка виникла внаслідок того, що тип text не підходить для ключів. Цю помилку усунено заміщенням типу даних на varchar необхідної довжини:

 

mysql> use CompResAnalyseDB;

Database changed

mysql> create table application (exe varchar(255), category varchar(100), primar

y key(exe));

Query OK, 0 rows affected (0.06 sec)

 

Тепер таблицю створено успішно. Отримання стрічок з назвами ресурсів (виконуваних файлів) з протоколу Ж здійснено у файлі soft_categorization.jsp, наступним чином:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

 

<%-- Запис у базу  даних має бути перед заповненням  таблиці з списком робіт, бо insert має бути перед select --%>

 

<jsp:useBean id="ac" class="ra.ApplicationCollection" scope="request" />

 

<%

 

ac.fillDB();

 

%>

 

 

<html>

<%-- Це також коментар. В useBean властивість scope буває page, request, session, application --%>

 

<% ac.readFromDB(); %>

 

<table border="1" width="100%">

<c:forEach var="anApplication" items="${ac}">

<tr>

<td>${anApplication.category}</td>

<td>${anApplication.exeFile}</td>

</tr>

</c:forEach>

</table>

 

 

</html>

 

До проекту додано також службовий  клас зв’язку з базою даних  ConnectionBean, його код також знаходиться у додатку Е.

Компіляція класів Category, Application, ApplicationCollection та ConnectionBean була виконана за допомогою оператора javac *.java з командного рядка і відбулася успішно. Проте вибір у вікні рис.3.3 способу використання категоризації призведе до помилки часу виконання: „HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: /soft_categorization.jsp(5,0) The value for the useBean class attribute ra.ApplicationCollection is invalid. org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)”.

Вищезгадана помилка є наслідком того, що контейнер веб-додатків Томкат 6.0 вимагає перезапуску свого середовища (див. рис. 3.1) для того, щоб новостворені класи додатку стали йому доступні. Тому вікно рис. 3.1 слід закрити і повторно запустити програму tomcat6.exe.

Повторне звернення до пункту меню категоризації призводить до виникнення порожньої сторінки, див. рис. 3.5.

Рисунок 3.5 – Початковий результат виконання категоризації

 

Перегляд таблиці application за допомогою команди select * from application дає порожню множину. Такий ефект викликано тим, що замість оператора SQL insert було використано оператор update, який нічого не поновлює, коли записи у таблиці відсутні. Після виправлення цієї помилки, а також після виправлення помилки „org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1”, що свідчила про помилку в SQL команді delete, отримуємо список ресурсів (виконуваних файлів), що наведений на рис. 3.6. Повністю цей список наведено в табл. 3.1.

Рисунок 3.6 – Фрагмент списку для категоризації ресурсів (виконуваних файлів)

На початку категоризації усі  прикладні програми потрапляють ц невідому категорію (UNKNOWN). Насправді навіть при зміні категорії тієї чи іншої програми перезавантаження сторінки категоризації наново переведе її у категорію UNKNOWN, такий ефект виникає внаслідок того, що оператор ac.fillDB() у файлі soft_categorization.jsp запускається безумовно. Щоб уникнути цього ефекту слід добавити перевірку певної умови при настанні якої посилання його слід було б виконувати. Такою умовою буде перехід на посилання „категоризувати наново”, що передає на поточну сторінку методом GET параметр recategorize=1.

Таблиця 3.1

Список ресурсів (виконуваних файлів прикладних програм), що підлягають категоризації

 

Початкова категорія

Ресурс

Початкова категорія

Ресурс

UNKNOWN

MSDEV.EXE

UNKNOWN

TERGEN.EXE

UNKNOWN

taskmgr.exe

UNKNOWN

VCSPAWN.EXE

UNKNOWN

TOTALCMD.EXE

UNKNOWN

csrss.exe

UNKNOWN

explorer.exe

UNKNOWN

spoolsv.exe

UNKNOWN

calc.exe

UNKNOWN

ACDSee5.exe

UNKNOWN

hh.exe

UNKNOWN

DjVuSolo.exe

UNKNOWN

WINWORD.EXE

UNKNOWN

MSOHELP.EXE

UNKNOWN

birthdaylist.exe

UNKNOWN

sethc.exe

UNKNOWN

Lingvo.exe

UNKNOWN

SynTPEnh.exe

UNKNOWN

cmd.exe

UNKNOWN

LvAgent.exe

UNKNOWN

chrome.exe

UNKNOWN

MovieApp1.exe

UNKNOWN

notepad++.exe

UNKNOWN

dwwin.exe

UNKNOWN

EXCEL.EXE

UNKNOWN

rvsim.exe

UNKNOWN

rundll32.exe

UNKNOWN

sol.exe

UNKNOWN

AcroRd32.exe

UNKNOWN

helpctr.exe

UNKNOWN

audacity.exe

UNKNOWN

procexp.exe

UNKNOWN

notepad.exe

UNKNOWN

WINRAR.EXE

UNKNOWN

firefox.exe

UNKNOWN

NokiaMServer.exe

UNKNOWN

opera.exe

UNKNOWN

CNAB4SWK.EXE

UNKNOWN

diaw.exe

UNKNOWN

FineReader.exe

UNKNOWN

MATLAB.exe

UNKNOWN

wmplayer.exe

UNKNOWN

POWERPNT.EXE

   

Информация о работе Web-орієнтована система для аналізу використання ресурсів комп’ютерної аудиторії студентами