เปเบ fintech, เบเบงเบเปเบฎเบปเบฒเบกเบฑเบเบเบฐเบกเบตเบเบฒเบเบเบธเบเปเบเปเบเบเปเปเบกเบนเบเบญเบฑเบเบเบฒเปเบฅเบเบเปเบฝเบเปเบเบดเบเบเบฒเบเบตเปเบกเบตเบเบฐเบฅเบดเบกเบฒเบเบซเบผเบฒเบ. เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบซเบผเปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบฅเบฐเบเบงเบเปเบเบปเบฒเปเบเปเบฅเบฐเบเบปเบเบกเบตเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบปเบเปเบญเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบ extrapolate เบญเบฑเบเบเบฒเปเบฅเบเบเปเบฝเบเบชเปเบฒเบฅเบฑเบเบกเบทเปเบญเบทเปเบ, เบกเบทเปเบซเบผเบฑเบเบเบฒเบเบกเบทเปเบญเบทเปเบ, เปเบเบทเบญเบเบเปเปเปเบเปเบฅเบฐเปเบกเปเบเบฐเบเบฑเปเบเบชเบฒเบกเบเบตเบเปเบฒเบเบซเบเปเบฒ. เบเปเบฒเบกเบตเบเบฝเบเปเบเปเบเบปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฒเบเบเบฐเปเบเบญเบฑเบเบเบฒ right, เบกเบฑเบเบเบฐเปเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบดเบเบเบธเบฅเบฐเบเบดเบเปเบฅเบฐเบเบฝเบเปเบเป stupidly เบเปเบฝเบเปเบเบดเบเบเบฑเบเบเบทเบเปเบเบเปเบญเบเปเบฅเบฐเบเบฑเบเบเบตเปเบเปเปเปเบ. เบเบฒเบเปเบซเบผเปเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบซเบผเบฒเบ, เบเบฒเบเบเปเบญเบเบชเบฐเบซเบเบญเบเบเบตเปเปเบซเบเบทเปเบญเบเบตเปเบชเบปเบกเบเบนเบ, เบกเบตเบเบฒเบเบฅเบงเบกเบเบฑเบเบเบตเปเบซเบฒเบเบฒเบเบเบญเบเบกเบนเบเบเปเบฒเปเบเบทเบญเบเบเบตเปเบเบทเบเบเปเบญเบ, เปเบเปเบชเปเบฒเบฅเบฑเบเบเบนเปเบเบปเบงเปเบกเบ exotic. เบงเบฝเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญ sift เบเปเบฒเบเบซเบฅเบฒเบเบชเบดเบเบเบฑเบเบเบญเบเบกเบนเบเบเปเบฒเบเปเปเบงเบดเบเบฒเบเบตเปเบฅเบฐเบเปเบฒเบเบปเบเบชเบดเปเบเบเบตเปเปเบเปเบเบญเบเบเบตเปเบเบฐเบชเบฐเปเบเบเปเบซเปเบฅเบนเบเบเปเบฒ. เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบฑเปเบเบเบญเบเบญเบญเบเบกเบนเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบเบเบฒเบเปเบเบเบเบญเบเบเบธเปเบเปเบฅเบฐ silt, เบเบทเบเบฑเบเบเบฑเบ flamingos เปเบฎเบฑเบเปเบเบญเบฒเบซเบฒเบเบเปเบฝเบ.
เบฅเบฑเบเบชเบฐเบเบฐเบเบดเปเบชเบเบเบญเบ flamingos เปเบกเปเบเบเบฒเบเบซเบกเบฒเบเปเบเปเบเบฅเบปเบเบฅเบธเปเบกเบเบฐเบซเบเบฒเบเปเบซเบเป, เบเบงเบเบกเบฑเบเบเบฑเปเบเบเบญเบเบญเบฒเบซเบฒเบเบเบฒเบเบเปเปเบฒเบซเบผเบทเบเบตเปเบเบปเบก.
-เบงเบดเบเบดเบเบตเปเบเบ
เบเบฑเปเบเบเบฑเปเบ, เบซเปเบชเบฐเบซเบกเบธเบเปเบเปเปเบเบตเบ Vela
เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบฑเบเบเปเบฒเบญเบฑเบเบเบฒเบชเปเบฒเบฅเบฑเบเบชเบฒเบกเบเบนเปเบชเบฐเบเบธเบเปเบเบดเบ. เบเปเบฒเบเบดเบเบฒเบกเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบ Vela
เปเบเบทเปเบญโเปเบเบฑเบโเบฎเบฑเบโเบชเบฒโเบชเบฐโเบเบฒโเบเบฐโเบเบฒเบโเบเบฐโเบเบธโเบเบฑเบโเบกเบฑเบโเบเบฐโเปเบเบดเปเบโเบเบทโเปเบเบงโเบเบตเปโ:
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
เบเบฒเบเบเบฑเบเบเบธเบเบกเบนเบเบเปเบฒ
Vela.put/3
- เบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบ
validator
เบเปเบฝเบงเบเบฑเบเบกเบนเบเบเปเบฒ, เบเปเบฒเบซเบเบถเปเบเบเบทเบเบเปเบฒเบเบปเบ (เปเบเบดเปเบเบเบปเบ เบเบฒเบเบเบงเบเบชเบญเบ เบเปเบฒเบเบฅเบธเปเบกเบเบตเป); - เบเบฐเปเบเบตเปเบกเบเปเบฒเบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเปเบเบงเบเบญเบเบเปเบฒเบเบตเปเบเบตเบเปเบฒเบเบฒเบเบเบงเบเบชเบญเบเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบซเบผเบทเปเบเบงเบเปเบฅเบดเบเบฒเบ.
:__errors__
เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ; - เบเบฐเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเปเบฒ
sorter
เบเปเบฒเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฐเปเบเบเบตเปเปเบซเป, เบซเบผเบทเบเบฝเบเปเบเปเบเบฐเปเบชเปเบเปเบฒเบขเบนเปเบซเบปเบงเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป (LIFO, เปเบเบดเปเบเบเบปเบ เบเบฒเบเบฎเบฝเบเบฅเปเบฒเบเบฑเบ เบเปเบฒเบเบฅเบธเปเบกเบเบตเป); - เบเบฐเบเบฑเบเปเบเบงเบเบฒเบกเบเบฒเบฅเบฒเบกเบดเปเบเบต
:limit
เบเปเบฒเบเบเบฒเบเบชเปเบฒเบ; - เบเบฐเบชเบปเปเบเบเบทเบเปเบเบเบชเปเบฒเบเบเบตเปเบเบทเบเบเบฑเบเบเบธเบ
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]}
เบเบญเบเบเบฒเบเบเบฑเปเบ Vela
เบเบฐเบเบดเบเบฑเบ Access
Kernel
Kernel.get_in/2
Kernel.put_in/3
Kernel.update_in/3
Kernel.pop_in/2
Kernel.get_and_update_in/3
เบเบฒเบเบเบงเบเบชเบญเบ
A validator เบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบ:
- เบเบฒเบเบเปเบฒเบเบฒเบเบเบฒเบเบเบญเบเบเบตเปเบกเบตเบซเบเบถเปเบ argument (
&MyMod.my_fun/1
), เบกเบฑเบเบเบฝเบเปเบเปเบเบฐเปเบเปเบฎเบฑเบเบกเบนเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบงเบเบชเบญเบ; - เบเบฒเบโเบเปเบฒโเบเบฒเบโเบเบฒเบโเบเบญเบโเบเบตเปโเบกเบตโเบชเบญเบโเบเบฒเบโเปเบเปโเบเบฝเบโ,
&MyMod.my_fun/2
, เบเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบเบนเปserie, value
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบงเบเบชเบญเบ; - เบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบกเบเบนเบ
;Vela.Validator
- เบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒ
threshold
, เปเบฅเบฐ - เบเบฒเบเปเบฅเบทเบญเบ -compare_by
, เปเบเบดเปเบเบเบปเบ เบเบฝเบเบเบฝเบ เบเปเบฒเบเบฅเบธเปเบก.
เบเปเบฒเบเบฒเบเบเบงเบเบชเบญเบเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบกเบนเบเบเปเบฒเบเบฐเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเปเบฅเบฐเบซเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, tuple {serie, value}
เปเบ :__errors_
.
เบเบฝเบเบเบฝเบ
เบเปเบฒเบเบตเปเปเบเบฑเบเปเบงเปเปเบเปเบเบงเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบเบชเบดเปเบเปเบ. เปเบเบทเปเบญโเบชเบญเบ Vela
เปเบเบทเปเบญเบเบฝเบเบเบฝเบเบเบงเบเบกเบฑเบ, เบกเบฑเบ เบเบณ เปเบเบฑเบเบเปเบญเบเปเบญเบ compare_by
เบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบเปเบฒเบเบดเบเบฒเบกเบเบธเบ (เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเบเบฝเบเบเบฝเบเบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบ Kernel.</2
); เบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเบเปเบญเบเปเบเบฑเบเบเบฐเปเบเบ (Vela.value() -> number())
. เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบกเบฑเบเบเปเบฒเบเบเบฒเบ & &1
.
เบเบญเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบฑเบเบเปเบฒเบเบดเบเบฒเบกเปเบเบง comparator
เบเบฒเบโเบเบดเบโเปเบฅเปโเบเปเบฒ delta (min
/max
); เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบเบเบเบฒเบเบเปเบฒเบเบเบญเบ Date.diff/2
เปเบเบฑเบเบเบนเปเบเบฝเบเบเบฝเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ deltas เบเบตเปเบเบทเบเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบงเบฑเบเบเบต.
เบญเบตเบเบงเบดเบเบตเบซเบเบถเปเบเบเบตเปเบชเบฐเบเบงเบเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบกเปเบเบเปเบฒเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ threshold
, เปเบเบดเปเบเบเปเบฒเบเบปเบเบญเบฑเบเบเบฒเบชเปเบงเบเบชเบนเบเบชเบธเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเบเบญเบเบเปเบฒเปเบซเบกเปเบเบฑเบ {min, max}
เปเบฅเบเบฐเบซเปเบฒเบ. เปเบเบทเปเบญเบเบเบฒเบเบกเบฑเบเบเบทเบเบฅเบฐเบเบธเปเบเบฑเบเปเบเบตเปเบเบฑเบ, เบเบฒเบเบเบงเบเบชเบญเบเบเปเปเปเบเปเปเบเป comparator
เปเบเปเบเบฑเบเปเบเป compare_by
. เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเปเบฒเปเบเบเบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบงเบฑเบเบเบต, เบเปเบฒเบเบเปเบญเบเบฅเบฐเบเบธ compare_by: &DateTime.to_unix/1
(เปเบเบทเปเบญเปเบซเปเปเบเปเบเปเบฒเบเปเบฒเบเบงเบเปเบเบฑเบก) เปเบฅเบฐ threshold: 1
, เปเบเบดเปเบเบเปเปเปเบซเปเปเบเบตเบเบเปเบฒเปเบซเบกเปเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฝเบเปเบเปเบเปเบฒเบเบงเบเปเบเบปเบฒเบขเบนเปเปเบ ยฑband
เปเบฅเบเบฐเบซเปเบฒเบเบเบฒเบเบเปเบฒเบเบฑเบเบเบธเบเบฑเบ.
เบชเบธเบเบเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป Vela.equal?/2
เปเบเบทเปเบญเบเบฝเบเบเบฝเบเบชเบญเบเปเบเบช. เบเปเบฒเบเปเบฒเบเปเบฒเบเบปเบเบซเบเปเบฒเบเบตเป equal?/2
เบซเบผเบท compare/2
, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบเบฑเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒ stupidly เปเบเป ==/2
.
เปเบเปเบฎเบฑเบเบเบธเบเบเปเบฒ
เบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบชเบฐเบเบฒเบเบฐเบเบฑเบเบเบธเบเบฑเบเบกเบฑเบเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเปเบเบซเบฒ Vela.purge/1
, เปเบเบดเปเบเปเบญเบปเบฒเบเปเบฒเบเบตเปเบฅเปเบฒเบชเบฐเปเบซเบก (เบเปเบฒ validator
เบเบนเบเบกเบฑเบเบเบฑเบ timestamps
). เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบซเบฒ Vela.slice/1
เปเบเบดเปเบเบเบฐเบเบฑเบเบเบทเบเบกเบฒ keyword
เบเปเบงเบเบเบทเปเปเบเบงเปเบเบฑเบเบเบฐเปเบ เปเบฅเบฐเบเปเบฒเบเบณเบญเบดเบ, เบเปเบฒเบเบปเบงเบเบดเบ.
เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป get_in/2
/pop_in/2
เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบฅเบฐเบเบฑเบเบเปเปเบฒเบเบฑเบเบเปเบฒเปเบเปเบเปเบฅเบฐเปเบเบง.
Application
Vela
เบชเบฒโเบกเบฒเบโเปเบเบฑเบโเบเบฐโเปเบซเบเบโเบเบตเปโเบชเบธเบโเปเบเบฑเบโเบเบฒเบโเบเบงเบฒเบกโเบเปเบฒโเบเบธเบโเปเบงโเบฅเบฒโเปเบโเบชเบฐโเบเบฒโเบเบฐโเบเบฒเบโเบเบฐโเบเบงเบโเบเบฒเบโเปเบเบฑเปเบโ:โ GenServer
/Agent
. เบเบงเบโเปเบฎเบปเบฒโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเบเปเปโเปเบเบตเบโเบเปเบฒโเปเบเปโเบเบธเบโเบเปเบฒโเบซเบผเบฑเบโเบชเบนเบ stale, เปเบฅเบฐโเปเบเบทเปเบญโเปเบฎเบฑเบโเบชเบดเปเบโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเบฝเบโเปเบเปโเบฎเบฑเบโเบชเบฒโเบเบฐโเบเบงเบโเบเบฒเบโเบเบตเปโเบกเบตโเบเบฒเบโเบเบธเบโเปเบเปเบโเบฅเบฑเบ Vela
, เบเบฑเบ validator เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
ะธ Vela.purge/1
quietly เปเบญเบปเบฒเบเปเบฒ stale เบเบฑเบเบซเบกเบปเบเบเบธเบเบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบ. เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเบเบธเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเปเบเบซเบฒ Vela.slice/1
, เปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบซเบงเบฑเบเบชเบฒเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบญเบเบซเบผเบฑเบเบชเบนเบเปเบกเปเบเบเปเบญเบเบเบฒเบ (เบเบธเบเบเบฑเบเบซเบกเบปเบ), เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบชเบปเปเบเบเบทเบเบกเบฑเบ - เบเบฑเบเบฎเบฝเบเปเบฅเปเบง - เบเปเบงเบเบกเบนเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบ.
เบเบฒเบเปเบเบฑเบเบเบธเบเปเบงเบฅเบฒเบกเบตเบเบงเบฒเบกเบชเบธเบ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com