A cikin fintech, sau da yawa dole ne mu aiwatar da adadi mai yawa na bayanan kuɗin musayar kuɗi. Muna samun bayanai daga tushe daban-daban, kuma kowannensu yana da nasa ra’ayin yadda za a fitar da kudin musaya na gobe, jibi, wata mai zuwa har ma da shekaru uku masu zuwa. Idan kawai wani zai iya hasashen ƙimar dama, zai zama lokaci don rufe kasuwancin kuma kawai wauta canza kudi da baya. Wasu kafofin sun fi dogaro, wasu suna ba da cikakkun shara, tare da ƙarancin shigar da kusan daidaitattun dabi'u, amma ga ma'aurata. Ayyukanmu shine mu raba ta cikin waɗannan dubun dubatar dabi'u a sakan daya kuma mu tantance ainihin abin da za a nuna wa abokan ciniki. Muna buƙatar tace ƙima ɗaya daidai daga ton na datti da silt, kamar yadda flamingos ke yi a abincin rana.
Wani fasali na musamman na flamingos shine katon baki mai lankwasa a kasa, wanda da shi suke tace abinci daga ruwa ko laka.
- Wiki
Ta haka aka haifi ɗakin karatu Vela, wanda ke adana ma'ajin jihar don ƙima mai yawa a ƙayyadadden lokaci. Ƙarƙashin murfin, yana tace bayanai mara kyau da tsofaffi akan tashi, kuma yana ba da dama ga sababbin N ingantattun dabi'u ga kowane maɓalli (nau'i-nau'i na kuɗi, a cikin yanayinmu).
Bari mu ce muna tattara rates don nau'i-nau'i na kuɗi uku. Ma'anar mafi sauƙi Vela don adana halin yanzu zai kasance kamar haka:
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
sigar daidaitawa threshold, kuma - na zaɓi - compare_by, duba babi kwatanta a kasa.
Idan inganci ya yi nasara, ana ƙara ƙimar zuwa jeri a ƙarƙashin maɓalli mai dacewa; in ba haka ba, tuple {serie, value} ke zuwa :__errors_.
Daidaita
Ƙimar da aka adana a cikin waɗannan layuka na iya zama komai. Don koyarwa Vela don kwatanta su, wajibi ne don canja wurin compare_by siga a cikin jerin ma'anar (sai dai idan ba za a iya kwatanta ƙimar da ma'auni ba Kernel.</2); wannan siga dole ne ya zama nau'i (Vela.value() -> number()). Ta hanyar tsoho yana da sauƙi & &1.
Hakanan, zaku iya wuce siga zuwa ma'anar jere comparator don lissafta ƙimar delta (min/max); misali, ta hanyar watsawa Date.diff/2 a matsayin kwatancen, zaku iya samun daidaitattun deltas don kwanakin.
Wata hanyar da ta dace don aiki ita ce wuce siga threshold, wanda ke bayyana madaidaicin madaidaicin madaidaicin izinin sabuwar ƙima zuwa {min, max} tazara. Tunda an ayyana shi azaman kashi, cak ɗin baya amfani comparatoramma har yanzu yana amfani compare_by. Misali, don tantance ƙimar kofa don lokutan kwanan wata, dole ne ka saka compare_by: &DateTime.to_unix/1 (don samun ƙimar lamba) da threshold: 1, yana haifar da sabbin dabi'u da za a yarda kawai idan suna ciki ±band tazara daga ƙimar halin yanzu.
A karshe, za ka iya amfani Vela.equal?/2 don kwatanta cache guda biyu. Idan ƙimar sun ayyana aiki equal?/2 ko compare/2, to waɗannan ayyuka za a yi amfani da su don kwatanta, in ba haka ba muna amfani da wauta ==/2.
Samun dabi'u
Gudanar da halin yanzu yawanci yana farawa da kira Vela.purge/1, wanda ke kawar da ƙima mara amfani (idan validator daure da timestamps). Kuna iya kira Vela.slice/1wanda zai dawo keyword tare da sunaye jere azaman maɓalli kuma na farko, ainihin ƙima.
Hakanan zaka iya amfani get_in/2/pop_in/2 don samun dama ga ƙananan ƙimar ƙimar kowane jere.
Aikace-aikacen
Vela na iya zama da amfani sosai azaman ma'ajin jerin lokaci a cikin yanayin tsari kamar GenServer/Agent. Ba za mu taɓa yin amfani da darajojin darasi ba, kuma don yin wannan muna kawai kiyaye tsari tare da sarrafa jihar Vela, tare da mai tabbatarwa da aka nuna a ƙasa.
и Vela.purge/1 a hankali yana kawar da duk tarkacen dabi'u a duk lokacin da muke buƙatar bayanan. Don samun damar ainihin ƙimar mu kawai muna kira Vela.slice/1, kuma lokacin da ake buƙatar ƙaramin tarihin kwas ɗin (dukan jerin), muna mayar da shi kawai - an riga an jera shi - tare da ingantattun dabi'u.