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

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

Описание

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

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

MT_Кильнік_new.doc

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

 

 

Додаток А 
Специфікація системи аналізу використання комп’ютерних ресурсів студентами ВНЗ

Веб-орієнтований додаток, який ми називатимемо CompResAnalyseApp, призначений для працівника ВНЗ (далі користувача), що бажає аналізувати роботу студентів з комп’ютерними ресурсами лабораторії. Ресурсами студенти користуються виключно за допомогою прикладних програм. Прикладні програми можуть бути оригінальними, тобто тими, що були встановлені інженерами лабораторії або принесеними студентом самовільно.

Додаток потрібно розробити як „настільну” програму Java або веб-додаток на основі технології Java server pages, він повинен мати графічний інтерфейс користувача (GUI), що є простим та зручним у використанні.

На початку роботи з додатком користувач повинен сформувати список ІР-адрес підконтрольних робочих станцій аудиторії ВНЗ. Користувач повинен мати можливість переглядати якими прикладними програмами і скільки часу студенти користуються на підконтрольних робочих станціях. Також повинен мати змогу категоризувати виконувані файли прикладних програм на наступні категорії: текстові процесори, браузери, засоби розробки, засоби моделювання, засоби відтворення (аудіо-відео програвачі, переглядачі зображень та текстів), службове ПЗ (для роботи з принтером, DVD-записувачем), розважальне ПЗ (ігри), шкідливе ПЗ (троянські коні) та невідоме ПЗ. Остання категорія включає програми, розроблені користувачем самостійно в процесі роботи на занятті чи принесені ним ззовні (зі змінних носіїв, комп’ютерних мереж).

Інформацію про користування комп’ютерними ресурсами додаток повинен подавати в двох режимах: статичному та динамічному. При виборі „статичного” режиму користувач повинен обрати дату, починаючи з якої система обчислюватиме показники функціонування ПЗ: загальна та середньодобова тривалість роботи з програмами, середньодобова частка роботи з кожною програмою, середня тривалість роботи з ПК протягом доби.

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

 

Додаток Б 
Виокремлення класів, атрибутів та методів на основі аналізу тексту специфікації системи

Іменники

Пояснення

Претенденти на класи та атрибути

додаток

Додаток – це основа розроблюваної  системи. Оскільки даний додаток являє собою „настільний” або веб-орієнтований додаток з графічним інтерфейсом користувача, то ми скористаємося відповідними зразками дизайну (design patterns), що дозволять спростити задачу кодування.

CompResAnalyseApp

працівник ВНЗ

Працівник ВНЗ є користувачем системи і не є її частиною. Якщо б проектована система була орієнтована на роботу з багатьма працівниками, то слід було б створити клас Worker, але у цій магістерській роботі буде лише один авторизований працівник, що має доступ до всіх функцій системи.

 

користувач

те саме, що й попереднє. За межами системи.

 

аналіз роботи студентів  з комп’ютерними ресурсами

аналіз роботи студентів  з комп’ютерними ресурсами –  це головне завдання проектованої системи. Проте, як було виявлено в першому розділі, студенти можуть отримувати доступ до ресурсів лише за допомогою прикладних програм, тому створимо клас для іменника „тривалість роботи з програмами”, див. нижче.

 

лабораторія

студенти працюють у  множині лабораторій. Якби розроблювана система проектувалася для аналізу використання ресурсів багатьох лабораторій одночасно, то слід було б створити клас „Laboratory”. Однак, зважаючи на те, що в кожній лабораторії буде встановлено окрему копію цієї системи (в офісі інженера лабораторії, так званому акваріумі), то створення такого класу не є доцільним.

 

прикладна програма

Оскільки студенти можуть користуватися ресурсами лабораторії  виключно за допомогою прикладних програм, то створимо клас „Application”, що буде містити атрибути її назви, переліку виконуваних файлів цієї програми та її категорії (див. нижче).

Application

інженер лабораторії

те саме, що працівник ВНЗ (див. вище)

 

Java

мова розробки системи, звісно ніяких додаткових класів на це поняття створювати не слід.

 

веб-додаток

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

 

технологія Java server pages

Технологія розробки веб-додатків на мові Java

 

