Module: SpatialStats::Queries::Weights
- Defined in:
- lib/spatial_stats/queries/weights.rb
Overview
Weights includes methods for querying a scope using PostGIS sql methods to determine neighbors and weights based on different weighting schemes/formulas.
Class Method Summary collapse
-
._contiguity_neighbors(scope, column, pattern) ⇒ Hash
Generic function to compute contiguity neighbor weights for a given scope.
-
.distance_band_neighbors(scope, column, bandwidth) ⇒ Hash
Compute distance band weights for a given scope.
-
.idw_band(scope, column, bandwidth, alpha = 1) ⇒ Hash
Compute inverse distance weighted, band limited weights for a given scope and geometry.
-
.idw_knn(scope, column, k, alpha = 1) ⇒ Hash
Compute inverse distance weighted, k nearest neighbors weights for a given scope and geometry.
-
.knn(scope, column, k) ⇒ Hash
Compute k nearest neighbor weights for a given scope.
-
.queen_contiguity_neighbors(scope, column) ⇒ Hash
Compute queen contiguity weights for a given scope.
-
.rook_contiguity_neighbors(scope, column) ⇒ Hash
Compute rook contiguity weights for a given scope.
Class Method Details
._contiguity_neighbors(scope, column, pattern) ⇒ Hash
Generic function to compute contiguity neighbor weights for a given scope. Takes any valid DE-9IM pattern and computes the neighbors based off of that.
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/spatial_stats/queries/weights.rb', line 203 def self._contiguity_neighbors(scope, column, pattern) klass = scope.klass column = ActiveRecord::Base.connection.quote_column_name(column) primary_key = klass.quoted_primary_key klass.find_by_sql([<<-SQL, scope: scope]) WITH neighbors AS ( WITH scope AS (:scope) SELECT a.#{primary_key} as i_id, b.#{primary_key} as j_id, ST_RELATE(a.#{column}, b.#{column}, \'#{pattern}\') as is_neighbor FROM scope as a, scope as b ORDER BY i_id ) SELECT * FROM neighbors WHERE is_neighbor = 't' SQL end |
.distance_band_neighbors(scope, column, bandwidth) ⇒ Hash
Compute distance band weights for a given scope. Identifies neighbors as other observations in scope that are within the distance band from the observation.
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/spatial_stats/queries/weights.rb', line 146 def self.distance_band_neighbors(scope, column, bandwidth) klass = scope.klass column = ActiveRecord::Base.connection.quote_column_name(column) primary_key = klass.quoted_primary_key klass.find_by_sql([<<-SQL, scope: scope, distance: bandwidth]) WITH neighbors AS ( WITH scope AS (:scope) SELECT a.#{primary_key} as i_id, b.#{primary_key} as j_id, ST_DWithin(a.#{column}, b.#{column}, :distance) as is_neighbor FROM scope as a, scope as b ORDER BY i_id ) SELECT * FROM neighbors WHERE is_neighbor = 't' AND i_id <> j_id SQL end |
.idw_band(scope, column, bandwidth, alpha = 1) ⇒ Hash
Compute inverse distance weighted, band limited weights for a given scope and geometry.
Combines distance_band and idw weightings. Each observation will have neighbers in the bandwidth, but the weights will be calculated by 1/(d**alpha).
Only works for geometry types that implement ST_Distance and ST_DWithin.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/spatial_stats/queries/weights.rb', line 76 def self.idw_band(scope, column, bandwidth, alpha = 1) klass = scope.klass column = ActiveRecord::Base.connection.quote_column_name(column) primary_key = klass.quoted_primary_key neighbors = klass.find_by_sql([<<-SQL, scope: scope, bandwidth: bandwidth]) WITH neighbors AS ( WITH scope AS (:scope) SELECT a.#{primary_key} as i_id, b.#{primary_key} as j_id, ST_DWithin(a.#{column}, b.#{column}, :bandwidth) as is_neighbor, ST_Distance(a.#{column}, b.#{column}) as distance FROM scope as a, scope as b ORDER BY i_id ) SELECT * FROM neighbors WHERE is_neighbor = 't' AND i_id <> j_id SQL # if the lowest distance is <1, then we need to scale # every distance by the factor that makes the lowest 1 min_dist = neighbors.map(&:distance).min scale = if min_dist < 1 1 / min_dist else 1 end neighbors.map do |neighbor| # formula is 1/(d^alpha) weight = 1.0 / ((scale * neighbor.distance)**alpha) hash = neighbor.as_json.symbolize_keys hash[:weight] = weight hash end end |
.idw_knn(scope, column, k, alpha = 1) ⇒ Hash
Compute inverse distance weighted, k nearest neighbors weights for a given scope and geometry.
Combines knn and idw weightings. Each observation will have k neighbors, but the weights will be calculated by 1/(d**alpha).
Only works for geometry types that implement ST_Distance.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/spatial_stats/queries/weights.rb', line 25 def self.idw_knn(scope, column, k, alpha = 1) klass = scope.klass column = ActiveRecord::Base.connection.quote_column_name(column) primary_key = klass.quoted_primary_key neighbors = klass.find_by_sql([<<-SQL, scope: scope, k: k]) WITH scope as (:scope) SELECT neighbors.* FROM scope AS a CROSS JOIN LATERAL ( SELECT a.#{primary_key} as i_id, b.#{primary_key} as j_id, ST_Distance(a.#{column}, b.#{column}) as distance FROM scope as b WHERE a.#{primary_key} <> b.#{primary_key} ORDER BY a.#{column} <-> b.#{column} LIMIT :k ) AS neighbors SQL # if the lowest distance is <1, then we need to scale # every distance by the factor that makes the lowest 1 min_dist = neighbors.map(&:distance).min scale = if min_dist < 1 1 / min_dist else 1 end neighbors.map do |neighbor| # formula is 1/(d^alpha) weight = 1.0 / ((scale * neighbor.distance)**alpha) hash = neighbor.as_json.symbolize_keys hash[:weight] = weight hash end end |
.knn(scope, column, k) ⇒ Hash
Compute k nearest neighbor weights for a given scope.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/spatial_stats/queries/weights.rb', line 118 def self.knn(scope, column, k) klass = scope.klass column = ActiveRecord::Base.connection.quote_column_name(column) primary_key = klass.quoted_primary_key klass.find_by_sql([<<-SQL, scope: scope, k: k]) WITH scope as (:scope) SELECT neighbors.* FROM scope AS a CROSS JOIN LATERAL ( SELECT a.#{primary_key} as i_id, b.#{primary_key} as j_id FROM scope as b WHERE a.#{primary_key} <> b.#{primary_key} ORDER BY a.#{column} <-> b.#{column} LIMIT :k ) AS neighbors SQL end |
.queen_contiguity_neighbors(scope, column) ⇒ Hash
Compute queen contiguity weights for a given scope. Queen contiguity weights are defined by geometries sharing an edge or vertex.
DE-9IM pattern = F**T***
173 174 175 |
# File 'lib/spatial_stats/queries/weights.rb', line 173 def self.queen_contiguity_neighbors(scope, column) _contiguity_neighbors(scope, column, 'F***T****') end |
.rook_contiguity_neighbors(scope, column) ⇒ Hash
Compute rook contiguity weights for a given scope. Rook contiguity weights are defined by geometries sharing an edge.
DE-9IM pattern = 'F**1***'
187 188 189 |
# File 'lib/spatial_stats/queries/weights.rb', line 187 def self.rook_contiguity_neighbors(scope, column) _contiguity_neighbors(scope, column, 'F***1****') end |


