České vysoké učení technické v Praze Fakulta elektrotechnická
Bakalářská práce
Záznam televizního signálu se vzdálenou správou Pavel Zrzavý
Vedoucí práce: Ing. Ivan Šimeček
leden 2008
Poděkování Chtěl bych poděkovat všem, kteří mají zásluhu na dokončení této bakalářské práce a kteří mi pomáhali svými připomínkami, radami i náměty při obtížích nebo otázkách, na které jsem narazil. Děkuji také svým rodičům, kteří mi vždy byli oporou, nejen po dobu vysokoškolského studia.
-2-
Prohlášení Prohlašuji, že jsem bakalářskou práci na téma „Záznam televizního signálu se vzdálenou správou“ vypracoval samostatně a použil jen pramenů, které cituji a uvádím v přiloženém soupisu literatury. Souhlasím, aby práce byla uložena v knihovně Českého vysokého učení technického v Praze a zpřístupněna ke studijním účelům.
V Praze, dne…………………………… Podpis …………………………………
-3-
-4-
ABSTRAKT Cílem práce je dosáhnout komfortního záznamu televizního signálu přes Internet pomocí vzdálené správy. Výsledkem bude webová aplikace, která bude spravovat databázi uživatelů a televizních programů a zpracovávat požadavky uživatelů zadaných pomocí webové stránky. GUI aplikace bude tvořena pomocí ASP.NET, dále bude dle potřeby použito jazyka C#. Projekt poběží nad databází MS SQL.
ABSTRACT This work should provide comfortable record of the television signal over Internet using the remote management. The result of this work will be the web based application, which will manage database of users and television programs and proceed requirements of users ordered by web pages. The GUI of the application will be build on ASP. NET technology and programming language C# and C++ as well. Project will run on the MS SQL database.
-5-
OBSAH 1
ÚVOD…………………………………………………………………………… 9
2
ZADÁNÍ PROJEKTU………………………………………………………... 11
3
ÚVODNÍ STUDIE……………………………………………………………. 11
3.1
Odborný článek…………………………………………………………………...…………….11
3.2
Deklarace záměru……………………………………………………………………………….12
3.3
Katalog požadavků……………………………………………………………………………...12
3.4
Kontextový diagram…………………………………………………………………………….14
3.5
Právní analýza………………………………………………………………………………….. 14
3.6
Analýza stávajícího řešení……………………………………………………………………... 15
3.7
TV Grab………………………………………………………………………………………… 15
3.7.1
Popis………………………………………………………………………………………. 15
3.8
DVB Grab………………………………………………………………………………………. 17
3.9
Shrnutí…………………………………………………………………………………………... 19
4
ANALYTICKÁ STUDIE……………………………………………………...19
4.1
Role uživatelů……………………………………………………………………………………19
4.1.1
Neregistrovaný uživatel…………………………………………………………………… 19
4.1.2
Registrovaný uživatel……………………………………………………………………... 20
4.1.3
Super Administrátor………………………………………………………………………. 21
4.1.4
Administrátor……………………………………………………………………………… 22
4.2
Datový model…………………………………………………………………………………… 23
5
NÁVRH ARCHITEKTURY…………………………………………………. 24
5.1
Blokové schéma projektu TV GRAB…………………………………………………………. 24
5.2
Popis použitých technologií technologií………………………………………………………. 25
-6-
5.2.1
HTML…………………………………………………………………………………….. .25
5.2.2
CSS………………………………………………………………………………………... 26
5.2.3
ASP.NET………………………………………………………………………………….. 26
5.2.4
SQL……………………………………………………………………………………….. 26
5.2.5
T-SQL……………………………………………………………………………………... 26
5.2.6
JavaScript…………………………………………………………………………………..26
5.2.7
C/C++/C#............................................................................................................................. 27
5.2.8
UML (Unified Modeling Language)……………………………………………………… 27
5.2.9
RUP (Rational)……………………………………………………………………………. 27
5.3
Multicastový přenos audiovizuálního obsahu…………………………………………………28
5.4
Návrh prezentační vrstvy (frontend) projektu……………………………………………….. 29
5.4.1
Popis grafického prostředí………………………………………………………………… 29
5.4.2
Popis důležitých frontend funkcí………………………………………………………….. 30
5.5
Návrh funkční business logiky (backend) projektu………………………………………….. 31
5.5.1
Aplikace TVGRAB.EXE…………………………………………………………………. 31
5.5.2
Aplikace RECORDER.EXE……………………………………………………………… 35
5.6
Návrh implementace importu televizního programu…………………………………………38
5.6.1
Import televizního programu pomocí parsování s cizích HTML stránek………………… 38
5.6.2
Import televizního programu pomocí importu z XML TV zdrojů………………………... 38
5.6.3
Import televizního programu pomocí Business Inteligence nástroje………………………39
6
IMPLEMENTACE…………………………………………………………… 40
6.1
Prostředí, použité nástroje……………………………………………………………………. 40
6.1.1
Microsoft Windows XP…………………………………………………………………… 40
6.1.2
Microsoft Visual Web Developer 2005 Express Edition…………………………………. 40
6.1.3
Microsoft SQL Server 2005………………………………………………………………. 40
6.1.4
Microsoft .NET…………………………………………………………………………… 41
6.1.5
Dev – C++………………………………………………………………………………… 41
6.1.6
PSPad……………………………………………………………………………………… 41
6.1.7
VideoLAN Client (VLC)…………………………………………………………………. 41
6.2
Bezpečnost a stabilita aplikace………………………………………………………………… 42
6.3
Instalace ………….…………………………………………………………………………...... 42
-7-
6.3.1
MS SQL 2005 Express Edition + ODBC driver………………………………………….. 42
6.3.2
.NET2 FrameWork + MS VisualWebDeveloper…………………………………………. 44
6.3.3
VLC……………………………………………………………………………………….. 45
6.3.4
TVGrab……………………………………………………………………………………. 45
7
UŽIVATELSKÁ PŘÍRUČKA……………………………………………….. 46
8
ZÁVĚR………………………………………………………………………… 51
9
POUŽITÉ ZDROJE………………………………………………………….. 53
9.1
Seznam literatury……………………………………………………………………………… 53
9.2
Internetové odkazy……………………………………………………………………………... 53
10
OBSAH CD……………………………………………………………………. 54
-8-
1
ÚVOD Internet je v dnešní době nejmasověji používané informační medium. Denně stráví desít-
ky milionů lidí svůj čas brouzdáním po internetu. Díky tomuto faktu, se většina firem začala zabývat poskytováním internetových služeb. Internetová služba, neboli Web Service je pojem, který nabral na síle začátkem nového tisíciletí. Poptávka uživatelů po nových službách napomohla zrychlení rozvoje tzv. služeb běžících na principu dynamického webu. Hlavní výhodou těchto dynamických webů je zpracování požadavku uživatele na straně serveru a ne na straně klienta. Díky těmto technologiím se povedlo vytvořit řadu webových služeb, jako jsou například internetové obchody, on-line správa bankovních účtů, vyhledávací služby, znalostní databáze, servery poskytující mapy, firemní systémy, rezervační systémy a řada dalších služeb. Může se zdát, že člověk díky své vynalézavosti navrhnul dostatečné spektrum webových služeb, ale opak je realitou. Řádově každý rok přichází na trh nové řešení, které buď rozvíjí již vytvořenou webovou službu, nebo vytváří naprosto novou kategorii webových služeb na internetu. V posledních třech letech se díky zvýšení rychlosti internetového připojení rozšířila jedna z nejvíce využívaných kategorií webových služeb. Touto kategorií je prezentace a šíření multimediálního obsahu po internetu. Webová služba nabízející poslech internetového rádia po internetu byla první vlaštovkou tohoto druhu služby. V dnešní době lze díky této službě poslouchat rádio z různých koutů světa v kvalitě stejné nebo lepší než je kvalita CD. Současně vznikají čistě internetová rádia, jejichž náklady na provoz jsou minimální, kdežto počet posluchačů může přesáhnout počet posluchačů běžného rádia šířeného analogovým signálem. V poslední době se hlavně rozšířily webové služby nabízející audiovizuální obsah. Příkladem je například server www.youtube.com firmy Google, který umožňuje nahrát libovolné video uživatelem a toto video poté volně šířit po internetu. Myšlenka poskytovat nahrávky mě zaujala trochu v jiném smyslu. V současné době neexistuje větší webová služba, která by poskytovala uživatelům nahrávky libovolných televizních stanic v co nejlepší kvalitě záznamu. Takováto služba by například mohla méně technicky založeným uživatelům poskytnout jejich oblíbenou televizní relaci pomocí několika kliknutí myši a to vše přes internet! Současně by tato služba mohla zaujmout početnou skupinu lidí, kteří například žijí v zahraničí a díky tomu nemohou sledovat své oblíbené pořady ze své země pomocí běžného analogového signálu. Tato webová služba funguje, dle mého názoru spíše experimentálně, na některých student-
-9-
ských kolejích a zaujala mě na tolik, že jsem se rozhodnul se jí věnovat formou své bakalářské práce. Následující stránky popisují vizi řešení této webové služby z mého pohledu.
- 10 -
2 ZADÁNÍ PROJEKTU Cílem projektu je navržení a realizace informačního systému pro podporu nahrávání televizních programů. Jedním z prvních úkolů je provést analýzu již existujícího řešení. Z této analýzy získat požadavky na systém, role uživatelů a také požadavky na samostatný nahrávací systém. Celé řešení by mělo splňovat bezpečnostní kritéria práce v módu klient-server. Řešení se bude skládat ze dvou programových prvků. Prvním prvkem budou webové stránky (frontend) neboli proprietární informační systém. Druhým prvkem bude nahrávací logika (backend). Oba tyto prvky budou mezi sebou komunikovat pomocí relační databáze. Nevylučuje se případ užití aplikace v akademiích Studentské unie ČVUT nebo jinak v komerční sféře. Studentská unie ČVUT je nezávislá organizace zastřešující 17 studentských klubů, které organizují různě zaměřené aktivity a současně spravují většinu síťové infrastruktury na studentských kolejích ČVUT. Zadavatelem projektu je pan Ing. Ivan Šimeček.
3 ÚVODNÍ STUDIE
3.1 Odborný článek Jak již bylo v úvodu zmíněno, tak v dnešní době technického rozvoje webových služeb a informačních systému je velká poptávka po službách zabývajících se poskytováním multimediálního obsahu uživatelům. Tomu hlavně přispěla neustále se zvyšující rychlost internetového připojení. Z pohledu dnešní nabídky poskytování audiovizuálních služeb na internetu lze uživateli nabídnout skoro vše co si dnes může přát - sledování vzdálených míst světa pomocí webové kamery, poslech rádia, sledování některých televizních stanic. Nicméně na internetu zatím chybí služby pro správu vlastního multimediálního obsahu. Vlastním multimediálním obsahem mohou být například uživatelem zvolené záznamy rádiových či televizních stanic. V tomto směru se ovšem nabízí otázka, zda je tato služba vůbec potřebná v dnešní době, kdy je téměř vše možno v reálném čase poslouchat či sledovat. Odpověď zní ano, má to smysl. Právě z důvodu velkého počtu televizních a radiových stanic je často nemožné v jeden čas sledovat více zdrojů a potom musí uživatel sáhnout po klasickém způsobu nahrávání pomocí klasického video rekordéru. Nahrávání audiovizuálního obsahu z internetu je ovšem záležitost, kterou za prvé, ne každý uživatel umí, a za druhé ne každý uživatel má k takovému procesu prostředky. Proto sem došel k závěru, že zde chybí webová služba díky které by kdoko- 11 -
liv, kdykoliv a hlavně kdekoliv na světě dokázal nahrát libovolnou televizní relaci dle vlastního přání a v kvalitě lepší než VHS či streamované audiovizuální zdroje na internetu. Streamovanými zdroji se rozumí webová služba, která dokáže v reálném čase přehrát uživateli audiovizuální nahrávku v jeho webovém prohlížeči či speciálním programu k tomu určeném. Je pravda, že v dnešní době má většina televizních stanic vlastní repositáře nahraných pořadů, ale tyto sbírky jsou dost omezené a často jsou v kvalitě, která je podprůměrná.
3.2 Deklarace záměru Projekt TV ServiceGrab by měl sloužit jako informační systém nabízející uživateli přehledně a jednoduše televizní program televizních stanic ČT1, ČT2, TV NOVA a
TV
PRIMA. Pomocí zobrazení těchto programů si bude uživatel moci vybrat libovolnou televizní relaci, kterou bude chtít nahrát. Celý projekt se bude skládat ze dvou částí. První bude dynamický web, kterým bude uživatel a administrátor obsluhovat dostupné funkce. Druhou částí projektu budou aplikace tvgrab.exe a recorder.exe, které budou zpracovávat požadavky na nahrávání zadané uživateli systému. Popis aplikační logiky je uveden v kapitole 5.5. Obě dvě části projektu budou mezi sebou komunikovat pomocí databáze, jejíž návrh a struktura je popsaná v kapitole 4.2. Díky většímu rozsahu projektu je nutné zdůraznit, že se v projektu nebudu zabývat importem televizních programů. Tato funkce bude časem doplněna a implementována pravděpodobně pomocí business inteligence nástroje pro datovou integraci. Business inteligence nástrojem se rozumí nástroj pro podporu firemní správy a dat a služeb. Bližší popis vyjde na popsání kratší samostatné publikace, proto zde uvádím pouze fakt, že pomocí těchto technologií může být efektivně docíleno importu libovolných televizních pořadů.
3.3 Katalog požadavků Mezi prvotní fáze každého projektu by měla patřit analýza požadavků uživatelů a dalších aktorů, kteří budou se systémem pracovat. Aktorem se rozumí buď uživatel, ale také jím může být určitá část systému či samotný systém jako celek.
- 12 -
Celý projekt by měl obecně splňovat následující požadavky: •
Použití volně dostupných programovacích technologií pro nahrávací systém.
•
Zajištění bezpečnosti při práci s informačním systémem.
•
Dostupnost služby a stabilní chod obou aplikací.
•
Možnost rozšíření informační systém o další nahrávací zdroje.
•
Možnost jazykové lokalizace informačního systému.
•
Rozdělení informačního systému do veřejné, uživatelské a administrátorské sekce
•
Zobrazení informací pro uživatele veřejné sekce o Zobrazení informací o provozovatele služby o Zpřístupnění formuláře pro registraci
•
Zobrazení informací pro uživatele uživatelské sekce o Informace o nových a stávajících nabídkách služeb o Nabídka televizních pořadů o Informace o vybraných televizních pořadech o Informace o nahraných televizních pořadech o Informace o svém účtu a jeho modifikování
•
Zobrazení informací pro uživatele administrátorské sekce o Zobrazení televizních pořadů o Zobrazení všech vybraných a nahraných televizních pořadech o Zobrazení všech zaregistrovaných uživatelů o Informace o svém účtu a jeho modifikování
•
Použít volně dostupných HTML programovacích technologií po informační systém.
•
Vytvořit intuitivní grafické uživatelské prostředí pro informační systém.
•
Vybrat vhodné úložiště dat s ohledem na rychlost k přístupu k datům, jejich zpracování a správu.
•
Vytvořit co nejjednodušší a výkonově nejefektivnější způsob nahrávání televizních pořadů.
•
Navrhnout celé řešení, tak aby bylo spustitelné na platformě Windows.
- 13 -
3.4 Kontextový diagram
Obrázek 1 Kontextový diagram bakalářské práce
3.5 Právní analýza Během analýzy se nesmí opomenout právní stránka věci. Z právního hlediska plyne, že tato služba může být v rámci české legislativy poskytována pouze a jenom pro nevýdělečné účely. Podrobný výňatek ze zákona popisují následující odstavce:
Dle novely zákona 216 z roku 2006 o ochraně autorských práv je v oddíle 2 definováno volné užití uměleckých děl v odstavci 1,2 a 3 § 30. Odstavec 1 Za užití díla podle tohoto zákona se nepovažuje užití pro osobní potřebu fyzické osoby, jehož účelem není dosažení přímého nebo nepřímého hospodářského nebo obchodního prospěchu, nestanoví-li tento zákon jinak. Odstavec 2 Do práva autorského tak nezasahuje ten, kdo pro svou osobní potřebu zhotoví záznam, rozmnoženinu nebo napodobeninu díla. - 14 -
Odstavec 3 Nestanoví-li zákon jinak dále jinak, užitím podle tohoto zákona je užití počítačového programu či elektronické databáze i pro osobní potřebu fyzické osoby či vlastní potřebu právnické osoby nebo podnikající fyzické osoby včetně zhotovení rozmnoženiny takových děl i pro takovou potřebu; stejně je užitím podle tohoto zákona zhotovení rozmnoženiny či napodobeniny díla architektonického stavbou i pro osobní potřebu fyzické či vlastní vnitřní potřebu právnické osoby nebo podnikající fyzické osoby (§ 30 a) a pořízení záznamu audiovizuálního díla při jeho provozování ze záznamu nebo jeho přenosu (§ 20) i pro osobní potřebu fyzické osoby.
3.6 Analýza stávajícího řešení V současné době existuje podobné řešení mé bakalářské práce s názvem DVBGrab na kolejích ČVUT Strahov. Toto řešení vychází z původního systému TVGrab, taktéž používaného na kolejích ČVUT. Toto řešení mi bylo do jisté míry příkladem, nicméně je celé koncipováno jiným způsobem a kompletně běží na jiné platformě.
3.7 TV Grab 3.7.1
Popis
TV Grab je systém, který byl navržen pro prostředí GNU/Linux. Systém se skládá z webového prostředí a ze sady skriptů, které zajišťují nahrávání. Systém dokáže nahrávat z klasického analogového signálu. Podporovanou databází je MySQL. Tento systém byl později upraven pro nahrávání z libovolného zdroje šířeného v lokální síti a veškeré jeho funkce byly upraveny pro volání přes ADOdb. Aplikace se skládá ze dvou funkčních celků. Frontend, čili prezentační část je napsána pomocí XHTML+PHP+JavaScript. Rozhraní obsahuje jak uživatelské tak administrativní rozhraní. Backend, čili funkční část programu obsahuje nahrávací logiku celého systému. Tato logika je napsána pomocí Python skriptů. Funkční část pomocí skriptů spustí nahrávací proces pomocí programu VLC (více o VLC viz kapitola 5.3) a po uplynutí nahrávací doby tento proces ukončí. Program VLC slouží jako klient pro přijímání multicastového vysílání, což je audiovizuální stream, který je šířen po lokální síti pomocí multicastových paketů (více o této technologii v kapitole 5.3)
- 15 -
Následující obrázek definuje komunikační vztahy mezi jednotlivými funkčními prvky systému.
Obrázek 2: Princip TV Grab
Práce s aplikací z pohledu uživatele: Uživatel se přihlásí do aplikace přes webové rozhraní, vybere si televizní pořady, o které má zájem a zadá požadavek na nahrání. Před začátkem pořadu se spustí nahrávací proces, který nahraný pořad uloží do souboru.. Pak je soubor uložen na ftp server a uživateli je zaslán email o dokončení nahrání s informací, kde lze nahraný pořad stáhnout. Každý uživatel systému si pořizuje záznam pro svoji osobní potřebu a v systému jsou pouze omezenou dobu, kdy si je může uživatel přesunout k sobě. Nikdo nemá přístup k nahraným pořadům jiných uživatelů. TV Grab běžel na počítači s procesorem Athlonem 1.8GHz, 1GB RAM a 1,1TB prostorem na jednotlivé nahrávky. Pro příjem televizního signálu je použito již zmíněného multicastového vysílání z počítače s adresou dvb.sh.cvut.cz.
- 16 -
Použité technologie: Debian GNU/Linux, Apache, PHP, Mysql, VideoLAN, mencoder,vsftpd
Autory projektu jsou: Ing. Pavel Danihelka - vedoucí projektu, PHP, backend skripty Ing. Ivo Danihelka - hlavní programátor, PHP, python Martin Jansa - externí programátor Ing. Svatopluk Fronk - programátor, prvotní verze Ing. Petr Krajcr - webmaster, dokumentarista, QA
3.8 DVB Grab DVB Grab je upravená verze projektu TV Grab Martinem Jansou, který obohatil tuto aplikaci o další prvky.
Mezi tyto prvky patří: •
Podpora distribuce nahrávek také přes HTTP server apache
•
Webové konfigurační rozhraní setup.php
•
Sjednocená a centralizovaná konfigurace v jednom souboru conig.php
•
Možnost volby preferovaného formátu hotové nahrávky(MPEG-2, MPEG-4)
•
Možnost nahrávat z několika kanálů paralelně, odpadá potřeba volit, který z analogových kanálů bude naladěn v době záznamu
•
Záznamové skripty pracující s libovolným audio-video signálem šířeným po lokální síti
•
Využití ADOdb pro abstraktní přístup k téměř libovolnému databázovému stroji
•
Seznam hotových nahrávek ve webovém rozhraní obsahuje i odkazy na stažení
•
Objednávání nahrávek přímo z vyhledávacího formuláře
•
Možnost dodatečných změn nastavení uživatelského účtu, případně zrušení účtu
•
Zasílání nového hesla při zapomenutí starého
•
Kompletní více jazyčná podpora
•
K dispozici kromě češtiny je také angličtina, francouzština a slovenština
•
Automatický výběr použitého jazyka ve webovém rozhraní
•
Podpora načítání TV programu ve formátu XMLTV
•
Automatická údržba záznamového serveru - 17 -
•
Podpora zobrazování detailních záznamů až při požadavku pomocí asynchronních XML-HTTP požadavků
•
Detailní informace o pořadu k dispozici společně s nahrávkou ve formátu XML připojenou XSL transformací.
Obrázek 3: Ukázka GUI DVB Grab
- 18 -
Obrázek 4: Ukázka GUI DVB Grab
3.9 Shrnutí Projekt TV Grab je projekt větší velikosti, na kterém se přímo podílelo pět lidí. Toto řešení je navrženo výhradně pro prostředí Linux. Projekt DVB Grab je novou verzí projektu TV Grab, kde Martin Jansa obohatil tento projekt zejména o jazykovou podporu a několik dalších funkcí. Projekt DVB Grab stejně jako původní projekt TV Grab obsahuje horší grafické uživatelské prostředí. Aplikace je nepřehledná, což snižuje její využitelnost. Dalším faktem je využití naprosto rozdílných technologií. Vývoj konzolových aplikací je rozhodně jednodušší a kvalitnější pod operačním systémem Linux, nicméně nasazení této aplikace a její konfigurace může dělat většině provozovatelům služby potíže.
4 ANALYTICKÁ STUDIE 4.1 Role uživatelů 4.1.1
Neregistrovaný uživatel
Neregistrovaný uživatel má možnost pouze přístupu na úvodní webovou stránku. Zde se může zaregistrovat a poté se přihlásit do systému. Před registrací musí uživatel potvrdit licenční ujednání. Toto ujednání obsahuje informace, které obsahují výňatek ze zákona o šíření - 19 -
nahrávaného audiovizuálního obsahu z veřejných médií. Po potvrzení musí uživatel během registrace zadat své jméno, heslo (heslo musí obsahovat minimálně 7 znaků, kde alespoň jeden znak není alfanumerického charakteru), e-mail a kontrolní otázku s odpovědí pro případ potvrzení registrace v případě zapomenutí nebo zcizení uživatelského účtu. Po registraci se uživatel stává Registrovaným uživatelem a může se přihlásit.
Obrázek 5: Use Case – Neregistrovaný uživatel
4.1.2
Registrovaný uživatel
Registrovaný uživatel má jak ukazuje Use Case diagram na následujícím obrázku daleko více možností. Po přihlášení si může nechat zobrazit aktuální TV program a vybrat si z něj TV relaci, kterou si bude chtít nechat nahrát. Dále má možnost nechat si zobrazit seznam TV relací, které si vybral. Z tohoto seznamu může ještě dodatečně před počátkem nahrávání položku úlohy vymazat. Další možností je zobrazení již nahraných úloh, které si může stáhnout. Jako poslední nabídka uživatele bude možnost nastavení svého účtu. Zde si bude moci uživatel změnit své přístupové heslo nebo kontaktní e-mail.
- 20 -
Obrázek 6: Use Case – Registrovaný uživatel
4.1.3
Super Administrátor
Role Super Administrátora je poněkud netypická z pohledu přístupu k systému. Jeho hlavním a jediným úkolem je určovat kdo z registrovaných uživatelů je a kdo není administrátorem systému. Jako jediný aktor v systému, nemá klasické webové uživatelské rozhraní, ale přímo přistupuje k systému na serveru pomocí tzv. Webového konfigurátora, díky čemuž se radikálně zvětšuje bezpečnost systému z pohledu rozdělování administrátorských práv.
Obrázek 7: Use Case – Super Administrátor
- 21 -
4.1.4
Administrátor
Administrátor přímo určený Super Administrátorem má za úkol spravovat televizní programy, naplánované úlohy, hotové úlohy a uživatelské účty. V případě spravování TV programu si tento uživatel může nechat zobrazit seznam TV relací pro danou stanici a poté každou položku vložit, upravit nebo smazat. Z pohledu všech úloh (naplánovaných i hotových), může každou položku upravit, nebo smazat. Ve správě účtů je z důvodu maximálního bezpečí uživatele možno účty pouze mazat. Dále si může administrátor upravit heslo a e-mail svého účtu.
Obrázek 8: Use Case - Administrátor
- 22 -
4.2 Datový model Pro co nejsnazší a nejrychlejší přístup k datům jsem opět volil cestu jednoduchého schématu. Při špatném návrhu databáze může totiž každá tabulka navíc negativně poznamenat například odezvu programu, z důvodu dlouhých SQL dotazů. To se dá do určité míry odstranit pomocí procedurálního jazyka T-SQL, ale jen v některých případech. Datový model bakalářské práce se nachází na následujícím obrázku.
Obrázek 9: ER diagram TV Grab databáze
Databáze se z pohledu procesů v programu liší na dvě základní části. Tečkovanou čarou je zvýrazněna část reprezentující část, se kterou program pracuje ve většině případů a která je funkčně nejdůležitější. Čárkovaná část naproti tomu zobrazuje část databáze určenou pro správu uživatelů a jejich rolí.
- 23 -
Popis tabulek databáze:
Název tabulky PORAD NAHRAVKA
Popis Tabulka obsahuje seznam všech televizních pořadů Tabulka obsahuje všechny úlohy, které jsou připraveny k nahrávání nebo jsou již nahrané
UZIVATEL_NAHRAVKA
Pomocná tabulka, která obsahuje záznamy ID uživatele a k němu přiřazených nahrávek
Aspnet_Users
Seznam uživatelů a základních informací o nich
Aspnet_Profile
Tabulka obsahující data o uložených uživatelských profilech
Aspnet_Membership
Tabulka obsahující data o členstvích
Aspnet_Roles
Tabulka obsahující data o uživatelských rolích
Aspnet_UsersInRoles
Tabulka obsahující data o rolích přiřazených k daným uživatelům
Aspnet_PersonalizationPerUser
Pomocná doplňující tabulka o uživatelích
Aspnet_Applications
Tabulka obsahující názvy aplikací. Tato tabulka je zde pro případ, že z databází bude pracovat více aplikací.
Aspnet_Paths
Tabulka obsahující cesty a další proměnné
Aspnet_PersonalizationAllUsers
Propojovací tabulka obsahující informace z tabulky cest
Aspnet_SchemaVersions
Tabulka obsahující informaci a verzi databázového diagramu
Aspnet_WebEvent_Events
Tabulka určená pro ukládání informací od poskytovatele SQL připojení.
5 NÁVRH ARCHITEKTURY 5.1 Blokové schéma projektu TV GRAB Základem celé komunikace je lokální síť, kterou může být například i metropolitní síť libovolné velikosti. V této síti se nachází server, který posílá multimediální obsah (televizní vysílání) na všechny počítače v síti pomocí multicastových paketů. Multicast je metoda přeposílání IP datagramů z jednoho zdroje skupině více koncových stanic (více viz kapitola 5.3). Na adresu tohoto serveru je pomocí zmíněné lokální sítě připojen nahrávací počítač. Uživatel se pomocí PDA, notebooku nebo stolního PC připojí skrze lokální síť k webovému serveru, na kterém běží webové stránky (frontend) projektu TV ServiceGrab. Přes tyto stránky si uživatel zadá nahrávání libovolného televizního pořadu. Záznam o této události se uloží do MS SQL databáze, která je většinou součástí webového serveru, ale může být umístěna na samostatném počítači. Nahrávací počítač (backend) tuto databázi v krátkých časových intervalech
- 24 -
kontroluje a v případě že se v databázi nachází záznam připraven k nahrávání, tak se v daný čas spustí nahrávání z multicastové adresy. Nahrávací počítač ukládá data do libovolného datového úložiště, kterým bývá zpravidla souborový server (FTP nebo WWW server). Jak mile je televizní relace nahraná, tak si uživatel pomocí webového serveru může svou nahrávku stáhnout přímo ze souborového serveru.
Obrázek 10 Blokové schéma TV ServiceGrab
5.2 Popis použitých technologií technologií 5.2.1
HTML
HTML (HyperText Markup Language 1989) je široce rozšířen jazyk určený pro tvorbu webových stránek. Je charakterizován množinou značek a atributů k nim přiřazených. Mezi značky se uzavírají části textu dokumentu a tím se určuje význam (sémantika) obsaženého textu. Názvy jednotlivých značek se uzavírají mezi značky „menší“ a „větší“ (< a >). Část dokumentu uzavřená mezi značkami tvoří tzv. element dokumentu.
- 25 -
5.2.2
CSS
CSS (Cascading Style Sheets) je jazyk pro popis způsobu zobrazení stránek na psaných v jazycích HTML, xHTML nebo XML. Hlavním smyslem je umožnit návrhářům oddělit vzhled dokumentu od jeho struktury a obsahu. 5.2.3
ASP.NET
ASP.NET je součást .NET Frameworku firmy Microsoft pro tvorbu webových aplikací a služeb. Je nástupcem technologie ASP (Active Server Pages) a přímým konkurentem JSP (Java Server Pages). ASP.NET je založen na CLR (Common Language Runtime), který je sdílen všemi aplikacemi postavenými na .NET Frameworku. Programátoři tak mohou realizovat své projekty v jakémkoliv jazyce podporujícím CLR, např. Visual Basic .NET, JScript. NET, C#, ale i mutace Perlu, Pythonu a další. Aplikace založené na ASP.NET jsou také rychlejší, neboť jsou předkompilovány do jednoho či několika málo DLL souborů, na rozdíl od ryze skriptovacích jazyků, kde jsou stránky při každém přístupu znovu a znovu parsovány. 5.2.4
SQL
SQL (Structured Query Language) je standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. Vznikl v 70. letech 20. století. Jako standart byl přijat v roce 1986 pod označením SQL-86. Zatím nejnovějším standardem je SQL3 (SQL-99), který reaguje na potřeby nejmodernějších databází s objektovými prvky. 5.2.5
T-SQL
Transact-SQL je proprietární rozšíření SQL jazyka firmou Microsoft. Jedná se o procedurální jazyk využívaný v prostředí MS SQL. Velkou výhodou tohoto jazyka je možnost vytvářet jednoduché skripty, deklarovat proměnné, vytvářet podmínky a smyčky. 5.2.6
JavaScript
JavaScript je multiplatformní, objektově orientovaný skriptovací jazyk. Jeho syntaxe patř do rodiny jazyků Java. Slovo Java je však součástí jeho názvu pouze z marketingových důvodů a s programovacím jazykem Java jej vedle názvu spojuje jen podobná syntaxe. Program v JavaScriptu se obvykle spouští na straně klienta po stažení z WWW stránky. Z toho plynou jistá bezpečnostní omezení, JavaScript např. Nemůže pracovat se soubory.
- 26 -
5.2.7
C/C++/C#
C – jedná se o programovací jazyk který vyvinul Ken Thompson a Dennis Ritchie pro potřeby operačního systému UNIX. V současné době je to jeden z nejpopulárnějších jazyků. C je nízkoúrovňový, kompilovaný programovací jazyk. C++ - je objektově orientovaný programovací jazyk, který vyvinul Bjarne Stroupstrup. C++ podporuje několik programovacích stylů (paradigmat) jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. V současnosti patří jazyk C++ mezi nejrozšířenější programovací jazyky. C# - je vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý firmou Microsoft zároveň s platformou .NET. Microsoft založil C# na jazycích C++ a Java. C# se využívá hlavně k tvorbě databázových programů, webových aplikací, webových služeb, formulářových aplikací ve Windows apod. 5.2.8
UML (Unified Modeling Language)
UML (Unified Modeling Language, 1994) je v softwarovém inženýrství hojně používaný jazyk určený pro vizualizaci, specifikaci, navrhování a dokumentaci programových systémů. UML nabízí standardní způsob zápisu jak návrhů systému včetně konceptuálních prvků jako jsou příkazy programovacího jazyka, databázová schémata a znovupoužitelné programové komponenty. 5.2.9
RUP (Rational)
Rational Unified Process (dále též RUP) označuje metodiku vývoje software vytvořenou a používanou společností Rational Software Corporation. Společnost Rational tuto metodiku též distribuuje formou softwarového produktu, demo verze, která byla hlavním zdrojem použitým pro tvorbu této práce a je k dispozici na jejích webových stránkách (www.rational.com). Specifika RUP názorně ilustruje následující schéma:
- 27 -
Obrázek 11 Schéma projektu dle metodiky RUP
Základní filosofií metodiky Rational Unified Process je šest základních pravidel, tzv. “nejlepších praktik” používaných při vývoji software: 1. 2. 3. 4. 5. 6.
Iterativní vývoj software Správa požadavků Architektura založená na komponentách Vizuální modelování Ověřování kvality software Řízení změn software
5.3 Multicastový přenos audiovizuálního obsahu Pro nahrávání televizních pořadů využívám ve své práci open-source řešení produktů z rodiny VideoLAN. Pomocí klienta Video Lan Client (dále jen VLC), je možno se připojit na zdroje posílající audiovizuální obsah a z těchto zdrojů obsah sledovat, nebo rovnou nahrávat. V případě mé bakalářské práce sem využil vysílání pomocí multicastového rozsahu IP adres na studentských kolejích Strahov. IP multicast je metoda přeposílání IP datagramů z jednoho zdroje skupině více koncových stanic. Místo odesílání jednotlivých datagramů ke každému cíli je odeslán jediný datagram. IP směrování přenosu multicast bylo vyvinuto, aby doplnilo technologie unicast a broadcast, které účinně nezvládaly nové aplikace. Adresace a přenosy multicast umožňují např. více hostitelům přenést jediný datagram IP.
- 28 -
Způsob streamování funguje tak, že se danému toku dat přiřadí IP adresa. Počítač, který chce nějaký tok dat přijímat pošle IGMP přihlašovací paket s požadovanou multicastovou IP adresou. Protokol IGMP dynamicky registruje jednotlivé hostitele, patřící do skupiny adres D. Multicastový server na routeru pozná IGMP paket a podle něj rozhoduje, kam se která data budou posílat. Pokud danou multicastovou skupinu nemá k dispozici, požádá nadřízený multicastový router. Výsledkem je pak, že jednotlivé datové toky putují sítí jenom jednou, i když se pak přepošlou více počítačům narozdíl od unicastu (spojení pouze jednoho počítače s jedním) a také se neposílá úplně všem jako u broadcastu (z jednoho počítače, všem počítačům v síti včetně těch, které nemají zájem). Tento multicastový stream se pomocí programu VideoLAN Server posílá po síti a dá se „naladit“ pomocí programu VLC na klientském počítači.
5.4 Návrh prezentační vrstvy (frontend) projektu Při návrhu prezentační vrstvy, jsem se nechal inspirovat možnostmi, které technologie HTML, CSS a ASP. NET nabízí. Mezi hlavní výhody technologie ASP. NET patří zejména rychlá a snadná prezentace databázových dat a jejich zpracování na pozadí frontendu pomocí C# skriptu. 5.4.1
Popis grafického prostředí
Během návrhu grafického prostředí jsem měl stanovený hlavní cíl vytvořit přehledný web. Návrh grafického prostředí na internetových stránkách se v dnešní době stává uznávanou disciplínou, kterou se zabývá řada specialistů. Informace musí být na webu prezentovány srozumitelně, jasně a přehledně. Z hlediska psychologie uživatele se dá říci, že většina lidí očekává v horní části stránky důležité informace a ovládací prvky webu. Obsah je potom nejvýhodněji zobrazovat přímo pod ovládacím panelem, tak aby uživatel mohl rychle a intuitivně měnit obsah webu. Patičku (konec stránky) chápe většina uživatelů jako konec stránky, což napomáhá při rychlejší orientaci na webu. Současně je důležitá použitá barevná kombinace na webu. Různé barvy použité na webu by měli na uživatele působit příjemně. Následující obrázek demonstruje rámcově způsob rozvržení uživatelského prostředí použitého v této bakalářské práci.
- 29 -
Obrázek 12: Rozvržení webového rozhraní
Kromě formy je samozřejmě důležitý i způsob prezentace obsahu. Informace na webu by měly být srozumitelné a krátké. Uživatel by měl získat pouze potřebné informace. Formát zobrazení informací by měl být ucelený pro celý web. 5.4.2
Popis důležitých frontend funkcí •
Registrace nového uživatele – pomocí ASP. NET komponent jsem použil bezpečný způsob registrace. Uživatel je během registrace upozorňován na případné chyby při vyplňování registračního formuláře.
•
Zobrazení televizního programu – pro zobrazení televizního programu využívám funkcí ASP. NET Grid View. Tato komponenta je snadno nastavitelná a poskytuje detailní pohled na data a jejich editaci.
•
Výběr úloh k nahrávání – Na pozadí frontendu se nachází několik skriptů napsaný v jazyce C#. Jeden z nich po stisknutí tlačítka pro uložení televizních relací projde celý Grid View náhled a označené položky pošle do databáze jako událost k nahrání.
•
Zobrazení naplánovaných úloh a jejich správa – pomocí komponenty ASP. NET Grid View zobrazuji výpis úloh určených k nahrávání pro právě přihlášeného uži- 30 -
vatele. Uživatel má současně možnost libovolnou naplánovanou úlohu smazat, čímž se spustí T-SQL procedura, která na databázové vrstvě provede vymazání potřebných záznamů. •
Úprava uživatelských atributů – pomocí ASP. NET komponent pro správu uživatelských účtů lze rychle a bezpečně měnit heslo, nebo e-mail uživatele.
•
Vkládání a správa televizního programu – pod administrátorským účtem jdou jednoduše pomocí ASP. NET Grid View vkládat televizní relace pro jednotlivé kanály.
5.5 Návrh funkční business logiky (backend) projektu Jedním z hlavních prvků bakalářské práce je aplikace je zpracovávání požadavků uživatelů pro nahrávání zvoleného televizního pořadu. Na počátku si musíme uvědomit s čím, a jak bude program komunikovat. Aplikace musí přistupovat do databáze, kde se nacházejí událostí o požadavcích na nahrávání. K připojení do databáze využívám ODBC ovladačů. ODBC je standardizované API určené pro přístup do různých databází nezávisle na programovacím jazyku, operačním systému a databázovém systému. Databáze, do které aplikace nahlíží a zapisuje je MS SQL Server 2005 Express Edition. V této databázi se nachází několik tabulek a relací (přesný popis tabulek a jejich výčet viz kapitola 4.2). Tabulky obsahují informace, např. o uživatelích, televizních programech, stanicích ale také seznam nahrávek, tedy úloh ke zpracování nebo úloh které byly nahrané. 5.5.1
Aplikace TVGRAB.EXE
Aplikace tvgrab.exe je čistě konzolová aplikace navržená tak, aby dávala uživateli informace o všech krocích které právě provádí. Princip implementace je následující: Při spuštění aplikace si aplikace nejdříve načte ze souboru config.cfg cestu, kam se nahrávky postupně ukládají a současně cestu k aplikaci recorder.exe. Poté se vytvoří dvě samoobslužná vlákna, která běží nezávisle na sobě bez nutnosti synchronizace. První vlákno, nazvěme jej Vlákno1, se pomocí ODBC ovladačů přihlásí do zmíněné MSSQL databáze. Tato databáze je nazvaná TVGrab. Z této databáze si Vlákno1 načte nahrávku, která má „nejstarší“ čas pro spuštění nahrávání a zároveň příznak stav se nachází ve stavu ceka. Tento požadavek na databázi je vytvořen pomocí procedury T-SQL která je spuštěna na databázové vrstvě, což je velice efektivní a rychlé řešení, oproti klasickému zasílání dlouhého SQL požadavku. Pokud se nepovede najít žádný záznam v tabulce, tak aplikace - 31 -
sama vypíše, že se v databázi nenachází žádné úlohy. Pokud aplikace úspěšně načte nějaká data, tak je nejprve porovnává s proměnou Cas_min obsahující čas poslední načtené položky. Tímto se zjistí, zda byla zrovna načtena úloha se stejným časem spuštění nahrávání jako minulá úloha. V kladném případě se okamžitě spustí aplikace recorder.exe s danými parametry pro spuštění nahrávání úlohy a pomocí další T-SQL procedury se aktualizuje načtená položka v databázi na stav nahrava se. Pokud položka ve sloupci Od_cas v tabulce nahravka pro danou úlohu není stejná jako minulý čas, tak se každou minutu porovnává načtená hodnota času spuštění nahrávání úlohy s časem aktuálním (systémový čas na pc, na kterém je aplikace tvgrab.exe spuštěna). Toto opatření je implementováno z důvodu menšího počtu přístupu do databáze. Následující diagram demonstruje logiku Vlákna1 aplikace tvgrab.exe.
- 32 -
Obrázek 13: Stavový diagram TV Grab Vlákna 1
- 33 -
Princip Vlákna2 je následující: Vlákno2 se podobně jako Vlákno1 připojí do databáze a pomocí procedury si načte úlohu, jejíž čas ukončení Do_cas, je „nejmladší“, to znamená, že se načte položka, která bude v nejbližší době nahraná. Výběr této položky je závislý na stavu nahrávky, který musí být nastaven na nahrava se. I zde se kontroluje, zda nějaká takováto položka v tabulce existuje, či nikoliv. Poté se vezme vygenerovaný řetězec cílového souboru, který se jmenuje stejně jako výsledný soubor, který obsahuje danou nahrávku. Tento řetězec se vyhledává v souboru records.txt, který obsahuje všechny řetězce názvů všech úloh, které kdy aplikace recorder.exe nahrála. Takto Vlákno2 zjistí, že je nahrávka opravdu nahraná a aktualizuje stav načtené úlohy v databázi na hotovo a zapíše k této úloze do sloupce Odkaz cestu pro stažení souboru. Jelikož se v aplikaci používá vláken, tak je důležité vyřešit tzv. kritické sekce aplikace, tedy najít ty části aplikace, kde je v případě potřeby nejvhodnější ukončit běh aplikace. Pro tento krok sem implementoval několik kritických sekcí uvnitř obou vláken, na místech kde se to nejvíce hodí. Důvodem tohoto opatření je udržení správné konzistence dat v databázi. Aplikace se ukončí stisknutím klávesy ENTER nebo ESCAPE čímž se spustí sekvence postupného ukončení jednotlivých vláken a nakonec během minuty i celé aplikace. Následující diagram demonstruje logiku Vlákna2 aplikace tvgrab.exe.
- 34 -
Obrázek 14: Stavový diagram TV Grab Vlákna 2
5.5.2
Aplikace RECORDER.EXE
Aplikace recorder je další aplikací vytvořenou pro účely nahrávání televizních pořadů pro tuto bakalářskou práci. Hlavní důvod pro vytvoření této aplikace je fakt, že program VLC nedokáže sám ukončit nahrávání po určitém čase. VLC samozřejmě obsahuje parametr pro nastavení ukončení nahrávání, nicméně se po uplynutí definované doby program neukončí, jelikož nahrávání z UDP multicastové adresy (více viz kapitola 5.3) VLC klasifikuje jako unseekable source, tedy zdroj ze kterého nejde zjistit délku streamu, a tím pádem ani reálný konec streamu. Z důvodu tohoto nedostatku, jsem se rozhodl napsat vlastní aplikaci, která sama spustí nahrávání pomocí VLC a poté jej pomocí detekce PID (Process ID), neboli čísla procesu po daném časovém intervalu ukončí.
- 35 -
Princip aplikace recorder.exe je následující: Vlákno1 aplikace tvgrab.exe předá, v momentě kdy je potřeba nahrát daný pořad, parametry aplikaci recorder.exe. Tato aplikace předané parametry zpracuje a na jejich základě provede proces spuštění nahrávání pomocí VLC. Ještě ale před samotným spuštěním si aplikace načte s konfiguračního souboru config.cfg aktuální cestu k programu VLC, dále cestu k cílovému adresáři do kterého se bude nahrávat a nakonec i UDP adresu zdroje, ze kterého bude danou adresu nahrávat. Poté se provede vyhodnocení parametrů předaných od Vlákna1. Mezi tyto parametry patří čas ukončení nahrávání a zdroj nahrávání. Na základě těchto parametrů, se vygeneruje dávkový soubor pro spuštění nahrávání pomocí VLC. Následuje vytvoření procesu a spuštění nahrávání pomocí VLC. Během nahrávání se kontroluje aktuální čas na nahrávacím počítači s časem ukončení nahrávání. Jakmile jsou si tyto dvě proměnné rovny, tak se ukončí nahrávání pomocí Windows příkazu TASKKILL, který vypne proces VLC. Posledním krokem je zapsání názvu nahraného souboru do souboru records.txt, který slouží pro detekci nahrávek pro Vlakno2 programu tvgrab.exe. Následující diagram demonstruje logiku aplikace recorder.exe.
- 36 -
Obrázek 15: Stavový diagram RECORDER
- 37 -
5.6 Návrh implementace importu televizního programu Vzhledem k velké časové náročnosti a rozsahu celého projektu jsem se rozhodl prozatím vynechat implementaci importu televizního programu. Nicméně jsem se během analýzy v druhé fázi projektu (fáze rozpracování dle RUP) věnoval analýze tohoto problému a navrhl jsem tři různé varianty způsobů řešení tohoto problému. 5.6.1
Import televizního programu pomocí parsování s cizích HTML stránek
Stahování TV programů z jiných internetových stránek pomocí tzv. parserů. Parser je program, který analyzuje předložená data a vyhledává v něm prvky odpovídající definici určitého jazyka. Tato metoda je relativně spolehlivá, nicméně závisí na kvalitní a bezchybné interpretaci zdrojových dat. Pokud například parsujeme text z jiných HTML stránek, tak tyto stránky musí mít bezchybnou HTML syntaxi. Dalším problémem mohou být nepředvídatelné výpadky zdrojových HTML stránek. 5.6.2
Import televizního programu pomocí importu z XML TV zdrojů
V poslední době se dostává veliké oblibě XML formátu televizního programu. XML (eXtensible Markup Language) je obecný značkovací jazyk, který byl vyvinut a standardizován konsorciem W3C. Umožňuje snadné vytváření konkrétních značkovacích jazyků pro různé účely a široké spektrum různých typů dat. XML jazyk je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů. Jazyk umožňuje popsat strukturu dokumentu z hlediska věcného obsahu jednotlivých částí, nezabývá se sám o sobě vzhledem dokumentu nebo jeho částí. Prezentace dokumentu (vzhled) se potom definuje připojeným stylem. XML TV program lze parserem, tedy programem pro analýzu dat data načítat do databáze. Mezi nástroje pro zpracování XML souborů se dá použít také SQLXML od firmy Microsoft. Tento nástroj je vlastně předpřipraveným XML parserem, který načte styl XML a samotné XML a za pomocí dalšího nastavení jej převede do libovolné databáze. Nevýhodou těchto řešení je fakt, že data se načítají do databáze ve formátu, který nelze měnit. Je proto nutné potom pomocí programu, nebo SQL procedur data dále upravovat do potřebného tvaru. Na adrese http://xmltv.arcao.com/ se nachází testovací provoz XML souborů obsahujících televizní programy českých stanic.
- 38 -
5.6.3
Import televizního programu pomocí Business Inteligence nástroje
Posledním ze způsobů může být import a transformace dat do databáze pomocí nástroje Business Intelligence. Business intelligence můžeme chápat jako ucelený a efektivní přístup k práci s libovolnými daty. Je to standard využívaný hlavně ve velkých korporacích. Mezi hlavní disciplíny Business intelligence patří Reporting, Kontrolní processing a Datová integrace. Reporting se věnuje hlavně vhodné prezentaci dat (grafy, dashboardy, sestavy). Kontrolní processing se zabývá metrikou předem definovaných stavů a hodnot (speciální druh reportingu). Mezi poslední a pro nás nejdůležitější disciplínu Business intelligence patří datová integrace. Datová integrace je proces, který dokáže z různých datových zdrojů načíst, ale současně upravit a následně uložit data na libovolná datová úložiště. Těmto procesům se říká ETL(Extract, Transform, Load) procesy. Mezi datovými zdroji mohou být libovolné typy databází, souborů (XLS, txt, XML atd.). Transformační funkce poskytují řadu užitečných nástrojů jako jsou úprava dat, úprava metadat (vlastnosti sloupců databáze), spojování sloupců, logické podmínky a spoustu dalších funkcí. Největší výhodou je fakt, že většina takto zaměřených nástrojů je plně graficky orientovaná, to znamená že není potřeba hlubší znalosti programovacích nástrojů. V případě mé bakalářské práce bych pomocí libovolného ETL nástroje (například opensource produkt Pentaho Data Integrator, www.pentaho.com) načetl XML TV data nebo TXT data ze zdroje. Poté by se dal pomocí ETL nástrojů tento tok dat upravit do žádané formy a takto upravená data by se poté posílala přímo do databáze. Výhodou je, že by se dal tento proces automatizovat.
- 39 -
Obrázek 16 Ukázka Pentaho Data Integratoru
6 IMPLEMENTACE 6.1 Prostředí, použité nástroje Během vývoje jsem pracoval s následujícími nástroji: 6.1.1
Microsoft Windows XP
Operační systém vyvinutý společností Microsoft. Tento systém je postaven na jádře Windows NT. Během vývoje jsem používal 32 bitovou verzi tohoto systému. 6.1.2
Microsoft Visual Web Developer 2005 Express Edition
Nástroj postavený na frameworku .NET. Tento nástroj nabízí podporu tří programovacích jazyků (Visual Basic, C#, J#) a slouží, jak již z názvu vyplývá, k vytváření webových projektů určených pro Internet nebo intranety za použití ASP.NET. Tento nástroj také nabízí podporu XML, RSS a webových služeb. V oblasti SQL nabízí připojení na běžné SQL servery. 6.1.3
Microsoft SQL Server 2005
MS SQL Server je všestranné, integrované a komplexní řešení pro data, které přispívá ke zvýšení výkonnosti uživatelů poskytováním zabezpečenější, spolehlivější a produktivnější - 40 -
platformy pro libovolná data. SQL Server 2005 omezuje složitost vytváření, nasazování, správy a využívání dat a analytických aplikací na nejrůznějších platformách od mobilních zařízení po podnikové datové systémy. Prostřednictvím rozsáhlé sady funkcí, vzájemné funkční spolupráce se stávajícími systémy a automatizace rutinních úloh nabízí SQL Server 2005 úplné datové řešení. 6.1.4
Microsoft .NET
Microsoft .NET se stává, díky internetovým standardům, platformou webových XML služeb pro zprostředkování vzájemné spolupráce aplikací, služeb a zařízení a umožňuje jim přístup a zpracování informací kdykoli, kdekoli a z jakéhokoli zařízení. Microsoft .NET je platforma s následujícími komponentami:
6.1.5
•
.NET Framework a vývojové nástroje Visual Studio.NET
•
.NET základní stavební služby
•
.NET klientský software pro chytrá zařízení
•
Microsoft .NET Enterprise servery
Dev – C++
Dev-C++ je svobodné vývojové prostředí vyvinuté společností Bloodshed software pro jazyky C a C++. Je určeno pro operační systém Windows a jako překladač používá MiniGW, klon GCC. Dev-C++ je také možné používat spolu s prostředím Cygwin nebo jinými překladači založenými na GCC. 6.1.6
PSPad
PSPad editor je navržen jako univerzální editor pro editaci prostých textů a zdrojových kódů mnoha programovacích, skriptovacích a značkovacích jazyků. 6.1.7
VideoLAN Client (VLC)
VideoLAN Client je multimediální přehrávač. VLC je zcela otevřeným globálním projektem francouzských studentů z francouzské technické školy École Centrale Paris v Chatenay Malabry u Paříže. Nabízí komplexní podporu pro video soubory všech typů: MPEG-1, MPEG-2, MPEG-4, WMV, ASF, AVI, VideoCD, DVD, digitální satelitní kanály, digitální televizní kanály a živé video z internetu v unicast / multicast režimu v rámci širokopásmové sítě IPv4 nebo IPv6. Plně podporuje všechny důležité audio formáty - AAC, AC3 (A52), ADPCM, DTS, DV Audio, FLAC, MPEG Layer 1 / 2, Vorbis, WMA 1 / 2 a samozřejmě
- 41 -
MP3. VLC je jedním z nejvíce na platformě nezávislých přehrávačů na trhu. K dispozici jsou kvalitní verze pro Microsoft Windows, Linux, BeOS, Mac OS X, BSD, Solaris a Pocket PC. Pomocí VLC se dají také pořizovat záznamy. V této bakalářské práci se nahrává pomocí VLC do video formátu MPEG1 o rozlišení 640x480. Zvuk je potom ve formátu MP3, 128bps, stereo.
6.2 Bezpečnost a stabilita aplikace Během vývoje aplikace jsem se věnoval také otázce zabezpečení dat při práci s webovým prostředím. Díky vývoji webové části v prostředí ASP. NET jsem využil možnosti oddělení kódu skriptů napsaných v jazyce C# od HTML kódu. Veškeré citlivé informace, jako jsou připojovací informace potřebné k připojení do databáze jsou tak uchovány mimo. Pro správu uživatelů v databázi jsem využil šablonu ASP. NET, která nabízí komplexní správu informací o uživatelích a současně obsahuje T-SQL procedury pro efektivní práci s těmito daty. Tato struktura například umožňuje ukládat hesla uživatelů v kryptované formě, takže ani administrátor nemá možnost nahlédnout na tuto citlivou a zneužitelnou informaci.
6.3 Instalace 6.3.1
MS SQL 2005 Express Edition + ODBC driver
V prvé řadě je potřeba nainstalovat MS SQL 2005 Express Edition, jehož instalace se nachází na přiloženém CD ve složce D:\installation_files\SQLEXPR32.exe. Během instalace, ponecháme vše na standardním nastavení, to znamená že název SQL serveru bude „localhost\SQLEXPRESS“. Pouze u způsobu autentifikace zvolíme kombinovaný způsob a ponecháme uživatele sa a heslo zvolíme tvgrab. Po instalaci serveru doinstalujeme SQL Server Management Studio Express, což je program, který nabízí uživatelsky přívětivý pohled na strukturu databáze, tabulky, data a procedury.
Tento
program
se
nachází
na
přiloženém
CD
ve
složce
D:\installation_files\SQLServer2005_SSMSEE.msi. Nyní importujeme databázi na náš SQL server právě pomocí SQL Management Studia. Spustíme jej a přihlásíme se dle následujícího obrázku:
- 42 -
Obrázek 17 Přihlášení do MS SQL Management Studia
Heslo bude tvgrab. Po spuštění klikneme na Databases a vybereme položku Restore Database jako je tomu na následujícím obrázku:
Obrázek 18 Obnovení databáze
Po kliknutí se objeví okno, ve kterém si načteme zálohu databáze, která se nachází na přiloženém CD ve složce D:\source_files\database\tvgrab.bak. Poté vybereme
- 43 -
v horní části okna položku To database: TVGrab a potvrdíme volbu kliknutím na tlačítko OK. Příklad je na následujícím obrázku:
Obrázek 19 Volba databázové zálohy
Nyní je potřeba nastavit ODBC ovladač databáze, díky kterému se webové prostředí a aplikace tvgrab.exe připojuje do databáze. ODBC ovladač se nastavuje ve windows v programu Data Source (ODBC), který se nachází ve složce Administrative Tools v Control Panel. V tomto programu zvolíme přidat nový Data Source a vybereme SQL Native Client. V první záložce nastavíme Name:TVGrab a Server:localhost\SQLEXPRESS, klikneme na tlačítko Next. Zde zadáme druhou možnost, tedy autentifikaci pomocí loginu a hesla. Dále vyplníme Login ID:sa a Password:tvgrab a klikneme na tlačítko Next. Zde si vybereme v horní nabídce databázi TVGrab, klikneme na Next a poté Finish. 6.3.2
.NET2 FrameWork + MS VisualWebDeveloper
Pro správný chod webové aplikace je potřeba nainstalovat .NET2 Framework, který se nachází na přiloženém CD ve složce D:\installation_files\dotnetfx.exe.
- 44 -
Poté se nainstaluje MS VisualWebDeveloper, což je vývojové prostředí pro ASP.NET, které obsahuje současně i virtuální ASP.NET server. Instalace programu se nachází na přiloženém CD ve složce D:\installation_files\VWD.iso. Tento soubor je CD obraz instalace VisualWebDeveloper a je nutno tento obraz načíst např. pomocí přiloženého programu
Daemon-Tools,
který
se
nachází
na
přiloženém
CD
ve
složce
D:\installation_files\ daemon409-x86.exe, nebo jej lze vypálit na CD pomocí libovolného vypalovacího SW. Po instalaci programu MS VWD otevřeme složku tvgrab na CD v adresáři D:\source_files\web\tvgrab. Po otevření složky můžeme spustit web stisknutím klávesy F5. Web se ukončí klávesou Shift+F5.
Pozn.: v přiložené databázi je přednastaven jeden uživatelský a jeden administrátorský účet pro přihlášení na web aplikace, nicméně je možno si vytvořit další uživatele. Administrátorský účet se dá udělat z běžného účtu pomocí MS VisualWebStudia v nabídce Website -> ASP.NET Configuration. Poté se určí administrátorské účty v záložce Security -> Manage users. Přihlašovací iniciály přednastavených účtů jsou: Název účtu
Heslo
Administrátorský účet
administrator
administrator,
Uživatelský účet
uzivatel
uzivatel,
6.3.3
VLC
Program VideoLAN Client je nutný pro samotné nahrávání televizních nahrávek. Instalace programu se nachází na přiloženém CD ve složce D:\installation_files\ vlc0.8.6c-win32.exe. Instalace je jednoduchá a intuitivní. Pro správný chod aplikace je doporučeno, aby bylo VLC nainstalováno do složky jejíž cesta neobsahuje mezery. 6.3.4
TVGrab
Zkopírujeme si na pevný disk obsah složky D:\source_files\tvgrab. Poté ve složce tvgrab na disku editujeme soubor config.cfg a nastavíme následující parametry:
- 45 -
[VLC SETTING] // nastavení cesty k souboru vlc.exe
VLC_path = "D:\vlc"
[RECORDER SETTING] STORE_path = "D:\grab\" TIME_DELAY = "5"
// nastavení cesty, kde se budou ukládat nahrané soubory
// nastavení časového zpoždění v minutách, z důvodu prodloužení TV relace
o reklamu apod. CT1_udp = "udp://@239.194.10.11:1234"
// nastavení UDP adresy ČT1
CT2_udp = "udp://@239.194.10.12:1234"
// nastavení UDP adresy ČT2
NOVA_udp = "udp://@239.194.10.13:1234"
// nastavení UDP adresy TV NOVA
PRIMA_udp = "udp://@239.194.10.14:1234"
// nastavení UDP adresy TV PRIMA
[TVGRAB SETTING] RECORDER_path = "D:\Dev-Cpp\Projekty\tvgrab"
// nastavení cesty, kde se nachází
program recorder.exe FTP_path = ftp://192.168.0.122/ // nastavení adresy, odkud se budou z internetu nahrané soubory stahovat (většinou FTP, může být ale i WWW server). Tato adresa se uloží do databáze po nahrání relace spolu s názvem souboru.
Po nastavení konfiguračního souboru spustíme aplikaci souborem tvgrab.exe.
7 UŽIVATELSKÁ PŘÍRUČKA 1. Registrace Neregistrovaný uživatel se musí na počátku zaregistrovat. Uživatel se zaregistruje kliknutím na tlačítko Registrovat na úvodní obrazovce, hned pod formulářem pro přihlášení. Následujícím krokem je nutnost potvrdit licenční a další podmínky, bez kterých nemůže být uživatel zaregistrován. Během registrace se zadávají osobní údaje, heslo, email a kontrolní otázku s odpovědí na tuto kontrolní otázku (viz následující obrázek).
- 46 -
Obrázek 20: registrace nového uživatele
Zde je nutno podotknout, že heslo se musí skládat minimálně ze sedmi znaků a z toho minimálně jeden znak musí být znak, jenž není číslem ani písmenem. Toho se využívá kvůli větší bezpečnosti během přihlašování.
2. TV Program Po přihlášení si uživatel může po kliknutí na odkaz „TV Program“ zobrazit daný televizní program (viz následující obrázek).
- 47 -
Obrázek 21: Televizní program
Zde si může uživatel projít jednotlivé nabídky programů a zaškrtnutím checkboxu , nalevo od dané relace, vyznačit jakou relaci bude chtít nahrát. Po zaškrtnutí zvolených relací stačí kliknout na tlačítko Uložit vybrané položky a dané relace se uloží do databáze. Správné uložení do databáze se signalizuje tím, že se po kliknutí zobrazí zelený nápis Záznamy byly úspešně uloženy.
3. Naplánované úlohy Po kliknutí na odkaz Naplánované úlohy se zobrazí uživateli výpis uživatelem vybraných relací. Seznam bude seřazen podle data a času vybrání a zároveň bude u každé úlohy zobrazen stav, ve kterém se nachází (viz následující obrázek). Pokud se tento stav nachází ve
- 48 -
stavu ceka, tak to znamená že daná nahrávka čeká ve frontě na čas, kdy bude moci být nahrána. Pokud se tento stav nachází ve stavu nahrava se, tak to znamená, že daná nahrávka se právě nahrává. Pokud si uživatel rozmyslel, že danou nahrávku nechce, tak jí může smazat. Zaškrtnutím checkboxu si po levé straně vybere relaci, kterou chce smazat, může jich být i víc a klikne na tlačítko Smazat vybrané položky. Správné vymazání položek je signalizováno zeleným nápisem Úlohy byly úspěšně vymazány.
Obrázek 22: Naplánované úlohy
4. Hotové úlohy Po kliknutí na odkaz Hotové úlohy se zobrazí uživateli výpis uživatelem vybraných relací, které jsou již nahrány (viz následující obrázek). Každá hotová nahrávka je signalizována stavem hotovo. Zároveň se u ní zobrazí odkaz pro stažení. Pro stahování je doporučeno používat program, který umí navázat na přerušené na stahování.
- 49 -
Obrázek 23: Hotové úlohy
5. Nastavení profilu V této sekci si bude uživatel moci změnit své heslo nebo svůj email. Stejně jako při registraci i zde je nutno si dát pozor na to že heslo musí mít minimální délku 7 znaků, kde alespoň 1 znak nesmí být číslici ani písmenem.
Obrázek 24: Nastavení profilu uživatele
- 50 -
8 ZÁVĚR Vize vytvoření webové služby, která dokáže komukoliv odkudkoliv nabídnout nahrávání a správu svých televizních pořadů bez nutnosti hlubší znalosti o nahrávání je opravdu velmi zajímavá a věřím, že časem se rozšíří více do povědomí běžných uživatelů internetu. Ve své bakalářské práci jsem se věnoval tématu, které již nějakou dobu funguje, i když s obtížemi, na půdě studentských kolejí ČVUT. Jedním z důvodů výběru tohoto tématu bakalářské práce je nespokojenost uživatelů s dosavadním řešením, respektive s jeho nestabilitou a špatnou dostupností služby. Ovšem hlavním důvodem je vize dosáhnout stejného výsledku pomocí volně dostupných nástrojů a technologií běžící na naprosto rozdílné platformě. Při návrhu jsem bral mé řešení koncepčně jako zcela nové a v ničem jsem se neohlížel nad současným projektem DVB Grab. Mojí hlavní snahou bylo vytvořit naprosto vlastní řešení jak frontend aplikace, tak backend logiky. Hlavní prioritu jsem během návrhu a vývoje kladl na jednoduchost, flexibilitu a rychlost. Při návrhu řešení, jsem se snažil postupovat od začátku do konce podle definované projektové metodiky RUP (Rational Unified Process). Projekt jsem začal fází zahájení (získání požadavků uživatelů, navržení architektury), poté jsem přešel k fázi rozpracování (use case diagramy, kontextový diagram, plán vývoje) do fáze vývoje frontend a backend aplikace a následně k testování a nasazení celé aplikace. Během vývoje jsem také kladl důraz na návrh kvalitní ergonomie webových stránek, tak aby uživatel mohl pracovat s co nejpřehledněji podanými informacemi a nemusel dlouho hledat potřebné informace, což je také jeden z neduhů dosavadního projektu DVB Grab. Mezi hlavní přínosy této práce vidím možnost nasazení aplikace na větší počet serverů a nabídnout tak službu širšímu spektru uživatelů. Tento fakt plyne z vývoje aplikace pro platformu Microsoft Windows, která je světově nejrozšířenější. Je jasné, že server běžící na UNIX jádře je stabilnější a aplikace na něj se píše snáze než na platformu MS Windows, ale současně se musí počítat s menší znalostí uživatelů systémů UNIX oproti platformě Microsoft Windows. Mezi další přínosy bych rád uvedl fakt, že během vývoje byly použity volně dostupné nástroje a technologie. V oblasti práce s frontend částí projektu vidím jako přínos zejména přehlednou a intuitivní grafické a ergonomické zpracování všech prvků aplikace. Tato vlastnost opět zvyšuje šanci na získání obliby u širšího spektra uživatelů. Celkově shrnuji práci jako velice zajímavou. Během vývoje jsem prohloubil své znalostí v oblastech, jako jsou lokální sítě a přenos multimediálního obsahu po nich, dále jsem se naučil používat T-SQL procedury, což je velice silný databázový nástroj. Mezi další nové zkuše- 51 -
nosti mohu uvést práce v prostředí MS Visual Web Developer, ale hlavně seznámení se technologii ASP.NET, kterou jsem v této práci použil vůbec poprvé. Mým cílem je nadále se rozvíjet v této oblasti a současně obohatit projekt o další součásti jako je například podpora více jazyků, automatické vkládání televizního programu pomocí business inteligence nástroje a nebo podpora ukládání nahrávek v různě komprimovaných formátech.
- 52 -
9 POUŽITÉ ZDROJE 9.1 Seznam literatury [1] Moderní komunikační sítě od A do Z, 2. aktualizované vydání, Autor:Rita Pužmanová, ISBN 80-251-1278-0 [2] ASP.NET 2.0 - Programujeme profesionálně, Autoři: Bill Evjen, Scott Hanselman, Farhan Muhammad, Srin, ISBN 978-80-251-1473-5 [3] Programování na webu - Druhé přepracované a rozšířené vydání, ISBN 8086593363 [4] C# praktické příklady, Autor: Ján Hanák, ISBN 80-247-0988-0 [5] Mistrovství v C++ - 3. aktualizované vydání, Autor: Stephen Prata, ISBN 978-80251-1749-1
9.2 Internetové odkazy [1i] Internetová encyklopedie. www.wikipedia.org [2i] Stránky Microsoft Corporation. www.microsoft.cz [3i] Stránky výrobce VideoLAN Client. www.videolan.com [4i] Stránky Ministerstva Vnitra ČR. Zákon definující způsob šíření audiovizuálních nahrávek. http://www.mvcr.cz/sbirka/2006/sb072-06.pdf [5i] Stránky open-source projektu Pentaho. www.pentaho.com [6i] Stránky s různými návody a tipy na programování. www.codeproject.com [7i] Stránky s různými návody a tipy na programování. www.w3cschools.com [8i] České stránky s různými návody a tipy na programování. www.builder.cz
- 53 -
10 OBSAH CD BP: •
Bakalarska_prace_Pavel_Zrzavy_2008.pdf
BP\installation_files: •
Devcpp-4.9.9.2_setup.exe
•
VWD.iso
•
Dotnetfx
•
SQLEXPR32.EXE
•
vlc-0.8.6c-win32.exe
•
daemon409-x86.exe
•
SQLServer2005_SSMSEE.msi
BP\source_files\database •
Tvgrab.bak
BP\source_files\tvgrab •
Recorder.exe
•
Tvgrab.exe
•
Config.cfg
•
Records.txt
BP\source_files\tvgrab\recorder •
Recorder.cpp
BP\source_files\tvgrab\tvgrab •
Tvgrab.layout
•
Main.o
•
Dbmain.o
•
Sqlcon.o
•
Dbmanip.cpp
•
Makefile.win
- 54 -
•
Main.cpp
•
Dbmanip.hpp
•
Sqlcon.cpp
•
Tvgrab.dev
•
Sqlcon.hpp
•
Header.h
BP\source_files\web\tvgrab •
accept_registration.aspx
•
accept_registration.aspx.cs
•
default.css
•
done_grab.aspx
•
done_grab.aspx.cs
•
error_page.aspx
•
error_page.aspx.cs
•
login.aspx
•
login.aspx.cs
•
menu.aspx
•
menu.aspx.cs
•
planned_grab.aspx
•
planned_grab.aspx.cs
•
profile_setting.aspx
•
profile_setting.aspx.cs
•
program.aspx
•
program.aspx.cs
•
signup.aspx
•
signup.aspx.cs
•
web.config
BP\source_files\web\tvgrab\admin - 55 -
•
admin_grabs.aspx
•
admin_grabs.aspx.cs
•
admin_menu.aspx
•
admin_menu.aspx.cs
•
admin_profile_setting.aspx
•
admin_profile_setting.aspx.cs
•
admin_program.aspx
•
admin_program.aspx.cs
•
admin_program_ct2.aspx
•
admin_program_ct2.aspx.cs
•
admin_program_nova.aspx
•
admin_program_nova.aspx.cs
•
admin_program_prima.aspx
•
admin_program_prima.aspx.cs
•
admin_user.aspx
•
admin_user.aspx.cs
•
default_admin.css
BP\source_files\web\tvgrab\appcode •
DataSet1.xsd
•
DataSet1.xss
BP\source_files\web\tvgrab\images •
Img01.jpg
•
Img01_admin.jpg
•
Img03.gif
•
Img04.jpg
•
Img05.gif
•
Img06.gif
•
Img07.gif
BP\source_files\web\tvgrab\recources •
Cancel.png - 56 -
•
Ct1p.gif
•
Ct2p.gif
•
Edit.png
•
Erase.png
•
Novap.gif
•
Primap.gif
•
Update.png
- 57 -