Vela β†’ ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ кСш Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии ΠΈ Π΄Ρ€

Π’ΡŠΠ² Ρ„ΠΈΠ½Ρ‚Π΅Ρ… чСсто трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ доста ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ ΠΎΠ±Π΅ΠΌΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Π°Π»ΡƒΡ‚Π½ΠΈΡ‚Π΅ курсовС. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ ΠΈ всСки ΠΎΡ‚ тях ΠΈΠΌΠ° собствСна идСя ΠΊΠ°ΠΊ Π΄Π° Скстраполира ΠΎΠ±ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ курсовС Π·Π° ΡƒΡ‚Ρ€Π΅, Π²Π΄Ρ€ΡƒΠ³ΠΈΠ΄Π΅Π½, слСдващия мСсСц ΠΈ Π΄ΠΎΡ€ΠΈ слСдващитС Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Π‘Π°ΠΌΠΎ Π°ΠΊΠΎ някой моТСшС Π΄Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈ курсовСтС ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‰Π΅ Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π·Π°Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ бизнСса ΠΈ просто Π³Π»ΡƒΠΏΠ°Π²ΠΎ Π΄Π° обмСнятС ΠΏΠ°Ρ€ΠΈ Π½Π°ΠΏΡ€Π΅Π΄-Π½Π°Π·Π°Π΄. Някои ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ са ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ, някои прСдоставят пълСн Π±ΠΎΠΊΠ»ΡƒΠΊ, с Ρ€Π΅Π΄ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ стойности, Π½ΠΎ Π·Π° Π΅ΠΊΠ·ΠΎΡ‚ΠΈΡ‡Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ. ΠΠ°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΅ Π΄Π° прСсССм Ρ‚Π΅Π·ΠΈ дСсСтки хиляди стойности Π² сСкунда ΠΈ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅. Врябва Π΄Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΠΌΠ΅ СдинствСната ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° стойност ΠΎΡ‚ Ρ‚ΠΎΠ½ΠΎΠ²Π΅ ΠΌΡ€ΡŠΡΠΎΡ‚ΠΈΡ ΠΈ тиня, Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Ρ„Π»Π°ΠΌΠΈΠ½Π³ΠΎΡ‚ΠΎ правят Π½Π° обяд.

Vela β†’ ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ кСш Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ сСрии ΠΈ Π΄Ρ€

ОсобСна ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»Π½Π° Ρ‡Π΅Ρ€Ρ‚Π° Π½Π° Ρ„Π»Π°ΠΌΠΈΠ½Π³ΠΎΡ‚ΠΎ Π΅ масивният ΠΈΠΌ ΠΈΠ·Π²ΠΈΡ‚ Π½Π°Π΄ΠΎΠ»Ρƒ клюн, с ΠΊΠΎΠΉΡ‚ΠΎ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Ρ‚ Ρ…Ρ€Π°Π½Π°Ρ‚Π° ΠΎΡ‚ Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠ°Π».
 - Wiki

Π’Π°ΠΊΠ° сС Ρ€Π°ΠΆΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Vela, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° кСш Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π·Π° мноТСство стойности Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅. Под ΠΊΠ°ΠΏΠ°ΠΊΠ° Ρ‚ΠΎΠΉ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° лоши ΠΈ остарСли Π΄Π°Π½Π½ΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° осигурява Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ N Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½ΠΈ стойности Π·Π° всСки ΠΊΠ»ΡŽΡ‡ (Π²Π°Π»ΡƒΡ‚Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ, Π² нашия случай).

Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ курсовС Π·Π° Ρ‚Ρ€ΠΈ Π²Π°Π»ΡƒΡ‚Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ. Най-простото ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 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 Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° ниско Π½ΠΈΠ²ΠΎ Π΄ΠΎ стойноститС във всСки Ρ€Π΅Π΄.

App

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€