DRM inspects railway stations along Chennai-Jolarpet section
Special train in which he traveled develops snag
by Staff ReporterP. Mahesh, Divisional Railway Manager, Southern Railway, Chennai inspected various railway stations on Chennai Central-Jolarpet section on Thursday.
He visited Jolarpet station in the morning and interacted with the station officials on signalling issues and station upkeep.
The special train he travelled in developed a snag in the morning near Sangilikuppam, due to which the Brindavan Express en-route to Bengaluru suffered a delay of more than 45 minutes. Another engine was requisitioned to tow the train to Jolarpet, after which Brindavan Express proceeded on its journey.
Mr. Mahesh also visited Katpadi junction, where he inspected the on-going repair works at a rail overbridge near the railway station.


WITNESS LIST County Affairs Committee May 1, 2006-10:00A Charge 4 On: Allison, Jim (County Judges and Commissioners Assn. of Texas) Hamlin, Marc (Texas Assn. of Counties) Lee, Donald (Texas Conference of Urban Counties) Pardue, Craig (Dallas County) Spataro, Susan (Travis County) Charge 5 On: Allison, Jim (County Judges and Commissioners Assn. of Texas) Julian, Terry (Texas Commission on Jail Standards)


UEFA confirms seeding pots for unusual Euro 2020 draw
NYON, Switzerland (AP) - UEFA has confirmed seeding pots for the 2020 European Championship, where some teams are slotted into groups ahead of the draw next week.
An unusual draw for the 24-nation tournament is made Nov. 30 - four months before four final entries are decided in a playoffs round - and with seven of the 12 host nations already allocated to groups giving them home games in the tournament.
The 20 direct qualifiers are ranked according to points gained and goal difference tiebreakers in 10 preliminary groups completed this week.
Top-ranked Belgium, which is not a host nation, has to be pooled with Russia and Denmark in Group B played in St. Petersburg and Copenhagen.
Ukraine in top-seeded pot 1 cannot be pooled with Russia for security reasons so had to be placed with the Netherlands in Group C, being played in Amsterdam and Bucharest. Romania could qualify through the playoffs in March.
UEFA holds a separate draw Friday to finalize the 16-team playoffs in four separate knockout brackets.
The playoffs lineup includes four host nations - Hungary, Ireland, Romania, Scotland - who must be given home games if they advance.
Kosovo is in the fourth-tier playoffs and, because UEFA ruled the Balkan nation cannot be drawn with Russia for security reasons, the winner of that bracket could not be drawn in Group B.
The finals tournament draw is made on Nov. 30 in Bucharest.
Euro 2020 kicks off June 12 with Italy opening Group A in Rome. The final is July 12 at Wembley Stadium in London.
Pot 1: Belgium (Group B), Italy (hosts - Group A), England (hosts - Group D), Germany (hosts - Group F), Spain (hosts - Group E), Ukraine (Group C).
Pot 2: France, Poland, Switzerland, Croatia, Netherlands (hosts - Group C), Russia (hosts - Group B).
Pot 3: Portugal, Turkey, Denmark (hosts - Group B), Austria, Sweden, Czech Republic.
Pot 4: Wales, Finland, Playoff winner Path A, Playoff winner Path B (includes Ireland - Group E), Playoff winner Path C, Playoff winner Path D.
More AP soccer: https://apnews.com/Soccer and https://twitter.com/AP_Sports
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Home
About
Contact
SEND US YOUR QUOTE
Send your favorite quote
Name
E-Mail
Season/Episode
Quote
Submit


