У вас не стоит Flash Player
Настройки
#87041 - Thu Aug 26 2021 09:52 PM Кубик "InterRecalcMemorizer"
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Кубик "InterRecalcMemorizer"

Периодически в процессе сборки скриптов возникает необходимость сохранять и восстанавливать данные из кеша. В ТСЛаб имеется штатный функционал "Загрузить из локального кеша", "Сохранить в локальный кеш", однако, он требует, чтобы данные кубики были разнесены по разным скриптам, что хорошо видно в видео TSLab Live - Саро Микаелян. ... стакане на 35:30 по времени. Чтобы использовать данный функционал в рамках одного скрипта были написаны 2 кубика: InterRecalcBoolMemorizer, InterRecalcDoubleMemorizer, соответственно, первый запоминает между пересчетами логическое значение, второй - число типа double.

Кубик InterRecalcBoolMemorizer представляет "запоминатель" сигналов между пересчетами. Работает в двух режимах, либо просто запоминает сигнал и переносит его на следующий пересчет, либо увеличивает значение сигнала на 1 и переносит на сл.пересчет, таким образом либо осуществляется просто запоминание, либо счет количества событий. Значение запоминается на последнем баре, то есть если на последнем баре было True, то на следующем пересчете кубик будет выдавать 1, на следующем 2 и т.д. (в режиме счетчика) будет 1. Значение, выданное на первом баре будет неизменно до окончания пересчета. Как только значение на последнем баре станет false, то на следующем пересчете кубик выдаст 0 и так далее по кругу. В случае если в кеше не содержится никакого значения, то возвращается ноль. На выходе кубик выдает тип double, то есть число, для преобразования в логическое значение необходимо использовать дополнительную формулу после кубика, например, "InterRecalcBoolMemorizer==1? true: false". Для запоминания данных кубик использует локальный кеш. В случае если данных в кеше не оказалось (то есть кеш пустой), то кубик возвращает ноль.

Кубик InterRecalcDoubleMemorizer представляет "запоминатель" значений между пересчетами. Значение запоминается на последнем баре, то есть если на последнем баре было 1000, то на следующем пересчете кубик будет выдавать 1000. Значение, выданное на первом баре будет неизменно до окончания пересчета. Как только значение на последнем баре изменится, то на следующем пересчете кубик выдаст измененное значение и так далее по кругу. В случае если в кеше не содержится никакого значения, то возвращается ноль. Для запоминания данных кубик использует локальный кеш. В случае если данных в кеше не оказалось (то есть кеш пустой), то кубик возвращает ноль.

У кубика имеются следующие настройки:
  • ID. Дополнительный идентификатор, используется если в одном скрипте задействовано более одного кубика "запоминателя", в этом случае необходимо для каждого указать свой уникальный ID. В противном случае каждый кубик будет перетирать данные другого кубика при сохранении информации в кеш (при одинаковых ID перетираться будут данные только однотипных "запоминателей", то есть данные InterRecalcDoubleMemorizer не перетираются данными InterRecalcBoolMemorizer и наоборот).
  • Режим счетчика. Только для кубика InterRecalcBoolMemorizer. При установке данной опции кубик будет работать в режиме счетчика, при снятой опции в режиме запоминания.
Примечание: Кубик работает только совместно с библиотекой ServiceLib, которую необходимо поместить в папку Handlers

Дисклеймер: Кубик предоставляется "as is", но с обязательным тестированием и проверкой всех данных вручную. При выявлении багов просьба писать в телеграмм: @AleksandrGanov.

Общая информация по доп.кубикам:
===================================


Attachments
gaaCommon_ServiceLib.zip (27 downloads)
gaaDifferent_InterRecalcBoolMemorizer.zip (27 downloads)
InterRecalcBoolMemorizer.cs (45 downloads)
gaaDifferent_InterRecalcDoubleMemorizer.zip (31 downloads)
InterRecalcDoubleMemorizer.cs (57 downloads)



Отредактировано AleksandrGanov (Thu Aug 26 2021 10:16 PM)

Наверх
#87072 - Wed Sep 15 2021 01:01 PM Re: Кубик "InterRecalcMemorizer" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубиков:
  • Добавлена настройка "Кэшировать данные на диск". Настройка определяет требуется ли кэшировать данные на диск и восстанавливать их с диска. Кэширование на диск нужно в тех случаях, когда значение должно быть восстановлено в том числе после перезагрузки ТСЛаб, например, запоминается последняя дата отправленного сообщения, если не кэшировать на диск, то после перезапуска ТСЛаб по расписанию в скрипт придет информация с "пустой" датой, соответственно, логика отработает неверно, т.к. будет принято значение НОЛЬ. По умолчанию настройка отключена, чтобы не было неверной логики там, где запоминание данных на диск не требуется и нужны лишь данные, когда агент реально работает и которые теряют свою актуальность при перезагрузке системы


Attachments
gaaCommon_ServiceLib.zip (30 downloads)
InterRecalcBoolMemorizer.cs (47 downloads)
gaaDifferent_InterRecalcBoolMemorizer.zip (28 downloads)
InterRecalcDoubleMemorizer.cs (62 downloads)
gaaDifferent_InterRecalcDoubleMemorizer.zip (35 downloads)



Отредактировано AleksandrGanov (Wed Sep 15 2021 01:02 PM)

Наверх
#87156 - Sat Dec 04 2021 09:45 PM Re: Кубик "InterRecalcMemorizer" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубиков:
  • перекомпилированы под под Net 5.0 для возможности использования в ТСЛаб 2.2


Attachments
gaaDifferent_InterRecalcBoolMemorizer.zip (23 downloads)
gaaDifferent_InterRecalcDoubleMemorizer.zip (27 downloads)


Наверх


Moderator:  ViL, sar