Kwi-fintech, kuye kufuneke siqhubekisele phambili umthamo omkhulu wedatha yezinga lotshintshiselwano lwemali. Sifumana idatha kwimithombo eyahlukeneyo, kwaye nganye kubo inombono wayo wendlela yokukhuphela amaxabiso otshintshiselwano ngomso, kusuku olulandelayo, kwinyanga ezayo nakwiminyaka emithathu ezayo. Ukuba umntu unokuqikelela amaxabiso kunene, bekuya kuba lixesha lokuvala ishishini kwaye nje ngobudenge utshintshe imali emva naphambili. Eminye imithombo ithembeke ngakumbi, eminye inikezela ngenkunkuma epheleleyo, kunye nokufakwa okunqabileyo kwamaxabiso aphantse achanekileyo, kodwa kwizibini ezingaqhelekanga. Umsebenzi wethu kukuhluza la mashumi amawaka exabiso ngomzuzwana kwaye sijonge ukuba yintoni kanye ekufuneka siyibonise kubathengi. Kufuneka sihluze ixabiso elinye elichanekileyo kwiitoni zokungcola kunye nentlenga, njengokuba iiflamingo zisenza kwisidlo sasemini.
Eyona nto yahlula ngokukhethekileyo iiflamingo ngumlomo wazo omkhulu ogobele ezantsi, ezihluza ngawo ukutya emanzini okanye eludakeni.
-Wiki
Ngaloo ndlela ithala leencwadi lazalwa Vela
Masithi siqokelela amaxabiso eentlawulo ezintathu. Eyona ngcaciso ilula Vela
ukugcina imeko yangoku izakujongeka ngolu hlobo:
defmodule Pairs do
use Vela,
eurusd: [sorter: &Kernel.<=/2],
eurgbp: [limit: 3, errors: 1],
eurcad: [validator: Pairs]
@behaviour Vela.Validator
@impl Vela.Validator
def valid?(:eurcad, rate), do: rate > 0
end
Ukuhlaziya amaxabiso
Vela.put/3
- iya kubangela
validator
kwixabiso, ukuba enye ichaziwe (bona isahluko Ukuqinisekiswa ngezantsi); - iyakongeza ixabiso nokuba kumqolo wamaxabiso alungileyo ukuba uqinisekiso luphumelele, okanye kumqolo wenkonzo
:__errors__
ngenye indlela; - izakubangela ukuhlelwa ukuba
sorter
ichazwe ngesitshixo esinikiweyo, okanye izakubeka nje ixabiso kwintloko yoluhlu (I-LIFO, bona isahluko Ukuhlelwa ngezantsi); - izakunquma umqolo ngokwe parameter
:limit
idluliselwe kwindalo; - izakubuyisela ulwakhiwo oluhlaziyiweyo
Vela
.
iex|1 > pairs = %Pairs{}
iex|2 > Vela.put(pairs, :eurcad, 1.0)
#β %Pairs{..., eurcad: [1.0], ...}
iex|3 > Vela.put(pairs, :eurcad, -1.0)
#β %Pairs{__errors__: [eurcad: -1.0], ...}
iex|4 > pairs |> Vela.put(:eurusd, 2.0) |> Vela.put(:eurusd, 1.0)
#β %Pairs{... eurusd: [1.0, 2.0]}
Kwakhona Vela
izixhobo Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
Ukuqinisekiswa
Umqinisekisi unokuchazwa njengo:
- umsebenzi wangaphandle ngengxoxo enye (
&MyMod.my_fun/1
), iya kufumana kuphela ixabiso lokuqinisekiswa; - umsebenzi wangaphandle oneengxoxo ezimbini,
&MyMod.my_fun/2
, uza kufumana iperiserie, value
ukuqinisekiswa; - ukuphunyezwa kwemodyuli
;Vela.Validator
- iparameter yoqwalaselo
threshold
, kwaye - uyazikhethela -compare_by
, bona isahluko uthelekiso ngezantsi.
Ukuba ukuqinisekiswa kuphumelele, ixabiso longezwa kuluhlu phantsi kweqhosha elihambelanayo; kungenjalo, i-tuple {serie, value}
iya ku :__errors_
.
The lekiswa
Amaxabiso agcinwe kule miqolo anokuba nantoni na. Ukufundisa Vela
ukuzithelekisa, kuyimfuneko ukudlulisa compare_by
iparameter kwinkcazo yothotho (ngaphandle kokuba amaxabiso awanakuthelekiswa nomgangatho Kernel.</2
); le parameter kufuneka ibe yodidi (Vela.value() -> number())
. Ngokungagqibekanga ilula & &1
.
Kwakhona, ungadlula iparameter kwinkcazo yomqolo comparator
ukubala amaxabiso edelta (min
/max
); umzekelo, ngokusasaza Date.diff/2
njengomthelekisi, ungafumana i-deltas echanekileyo yemihla.
Enye indlela efanelekileyo yokusebenza kukudlula iparameter threshold
, echaza umlinganiselo ophezulu ovumelekileyo wexabiso elitsha ukuya {min, max}
isithuba. Ekubeni ichazwe njengepesenti, itshekhi ayisebenzisi comparator
kodwa usasebenzisa compare_by
. Umzekelo, ukucacisa ixabiso le-threshold lamaxesha omhla, kufuneka ucacise compare_by: &DateTime.to_unix/1
(ukufumana inani elipheleleyo) kunye threshold: 1
, ebangela ukuba amaxabiso amatsha avunyelwe kuphela ukuba angaphakathi Β±band
isithuba ukusuka kumaxabiso angoku.
Ekugqibeleni, ungasebenzisa Vela.equal?/2
ukuthelekisa iicache ezimbini. Ukuba amaxabiso achaza umsebenzi equal?/2
okanye compare/2
, ke le misebenzi iya kusetyenziselwa uthelekiso, kungenjalo sisebenzisa ngobubhanxa ==/2
.
Ukufumana amaxabiso
Ukuqhubekekisa imeko yangoku kudla ngokuqala ngokufowuna Vela.purge/1
, esusa amaxabiso aphelelwe lixesha (ukuba validator
ibotshelelwe kwi timestamps
). Ungafowuna ke Vela.slice/1
eya kubuya keyword
ngamagama omqolo njengezitshixo kunye neyokuqala, amaxabiso angawo.
Ungasebenzisa kwakhona get_in/2
/pop_in/2
kunikezelo olukwinqanaba elisezantsi kumaxabiso kumqolo ngamnye.
Isicelo
Vela
inokuba luncedo kakhulu njengoluhlu lwexesha cache kwimeko yenkqubo efana GenServer
/Agent
. Sifuna ukuba singaze sisebenzise iinqobo ezisemgangathweni zezifundo zakudala, kwaye ukwenza oku sigcina inkqubo kunye nenkqubo eqhutywe ngurhulumente Vela
, kunye nesingqinisiso esiboniswe ngezantsi.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
ΠΈ Vela.purge/1
ngokuthula isusa onke amaxabiso adala ngalo lonke ixesha sifuna idatha. Ukufikelela kumaxabiso akwenyani sifowuna ngokulula Vela.slice/1
, kwaye xa kufunwa imbali encinci yekhosi (lonke uchungechunge), siyibuyisela ngokulula-esele ihleliwe-kunye namaxabiso aqinisekisiweyo.
Ixesha elimnandi caching!
umthombo: www.habr.com