Thrifty - Cutils Command Qualifier: Difference between revisions

m
 
(12 intermediate revisions by the same user not shown)
Line 7: Line 7:
Thrifty tries to effectively minimise what needs to be done to create the output i.e. it will not generate YADR output for years past as, once generated, the information will never change again. Every module has different methods and needs. This article describes how to invoke thrifty and what the user can expect.  
Thrifty tries to effectively minimise what needs to be done to create the output i.e. it will not generate YADR output for years past as, once generated, the information will never change again. Every module has different methods and needs. This article describes how to invoke thrifty and what the user can expect.  


This is a work in progress as user requests, new efficiency discoveries and efficiency code changes will change over time.
Note that CumulusMX itself uploads the data for the charts to the website. It is not advised to switch that off completely but to verify that you only send the data for the charts you use require. The data will be the bulk of your transfers so it will count.


Note that CumulusMX itself uploads the data for the charts to the website. It is not advised to switch that off but verify you only send the data the charts you use require. The data will be the bulk of your transfers so it will count.
Thrifty was primarily developed with internet transfers in mind, in a second stage CPU usage and generation were added. This is a work in progress as user requests, new efficiency discoveries and efficiency code changes will change over time.
 
'''NOTE: With the coming of the [[ChartsCompiler]] the Thrifty algorithm for the ''Website'' command for the charts and for cumulsutuils.txt (containing the Home page charts) will change. Until then it is like below and if you use the [[ChartsCompiler]] you should run a non Thrifty Website command if you make changes.'''


== Operation ==
== Operation ==
Line 15: Line 17:


   utils/bin/cumulusutils.exe Thrifty Website      => This activates the Thrifty command qualifier on the Website generation
   utils/bin/cumulusutils.exe Thrifty Website      => This activates the Thrifty command qualifier on the Website generation
  utils/bin/cumulusutils.exe Thrifty All          => This activates the Thrifty command qualifier on the All modules generation
   utils/bin/cumulusutils.exe Website Thrifty      => This only runs Website, Thrifty is ignored  
   utils/bin/cumulusutils.exe Website Thrifty      => This only runs Website, Thrifty is ignored  
   utils/bin/cumulusutils.exe YADR Records Thrifty  => This activates the Thrifty command qualifier on the named modules
   utils/bin/cumulusutils.exe YADR Records Thrifty  => This activates the Thrifty command qualifier on the named modules
Line 34: Line 35:
   MiscGraphsPeriod=1
   MiscGraphsPeriod=1
   SolarGraphsPeriod=3
   SolarGraphsPeriod=3
For specified parts or/of modules, periodicity can be specified for the Thrifty system. See also the table below. Numbers are in days. Default is 1 day for each parameter. So if you give a periodicity of 2 for e.g. the temperature graphs (not individual graphs), then every other day the temperature graphs will be refreshed.
If the following is true then the module is calculated:
  <math>{current\ day\ of\ year}\, \bmod\, {periodicity} \equiv 0</math>
So, for that temperature graph, on a 123th day of the year, with a periodicity of 3 those graphs will be created. With a periodicity of 4 it will not.
Advise: Start with the defaults and if it takes too long, start augmenting the periodicity, balancing it to your need for up to date graphs. First graphs to look at would be the Wind graphs (which includes the WindRose).


== Inner working ==
== Inner working ==
In this section for every module the effect of Thrifty is described and a summary is given. The explanation of thrifty starts by what you can do manually.
In this section for every module the effect of Thrifty is described and a summary is given. The explanation of thrifty starts by what you can do manually.
'''NOTE: When updating always run without Thrifty first time after the update!'''


=== Uploading manually ===
=== Uploading manually ===
Line 68: Line 79:


