Mu fintech, nthawi zambiri timafunika kukonza kuchuluka kwa ndalama zosinthira ndalama. Timapeza zambiri kuchokera kumagwero osiyanasiyana, ndipo aliyense wa iwo ali ndi lingaliro lake la momwe angasinthire mitengo yosinthira mawa, mawa, mwezi wamawa komanso zaka zitatu zikubwerazi. Ngati wina anganeneretu mitengo kulondola, ingakhale nthawi yotseka bizinesiyo ndikungosintha mopusa ndalama mmbuyo ndi mtsogolo. Magwero ena ndi odalirika, ena amapereka zinyalala zathunthu, zophatikizika zosowa za mfundo zolondola, koma kwa mabanja achilendo. Ntchito yathu ndikusanthula masauzande masauzande awa pa sekondi imodzi ndikuwona zomwe tingawonetse kwa makasitomala. Tiyenera kuchotsa mtengo wolondola kuchokera ku dothi ndi dothi lambiri, monga momwe flamingo amachitira pa nkhomaliro.
Chinthu china chapadera cha mbalamezi n'chakuti milomo yawo ikuluikulu yopindika pansi, imene imasefa chakudya m'madzi kapena m'matope.
-Wiki
Motero laibulaleyo inabadwa Vela
Tiyerekeze kuti timasonkhanitsa mitengo yamagulu atatu a ndalama. Kutanthauzira kosavuta Vela
kusunga momwe zilili pano zidzawoneka motere:
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
Kusintha Makhalidwe
Vela.put/3
- zidzachititsa
validator
pa mtengo, ngati wina wafotokozedwa (onani mutu Kutsimikizira pansipa); - adzawonjezera mtengowo pamzere wamakhalidwe abwino ngati kutsimikizika kudachita bwino, kapena pamzere wautumiki
:__errors__
mwinamwake; - zipangitsa kusanja ngati
sorter
kutanthauziridwa pa kiyi yoperekedwa, kapena kungoyika mtengo wake pamutu wa mndandanda (ZOCHITIKA, onani mutu Zosintha pansipa); - idzachepetsa mzere molingana ndi parameter
:limit
adapatsira chilengedwe; - idzabwezeretsanso mawonekedwe osinthidwa
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]}
komanso Vela
zida Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
Kutsimikizira
Wovomerezeka angatanthauzidwe motere:
- ntchito yakunja ndi mfundo imodzi (
&MyMod.my_fun/1
), idzangolandira mtengo wotsimikizira; - ntchito yakunja yokhala ndi mfundo ziwiri,
&MyMod.my_fun/2
, apeza awiriserie, value
kutsimikizira; - kukhazikitsa module
;Vela.Validator
- configuration parameter
threshold
, ndi - mwasankha -compare_by
, onani mutu kuyerekezera pansipa.
Ngati kutsimikizika kwapambana, mtengowo umawonjezedwa pamndandanda pansi pa kiyi yofananira; apo ayi, tuple {serie, value}
amapita ku :__errors_
.
Kuyerekeza
Makhalidwe osungidwa m'mizere iyi akhoza kukhala chilichonse. Kuphunzitsa Vela
kuyerekeza iwo, m'pofunika kusamutsa compare_by
parameter mu tanthauzo la mndandanda (pokhapokha ngati zikhalidwe sizingafanane ndi muyezo Kernel.</2
); chizindikiro ichi chiyenera kukhala chamtundu (Vela.value() -> number())
. Mwa kusakhulupirika ndizosavuta & &1
.
Komanso, mutha kupereka parameter ku tanthauzo la mzere comparator
kuwerengera mitengo ya delta (min
/max
); mwachitsanzo, potumiza Date.diff/2
monga wofananira, mutha kupeza ma delta olondola amasiku.
Njira ina yabwino yogwirira ntchito ndikudutsa parameter threshold
, chomwe chimatanthawuza kuchuluka kovomerezeka kwa mtengo watsopano {min, max}
nthawi. Popeza imatchulidwa ngati peresenti, cheke sichigwiritsa ntchito comparator
koma amagwiritsa ntchito compare_by
. Mwachitsanzo, kuti mutchule mtengo wanthawi yamasiku, muyenera kufotokoza compare_by: &DateTime.to_unix/1
(kuti mupeze mtengo wokwanira) ndi threshold: 1
, kupangitsa kuti zikhalidwe zatsopano ziloledwe pokhapokha ngati zili mkati Β±band
pakapita nthawi kuchokera kumitengo yamakono.
Pomaliza, mungagwiritse ntchito Vela.equal?/2
kufananiza cache ziwiri. Ngati ma values ββamafotokoza ntchito equal?/2
kapena compare/2
, ndiye kuti ntchitozi zidzagwiritsidwa ntchito kufananitsa, apo ayi timagwiritsa ntchito mopusa ==/2
.
Kupeza zofunika
Kukonza zomwe zikuchitika nthawi zambiri kumayamba ndikuyimba foni Vela.purge/1
, zomwe zimachotsa zikhalidwe zakale (ngati validator
womangidwa ku timestamps
). Ndiye mukhoza kuyimba Vela.slice/1
amene adzabwerera keyword
okhala ndi mayina amizere ngati makiyi ndi oyamba, ofunika kwenikweni.
Mukhozanso kugwiritsa ntchito get_in/2
/pop_in/2
kuti mupeze zotsika mtengo pamzere uliwonse.
Ntchito
Vela
ikhoza kukhala yothandiza kwambiri ngati posungira nthawi muzochitika ngati GenServer
/Agent
. Sitikufuna kugwiritsa ntchito mfundo zakale zamaphunziro, ndipo kuti tichite izi timangosunga ndondomekoyi ndikukonzedwa ndi boma Vela
, ndi zovomerezeka zomwe zikuwonetsedwa pansipa.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
ΠΈ Vela.purge/1
amachotsa mwakachetechete zinthu zakale nthawi iliyonse yomwe tikufuna deta. Kuti mupeze zomwe timafunikira timangoyimba Vela.slice/1
, ndipo pamene mbiri yaing'ono ya maphunziro ikufunika (mndandanda wonse), timangobweza - tasankhidwa kale - ndi mfundo zovomerezeka.
Wodala nthawi caching mndandanda!
Source: www.habr.com