rotten
>
Library
>
Travel
> Larry Walters
No children
Fetish Maximus
|
Rotten
|
Faces of Death
|
Famous Nudes


Annie Yu
Work
About
Resume
Tinder, Badges
Product + UI/UX
Tinder, Profile
Product + UI/UX
LA Hacks, 2018
Branding
Sigma Eta Pi
Branding
Fat Pug, Small Pug
Game Design
Resumes Make Me Sad
Game Design
Look Back
Motion Graphics


Home
About
Categories
Capture
Atmosphere
Exploration Starts Here :
Select
Aerosol Optical Thickness
Aerosol Particle Radius
Carbon Monoxide
Cloud Fraction
Cloud Optical Thickness
Cloud Particle Radius
Cloud Water Content
False Color
Nitrogen Dioxide
Ozone
Rainfall
True Color
True Color 2
Water Vapor
Let's Go!
Refresh
Color Table
Your browser does not support HTML5 Canvas.


Convert any image into text (ascii)
adapted from :
jscii
Click to input image (png/jpg only)
1/2
2
render
or load from URL
get image
Output
copy
{{active == 'static'? 'edit' : 'static'}}
{{text}}


FormValidation Example
Full Name
Username
Gender
Female
Male
Other
Email
URL
Phone
Add a Message
Contact Me Via
Phone
Email
Owl Post
Teleportation
None
State
Queensland
New South Wales
Australian Capital Territory
Victoria
Tasmania
South Australia
Northern Territory
Western Australia
Car
Volvo
Saab
Opel
Audi
Check to agree
Password
Confirm Password
Submit