The above is the advise if you are uploading manually and make the decisions on your own. It is also important for understanding what is happening in the automatic Thrifty system. If you upload automatically everything this is being taken care of : a module is generated and uploaded only according to the above specification.
The above is the advise if you are uploading manually and make the decisions on your own. It is also important for understanding what is happening in the automatic Thrifty system. If you upload automatically everything this is being taken care of : a module is generated and uploaded only according to the above specification.
=== Uploading Automatically ===
Automatic ''Thrifty'' handling assumes a daily run of ''CumulusUtils''.
For proper understanding we split the usage in ''modules'' and ''website''.
==== Thrifty Website ====
Under Thrifty, the following holds for the website files and the website infrastructure:
#Always upload ''index.html'' after generating the website.
#The runtime javascript environment files will NOT be generated and NOT be uploaded - to prevent old existing files to upload - under the ''Thrifty Website'' command.
#The library files from the distribution will NOT upload under the ''Thrifty Website'' command:
Runtime javascript environment files:
cumulusutils.js
cumuluscharts.txt
HighchartsLanguage.js
Library files from the distribution:
HighchartsDefaults.js
gauges.js
suncalc.js
tween.min.js
language.js
RGraph.common.core.js
RGraph.rose.js
steelseries.min.js
NOTE: When updating, copy those files from the distribution and DO NOT USE THRIFTY
==== Thrifty Modules ====
The decision to automatically upload a file or not - assuming ''DoUploadFTP=true'' = is done on the basis of two parameters:
#Have the cycle conditions become true
#Has a file been modified
Some modules have a period in days associated with them which determines if the module is run and uploaded at all. An example is e.g. every third day for the graphs because either the user does not look at this so often of the chart does not change that much on the basis of one or two days. Default the cycles are set to one day which means the cycle condition will always be true.
The modification of the file is being done either during the data selection (in which case the generation of the module output will be finished) or because of the algorithm in which case some of the output will not be generated. This is done by setting the ''Dirty bit''. Which is simply a flag that - if true - says : yes the output has changed since yesterday so it needs to be generated and uploaded.
Examples:
#When the [[records]] output needs to be generated, during that generation it is determined whether any records have been set at all. If no record has been set then the ''Dirty bit'' remains false. If possible the generation of the output is cancelled and the upload will not be done.
#For the [[Yadr]] module under the ''Thrifty'' condition we definitely know the past years will not have been modified so those years need not to be generated nor uploaded again. So only the current year is generated and uploaded. The menu actually only changes when a  new year is added which is done on the 2<sup>nd</sup> of January so that is the only day Yadr.txt will be  uploaded under ''Thrifty''.
Then at the end during uploading for each module under Thrifty condition it is checked if any of the Thrifty conditions has become true (periodic or ''Dirty bit'') and if so, the module output is uploaded.
=== Thrifty Summary Table ===
{| align="center" class="wikitable"
|-
! Module !! Files !! Thrifty Generation !! Thrifty Upload<ref>When periodic see inifile parameters section Thrifty. Period in days.</ref>
|-
| Website<br><br><br><br> || index.html<br>cumulusutils.js<br>cumuluscharts.txt<br>highchartsLanguage.js<br> || Always<br>Never<br>Never<br>Never<br> || Yes<br>Never<br>Never<br>Never<br>
|-
| Charts<ref>If all charts of a group are switched off then no menu is generated and the corresponding charts are neither generated nor uploaded.</ref><br><br><br><br><br><br> || graphsmisc.txt<br>graphstemp.txt<br>graphsrain.txt<br><br>graphswind.txt<br>graphssolar.txt<br> || periodic<br>periodic<br>yesterday rain OR<br> periodic<br>periodic<br>periodic<br> || If generated<br>if generated<br>if generated<br><br>if generated<br>if generated<br>
|-
| Top10 || Top10Table.txt || when dirty / periodic<ref>Dirty means that yesterday had a record. The consequence of this is that thrifty works best with a daily run of CumulusUtils with the Thrifty qualifier.</ref> || when dirty / periodic1<ref>Periodic to remove accented records if 30 days have past</ref>
|-
| Records || records.txt || when dirty || when dirty
|-
| Day Records || dayrecords.txt || when dirty || when dirty
|-
| NOAA || noaa.txt || 2d day of month || 2d day of month
|-
| Forecast || forecast.txt || always || always
|-
| Yadr || yadr.txt<br>yadrtemp{year}.txt<br>yadrrain{year}.txt<br>yadrwind{year}.txt<br>yadrwindrun{year}.txt<br>yadrpress{year}.txt<br>yadrhum{year}<br> || 2d day of year<br>current year<br>current year<br>current year<br>current year<br>current year<br>current year<br> || 2d day of year<br>current year<br>current year<br>current year<br>current year<br>current year<br>current year<br>
|-
| AirLink || airlink.txt || Never || Never
|-
| StationMap || Stationmap.txt || Never || Never
|}
<references />
[[Category:CumulusUtils]]