Posted on Apr 26, 2018 | 0 comments

Una dintre cele mai folositoare și inovatoare facilități pe care le-am văzut vreodată într-un sistem de operare sunt atributele extinse din BeOS și actualul Haiku. Aparte de clasicele atribute specifice (Read, Write, eXecute) din DOS/Windows și sistemele de operare POSIX-compliant precum Linux, *BSD, QNX, Solaris, încă de prin 1998 BeOS avea atribute extinse fixe sau maleabile, toate editabile. Așa se făcea că puteai să ai un fișier JPG care pe lângă atributele rwx să aibă alte atribute precum ”comentarii” sau ”număr de culori” sau ”dimensiune poză”. Repet: ca atribute, nu ca și facilități oferite de un anumit program; ceea ce înseamnă că odată setate atributele acestea customizate, ele erau accesibile sistem-wide de către orice program BeOS și de către sistemul de operare în sine. O chestie tare mișto care a dat naștere la aplicații interesante ce făceau uz de atribute extinse.

Mai important, atributele nu ocupau spațiu în fișier, ele fiind reținute la nivelul unui index central. Așa că puteai crea un fișier gol de 0 bytes căruia să-i pui câte atribute doreai. Aplicația ”Persons” de exemplu folosea exact chestia asta: avea create câteva fișiere de 0 bytes fiecare pe care dacă dădeai click programul le deschidea și le afișa doar atributele: Nume, Prenume, număr de telefon, e-mail, adresă și alte date de contact. Desigur, atributele extinse fiind o facilitate oferită exclusiv de kernelul BeOS, acestea se pierdeau la transferul în alte sisteme de operare fiind interpretabile doar de către Tracker-ul din BeOS. Așa că trebuia să arhivezi în ZIP fișierele cu atribute extinse dacă voiai să le pasezi pe alt tip de partiție care nu era BFS.
A doua facilitate folositoare de care mi-e dor și aș vrea s-o văd și-n Linux e reprezentată de sistemul de query-uri. După cum îi spune și numele, un query e o căutare. Când căutai un fișier în BeOS sau Haiku rezultatele nu doar că erau afișate instant de GUI-ul Find-ului sau de linia de comandă (grație unui sistem de preindexare extrem de rapid și gentil cu resursele) dar rezultatele acelei căutări erau salvate ca atribute extinse în fișiere cu filetype de tip ”query”. Așa că după ce făceai o căutare complicată după – să zicem – fișiere JPEG nu mai mari de 3MB, create înainte de data de, al căror filename să conțină string-ul cutare și al căror atribut extins customizat să includă o descriere a imaginii cu anumite cuvinte-cheie, se salva în /home/queries un fișier de 0 bytes cu căutarea respectivă. Fișier pe care dacă dădeai click peste doi ani nu doar că afișa instant (și mă refer INSTANT) rezultatele căutării specifice dar le afișa actualizate la zi. Și mai important, un query putea fi definit/executat și din linie de comandă, avea un câmp editabil pentru formule, ceea ce automat ducea la posibilitatea creării de scripturi interesante.

Luai de exemplu un fragment de query precum
 
(((((MAIL:from==”*[cC][lL][aA][rR][aA] [bB][oO][tT][tT][eE][rR][sS]*”)
&&(MAIL:when>=%2 months%))
&&(MAIL:subject==”*[vV][iI][bB][rR][aA][pP][hH][oO][nN][eE]*”))
||(MAIL:subject==”*[sS][kK][eE][pP][tT][iI][cC][aA][lL][iI][tT][yY]*”))
&&(BEOS:TYPE==”text/x-email”))

și-l modificai manual în
 
(((((MAIL:from==”*[rR][a][z][v][a][n]*”)
&&(MAIL:when>=%6 years%))
&&(MAIL:subject==”*[cC][uU][rR][sS]*”))
&&(BEOS:TYPE==”text/x-email”))
 

Apoi puteai face scripturi care să efectueze căutări după diferite criterii sau care să jongleze cu atributele extinse.


Citisem acum mulți ani că Solaris experimentase cu un tip de partiție care suporta atribute extinse. Nu știu ce s-a ales de proiect dar în prezent doar Haiku și al lui BFS mai știe face chestii de-astea.