бесплатно рефераты скачать
  RSS    

Меню

Быстрый поиск

бесплатно рефераты скачать

бесплатно рефераты скачатьДипломная работа: Розробка автоматизованого робочого місця науково-технічної бібліотеки університету

1.3 Рішення з технічного забезпечення

Як платформа розробки проекту була вибрана платформа Microsoft.

Ідея Microsoft в тому, щоб перемістити центр уваги обчислювального співтовариства зі світу, що складається з різних пристроїв і Web-узлов, зв'язаних між собою через інтернет, в світ, де висока якість рішень для користувачів забезпечується спільною роботою пристроїв, служб і комп'ютерів. Основу Microsoft складають чотири базові компоненти [11]:

Building Block Services - засоби програмного доступу до таких служб, як сховище файлів (file storage), календар (calendar), служба аутентифікації "Passport ";

ПО для пристроїв, яке виконуватиметься на нових пристроях Інтернету;

засоби для роботи з користувачами, що включають природний інтерфейс (natural interface), інформаційні агенти (information agents) і інтелектуальн теги (smart tags) - технологію, яка автоматизує перехід по гіперпосиланнях до інформації, пов'язаної із словами і фразами в документах користувачів;

інфраструктура .NET, що складається з .NET Framework, Microsoft Visual Studio, Enterprise Servers і Microsoft Windows.

Framework складається з Common Language Runtime (CLR) і набору бібліотек класів .NET Framework, який ноді називають Base Class Library (BCL). CLR - це по суті віртуальна машина, в якій функціонують застосування .NET. Всі мови .NET мають в своєму розпорядженні бібліотеки класів Framework. Якщо ви знайомі з Microsoft Foundation Classes (MFC) або Object Windows Library (OWL) компанії Borland, то вам не треба пояснювати, що це таке. Бібліотеки класів Framework включають підтримку практично всіх технологій від файлового введення-виводу і обміну з БД до XML і SOAP. Взагалі бібліотеки класів Framework так обширні, що навіть поверхневий огляд всіх підтримуваних класів зажадає окремо книги.

Common Language Runtime (CLR) - це серце технології Microsoft. Як випливає з назви, це середовище часу виконання коду, в якій забезпечується ефективна взаємодія додатків, що перетинає межі різних мов програмування (cross-language interoperability). Як досягається ця взаємодія? Common Language Specification (CLS) - це набір правив, яких повинен дотримуватися компілятор мови при створенні .NET-приложений, CLR, що запускаються в середовищі. Будь-який, хто захоче написати компілятор .NET, повинен слідувати цим правилам і - будь ласка! - додатки, що згенерували цим компілятором, працюватимуть разом з іншими .NET-прило-жениями і матимуть таку ж можливість взаємодії.

У середовищі Windows є декілька глобальних правил поведінки додатків, що відносяться до їх взаємодії один з одним, розподілу пам'яті, а також до залучення засобів самою ОС для роботи від х імені. Навпаки, в середовищі керованого коду є набір правив, що забезпечують одноманітну в глобальному сенсі поведінку всіх застосувань незалежно від того, на якій мові вони написані. Одноманітна поведінка .NET-приложений - характерна межа технології .NET, і його не можна ігнорувати. На щастя, ці глобальн правила розповсюджуються головним чином тільки на творців компіляторів.

Бібліотеки класів .NET Framework грають надзвичайно важливу роль в забезпеченні міжмовної взаємодії додатків, оскільки вони дозволяють розробникам використовувати єдиний програмний інтерфейс до всіх функціональних засобів CLR. Якщо вам доводилося писати програми для Windows на декількох мовах, то вам сподобається це нововведення. Бібліотеки класів .NET Framework роблять фактично революційний прорив в розробці компіляторів. До .NET майже кожен автор компілятора розробляв мову, що володіє здатністю робити велику частину сво власної роботи. Навіть C++, розроблений як набір функціональних можливостей, що працюють спільно з бібліотекою класів, має деякі засоби для власних потреб. Тоді як роль мов в оточенні .NET не вичерпується наданням синтаксичних нтерфейсів до бібліотек класів .NET Framework.