We place the highest value on our customers and we want you to know that we are committed to safeguarding your privacy. Our policies are designed to help you be comfortable that all interaction with our company is safe and private. We do not discuss, distribute, rent, sell or otherwise disclose any information to data collection companies or others who would use the information to generate mailing lists or maintain databases of information, etc. If required by law, we supply information to appropriate government agencies upon request to the extent required by law.
Changes to this policy
We reserve the right to make changes to our privacy policies at any time.
We will not notify you of any such changes, accordingly we recommend that you check this website periodically to determine if changes have been made.
This policy was last modified on January 3, 2014.
Your consent
By using this website or transacting business with our company by any means, you consent to our Privacy Policy.
Ways we may use the information you supply to us
All information you supply to us is used solely for purposes of conducting normal business activities such as billing and collections directly with you.
We may use your information to keep you updated on new products or services we think may interested you or to determine your satisfaction with our products or other normal business related contact.
If you do not want us to contact you, simply let us know.
All contact we may make is done directly by our company.
For marketing purposes we may supply existing or potential customers with information regarding products used by a given customer.
For example, we may tell a potential customer that "Company 'X' uses a particular style garment".
This information is communicated directly between us and our customers. We do not under any circumstance supply names of individuals, specific addresses, account information, telephone numbers or other related information without first obtaining your authorization.
We may use the name of your organization as part of a customer list for advertising purposes.
We do not include any information except the name of your business or organization. We do not under any circumstance supply names of individuals, addresses, account information, telephone numbers or other such information unless preauthorized by you.
In instances where we would like to use your organization as a reference, we will first contact you to obtain your authorization.
If you do not want us to use the name of your organization for any of the reasons listed above, simply let us know.
A word about security when online
Please keep in mind that whenever you voluntarily disclose information online, for example through email, that information can be collected and used by others. In short, if you post personal information online that is accessible to the public, you may receive unsolicited messages from other parties in return. Ultimately, you are solely responsible for maintaining the secrecy of your personal and/or any account information.


Bus Mall
Select what interests you most of the three pictures below
When you can no longer click on an image, press the "View Results" button.
Press "View Chart" to see how many times an image appeared and how many times it was voted.
Left Product
Middle Product
Right Product
View Results
View Chart