графічний інтерфейс  користувача

при розгляді поняття  „додаток” (див. вище) ми вже зупинялися на деталях графічного інтерфейсу користувача. Сценарії взаємодії з інтерфейсом  системи було описано на попередньому етапі об’єктно-орієнтованого проектування.

 

список ІР-адрес

Колекція стрічок, що описує ІР адреси комп’ютерів однієї аудиторії. Технологічно це буде клас IPaddresses, нащадок стандартної колекції java.util.ArrayList. У ньому повинні бути методи додавання, вилучення та модифікації елементів колекції.

IPaddresses extends java.util.ArrayList

аудиторія ВНЗ

те саме, що й лабораторія (див. вище)

 

виконувані файли

Колекція стрічок з  шляхами до виконуваних файлів. Атрибут  класу „Прикладна програма” (див. вище).

Application.exeFiles

Категорії

Можна реалізувати як перелічуваний тип (enum Category), що має константи, описані далі.

Category

текстові процесори

Константа перелічуваного типу Category. Під цією категорією маємо на увазі текстові редактори: Microsoft®Word, Блокнот і т.п.

Category.TEXT_EDITOR

браузери

Константа перелічуваного типу Category. До цієї категорії належать оглядачі інтернету: Opera, Chrome, Microsoft®IE, FireFox  і т.п.

Category.BROWSER

засоби розробки

Константа перелічуваного типу Category. До цієї категорії належать інтегровані середовища розробки та проблемно-орієнтовані текстові редактори: NetBeans, Eclipse, MS Visual studio, Notepad++ і т.п.

Category.IDE

засоби моделювання

Константа перелічуваного типу Category. До цієї категорії належать середовища моделювання процесів, явищ, об’єктів, систем: Matlab, Mathcad, Workbench, PCAD, AutoCAD, 3DMAX, Macromedia Flash Designer, Photoshop, Corel Draw і т.п.

Category.MODELLING

засоби відтворення

Константа перелічуваного типу Category. До цієї категорії належать переглядачі рисунків, аудіо та відео програвачі: ACDSee, WinDjView, Adobe Reader, Winamp, Windows Media Player і т.п.

Category.VIEW

службове ПЗ

Константа перелічуваного типу Category. До цієї категорії належать утиліти для роботи з периферією (жорсткі диски, лазерні приводи, принтери): засіб дефрагментації, Nero Express, GUI до драйвера принтера, сканера і т.п.

Category.SERVICE

розважальне ПЗ

Константа перелічуваного типу Category. До цієї категорії належать різноманітні ігри: Star craft, War craft, Quake, Sims, шахи, пасьянс та ін.

Category.GAME

шкідливе ПЗ

Константа перелічуваного типу Category. До цієї категорії належать віруси, черв’яки та троянські коні. Їхній список постійно поновлюється, тому для успішного їх виявлення слід користуватися найновішими базами антивірусу.

Category.MALWARE

невідоме ПЗ

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

Category.UNKNOWN

заняття

Описана в специфікації система аналізу використання ресурсів ВНЗ дозволяє аналізувати динаміку показників лише в розрізі однієї доби. Проте в наступних версіях (магістерських роботах інших студентів) слід було б розмежувати аналіз за прийнятим у ВНЗ графіком аудиторного часу занять, наприклад: перше заняття починається з 800, друге – 995, третє – 1110 і т.д.

 

„статичний” режим

Клас, що міститиме атрибути із значеннями відповідних показників користування комп’ютерними ресурсами  в лабораторії (див. далі).

StaticModeAnalysis

„динамічний” режим

Клас, що виконує подібні до попереднього функції, але для динамічного режиму.

DynamicModeAnalysis

дата

Стандартний клас java.util.Date

java.util.Date

тривалість роботи з  програмою

Клас, що містить атрибут  асоціації з об’єктом прикладної програми (Application, див. вище) та атрибут кількості часових відліків, протягом яких вікно програми було у фокусі.

Duration { Application application; long elapsed; }

загальна тривалість роботи з програмами

Атрибут класу аналізу  в „статичному” режимі, колекція об’єктів класу Duration.

ArrayList <Duration> StaticModeAnalysis.total

середня тривалість роботи з програмами

