Rechercher une page de manuel

Chercher une autre page de manuel:

procmailsc

Autres langues

Langue: hu

Autres versions - même langue

Version: \*(Dt (ubuntu - 01/11/07)

Section: 5 (Format de fichier)


NÉV

procmailsc - a procmail súlyozott pontozási módszere

ÁTTEKINTÉS

[*] w^x feltétel

LEÍRÁS

A szûrési feltételekben megadott hagyományos igaz/hamis vizsgálat mellett a súlyozott pontozási módszert is lehet használni a feltételek helyességének megállapítására. A szûrési feltételben használt pontozási módszereknél a pozitív értékek az igaz állításnak felelnek meg.

A feltételek az alábbi módon kapnak pontokat, `fontosság' (w) és `kitevõ' (x). A feltétel elõtt (ugyanabban a sorban) lehet megadni ezt a következõképen:

 
w^x

 
Ahol, mind w és x pozitív valós számok -2147483647.0 és 2147483647.0 között.


Súlyozás egyszerû feltételnél

A feltétlenek való elsõ megfeleléskor w -vel nõ a pontszám. A következõ megfeleléskor már w*x -el. Harmadik találat esetén w*x*x -el. Negyedik megfeleléskor w*x*x*x -el. És így tovább.

Ezt a következõ képlettel lehet kifejezni:

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

 

A képlet megadja a feltétel n számú megfelelésekor az összpontszámot.

A következõ eseteket lehet x -tõl függõen megkülönböztetni:
Tp 8 x=0 Csak az elsõ találat esetén növekszik a pontszám w-vel. Minden más találat figyelmen kívül lesz hagyva.
Tp x=1 Minden egyes találat w-vel növeli a pontszámot. Az összpontszám a találatok számával egyenes arányban növekszik.
Tp 0<x<1 Minden újabb találattal kevesebb pontot adunk az összpontszámhoz, mint elõtte. Ekkor az összpontszám egyoldalról (aszimptotikusan) közelít egy határértékhez. (Lásd MEGJEGYZÉS részt késõbb).
Tp 1<x Minden újabb találattal egyre több pontot adunk az összeghez, mint elõtte. Az összpontszám exponenciálisan növekszik.
Tp x<0 Segítségével megkülönböztethetjük az egész- vagy páratlan számú találatokat.

Ha a feltételnek való megfelelést megfordítjuk [negáljuk] (pl. találat, ha nincs egyezés a feltétellel), akkor az n értéke természetesen nulla vagy egy lehet.

Súlyozott kilépésiértékek

Ha a program EXIT_SUCCESS (=0) -vel fejezi be mûködését, akkor az összpontszám w lesz. Bármely más kilépési kód (hibás mûködés) esetén az összpontszám x lesz.

A program kilépési kódjának megfordításakor (negálásakor) kapott pontszámot a lehetséges találatok számával ('virtual number of matches') azonosítja a program. Az összpontszám kiszámítása ugyanúgy történik, mint ahogy hagyományos kifejezéssel való egyezéskor történne, vagyis mintha n=`exitcode' számú találat lett volna.

Súlyozás levélméret alapján

Ha a levél mérete M akkor:
 
* w^x > L

 

esetén a megfelelõ pontszám a következõképen számolható:

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

 

És:

 
* w^x < L

 

esetén a pontszám a következõként adódik:

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

 

Mindkét esetben, ha L=M, akkor az összpontszámhoz csupán w adódik. Az elõzõ példa azonban hosszabb levelekre, míg az utóbbi a rövidebb levelekre használandó. Az x változtatásával a függvény pontosságát lehet 'finomhangolni', de az x=1 többnyire megfelelõ.

EGYÉB

A szûrési feltételben (recipe) szereplõ összes pontszámot a $= környezeti változó segítségével lehet kiolvasni. Ezt a változó minden szûrés után ellenõrzésre kerül (még ha a szûrés nem is hajtódik végre).

PÉLDÁK

A következõ példával minden a olyan levelet töröltethetünk, amely a törzsében 150 sornál többet tartalmaz. Az elsõ sorban egy üres feltétel talalható, amely minden levélre igaz, ezzel a pontszámnak egy kezdeti (negatív) értéket adtunk meg. A következõ feltétel segítségével minden egyes új sor esetén növeltetjük az összpontszámot (soronként egy ponttal). A feltétel pozitív pontszámmal zárul, ha a levél 150 sornál többet tartalmazott.
 
:0 Bh * -150^0 * 1^1 ^.*$ /dev/null

 

Ha van egy külön levelesmappánk, amelyet mindig elõször olvasunk el, akkor a következõ szûrési feltétellel a fontosabb leveleket átirányíthatjuk ebbe a mappába. Az elsõ feltétel nem használ pontozást, mindössze figyeli, hogy a levelek nem tartalmazzák-e a megadott feltételeket. A következõ feltételek pedig a következõt fejezik ki: józsi és kati általában hasznos dolgokról írnak; a megbeszélésekrõl szóló levelek fontosak a számunkra; válaszleveleket is szívesen olvasunk; Elvis-rõl szóló leveleket (hátha megtudunk valami újat) mindig elolvassuk (minél többször említik a levélben Elvist, annál több pontot kap a levél, de maximum 4000 pontot); túl sok idézett sort tartalmazó levelet el szeretnénk kerülni; ha smiley-t küldenek nekünk, akkor azt szívesen megnézzük (erre maximum 3500 pontot adunk); három embertõl (fõnõk, timi, péter) általában unalmas leveleket szoktunk kapni; és végül nem szeretjük a hosszú leveleket, jobb, ha a levél csak 2000 bájt hosszú, ha ennél hosszabb, akkor 100 pontot, ha 4000 bájtnál hosszabb akkor pedig 800 pontot vonunk le az összes pontszámából. A pontozási módszer segítségével azonban, még ha egy unalmas levelet is kapunk három emberünk valamelyikétõl a levél még bekerülhet a külön mappánkba, ha pl. megbeszélésrõl szól, vagy tartalmaz legalább 2 darab smileyt.

 
:0 HB * !^Precedence:.*(junk|bulk) * 2000^0 ^From:.*(jozsi@otthon|kati@munkahely) * 2000^0 ^Subject:.*megbeszeles * 300^0 ^Subject:.*Re: * 1000^.75 elvis|presley * -100^1 ^> * 350^.9 :-\) * -500^0 ^From:.*(fonok|timi|peter)@munkahely * -100^3 > 2000 kulon_mappa

 

Ha a levelezõlistákról érkezõ levelek közül csak a hasznos leveleket szeretnénk elolvasni, akkor a következõ szûrési feltételt használhatjuk. Az elsõ feltétel ellenõrzi, hogy a levél a megadott levelezõlistáról jött-e. Aztán a leveleket ellenõrizzük, hogy olyan személytõl jött-e akinek adunk a szavára, vagy olyan témáról szól, amelyrõl mindent El szeretnénk olvasni. Ha ezeknek megfelel, akkor marad a levél. A többi levélnél megvizsgáljuk, hogy az idézett és az új sorok aránya eléri-e az 1:2-hözt. Ha ennél több, akkor töröljük a levelet. Minden olyan levél, amely átment az elõzõ vizsgálaton mentésre kerül.

 
:0 ^From levelezõlista@vhol { :0: * ^(From:.*(piroska|bandi)|Subject:.*sieles) levlista :0 Bh * 20^1 ^> * -10^1 ^[^>] /dev/null :0: levlista }

 

További mintapéldák a procmailex(5) súgóban lehet találni.

FIGYELMEZTETÉS

A procmail a gyors keresés érdekében mindig csak a balelsõ (leftmost) legrövidebb egyezésig keres, ha csak nem a MATCH -be értéket kell átadni, ebben az esetben a balelso leghosszabb találatig keres. Pl. A balelsõ legrövidebb találat a következõ kifejezésre:
Tp .* mindig nullahosszúságú találatot eredményez.
Tp .+ pedig mindig csak egy karaktert (sortörést persze nem) eredményez.

LÁSD MÉG

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

HIBÁK

Ha az x értéke túlcsorduláshoz vezet, akkor a matematikai függvénytárban lévõ pow(3) függvénytõl függ a végsõ eredmény.

Lebegõ pontos számok mérnöki formátumban (pl. 12e5) nem adhatók meg.

EGYÉB

A `pozitív végtelen' (2147483647) elérésekor minden további súlyozás át lesz ugorva.

A `negatív végtelen' (-2147483647) elérésekor a szûrés megfelelés hiányában befejezõdik.

MEGJEGYZÉS

0<x<1 esetén a hagyományos feltétel pontszáma a következõ számhoz közelít egyoldalról:
 
w ------- 1 - x

 

A maximális érték felének eléréséhez

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

 

számú találatra van szükség.

SZERZÕ

Stephen R. van den Berg
 
<srb@cuci.nl>

 

MAGYAR

Vizi Szilárd <vizisz@freemail.hu>
Pour l'année 2000, Elizabeth Teyssier a prévu beaucoup de changements,
mais je ne sais pas si elle a parlé de Debian, je regarderai son bouquin
ce soir et je te dis.
-+- DB sur debian-french : "manchot ascendant gnou" -+-