% $Id: resenitechnologie.tex,v 1.1 2007/01/18 22:20:30 jarda Exp $


Následuje krátký popis použitých technologií a programů, který uvede do problému
případného čtenáře, který s nimi není zcela obeznámen.


\subsection{Linux a FreeBSD}

Operační systém Linux je systém unixového typu založený z velké části na
základech a předpokladech unixové odnože SYSTEM V. Tento operační systém
je velmi populární pro svoji dostupnost zdarma, ale firemní sféra s oblibou
používá tzv. enterprise řešení od velkých firem typu RedHat, SUSE nebo IBM.
Linux (konkrétně distribuci Gentoo) jsem používal jako vývojovou a referenční 
platformu. Výhodou je, že distribuce Linuxu obsahují přímo po instalaci nebo
po snadném doplnění díky tzv. balíčkovacím systémům všechny programy a knihovny,
které jsem k vývoji aplikace potřeboval.

{\odstavec
Operační systém FreeBSD patří do unixové větve BSD. Tento operační systém je rovněž
k dispozici zdarma, ale za poněkud odlišných licenčních podmínek. Systém má
menší podporu dodavatelů hardware a software než Linux, je ale ceněný pro svoji
stabilitu a kvalitní návrh. Operační systém FreeBSD spuštěný ve virtuálním
prostředí, byl cílovým systémem nasazení mé aplikace. Ukázalo se, že z hlediska
aplikačního programátora jsou rozdíly oproti Linuxu zanedbatelné.
}


\subsection{Databázový systém PostgreSQL}

PostgreSQL je volně dostupný relační databázový systém s vysokým výkonem v náročnějších
aplikacích, kvalitní podporou SQL standardů a vysokou flexibilitou. Za zmínku stojí:

\begin{description}

\item[Podpora transakcí] Transakce jsou plně podporovány - vyhovují požadavkům ACID (atomicita,
    konzistence, izolace, izolace, trvalost)

\item[Rozšiřitelnost] Funkcionalitu databáze lze rozšiřovat pomocí široké škály
    podporovaných jazyků.  PostgreSQL obsahuje jazyk PL/pgSQL, který vychází z
    PL/SQL firmy Oracle. Široce používané jazyky jako C, C++ nebo Java jsou
    podporovány rovněž. Ze skriptovacích jazyků lze použít například Python,
    Perl nebo Scheme.

\item[Podpora triggerů a uložených procedur] Všechny jazyky použitelné pro rozšíření funkcionality
    PostgreSQL mohou být použity pro použití ve vnořených procedurách a triggerech.

\item[Dobrá spolupráce s operačním systémem] Databáze umožňuje využívat uživatelské účty
    operačního systému; kromě klasického internetového TCP/IP spojení je možné na lokálním
    počítači využít unixové sockety.
        
\end{description}

\subsection{HTTP server Apache}

{ \odstavec
Databázový server Apache je v současné době nejpoužívanější HTTP server.
Podle serveru netcraft.com používaly koncem roku 2006 servery dostupné pod více
než 60\% doménových jmen právě server Apache.

Umožňuje snadnou konfiguraci, poskytuje vysoký výkon a podporuje celou řadu
technologií pro vytváření dynamických webových aplikací.

Apache umožňuje konkurenční obsluhu klientských požadavků, založenou na systému
více vláken nebo více procesů.

Pomocí různých modulů je možno přidávat různé metody autentizace (např. pomocí MD5 hashování, 
pomocí databáze), podporu dalších protokolů (WebDav), podporu šifrovaného spojení (SSL, TLS),
podporu vyvažování zátěže, přepisování URL apod. Moduly slouží i pro podporu dynamických technologií
- protokol CGI, dynamické stránky tvořené jazyky PHP, Perl, Python apod.
}


\subsection{Jazyk PHP}

{ \odstavec
Jazyk PHP byl navržen speciálně pro vytváření dynamických webových stránek a jeho
nasazení je skutečně nejčastější v této oblasti.

PHP má širokou podporu databázových systémů, umožňuje snadnou práci s řetězci, soubory,
umožňuje spouštění různých programů a mnoho jiných užitečných činností.

Z pohledu vývojáře webové aplikace mezi nejzajímavější vlastnosti patří:
}

\begin{itemize}

\item Efektivní možnosti vkládání obsahu proměnných do řetězců.

\item Snadný přístup k datům poslaných z formulářů - tzv. superglobální proměnné
    \$\_GET, \$\_POST.

\item Snadná práce s cookies - cookies patří k hlavním prostředkům, které umožňují
    překonat problém nestavovosti HTTP protokolu.

\item Podpora relací - relace nabízejí možnost, jak zajistit kontinuitu identifikace
    uživatele na serveru.
        
\end{itemize}

PHP umožňuje psát objektově orientované programy založené na klasickém
modelu třída - instance třídy, má podporu dědičnosti, kontrolu přístupu k
atributům a metodám objektů. 

\subsection{Jazyk Python}

{ \odstavec

Jazyk Python umožňuje psát multiplatformní dynamické programy založené
na principech objektového a funkcionálního programování. Programátor je nucen
do jisté míry dodržovat základní kódovací styl - odsazování kódu má sémantické
důsledky. K výhodám Pythonu patří:

}

\begin{itemize}

\item Podpora násobné dědičnosti.

\item Efektivní metody zpracování dat typu iterátorů a generátorů.

\item Vysoká dynamičnost vycházející mimo jiné z možnosti dynamického importu modulů,
    jejich aktualizace za běhu, možnosti získávat pomocí řetězce obsahujícího jméno
    atributy modulů, tříd, instancí apod.

\item Možnost definování standardních operací pro uživatelsky definované třídy.

\item Velké možnosti reflexe - zkoumání existujích objektů a jejich vazeb za běhu programu.

\item Možnost ladění programu v interaktivním interpreteru.

\item Množství knihoven pro nejrůznější oblasti použití - mnohé z nich jsou k dispozici
    v základní instalaci.
    
\end{itemize}

{ \odstavec
V dnešní době je jazyk Python nasazován v širokém spektru oblastí od náhrady
složitějších skriptů unixového shellu přes GUI aplikace až po dynamické webové stránky.

Ve své práci používám programy v jazyce Python běžící z příkazové řádky. Z tohoto
hlediska bych chtěl vyzvednout tyto vlastnosti:
}

\begin{itemize}

\item Snadný přístup k parametrům příkazové řádky.

\item Snadné zpracování voleb příkazové řádky.

\item Snadná práce se soubory.

\item Podpora klasických posixových konstrukcí - práce s procesy apod.
    
\end{itemize}

% vim:enc=iso8859-2:fenc=iso8859-2:syntax=tex:
