Today we continue discussing the best practice from
storage engineering:
#codingexercise
int getCountOdd(node* root)
{
if (root == null) return 0;
int count;
while (root) {
if (root->value %2 == 1) {
count++;
}
root = root->next;
}
return count;
}
146) Footprint: The code for a storage server can run on any
device. Java for example runs on billions of devices and a storage server
written in Java can run even on pocket devices. If the storage is flash and the
entire storage server runs only on flash, it makes a great candidate for
usability.
147) Editions: Just like the code for storage server can be
made suitable for different devices, it can ship as different editions. One way
to determine the different kinds of editions is to base it on where the
customers demand it. Although there are many perspectives in these decisions,
the ultimate service of the product is for the customer.
148) Standalone mode: Most storage products offer
capabilities in a standalone mode. This makes it easy to try out the product
without dependencies. One Box deployments also work in this manner. When we
remove the dependency on the hardware, we enable the product to be easier to
study and try out the features.
149) End User License Agreement: Products have
EULAs which the user is required to accept. If the EULA conditions are not read
or accepted, certain functionalities of the server are
turned off. Typically, this check happens at
the initialization time of the product or the restart of the service.
However, the initialization code is global and has very sensitive sequence of
steps. Therefore, placing the EULA criteria without leaving the
product in a bad state is necessary.
150) Provisioning: Storage artifacts are not just created by
user. Some may be offered as built-ins so that the user can start working with
their data rather than handling the overhead of setting up containers and
describing them. These ready to use built-in storage artifacts lets the user
focus on their tasks rather than the system tasks. A judicious choice of all
such artifacts and routines are therefore useful to the user.
#codingexercise
int getCountOdd(node* root)
{
if (root == null) return 0;
int count;
while (root) {
if (root->value %2 == 1) {
count++;
}
root = root->next;
}
return count;
}
No comments:
Post a Comment