Mufintech, isu tinowanzo fanirwa kugadzirisa yakakura mavhoriyamu emari yekuchinjana data data. Isu tinowana data kubva kwakasiyana masosi, uye imwe neimwe yadzo ine zano rayo rekuwedzera mareti ekuchinjana mangwana, zuva rinotevera mangwana, mwedzi unouya uye kunyangwe makore matatu anotevera. Dai mumwe munhu aigona kufanotaura rates zvakarurama, ingava nguva yekuvhara bhizinesi uye kungoshandura upenzi mari nekudzoka. Mamwe masosi anovimbika zvakanyanya, mamwe anopa marara akazara, asina kujairika inclusions yemhando chaiyo chaiyo, asi kune ekunze vakaroorana. Basa redu nderekusefa mune aya makumi ezviuru zvehunhu pasekondi uye kuona kuti ndezvipi chaizvo zvekuratidza kune vatengi. Isu tinofanirwa kusefa iyo yakakosha kukosha kubva kune matani etsvina uye silt, sezvinoita flamingo pakudya kwemasikati.
Chinonyanya kusiyanisa maflamingo muromo wadzo muhombe wakakombamira pasi, waanosefa nawo zvokudya kubva mumvura kana mumatope.
-Wiki
Saka raibhurari yakazvarwa Vela
Ngatitii tinounganidza mitero yemapeya matatu emari. Tsanangudzo yakapfava Vela
kuchengetedza chimiro chazvino chinotaridzika seizvi:
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
Updating Values
Vela.put/3
- zvichakonzera
validator
pane kukosha, kana imwe ichitsanangurwa (ona chitsauko Validation pazasi); - ichawedzera kukosha kumutsara wezvakanaka zvakanaka kana kusimbiswa kwakabudirira, kana kumutsara webasa
:__errors__
zvimwe; - zvichakonzera kurongedza kana
sorter
inotsanangurirwa kiyi yakapihwa, kana kuti inongoisa kukosha kumusoro kwechinyorwa (LIFO, ona chitsauko Kugadziriswa pazasi); - ichacheka mutsara zvichienderana neparameter
:limit
zvakapfuudzwa pakusikwa; - ichadzorera yakagadziridzwa chimiro
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]}
Uyewo Vela
zvishandiso Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
Validation
A validator inogona kutsanangurwa se:
- basa rekunze nenharo imwe (
&MyMod.my_fun/1
), inongogamuchira kukosha kwekusimbiswa; - basa rekunze rine nharo mbiri,
&MyMod.my_fun/2
, achawana peyaserie, value
kuitira kusimbiswa; - module kuita
;Vela.Validator
- configuration parameter
threshold
, uye - zvichida -compare_by
, ona chitsauko kuenzanisa pasi.
Kana kusimbiswa kuchibudirira, kukosha kunowedzerwa kune iyo rondedzero pasi pekiyi inoenderana; kana zvisina kudaro, iyo tuple {serie, value}
anoenda ku :__errors_
.
Kuenzanisa
Izvo zvakakosha zvakachengetwa mumitsara iyi zvinogona kuva chero chinhu. Kudzidzisa Vela
kuti uzvienzanise, zvakakosha kutamisa compare_by
parameter mune inoteedzana tsananguro (kunze kwekunge iwo makoshero asingakwanise kuenzaniswa neyakajairwa Kernel.</2
); iyi parameter inofanira kuva yerudzi (Vela.value() -> number())
. By default zviri nyore & &1
.
Zvakare, iwe unogona kupfuudza parameter kune mutsara tsananguro comparator
kuverenga delta values ββ(min
/max
); semuenzaniso, nekutumira Date.diff/2
semuenzanisi, unogona kuwana iyo chaiyo deltas yemazuva.
Imwe nzira iri nyore yekushanda ndeyekupfuura parameter threshold
, iyo inotsanangura iyo yakawanda inobvumirwa reshiyo yehutsva hutsva ku {min, max}
interval. Sezvo inotsanangurwa sechikamu, cheki haishandisi comparator
asi achiri kushandisa compare_by
. Semuenzaniso, kutsanangura kukosha kwechikumbaridzo chenguva dzemazuva, unofanirwa kutsanangura compare_by: &DateTime.to_unix/1
(kuwana kukosha kwakazara) uye threshold: 1
, zvichiita kuti hutsva hutenderwe chete kana huri mukati Β±band
interval kubva pazvino kukosha.
Pakupedzisira, unogona kushandisa Vela.equal?/2
kuenzanisa cache mbiri. Kana ma values ββachitsanangura basa equal?/2
kana compare/2
, ipapo mabasa aya achashandiswa kuenzanisa, zvikasadaro isu tinoshandisa nehupenzi ==/2
.
Kuwana hunhu
Kugadzirisa mamiriro azvino kazhinji kunotanga nekufona Vela.purge/1
, iyo inobvisa tsika dzekare (kana validator
kusungirirwa ku timestamps
) Unobva wafona Vela.slice/1
iyo ichadzoka keyword
ine mazita emitsara sekiyi uye yekutanga, chaiyo yakakosha.
Unogonawo kushandisa get_in/2
/pop_in/2
kune yakaderera-level kuwana kune kukosha mumutsara wega wega.
Kushanda
Vela
inogona kubatsira zvakanyanya senge nguva yakateedzana cache mune process state senge GenServer
/Agent
. Isu hatidi kusamboshandisa maitiro echinyakare, uye kuti tiite izvi tinongochengeta maitiro acho achigadziriswa Vela
, nemugadziri anoratidzwa pazasi.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
ΠΈ Vela.purge/1
chinyararire inobvisa ese echinyakare tsika pese patinoda iyo data. Kuti uwane iwo chaiwo maitiro isu tinongofona Vela.slice/1
, uye kana nhoroondo diki yekosi ichidikanwa (iyo yese nhevedzano), tinongoidzosera - yakatorongwa - ine yakasimbiswa kukosha.
Inofara nguva yakatevedzana caching!
Source: www.habr.com