Úvod
V tomto dílu si představíme projekty z oblasti Perlu (můj nejoblíbenější programovací jazyk). Nejvíce se budeme věnovat perlovské knihovně webaa mojí diplomce ninvent. Dále si krátce ukážeme program pro teletext ttweb a nakonec jednoduchý skript cdbackup.pl, který provádí jednoduché zálohování na CD-R(W).
weba
Weba je sada spolupracujících knihoven určených pro jednodušší vytváření menších web aplikací. Zatím jsou nad touto knihovnou vytvořeny pouze dva projekty: ninventa langlear.
Pár vět o historii této knihovny snad nikoho nezabije. Původně existoval pouze ninvent (jako moje diplomka), ovšem před rutinním nasazením v ní bylo potřeba udělat několik změn. Jenže mně se toho nelíbilo víc, a tak jsem se rozhodl ji přepsat téměř od základu. Přesně v době, kdy jsem měl přeprogramovaný základ, jsem si vymyslel langlear. Dvakrát to samé se mi dělat nechtělo, a tak jsem vzal kopii ninventu a přejmenoval ji na langlear. Časem z obou projektů vykrystalizovala knihovna weba, poněvadž spravovat stejný kód ve dvou různých projektech byla dost zbytečná práce.
Pohled dovnitř
Weba obsahuje v současné chvíli tyto moduly:
Auth | autentizace a autorizace uživatelů (řízení přístupu). |
Config | zpracování konfiguračního souboru. |
DB |
přístup k SQL serverům a zpracování SQL dotazů. |
Error | zpracování chybových, varovných a informačních hlášení. |
HTML |
funkce související s HTML jako čtení parametrů z URL, |
Init |
inicializace knihovny, před použitím je potřeba |
Locale |
pomocí gettextu je možné jednoduše webovou aplikaci |
Menu |
generování nabídky na základě konfiguračního souboru |
Session | jednoduché rozhraní pro práci se sessions. |
Template |
možnost vytváření šablon s podporou lokalizace (gettext) |
Dokumentace je pouze vývojářská v podobě manuálových stránek popisujících jednotlivé funkce, je to hodně strohé, ale aspoň něco. Jsou psány v angličtině, které se musím hluboce omluvit za to, co jsem na ní spáchal.
Knihovna weba je sada spolupracujících modulů, například pro generování menu je potřeba načíst konfigurační soubor a na základě šablon vygenerovat tabulku. Zpracování šablony se zase neobejde bez lokalizace. Při tom všem je relativně malá a díky šablonám přehledná.
Další vývoj
Plánů je mnoho, času málo, a tak se weba rozšiřuje jen v případě nutnosti. To je ovšem málo, proto uvítám jakoukoliv spolupráci (to asi každý vývojář). Ideou je vytvořit prostředí pro vývojáře webovských aplikací pro Perl. Když jsem začínal vyvíjet ninvent, díval jsem se na ostatní projekty, a buď byly příliš složité a obsáhlé, nebo zas příliš jednoduché. A tak jsem si naprogramoval vlastní :-). Nyní by bylo fajn udělat nějakou podporu pro kaskádové styly.
Ninvent
Jestliže weba se ještě nějak vyvíjí, pak ninvent je na tom hodně špatně. Což je důvod, proč jej dávám totálně rozvrtaný (rve mi to srdce) na odiv a doufám, že to někoho chytne.
Původní zadání práce znělo „Síťový inventář“, což moc neříká. Jedná se o to, že už při středně velkých sítích ztrácíte přehled o tom, kde máte jaké zařízení. Jste ještě schopni říci, že někde máte nějaký switch, protože se na něj můžete přihlásit. Ale problém je v tom, že nevíte, kde máte jaký hub, převodník, jak se kde jmenuje jaká zásuvka ve zdi a co je k ní připojeno a kam je připojena ta zásuvka. Pokud máte dokumentaci, obrázky a všechno nějak udržujete, tak to jde. Pak je možnost vstát ze židle a jít se podívat, ale to také není ono. A tak by bylo fajn mít někde nějakou aplikaci, ve které to budu udržovat a která mi dokáže pak vyhledat třeba všechny zásuvky připojené na daný switch nebo všechny, na kterých je stroj v nějaké podsíti, či najít fyzickou cestu (tedy kudy tečou kabely) mezi dvěma zařízeními.
Nejvíce podobný projekt je LanDB, ovšem s mnoha nedostatky. Z důvodu přístupnosti z libovolného místa (a relativně i z libovolného zařízení) byl zvolen přístup přes Web. Protože se ve výsledku manipuluje hodně s textovými daty různých formátů, byl zvolen programovací jazyk Perl. K tomu také vedlo to, že Perl má velmi mnoho „síťařských“ knihoven, které se mohou hodit (snmp, telnet, tcp/udp spojení, tftp a další).
Pohled dovnitř
Z historie weby jste už zjistili, že tento projekt právě prodělává dost bolestivou reinkarnaci. Za téměř hotový považuji databázový návrh, podle kterého by se měl další vývoj řídit. Prakticky vše, co je výše popsáno, tam není, ale mělo by tam být. K tomu ještě další zajímavé věci jako scan počítače, stažení/uložení konfigurace switche protokolem tftp, nahrání dat o síti z nějakého rozumného formátu a další maličkosti.
Ttweb
Jednou jsem potřeboval vidět teletext (konkrétně televizní program) i z jiného počítače, než je ten, co v něm mám televizní kartu. Bylo to sice jen o pokoj vedle, ale kdo by přecházel. Řešení vzdáleně přeladit televizi a přes X protokol si zobrazit kýžený teletext mě moc neuspokojovalo. A také, kdo měl na to čekat, než se stránky teletextu načetly. Tudíž jsem si řekl, že chvilka programování (která se protáhla na delší večer) nikomu neublíží, a tak vznikl ttweb.
Projekt je rozdělen na dva programy, které používají jeden konfigurační soubor (což je vlastně kus perlovského kódu s definicemi proměnných). První program se pouští někdy ráno cronem a má za úkol stáhnout všechny dostupné teletextové stránky a uložit je. Druhý program je cgi-skript, který stránky teletextu zobrazuje a umožňuje v nich listovat.
Je to vcelku jednoduché, rychlé a dostupné. Také nemusíte přelaďovat, pokud si něco na teletextu chcete přečíst. Nyní používám teletextový prohlížeč jen v případě, že chci něco aktuálního jako stav nějakého sportovního utkání.
cdbackup.pl
V nějakém článku jsem kdysi četl, že uživatelé se dělí do dvou kategorií: ti, co přemýšlejí, jak zálohovat, a ti, co už zálohují. Tento opravdu jednoduchý skript (opět v Perlu) by měl pomoci k přechodu do druhé kategorie. Na základě konfiguračních souborů sestaví archiv, který utilitou cdbackup
uloží na CD-R(W) médium. Spíše doporučuji CD-RW médium, protože když není dost místa, tak jej smaže a začne ukládat znova.
Pokud si ve vypalovačce zajistíte, že tam budete mít stále jedno médium a nastavíte cron, hned se vám bude lépe spát.
Není to dokonalé, ale na pracovní stanici dostačující, pokud na zálohování máte jen pár desítek mega (což jsou konfigurační soubory, vlastní dokumenty a programy), tak je to skvělý jednoduchý způsob zálohování. K obnovení zálohy se použije program cdrestore
z utility cdbackup
.
Účinkovali
- weba – aplikační web knihovna
- apache s mod_perl modulem
- rozhraní pro MySQL server
- gettext a locales pro větší přítulnost
- libtexttemplate-perl, knihovna na šablony v perlu
- ninvent – síťový inventář
- landb jakožto zdravá konkurence
- ttweb – teletext na webu
- xawtv pro ladění televizních kanálů
- alevt na snímání teletextových stránek
- cdbackup.pl – jednoduché zálohování
- cdbackup jako nástroj pro archivaci
- cdrecord pro uložení archivů