Softvérové vybavenie systému: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 34: Riadok 34:
  
 
''numpy'' – na matematické výpočty
 
''numpy'' – na matematické výpočty
 +
=== Databázový systém MySQL ===
 +
MySQL reprezentuje slobodný a otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).
 +
 +
MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.
 +
 +
MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a je dostupný aj v komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka "MySQL" je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.
 +
 +
=== Webový server Apache ===
 +
<nowiki>Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a&nbsp;udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a&nbsp;v&nbsp;roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].</nowiki>
 +
 +
Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v&nbsp;repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a&nbsp;širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu ''mod_python''.
 +
 +
 +
=== Modul mod_python ===
 +
Mod_python predstavuje:
 +
 +
* rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a&nbsp;tak serveru umožní vykonávať jeho skripty
 +
* serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v&nbsp;Pythone. Toto rovnako umožňuje aj pre filtre a&nbsp;handleri pripojení.
 +
* Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a&nbsp;máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.
 +
* nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a&nbsp;CGI, z&nbsp;ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb.
 +
 +
Fragment kódu použitej funkcie pre načítanie parametrov z&nbsp;web stránky a&nbsp;odoslanie odpovede serveru Apache:
 +
 +
def handler(req,**params): <nowiki>#názov funkcie ktorú volá metóda POST</nowiki>
 +
 +
req.content_type='text/html' <nowiki>#obsah je typu text/html</nowiki>
 +
 +
req.send_http_header()<nowiki>#požiadavka na odoslanie hlavičky</nowiki>
 +
 +
for name in params.keys(): <nowiki>#načítanie parametrov</nowiki>
 +
 +
if name==‘t1‘:
 +
 +
t1=True
 +
 +
...........
 +
 +
s=““[http://ggaspar.selfip.com/ http://ggaspar.selfip.com]““ <nowiki>#reťazec, ktorý bude odoslaný serveru ako #odpoveď</nowiki>
 +
 +
req.write(s) <nowiki>#zápis odpovede</nowiki>
 +
 +
return apache.OK <nowiki>#ukončenie komunikácie so serverom</nowiki>

Verzia zo dňa a času 15:50, 22. jún 2010

Softvérové vybavenie systému

Softvérové prostriedky

V systéme sú využívané otvorené a slobodné softvérové prostriedky, ktoré sú voľne dostupné a majú obrovskú podporu zo strany vývojárskych komunít a zo strany používateľov. V súčasnosti sú už dostatočne renomované a predstavujú spoľahlivú voľbu.

Programovací jazyk Python

Python je moderný, otvorený a slobodný programovací jazyk vyvinutý Guidom van Rossumom. Umožňuje vytvárať aplikácie omnoho rýchlejšie, ako pri programovaní v tradičných jazykoch ako C, C++ alebo Java. Jazyk je platformovo nezávislý, beží na MS Windows, UNIX/Linux systémoch a aj na systémoch Apple Macintosh. Je vhodný na písanie malých aplikácií alebo skriptov, ale aj pre vývoj veľkých softvérových projektov. Základné vlastnosti jazyka [12]:

  1. výpočtová rýchlosť – vzhľadom na to, že je bajtovo kompilovaný, je Python pomerne rýchly. Je však o mnoho pomalší, ako obdobné programy v C alebo C++. Táto nevýhoda je vo výpočtovo náročných moduloch riešená tak, že časť ich kódu je napísaná v C alebo C++.
  2. rýchlosť tvorby kódu – označuje vyjadrovacie a konštrukčné možnosti jazyka. Python je schopný vykonávať aj pomerne zložité akcie pomocou jednoduchého kódu.
  3. objektová orientácia – objektovo orientované programovanie je dôležité pre takmer každý zo súčasných programovacích jazykov. Python túto požiadavku spĺňa.
  4. GUI – schopnosť implementovať grafické používateľské prostredie je často dôležitá. V Pythone je zabezpečená pomocou modulu TK.
  5. vývojové prostredie – doteraz slabá stránka jazyka Python. Interaktívne prostredie IDLE zatiaľ nemôže konkurovať vývojovým prostrediam iných jazykov.
  6. vhodnosť pre veľké projekty – je ďalším kritériom kvality jazyka; či má jazyk vlastnosti, ktoré podporujú jeho komplexnosť tak, ako program naberá na veľkosti.
  7. dostupnosť knižníc – produktivita písania programu je často závislá od dostupnosti knižníc, v Pythone označovaných moduly. Python má obrovské množstvo kvalitných knižníc na prácu s vedeckými výpočtami, grafikou, databázami, atď.

Realizovaný systém je založený na Pythone vo verzii 2.6.4. Používame moduly:

serial – pre komunikáciu so sériovým rozhraním

MySQLdb – pre komunikáciu s databázou

time – pre prácu s časom

datetime – pre prácu s dátumom

matplotlib – pre tvorbu grafov

image – na úpravu obrázkov

numpy – na matematické výpočty

Databázový systém MySQL

MySQL reprezentuje slobodný a otvorený, viac užívateľský, viacvláknový SQL relačný databázový server. MySQL je vydávaný vo verziách pre viacero platforiem napr. Linux, Windows a jeho podpora je implementovaná vo viacerých programovacích jazykoch ako Python, PHP alebo C++ . Databázový systém je relačný, typu DBMS (database management system). Každá databáza je v MySQL tvorená z jednej alebo z viacerých tabuliek, ktoré majú riadky a stĺpce. V riadkoch sa rozoznávajú jednotlivé záznamy, stĺpce udávajú dátový typ jednotlivých záznamov a pracuje sa s nimi ako s poľami. Práca s MySQL databázou je vykonávaná pomocou takzvaných dotazov, ktoré vychádzajú z programovacieho jazyka SQL (Structured Query Language).

MySQL je populárny pre jeho použitie vo webových aplikáciách a databázových komponentoch LAMP a WAMP platforiem (Linux/Windows-Apache-MySQL-Python/PHP/Perl) a pre jeho nástroje na hľadanie chýb ako Bugzilla, ktoré používajú otvorené zdrojové kódy.

MySQL Server je dostupný ako voľný software pod licenciou GNU General Public License (GPL), a je dostupný aj v komerčnej verzii ako MySQL Enterprise. Ako MySQL serverový software samotný, tak ak klientské knižnice sú distribuované pod dvojakým licencovaním. Užívatelia majú na výber GNU General Public License, ktorú MySQL rozšírila o FLOSS Licenčnú výnimku. Umožňuje v licencii nahradiť licencovaný software nahradením MySQL klientských knižníc inými OSI kompilátmi s licenciou Open Source, ktoré nie sú v zhode s GPL. Zákazníci ktorí si neželajú podmienky GPL si môžu zakúpiť zvláštnu licenciu. Podobne ako mnoho iných open-source programov, značka "MySQL" je chránená obchodnou známkou a môže sa použiť výhradne s povolením držiteľa práv.

Webový server Apache

Apache je otvorený webový server hrajúci kľúčovú úlohu od začiatku rozvoja siete Internet. Je vyvíjaný a udržiavaný komunitou vývojárov zastrešených pod Apache Software Foundation. Aplikácia je dostupná pre široký výber operačných systémov ako UNIX, GNU Linux, FreeBSD, Mac OS X, Windows. Od roku 1996 je Apache najrozšírenejší http server a v roku 2010 bol Apache nainštalovaný na 54,46% všetkých webových serverov [9].

Pre túto prácu bol Apache zvolený kvôli svojej dostupnosti v repozitároch hosťovského systému GNU Linux – Ubuntu 9.10 Karmic Koala, pre svoju jednoduchú konfigurovateľnosť a širokú podporu komunity. Najdôležitejšou skutočnosťou pre voľbu tohto web servera je možnosť doňho priamo implementovať interpreter jazyka Python pomocou modulu mod_python.


Modul mod_python

Mod_python predstavuje:

  • rozširujúci modul webového servera Apache, ktorý do servera zakomponuje interpreter jazyka Python, a tak serveru umožní vykonávať jeho skripty
  • serverový handler častí požiadavky, umožňujúci, aby bola ktorákoľvek časť požiadavky implementovaná v Pythone. Toto rovnako umožňuje aj pre filtre a handleri pripojení.
  • Rozhranie pre podmnožinu Apache API umožňujúce volať interné funkcie Apache z Pythonu. Toto poskytuje prístup k interným informáciám servera a máme možnosť využiť funkcie servera Apache, napríklad prístup k logom.
  • nástroje pre vývoj webových aplikácií. Poskytuje súbor štandardných handlerov: Publisher, PSP a CGI, z ktorých každý má alternatívny vývojový framework, rovnako ako súbor objektov a funkcií pre spracovanie cookies, session management a ďalšie úlohy bežné pri programovaní webových služieb.

Fragment kódu použitej funkcie pre načítanie parametrov z web stránky a odoslanie odpovede serveru Apache:

def handler(req,**params): #názov funkcie ktorú volá metóda POST

req.content_type='text/html' #obsah je typu text/html

req.send_http_header()#požiadavka na odoslanie hlavičky

for name in params.keys(): #načítanie parametrov

if name==‘t1‘:

t1=True

...........

s=““http://ggaspar.selfip.com““ #reťazec, ktorý bude odoslaný serveru ako #odpoveď

req.write(s) #zápis odpovede

return apache.OK #ukončenie komunikácie so serverom