On Fri, 25 Jul 2003, zavandi wrote:
> Ar putea exista fisiere de backup. Din nou, problema nu e ideea de
> registry, ci implementarea.
Iata mai jos cateva motive:
1) De multe ori, fisierele de configurare text din Unix nu sunt doar linii
de forma:
cheie = valoare
ci au o structura mai completa, semanand mai mult cu un fel de limbaj de
programare. De exemplu, o directiva din httpd.conf
<IfModule modul1.c>
modul1_optiune1 aaa
modul1_optiune2 bbb
<IfModule modul2.c>
modul2_optiune1 aaa
modul2_optiune1 aaa
</IfModule>
</IfModule>
Sau alt exemplu din /etc/pcmcia/ide.opts:
# ATA/IDE drive adapter configuration
# The address format is "scheme,socket,serial_no[,part]".
# For multi-partition devices, first return list of partitions in
# $PARTS. Then, we'll get called for each partition.
case "$ADDRESS" in
*,*,*,1)
#INFO="Sample IDE setup"
#DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
#FSTYPE="msdos"
#OPTS=""
#MOUNTPT="/mnt/ide"
;;
*,*,*)
#PARTS="1"
# Card eject policy options
NO_CHECK=n
NO_FUSER=n
;;
esac
2) Alteori, fisierele de configurare pot contine expresii regulate, pe
care le poti "sparge" in mai multe linii, etc. Exrpesiile regulate sunt niste
mecanisme foarte puternice, dar prin natura lor sunt mai mult text-based
decat GUI-based. Exemplu din `man procmailex`:
Forward all mail from peter about compilers to william (and keep a copy
of it here in petcompil).
:0
* ^From.*peter
* ^Subject:.*compilers
{
:0 c
! [EMAIL PROTECTED]
:0
petcompil
}
(in paranteza fie spus, dupa parerea mea puterea si flexibilitatea lui
procmail nu se compara cu nici un GUI de mailer din lume).
3) Uneori, vrem sa facem disable la anumite optiuni fara sa stergem
valorile unei anumite chei. Sa presupunem ca intr-o aplicatie avem o
valoare care reprezinta coordonatele unei anumite ferestre in forma
"x1,y1,x2,y2": Intr-o interfata GUI legata la un registry, aceste valori
iti apar intr-un field. Nu le poti comenta, doar sterge. Intr-un fisier de
configurare text le poti comenta si deci pastra dezactivate.
4) Comentarii. Comentariile sunt de foarte mare ajutor si mai mult, se
alfa localizate nu in nu stiu ce fisiere de help cu chiar impreuna cu
"cheia" in sine, exact in locul cel mai potrivit: in fisierul de
configurare
5) Alt motiv ar fi intuivitatea: este mult mai simplu sa iti amintesti sau
sa deduci cam pe unde se afla un fisier de configurare, decat sa tii minte
exact cheia din registry. Stii ca fisierele de configurare se afla prin
/etc, cauti un fisier care incepe cu numele aplicatiei care nu porneste,
si apoi citind si comentariile din el, poti deduce ce nu ar merge. Ce este
intuitiv aici: HKLM\Software\CLASSES\exefile\shell\open\command ->
"default REG_SZ \"%1\" %* "?
6) Rescue: in caz de dezastru, este mult mai simplu sa faci un mediu de
rescue (de exemplu un CD bootabil) care sa aiba un bootloader, un shell si
un editor de text cu care sa modifici fisierele de configurare text (daca
asta e cauza), decat sa iti faci un mediu de rescue grafic (drivere, etc),
numai pentru regedit.
7) Poti cauta in anumite/toate fisierele de configurare cu grep, care este
o unealta de cautare _mult_ mai puternica decat rudimentarul find. Fie si
numai pentru ca grep suporta, asa cum ii spune si numele, expresii
regulate
8) Referinte. De multe ori in fisierele de configurare apar variabile
globale. De exemplu:
DownloadDir = $HOME/downloads
In windoze parca exista %variabila% sau cam asa ceva. Dar ia incearca sa
faci urmatoarea modificare in registri: "Program Files" sa se cheme
"Applications". Am incercat eu asta pe un Windoze98 cu multi ani in urma
si am avut nevoie de vreo 4 ore de sapaturi in registri ca sa inlocuiesc
stringul "Program Files" in vreo mie de locuri.
9) SPOF. Single point of failure. A gresi e omeneste si e mult mai usor sa
gresesti stergand intreg registry-ul, decat stergand o multime de fisiere
de configurare.
10) Majoritatea admnilor prefera modul text pentru administrare (vorbim
aici inclusiv de cel mai eficient mod de remote admin: ssh), si este mult
mai simplu sa folosesti un editor text decat o aplicatie text-mode cu
tree-view, etc).
11) Totul este la vedere. Registrii sunt un foarte bun loc de a ascunde
functionalitati. Sa iti dau urmatorul exemplu: vrea ca pe desktop-ul lui
Windoze sa am un icon (de folder) care cand se da dublu click pe el imi
deschide un anumit folder: C:\cale. Atentie, nu vreau shortcut! Si nu
vreau ca folderul respectiv sa fie subfolder de-al lui Desktop! Vreau un
fel de icon "My Document" creat de mine. Tin minte ca am sapat o multime
si nu am reusit. Desi tehnic se poate. Formatul binar nu se potriveste cu
filosofia free software: "totul la vedere".
Cu multi ani in urma, pe cand incepeam sa ma joc cu C++ si descopeream
Linux-ul (si eram la etapa entuziasta a re-inventarii rotii de unul singur
:-) ), am incercat sa fac eu un fel de registry-settings system pe Linux.
Desi il facusem sa mearga pana la urma, experienta acumulata ca admin m-a
convins ca fisierele text sunt cea mai _comoda/intuitiva_ solutie.
Iar ca programator nu e mare diferenta, pentru ca si pentru fisierele text
de configurare exista librarii gata scrise pentru parsare, deci a folosi
registri sau fisiere text nu implica diferente de efort de programare prea
mari. Dimpotriva, riscul ca aplicatia in faza de development sa altereze
intreg registry-ul este inexistent.
Si in final, inca un argument. Dupa atatia ani de fisiere binare, formatul
pentru schimbul de date care se impune este XML, care este text-based.
Tocmai datorita faptului ca oamenilor le va veni intotdeauna mai usor sa
"parseze" vizual text decat sa fie dependenti de nu stiu ce utilitare
obscure pentru a intelege formatul unor date.
Ave,
Radu
--
Radu Filip
Network Administrator @ Technical University of Iasi
[EMAIL PROTECTED] Information Technology and Communication Center
http://socrate.tuiasi.ro/ [EMAIL PROTECTED] | http://ccti.tuiasi.ro/