Backblaze Privacy Policy
Updated 4/5/16
Please read this privacy policy carefully. It applies to all interactions you have with Backblaze's web
services
and apps.
Note that Backblaze has two different products:
- Computer Backup provides unlimited cloud
backup for individuals and organizations using Macs or PCs.
- B2 Cloud Storage provides low-cost
cloud
storage for individuals and organizations.
When we collect, store, use, or share information differently among these products, we'll note that
below.
The Information We Collect
Account Information. When you create a Backblaze account, we ask for your email address and
a
password. We may also ask for your phone number for purposes such as two-factor verification and sending you
service alerts. If you choose to sign up for one of our services, we'll ask you for billing information. If
you
order a physical item from us, such as a Restore by Mail, we'll ask for shipping information. At times we
may
ask for other information such as your name or your company name.
Your Files. Our Computer Backup service automatically backs up your files to Backblaze; B2
Cloud Storage allows you to upload your files to our service. Please keep in mind that your files may
include
personally identifiable information, both in the contents of a file and in metadata.
Information About Your Use of Backblaze. We receive some information automatically when you
use
any Backblaze product. This includes data about your device, software, and the operating system you use when
accessing our service, your Internet Protocol address, and the date and time of each request you make to
Backblaze. When you use our backup services, we'll also receive information such as the names of external
drives, file types transferred, and number and size of files transferred.
Information We Learn Through Your Interactions with Us. You may choose to provide us with
personal information when you call us, email us, chat with us, answer a survey, comment on our blog, or
interact
with us through other services like Twitter or Facebook.
Referrals. If you refer a friend to Backblaze, we'll ask you for their email address. You
can
also choose to upload your contacts stored with others services such as Google and Yahoo in order to refer
friends.
Information from Other Sources. We may collect additional information about you from third
parties to help us figure out how to better serve you.
How We Use Your Information
We use your personal information to keep Backblaze running, understand how you use our service, customize
your
experience, prevent abuse, provide customer support, sell and market our products, and improve Backblaze. We
use
your information internally only as needed to accomplish these goals.
How We Disclose Your Information
We will share your personally identifiable information only in the limited circumstances below. Backblaze
does
not sell your information or share it with third-party advertisers.
With your permission. We may share your information with your consent, after letting you
know
what information will be shared and with whom.
In response to the law. We may disclose your information if we believe it is reasonably
necessary to comply with a law, regulation, or valid legal process. If we are going to release your
information,
our policy is to provide you with notice unless we are prohibited from doing so by law or court order (e.g.,
an
order under 18 U.S.C. § 2705(b)). We may disclose your information without providing you with prior notice
if we
believe it's necessary to prevent imminent and serious bodily harm to a person. Nothing in this policy is
intended to limit any legal objections or defenses you might have to demands to compel disclosure of your
information, including demands from the government.
With third parties helping us provide Backblaze. We may share your information with
third-party
services helping us provide and improve our products. Those third parties access and use your information
only
on our behalf. They include companies such as Stripe, Salesforce, Google, Freshbooks, Facebook, Twitter,
MailChimp, Slack, SurveyMonkey, SendGrid, and ZenDesk. Please note that this Privacy Policy explains
Backblaze's
practices only, and doesn't extend to the practices of other services.
With group administrators. If you use our services as part of a business, group, or
organization where Backblaze was set up by an administrator, the administrator may be able to access and
control
your account. Refer to your organization's internal policies for more information.
With other internet services. If you are a B2 Cloud Storage user, you may give third
parties
the ability to access information and content in your account (e.g., through APIs). When other services
access
and use your information, their conduct is governed by their own terms and policies.
With other people, in limited circumstances. When you use B2 Cloud Storage, your settings
give
you the option to make information and content available to other people. When you refer a friend to us,
we'll
share your name and email address with that person. And when you post comments on our blog, of course, other
people can read them.
Sale or merger. If all or part of Backblaze is sold, merged, or otherwise transferred to
another company in the future, your information may be transferred as part of that transaction. If that
happens,
Backblaze will take reasonable steps to make sure your information continues to be treated consistent with
this
privacy policy.
Aggregate information. We may disclose aggregate, non-identifying information about how our
users use Backblaze products.
Web Tracking Policy
Cookies. We use cookies to enable our servers to recognize your web browser and tell us how
and
when you use Backblaze products. We use cookies to identify whether you have logged in and recognize that
your
web browser has accessed our servers before, and we may associate that information with your account.
Most browsers have an option for disabling cookies, but if you disable them, some Backblaze services will
not
work.
Some third-party services that we use, such as Google Analytics, may place their own cookies in your
browser.
This Privacy Policy covers our use of cookies only and not the use of cookies by third parties.
Do Not Track. Some browsers make it possible for you to signal that you don't want your
internet browsing activity to be tracked. There is not yet a consensus in the internet community about how
to
best honor these signals, so we don't respond to Do Not Track requests at this time.
Data Security
Backblaze products are designed to have several layers of security.
- We use Secure Sockets Layer (SSL)/Transport Layer Security (TLS) to create a secure tunnel to
protect
data in transit between Backblaze apps and servers.
- We don't retain your actual account password, but hash and salt it to help protect it against
possible
compromise.
- You have the option to enable two-factor verification, a login feature that adds an extra layer of
security to your account.
- We narrowly limit the number of Backblaze employees who have access to user data through policy and
technical access controls.
- For Computer Backup, your files are automatically encrypted by default on your computer before
being
sent to Backblaze. The encrypted files are sent and stored in encrypted form. By default, Backblaze
retains a copy of the encryption key to make data recovery possible if you forget your password.
However, you can choose to keep the only copy of the key if you prefer. For B2 Cloud Storage, it is
up
to you whether you choose to encrypt your files before uploading them.
You use Backblaze at your own risk, and are responsible for taking reasonable measures to secure your
account
(such as choosing a strong, unique password and keeping it secret).
We are always on the lookout for vulnerabilities in Backblaze. If you discover a vulnerability in our
service,
we would be grateful for your report and encourage you to let us know immediately. If you give us reasonable
time to respond to your report before making any information public, and make a good faith effort to avoid
privacy violations, destruction of data, and interruption or degradation of our service during your
research, we
will not pursue any legal action against you or ask law enforcement to investigate your actions.
To report a vulnerability, please email<EMAIL_ADDRESS>Account Cancellation
You are free to stop using Backblaze at any time. If you choose to deactivate your account, we'll delete
your
backups and files stored in B2 Cloud Storage within a reasonable amount of time. We will continue to keep
some
information about your use of our service.
Changes to This Policy
We may revise this Privacy Policy from time to time. The most current version of the policy will govern our
use
of your information and will always be at
http://www.backblaze.com/privacy.
If we make changes that we believe will substantially alter your rights, we will notify you.
Contact
We would love to hear from you. Backblaze welcomes questions, concerns, and feedback about this policy. If
you
have suggestions for us, let us know at privacy@backblaze.com.


[gecode-users] How to iterate over a integer view's domain
Debdeep Banerjee
banerjed at rsise.anu.edu.au
Fri Apr 4 13:13:45 CEST 2008
Guido Tack wrote:
> Debdeep Banerjee wrote:
>> I want to iterate over the current domain of a integer view
>> (Gecode::Int::IntView). How can I do that ? Is this domain current ?
>> I want to implement my own variable and value selection. That's why I
>> need to access the current domain of the variable. Is there any good way
>> to do it ?
>
> Yes, using ViewRanges<IntView>:
> http://www.gecode.org/gecode-doc-latest/classGecode_1_1Int_1_1ViewRanges.html
>
Is this going to give me the ranges or it will iterate over all values
in the domain ?
For example: if the domain of a variable X is Dom(X):{1,4,5,6,9,10,11,15}
Which output will be given by ViewRanges ?
Option 1: 4 ranges
R1: 1
R2: 4..6
R3: 9..11
R4: 15
Option 2: It will iterate through all the values of the domain.
May be it is a silly question, but I don't understand what is the
advantage of the range.
With regards
Debdeep
>
> What do you mean by current? The domain of a variable is always
> current, in the sense that if it's modified, iteration over the domain
> will reflect the modification.
>
> Cheers,
> Guido
--
Debdeep Banerjee
PhD Candidate
CSL/RSISE/NICTA
Australian National University
Email: debdeep.banerjee at rsise.anu.edu.au
Web:http://rsise.anu.edu.au/~banerjed
More information about the gecode-users
mailing list