Interface for asyncronous reading and writing of files in an <app-instance>.files folder. The file to be read/written is identified by a ulong64 id, which is converted to a filename with _sprintf(name, "%llu", id).
Note: currently the implementation is blocking, but could be changed to non-blocking without change to the app.
| File | common/interface/files.h |
| Public functions |
CreateFilesProvider CreateTempFilesProvider |
| Classes |
IFilesProvider IFiles IFilesWrite IFilesRead IFilesDel IFilesWrite ITempFilesProvider ITempFiles |
class IFilesProvider * CreateFilesProvider(class IIoMux * iomux);
Function to allocate the FilesProvider resource, to be called from the app-main, so that the real FileProvider can be replaced by a unit-test implementation.
class ITempFilesProvider * CreateTempFilesProvider(class IIoMux * iomux);
Function to allocate the TempFilesProvider Resource, to be called from the app-main, so that the read Fileprovider could be replaced by a unit-test implementation
class IFilesProvider {
public:
virtual ~IFilesProvider() {}
virtual class IFiles * CreateFiles(class IInstanceLog * const log, const char * serviceId, const char * path) = 0;
};
Allocate the FilesProvider for a given instance. serviceId should be AppService->GetAppServiceId(), path should be the same as the dbName, it is used to create the actual path on the system for the files in the form /apps/<serviceId>/<dbName>.files, which is a folder created by the taskmanager for the app. log is used to log dependent of the log flag LOG_FILES.
class IFiles {
public:
virtual ~IFiles() {}
virtual class IFilesWrite * Write(class UTask * user, ulong64 id) = 0;
virtual class IFilesRead * Read(class UTask * user, ulong64 id, unsigned length, unsigned offset = 0, bool progress = false) = 0;
virtual class IFilesDel * Del(class UTask * user, ulong64 id) = 0;
};
Interface class to initiate the read and write operations
Initiates a write operation. The allocated IFilesWrite class is derived from ITask, so the ITask/UTask mechanisms are used for progress and completion
Initiates a read operation. The allocated IFilesRead class is derived from ITask, so the ITask/UTask mechanisms are used for progress and completion. length is the length of the initial block, to be read. This block is available at the first TaskProgress callback. offset is the offset inside the file from which reading should start. progress indicates that a TaskProgress call should be used always when the data is available, even if this is the last data. In this case TaskComplete is called after the next read, when the file is closed.
Initiates a delete operation. The allocated IFilesDel class is derived from ITask, so the ITask/UTask mechanisms are used for completion.
class IFilesWrite : public ITask {
public:
virtual void Write(const byte * data, unsigned length, bool last) = 0;
virtual ulong64 GetId() const = 0;
virtual const char * GetAbsoluteFileName() const = 0;
virtual void Close() = 0;
};
Write a block of data to the file. This function may be called in the TaskProgress callback or assynchronously after the first TaskProgress call. The passed buffer may be freed on return from the call. last indicates the last block of data, when set the file is closed and the task completes.
Returns the id of the file.
Returns the absolute path file name of the file, if needed for a command execution.
class IFilesRead : public ITask {
public:
virtual void Read(unsigned length, bool last) = 0;
virtual void Get(const byte * & data, unsigned & length) const = 0;
virtual void Close() = 0;
};
Initiates reading of the next block. May be called after TaskProgress for the previous block.
Get a pointer to the read block of data. May be called after the TaskProgress for the read operation. The pointer is valid until the next call to Read. A length of 0 indicates the end of file.
Returns the absolute path file name of the file, if needed for a command execution.
class IFilesDel : public ITask {
public:
};
ITask class for a delete operation
class ITempFilesProvider {
public:
virtual ~ITempFilesProvider() {}
virtual class ITempFiles * CreateTempFiles(class IInstanceLog * const log, const char * serviceId, const char * path) = 0;
};
Interface for asyncronous reading and writing of files in an <app-instance>.temp folder. The file to be read/written is identified by a ulong64 id, which is converted to a filename with _sprintf(name, "%llu", id).
Note: Currently the implementation is blocking, but could be changed to non-blocking without change to the app.
Allocate the TempFilesProvider for a given instance.
serviceId should be AppService->GetAppServiceId(), path should be the same as the dbName, it is used
to create the actual path on the system for the files in the form /apps/<serviceId>/<dbName>.temp, which
is a folder created by the taskmanager for the app.
log is used to log dependent of the log flag LOG_FILES.
class ITempFiles {
public:
virtual ~ITempFiles() {}
virtual class IFilesWrite * Write(class UTask * user) = 0;
virtual class IFilesRead * Read(class UTask * user, ulong64 id, unsigned length, unsigned offset = 0, bool progress = false) = 0;
virtual class IFilesDel * Del(class UTask * user, ulong64 id) = 0;
};
Interface class to initiate the read and write operations. IFilesWrite, IFilesRead and IFilesDel are defined in files.htm
Initiates a write operation. The allocated IFilesWrite class is derived from ITask, so the ITask/UTask mechanisms are used for progress and completion
Initiates a read operation. The allocated IFilesRead class is derived from ITask, so the ITask/UTask mechanisms are used for progress and completion. length is the length of the initial block, to be read. This block is available at the first TaskProgress callback.
Initiates a delete operation. The allocated IFilesDel class is derived from ITask, so the ITask/UTask mechanisms are used for completion.


