په فنټیک کې، موږ ډیری وختونه د اسعارو د تبادلې نرخ ډیټا خورا لوی مقدار پروسس کوو. موږ د مختلفو سرچینو څخه معلومات ترلاسه کوو، او هر یو یې خپل نظر لري چې څنګه د سبا، بله ورځ، راتلونکې میاشت او حتی راتلونکو دریو کلونو لپاره د تبادلې نرخونه څنګه اضافه کړي. که یوازې یو څوک د نرخونو وړاندوینه کولی شي ښی، دا به وخت وي چې سوداګرۍ وتړئ او یوازې په احمقانه توګه پیسې په شا او خوا بدل کړئ. ځینې سرچینې خورا باوري دي، ځینې یې بشپړ کثافات وړاندې کوي، د نږدې سمو ارزښتونو نادر شاملولو سره، مګر د بهرنیو جوړه لپاره. زموږ دنده دا ده چې په هره ثانیه کې د دې لسګونو زرو ارزښتونو له لارې وپلټئ او مشخص کړئ چې پیرودونکو ته دقیقا څه وښیو. موږ اړتیا لرو چې یو سم ارزښت د ټن کثافاتو او خړوبولو څخه فلټر کړو، لکه څنګه چې فلیمینګو د غرمې په ډوډۍ کې کوي.
د فلیمینګو یو ځانګړی ځانګړتیا د دوی لوی ښکته خوا ته منحل شوي چونګښې دي چې په دې سره دوی د اوبو یا خټو څخه خواړه فلټر کوي.
-ویکي
په دې توګه کتابتون رامنځته شو 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
اعتبار
یو تصدیق کوونکی په لاندې ډول تعریف کیدی شي:
- بهرنی فعالیت د یو دلیل سره (
&MyMod.my_fun/1
)، دا به یوازې د اعتبار لپاره ارزښت ترلاسه کړي؛ - بهرنی فعالیت د دوو دلیلونو سره،
&MyMod.my_fun/2
، هغه به یوه جوړه ترلاسه کړيserie, value
د اعتبار لپاره - د ماډل پلي کول
;Vela.Validator
- د ترتیب پیرامیټر
threshold
، او - په اختیاري توګه -compare_by
، څپرکی وګورئ په پرتله لاندې.
که تایید بریالی وي، ارزښت د اړونده کیلي لاندې لیست کې اضافه کیږي؛ که نه نو، ټپل {serie, value}
ورتګ :__errors_
.
پرتله کول
په دې قطارونو کې زیرمه شوي ارزښتونه هر څه کیدی شي. درس ورکول Vela
د دوی پرتله کولو لپاره، دا اړینه ده چې انتقال شي compare_by
د لړۍ تعریف کې پیرامیټر (غیر لدې چې ارزښتونه د معیار سره پرتله نشي Kernel.</2
); دا پیرامیټر باید د ډول وي (Vela.value() -> number())
. په ډیفالټ دا ساده ده & &1
.
همچنان ، تاسو کولی شئ د قطار تعریف ته پیرامیټر انتقال کړئ comparator
د ډیلټا ارزښتونو محاسبه کول (min
/max
); د بیلګې په توګه، د لیږد له لارې Date.diff/2
د پرتله کوونکی په توګه، تاسو کولی شئ د نیټو لپاره سم ډیلټا ترلاسه کړئ.
د کار کولو بله اسانه لار د پیرامیټر تیرول دي threshold
، کوم چې د نوي ارزښت اعظمي اجازه وړ تناسب تعریفوي {min, max}
وقفه څرنګه چې دا د فیصدي په توګه مشخص شوی، چک نه کاروي comparator
مګر بیا هم کاروي compare_by
. د مثال په توګه، د نیټې وخت لپاره د حد ارزښت مشخص کولو لپاره، تاسو باید مشخص کړئ compare_by: &DateTime.to_unix/1
(د عددي ارزښت ترلاسه کولو لپاره) او threshold: 1
، د دې لامل کیږي چې نوي ارزښتونو ته اجازه ورکړل شي یوازې که دوی دننه وي ±band
د اوسني ارزښتونو څخه وقفه.
په نهایت کې ، تاسو کولی شئ وکاروئ Vela.equal?/2
دوه کیچونه پرتله کول. که ارزښتونه یو فنکشن تعریف کړي equal?/2
او یا compare/2
، نو دا افعال به د پرتله کولو لپاره وکارول شي ، که نه نو موږ په احمقانه ډول کاروو ==/2
.
د ارزښتونو ترلاسه کول
د اوسني حالت پروسس کول معمولا د زنګ وهلو سره پیل کیږي Vela.purge/1
، کوم چې متروک ارزښتونه لرې کوي (که validator
پورې تړلی timestamps
). بیا تاسو کولی شئ تلیفون وکړئ Vela.slice/1
کوم چې بیرته راګرځي keyword
د قطار نومونو سره د کیلي په توګه او لومړی، اصلي ارزښتونه.
تاسو کولی شئ هم وکاروئ get_in/2
/pop_in/2
په هر قطار کې ارزښتونو ته د ټیټې کچې لاسرسي لپاره.
کاریال
Vela
د پروسې حالت کې د وخت لړۍ کیچ په توګه خورا ګټور کیدی شي لکه GenServer
/Agent
. موږ غواړو چې هیڅکله د کورس زاړه ارزښتونه ونه کاروو، او د دې کولو لپاره موږ په ساده ډول د دولت پروسس شوي پروسې سره ساتو Vela
، لاندې ښودل شوي تصدیق کونکي سره.
@impl Vela.Validator
def valid?(_key, %Rate{} = rate),
do: Rate.age(rate) < @death_age
и Vela.purge/1
هرکله چې موږ ډیټا ته اړتیا لرو په خاموشۍ سره ټول زاړه ارزښتونه لرې کوي. حقیقي ارزښتونو ته د لاسرسي لپاره موږ په ساده ډول زنګ وهو Vela.slice/1
، او کله چې د کورس کوچنۍ تاریخ ته اړتیا وي (ټول لړۍ) ، موږ په ساده ډول دا بیرته ورکوو - دمخه ترتیب شوي - د تایید شوي ارزښتونو سره.
خوشحاله وخت لړۍ کیچ کول!
سرچینه: www.habr.com