Найважливіший аспект будь-якого середовища розробки розподілених застосувань - спосіб забезпечення безпеки. Завдяки тим з нас, хто довго скаржився, що ніхто серйозно не розглядатиме Microsoft відносно серверних рішень для підприємств, поки вона повністю не відновить підхід до безпеки, в .NET з'явилося відразу декілька нових концепцій. Робота системи безпеки починається з того моменту, коли CLR завантажує клас, оскільки завантажувач класів частиною системи безпеки .NET. Так, при завантаженні класу в .NET під час виконання перевіряються правила доступу і його внутрішня цілісність. Крім того, в ході такої перевірки з'ясовується, яка частина коду має належні дозволи на доступ до певних ресурсів. Система безпеки гарантує перевірку наказаних ролей дентифікаційних даних. Щоб не піддавати ризику найбільш відповідальні дані в розподілених обчислювальних середовищах, ці перевірки безпеки не обмежуються рамками окремих процесів і машин.

Розгортання - найбільш неприємна процедура розробки крупних розподілених систем. Будь-який розробник Windows-программ може сказати, що, зіткнувшись з масою різноманітних двійкових файлів, проблемами реєстру Windows, компонентами СОМ, установкою бібліотек підтримки таких продуктів, як Open Database Connectivity (ODBC) і Data Access Objects (DAO), ви міцно задумаєтеся, а чи правильно ви вибрали рід занять. Слава богу, розгортання - це та частина .NET, над якою проектувальники добре потрудилися.

Ключ до розгортання .NET-приложений - концепція складок (assemblies). Збіркою називають пакет з семантично близьких об'єктів, що складається з одного або декількох файлів. Особливості розгортання залежать від того, що ви розробляєте: Web-серверное застосування або персональне застосування для Windows. Проте з введенням збірки як повністю інкапсульованого набору функціональних можливостей розгортання зводиться до простого копіювання потрібних складок в місце призначення.

Маса проблем, що мучили програмістів до появи .NET Framework, тепер усунено. Тепер, наприклад, не треба реєструвати компоненти (як це вимагають СОМ і елементи управління ACTIVEX), оскільки завдяки метаданим і віддзеркаленню всі компоненти містять в собі власний опис. Під час виконання .NET відстежує також роботу з файлами і версії файлів, пов'язаних з додатком. Тому будь-яке встановлюване застосування, автоматично зв'язується з файлами, що є частиною його збірки. Якщо програма установки спробує перезаписати файл, необхідний іншому застосуванню .NET поступить достатньо розумно, дозволивши встановити потрібні файли, не видаливши при цьому попередні версії файлу, оскільки вони ще потрібні іншому застосуванню.

Для роботи .NET - застосування на комп'ютері має бути встановлене середовище .NET Framework.

Мінімальні характеристики комп'ютера необхідного для комфортної роботи програми в операційній системі Windows XP:

­      процесор Intel Pentium/amd Athlon 2000 Гц;

­      ОЗУ 512 Мб;

­      Вінчестер 100 Гб.

Але оскільки нам потрібна нормальна робота Інтернет-сервера і Microsoft SQL Server на нашому комп'ютері, то конфігурація має бути значно посилена:

­      процесор не менше 3000 Гц;

­      ОЗУ не менше 1 Гб;

­      вінчестер не менше 200 Гб.

 

1.4 Рішення з математичного забезпечення

 

1.4.1 Пошук у тексті

У нашому проекті для повноцінного пошуку використовуються засоби текстового пошуку. В даний час так засоби посилено розвиваються. До складу Microsoft SQL Server 2005 навіть включений новий для СУБД спеціальний компонент Full-text Search (повнотекстовий пошук).

Одним з наймогутніших нструментів пошуку в текстах є регулярні вирази.

