Provided by: manpages-ro_4.27.0-1_all bug

NUME

       procmailsc - tehnică de punctare ponderată procmail

SINOPSIS

       [*] w^x condiție

DESCRIERE

       Pe  lângă  condițiile  tradiționale de tip adevărat sau fals pe care le puteți specifica pentru o rețetă,
       puteți utiliza o tehnică de punctare ponderată pentru a decide dacă o anumită rețetă  se  potrivește  sau
       nu.  Atunci  când  se  utilizează  punctarea  ponderată într-o rețetă, atunci punctajul final pentru acea
       rețetă trebuie să fie pozitiv pentru ca aceasta să se potrivească.

       O anumită condiție poate contribui la punctaj dacă i se alocă o „pondere” (w) și un „exponent” (x). Acest
       lucru se face precedând condiția (pe aceeași linie) cu:
              w^x
       Întrucât atât w, cât și x sunt numere reale cuprinse între -2147483647,0 și 2147483647,0 inclusiv.

Condiții de expresie regulată ponderată

       Prima dată când expresia regulată este găsită, se va adăuga w la punctaj. A doua oară când  este  găsită,
       se va adăuga w*x. A treia oară când este găsită, se va adăuga w*x*x. A patra oară se va adăuga w*x*x*x*x.
       Și așa mai departe.

       Acest lucru poate fi descris prin următoarea formulă concisă:

                                   n
                   n   k-1        x - 1
              w * Sum x    = w * -------
                  k=1             x - 1

       Reprezintă punctajul total adăugat pentru această condiție în cazul în care se găsesc n potriviri.

       Rețineți că se pot face următoarele distincții între cazuri:

       x=0     Doar prima potrivire va contribui cu w la punctaj. Orice potriviri ulterioare sunt ignorate.

       x=1     Fiecare  potrivire  va  contribui  cu  același  w  la scor. Punctajul crește liniar cu numărul de
               potriviri găsite.

       0<x<1   Fiecare potrivire va contribui mai puțin la punctaj decât cea precedentă. Punctajul se va apropia
               asimptotic de o anumită valoare (a se vedea secțiunea NOTE de mai jos).

       1<x     Fiecare potrivire va contribui mai mult la punctaj decât  cea  precedentă.  Punctajul  va  crește
               exponențial.

       x<0     Poate fi utilizată pentru a favoriza un număr par sau impar de meciuri.

       În  cazul în care expresia regulată este negată (adică se potrivește dacă nu este găsită), atunci n poate
       fi, evident, fie zero, fie unu.

Condiții de program ponderate

       Dacă programul returnează un cod de ieșire de EXIT_SUCCESS (=0), atunci scorul total  adăugat  va  fi  w.
       Dacă returnează orice alt cod de ieșire (care indică un eșec), punctajul total adăugat va fi x.

       În cazul în care codul de ieșire al programului este negat, atunci codul de ieșire va fi considerat ca și
       cum  ar  fi  un număr virtual de potriviri. Calcularea punctajului adăugat se face ca și cum ar fi fost o
       expresie regulată normală cu n=„cod-de-ieșire” potriviri.

Condiții de lungime ponderată

       Dacă lungimea corespondenței actuale este M, atunci:

              * w^x > L

       va genera un punctaj suplimentar de:

                         x
                  /  M  \
              w * | --- |
                  \  L  /

       Și:

              * w^x < L

       va genera un punctaj suplimentar de:

                         x
                  /  L  \
              w * | --- |
                  \  M  /

       În ambele cazuri, dacă L=M, acest lucru va adăuga w la punctaj. Cu toate acestea, în primul caz,  vor  fi
       favorizate  mesajele  mai mari, iar în cel de-al doilea caz vor fi favorizate mesajele mai mici. Cu toate
       că x poate fi modificat pentru a regla cu exactitate gradul de abatere al funcției, în  mod  obișnuit,  x
       este stabilit la 1.

DIVERSE

       Puteți  interoga  punctajul  final  al tuturor condițiilor unei rețete din variabila de mediu $=. Această
       variabilă este definită întotdeauna imediat după ce procmail a  analizat  toate  condițiile  unei  rețete
       (chiar dacă rețeta nu este în curs de execuție).

