Ku-fintech, ngokuvamile kufanele sicubungule amanani amakhulu kakhulu wedatha yezinga lokushintshaniswa kwemali. Sithola idatha evela emithonjeni ehlukene, futhi ngamunye wabo unombono wawo wokuthi ungawakhipha kanjani amanani okushintshanisa kusasa, usuku lwakusasa, inyanga ezayo kanye neminyaka emithathu elandelayo. Ukube othile ubengabikezela amanani kwesokudla, kungaba yisikhathi sokuvala ibhizinisi futhi nje ngobuwula ushintshe imali emuva naphambili. Eminye imithombo inokwethenjelwa kakhulu, eminye ihlinzeka ngodoti ophelele, ngokufakwa okungajwayelekile kwamanani acishe alungile, kodwa okwemibhangqwana engavamile. Umsebenzi wethu ukuhlunga kulawa mashumi ezinkulungwane zamanani ngomzuzwana futhi sinqume ukuthi yini okufanele siyibonise kumakhasimende. Kudingeka sihlunge inani elilungile emathanini okungcola nodaka, njengoba nje kwenza ama-flamingo ngesikhathi sokudla kwasemini.
Isici esikhethekile sama-flamingo uqhwaku lwawo olukhulu olugobile olugobile, ahlunga ngalo ukudla emanzini noma odakeni.
-Wiki
Wazalwa kanjalo umtapo wolwazi Vela
Ake sithi siqoqa amanani amapheya emali amathathu. Incazelo elula kakhulu Vela
ukugcina isimo samanje kuzobukeka kanjena:
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
Ibuyekeza Amanani
Vela.put/3
- izobangela
validator
kunani, uma kuchazwa eyodwa (bheka isahluko Ukuqinisekisa ngezansi); - izongeza inani kumugqa wamanani amahle uma ukuqinisekiswa kuphumelele, noma kumugqa wesevisi
:__errors__
kungenjalo; - izobangela ukuhlunga uma
sorter
ichazwe ngokhiye onikeziwe, noma izovele ibeke inani ekhanda lohlu (I-LIFO, bheka isahluko Ukuhlunga ngezansi); - izonquma umugqa ngokuya ngepharamitha
:limit
wadluliswa ekudalweni; - izobuyisela isakhiwo esibuyekeziwe
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]}
Futhi Vela
izinto zokusebenza Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
Ukuqinisekisa
Isiqinisekisi singachazwa ngokuthi:
- umsebenzi wangaphandle nge-agumenti eyodwa (
&MyMod.my_fun/1
), izothola inani lokuqinisekiswa kuphela; - umsebenzi wangaphandle onezimpikiswano ezimbili,
&MyMod.my_fun/2
, uzothola ipheyaserie, value
ukuze kuqinisekiswe; - ukusebenza kwemojula
;Vela.Validator
- ipharamitha yokumisa
threshold
, futhi - ngokuzikhethela -compare_by
, bheka isahluko Ukuqhathanisa ngezansi.
Uma ukuqinisekiswa kuphumelele, inani lengezwa ohlwini ngaphansi kokhiye ohambisanayo; uma kungenjalo, i-tuple {serie, value}
iya ku :__errors_
.
Ukuqhathanisa
Amanani agcinwe kule migqa angaba yinoma yini. Ukufundisa Vela
ukuziqhathanisa, kuyadingeka ukudlulisa compare_by
ipharamitha encazelweni yochungechunge (ngaphandle uma amanani engenakuqhathaniswa nejwayelekile Kernel.</2
); le pharamitha kufanele ibe yohlobo (Vela.value() -> number())
. Ngokuzenzakalelayo ilula & &1
.
Futhi, ungadlulisela ipharamitha encazelweni yomugqa comparator
ukubala amanani e-delta (min
/max
); isibonelo, ngokudlulisela Date.diff/2
njengomqhathanisi, ungathola i-deltas efanele yamadethi.
Enye indlela elula yokusebenza ukudlula ipharamitha threshold
, echaza isilinganiso esiphezulu esivumelekile senani elisha kuya {min, max}
isikhawu. Njengoba kucaciswe njengephesenti, isheke alisebenzisi comparator
kodwa usasebenzisa compare_by
. Isibonelo, ukuze ucacise inani le-threshold lezikhathi zedethi, kufanele ucacise compare_by: &DateTime.to_unix/1
(ukuthola inani eliphelele) kanye threshold: 1
, okwenza amanani amasha avunyelwe kuphela uma engenile Β±band
isikhawu ukusuka kumanani amanje.
Ekugcineni, ungasebenzisa Vela.equal?/2
ukuqhathanisa izinqolobane ezimbili. Uma amanani echaza umsebenzi equal?/2
noma compare/2
, khona-ke le misebenzi izosetshenziselwa ukuqhathanisa, ngaphandle kwalokho sisebenzisa ngobuwula ==/2
.
Ukuthola amanani
Ukucubungula isimo samanje kuvame ukuqala ngokushaya ucingo Vela.purge/1
, esusa amanani aphelelwe yisikhathi (uma validator
iboshelwe ku timestamps
). Ungafona ke Vela.slice/1
ezobuya keyword
ngamagama emigqa njengokhiye kanye neyokuqala, amanani angempela.
Ungasebenzisa futhi get_in/2
/pop_in/2
ngokufinyelela kwezinga eliphansi kumanani kumugqa ngamunye.
Uhlelo lokusebenza
Vela
kungaba usizo ngokwedlulele njengenqolobane yochungechunge lwesikhathi esimweni senqubo GenServer
/Agent
. Asifuni nanini ukusebenzisa amanani ezifundo zakudala, futhi ukwenza lokhu simane sigcine inqubo icutshunguliwe Vela
, nesiqinisekisi esiboniswe ngezansi.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
ΠΈ Vela.purge/1
isusa buthule wonke amanani amadala njalo lapho sidinga idatha. Ukufinyelela amanani wangempela sivele sishayele Vela.slice/1
, futhi lapho kudingeka umlando omncane wesifundo (lonke uchungechunge), sivele siwubuyisele - osewavele uhleliwe - onamanani aqinisekisiwe.
Jabulela ukugcinwa kwesikhashana kochungechunge lwesikhathi!
Source: www.habr.com