Регулярні вирази підтримуються багатьма програмами (редакторами, системними утилітами, ядрами баз даних і так далі), але їх можливості повною мірою виявляються в мовах програмування, зокрема Java, Jscript, Visual Basic, Vbscript, Javascript, C, C++, C#, elisp, Perl, Python, Ruby, PHP, awk і тому подібне Регулярні вирази займають центральне місце в багатьох програмах, написаних на цих мовах.

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

За допомогою регулярних виразів ви можете проводити пошук, заміну підрядків, використовуючи шаблони. Вони складаються із звичайних символів і так званих метасимволів (metacharacters) - символів, що управляють. Список метасимволів достатньо обширний. Нижче приведені найбільш часто використовувані символи:

­      * - сооветствуєт виразу, що знаходиться до знаку "*", узятому нуль або більше разів. Наприклад, шаблон "[0-9]*" визначає рядок, що містить нуль або більш за цифри;

­      - призначений для визначення символу, що є метасимволом. Наприклад, шаблон "." відповіда будь-якому символу, а шаблон "\." відповідатиме крапці;

­      ^ - визначає початок вхідного рядка;

­      $ - визначає кінець вхідного рядка;

­      + - відповідає виразу, що знаходиться до знаку "+", узятому один або більше разів. Наприклад, шаблон "[0-9]+" визначає рядок, що містить одну або більш за цифри;

­      . - визначає будь-який символ окрім символу перекладу рядка;

­      | - розділяє два вирази. Наприклад, шаблону "a|b" відповідатимуть рядки "a" "b";

­      [a-z] - визначає діапазон символів. Наприклад, шаблон "[0-9]" визначає цифру;

­      [^.] - визначає будь-який символ, не відповідний заданому набору. Наприклад, шаблон "[^0-9]" визначає будь-який символ, окрім цифри;

­      w - слово. Те ж, що [a-za-z_0-9];

­      W - все, окрім слів. Те ж, що [^a-zA-Z_0-9];

­      s - будь-яке порожнє місце. Те ж, що і [ \f\n\r\t\v];

­      |S - будь-яке непорожнє місце. Те ж, що і [^ \f\n\r\t\v];

­      d - десяткова цифра. Те ж, що [0-9];

­      D - не цифра. Те ж, що [^0-9].

Ось простий приклад регулярного виразу - шаблон номера телефону.

^(\(\d+\)){0,1}d{3}-\d{2}-\d{2}$

Цей вираз може показатися складним, хоча насправді все досить просто:

­      ^ - цей символ указує, що тут починається шуканий рядок;

­      (- код міста розташовується усередині дужок;

­      ( - відкриваюча дужка;

­      d+ - після дужки повинн розташовуватися код міста - одна або декілька цифр;

­      ) - Закриваюча дужка;

­      ) - Закриваюча дужка - метасимвол, вказуючий, що тут закінчується групований вираз (в даному випадку, код міста);

­      0,1} - Цей метасимвол указує, що вираз в дужках (код міста) може повторюватися від нуля до одного разу, тобто код міста можна не указувати;

­      d{3}-\d{2}-\d{2} - Три групи цифр - одна група по три і дві по дві цифри. Цифри розділені дефісами;

­      $ - Цей знак показує, що тут закінчується підрядок.

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

Розглянемо деякі алгоритми пошуку заданого слова (підрядки) в рядку.

Відмітимо, що дане завдання не зводиться тільки до обробки текстів. Це, наприклад, і пошук даного ланцюжка нуклеотідов в молекулі ДНК, і пошук заданої послідовності дій в реалізац алгоритму. У загальному випадку, кажучи формально, завдання пошуку підрядків (string-matching problem) полягає в наступному [12].

Хай дані «текст» - масив T[1..n] довжини n і «зразок» - масив P[1..m] довжини m. Ми вважаємо, що елементи масивів P і T - символи деякого кінцевого алфавіту Ќ (наприклад Ќ = {0,1} або Ќ = {а, b ., z}). Масиви, що складаються з символів алфавіту Ќ, часто називають рядками символів, або словами в цьому алфавіті.