Розраховується для  кожного об’єкту Duration в колекції StaticModeAnalysis.total, шляхом ділення атрибуту Duration.elapsed на кількість діб, в межах яких обчислюються показники.

 

частка тривалості роботи з програмою

Клас з атрибутами додатку Application application та значенням частки double part.

DurationPart {

   Application application;

   double part;

}

середня частка тривалості роботи з програмами

Атрибут класу аналізу в „статичному” режимі, що є класом-колекцією об’єктів „спостереження” Measurement extends Duration {Date date; }, що містить методи обчислення суми відліків в задану добу (сумарна тривалість роботи всіх програм в цю добу) long sum(Date d), значення кількості відліків активності заданої програми в задану добу long elapsed(Date d, Application a), обчислення значення частки для заданої програми “а” і дати “d” double part(Date d, Application a) як elapsed(d, a)/sum(d), середньої частки тривалості роботи з програмою “а” double average(Application a) для всіх дат, що присутні в колекції та середніх часток тривалості роботи всіх програм List<DurationPart> averages().

StaticModeAnalysis.averagepart

MeasurementArray extends ArrayList< Measurement> {

   long sum(Date d);

   long elapsed(Date d, Application a);

   double part(Date d, Application a){

      return elapsed(d, a)/sum(d);

   }

   double average(Application a);

   List<DurationPart> averages();

}


 

Додаток В 
Текст програми локального збору інформації про динаміку зміни активного вікна в ОС Windows

#include <windows.h>

#include <fstream>

#include <tlhelp32.h>

using namespace std;

 

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,   LPSTR     lpCmdLine,

                     int       nCmdShow)

{

while(true){

ofstream out("active_proc_log.txt", ios_base::out | ios_base::app);

HWND active_window = GetForegroundWindow();

 

DWORD pid;

DWORD tid = GetWindowThreadProcessId(active_window, &pid);

 

HANDLE hSnapshot=CreateToolhelp32Snapshot(

TH32CS_SNAPPROCESS,      

0);

 

PROCESSENTRY32 pinfo;

 

Process32First(

hSnapshot,     

&pinfo);

do{

if (pid == pinfo.th32ProcessID){

out << pinfo.szExeFile <<"\n";

break;

}

} while(Process32Next(hSnapshot, &pinfo));

out.close();

Sleep(60000);

}

return 0;

}

 

Додаток Д 
Програмна реалізація системної частини накопичення даних про використання комп’ютерних ресурсів

#include <windows.h>

#include <fstream>

#include <iostream>

#include <strstream>

#include <tlhelp32.h>

#define BUF_SIZE 1024

#define SBUF 100

#define DATESTR_SIZE 11

#define NATURAL_SIGNS_NUMBER 10

#define LOGFILENAME "loggg.txt"

 

using namespace std;

 

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPSTR     lpCmdLine,

                     int       nCmdShow)