Connection
General
This tab allows you to configure the general connection options.
Timeout (in seconds)
Allows to configure the connection and read timeout, a higher timeout allows to test slower applications.
Default: 20
.
Default User Agent
The user agent that should be used when creating HTTP messages (for example, spider messages or CONNECT
requests to the HTTP proxy).
Use Global HTTP State
Allows the usage of a global HTTP state, to keep track of cookies and HTTP authentication.
This option must be selected to enable the "Use current tracking session" option in the
Manual Request Editor dialogs.
Session tracking ensures that any requests are sent with the latest session details.
For example you may record a session when logged in as one user and then logout and login as another user.
If you resend a request from the first session without session tracking then it will use the cookies from
the first session.
If you resend the same request with session tracking then it will use the cookies from the second session.
Default: unselected
.
DNS
TTL Successful Queries (in seconds)
Defines for how long the successful DNS queries should be cached:
- Negative number, cache forever;
- Zero, disables caching;
- Positive number, the number of seconds the queries will be cached.
Default: 30
.
Note: Changes are applied after a restart.
Security Protocols
Allows to choose the SSL/TLS versions enabled for outgoing connections (for example, to servers). At least
one version must be enabled, versions unsupported by the JRE will be unselected and disabled.
The option SSLv2Hello must be selected in conjunction with at least one SSL/TLS version.
Default: All protocols supported.
Enable unsafe SSL/TLS renegotiation
Allows unsafe SSL/TLS renegotiations (CVE-2009-3555) for
compatibility with older servers.
Note: The option must be set before establishing any HTTPS connection, a ZAP restart might be required.
Default: unselected
.
HTTP Proxy
This tab allows you to configure an outgoing HTTP proxy. This is often required in a corporate environment.
Enabled
Enables the usage of the configured HTTP proxy.
Default: unselected
.
Host
The host name or address of the HTTP proxy.
Default: localhost
.
Port
The port of the HTTP proxy.
Default: 8090
.
Authenticate
Enables the usage of the authentication credentials, to authenticate to the HTTP proxy.
Realm
The authentication realm.
Default: none.
User Name
The user name. It is required.
Default: none.
Password
The password.
Default: none.
Note: Stored in clear text in the configuration file, if allowed.
Store Password
Allows to store the password in the configuration file. If not allowed ZAP prompts for the password during start up, it can still
be changed in this panel.
Default: selected
.
Exclusions
The hosts that should be excluded from the HTTP proxy. The host
is a regular expression matched against the requested host name.
SOCKS Proxy
This tab allows you to configure an outgoing SOCKS proxy, by default the SOCKS proxy configuration applies to all connections made by ZAP,
taking precedence over the HTTP proxy.
The SOCKS proxy system properties (e.g. socksProxyHost
, socksProxyPort
) take precedence over the persisted
configurations for compatibility with older ZAP versions. ZAP will use and display the values of the system's properties when defined at
startup, the configurations can still be changed in this panel.
Note: Loopback addresses (e.g. localhost
, 127.0.01
, ::1
) are not proxied through
the SOCKS proxy, the connections will be done directly.
Enabled
Enables the usage of the configured SOCKS proxy.
Default: unselected
, unless the SOCKS proxy system properties are defined, in which case it is selected
.
Host
The host name or address of the SOCKS proxy.
Default: localhost
.
Port
The port of the SOCKS proxy.
Default: 1080
.
Version
The version of the SOCKS proxy.
Default: 5
.
Use SOCKS' DNS
If the host names should be resolved by the SOCKS proxy. Requires a version 5 SOCKS proxy.
This might lead to connection failures if the SOCKS proxy is not able to resolve the host name (e.g. use of names that are defined in a
hosts
file).
Default: selected
.
Authentication
The following fields allow to configure the authentication credentials for the SOCKS proxy.
User Name
The user name.
Default: none.
Password
The password.
Default: none.
Note: Stored in clear text in the configuration file.
See also
| |
Network |
the introduction to Network add-on |


Blade Hacker Projects
These our current and past projects
blade hackers website
project 2
project 3
project 4
project 5
project 6
project 7


Description:
Plugin for Intellij IDEA and Android Studio, providing a tree of shared (expect/actual) project elements.
Features:
- Builds the tree of shared elements in a special tool window with types indication, lists the places of common (
expect
) and platform (actual
) element’s declarations.
- Includes hierarchic displaying of nested shared elements.
- Provides navigation to elements (opening the editor, scrolling to position in code, highlighting).
- Partially reloads the tree of elements by diffs, obtained when comparing before and after update trees.
- Updates by using a button and by a timer, if the plugin tool window is visible.
- Allows to set the update interval. The settings are stored persistently.