Говоритимемо, що зразок P входить із зрушенням s, або, еквівалентно, входить з позиції s + 1 в текст T, якщо 0 <= s <= n - m і T[s + 1..s + m]= P[1..m] (іншими словами, якщо T[s + j]= P[j] при 1 <= j <= m). Якщо P входить із зрушенням s в текст T, то говорять, що s - допустиме зрушення, інакше s - неприпустиме зрушення. Завдання пошуку підрядків полягає в знаходженні всіх допустимих зрушень для даних тексту T і зразка P.

 

1.4.2 Обозначення та терміни

Через Ќ* позначається множина всіх кінцевих рядків над алфавітом Ќ, включаючи порожню рядок, що має нульову довжину і е, що позначається. Довжина рядка x позначається |x| . З'єднання, або конкатенація рядків x і у виходить, якщо виписати рядок x, а за нею - рядок у. Конкатенація рядків x і у позначається xy; очевидно |xy| = |x|+|y|.

Говоритимемо, що рядок w - префікс, або початок рядка x, якщо x = wy для деякого у € Ќ*. Говоритимемо, що рядок w - суфікс, або кінець рядка x, якщо x = yw для деякого у € Ќ*. Писатимемо w [ x, якщо w - префікс x, і w ] x, якщо w - суфікс x. Наприклад, ab [ abcca і cca ] abcca.

Порожній рядок є префіксом і суфіксом будь-якого рядка; якщо w - префікс або суфікс x, то |w| <= |x|. Для будь-яких рядків x і у і для будь-якого символу а співвідношення x ] у і ха ] уа рівносильні; стосунки ] і [ транзитивні.

Хай x, у і z - рядки, для яких x ] z і x [ z. Тоді x ] у, якщо |x| <= |y|; у ] x, якщо |x| >= |y|, і x = у, якщо |x| = |y|.

Якщо S[1..r] - рядок довжини r, то його префікс довжини до <= r позначатиметься Sk = S[1..k] (зокрема, S0 = е і Sr = S). У цих позначеннях завдання про знаходження зразка P довжини m в тексті T довжини n полягає в знаходженні всіх таких s з проміжку 0 <= s <= n - m, що P ] Ts+m.


1.4.3 Аналіз алгоритму текстового пошуку

Найпростіший алгоритм пошуку зразка P в тексті T послідовно перевіряє рівність P[1..m]= T[s + 1..s + m] для всіх n - m + 1 можливих значень s:

for s = 0 to n - m

if P[1..m]= T[s+1..s+m]

then print «рядок входить із зрушенням» s

Можна сказати, що ми рухаємо зразок уздовж тексту і перевіряємо всі його положення. Відзначимо, що перевірка рівності рядків (P[1..m]= T[s+1..s+m]) є ще одним внутрішнім циклом.

Час роботи приведеної процедури пошуку у гіршому разі є І((n - m + 1)m). Насправді, хай T = an (буква а, повторена n разів), а P = am. Тоді для кожної з n - m + 1 перевірок буде виконано m порівнянь символів, всього (n - m + 1)m, що є І(n2) (при m = n / 2).

Простий алгоритм - не кращий. Неефективність пов'язана з тим, що інформація про текст T, що отримується при перевірці даного зрушення s, ніяк не використовується при перевірці подальших зрушень. Тим часом, така інформація може дуже допомогти. Хай, наприклад, P = aaab і ми з'ясували, що зрушення s = 0 допустимий. Тоді зрушення 1, 2 і 3 свідомо недопустимі, оскільки T[4]= b.

 

1.4.4 Швидкий алгоритм текстового пошуку

Цей алгоритм, запропонований Кнутом, Морісом і Праттом, працює за час І(n + m). Таке прискорення досягається за рахунок того, що при подальшому пошуку заздалегідь обчислюється спеціальна «префікс-функція» на основі вже відомої інформації.

Префікс-функція, асоційована із зразком P, несе інформацію про те, де в рядку P повторно зустрічаються різні префікси цього рядка. Використання цієї інформації дозволяє уникнути перевірки свідомо неприпустимих зрушень.