EXEMPLE

       Următoarea  rețetă  va  elimina toate mesajele care au mai mult de 150 de rânduri în corp. Prima condiție
       conține o expresie regulată goală care, deoarece se potrivește întotdeauna, este utilizată  pentru  a  da
       punctajului  nostru  un decalaj negativ. A doua condiție se potrivește apoi cu fiecare linie din mesaj și
       consumă decalajul negativ anterior pe care l-am dat (un punct pe linie). În cele din urmă,  punctajul  va
       fi pozitiv numai dacă mesajul conține mai mult de 150 de linii.

              :0 Bh * -150^0 * 1^1 ^.*$ /dev/null

       Să  presupunem  că  aveți  un  dosar  prioritar  pe  care îl citiți întotdeauna primul. Următoarea rețetă
       selectează corespondența prioritară și o arhivează în  acest  dosar  special.  Prima  condiție  este  una
       obișnuită,  adică  nu  contribuie  la  punctaj,  ci  pur  și simplu trebuie să fie îndeplinită. Celelalte
       condiții descriu lucruri precum: John și Claire au de obicei ceva important de spus, întâlnirile sunt  de
       obicei importante, răspunsurile sunt puțin favorizate, mesajele despre Elvis (acesta este doar un exemplu
       :  -)  sunt  favorizate  (cu  cât  este  mai mult menționat, cu atât mai mult este favorizat mesajul, dar
       punctajul maxim suplimentar datorat lui Elvis va fi de 4000, indiferent de cât de  des  este  menționat),
       multe  rânduri  citate nu sunt apreciate, emoticoanele „smileys” sunt apreciate (punctajul pentru acestea
       va ajunge la un maxim de 3500), aceste trei persoane nu trimit de  obicei  mesaje  interesante,  mesajele
       trebuie  să  fie  de  preferință  mici  (de  exemplu, mesajele cu o lungime de 2000 de octeți vor avea un
       punctaj de -100, cele cu o lungime de 4000 de octeți fac  -800).  După  cum  vedeți,  dacă  unele  dintre
       persoanele  neinteresante  trimit  mesaje, acestea au totuși o șansă de a ajunge în dosarul prioritar, de
       exemplu, dacă este vorba despre o întâlnire sau dacă conțin cel puțin două emoticoane.

              :0 HB * !^Precedence:.*(junk|bulk)  * 2000^0 ^From:.*(john@home|claire@work)
              * 2000^0 ^Subject:.*meeting * 300^0 ^Subject:.*Re: * 1000^.75 elvis|presley
              * -100^1 ^> * 350^.9 :-\)  * -500^0 ^From:.*(boss|jane|henry)@work *
              -100^3 > 2000 dosar_prioritar

       Dacă sunteți abonați la o listă de discuții și  doriți  doar  să  citiți  mesajele  de  calitate,  atunci
       următoarele  rețete  ar  putea  fi  de  folos.  Mai  întâi  ne asigurăm că mesajul provine de la lista de
       discuții. Apoi verificăm dacă este de la anumite persoane a căror opinie o apreciem sau despre un subiect
       despre care vrem neapărat să știm totul. Dacă este așa,  îl  arhivăm.  În  caz  contrar,  verificăm  dacă
       raportul dintre liniile citate și liniile originale este de cel mult 1:2. Dacă depășește această valoare,
       renunțați la mesaj. Tot ceea ce a supraviețuit testului anterior, este clasat.

              :0
              ^From mailinglist-request@some.where
              {
                :0:
                * ^(From:.*(paula|bill)|Subject:.*skiing)
                mailinglist

                :0 Bh
                *  20^1 ^>
                * -10^1 ^[^>]
                /dev/null

                :0:
                mailinglist
              }

       Pentru alte exemple, consultați pagina de manual procmailex(5).

AVERTISMENTE

       Deoarece  acest  lucru  accelerează  căutarea  cu  un  ordin de mărime, egrep-ul intern procmail va căuta
       întotdeauna cea mai din stânga cea mai scurtă potrivire, cu excepția cazului  în  care  determină  ce  să
       atribuie  la  MATCH,  caz în care va căuta cea mai din stânga cea mai lungă potrivire. De exemplu, pentru
       cea mai din stânga potrivire cea mai scurtă, de la sine, expresia regulată:

       .*     se va potrivi întotdeauna cu un șir de lungime zero în același loc.

       .+     se va potrivi întotdeauna cu un singur caracter (cu excepția liniilor noi, bineînțeles).

CONSULTAȚI ȘI

       procmail(1), procmailrc(5), procmailex(5), sh(1), csh(1), egrep(1), grep(1),

ERORI

       În cazul în care, într-o condiție de lungime, specificați un x care provoacă o depășire, procmail este la
       mila funcției pow(3) din biblioteca dvs. de matematică.

       Numerele cu virgulă mobilă în format „ingineresc” (de exemplu, 12e5) nu sunt acceptate.

DIVERSE

       De îndată ce se atinge „plus infinit” (2147483647), toate condițiile ponderate ulterioare vor fi  pur  și
       simplu ignorate.

       De  îndată  ce  se  atinge  "minus  infinit"  (-2147483647),  condiția  va  fi considerată ca fiind „fără
       corespondență” și rețeta se va încheia mai devreme.

NOTE

       Dacă într-o expresie regulată formula ponderată 0<x<1, punctajul total adăugat pentru această condiție se
       va apropia asimptotic:

                 w
              -------
               1 - x

       Pentru a ajunge la jumătate din valoarea maximă, aveți nevoie de

                   - ln 2
              n = --------
                     ln x

       potriviri.

AUTORI

       Stephen R. van den Berg
              <srb@cuci.nl>
       Philip A. Guenther
              <guenther@sendmail.com>

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

BuGless                                            2001/08/04                                      PROCMAILSC(5)