{

  char natural_number_format[SBUF];

sprintf(natural_number_format,"%%0%dlu", NATURAL_SIGNS_NUMBER);

 

unsigned long COUNTER;

streampos TODAY_POS;

 

char CURDATE[DATESTR_SIZE], buf[BUF_SIZE];

 

ofstream out;

// Створити файл-протокол, якщо  його ще немає:

out.open(LOGFILENAME,ios::app);

out.close();

 

bool for_first_time = true;

 

while(true){

 

// Крок 1. Відкрити файл-протокол Ф в режимі зчитування (input).

 

ifstream in(LOGFILENAME);

 

int fstate = in.rdstate();

 

if (fstate & ios::badbit || fstate & ios::failbit){

string tmp = "Cannot open file ";

tmp+=LOGFILENAME;

tmp+="\n";

MessageBox(NULL,tmp.c_str(),"Error",0);

return 1;

}

 

if (!for_first_time)

in.seekg(TODAY_POS);

 

// Крок 2. Отримати поточну дату у

// вигляді стрічки CURDATE="дд.мм.рррр".

SYSTEMTIME stCURDATE;

GetLocalTime (&stCURDATE);

sprintf(CURDATE,"%02d.%02d.%04d",stCURDATE.wDay,stCURDATE.wMonth,stCURDATE.wYear);

 

// Крок 3. Записати у змінну TODAY_POS позицію у файлі Ф,

// де є стрічка, що починається  на CURDATE.

bool curdatestr_found = false;

while (!in.eof()) {

TODAY_POS = in.tellg();

in.getline(buf,BUF_SIZE);

 

if (in.tellg() == TODAY_POS){

MessageBox(NULL,"Malformed file! No new line signs\n","Error",0);

return 1;

}

 

istrstream ss(buf);

char tmp_date[DATESTR_SIZE];

ss >> tmp_date;

 

if ((new string(tmp_date))->compare(CURDATE) == 0){

curdatestr_found = true;

break;

}

}

 

for_first_time = false;

 

//Крок 5. Присвоїти змінній active_window ідентифікатор поточного активного вікна.

HWND active_window = GetForegroundWindow();

 

//Крок 6. Реалізувати відображення (2.3), визначивши ідентифікатор

//        процесу, якому належить вікно з ідентифікатором active_window.

DWORD pid;

DWORD tid = GetWindowThreadProcessId(active_window, &pid);

 

// Крок 7. Реалізувати відображення (2.5), знайшовши стрічку executable з

//     назвою виконуваного  файлу, образом якого є процес.

 

string executable;

HANDLE hSnapshot=CreateToolhelp32Snapshot(

TH32CS_SNAPPROCESS,      

0);

 

PROCESSENTRY32 pinfo;

 

Process32First(

hSnapshot,     

&pinfo);

 

do{

if (pid == pinfo.th32ProcessID){

executable = pinfo.szExeFile;

break;

}

} while(Process32Next(hSnapshot, &pinfo));

 

 

//Крок 8. Поки поточна позиція файла не дорівнює EOF

// розшукувати стрічку, що містить  назву виконуваного файлу executable,

 

streampos current_pos;

bool counter_added = false;

 

if (curdatestr_found){

// Перемістити поточну позицію  файла до TODAY_POS:

in.seekg(TODAY_POS);

while (!in.eof()){

current_pos = in.tellg();

in.getline(buf,BUF_SIZE);

 

if (in.tellg() == current_pos){

MessageBox(NULL,"Malformed file! No new line signs\n","Error",0);

return 1;

}

 

istrstream ss(buf);

char t[SBUF],  executable_to_test[SBUF]; // Перевірити  чи executable_to_test == executable

 

ss >> t >> executable_to_test;

 

if (executable.compare(executable_to_test)==0){

// якщо таку стрічку знайдено, то прочитати третю значущу  компоненту 

// стрічки (лічильник) у змінну COUNTER, що є натуральним числом  у 

// форматі 0000000001.

 

char *tmp = buf + ss.tellg();

 

for (; *tmp<'0' || *tmp>'9'; tmp++)

 

current_pos += tmp - buf + 1;

 

ss >> COUNTER;

 

// Збільшити COUNTER на одиницю. 

COUNTER++; counter_added = true;

 

in.close();

out.open(LOGFILENAME, ios::in | ios::out);

//Перемістити поточну позицію файла на початок натурального числа.

out.seekp(current_pos);

// Записати нове значення лічильника  з точно тією ж самою кількістю  значущих 

// цифр 

 

sprintf(buf,natural_number_format, COUNTER);

out << buf;

out.close();

//і перейти на крок 10.

break;

}

}

}

 

if (!counter_added){

//Крок 9. Записати у файл Ф стрічку CURDATE+white_space+ + white_space+"0000000001"

// та символ переходу на нову  стрічку "\n".

in.close();

out.open(LOGFILENAME, ios::app);

sprintf(buf,natural_number_format,1);

out << CURDATE << "\t" << executable.c_str() << "\t" << buf << "\n";

out.close();

}

 

//Крок 10. Закрити файл Ф (для остаточного злиття буфера

// у файл, щоб він був доступний для аналізу і щоб запобігти

// втраті зібраних даних на  випадок аварійного зупину програми).

in.close();

 

//Крок 11. Користувач подав команду на зупинку алгоритму?

// Якщо так, то завершити виконання  алгоритму.

 

// Крок 12. Очікувати протягом вказаної кількості мілісекунд. 

Sleep(1000);

 

//Крок 13. Перейти на крок 1.

}

return 0;

}

 