This interface class allows to build new Layers - are building blocks of networks. More...
#include <opencv2/dnn/dnn.hpp>
Public Member Functions | |
| Layer () | |
| Layer (const LayerParams ¶ms) | |
| Initializes only name, type and blobs fields. More... | |
| virtual | ~Layer () |
| virtual void | applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat * > &inputs, const std::vector< Mat > &outputs, int targetId) const |
| Automatic Halide scheduling based on layer hyper-parameters. More... | |
| virtual void | finalize (const std::vector< Mat * > &input, std::vector< Mat > &output) |
| Computes and sets internal parameters according to inputs, outputs and blobs. More... | |
| virtual void | finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs) |
| Computes and sets internal parameters according to inputs, outputs and blobs. More... | |
| void | finalize (const std::vector< Mat > &inputs, std::vector< Mat > &outputs) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
| std::vector< Mat > | finalize (const std::vector< Mat > &inputs) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
| virtual void | forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals) |
Given the input blobs, computes the output blobs . More... | |
| virtual void | forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) |
Given the input blobs, computes the output blobs . More... | |
| void | forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) |
Given the input blobs, computes the output blobs . More... | |
| virtual int64 | getFLOPS (const std::vector< MatShape > &inputs, const std::vector< MatShape > &outputs) const |
| virtual bool | getMemoryShapes (const std::vector< MatShape > &inputs, const int requiredOutputs, std::vector< MatShape > &outputs, std::vector< MatShape > &internals) const |
| virtual void | getScaleShift (Mat &scale, Mat &shift) const |
| Returns parameters of layers with channel-wise multiplication and addition. More... | |
| virtual Ptr< BackendNode > | initHalide (const std::vector< Ptr< BackendWrapper > > &inputs) |
| Returns Halide backend node. More... | |
| virtual Ptr< BackendNode > | initInfEngine (const std::vector< Ptr< BackendWrapper > > &inputs) |
| virtual Ptr< BackendNode > | initVkCom (const std::vector< Ptr< BackendWrapper > > &inputs) |
| virtual int | inputNameToIndex (String inputName) |
| Returns index of input blob into the input array. More... | |
| virtual int | outputNameToIndex (const String &outputName) |
| Returns index of output blob in output array. More... | |
| void | run (const std::vector< Mat > &inputs, std::vector< Mat > &outputs, std::vector< Mat > &internals) |
| Allocates layer and computes output. More... | |
| virtual bool | setActivation (const Ptr< ActivationLayer > &layer) |
| Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case. More... | |
| void | setParamsFrom (const LayerParams ¶ms) |
| Initializes only name, type and blobs fields. More... | |
| virtual bool | supportBackend (int backendId) |
| Ask layer if it support specific backend for doing computations. More... | |
| virtual Ptr< BackendNode > | tryAttach (const Ptr< BackendNode > &node) |
| Implement layers fusing. More... | |
| virtual bool | tryFuse (Ptr< Layer > &top) |
| Try to fuse current layer with a next one. More... | |
| virtual void | unsetAttached () |
| "Deattaches" all the layers, attached to particular layer. More... | |
| Public Member Functions inherited from cv::Algorithm | |
| Algorithm () | |
| virtual | ~Algorithm () |
| virtual void | clear () |
| Clears the algorithm state. More... | |
| virtual bool | empty () const |
| Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read. More... | |
| virtual String | getDefaultName () const |
| virtual void | read (const FileNode &fn) |
| Reads algorithm parameters from a file storage. More... | |
| virtual void | save (const String &filename) const |
| virtual void | write (FileStorage &fs) const |
| Stores algorithm parameters in a file storage. More... | |
| void | write (const Ptr< FileStorage > &fs, const String &name=String()) const |
| simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
Public Attributes | |
| std::vector< Mat > | blobs |
| List of learned parameters must be stored here to allow read them by using Net::getParam(). More... | |
| String | name |
| Name of the layer instance, can be used for logging or other internal purposes. More... | |
| int | preferableTarget |
| prefer target for layer forwarding More... | |
| String | type |
| Type name which was used for creating layer by layer factory. More... | |
Additional Inherited Members | |
| Static Public Member Functions inherited from cv::Algorithm | |
| template<typename _Tp > | |
| static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
| Loads algorithm from the file. More... | |
| template<typename _Tp > | |
| static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
| Loads algorithm from a String. More... | |
| template<typename _Tp > | |
| static Ptr< _Tp > | read (const FileNode &fn) |
| Reads algorithm from the file node. More... | |
| Protected Member Functions inherited from cv::Algorithm | |
| void | writeFormat (FileStorage &fs) const |
Detailed Description
This interface class allows to build new Layers - are building blocks of networks.
Each class, derived from Layer, must implement allocate() methods to declare own outputs and forward() to compute outputs. Also before using the new layer into networks you must register your layer by using one of LayerFactory macros.
Constructor & Destructor Documentation
◆ Layer() [1/2]
| cv::dnn::Layer::Layer | ( | ) |
◆ Layer() [2/2]
|
explicit |
◆ ~Layer()
|
virtual |
Member Function Documentation
◆ applyHalideScheduler()
|
virtual |
Automatic Halide scheduling based on layer hyper-parameters.
- Parameters
-
[in] node Backend node with Halide functions. [in] inputs Blobs that will be used in forward invocations. [in] outputs Blobs that will be used in forward invocations. [in] targetId Target identifier
- See also
- BackendNode, Target
Layer don't use own Halide::Func members because we can have applied layers fusing. In this way the fused function should be scheduled.
◆ finalize() [1/4]
|
virtual |
Computes and sets internal parameters according to inputs, outputs and blobs.
- Parameters
-
[in] input vector of already allocated input blobs [out] output vector of already allocated output blobs
If this method is called after network has allocated all memory for input and output blobs and before inferencing.
◆ finalize() [2/4]
|
virtual |
Computes and sets internal parameters according to inputs, outputs and blobs.
- Parameters
-
[in] inputs vector of already allocated input blobs [out] outputs vector of already allocated output blobs
If this method is called after network has allocated all memory for input and output blobs and before inferencing.
◆ finalize() [3/4]
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
◆ finalize() [4/4]
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
◆ forward() [1/2]
|
virtual |
Given the input
blobs, computes the output blobs
.
- Parameters
-
[in] input the input blobs. [out] output allocated output blobs, which will store results of the computation. [out] internals allocated internal blobs
◆ forward() [2/2]
|
virtual |
Given the input
blobs, computes the output blobs
.
- Parameters
-
[in] inputs the input blobs. [out] outputs allocated output blobs, which will store results of the computation. [out] internals allocated internal blobs
◆ forward_fallback()
| void cv::dnn::Layer::forward_fallback | ( | InputArrayOfArrays | inputs, |
| OutputArrayOfArrays | outputs, | ||
| OutputArrayOfArrays | internals | ||
| ) |
Given the input
blobs, computes the output blobs
.
- Parameters
-
[in] inputs the input blobs. [out] outputs allocated output blobs, which will store results of the computation. [out] internals allocated internal blobs
◆ getFLOPS()
|
inlinevirtual |
◆ getMemoryShapes()
|
virtual |
◆ getScaleShift()
Returns parameters of layers with channel-wise multiplication and addition.
- Parameters
-
[out] scale Channel-wise multipliers. Total number of values should be equal to number of channels. [out] shift Channel-wise offsets. Total number of values should be equal to number of channels.
Some layers can fuse their transformations with further layers. In example, convolution + batch normalization. This way base layer use weights from layer after it. Fused layer is skipped. By default, scale
and shift
are empty that means layer has no element-wise multiplications or additions.
◆ initHalide()
|
virtual |
Returns Halide backend node.
- Parameters
-
[in] inputs Input Halide buffers.
- See also
- BackendNode, BackendWrapper
Input buffers should be exactly the same that will be used in forward invocations. Despite we can use Halide::ImageParam based on input shape only, it helps prevent some memory management issues (if something wrong, Halide tests will be failed).
◆ initInfEngine()
|
virtual |
◆ initVkCom()
|
virtual |
◆ inputNameToIndex()
|
virtual |
Returns index of input blob into the input array.
- Parameters
-
inputName label of input blob
Each layer input and output can be labeled to easily identify them using "%<layer_name%>[.output_name]" notation. This method maps label of input blob to its index into input vector.
Reimplemented in cv::dnn::LSTMLayer.
◆ outputNameToIndex()
|
virtual |
Returns index of output blob in output array.
- See also
- inputNameToIndex()
Reimplemented in cv::dnn::LSTMLayer.
◆ run()
| void cv::dnn::Layer::run | ( | const std::vector< Mat > & | inputs, |
| std::vector< Mat > & | outputs, | ||
| std::vector< Mat > & | internals | ||
| ) |
Allocates layer and computes output.
- Deprecated:
- This method will be removed in the future release.
◆ setActivation()
|
virtual |
Tries to attach to the layer the subsequent activation layer, i.e. do the layer fusion in a partial case.
- Parameters
-
[in] layer The subsequent activation layer.
Returns true if the activation layer has been attached successfully.
◆ setParamsFrom()
| void cv::dnn::Layer::setParamsFrom | ( | const LayerParams & | params | ) |
◆ supportBackend()
|
virtual |
Ask layer if it support specific backend for doing computations.
- Parameters
-
[in] backendId computation backend identifier.
- See also
- Backend
◆ tryAttach()
|
virtual |
Implement layers fusing.
- Parameters
-
[in] node Backend node of bottom layer.
- See also
- BackendNode
Actual for graph-based backends. If layer attached successfully, returns non-empty cv::Ptr to node of the same backend. Fuse only over the last function.
◆ tryFuse()
Try to fuse current layer with a next one.
- Parameters
-
[in] top Next layer to be fused.
- Returns
- True if fusion was performed.
◆ unsetAttached()
|
virtual |
"Deattaches" all the layers, attached to particular layer.
Member Data Documentation
◆ blobs
| std::vector<Mat> cv::dnn::Layer::blobs |
List of learned parameters must be stored here to allow read them by using Net::getParam().
- Examples
- samples/dnn/colorization.cpp.
◆ name
| String cv::dnn::Layer::name |
Name of the layer instance, can be used for logging or other internal purposes.
◆ preferableTarget
| int cv::dnn::Layer::preferableTarget |
prefer target for layer forwarding
◆ type
| String cv::dnn::Layer::type |
Type name which was used for creating layer by layer factory.
The documentation for this class was generated from the following file:
- opencv2/dnn/dnn.hpp


6 references to SetPipelineState
System.Management.Automation (6)
engine\hostifaces\LocalPipeline.cs (2)
601
SetPipelineState
(PipelineState.Completed);
629
SetPipelineState
(PipelineState.Completed);
engine\hostifaces\pipelinebase.cs (4)
296
SetPipelineState
(PipelineState.Stopping);
297
SetPipelineState
(PipelineState.Stopped);
313
SetPipelineState
(PipelineState.Stopping);
537
SetPipelineState
(PipelineState.Running);


