marți, 8 octombrie 2013

Un exemplu de utilizare a programului GNU parallel

1. Începutul

În data de 29 septembrie 2013, la Bălți, s-a desfășurat „Ziua Libertății Programelor și 30 de ani de GNU”. Evenimentul a fost organizat de Fundația Ceata (http://ceata.org) și sprijinit de Universitatea de Stat "Alecu Russo" din Bălți (http://www.usarb.md). Programul evenimentului poate fi găsit la adresa http://ceata.org/evenimente/zlp-2013-%C8%99i-30-de-ani-de-gnu-%C3%AEn-b%C4%83l%C8%9Bi.html. Țin să precizez că Bălți nu a fost unicul oraș în care Fundația Ceata a organizat evenimente legate Ziua Libertății Programelor. Au fost de tot șase orașe.  Mai multe detalii le puteți găsi în comunicatul oficial al Fundației Ceata.

Cine s-a săturat de citit poate să privească fotografiile de la evenimentul din Bălți, https://albume.ceata.org/index.php?/category/118.

2. GNU Parallel (și GNU Stow)

Reiese așadar din denumirea evenimentului că trebuia să se fi vorbit mult despre GNU. Așa și a fost. S-a vorbit despre GNU Hurd, despre programele făcute de cei de la GNU, în special, de Emacs, de GNU Core Utilities etc. Eu am vorbit despre GNU Prallel și GNU Stow (http://www.slideshare.net/vundicind/gnu-parallel-i-gnu-stow). Apropo prezentarea de pe slideshare.net este pusă la dispoziţie, cu toate că nu este specificat pe primul diapozitiv a prezentării, sub Licenţa Atribuire - Distribuire-în-condiţii-identice 3.0 Ne-adaptată (CC BY-SA 3.0).

Am vorbit despre metode de instalare a GNU parallel, am dat exemple de utilizare combinată cu programul grep, am explicat cum poate fi controlat  numărul de procese paralele  și în final am prezentat un contraexemplu (un caz în care executarea sarcinilor în paralel înrautățește lucrurile). N-am reușit însă să prezint un alt exemplu. Un crawler web realizat în întregime doar prin comenzi GNU/Linux și care face interogările către server în paralel. Nu l-am prezentat pentru nu-l aveam finalizat atunci. Acum după cîteva săptămîni am găsit totuși timp și l-am data gata.

 3. Crawler web care folosește GNU parallel și nu doar GNU parallel

Am fost inspirat de exemplul de crawler web din manualul programului GNU parallel. Crawlerul realizat de mine este la fel un script shell care l-am numit „pwspell” (pe lung ar fi „Parallel Web Spell Checker”) adică un crawler care mai și verifică ortografia paginilor vizitate. Script-ul poate fi descărcat de pe Github.com(https://github.com/vundicind/pwspell). Proiectul pe Github conține trei fișiere: script-ul și două fișiere text. Fișierul README_ro.md conține indicații, în română, pentru instalare (pachete adiționale) și rulare.

Script-ul face ceea ce am scris mai sus că face, dar mai este de lucru la el. De exemplu, dacă textele în website conțin literele „ț” și „ș” cu sedilă (redactate din Windows XP) atunci toate cuvinte cu aceste două litere vor fi considerate greșite de pwspell. Acest fapt se datorează lui aspell (programul utilizat de crawler pentru verificarea ortografiei) în dicționarele căruia se folosesc „ț” și „ș” cu virgulă (cum e corect).

Pentru mine acest script are o importanță mai mult didactică decît funcțională. Crawler-ul este un exemplu netrivial de utilizare combinată de comenzi GNU/Linux, un exercițiu de scriere de script-uri shell reușit.

Niciun comentariu:

Trimiteți un comentariu