Додаток Е 
Програмна реалізація прикладної частини веб-додатку аналізу використання комп’ютерних ресурсів

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\index.jsp”:

<html>

<title>

Веб-орієнтована система аналізу  використання комп'ютерних ресурсів (Кильнік І.Ф.)

</title>

<!-- тут меню основних способів  використання системи -->

<p> <a href="edit_ips.jsp"> Редагувати список IP-адрес підконтрольних ПК </a> </p>

<p><a href="soft_categorization.jsp"> Категоризація  виконуваних файлів ППЗ </a></p>

<p><a href="static_view.jsp"> Перегляд  статистики використання комп'ютерних  ресурсів у 

статичному режимі </a></p>

<p><a href="dynamic_view.jsp"> Перегляд статистики використання комп'ютерних ресурсів у

динамічному режимі </a></p>

</html>

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\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" />

<%--  В useBean властивість scope буває page, request, session, application --%>

 

<a href = "?recategorize=1"> категоризувати  наново </a>

 

<c:if test="${param.recategorize==1}">

<% ac.fillDB(); %>

<c:redirect url="soft_categorization.jsp" />

</c:if>

 

<html>

 

 

<% ac.readFromDB(); %>

 

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

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

<tr>

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

<td><a href="categorize.jsp?exeFile=${anApplication.exeFile}"> ${anApplication.exeFile} </a></td>

</tr>

</c:forEach>

</table>

</html>

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\categorize.jsp”:

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

<html>

<title> Призначення категорії  для ресурсу (виконуваного файла) ${param.exeFile} </title>

<body>

<h1> Призначення категорії для  ресурсу (виконуваного файла) ${param.exeFile} </h1>

 

<jsp:useBean id="app" class="ra.Application" scope="session" />

<jsp:setProperty name="app" property="*" />

 

<jsp:useBean id="c" class="ra.AllCategories" scope="request" />

 

<c:forEach var="aCategory" items="${c.values}">

<p><a href="setCategory.jsp?category=${aCategory}"> ${aCategory} </a></p>

</c:forEach>

 

</body>

</html>

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\setCategory.jsp”:

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

<jsp:useBean id="app" class="ra.Application" scope="session" />

<jsp:setProperty name="app" property="*" />

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

 

<h1> Присвоюємо категорію ${app.category} ресурсу ${app.exeFile} </h1>

 

 

<% ac.updateDB(app); %>

<c:redirect url="soft_categorization.jsp" />

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF\classes\ra\Application.java”:

package ra;

public class Application{

String exeFile;

public String getExeFile(){return exeFile;}

public void setExeFile(String s){exeFile=s;}

Category category;

public String getCategory(){return category.toString();}

public void setCategory(String s){ category = Category.valueOf(s);}

}

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF\classes\ra\AllCategories.java”:

package ra;

public class AllCategories{

public Category[] getValues(){

return Category.values();

}

}

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF\classes\ra\Category.java”:

package ra;

public enum Category{

TEXT_EDITOR,

BROWSER,

IDE,

MODELLING,

VIEW,

SERVICE,

GAME,

MALWARE,

UNKNOWN;

}

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF\classes\ra\ ApplicationCollection.java”:

package ra;

import java.util.*;

import java.sql.*;

import java.io.*;

public class ApplicationCollection extends ArrayList<Application>{

Connection con = (new ConnectionBean()).con;

public ApplicationCollection()throws Exception{

}

public void readFromDB()throws Exception{

ResultSet rs = con.createStatement().executeQuery("select * from application");

while (rs.next()){

Application a = new Application();

a.exeFile = rs.getString("exe");

a.category = Category.valueOf(rs.getString("category"));

add(a);

}

}

 

public void fillDB()throws Exception{

con.createStatement().executeUpdate("delete from application");

Scanner sc = new Scanner(new File("D:/loggg.txt"));

while (sc.hasNextLine()){

String str = sc.nextLine();

String[] nn = str.split("\t", 3);

insertToDB(nn[1]);

}

}

 

public void insertToDB(String s)  throws Exception{

try{

PreparedStatement ps = con.prepareStatement("insert into application (exe,category) values(?,?)");

ps.setString(1,s);

ps.setString(2,Category.UNKNOWN.toString());

ps.executeUpdate();

} catch (SQLException e){

Application a = new Application();

a.exeFile = s;

a.category = Category.UNKNOWN;

updateDB(a);

}

}

 

public void updateDB(Application a) throws Exception{

PreparedStatement ps = con.prepareStatement("update application SET category=? where exe=?");

ps.setString(1,a.category.toString());

ps.setString(2,a.exeFile);

ps.executeUpdate();

}

}

 

 

