Seznamte se, přichází weba, ninvent a další

18. 9. 2003
Doba čtení: 6 minut

Sdílet

Na mém disku už delší dobu žijí projekty, které by chtěly poznat také svět na jiných počítačích. A to jak z toho důvodu, že je škoda ležet jenom na jednom počítači, tak také doufají, že jejich vývoj bude takový, jaký si zaslouží. Takže neváhejte a seznamte se.

Ú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:

Tabulka č. 493
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ů.
Dále obsahuje další zajímavé funkce v souvislosti
s databázemi. V současné době testováno pouze
proti MySQL.

Error zpracování chybových, varovných a informačních hlášení.
HTML

funkce související s HTML jako čtení parametrů z URL,
kompilace jednotlivých částí výsledné stránky a
další.

Init

inicializace knihovny, před použitím je potřeba
provést některé úkony (vyčistit globální data
apachovského modulu mod_perl), či zavolat
vlastní inicializační funkce.

Locale

pomocí gettextu je možné jednoduše webovou aplikaci
udělat ve vícejazyčných mutacích.

Menu

generování nabídky na základě konfiguračního souboru
nebo požadavku skriptu.

Session jednoduché rozhraní pro práci se sessions.
Template

možnost vytváření šablon s podporou lokalizace (gettext)
a skriptováním (perl). Založeno na perlovské knihovně
texttemplate.


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.

bitcoin_skoleni

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
apachemod_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ů

Autor článku