Хай простий алгоритм шукає входження підрядка P = ababaca в текст T. Припустимо, що для деякого зрушення s виявилось, що q перших символів зразків збігаються з символами тексту, а в наступному символі є розбіжність, де q = 5). Отже, ми знаємо q символів тексту, від T[s+1] до T[s+q], і з цієї інформації можна укласти, що деякі подальш зрушення будуть свідомо недопустимі.

У загальному випадку префікс-функція повинна відповісти на таке питання:

Хай P[1..q]= T[s + 1..s + q]; яке найменше значення зрушення s` > s, для якого

P[1..k]= T[s` + 1..s` + до](1.1)

де s` + до = s + q.

Число s` - це найменше значення зрушення, більше s, яке не можна відкинути. Щоб знайти s`, нам не потрібно нічого знати про текст T, достатньо знання зразка P і числа q. Саме, T[s` + 1..s` + до] - суфікс рядка Pq. Тому число до у формулі (1.1) - це найбільше число до < q, для якого Pk є суфіксом Pq. Само значення s` обчислюється за формулою s` = s + (q - до).

Префікс-функцией, що асоціюється з рядком P[1..m], називається функція f:{1,2., m} Ќ {0,1., m - 1}, визначена таким чином:

f[q]= max{k:k < q Pk ] Pq}.(1.2)

Іншими словами, f[q] - довжина найбільшого префікса P, що є (власним) суфіксом Pq. Приведемо псевдокод алгоритму Кнута - Моріса - Пратта.

n = length(T)

m = length(P)

q = 0

for i = 1 to n

while q > 0 and P[q+1]< > T[i]

q = pf[q]

if P[q+1]=T[i]

then q = q+1

if q=m

then print «рядок входить із зрушенням» i-m

q = pf(q)

m = length[P]

pi[1]= 0

до = 0

for q = 2 to m

while до > 0 and P[k+1]< > P[q]

до = pi[k]

if P[k+1]=P[q]

then до = k+1

pi[q]= до

return pi

Час виконання префікс - функц пропорційно довжині рядка m і, отже, є O(m). Аналогічно, час виконання операторів процедури пошуку пропорційно довжині підрядка і є O(n). Отже, загальний час виконання приведеного алгоритму є O(m+n), що дає значний виграш в порівнянні з простий процедурою пошуку.

Проаналізувавши два методи пошуку були виявлені як позитивні так і негативні сторони. Для даної роботи необхідний пошукач який працює з невеликим часом і частковим текстом (див. рис. 1.10)


Рисунок 1.10 – Схема роботи програми пошука

 

1.4.5 Регулярні вирази у VB.NET

Для роботи з регулярними виразами в VB.NET використовується клас Regex, що знаходиться в просторі імен System.Text.RegularExpressions. За допомогою цього класу ви можете проводити наступні дії:

­      пошук підрядків за шаблоном;

­      заміна підрядків за шаблоном;

­      порівняння рядка з шаблоном;

­      розділення рядка на підрядки з використанням шаблонів.

Для твору дій з регулярними виразами необхідно створити екземпляр класу Regex. Для цього використовується стандартний конструктор New. Він переобтяжений і має дві комбінації параметрів. Ви можете задати тільки шаблон (змінна типу String), який використовуватиметься надалі, або шаблон параметри об'єкту. Параметри задаються константами з перерахування Regexoptions.

Пошук підрядків, відповідних шаблону проводиться за допомогою переобтяженого методу Matches. Він може приймати 4 комбінації параметрів. Перший параметр - рядок, в якому проводитиметься пошук. Як другий параметр можна встановити позицію, з якою буде початий пошук. Також другим параметром можна вказати шаблон (якщо він не збігається з шаблоном, вказаним в конструкторі при створенні об'єкту). І остання комбінація параметрів - рядок для пошуку, шаблон і параметри пошуку, задані комбінацією констант перерахування Regexoptions.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  бесплатно рефераты скачать              бесплатно рефераты скачать

Новости

бесплатно рефераты скачать

© 2010.