Вміст файла „C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\CompResAnalyseApp\WEB-INF\classes\ra\ConnectionBean.java”:

package ra;

 

import java.sql.*;

import java.util.*;

 

public class ConnectionBean{

public Connection con;

public ConnectionBean()  throws Exception{

/*

Конструктор кожного біна має бути public!!!

Інакше буде помилка:"

org.apache.jasper.JasperException: /edit_jobs.jsp(4,0) The value for the useBean class attribute workersjobs.Job is invalid."

*/

con = DriverManager.getConnection("jdbc:mysql:///CompResAnalyseDB?user=root&password=");

}

}

 

 

 

 

Додаток Ж 
Протокол спостережень користування ресурсами

Дата

Ресурс (прикладна  програма)

Тривалість, 
секунди

01.04.2011

MSDEV.EXE

911

01.04.2011

taskmgr.exe

237

01.04.2011

TOTALCMD.EXE

865

01.04.2011

explorer.exe

157

01.04.2011

calc.exe

19

01.04.2011

hh.exe

131

01.04.2011

WINWORD.EXE

4419

01.04.2011

birthdaylist.exe

113

01.04.2011

Lingvo.exe

28

01.04.2011

cmd.exe

18

01.04.2011

chrome.exe

15

01.04.2011

notepad++.exe

29

02.04.2011

explorer.exe

544

02.04.2011

TOTALCMD.EXE

44

02.04.2011

WINWORD.EXE

8569

02.04.2011

taskmgr.exe

38

02.04.2011

calc.exe

222

02.04.2011

MSDEV.EXE

22

03.04.2011

taskmgr.exe

95

03.04.2011

WINWORD.EXE

7662

03.04.2011

explorer.exe

269

03.04.2011

TOTALCMD.EXE

1842

03.04.2011

EXCEL.EXE

10

03.04.2011

cmd.exe

43

03.04.2011

rundll32.exe

1

04.04.2011

explorer.exe

307

04.04.2011

taskmgr.exe

75

04.04.2011

TOTALCMD.EXE

927

04.04.2011

WINWORD.EXE

5458

04.04.2011

Lingvo.exe

166

04.04.2011

AcroRd32.exe

313

04.04.2011

EXCEL.EXE

2

04.04.2011

calc.exe

2

04.04.2011

hh.exe

148

04.04.2011

audacity.exe

1644

04.04.2011

notepad.exe

326

05.04.2011

explorer.exe

82

05.04.2011

taskmgr.exe

1

05.04.2011

TOTALCMD.EXE

616

05.04.2011

WINWORD.EXE

93

07.04.2011

explorer.exe

168

07.04.2011

taskmgr.exe

39

07.04.2011

WINWORD.EXE

1590

07.04.2011

TOTALCMD.EXE

520

07.04.2011

hh.exe

1471

07.04.2011

chrome.exe

477

07.04.2011

AcroRd32.exe

1499

07.04.2011

notepad++.exe

1508

07.04.2011

firefox.exe

218

07.04.2011

opera.exe

648

08.04.2011

explorer.exe

299

08.04.2011

taskmgr.exe

4

08.04.2011

TOTALCMD.EXE

1

08.04.2011

AcroRd32.exe

5

08.04.2011

WINWORD.EXE

6380

08.04.2011

diaw.exe

925

10.04.2011

MSDEV.EXE

12

10.04.2011

taskmgr.exe

23

10.04.2011

explorer.exe

52

10.04.2011

TOTALCMD.EXE

329

10.04.2011

WINWORD.EXE

8181

11.04.2011

explorer.exe

138

<p class="dash041e_0431_044b_0447_043d_0

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