Pervasive functions for Big Data Layout for Asynchronous Computations on Spreadsheets (BLACS)
## Logical Clock
The logical time allows linearization of computations, used to provide safe concurrency. With linearization of events the happened-before relation is usefull to prevent race-conditions.
## IO Operations on the sheet
Both read and write functions have a logical time parameter. This time is given by the clock service.
As well, to enable a multi-agent interaction each agent identifies itself with a tag. So, a cell is identified by three parameters. Its coordinates, an agent tag and a logical time.
In BLACS we describe a grid in a different format. Instead of using the conventional sequence between two coordinates like A1;B2 we describe it by the dimensions of the grid. Describing grids by comprehension, allows to describe easily all kinds of grids. In particular one could describe infinite grids using special parameters, i.e. 0 lenght or width. Useful when a user doesn't know how many cells are in a given grid.
## Evaluation of a formula
The evaluation of a given formula can be achieved by a single process or rather in parallel by many processes in an asynchronous way. To express this, a cell defined by a formula is as well defined by a collection of promises. A promise is formed of a date, a grid description and a constant value. Therefore, a promise of evaluation can be on a part of the formula. This allows having a collection of evaluators trying to compute the formula. The date, indicates when a promise will be valid. Before this date, the value of the promise shall not be considered. Should an evaluator fail to fulfill its promise the value data should be null, to indicate that an evaluation is still needed.
## Types
### API Types
In this API types are used to describe the arguments of a function. In particular read and write requests.
### BLACS Types
BLACS itself has three kind of types to describe definitions, values, none, constants (integers) and formulas (count). This types are used to ensure safety as well as make programming easier.
Version: 0.1
BasePath:/blacs/pervasives/0.1
All rights reserved
http://apache.org/licenses/LICENSE-2.0.html
Access
[ Jump to Models ]
Table of Contents
Returns the next logical time. (timeSheet)
The time advances after a call so that two subsequent calls are never equal.
Path parameters
sheet (required)
Path Parameter — Name of the sheet
Return type
BigDecimal
Example data
Content-Type: application/json
1.3579000000000001069366817318950779736042022705078125
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
successful operation
BigDecimal
The response of a read request (hashSheet)
Whenever someone makes a read request, a promise is delivered. The promise has date at which the response will be read to download.
Path parameters
sheet (required)
Path Parameter — Name of the sheet
hash (required)
Path Parameter — hash handed in the ReadPromise
Return type
Example data
Content-Type: application/json
[ {
"cell" : {
"definition" : {
"data" : [ 1.3579000000000001069366817318950779736042022705078125 ],
"promises" : [ {
"date" : 1.495632574829308E9,
"domain" : [ 1, 1, 10, 5 ],
"value" : 1024.0
} ]
},
"value" : {
"data" : ""
}
},
"coords" : {
"col" : 32,
"row" : 42
}
} ]
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
successful operation
410
IO error
Reads from spreadsheet (readSheet)
Reads from sheet the grid described by origin, width and length at the given time by the agent identified by tag. If the agent has no cell defined use default agent.
Path parameters
sheet (required)
Path Parameter — Name of the sheet
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
body (required)
Body Parameter —
Return type
Example data
Content-Type: application/json
{
"date" : 1.495632574829308E9,
"hash" : "f654c60b82b85499791437fb9c7e4a5478140095"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
successful operation
ReadPromise
410
IO error
Returns the latest size of the sheet. (sizeSheet)
The size of the sheet at the present (latest time).
Path parameters
sheet (required)
Path Parameter — Name of the sheet
Return type
Example data
Content-Type: application/json
{
"length" : 1000.0,
"width" : 500.0
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
succesful operation
Dimensions
Writes to spreadsheet (writeSheet)
Write on sheet the grid of dimension width by length at origin at time by agent identified with tag the cell array in the same order.
Path parameters
sheet (required)
Path Parameter — Name of the sheet
Consumes
This API call consumes the following media types via the
Content-Type request header:
Request body
body (required)
Body Parameter —
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the
Content-Type response header.
Responses
200
successful operation
410
IO error
[ Jump to Methods ]
Table of Contents
Cell
Coordinates
Definition
Dimensions
LocatedCell
Promise
ReadPromise
ReadRequest
Time
Value
WriteRequest
A cell definition and value in the sheet
The coordinates of a cell in a sheet indexed by row and column number.
Defintions in BLACS are typed an carry along data useful for evaluators.
length (optional)
width (optional)
A cell and its cordinates
date
BigDecimal This real time date is used to tell when a promise will be valid, the time is counted since EPOCH.
domain
array[BigDecimal] This is the domain on which the formula will be evaluated by the promise.
value
BigDecimal The result of the formula, should a promise fail the value shall be null
date
BigDecimal This real time date is used to tell when a promise will be valid, the time is counted since EPOCH.
hash
String The hash where the response to the read request will be available.
Whenever an agent reads the sheet it is performing a request. If the request is successful a new resources will be added to URI at which he will be able to read unordered collection of cells. The parameter time is the logical time at which the read is being requested. The parameter origin is coordinates to start reading a grid.
tag
String The identifier of the agent that is requesting the read.
time
origin
length
width
filter_formulas
Boolean Require to filter formulas when performing a read
default
String Should the agent have no cell defined, read from this agent's sheet
Values in BLACS are typed.
Whenever an agent writes to the sheet it is performing a request. The parameter time is the logical time at which the write is being requested. The parameter origin is coordinates to start writing a grid.
tag
String The identifier of the agent that is requesting the write
time
origin
length
width
cells
array[Cell] An ordered collection of cells to be written in the grid


Background
The Government of Canada has committed to helping 95% of Canadian households and businesses access high-speed internet at minimum speeds of 50 Mbps download and 10 Mbps upload (the “Commitment”) by 2026, and 100% by 2030. According to the CRTC, currently 45.6% of rural community households have access to the Commitment.
Methods
We visualized average internet speed for each community shown below. Next we splited the dataset into training set and test set. And we fitted logistic regression to predict if a community can reach the commitment in the future. And our model has 80% accuracy for the prediction.
Results and Conclusion
Our analyses show steady development in internet speed in most areas of Canada for fixed and mobile connection types. However, underserved communities have large disparities in terms of internet access compared to rural and urban areas for both fixed and mobile connection types. Specifically, mobile connection with current trends would not make any significant progress toward commitment.


2017-31-07
last modified: 2022-12-16
== !
Jokes aside, defining big data and what it covers needs a bit of precision. Let’s bring in some clarity.
Big data is usually described with the 3 Vs, first proposed by Douglas Laney from Gartner in 2001:
The size of datasets available today is staggering (ex: Facebook had 250 billion pics in 2016). We produce a phenomenal amount of data in the course of our daily lives (to the point of sometimes missing an experience not mediated by technology - as this grandmother understood it)
The volumes of data are increasing at an accelerating rate. According to sources, 90% of all the data in the world has been generated over the last two years (statement from 2013) or said differently, more data will be created in 2017 than the previous 5,000 years of humanity.
"Variety" refers to the fact that "unstructured" data is considered to be increasingly useful, when before the big data phenoenon only structured data was considered worth storing and exploiting. This calls to explain in more details the distinction between unstructured and structured data.
Structured data refers to data which is formatted and organized according to a well defined set of rules, which makes it machine readable.
For example, zip codes are a structured dataset because they follow a precise convention regarding the number of letters and digits composing them, making it easy for an optical reader and software to identify and "read" them. Same with license plates, social security numbers… these are examples of structured data.
But these are simple examples. What about, for instance, a tax form?
If each field of the form is well defined, then the data collected through the form can be said to be "structured".
By contrast, a form where the user can write free text (think of a comment on a blog post, or a blank space where users can write a feedback) produces unstructured data: data which does not follow a special convention for its size and content. This is typically much harder for software to process, hence to analyze.
To summarize, think of structured data as as anything that can be represented as well organized tables of numbers and short pieces of text with the expected format, size, and conventions of writing: phonebooks, accounting books, governmental statistics…
Unstructured data refers to datasets made of "unruly" items: text of any length, without proper categorization, encoded in different formats, including possibly pictures, sound, geographical coordinates and what not…
 But they are carry typically rich information: free text, information recorded "in the wild"…
In a nutshell, the speed of creation and communication of data is accelerating:
Facebook hosts 250 billion pics? It receives 900 million more pictures per day
Examining tweets can be done automatically (with computers). If you want to connect to Twitter to receive tweets in real time as they are tweeted, be prepared to receive in excess of 500 million tweets per day. Twitter calls this service the "Twitter firehose", which reflects the velocity of the stream of tweets.
Sensor data is bound to increase speed as well. While pictures, tweets, individual records… are single item data sent at intervals, more and more sensors can send data in a continuous stream (measures of movement, sound, etc.)
So, velocity poses challenges of its own: while a system can handle (store, analyze) say 100Gb of data in a given time (day or month), it might not be able to do it in say, a single second. Big data refers to the problems and solutions raised by the velocity of data.
Veracity relates to trustworthiness and compliance: is the data authentic? Has it been corrupted at any step of its processing? Does it comply with local and international regulations?
There is no "threshold" or "minimum size" of a dataset where "data" would turn from "small data" to "big data". It is more of a relative notion: it is big data if current IT systems struggle to cope with the datasets. "Big data" is a relative notion… how so?
what was considered "big data" in the early 2000s would be considered "small data" today, because we have better storage and computing power today.
this is a never ending race: as IT systems improve to deal with "current big data", data gets generated in still larger volumes, which calls for new progress / innovations to handle it.
what is considered "big data" by non tech SMEs (small and medium-sized enterprises) can be considered trivial to handle by tech companies.
the difficulty for an IT system to cope with a dataset can be related to the size (try analyzing 2 Tb of data on your laptop…), but also related to the content of the data.
For example the analysis of customer reviews in dozens of languages is harder than the analysis of the same number of reviews in just one language.
So the general rule is: the less the data is structured, the harder it is to use it, even if it’s small in size (this relates to the "V" of variety seen above).
"Big data is often called the new oil", as if it would flow like oil and would power engines "on demand".
Actually, big data is created: it needs work, conception and design choices to even exist (what do I collect? how do I store it? what structure do I give to it?). The human intervention in creating data determines largely whether data will be of value later.
Example: Imagine customers can write online reviews of your products. These reviews are data. But if you store these reviews without an indication of who has authored the review (maybe because reviews can be posted without login oneself), then the reviews become much less valuable.
Simple design decisions about how the data is collected, stored and structured have a huge impact on the value of the data.
So, in reaction to large, unstructured and badly curated datasets with low value at the end, a notion of "smart data" is sometimes put forward: data which can be small in size but which is well curated and annotated, enhancing its value (see also here).
Unstructured data (see above for definition of "unstructured") was usually not stored: it takes a lot space, and software to query it was not sufficiently developed.
Network data (also known as graphs) (who is friend with whom, who likes the same things as whom, etc.) was usually neglected as "not true observation", and hard to query. Social networks like Facebook made a lot to make businesses aware of the value of graphs (especially social graphs). Neo4J or Titan are database providers specialized in network data storage and analysis.
In the late 1990s, a rapid shift in the habits of software developers kicked in: they tended to use more and more open source software, and to release their software as open source. Until then, most of the software was "closed source": you buy a software without the possibility to reuse / modify / augment its source code. Just use it as is.
Open source software made it easy to get access to software built by others and use it to develop new things. After several decades, open source software have become common place.
The Gartner hype cycle is a tool measuring the maturity of a technology, differentiating expectations from actual returns:
This graph shows the pattern that all technologies follow along their lifetime:
at the beginning (left of the graph), an invention or discovery is made in a research lab, somewhere. Some news reporting is done about it, but with not much noise.
then, the technology starts picking the interest of journalists, consultant, professors, industries… expectations grow about the possibilities and promises of the tech. "With it we will be able to [insert amazing thing here]"
the top of the bump is the "peak of inflated expectations". All technics and innovation tend to be hyped and even over hyped. This means the tech is expected to deliver more than it surely will, in actuality. People get overdrawn.
then follows the "Trough of Disillusionment". Doubt sets in. People realize the tech is not as powerful, easy, cheap or quick to implement as it first seemed. Newspapers start reporting depressing news about the tech, some bad buzz spreads.
finally: slope of Enlightenment. Heads get colder, expectations get in line with what the tech can actually deliver. Markets stabilize and consolidate: some firms close and key actors continue to grow.
then: plateau of productivity. The tech is now mainstream.
Note | All technology can "die" - fall into disuse - before reaching the right side of the graph of course |
In 2014, big data was near the top of the curve: it was getting a lot of attention but its practical use in 5 to 10 years were still uncertain. There were "great expectations" about its future, and these expectations drive investment, research and business in big data.
In 2017, "big data" is still on top of hyped technologies, but is broken down in "deep learning" and "machine learning". Note also the "Artificial General Intelligence" category:
Firms active in "Big data" divide in many sub-domains: the industry to manage the IT infrastructure for big data, the consulting firms, software providers, industry-specific applications, etc…
Matt Turck, VC at FirstMarkCap, creates every year a sheet to visualize the main firms active in these subdomains. This is the 2017 version:
You can find a high res version of the Big data panorama, an Excel sheet version, and a very interesting comment on this website: https://mattturck.com/bigdata2017/
The Internet of things designates the extension of Internet to objects beyond web pages or emails.
The IoT is used to do things (display information on screen, pilote robots, etc.) but also very much to collect data in their environments, through sensors.
Hence, the development of connected objects will lead to a tremendous increase in the volume of data collected.
Artificial intelligence (AI) enables a computer to achieve results similar or better than what humans can do: play chess, guess which objects are visible on a picture, drive a vehicule, …
While there are several families of AI, the predominant technique for AI needs large volumes of data to perform well. For example, an AI which can "guess" which objects are visible on a picture needs to be "trained" on millions of pictures to get good results.
This is where big data and AI bridge: "big data" is the fuel that enables AI to work. All industries today develop products and services based on AI. As a result, these industries increase their effort in big data: collecting, storin and analyzing greater volumes and a variety of data.
Societal impacts of big data and AI are not trivial, ranging from racial, financial and medical discrimination to giant data leaks, or economic (un)stability in the age of robots and AI in the workplace.
Public regulations at the national and international levels are trying to catch up with these challenges. As technology evolves quickly, we can anticipate that societal impacts of big data will take center stage.
GDPR, a regulation passed by the European Union in 2019 protecting the personal data of citizens, is directly addressing the new concerns for privacy raised by big data.
Find references for this lesson, and other lessons, here.
This course is made by Clement Levallois.
Discover my other courses in data / tech for business: https://www.clementlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle ttps://www.clementlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle entlevallois.net
Or get in touch via Twitter: @seinecle


Dashboard
List salary increments , payroll to prcocess updates
|
[[ row[1].name]]
|
[[ row[1].late_att]] Late Comins
[[ row[1].day_att]] Days Attended |
|
[[ row[1].name]]
|
[[ row[1].early_att]] Early Going
[[ row[1].day_att]] Days Attended |


Check your State Pension
Campaign "Get to know your State Pension"
Link from signout page to campaign
Increase in State Pension age
Warn users that the age may go up from 67 to 68
- final version - header about proposed change without State Pension age
- State Pension age separate from the amount
- State Pension age in years only
- State Pension age in years, months and days
- header about proposed change with State Pension age
- changes to your forecast header
- changes to your forecast header - with State Pension age
- sentence without State Pension age and link to calculator
- sentence without State Pension age - different wording
National Insurance caveat
Legal caveat to warn users that National Insurance information may not be up-to-date


6/5/20
index.js and index.js are the same thing right? Well no, that tiny little whitespace at the end of the second index.js can turn into a bug that takes a whole day to figure out
At the time I was lucky enough to be working with a friend who has many years experience in the industry. I was able to walk him through the bug and try and get ideas from him. We tried reading through the error messages as to why index.js wasn't being imported. We tried Googling our issue to see if it was known bug. We hopped on github and compared the current code to past versions. We rolled back and it worked fine, so why wasn't the newer version working!?
Honestly pretty hopeless and frustrated. All the usual bug fixes I had experience with didn't work.  It could be as simple as a miss-named file. Also, be much more careful when naming files (VS Code now gives you a little warning letting you know if there are leading or trailing whitespaces).
I had an item card that I needed to change background colour once the checkbox next to it had been checked, to show that that item had been collected. I wanted the checkbox on the right of the item card
I wasn't super keen to have to use JavaScript for such an simple task. Google Google Google and Google some more! I found the CSS sibling selector, on select of the checkbox I could alter the style of the following item card div. This left the checkbox on the left of the item card however, as it only worked with the item card div immediately following the checkbox - another problem-
Back to Google! I looked deeper into CSS flex and was able to find a way to reverse the order of the elements inside the container div, although in my html the checkbox still came before the item card, flex displayed them in the opposite order on the webpage!
Once again I was getting quite frustrated. Why was this simple task so complicated!? I was getting worried I would have to use JavaScript to get it to work. I was also very excited to learn the new techniques I was finding on Google, and boy did it feel great when every thing fell into place!
I learnt to pace myself. I learned to look at multiple different options to select from and pick the best one for what I need. I learned a ton about CSS combinators and the beauty that is CSS flex
In the two example above it was very important to try different problem solving techniques. Google was my best friend in both the scenarios. I was able to get different methods to fix my problem. The more problems I ran into the more confident I became using different techniques. Looking for help from my friends, looking through error messages in my terminal to see whats going wrong, typing out console.log() has become muscle memory at this point. The more confident I become using different problem solving techniques, the easier programming becomes


Search
Textilizer
Website Tranzizzle
About Gizoogle
iPhone App
Recommended Shizzle
News
T-Shirts
Advertise
wassup ghetto
Use this to translate your words into gangsta
Click
here
to learn more about Gizoogle


This is an assortment of the best HVAC/R training resources that have been published completely free for anyone to use. Check back often for updates as more training is added and released. This will be updated at the beginning of the heating season and cooling season, and also contain useful general training that can be used during any time of the year.
If you find any training resources while browsing online that has not made it on this list yet, and you think it would benefit your fellow technicians, please e-mail Mark Bean and we will see about getting it validated and added to the site so everyone can benefit from it.


widget to test and visualize Simile Exhibit in a MW page
Inspired by Exhibit.autocreate() at https://github.com/simile-widgets/exhibit/blob/master/scripted/src/scripts/exhibit.js and old: http://code.google.com/p/simile-widgets/source/browse/exhibit/trunk/src/webapp/api/scripts/create.js?r=2251
Work in process ...
==Params==
;url_data:url with the json for the exhibit


the sim's cd key
How Do I Find My Sims Serial Number?
The The Sims serial number is actually more of a product key than a serial number but as with most software, the terms are usually used interchangeably.
http://pcsupport.about.com/od/productkeysactivation/f/thesimsserial.htm
The Sims Historias da Vida-CD KEY 7CRZ-RX19-56AF-5TIT ...
The Sims Historias da Vida-CD KEY 7CRZ-RX19-56AF-5TIT-FUCK is developed by Maxis, a division of Electronic Arts Inc.. The most popular version of this .
http://the-sims-historias-da-vida-cd-key-7crz-r.software.informer.com/
The Sims - Lost Serial Number / Registration Key
If you registered your game on The Sims site, you can check your profile for the keys. Download a Product Key Finder program for free. Check the registry for the .
http://compsimgames.about.com/cs/thesims/a/lostregcode.htm
Things You'll Need
- Certified copies of public records evidence in your case
Instructions
-
-
1
The SIms 3 University Life no CD key received & game not ...
6 days ago . I bought The Sims 3 University Life DLC from Steam yesterday, it downloaded the files, however whenever I launch The Sims 3 it thinks DLC .
http://steamcommunity.com/discussions/forum/1/864961722038512681/Cd-Keys
. UNLIMITED CD KEY 1003-3075799-0432754-4668 SIM COASTER CD KEYS 2001-0013101-0010978-2823 2500-7110666-7931751-1642 SIMS CD KEYS .
http://www.oocities.org/toxicghost/Cd-Keys.html -
2
The Sims 3_ Seasons CD Key - Video Dailymotion
Nov 20, 2012 . Download Link: http://tiny.cc/goe9sw. Mirror Link: http://tiny.cc/cle9sw. Alternate: http://tiny.cc/2me9sw. FRANCE USA CANADA AUSTRALIA .
http://www.dailymotion.com/video/xv85ac_the-sims-3-seasons-cd-key_videogamesThe Sims 3 CD Key
What will you get: You will get The Sims 3 CD Key (with picture of the cd key and instructions). This game can not be activated on Steam platform. About the .
http://cdkeyshere.com/the-sims-3-cd-key.html -
-
3
The Sims 3 generations serial code? Help! - Answers - PubArticles ...
The Sims 3 generations serial code? Help! is a Gaming question related to The Sims 3 generations cd key, The Sims 3 generations serial code, You can also .
http://answers.pubarticles.com/5211,the-sims-3-generations-serial-code-help-1306820498.html -
4
The Sims 3 Seasons - CD Key / Serial Code in description - YouTube
Nov 14, 2012 . " 3Q9Z-J8UM-EMME-6XAA-VK83 " Video with CD key of The new and awesome TS3 Seasons. A long awaited exp.pack. - - - - - Like if this is .
http://www.youtube.com/watch?v=uyFCwU90K0sRegistering Sims3 CD key at Origin :: The Sims(TM) 3 General ...
Jan 8, 2013 . Every time i try to register the game i get an invalid key red screen.Im using the CD key from the library page and i just bought the game,how is .
http://steamcommunity.com/app/47890/discussions/0/828927580805553410/
-
1
References
Resources
- Photo Credit Justice image by MVit from origem dos esportes n uticos


Wrappers¶
The wrappers are classes where is posible define operations over distincts machine learning’s frameworks. mlPyp has wrappers for clasificators and auto encoders, manly for frameworks like tensorflow, keras, scikit-learn, but if you want to use another framework, the base class ‘BaseAe’ and ‘BaseClassif’ will help you to convert you model into mlPyp classes.
For example, if you are using the framework “X” for build a classification model, the BaseClassif is the parent class where you must define (aditionally to the prepare model function) convert_label, train, reformat and load functions.
class Xclf(BaseClassif):
# load_fn load a saved model
def load_fn(self, path):
from clf.models import load_model
model = load_model(path)
self.model = MLModel(fit_fn=model.fit,
predictors=[model.predict],
load_fn=self.load_fn,
save_fn=model.save)
# you model maybe can use an array of data and labels in a certain format, here is where
# you must transform it.
def reformat(self, data, labels):
data = self.transform_shape(data)
labels = (np.arange(self.num_labels) == labels[:,None]).astype(np.float32)
return data, labels
# about the labels, this is the inverse function of reformat.
def convert_label(self, label, raw=False):
if raw is True:
return label
else:
return self.le.inverse_transform(np.argmax(label))
def prepare_model(self):
# define you model here
# define the training here
def train(self, batch_size=258, num_steps=50):
model = self.prepare_model()
if not isinstance(model, MLModel):
self.model = MLModel(fit_fn=model.fit,
predictors=[model.predict],
load_fn=self.load_fn,
save_fn=model.save)
else:
self.model = model
self.model.fit(self.dataset.train_data,
self.dataset.train_labels,
nb_epoch=num_steps,
batch_size=batch_size,
shuffle=True,
validation_data=(self.dataset.valid_data, self.dataset.valid_labels))
self.save_model()


Comet parameter: require_variable_mod
- This parameter takes in one input value.
- The input value is an integer that controls whether the analyzed peptides
must contain at least one variable modification i.e. force all reported peptides
to have a variable modifiation.
- 0 = consider both modified and unmodified peptides (default)
- 1 = analyze only peptides that contain a variable modification
Example:
require_variable_mod = 0 ... modifications not required
require_variable_mod = 1 ... peptides must contain a variable modification


Binary-Coded Decimal Clock - Javascript Implementation
https://en.wikipedia.org/wiki/Binary_clock
| Binary | Decimal | Leds |
|---|
Binary-coded decimal clocks
Each column represents a single decimal digit, a format known as binary-coded decimal (BCD). The bottom row in each column represents 1 (or 20), with each row above representing higher powers of two, up to 23 (or 8).
To read each individual digit in the time, the user adds the values that each illuminated LED represents, then reads these from left to right.
The first two columns represent the hour, the next two represent the minute and the last two represent the second. Since zero digits are not illuminated, the positions of each digit must be memorized if the clock is to be usable in the dark.
Reading a binary-coded decimal clock: Add the values of each column of LEDs to get six decimal digits. There are two columns each for hours, minutes and seconds
Font: Wikipedia


Powered by Apache STeVe. Copyright 2016, the Apache Software Foundation. Licensed under the Apache License 2.0


Would you like to help us improve this website ?
mode_edit
We want your feedback
Submit
send
Cancel
delete
Back


--- layout: post status: publish published: true title: Dear jobseekers Bonds are illegal – say no to bonds author: display_name: vishvendra login: vishvendra email<EMAIL_ADDRESS>url: '' author_login: vishvendra author_email<EMAIL_ADDRESS>wordpress_id: 599 wordpress_url: https://vishvendra.co/?p=599 date: '2017-12-10 07:51:49 +0530' date_gmt: '2017-12-10 07:51:49 +0530' categories: - Common tags: [] comments: [] ---
If you have given interviews in Ahmedabad / other cities, IT companies ask you to sign bond. When you ask them what is bond they will tell you it is for company safety and your 1 or 2 years commitment. Beware, it really means that they will not pay your 2 months salary and file case to recover money against you if you leave companies before bond period / they throw you out. Also IT companies can give you 2-3 people’s work to save money. And now you are stuck.
First thing Bond is illegal in any manner and not valid until it favors both the parties equally and can not enforced to any one in any situation for any benefits in terms of serving months/years for employment.
This is all because people encouraged them to fool job seekers. These companies will never accept that they have bond policy over phone call or email. But you approach them personally they will force you to sign saying that everybody is signing, u should have no problem in bond system.
http://csrajanadvocate.blogspot.in/2013/10/bond-is-illegal.html


Change Overlay Dialog
This dialog allows you to define an overlay image that covers the entire game map.
Any changes immediately update the Map View on the Areas Page so you can preview their effects. All changes are reverted if the dialog is cancelled.
- Image File
- Coordinates
- References
- Choose OK or press Enter to accept any changes made and dismiss the dialog.
- Choose Cancel or press Escape to discard any changes made and dismiss the dialog. Closing the window using X (Close) or Alt+F4 has the same effect.
- Choose Help or press F1 to show this help page.
The topmost controls allow you to select an overlay image or remove the current image.
- File is a read-only text box that shows the file name of the current overlay image, if any.
- Hover the mouse pointer over the File text box to display the complete (absolute or relative) file path.
- Choose Browse… (Alt+B) to display a standard Windows “Open” dialog, allowing you to select a new overlay image.
- Choose Clear (Alt+C) to remove the current overlay image.
Remarks
1. File paths are stored relative to the Images
folder of your Hexkit installation directory, just as with other image files.
2. Loading a new overlay image may take a few seconds, depending on its size. The dialog controls are disabled until loading is complete.
This box allows you to adjust the size and location of the overlay image.
- Use Left (Alt+L) and Top (Alt+T) to move the upper-left corner of the overlay image, relative to the Map Borders at the upper-left corner of the Map View.
- Use Width (Alt+W) and Height (Alt+H) to change the size at which the overlay image is drawn. The image will be stretched or compressed to fit the selected size.
- Check Preserve Original Aspect Ratio (Alt+A) to indicate that both dimensions of the overlay image should be stretched or compressed simultaneously, so as to preserve its original aspect ratio. When this option is first checked, either Width or Height will shrink automatically to match the original aspect ratio.
Remarks
1. All sizes and locations are specified in pixels at the default zoom level of 100%.
2. Selecting a different overlay image does not change the currently selected coordinates.
3. If no overlay image has been selected, Left and Top default to zero, and Width and Height default to the Map Size.
4. Major size changes may take a few seconds to process. The dialog will be unresponsive during that time.
This box shows several reference sizes to help you adjust the Coordinates of the overlay image.
- Image Size shows the width and height of the current overlay image, if any.
- Map Size shows the width and height of the current game map.
- Map Borders shows the width of each horizontal border and the height of each vertical border around the four edges of the game map.
Remarks
1. All sizes are specified in pixels at the default zoom level of 100%.
2. Unlike all other sizes, the Map Borders are not scaled at non-default zoom levels.
3. Image Size may be greater or smaller than expected, relative to Map Size, if the overlay image specifies a resolution other than 96 dpi.


The default currency format is
{{ currency.code }} {{ price|number_format(currency.decimals, '.', '\'') }}
The following variables are available:
| Variable | Description | Example value |
|---|---|---|
price |
The full price of the product as float | 1500.40 |
integers |
The price without decimals | 1500 |
decimals |
Only the decimals of the price | 40 |
currency |
The currency data you specified | {code: "EUR", rate: 1, symbol: "€", decimals: 2} |
product |
The product model this price is from. | A full model instance |
Visit this plugin's documentation for more examples.


Learn more Read Coding Stories author guide. - codingstories.io/become-author See hello-world example - codingstories.io/story/{helloworld-to-mocking-java} See more examples - gitlab.com/codingstories
Develop Write first two commits and publish your story - https://codingstories.io/become-author/guide#section9


@remarks
An example of GetLength is GetLength(Arr, 1), which returns the number of elements in the first dimension of the array.
| Exception | Condition |
|---|---|
| ArgumentException | Arr is not an array. |
| ArgumentNullException | Arr is an uninitialized array. |
| IndexOutOfRangeException |
Dimension is less than one. -or- Dimension is greater than rank. |


{{SUBJECT We've got your request!}}
Hi,
We've got your request for {{title}}. You can view your request here: https://openaccessbutton.org/request/{{_id}}.
We'll send your request to the author as soon as possible. You can help by making sure we have all the details for the request.
Kind regards,
Natalia
Open Access Button Request Manager


Hi,
I'm Eric Chan
Explorer. Designer. Engineer. Speaker. System Thinker.
I am a technologist passionate about crafting new ventures and futures by combining emerging technologies like AR, blockchain, IoT, or AI with tangible human needs. I have prototyped new services, products, and architectures across a wide range of domains. Previously as a Venture Designer at IDEO and IDEO CoLab, I've led technological explorations into emerging technology for Fortune 100 companies, startups, and nonprofits, including Citigroup, Exelon, Nasdaq, Filament, and the Open Music Initiative.


e-Transfer Recipient
{{ supportDeliveryFormControl?.recipientLastName.value }}, {{ supportDeliveryFormControl?.recipientFirstName.value | titlecase }}
e-Transfer Notification Preference
Email Address
Mobile Number (Canadian)


jhiTranslate="elasticsearch.reindex.dialog.question"<% } %>> Are you sure you want to reindex Elasticsearch? This could take a while!


Crypto Market And Bitcoin Bearish Continuation: BCH, EOS, TRX, ADA Analysis
- The total crypto market cap is currently declining and it could test $220.0B support.
- Bitcoin price is under pressure and it is likely to break the $8,500 support area.
- EOS price is now trading near the $3.350 support area and showing bearish signs.
- BCH price failed to stay above the key $280 support and extended its decline.
- Tron (TRX) price is down more than 4% and it is approaching the $0.0185 support area.
- Cardano (ADA) price is now trading near the key $0.0420 support area.
Bitcoin and the crypto market cap are currently signaling more downsides. Ethereum (ETH), EOS, Tron (TRX), BCH, ripple, ADA and BNB are under a lot of selling pressure.
Bitcoin Cash Price Analysis
Recently, BCH price started a fresh decrease from the $300 resistance level against the US Dollar. It declined below the $285 support and the bulls even failed to defend the key $280 support area. As a result, the price declined sharply and it is now approaching the $265 and $264 support levels.
On the upside, the previous important supports near the $285 and $280 level may now act as a hurdle and prevent a fresh increase in the near term.
EOS, Tron (TRX) and ADA Price Analysis
EOS price failed to stay above the $3.500 support area and it declined below the $3.400 support. The price is now trading near the $3.350 support area. If there are more downsides, the next stop for the bears might be near the $3.250 level. On the upside, the $3.500 level is likely to act as a strong resistance.
Recently, tron price climbed above the $0.0200 resistance area. However, TRX failed to gain strength above the $0.0205 resistance and started a fresh decline. It broke the $0.0200 and $0.0195 levels. It seems like the bears are once again eye the $0.0185 support area.
Cardano price failed to continue above the $0.0445 and $0.0450 resistance levels. ADA price is currently declining and it is now trading near the $0.0420 support area. If there are more downsides, the next stop could be $0.0400, where the bulls are likely to appear.
Crypto Market Cap
Looking at the total cryptocurrency market cap 4-hours chart, there was a steady decline from the $235.0B and $240.0B resistance levels. The market cap declined below the $230.0B level and it seems like there is a risk of another break down towards the $220.0B support area. On the upsides, the $230.0B level is an initial resistance, above which it could test the $240.0B resistance.
Overall, there is a risk of more losses in bitcoin, ETH, XRP, TRX, ADA, bitcoin cash, litecoin, EOS, stellar, IOTA, ICX, WAN, and other altcoins in the near term.


Hello World!
How's it going
testing
Hello World! {{ name }}
{{ experience.language }}
{{ experience.years }}
{{ experience.proficiency }}


SoQ Highlights
Here at the Society of Queens, we have hosted, attended and been at the core of many different events. Take a look at our gallery below to see where we've been!
×
Test image 1
Test image 2
Test image 3
Test image 4
Test image 5
Test image 6
Test image 7
Test image 8
Test image 9
Test image 10
Instagram
Twitter
Facebook
Paypal


Seized Boats 'Ruined' By Russia Returned To Ukraine
Three Ukrainian naval vessels, seized by Russia almost a year ago, returned to the Ukrainian port of Ochakiv on November 20. The Ukrainian navy said the three ships, two small Ukrainian armored artillery vessels and a tug boat, were in very poor condition and needed to be tugged into port by other vessels.


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface BenchmarkReportable
An interface to be implemented by all classes responsible for generating benchmark reports.
| Method Summary | |
|---|---|
Object |
calculate(Object reportContainer)
Does the report specific calculations. |
void |
executeReport()
A single method to execute report (A command line counter part API ). |
void |
parseArguments(String[] args)
Parses the command line arguments. |
void |
printReport(Object reportContainer,
File outputFile)
Prints a report in text or HTML format. |
Object |
store(File inputFile)
Organizes the log entries in report specific data structure. |
| Method Detail |
|---|
Object store(File inputFile) throws BenchmarkReportException
inputFile
- An input benchmark file handle.
BenchmarkReportException
- if an error occurs while organizing the log entries.Object calculate(Object reportContainer) throws BenchmarkReportException
reportContainer
- An object containing the log entries organized in a report
specific data structure.
BenchmarkReportException
- if computation error occurs.void printReport(Object reportContainer, File outputFile) throws BenchmarkReportException
reportContainer
- An object containing the log entries organized in a report
specific data structure.outputFile
- An output report file handle.
BenchmarkReportException
- if report couldn't be printed to given media (text/HTML).void parseArguments(String[] args) throws BenchmarkReportException
args
- A string array containing command line parameters.
BenchmarkReportException
- if an invalid argument is provided.void executeReport() throws BenchmarkReportException, BenchmarkReportExecutionException
BenchmarkReportException
- if an error occurs while generating the report.
BenchmarkReportExecutionException
- if the given input file is modified while generating the report.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Hello again! This week I will be examining the differences between arrays and hashes!
To begin lets get a little into what exactly arrays and hashes are. An array is essentially a list that holds a collection of objects. These can be strings and/or numbers for example.An example of an array would look like so:
array("pencil","pen", "44", "apple")
If we want to call an item from an array we would have to do so based on its index value. For this, we always begin at 0. So if we wanted the pencil, we would have to do array(0).
Hashes on the other hand, work in sort of the opposite way in that we call the item istelf and it returns whatever we associate it with. A hash looks like this:
city = {"Toronto" => Canada, "New York" => USA}
So, for instance, if we now called on the has New York, it would return USA.
To summarize, arrays work like indexed lists, they can be organized, arranged, and values can be pulled out using a defined number. Hashes work like lists as well, but are assigned based on their key values.
Thank you for reading!


--- title: Building a COVID paper screening pipeline author: Luke McGuinness date: '2020-06-01' slug: building-a-covid-paper-screening-pipeline categories: - bibliographic-database - evidence-synthesis - R tags: [] excerpt: Put excerpt here math: no meta: yes draft: yes ---


public class TurningDay
extends java.lang.Object
| Constructor and Description |
|---|
TurningDay(Game_Profile game_Profile,
Base_Component base_Component,
Barn barn,
Controller controller,
Inventory inventory)
Construct game profile and upadte with access of other classes
|
| Modifier and Type | Method and Description |
|---|---|
void |
eatBurger()
eatBurger Limit the daily burger eating count to 2, so that it wont be a loophole as unlimited energy refill
|
void |
endDay()
endDay happens when the contract end(end of game)
|
void |
HiddenEvent()
HiddenEvent Hidden event happens when user perform certain action and accumulate certain variable that met hidden condition
|
void |
NextDay()
NextDay this is a advance controller method which perform 'Sleep' for user to move onto next day
A set of action will be performed each time this method get called which - turn into next day, energy, daily allowance, calculate animal allowance
Also it refresh the boolean/int status - watering, feedAnimal, Rest(on chair), eat_burger, fertilizing
Then it apply the farmerType advantage and display a Morning message to user
AnimalAllowance also check for animal healthiness, if condition met, user might get allowance forfeit
On the day before Contract end(End game) there will be 3 random event occur randomly, user receive advantage/disadvantage base on certain condition
When Animal allwaonce bad case / random event occur, it will overwrite morningmessage
Thers also hidden event, when user perform some set of action and accumulate a certain value that met hidden condition, hidden event occur
hidden ecent wont happen on the day before ending which will never intersect with random event
After all updateAll method is called to update profile in all aspect
|
void |
randomEvent(int random_case)
randomEvent 3 case of random event happens randomly(by luck and Probability) on the day before ending
|
void |
refreshDaily()
refreshDaily Refresh all status of perform action to positive on daily base
|
void |
setDialog(java.lang.String text) |
int |
testRandom()
testRandom Randomly decide a number between a range (0 - 2 in this case) for random event
|
void |
updateAll() |
public TurningDay(Game_Profile game_Profile, Base_Component base_Component, Barn barn, Controller controller, Inventory inventory)
game_Profile
- Access the data (model class) from Game_Profilebase_Component
- Access to update stats ,energy ,inventorybarn
- Access to allow update barncontroller
- Access ro perform certain trigger actionsinventory
- Access Inventory for updatingpublic void NextDay()
public void randomEvent(int random_case)
random_case
- Get a random number from testRandom to decide which random event to occurpublic void HiddenEvent()
public void refreshDaily()
public int testRandom()
public void endDay()
public void eatBurger()
public void updateAll()
public void setDialog(java.lang.String text)


Toggle navigation
jQuery
Home
What is your Twitter handle?
Must be 5 characters
More than 5 characters!
Less than 5 characters!
twitter.com/{{ lowercasehandle() }}
Rules
{{rule}}


Simple terms for Pocketwatch.xyz
-
When you buy an interval you purchase a number of invocations. But actually that number is only the maximum number of invocations. The actualy invocations effected are always less than that because each request always takes slightly longer than the interval duration ( for example, a 1 seconds request typically takes 1.1 seconds ), so that means that over a 5 minute ( 300 invocation ) duration, you will typically only see about 270 invocations. This is normal. What you are in effect paying for is utilizing of our system for the specificied duration of time, which is always exact. But the number of invocations we provide at time of sale is only a guide and you agree to take it as such. If you have a need for a specific number of invocations ( rather than a specific exact duration over which they occur ) please contact us via email or raise an issue on our github issue tracker.
-
This is the beta release of pocketwatch. Currently limitations include (but not limited to): GET requests only,
cannot delete an interval once it starts without knowing it's tracking number (long, secret code which you need to save
if you want to prove you created the interval and want to request its deletion, currently request is via email).
-
If you do request an interval deletion we do not currently offer any refunds. So please begin your intervals carefully. We can delete it for you if you request it (and have the tracking number) but you will not get any money back.
-
Use this tool at your own discretion. We are not responsible for how you use it.
-
We reserve the right to delete intervals with no refund if it appears they are harmful in any way.
-
In general we will not offer refunds. But in case we do, they will be determined on a case by case basis.
-
Don't use the names The Dosaygo Corporation, DOSY, Dosycorp, or Pocketwatch.xyz in anyway that suggests partnership or endoresment or other relationship when none in fact exists.
-
This product is offered by the Dosyago Corporation, any legal action will be decided with respect to the laws of the United States, and through the courts in that jurisdiction.
-
Unless otherwise made explicit, no content or other corpyrightable or protected work may be reused or incorporated without prior written permission from us.
-
If you need to contact us open an issue at: https://github.com/dosyago-corp/service-issues/issues
-
We do our best to place and fulfill your orders as requested, and to achieve the specified rates of requests for the specified duration as ordered in your interval, however we do not guarantee we shall achieve this, and we are not responsible for issues related to external network latency, routing or other such issues, and in the case your interval suffers degraded performance on account of such or other issues we have limited control over, we certainly offer no refunds. This service does not currently have any SLA ( service level agreement ).
-
If you need to contact us privately join our Discord channel using this invite and DM us: https://discord.gg/VWAudDX
-
These terms are a living document. We may update them at any time, with or without notice.


WITNESS LIST Economic Development Committee May 15, 2000-10:00A Financial Privacy On: Clark, Jeff (Alliance for Responsible Information Practices), Austin, TX Johnston, J. Bradley (Temple-Inland Financial Services, Inc.), Austin, TX Neeley, Karen (General Counsel, Independent Bankers Association of Texas), Austin, TX Schneider, Rob (Consumers Union), Austin, TX Privacy of Health Information On: Breitenstein, A.G. (Self), Somerville, MA Cooper, MD, Esther N. (Texas Medical Association), Dallas, TX Davis, Will D. (Texas Association of Life & Health Insurers), Austin, TX Jacobson, James M. (Disease Management Association of America), Washington, DC McGiffert, Lisa (Consumers Union), Austin, TX Palmer, Steven (Pharmaceutical Research & Manufacturers of America), Denver, CO Privacy Overview On: Payne, Rebecca L. (Chief, Open Records Div., Attorney General's Office), Austin, TX Purcell, Carolyn (Executive Director, Dept. of Information Resources), Austin, TX Rogers, Elizabeth (Vinson & Elkins), Austin, TX Ryan, John (Conference of State Bank Supervisors), Washington, DC


{% include note.html content=“This is early alpha documentation that may be incomplete and is still under development.” %}
{% include api/{{ page.lang }}/5x/express.md %} {% include api/{{ page.lang }}/5x/app.md %} {% include api/{{ page.lang }}/5x/req.md %} {% include api/{{ page.lang }}/5x/res.md %} {% include api/{{ page.lang }}/5x/router.md %}


About Us
Meet the people behind brainHealthDx.
Amy Lai
Amy is taking her final UC Berkeley MIDS class. She hopes combine her passions for healthcare and data science to help people live healthy lives.
<EMAIL_ADDRESS>Leslie Teo
Leslie is also taking his final MIDS class. He seeks to use data, computational tools, and algorithms to solve challenging business and social problems.
<EMAIL_ADDRESS>Richard Hitchens
Richard is also taking his final MIDS class. He is looking forward to spending more time with his family and not studying again for a long time.


But we have skipped ahead a little. arrowP was defined by:
item.set('arrowP',item.arrowPP.instantiate()).__hide();
There is a reason for instantiating arrowPP to arrowP, and then arrowP to arrow1 and
arrow2, rather than deriving arrow1
and arrow2 directly from arrowPP. Namely, arrowPP, having come into being via a require,
is an external reference of the item we are building. arrowP, on the other hand, is an internal structure.
arrowPP's properties (eg fill or stroke) are not available for modification,whereas arrowP's are.
pj.returnValue(undefined,item);
returns item as the value of the component.
To complete the explantion of this bit of code: __show, __hide, and __moveto are methods of
pj.svg.Element (the prototype which implements drawable shapes based on svg Elements).
setEnds is a method of the arc_arrow prototype, defined by the code
https://protochart.org/repo1/shape/arc_arrow.js.
Items may be displayed in the editor, as we have seen (
https://protochart.org/edit.html?source=https://protochart.org/repo1/example/simple_diagram.js
), or assembled into larger structures via require.
Items can also be displayed outside of the editor, as illustrated in the file
https://protochart.org/repo1/example/standalone.html.
Use your browser's view source to see how this works.
https://protochart.org/repo1/example/standalone2.html, is similar
but builds the item inline rather than requiring it from simple_diagram.js.
The second variant is available at
jsfiddle
ProtoChart also has a viewer:
https://protochart.org/edit.html?source=https://protochart.org/repo1/example/simple_diagram.js
2. Code Structure
The ProtoChart implementation has three levels. First, there is the core, in which deep prototypes
and their basic operations, including serialization and instantiation, are defined. The second level supports
deep prototypes in the context of 2d graphics generally and infographics in particular. This level of the implementation relies on
SVG. The third level implements
a prototype-enabled
user interface. You see this interface at https://protochart.org/edit.html
The core level is hosted at prototypejungle.org:
https://prototypejungle.org/js/pj-0.9.3.js.
The remaining levels are at
https://protochart.org/js/dom-0.9.3.js
and https://protochart.org/js/editor-0.9.3.js.
The dom is built into the editor, so only one or the other of these two need be loaded.
There are minimized versions: https://prototypejungle.org/js/pj-0.9.3.min.js, https://protochart.org/js/dom-0.9.3.min.js,
and https://protochart.org/js/editor-0.9.3.min.js.
Unlike the other levels, which have no
association with any particular web location and could be deployed from anywhere,
the editor is configured specifically to support the ProtoChart web site. Summarizing:
these are the lines needed for applications hosted
elsewhere:
<script src="https://prototypejungle.org/js/pj.0.9.3.min.js"></script>
<script src="https://protochart.org/js/dom-0.9.3.min.js"></script>
3. Trees
All deep prototypes (aka "items") are trees: each non-atomic child
has a unique parent. (Formally, if parent.prop === child, and prop is an own property of parent,
there is no parent2 with parent2 !== parent, and
with parent2.prop2 === child for own property prop2 of parent2.
The internal nodes in items inherit from prototypes pj.Array
for sequential, zero-based arrays, and pj.Object for objects which are not arrays.
pj.Object.mk();
creates a new Object, and
pj.Array.mk();
a new Array.
object.set('name',child);
assigns child as a child of
object with name name.
If child is an Object or Array, this results in setting special properties:
child.__parent === object, and child.__name === 'name'.
For an Array,
array.push(child);
Pushes child onto the end of array,
and assigns array as the parent of child. That is,
array[array.length-1] === child, and if child is an Object or Array,
and child.__parent === array. Also, child.__name === array.length-1.
Arrays are always sequential and zero-based.
pj.lift(obj);
takes an "ordinary" Javascript tree such as one expressable in JavaScript object notation,
and turns it into the PrototypeJungle kind of tree.
For example:
pj.lift({a:2,b:["a",4]});
will produce a Object/Array tree with matching structure.
Click here for an example of tree construction and manipulation.
X
var root = pj.Object.mk();
var aa = pj.Object.mk();
var bb = pj.Object.mk();
root.set("a",aa); // adds aa as a child named "a" of root
root.set("b",bb);
// __name and __parent "glue the tree together".
bb.__name;
==>b
bb.__parent === root;
==>true
// let's add some atomic data
aa.x = 5; // set is not needed for atomic data or functions
aa.f = function (x) {return x*x;}
// now for an Array
var cc = pj.Array.mk();
bb.set("c",cc);
cc.push(pj.Object.mk().set("z",45));
cc.push(5);
this yields:
--root--
/ \
a b
/ \ \
x f c
/ \ \
5 function [ *, 5]
/
z
/
45
where * is an Object
This could also be built with
var root = pj.lift({a:{x:5},b:{c:[{z:45},5]}})
root.a.f = function (x) {return x*x};
There is nothing wrong with having properties of Objects that reference
nodes in the tree other than children, as in
a.xx = b;
in the above example.Then xx is a cross-tree reference.
Restriction on names: names may include only letters, numerals, and the underbar, and may not start with a numeral.
4. Instantiation and serialization
inode = node.instantiate();
builds an instantiation of node; a tree which has the same structure as node, but inherits primitive
data and functions from node via prototypical inheritance. (Details
here)
Serialization is performed by:
s = pj.stringify(node);
as described here.
5. No news
Nodes are constructed with pj.Object.mk() and pj.Array.mk(), rather than via the use of a "new". The definition of the mk method for Object is:
pj.Object.mk = function () {
return Object.create(pj.Object);
}
Recall that Object.create(X) creates a new object with X as prototype.
Object is introduced simply with:
pj.Object = {};
and Array with:
pj.Array = [];
pj.Object itself serves as the prototype for instances. In the more conventional pattern, pj.Object would be a function, and
the prototype property of that function, not Object itself, would be the prototype for the instances generated via the new operator
(note that if F = function (){}, new F()
is equivalent
to Object.create(F.prototype)
)
The
function, function.prototype, new pattern has been available in JavaScript all along,
whereas the more direct Object.create was introduced more recent years (in version 1.8.5 to be exact). PrototypeJungle
employs the newer pattern, not so much for its intrinsic simplicity (though that's nice), but because this way of doing things has a major
simplifying effect on the entire PrototypeJungle code base.
You will never see a "new" anywhere in the code. The convention is that for prototype X, X.mk is the creator/initializer (which may take arguments).
6. SVG
We have seen SVG Elements before, as in the line
item.set('circleP',svg.Element.mk(
'<circle fill="rgb(39, 49, 151)" stroke="black" stroke-width="2" r="5" />').__hide());
in the quick start section.
Generally, svg.Element.mk(markup); creates an object that inherits from the prototype svg.Element, which in turn
inherits from pj.Object. Its content
as an SVG element is as specified by the markup. At this stage, only some of the tags are supported:
g, line, polyline, circle, rect, text, g and svg.
7. Naming conventions
Developers perform their work by defining new properties and methods for pj.Object, pj.Array, and
pj.svg.Element.
Thus, the issue arises of avoiding name collisions with methods on these types that ProtoChart
itself defines. A primitive scheme addresses this issue: except for a very small collection of basic methods,
PrototypeChart uses names that start with a double underbar (__). So, name collisions
can be avoided if developers never use double-underbar prefixes for the properties and methods that they
introduce for their own purposes.
Of course, the
few basic methods should not be trampled on either, but it is a very short list, namely:
instantiate, mk, name, parent, remove, and set.
It is not quite right to call the double underbarred symbols private, since, as you will see,
several of them
(eg __getExtent to take a random example) have designated public purposes.
8. Controllers
Notice that when you select a bar in the bar chart, and then click the up button, a box with draggable handles appears
which allows you to resize the chart. Also, when you select one of the arrows in the component example, handles appear that allow
modification of the arrow. These are dubbed "controllers", can be implemented for any item, and come in two varieties "resizer"
and "custom". To implement a resizer, two methods, __getExtent(), and __setExtent(extent) should be defined. This is all that is needed: if these
methods are present, the resizing box with its handles will appear in the UI whenever that item is selected. __getExtent takes no arguments,
and returns a geom.Point, while __setExtent takes a geom.Point representing the new extent as input, and returns nothing. See the bar chart code for an example.
To define a custom control, the two methods needed are __controlPoints(), and __updateControlPoint(index,pos).
__controlPoints should return a pj.Array of geom.Point (s). When the item is selected, handles will appear
at the indicated positions (the points should be given relative to the item's own origin). Then, when dragging takes
place, __updateControlPoint(index,pos) is called at each moment of dragging, with index set to the index
of the point which generated the handle being dragged, and pos is its new position. It is the responsibility of
__updateControlPoint to update and redisplay the item as appropriate given the new handle position. The arrow item
provides an example.
If all four methods are defined, the item will be displayed with both a resize box, and the custom handles.
9. Data Binding
Data binding is done in a very simple way, amounting to no more than two conventions. The first is that the data associated
with any node N is held in the field N.__data. The second is that the method N.update, if any, has the job of causing the state of
N to
reflect the data. The basic data binding operator is (in essence):
Object.__setData = function (d) {
this.set('__data',pj.lift(d));
if (this.update) {
this.update();
}
}
(pj.lift is a no-op when applied to an object which is already in Object/Array form.)
10. Spreads
A pj.Spread represents a collection of items instantiated from the same prototype. The data associated
with a spread contains a sequence of individual data entities (eg numbers or points). The spread update method instantiates its prototype once for each
datum, and binds each instantiation to that datum. (Each spread has its own method for binding, but the update method is common to all).
For example,for the bar chart, the set of bars is represented as a spread, and the data
contains a sequence of metal densities. The prototype for this spread is a rectangle, and the binding method sets the width of each rectangle instantiation
to the corresponding density, properly scaled (the height is set to a common value).
In infographics, it is conventional to refer to visual items, such as the bars in a bar graph, whose properties encode data values as "marks".
Now, to details:
var spread = pj.Spread.mk(mProto);
creates a spread whose members are instantiated from mProto.
As indicated earlier, a spread should also have a method which binds elements of the data sequence to the marks:
spread.binder = function (mark,datum,index,size) {...}
index is the index of the datum and its corresponding mark within the sequence. Size is length of the data sequence.
Here's an example:
https://protochart.org/view.html?source=/repo1/example/simple_bar_chart.js Code:
(function () {
var item = pj.svg.Element.mk('<g/>');
// barP is the prototype for bars
item.set("barP",pj.svg.Element.mk('<rect fill="blue" stroke="black" stroke-wwidth="3" height="50"/>'));
item.barP.scale = 100;
item.set("marks",pj.Spread.mk(item.barP));
item.marks.binder = function (mark,data,index,size) {
mark.width = mark.scale * data; // the width of the bar set from the data
mark.__moveto(0,(size - index) * 60; // stack the bars from bottom to top
}
item.update = function () {
// send the top level data down to the mark set for display
this.marks.setData(({"elements":[3,4,1]}));
this.marks.update();
}
pj.returnValue(undefined,item);
})();
Note the form of the data sequence: {"elements":[3,4,1]}. More will be said about data sequences in a moment.
11. External Data
Data can be loaded from external sources using the require mechanism, as follows: (at
https://prototypejungle.org/sys/repo3/example/external_data0.js
)
pj.require('example/simple_bar_chart.js','example/sample_data0.js',function (erm,graphP,data) {
var item = pj.svg.Element.mk('<g/>');
item.set("graph",graphP.instantiate());
item.graph.setData(data);
pj.returnValue(undefined,item);
});
where https://prototypejungle.org/sys/repo3/example/sample_data0.js contains:
pj.returnValue(undefined,{"elements":[1,2,4,8]});
Alternatively, for each item with a dataSource property, the data appearing at the indicated location is automatically
loaded and bound to the item at initialization. Here is an example, whose effect is the same as produced by the example
just above (at
https://prototypejungle.org/sys/repo3/example/external_data1.js
)
pj.require('example/simple_bar_chart.js',function (erm,graphP) {
var item = pj.svg.Element.mk('');
item.set("graph",graphP.instantiate());
item.dataSource = 'example/sample_data0.js'
pj.returnValue(undefined,item);
});
item.dataSource = 'https://prototypejungle.org/sys/repo2/data/metal_densities.js';
12. Data Format
There is no fixed format for data objects in the general context of data binding.
(Although JSON is normally used for their external form, in any case). However, there is special support for data sequences in the implementation
of the pj.Spread class, and at the level of the user interface.
Here is the data for the bar graph of metal densities:
{"title":"Density in grams per cubic centimeter",
"fields":["metal","density"],
"elements":[{"metal":"Lithium","density":0.53},{"metal":"Copper","density":9},
{"metal":"Silver","density":10.5},{"metal":"Gold","density":19.3}]
}
This is equivalent:
{"title":"Density in grams per cubic centimeter",
"fields":["metal","density"],
"elements":[["Lithium",0.53],["Copper",9],["Silver",10.5],["Gold",19.3]]
}
The fields property lists the properties of the individual elements in the sequence. Each member elements may have two forms:
an object with the properies specified in field, or an array with one element
per field, specifying the values of the fields, in the order given in fields. The title property is optional.
13. API
Calls are given in the form f(arg1:type1,arg2:type2...)
where types are: string, number, Node (Array or Object)
or any
. When a call
is described in more detail elsewhere in this document, a link is supplied.
Core
pj.Object.mk()
Constructor for pj.Object
pj.Array.mk()
Constructor for pj.Array
pj.Object.addListener( nm:string; fn:function)
Used in PrototypeJungle's simple event system. Documention pending.
pj.Object.set(nm:string,vl:any)
Assign vl as the child of this
pj.Object.remove(vl:Node)
Remove this
from the tree in which it appears.
pj.Object.outerUpdate()
Documention pending.
pj.treeProperties( nd:Node, includeLeaves:boolean)
Returns an array of the direct properties of nd which are edges of the prototype tree.
The argument includeLeaves is self-descriptive.
pj.declareComputed(nd:Object)
Declare that nd is generated by computation within an update method. The effect of this
is to delete nd when the item is saved; updates are always run as the part of the restore process,
so nd will be recomputed on restore. Computed content can be modified in the inspector, and these modifications will be retained through subsequent
updates, saves, and restores. The implementation keeps track of modifications,
and, whenever an update is done, reapplies the modifications to the updated state.
geom
geom.Point.mk(x:number,y:number)
Constructor for geom.Point, with properties x and y. If x and y are omitted, 0,0 are used.
geom.Point.plus(p:geom.Point)
Adds point p to this
geom.Point.minus()
= geom.Point.mk(-this.x,-this.y)
geom.Point.difference(p:geom.Point)
= this.plus(p.minus())
geom.Point.times(v:number)
Scales the point by v
geom.Rectangle.mk(corner:geom.Point, extent:geom.Point)
Constructor for geom.Rectangle, with properties corner and extent. For example geom.Rectangle.mk(geom.Point.mk(10,20),geom.Point.mk(5,5))
has
(10,20) as its upper-left corner, and (15,25) as its lower-right corner.
svg
svg.Element.mk(s:string)
Constructor for svg Elements. s is markup.
svg.Element.bringToFront()
Transfers the element so that it is
the last in the child list of its parent. This has the effect of displaying the element in front of its siblings.
svg.Element.hide()
Self-explanatory.
svg.Element.show()
If an element has been hidden, change its status to "visible"
svg.Element.draw()
Refresh this element. Changes to the PrototypeJungle
data for an element (and its descendents) are transferred to the svg model. Adding an element to the PrototypeJungle tree
is not reflected
svg.Root.mk(s:DomElement)
Constructor for a root of the svg model (with tag svg). DomElement should be an element on the current page, retrieved eg via document.getElementById("svgDiv"), to which the new
top-level svg element will be added. The content to be displayed should be set as the child named "contents" of this root.
svg.Root.fitContents(v:number)
Arrange for the current contents of the
svg model to appear centered in the viewing div, scaled into a box that is fraction v of the available area (eg 0.9 if
you wish at least a 5% boundary around the content.
svg.Element.setScale(s:number)
Scale this element by s. This is implemented
by setting the scale of the svg transform of this element to s.
svg.Element.getScale()
Returns the scale of the svg transform of this element, or 1
if there is no transform.
svg.Element.moveto(p:geom.Point)
Move this element to p. This is implemented
by setting the translate element of the svg transform of this element to the coordinates of p. (A transform is introduced
if not already present).
svg.Element.getTranslation()
Returns the translate element of the svg transform of this element,
converted to a geom:Point, or the Point <0,0> if there is no transform.
svg.Element.bounds(rt:svg:Element)
Return the bounds, as a geom:Rectangle, of the given Element (and its descendants). Bounds are given in the coordinates of rt, which should be the element itself, or an ancestor.
ui
These calls control how data is displayed in the inspector. They may be included in code intended for use outside the inspector, since
pjdom.0.9.0.js stubs them.
ui.freeze(nd:Node,props:array of string)
Hide the specified
properties of nd in the inspector's object tab.
ui.freeze(nd:Node,props:array of string)
Do not allow the specified
properties of nd to be modified in the inspector.
ui.watch(nd:Node,props:array of string)
When any of the specified
properties of the specified node are modified in the inspector, run an update on the top level.
ui.setNote(nd:Node,
prop:string,note:string)
This supports a simple documentation scheme. It associates the given
note with property prop of nd. In the inspector, prop will appear with a little "?" which, when clicked, will pop the note.
{{endplate}}


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/tactic.20state.20filtering.20in.20VS.20code.html ---
Recently, a Lean user "ratmice" requested a feature for the VS code extension which could show/hide variables beginning with _
from the tactic state in the info view. @Patrick Massot suggested that a general filtering feature could be useful. So, I threw together a "tactic state filtering" PR for the VS code extension. Currently the PR adds a dropdown menu to the info view window which displays a customizable list of filters which can be applied (either "positively" or "negatively") to the tactic state.
While this does the job, I think it might not be too hard to make the filtering more interactive, e.g. so that you could click on x's next to particular items in the tactic state to hide them. See the PR thread for a more specific proposal. I'd like to get more feedback before I write more code. What would you like to see from a "filtering" feature?
This sounds really good. I can't currently test it... but this is is something I've wished for quite a long time.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


--- layout: contact title: Contact description: Contact Sarah E. Frostenson ---
Arequipa, Peru 2013
A lover of travel, I know there is always more of the world to discover. It is with this insatiable curiosity that I tackle my work and strive to make sense of messy, complicated data in order to further our roles as storytellers and disseminators of information.
Thanks for reading and please feel free to email me at sarah.e.frostenson@gmail.com.


Scenario CV.SC.04 : activity diagram
Created:
15/05/2018 10:09:58
Modified:
15/05/2018 11:04:37
Project:
Author:
alfiva
Version:
1.0
Advanced:
ID:
{ED53967B-C332-4161-8D37-8FDAD183D2B2}