Изисквания за изпълнение, предаване и оценяване на курсовите проекти
Курсът "Практическо програмиране с Perl" завършва с предаването на курсов проект от всеки един от студентите. Проектите имат тежест 40% (40 точки) от крайната оценка. Всеки проект следва да бъде предаден в следния пакет:
- Печатна документация на проекта - документация разпечатана по приложения на сайта на курса шаблон
- Електронно копие на проекта - на дискета и/или CD-R/RW. Електронното копие се състои от:
- изпълним сорс код на самия проект
- допълнителните използвани модули като .ppm или .tar.gz пакети в зависимост от това на каква дистрибуция на Perl е предвиден да се тества проекта. Ако модулът присъства в стандартната дистрибуция на Perl не е нужно да бъде прилаган към сорса на проекта
- INSTALL текстов файл, в който са описани на английски или на български с латински букви нужните стъпки за инсталация и стартиране на проекта
- документацията към проекта под формата на файл, в някои от следните формати (.doc, .rtf, .html или добре индентиран текстов файл. Изисква се спазването на формата наложен от шаблона за документация, побликуван на сайта)
Оценяването на проектите се извършва от преподавателите при защита на проекта от страна на студента. Защитата представлява кратка беседа пред компютър, по време на която студента демонстрира функционалността на проекта, дава обяснения по реализацията и в определени случай получава малки задачки за промяна на несъществени части от кода. Формирането на оценката взима в предвид посочените фактори:
- (до 10 т.) Разбиране и защита на решението, отговаряне на въпроси по сорс кода
- (до 05 т.) Умения за бърза промяна на малки части от функционалността на приложението
- (до 10 т.) Наличие на пълната, изискана в описанието на проекта функционалност.
- (до 05 т.) Индентация и стил на кода
- (до 02 т.) Документация
- (до 08 т.) Интерактивна конфигурируемост и конфигурируемост като цяло.
Забележка: Горната схема на оценяване е само ориентировъчна. Макар и да се стремят да следват посочените точки, преподавателите си запазват правото да разпределят общия брой точки според показаните уменя с цел да се запзи максимално коректното оценяване. Така например, човек който има работещо решение, но не разбира нищо от кода не може да се надява на голям брой точки. Същото важи и в обратна посока.
Тестови Установки
За проверка на проектите ще са налични следните софтуерни пакети:
- Perl 5.8.5 (главно за тези, които са използвали threads)
- Postgresql 7.4.5
- Apache
- Cygwin
- Windows/Linux OS
Избиране на проект
Избирането на проект започва като се кликне върху името на проекта (заб: предложенията за проекти от страна на студентите се изпращат директно по email). След като получите разрешение от системата да изберете даден проект следва да попълните факултетния си номер и да потвърдите избора си. Изборът става еднократно и корекции няма да бъдат нанасяни, за това обмислете добре избора си. Ако не изберете и регистрирате вашия избор, няма да бъде възможно преглеждане/оценяване на работата ви. За описание на проектите при предаването им се използва следния:
Постарайте се да си разпечтате шаблона, защото ще бъде официалния документ, описващ резултата от проверката на знанията ви.
Описание на проектите
Изберете номер от списъка за визуализация текста на условието.
[ 1 ]
[ 2 ]
[ 3 ]
[ 4 ]
[ 5 ]
[ 6 ]
[ 7 ]
[ 8 ]
[ 9 ]
[ 10 ]
[ 11 ]
[ 12 ]
[ 13 ]
[ 14 ]
[ 15 ]
[ 16 ]
[ 17 ]
[ 18 ]
| номер на проекта | 1 |
| име на проекта | новини към ICQ/SMS/email |
| описание | Да се реализира демон, който периодично проверява по RSS или по друг удобен начин набор от новинарски сайтове и при поява на новина я изпраща автоматично по ICQ или SMS. програмата трябва да предоставя възможност за добавяне/махане на сайтове през командния ред или през опростен интерфейс (текстови, CGI базиран и т.н.). |
| упътване |
RSS е XML-базиран текстов формат за описание на новини.
На CPAN има модули за зареждане на web страница (напр. LWP), за работа с ICQ протокола (напр. Net::ICQ) както и за изпращане на email при ползване на mail2sms услугата (напр. Mail::Sendmail ). Има и модули за работа с RSS - форматът, в който новинарските сайтове експортват в редуциран вариант новинитe. Да се поддържа списък с получателите на новините. |
| полезни връзки |
Въведение в RSS
RSS и Perl XML::RSS Информация за този курс в RSS Новини от Netinfo в RSS Статии от perl.com в RSS |
| допълнителни 5 точки | при реализация на web/win32gui/tk интерфейс за контрол на демона, който комуникира с него IPC или променяйки директно конфигурационните файлове/базата, с която работи демона. |
| номер на проекта | 2 |
| име на проекта | Разпознаване съдържанието на CD с помоща на freedb.org |
| описание |
Да се реализира приложение, което разпознава съдържанието на диск (имена на траковете, артист и т.н.) като използва freedb.org. Да поддържа локална база с информация за разпознатите до сега дискове.
Приложението следва първо да провери дали информация за диска вече се съдържа в локалната база и само ако не се съдържа да вземе данните от freedb.org. |
| упътване |
Възможно е използването на база данни тип mysql/postgresql при запазването на данните локално или Class::DBI за организиране на абстракция при ООП подход.
Съдържанието на диск (като брой парчета/продължителност) може да се получи с помоща на Audio::CD. За да бъде използван той следва да се инсталира и libcdaudio, достъпен от http://cdcd.undergrid.net/ Друг модул за получаване на съдържанието на диск е Net::FreeDB. На CPAN има модули за комуникация с freedb.org, има и такива за взимане на дължината на траковете от диск (например Net::FreeDB или CDDB). |
| полезни връзки |
FreeDB Frequently Asked Questions (FAQ)
DiscID External Calculators (command line, ActiveX, etc...) Net::FreeDB CDDB |
| допълнителни 5 точки | При реализация на win32gui/tk интерфейс за контрол работа на програмата |
| номер на проекта | 3 |
| име на проекта | система за създаване на огледални сайтове |
| описание |
да се създаде система състояща се от две приложения. тя следва да работи от една страна като демон, който през определен интервал генерира списък и архив с променените файлове от дадено директорийно дърво; а от друга на всеки кръгъл час се свързва ( по FTP, SFTP или HTTP ), издърпва списъка с променени файлове и архива с такива, издърпва ги и ги разполага на определено място на друга машина.
интервалът, на който се случват проверките и генерирането на файла с промените да се задава като външен параметър от конфигурационен файл. по същия начин да се указва списък с директории, които трябва да бъдат следени. |
| упътване |
На CPAN съществуват множество модули за работа с протоколите FTP, SFTP и HTTP; един от най-често използваните е LWP (libwww-perl). Архивирането може да става с някой от създадените за целта модули, отново от CPAN или директно с gzip, bzip2 или някой подобен.
Информация за директориите и файловете, които се следят може да се пази във външна база, до която се осъществява достъп с DBI. |
| полезни връзки | http://www.gnu.org/software/diffutils/diffutils.html |
| допълнителни 5 точки | при положение, че с цел оптимизиране на трафика се прехвърлят само тези части от файловете, които са били променяни. за реализиране на подобна функционалност може да се използва инструментът diff. |
| номер на проекта | 4 |
| име на проекта | web робот |
| описание | да се създаде скрипт, който по зададен набор URL-та и дълбочина, обхожда сайта като търси в него връзки (link-ове) и влиза толкова нива навътре, колкото е указано като дълбочина. следва да има възможност за запазване на текстовата част ( html, txt и т.н. ) на така обходените сайтове в съответната директорийна структура като се вземат предвид преработки на връзките, така че подстраниците да са достъпни и при offline разглеждане. |
| упътване | потенциално изплзваните модули за работа с WEB страници и URL-и се намират на CPAN (LWP, CGI) |
| допълнителни 5 точки | при реализиране на възможност за запазване само на страници съдържащи определени шаблони (дефинирани като списък от regular expressions) както и картинките използвани в съответните страници. |
| номер на проекта | 5 |
| име на проекта | фронтенд за mp3 плеър |
| описание | да се направи текстов/графичен frontend за даден mp3 плеър (без значение кой). frontend ще рече само интерфейсната част, която командва mp3 плеъра. да има възможност да визуализира във всеки един момент текущата позиция на просвирваното парче, оставащото време и детайлите за артиста/името на парчето и т.н.. |
| упътване | лесно се реализират frontend-и за mpg123, тьй като има доста модули за него (а и самият той за целта може да работи във фонов режим). модулите от групата Audio:: са полезни за контрол на звука и просвирване. пак на CPAN могат да бъдат открити модули за разпознаване на ID3 таговете. |
| полезни връзки | mpg123 |
| номер на проекта | 6 |
| име на проекта | приложение за създаване на графични статистически таблици на база Excel таблици |
| описание | независимо дали приложението е реализирано с графичен, текстов или web-интерфейс, трябва да има възможност за избиране на Excel-ски файл, и дадени колони, които се ползват за статистическа база. В последствие следва да се генерира графичен изход (може и с помоща на модула GD, достъпен от CPAN), който представлява графика съдържаща на всяка стъпка стойностите от съответния ред на Excel-ския файл, визуализирани по подходящ начин. проектът може да се реализира и с проста стълбчеста графика. следва да има възможнсост за задаване размера на резултатната графика. |
| упътване | с помоща на модула Win32::OLE може да се създаде "Excel"-ски COM обект, който предоставя интерфейс към Excel. Пример за работа с него има в документацията към Win32::OLE модулът GD предоставя приятен интерфейс за създаване на JPG, PNG и GIF файлове. допълнителни 5 точки |
| допълнителни 5 точки | ако се реализира графичната статистика, която дава възможност за избор на изобразяването измежду - сплайн, линии, стълбчеста графика и псевдо 3D. предполага се реализация под Win32 платформа |
| номер на проекта | 7 |
| име на проекта | Приложение за симулиране натоварване на сайт (Web Stress Tool): |
| описание |
Да се създаде приложение, което измерва натовареността на даден сайт. Приложението следва да работи в два режима :
1) първи режим - записва се активността на потребителя (докато потребителя разглежда даден сайт) като се запазват линковете, които разглежда той, заедно с милисекундите, за които е гледал дадена страница. В този режим на работа, приложението работи като proxy, зададено в браузера. 2) втори режим - записаната активност на потребителя се симулира със зададено натоварване, a именно - изтеглят се адресите, които са били заявени по време на режима на запис. Задава се име на log файл от който се четат линковете и времето, за което да се изчака, преди да се изтегли следващия линк; задава се ниво на стрес (т.е. брой конкурентно работещи процеси/тредове - които паралелно изпълняват зададения сценарий). Записва се за всяка от нишките - за колко време изчита всеки от линковете като след завършване работата на програмата резултатите се обединяват и се създава отчет. |
| упътване | Прокситата са просто приложения, които слушат на даден порт, приемат HTTP заявка ( модули за подобни операции има на CPAN ) и зареждат съответната страница ( например с помоща на LWP ). |
| допълнителни 5 точки | При възможност задаване на допълнително филтриране на адреси (които да не участват в симулацията) |
| номер на проекта | 8 |
| име на проекта | система за нотификация при промяна състоянието на сайтове |
| описание |
Да се изработи приложение, което следи дали даден набор от сайтове сайт работи или не (т.е. дали е достъпен или не). Ако някой от сайтовете спре да функционира да се изпраща email e-mail или sms на списък с адреси. Да има възможност за задаване на списък със сайтове за наблюдение, интервал, през който да се проверява за наличност на съответния сайт (за всеки сайт е различно - веднъж на 10 мин, 1 час веднъж дневно). Предупредителното съобщение следва да се изпраща само на адресите, които се интересуват от съответното събитие за дадения сайт ( пропадане на саита или възстановяването му).
Приложението следва да предоставя възможност за групиране на сайтове и преглеждане на текущото състояние, което е резултат от последната проверка. Последното да може да се извършва през своеобразен интерфейс - уеб или произволна графична среда. Текущото състояние трябва да е достъпно по удобен от потребителска гледна точка начин. |
| упътване | Системата може да се реализира като потребителска част (уеб, gui) + сървърна част. Уеб частта показва текущото състояние на сайтовете, което е описано в някаква база (mysql, postgresql). Сървърното работи под формата на daemon, който следи за промени в състоянията и променя данните в базата. |
| допълнителни 5 точки | Ако пази история на промените, които са настъпили по сайтовете (само ако е имало такова между две проверки ). Историята следва да е достъпна дори след рестартиране на приложението. |
| номер на проекта | 9 |
| име на проекта | система за създаване на симулации на въпроси |
| описание |
да се създаде система, която създава/проиграва тестови въпроси със симулации на програми на perl, c, php [ или други езици, но поне 3 ]. за създаване на симулация се задава - текст на въпроса/поле на въпроса. например: "какво ще направи следния код на perl? $а = 200; print $a++;" при отговор на въпроса се стартира програмния фрагмент и ако съвпада със стринга, който е въведен от студента се отбелязва верен отговор.
Да има възможност за прихващане на изключения ( в смисъл на фатални грашки ) и отчитане генерираната грешка. Да има възможност за задаване на последователност от въпроси, на които студента да може да отговори. Самите описания на въпроси могат да се разполагат във файл с подходяща структура или в база данни. Да може да се визуализира резултата от изпълнението на даден тест. |
| упътване | При проверка резултата от изпъулнението на даден въпрос, source кодът му може да бъде разполаган във временен файл, който биват в последствие подавани като параметри на съответния компилатор/интерпретатор. в този ред на мисли въпросите могат да имат описание от вида (текст на въпроса, код). |
| допълнителни 5 точки | При възможност за тестване резултата от изпълнението на въпроси за компилируеми езици и опция за лесно дефиниране на нови видове езици |
| номер на проекта | 10 |
| име на проекта | приложение за генериране на кръстословици |
| описание |
Приложението пази в база информация за думите и описанието им. трябва да може лесно да се добавят/изтриват/намират/променят описанията на думите в базата.
Самата програма трябва да предоставя интерфейс (текстов, уеб-базиран, графичен, GUI, по избор на автора), с който могат да се посочат полета, в които попадат букви и такива, в които - не. Не се изисква кръстословицата да бъде запълнена максимално след генерирането си, но все пак трябва да се използва алгоритъм, който разпределя думите по адекватен начин като се старае да запълни максимален брой полета. Размерът на кръстословицата трябва да може да се задава от потребителя. |
| упътване | В действителност задачата за генериране на кръстословици не е лека, за това и при оценяването акцентът ще падне върху подхода при реализация, интерфейсното решение и чак на последно място - ефективността на алгоритъма. |
| допълнителни 5 точки | При възможност за записване/зареждане на шаблони + възможност за графичен изход към GIF/PNG и т.н. |
| номер на проекта | 11 |
| име на проекта | запазване на получени графични файлове |
| описание |
Да се напише програма, която чете от стандартния си вход e-mail
съобщение (хедъри, съдържание, евентуално MIME приложения) и
извлича от него приложените графични файлове във формати TIFF, GIF,
JPEG, PNG и BMP. Намерените файлове да бъдат конвертирани във
формат TIFF или JPEG и записани в предварително указана директория
с имена, образувани от e-mail адреса на изпратилия съобщението,
с добавен уникален низ, идентифициращ съобщението (възможно е да
бъде извлечен от полето Message-Id на хедъра), последователни номера
за отделните файлове, приложени към съобщението, и подходящо за
файловия формат разширение.
Форматът, към който да бъдат конвертирани файловете (TIFF или JPEG), и директорията, в която да бъдат записвани резултатите, ще бъдат указани в конфигурационен файл във формат INI, в група 'global'. Съответните променливи са 'dest_format' със стойности 'tiff' или 'jpeg' и 'dest_dir'. Конфигурационният файл трябва да бъде търсен или в "/usr/local/etc/imgstore.conf", или в "C:\ImgStore\imgstore.ini". |
| упътване |
За разчитане на съобщението и приложените към него файлове могат да бъдат
използвани много различни модули - Mail::Tools, MIME::Tools, MIME::Lite, Email::Simple, Email::MIME и др.
За преобразуване на графични файлове от един формат в друг могат да бъдат ползвани или общи модули като PerlMagick, или някои от модулите от йерархията Image::*, или библиотеката gd и интерфейсът към нея с модула GD, или външни програми като тези от пакета netpbm. |
| номер на проекта | 12 |
| име на проекта | предаване на групи файлове |
| описание |
Да се напише система, която позволява на предварително регистрирани участници (напр. студенти) да предават групи от файлове, свързани с някаква обща задача. Предаването на файловете се осъществява с изпълнение на програма от командния ред, на която като параметри се подават имената на файловете. Програмата запазва тези файлове в обща директория с уникални имена, генерирани в момента, след което запазва информация за това, че този участник е предал файлове с подадените имена и ги свързва с уникалните имена в директорията. Ако участникът вече е предал файл със същото име, старият бива изтрит и заместен с новия.
Информацията за файловете, предадени от всеки участник, трябва да бъде запазвана в база данни - GDBM, MySQL, PostgreSQL, SQLite и т.н. Информацията за това точно кой участник предава файловете може да бъде взета по различен начин - или user ID, ако операционната система го позволява, или username от някаква променлива от обкръжението, или параметър на самата програма, която се използва за предаване на файловете. Начинът за взимане на тази информация, както и местоположението на директорията, в която се пазят файловете, и информацията за връзка с базата данни, в която се пазят връзките между участници и запазени файлове, трябва да бъдат четени от конфигурационен файл във формат INI. |
| упътване |
| номер на проекта | 13 |
| име на проекта | порт скенер |
| описание |
Внимание: този проект разчита на функционалност (TCP/IP връзки, сокети), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
да се създаде приложение, което при предоставени един или повече интервали от IP адреси, сканира отворените портове в даден интервал като се опитва да се свърже към всеки. Интервалите (IP Range) се задават във формат: IP/MASK или IP - IP. като резултат от изпълнението на приложението да се предоставя детайлна справка за това кои от портове са били отворени. |
| упътване | може за илюстрация да се разгледат възможностите на известния инструмент nmap. не се очаква пренаписване на nmap, а придържане към условието на проекта. на CPAN в раздела Net:: се намират множество модули за socket операции. |
| полезни връзки |
nmap Homepage
Net::IP - Модул за манипулиране на IP адреси и интервали от такива. |
| допълнителни 5 точки | при реализиране на проекта като като оптимизирано multi-threaded приложение с опция за определяне на броя нишки, които да бъдат създадени. допустим е както fork така и thread подход. |
| номер на проекта | 14 |
| име на проекта | proxy, цензуриращо определен набор от шаблони |
| описание |
Внимание: този проект разчита на функционалност (CGI, уеб приложения), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
да се реализира CGI приложение, което по зададено URL изтегля съответната HTML/PlainText страница, преглежда я за набор думи, фрази и предефинирани регулярни изрази, и в случай на съвпадение ги заменя с други такива. наборът от шаблони се дефинира като множество от регулярни изрази от вида 'търси-за'->'замени-със'. приложението следва да може да борави с няколко различни набора от регулярни изрази като потребителя да избира кой от всичките да приложи към конкретната страница. наборът от дефинирани регулярни изрази трябва да може да бъде променян (изтриване/допълване) от конфигурационен файл или през интерфейса на приложението. регулярните изрази следва да се зарждат в началото и да се държат в оптимизирано състояние (т.е. не като текст, а като regexp обекти с qr{} ). |
| упътване | използвани модули CGI, LWP (достъпни от CPAN). |
| допълнителни 5 точки | при реализация на проекта като истински proxy daemon, който получава HTTP завки, обработва ги и предоставя филтрирания резултат. За целта може да се използва HTTP::Proxy (отново достъпен от CPAN). |
| номер на проекта | 15 |
| име на проекта | опростен message board |
| описание |
Внимание: този проект разчита на функционалност (CGI, уеб приложения), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
реализация на message board с flat view, който има опция за изпращане на email на авторите, при отговор на дадено тяхно съобщение. да има възможност за търсене и цитиране на съдържанието на съобщението при отговор. съобщенията да се пазят в подходяща база данни (postgresql, mysql или някоя друга opensource такава). |
| упътване | използвани модули: DBI, CGI, Mail::Sendmail, XML::LibXML, XML::LibXSLT |
| полезни връзки | |
| допълнителни 5 точки | при реализация на message board-ьт с mod_perl и допълнително thread view. |
| допълнителни 5 точки | при използване на XML/XSLT подход при реализация на проекта |
| номер на проекта | 16 |
| име на проекта | maillist с поддръжка на групи |
| описание |
Внимание: този проект разчита на функционалност (CGI, уеб приложения), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
да се реализира система за поддръжка и организиране на maillist-и. да има достъп до пълния архив с изпратени съобщения както и опция за прикрепяне на файлове към съобщенията. да може да се създават групи, в които попадат различни мейл адреси с възможност за изпращане на дадено съобщение до няколко групи едновременно. интерфейсът може да е web базиран или gui. данните следва да се пазят в opensource база по избор (postgresql, mysql) или в друг подходящ формат. |
| упътване | графични интерфейси се реализират лесно с Win32::GUI или с ТК. за изпращане на мейл има много CPAN модули, доказал ефективността е Mail::Sendmail. attach-натите файлове се кодират с UUENCODE. формат на mail съобщенията може да бъде намерен като описание под формата на RFC (намират се лесно от google). CGI е стандартния модул за работа с динамични web приложения. |
| допълнителни 5 точки | при реализация на система за търсене, която се справя с логически заявки за търсене включващи условия като И, ИЛИ |
| допълнителни 5 точки | при реализация на проекта с mod_perl |
| номер на проекта | 17 |
| име на проекта | система за създаване на тестове |
| описание |
Внимание: този проект разчита на функционалност (CGI, GUI, уеб приложения), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
да се създаде система, която може да генерира тестове, всеки от който да се генерира по случаен начин. да може да се създават групи от въпроси към всяка тема, за която е генериран тест, като да се указва от всяка група по колко случайно избрани въпроси да бъдат избирани. да не се допуска включване на два еднакви въпроса. системата трябва да поддържа произволен брой теми. интерфейсът може да е както web-базиран (CGI приложение), така и графичен, реализиран с помоща на някой от модулите Curses:: Tk:: Win32::GUI и т.н. |
| упътване | използване на произволна база данни би улеснила реализацията на подобен проект |
| полезни връзки | модули за реализация на графични интерфейси |
| допълнителни 5 точки | при реализиране на допълнителна възможност за разглеждане резултатите от теста и система (макар и не сложна) за контрол на достъпа |
| номер на проекта | 18 |
| име на проекта | система за следене натовареността на компютри в мрежа |
| описание |
Внимание: този проект разчита на функционалност (комуникация през TCP/IP, сокети), която няма да бъде разгледана твърде подробно в материалите на курса! Ако не сте запознати с основите на мрежовата комуникация през TCP/IP, може да срещнете трудности.
Да се създаде client/server система, която позволява реалновремево следене натовареността на множество машини по следните параметри: натовареност на процесора, свободна памет, брой активни процеси, свободно място на достъпните дискови масиви. Системата се състои от две логически части - сървърна (административна програма) и клиентска (агенти). Агентите представляват програми, които се разполагат на наблюдаваните машини и слушат на определен TCP порт. При заявка от страна на административната част на сътоветния порт, агентът взима нужните данни и ги връща отново по TCP. Предаването на данните трябва да е организирано в прост протокол. Сървърната част следва да може да се контролира през GUI или web интерфейс. Агентите следва да могат да се разположат и да работят по идентичен начин на Win32 и Unix машини. Самото предаване на данни следва да става с помощта на някой от модулите за работа със TCP сокети (например Sockets или IO::Socket). |
| упътване | На CPAN се намират модули за получаване информация за процесите вървящи на дадена машина (напр. Win32::Process::Info за Win32 и Proc::ProcessTable за UNIX-like OS), както и статистика за натовареността на процесора. |
| допълнителни 5 точки | При реализиране на възможност за създаване на дистрибутирана мрежа, при която един възел е основен, пряко свързаните с него - предават данни директно на него, а останалите прехвърлят данните помежду си по такъв начин, че в крайна сметка да стигнат до основната машина. |
| допълнителни 5 точки | При възможност за конфигурация на агентите, така че сами да знаят през какъв интервал трябва да рапортуват. |