Snapshot/Restore Repository Plugins
Repository plugins extend the Snapshot/Restore functionality in OpenSearch by adding repositories backed by a cloud provider or by distributed file systems.
Core repository plugins
The core repository plugins are:
- S3 Repository
-
The S3 repository plugin adds support for using S3 as a repository.
- Azure Repository
-
The Azure repository plugin adds support for using Azure as a repository.
- HDFS Repository
-
The Hadoop HDFS Repository plugin adds support for using HDFS as a repository.
- Google Cloud Storage Repository
-
The GCS repository plugin adds support for using Google Cloud Storage service as a repository.
Azure Repository Plugin
The Azure Repository plugin adds support for using Azure as a repository for Snapshot/Restore.
Installation
This plugin can be installed using the plugin manager:
sudo bin/opensearch-plugin install repository-azure
The plugin must be installed on every node in the cluster, and each node must be restarted after installation.
You can download this plugin for offline
install from https://artifacts.opensearch.org/downloads/opensearch-plugins/repository-azure/repository-azure-1.0.0.zip. To verify
the .zip
file, use the
SHA hash or
ASC key.
Removal
The plugin can be removed with the following command:
sudo bin/opensearch-plugin remove repository-azure
The node must be stopped before removing the plugin.
Azure Repository
To enable Azure repositories, you have first to define your azure storage settings as secure settings, before starting up the node:
bin/opensearch-keystore add azure.client.default.account
bin/opensearch-keystore add azure.client.default.key
Note that you can also define more than one account:
bin/opensearch-keystore add azure.client.default.account
bin/opensearch-keystore add azure.client.default.key
bin/opensearch-keystore add azure.client.secondary.account
bin/opensearch-keystore add azure.client.secondary.sas_token
For more information about these settings, see Client settings.
|
Important
|
Supported Azure Storage Account types
The Azure Repository plugin works with all Standard storage accounts
Premium Locally Redundant Storage ( |
Client settings
The client that you use to connect to Azure has a number of settings available.
The settings have the form azure.client.CLIENT_NAME.SETTING_NAME
. By default,
azure
repositories use a client named default
, but this can be modified using
the repository setting client
.
For example:
PUT _snapshot/my_backup
{
"type": "azure",
"settings": {
"client": "secondary"
}
}
Most client settings can be added to the opensearch.yml
configuration file.
For example:
azure.client.default.timeout: 10s
azure.client.default.max_retries: 7
azure.client.default.endpoint_suffix: core.chinacloudapi.cn
azure.client.secondary.timeout: 30s
In this example, the client side timeout is 10s
per try for the default
account with 7
retries before failing. The endpoint suffix is
core.chinacloudapi.cn
and 30s
per try for the secondary
account with 3
retries.
The account
, key
, and sas_token
storage settings are reloadable secure
settings, which you add to the OpenSearch keystore. For more information about
creating and updating the OpenSearch keystore, see
Secure settings. After you reload the settings, the
internal Azure clients, which are used to transfer the snapshot, utilize the
latest settings from the keystore.
|
Note
|
In progress snapshot or restore jobs will not be preempted by a reload of the storage secure settings. They will complete using the client as it was built when the operation started. |
The following list contains the available client settings. Those that must be
stored in the keystore are marked as "secure"; the other settings belong in the
opensearch.yml
file.
account
(Secure, reloadable)-
The Azure account name, which is used by the repository’s internal Azure client.
endpoint_suffix
-
The Azure endpoint suffix to connect to. The default value is
core.windows.net
. key
(Secure, reloadable)-
The Azure secret key, which is used by the repository’s internal Azure client. Alternatively, use
sas_token
. max_retries
-
The number of retries to use when an Azure request fails. This setting helps control the exponential backoff policy. It specifies the number of retries that must occur before the snapshot fails. The default value is
3
. The initial backoff period is defined by Azure SDK as30s
. Thus there is30s
of wait time before retrying after a first timeout or failure. The maximum backoff period is defined by Azure SDK as90s
. proxy.host
-
The host name of a proxy to connect to Azure through. For example:
azure.client.default.proxy.host: proxy.host
. proxy.port
-
The port of a proxy to connect to Azure through. For example,
azure.client.default.proxy.port: 8888
. proxy.type
-
Register a proxy type for the client. Supported values are
direct
,http
, andsocks
. For example:azure.client.default.proxy.type: http
. Whenproxy.type
is set tohttp
orsocks
,proxy.host
andproxy.port
must also be provided. The default value isdirect
. sas_token
(Secure, reloadable)-
A shared access signatures (SAS) token, which the repository’s internal Azure client uses for authentication. The SAS token must have read (r), write (w), list (l), and delete (d) permissions for the repository base path and all its contents. These permissions must be granted for the blob service (b) and apply to resource types service (s), container (c), and object (o). Alternatively, use
key
. timeout
-
The client side timeout for any single request to Azure. The value should specify the time unit. For example, a value of
5s
specifies a 5 second timeout. There is no default value, which means that OpenSearch uses the default value set by the Azure client (known as 5 minutes). This setting can be defined globally, per account, or both.
Repository settings
The Azure repository supports following settings:
client
-
Azure named client to use. Defaults to
default
. container
-
Container name. You must create the azure container before creating the repository. Defaults to
opensearch-snapshots
. base_path
-
Specifies the path within container to repository data. Defaults to empty (root directory).
chunk_size
-
Big files can be broken down into multiple smaller blobs in the blob store during snapshotting. It is not recommended to change this value from its default unless there is an explicit reason for limiting the size of blobs in the repository. Setting a value lower than the default can result in an increased number of API calls to the Azure blob store during snapshot create as well as restore operations compared to using the default value and thus make both operations slower as well as more costly. Specify the chunk size as a value and unit, for example:
10MB
,5KB
,500B
. Defaults to the maximum size of a blob in the Azure blob store which is5TB
. compress
-
When set to
true
metadata files are stored in compressed format. This setting doesn’t affect index files that are already compressed by default. Defaults tofalse
. max_restore_bytes_per_sec
-
Throttles per node restore rate. Defaults to unlimited. Note that restores are also throttled through recovery settings.
max_snapshot_bytes_per_sec
-
Throttles per node snapshot rate. Defaults to
40mb
per second. readonly
-
Makes repository read-only. Defaults to
false
. location_mode
-
primary_only
orsecondary_only
. Defaults toprimary_only
. Note that if you set it tosecondary_only
, it will forcereadonly
to true.
Some examples, using scripts:
# The simplest one
PUT _snapshot/my_backup1
{
"type": "azure"
}
# With some settings
PUT _snapshot/my_backup2
{
"type": "azure",
"settings": {
"container": "backup-container",
"base_path": "backups",
"chunk_size": "32MB",
"compress": true
}
}
# With two accounts defined in opensearch.yml (my_account1 and my_account2)
PUT _snapshot/my_backup3
{
"type": "azure",
"settings": {
"client": "secondary"
}
}
PUT _snapshot/my_backup4
{
"type": "azure",
"settings": {
"client": "secondary",
"location_mode": "primary_only"
}
}
Example using Java:
client.admin().cluster().preparePutRepository("my_backup_java1")
.setType("azure").setSettings(Settings.builder()
.put(Storage.CONTAINER, "backup-container")
.put(Storage.CHUNK_SIZE, new ByteSizeValue(32, ByteSizeUnit.MB))
).get();
Repository validation rules
According to the containers naming guide, a container name must be a valid DNS name, conforming to the following naming rules:
-
Container names must start with a letter or number, and can contain only letters, numbers, and the dash (-) character.
-
Every dash (-) character must be immediately preceded and followed by a letter or number; consecutive dashes are not permitted in container names.
-
All letters in a container name must be lowercase.
-
Container names must be from 3 through 63 characters long.
S3 Repository Plugin
The S3 repository plugin adds support for using AWS S3 as a repository for Snapshot/Restore.
Installation
This plugin can be installed using the plugin manager:
sudo bin/opensearch-plugin install repository-s3
The plugin must be installed on every node in the cluster, and each node must be restarted after installation.
You can download this plugin for offline
install from https://artifacts.opensearch.org/downloads/opensearch-plugins/repository-s3/repository-s3-1.0.0.zip. To verify
the .zip
file, use the
SHA hash or
ASC key.
Removal
The plugin can be removed with the following command:
sudo bin/opensearch-plugin remove repository-s3
The node must be stopped before removing the plugin.
Getting Started
The plugin provides a repository type named s3
which may be used when creating
a repository. The repository defaults to using
ECS
IAM Role or
EC2
IAM Role credentials for authentication. The only mandatory setting is the
bucket name:
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket"
}
}
bucket: The name of the bucket to be used for snapshots. (Mandatory) Note that the bucket name can be between 3 and 63 characters long, and can contain only lower-case characters, numbers, periods, and dashes it cannot contain underscores, end with a dash, have consecutive periods, or use dashes adjacent to periods
The bucket naming convention is outlines in AWS here [https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-s3-bucket-naming-requirements.html]
Client Settings
The client that you use to connect to S3 has a number of settings available.
The settings have the form s3.client.CLIENT_NAME.SETTING_NAME
. By default,
s3
repositories use a client named default
, but this can be modified using
the repository setting client
. For example:
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket",
"client": "my-alternate-client"
}
}
Most client settings can be added to the opensearch.yml
configuration file
with the exception of the secure settings, which you add to the OpenSearch keystore.
For more information about creating and updating the OpenSearch keystore, see
Secure settings.
For example, if you want to use specific credentials to access S3 then run the following commands to add these credentials to the keystore:
bin/opensearch-keystore add s3.client.default.access_key
bin/opensearch-keystore add s3.client.default.secret_key
# a session token is optional so the following command may not be needed
bin/opensearch-keystore add s3.client.default.session_token
If instead you want to use the instance role or container role to access S3 then you should leave these settings unset. You can switch from using specific credentials back to the default of using the instance role or container role by removing these settings from the keystore as follows:
bin/opensearch-keystore remove s3.client.default.access_key
bin/opensearch-keystore remove s3.client.default.secret_key
# a session token is optional so the following command may not be needed
bin/opensearch-keystore remove s3.client.default.session_token
All client secure settings of this plugin are
reloadable. After you
reload the settings, the internal s3
clients, used to transfer the snapshot
contents, will utilize the latest settings from the keystore. Any existing s3
repositories, as well as any newly created ones, will pick up the new values
stored in the keystore.
|
Note
|
In-progress snapshot/restore tasks will not be preempted by a reload of the client’s secure settings. The task will complete using the client as it was built when the operation started. |
The following list contains the available client settings. Those that must be
stored in the keystore are marked as "secure" and are reloadable; the other
settings belong in the opensearch.yml
file.
access_key
(Secure, reloadable)-
An S3 access key. If set, the
secret_key
setting must also be specified. If unset, the client will use the instance or container role instead. secret_key
(Secure, reloadable)-
An S3 secret key. If set, the
access_key
setting must also be specified. session_token
(Secure, reloadable)-
An S3 session token. If set, the
access_key
andsecret_key
settings must also be specified. endpoint
-
The S3 service endpoint to connect to. This defaults to
s3.amazonaws.com
but the AWS documentation lists alternative S3 endpoints. If you are using an S3-compatible service then you should set this to the service’s endpoint. protocol
-
The protocol to use to connect to S3. Valid values are either
http
orhttps
. Defaults tohttps
. proxy.host
-
The host name of a proxy to connect to S3 through.
proxy.port
-
The port of a proxy to connect to S3 through.
proxy.username
(Secure, reloadable)-
The username to connect to the
proxy.host
with. proxy.password
(Secure, reloadable)-
The password to connect to the
proxy.host
with. read_timeout
-
The socket timeout for connecting to S3. The value should specify the unit. For example, a value of
5s
specifies a 5 second timeout. The default value is 50 seconds. max_retries
-
The number of retries to use when an S3 request fails. The default value is
3
. use_throttle_retries
-
Whether retries should be throttled (i.e. should back off). Must be
true
orfalse
. Defaults totrue
. path_style_access
-
Whether to force the use of the path style access pattern. If
true
, the path style access pattern will be used. Iffalse
, the access pattern will be automatically determined by the AWS Java SDK (See AWS documentation for details). Defaults tofalse
. disable_chunked_encoding
-
Whether chunked encoding should be disabled or not. If
false
, chunked encoding is enabled and will be used where appropriate. Iftrue
, chunked encoding is disabled and will not be used, which may mean that snapshot operations consume more resources and take longer to complete. It should only be set totrue
if you are using a storage service that does not support chunked encoding. See the AWS Java SDK documentation for details. Defaults tofalse
. region
-
Allows specifying the signing region to use. Specificing this setting manually should not be necessary for most use cases. Generally, the SDK will correctly guess the signing region to use. It should be considered an expert level setting to support S3-compatible APIs that require v4 signatures and use a region other than the default
us-east-1
. Defaults to empty string which means that the SDK will try to automatically determine the correct signing region. signer_override
-
Allows specifying the name of the signature algorithm to use for signing requests by the S3 client. Specifying this setting should not be necessary for most use cases. It should be considered an expert level setting to support S3-compatible APIs that do not support the signing algorithm that the SDK automatically determines for them. See the AWS Java SDK documentation for details. Defaults to empty string which means that no signing algorithm override will be used.
S3-compatible services
There are a number of storage systems that provide an S3-compatible API, and
the repository-s3
plugin allows you to use these systems in place of AWS S3.
To do so, you should set the s3.client.CLIENT_NAME.endpoint
setting to the
system’s endpoint. This setting accepts IP addresses and hostnames and may
include a port. For example, the endpoint may be <IP_ADDRESS>
or
<IP_ADDRESS>:9000
. You may also need to set s3.client.CLIENT_NAME.protocol
to
http
if the endpoint does not support HTTPS.
Minio is an example of a storage system that provides an
S3-compatible API. The repository-s3
plugin allows OpenSearch to work with
Minio-backed repositories as well as repositories stored on AWS S3. Other
S3-compatible storage systems may also work with OpenSearch, but these are not
covered by the OpenSearch test suite.
Note that some storage systems claim to be S3-compatible without correctly
supporting the full S3 API. The repository-s3
plugin requires full
compatibility with S3. In particular it must support the same set of API
endpoints, return the same errors in case of failures, and offer a consistency
model no weaker than S3’s when accessed concurrently by multiple nodes. If you
wish to use another storage system with the repository-s3
plugin then you
will need to work with the supplier of the storage system to address any
incompatibilities you encounter. Incompatible error codes and consistency
models may be particularly hard to track down since errors and consistency
failures are usually rare and hard to reproduce.
Repository Settings
The s3
repository type supports a number of settings to customize how data is
stored in S3. These can be specified when creating the repository. For example:
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket",
"another_setting": "setting-value"
}
}
The following settings are supported:
bucket
-
(Required) Name of the S3 bucket to use for snapshots.
The bucket name must adhere to Amazon’s S3 bucket naming rules.
client
-
The name of the S3 client to use to connect to S3. Defaults to
default
. base_path
-
Specifies the path within bucket to repository data. Defaults to value of
repositories.s3.base_path
or to root directory if not set. Previously, the base_path could take a leading/
(forward slash). However, this has been deprecated and setting the base_path now should omit the leading/
. chunk_size
-
Big files can be broken down into chunks during snapshotting if needed. Specify the chunk size as a value and unit, for example:
1GB
,10MB
,5KB
,500B
. Defaults to1GB
. compress
-
When set to
true
metadata files are stored in compressed format. This setting doesn’t affect index files that are already compressed by default. Defaults tofalse
. max_restore_bytes_per_sec
-
Throttles per node restore rate. Defaults to unlimited. Note that restores are also throttled through recovery settings.
max_snapshot_bytes_per_sec
-
Throttles per node snapshot rate. Defaults to
40mb
per second. readonly
-
Makes repository read-only. Defaults to
false
. server_side_encryption
-
When set to
true
files are encrypted on server side using AES256 algorithm. Defaults tofalse
. buffer_size
-
Minimum threshold below which the chunk is uploaded using a single request. Beyond this threshold, the S3 repository will use the AWS Multipart Upload API to split the chunk into several parts, each of
buffer_size
length, and to upload each part in its own request. Note that setting a buffer size lower than5mb
is not allowed since it will prevent the use of the Multipart API and may result in upload errors. It is also not possible to set a buffer size greater than5gb
as it is the maximum upload size allowed by S3. Defaults to the minimum between100mb
and5%
of the heap size. canned_acl
-
The S3 repository supports all S3 canned ACLs :
private
,public-read
,public-read-write
,authenticated-read
,log-delivery-write
,bucket-owner-read
,bucket-owner-full-control
. Defaults toprivate
. You could specify a canned ACL using thecanned_acl
setting. When the S3 repository creates buckets and objects, it adds the canned ACL into the buckets and objects. storage_class
-
Sets the S3 storage class for objects stored in the snapshot repository. Values may be
standard
,reduced_redundancy
,standard_ia
,onezone_ia
andintelligent_tiering
. Defaults tostandard
. Changing this setting on an existing repository only affects the storage class for newly created objects, resulting in a mixed usage of storage classes. Additionally, S3 Lifecycle Policies can be used to manage the storage class of existing objects. Due to the extra complexity with the Glacier class lifecycle, it is not currently supported by the plugin. For more information about the different classes, see AWS Storage Classes Guide
|
Note
|
The option of defining client settings in the repository settings as documented below is considered deprecated, and will be removed in a future version. |
In addition to the above settings, you may also specify all non-secure client settings in the repository settings. In this case, the client settings found in the repository settings will be merged with those of the named client used by the repository. Conflicts between client and repository settings are resolved by the repository settings taking precedence over client settings.
For example:
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"client": "my-client",
"bucket": "my-bucket",
"endpoint": "my.s3.endpoint"
}
}
This sets up a repository that uses all client settings from the client
my_client_name
except for the endpoint
that is overridden to
my.s3.endpoint
by the repository settings.
Recommended S3 Permissions
In order to restrict the OpenSearch snapshot process to the minimum required resources, we recommend using Amazon IAM in conjunction with pre-existing S3 buckets. Here is an example policy which will allow the snapshot access to an S3 bucket named "snaps.example.com". This may be configured through the AWS IAM console, by creating a Custom Policy, and using a Policy Document similar to this (changing snaps.example.com to your bucket name).
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com/*"
]
}
],
"Version": "2012-10-17"
}
You may further restrict the permissions by specifying a prefix within the bucket, in this example, named "foo".
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"foo/*"
]
}
},
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com/foo/*"
]
}
],
"Version": "2012-10-17"
}
The bucket needs to exist to register a repository for snapshots. If you did not create the bucket then the repository registration will fail.
AWS VPC Bandwidth Settings
AWS instances resolve S3 endpoints to a public IP. If the OpenSearch instances reside in a private subnet in an AWS VPC then all traffic to S3 will go through the VPC’s NAT instance. If your VPC’s NAT instance is a smaller instance size (e.g. a t2.micro) or is handling a high volume of network traffic your bandwidth to S3 may be limited by that NAT instance’s networking bandwidth limitations. Instead we recommend creating a VPC endpoint that enables connecting to S3 in instances that reside in a private subnet in an AWS VPC. This will eliminate any limitations imposed by the network bandwidth of your VPC’s NAT instance.
Instances residing in a public subnet in an AWS VPC will connect to S3 via the VPC’s internet gateway and not be bandwidth limited by the VPC’s NAT instance.
Hadoop HDFS Repository Plugin
The HDFS repository plugin adds support for using HDFS File System as a repository for Snapshot/Restore.
Installation
This plugin can be installed using the plugin manager:
sudo bin/opensearch-plugin install repository-hdfs
The plugin must be installed on every node in the cluster, and each node must be restarted after installation.
You can download this plugin for offline
install from https://artifacts.opensearch.org/downloads/opensearch-plugins/repository-hdfs/repository-hdfs-1.0.0.zip. To verify
the .zip
file, use the
SHA hash or
ASC key.
Removal
The plugin can be removed with the following command:
sudo bin/opensearch-plugin remove repository-hdfs
The node must be stopped before removing the plugin.
Getting started with HDFS
The HDFS snapshot/restore plugin is built against the latest Apache Hadoop 2.x (currently 2.7.1). If the distro you are using is not protocol compatible with Apache Hadoop, consider replacing the Hadoop libraries inside the plugin folder with your own (you might have to adjust the security permissions required).
Even if Hadoop is already installed on the OpenSearch nodes, for security reasons, the required libraries need to be placed under the plugin folder. Note that in most cases, if the distro is compatible, one simply needs to configure the repository with the appropriate Hadoop configuration files (see below).
- Windows Users
-
Using Apache Hadoop on Windows is problematic and thus it is not recommended. For those really wanting to use it, make sure you place the elusive
winutils.exe
under the plugin folder and pointHADOOP_HOME
variable to it; this should minimize the amount of permissions Hadoop requires (though one would still have to add some more).
Configuration Properties
Once installed, define the configuration for the hdfs
repository through the
REST API:
PUT _snapshot/my_hdfs_repository
{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:8020/",
"path": "opensearch/repositories/my_hdfs_repository",
"conf.dfs.client.read.shortcircuit": "true"
}
}
The following settings are supported:
uri
|
The uri address for hdfs. ex: "hdfs://<host>:<port>/". (Required) |
path
|
The file path within the filesystem where data is stored/loaded. ex: "path/to/file". (Required) |
load_defaults
|
Whether to load the default Hadoop configuration or not. (Enabled by default) |
conf.<key>
|
Inlined configuration parameter to be added to Hadoop configuration. (Optional) Only client oriented properties from the hadoop core and hdfs configuration files will be recognized by the plugin. |
compress
|
Whether to compress the metadata or not. (Disabled by default) |
max_restore_bytes_per_sec
|
Throttles per node restore rate. Defaults to unlimited. Note that restores are also throttled through recovery settings. |
max_snapshot_bytes_per_sec
|
Throttles per node snapshot rate. Defaults to |
readonly
|
Makes repository read-only. Defaults to |
chunk_size
|
Override the chunk size. (Disabled by default) |
security.principal
|
Kerberos principal to use when connecting to a secured HDFS cluster.
If you are using a service principal for your opensearch node, you may
use the |
A Note on HDFS Availability
When you initialize a repository, its settings are persisted in the cluster state. When a node comes online, it will attempt to initialize all repositories for which it has settings. If your cluster has an HDFS repository configured, then all nodes in the cluster must be able to reach HDFS when starting. If not, then the node will fail to initialize the repository at start up and the repository will be unusable. If this happens, you will need to remove and re-add the repository or restart the offending node.
Hadoop Security
The HDFS Repository Plugin integrates seamlessly with Hadoop’s authentication model. The following authentication methods are supported by the plugin:
simple
|
Also means "no security" and is enabled by default. Uses information from underlying operating system account running OpenSearch to inform Hadoop of the name of the current user. Hadoop makes no attempts to verify this information. |
kerberos
|
Authenticates to Hadoop through the usage of a Kerberos principal and keytab. Interfacing with HDFS clusters secured with Kerberos requires a few additional steps to enable (See Principals and Keytabs and Creating the Secure Repository for more info) |
Principals and Keytabs
Before attempting to connect to a secured HDFS cluster, provision the Kerberos principals and keytabs that the
OpenSearch nodes will use for authenticating to Kerberos. For maximum security and to avoid tripping up the Kerberos
replay protection, you should create a service principal per node, following the pattern of
opensearch/hostname@REALM
.
|
Warning
|
In some cases, if the same principal is authenticating from multiple clients at once, services may reject authentication for those principals under the assumption that they could be replay attacks. If you are running the plugin in production with multiple nodes you should be using a unique service principal for each node. |
On each OpenSearch node, place the appropriate keytab file in the node’s configuration location under the
repository-hdfs
directory using the name krb5.keytab
:
$> cd opensearch/config
$> ls
opensearch.yml jvm.options log4j2.properties repository-hdfs/ scripts/
$> cd repository-hdfs
$> ls
krb5.keytab
|
Note
|
Make sure you have the correct keytabs! If you are using a service principal per node (like
opensearch/hostname@REALM ) then each node will need its own unique keytab file for the principal assigned to that
host!
|
Creating the Secure Repository
Once your keytab files are in place and your cluster is started, creating a secured HDFS repository is simple. Just
add the name of the principal that you will be authenticating as in the repository settings under the
security.principal
option:
PUT _snapshot/my_hdfs_repository
{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:8020/",
"path": "/user/opensearch/repositories/my_hdfs_repository",
"security.principal": "opensearch@REALM"
}
}
If you are using different service principals for each node, you can use the _HOST
pattern in your principal
name. OpenSearch will automatically replace the pattern with the hostname of the node at runtime:
PUT _snapshot/my_hdfs_repository
{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:8020/",
"path": "/user/opensearch/repositories/my_hdfs_repository",
"security.principal": "opensearch/_HOST@REALM"
}
}
Authorization
Once OpenSearch is connected and authenticated to HDFS, HDFS will infer a username to use for
authorizing file access for the client. By default, it picks this username from the primary part of
the kerberos principal used to authenticate to the service. For example, in the case of a principal
like opensearch@REALM
or opensearch/hostname@REALM
then the username that HDFS
extracts for file access checks will be opensearch
.
|
Note
|
The repository plugin makes no assumptions of what OpenSearch’s principal name is. The main fragment of the
Kerberos principal is not required to be opensearch . If you have a principal or service name that works better
for you or your organization then feel free to use it instead!
|
Google Cloud Storage Repository Plugin
The GCS repository plugin adds support for using the Google Cloud Storage service as a repository for Snapshot/Restore.
Installation
This plugin can be installed using the plugin manager:
sudo bin/opensearch-plugin install repository-gcs
The plugin must be installed on every node in the cluster, and each node must be restarted after installation.
You can download this plugin for offline
install from https://artifacts.opensearch.org/downloads/opensearch-plugins/repository-gcs/repository-gcs-1.0.0.zip. To verify
the .zip
file, use the
SHA hash or
ASC key.
Removal
The plugin can be removed with the following command:
sudo bin/opensearch-plugin remove repository-gcs
The node must be stopped before removing the plugin.
Getting started
The plugin uses the Google Cloud Java Client for Storage to connect to the Storage service. If you are using Google Cloud Storage for the first time, you must connect to the Google Cloud Platform Console and create a new project. After your project is created, you must enable the Cloud Storage Service for your project.
Creating a Bucket
The Google Cloud Storage service uses the concept of a bucket as a container for all the data. Buckets are usually created using the Google Cloud Platform Console. The plugin does not automatically create buckets.
To create a new bucket:
-
Connect to the Google Cloud Platform Console.
-
Select your project.
-
Go to the Storage Browser.
-
Click the Create Bucket button.
-
Enter the name of the new bucket.
-
Select a storage class.
-
Select a location.
-
Click the Create button.
For more detailed instructions, see the Google Cloud documentation.
Service Authentication
The plugin must authenticate the requests it makes to the Google Cloud Storage service. It is common for Google client libraries to employ a strategy named application default credentials. However, that strategy is not supported for use with OpenSearch. The plugin operates under the OpenSearch process, which runs with the security manager enabled. The security manager obstructs the "automatic" credential discovery. Therefore, you must configure service account credentials even if you are using an environment that does not normally require this configuration (such as Compute Engine, Kubernetes Engine or App Engine).
Using a Service Account
You have to obtain and provide service account credentials manually.
For detailed information about generating JSON service account files, see the Google Cloud documentation. Note that the PKCS12 format is not supported by this plugin.
Here is a summary of the steps:
-
Connect to the Google Cloud Platform Console.
-
Select your project.
-
Go to the Permission tab.
-
Select the Service Accounts tab.
-
Click Create service account.
-
After the account is created, select it and download a JSON key file.
A JSON service account file looks like this:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email"<EMAIL_ADDRESS>"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url"<EMAIL_ADDRESS>}
To provide this file to the plugin, it must be stored in the OpenSearch keystore. You must
add a file
setting with the name gcs.client.NAME.credentials_file
using the add-file
subcommand.
NAME
is the name of the client configuration for the repository. The implicit client
name is default
, but a different client name can be specified in the
repository settings with the client
key.
|
Note
|
Passing the file path via the GOOGLE_APPLICATION_CREDENTIALS environment variable is not supported. |
For example, if you added a gcs.client.my_alternate_client.credentials_file
setting in the keystore, you can configure a repository to use those credentials
like this:
PUT _snapshot/my_gcs_repository
{
"type": "gcs",
"settings": {
"bucket": "my_bucket",
"client": "my_alternate_client"
}
}
The credentials_file
settings are reloadable.
After you reload the settings, the internal gcs
clients, which are used to
transfer the snapshot contents, utilize the latest settings from the keystore.
|
Note
|
Snapshot or restore jobs that are in progress are not preempted by a reload
of the client’s credentials_file settings. They complete using the client as
it was built when the operation started.
|
Client Settings
The client used to connect to Google Cloud Storage has a number of settings available.
Client setting names are of the form gcs.client.CLIENT_NAME.SETTING_NAME
and are specified
inside opensearch.yml
. The default client name looked up by a gcs
repository is
called default
, but can be customized with the repository setting client
.
For example:
PUT _snapshot/my_gcs_repository
{
"type": "gcs",
"settings": {
"bucket": "my_bucket",
"client": "my_alternate_client"
}
}
Some settings are sensitive and must be stored in the OpenSearch keystore. This is the case for the service account file:
bin/opensearch-keystore add-file gcs.client.default.credentials_file /path/service-account.json
The following are the available client settings. Those that must be stored in the keystore
are marked as Secure
.
credentials_file
(Secure, reloadable)-
The service account file that is used to authenticate to the Google Cloud Storage service.
endpoint
-
The Google Cloud Storage service endpoint to connect to. This will be automatically determined by the Google Cloud Storage client but can be specified explicitly.
connect_timeout
-
The timeout to establish a connection to the Google Cloud Storage service. The value should specify the unit. For example, a value of
5s
specifies a 5 second timeout. The value of-1
corresponds to an infinite timeout. The default value is 20 seconds. read_timeout
-
The timeout to read data from an established connection. The value should specify the unit. For example, a value of
5s
specifies a 5 second timeout. The value of-1
corresponds to an infinite timeout. The default value is 20 seconds. application_name
-
Name used by the client when it uses the Google Cloud Storage service. Setting a custom name can be useful to authenticate your cluster when requests statistics are logged in the Google Cloud Platform. Default to
repository-gcs
project_id
-
The Google Cloud project id. This will be automatically inferred from the credentials file but can be specified explicitly. For example, it can be used to switch between projects when the same credentials are usable for both the production and the development projects.
Repository Settings
The gcs
repository type supports a number of settings to customize how data
is stored in Google Cloud Storage.
These can be specified when creating the repository. For example:
PUT _snapshot/my_gcs_repository
{
"type": "gcs",
"settings": {
"bucket": "my_other_bucket",
"base_path": "dev"
}
}
The following settings are supported:
bucket
-
The name of the bucket to be used for snapshots. (Mandatory)
client
-
The name of the client to use to connect to Google Cloud Storage. Defaults to
default
. base_path
-
Specifies the path within bucket to repository data. Defaults to the root of the bucket.
chunk_size
-
Big files can be broken down into multiple smaller blobs in the blob store during snapshotting. It is not recommended to change this value from its default unless there is an explicit reason for limiting the size of blobs in the repository. Setting a value lower than the default can result in an increased number of API calls to the Google Cloud Storage Service during snapshot create as well as restore operations compared to using the default value and thus make both operations slower as well as more costly. Specify the chunk size as a value and unit, for example:
10MB
,5KB
,500B
. Defaults to the maximum size of a blob in the Google Cloud Storage Service which is5TB
. compress
-
When set to
true
metadata files are stored in compressed format. This setting doesn’t affect index files that are already compressed by default. Defaults tofalse
. max_restore_bytes_per_sec
-
Throttles per node restore rate. Defaults to unlimited. Note that restores are also throttled through recovery settings.
max_snapshot_bytes_per_sec
-
Throttles per node snapshot rate. Defaults to
40mb
per second. readonly
-
Makes repository read-only. Defaults to
false
. application_name
-
Deprecated. This setting is now defined in the client settings." Name used by the client when it uses the Google Cloud Storage service.
Recommended Bucket Permission
The service account used to access the bucket must have the "Writer" access to the bucket:
-
Connect to the Google Cloud Platform Console.
-
Select your project.
-
Go to the Storage Browser.
-
Select the bucket and "Edit bucket permission".
-
The service account must be configured as a "User" with "Writer" access.


You are given an HTML file ColorKitchen.html and result.png. Apply styles to the html file and make it look like the result.png (the last image below). 100% accuracy is required. Use external CSS file for the styles. You are given the background image as well.
Make the menu hover as in the following images (the link for an article must hover with the color of the article’s header). Visited links must be gray. Not visited links must be black, as shown in the pictures above (“Web Safe Colors” is not visited, “Lorem Ipsum” is visited).
Constrains: You are NOT allowed to change the HTML file. Do not use an image for the header of the page!


Eden Hazard shows he’s a Chelsea fan at heart as he sends heartwarming message to Blues following club’s brilliant season start
by Lorenzo MartínEden Hazard has basically confirmed the fact he’s a diehard Chelsea fan after the Belgian sent a heartwarming message to the club during the international break.
Hazard left the Blues earlier this year in order to join Spanish giants Real Madrid, and despite his exploits during his time at Stamford Bridge, it seems the club are doing better without him if their displays are anything to go off.
Frank Lampard’s side currently sit joint-second in the Premier League table, one point ahead last year’s champions Manchester City, something that’s put them in good stead to finish in the top four and qualify for next year’s Champions League.
Amid his old side’s brilliant run of form, it seems Hazard is lavishing in it if his words from a recent interview are anything to go off.
As per the Sun, Hazard spoke about his affiliation with Chelsea during the international break, stating that “I still have good friends there and I follow them all the time. They are winning at the moment, so I’m just happy for them.”


Directions - Blue Ridge Brawl
Location and Directions
The Blue Ridge Brawl will take place at:Cregger Center, Roanoke College
287 High Street
Salem, VA 24153
---
layout: default
title: Directions | Blue Ridge Brawl
description: 'Directions and load-in information for the Blue Ridge Brawl in Salem, Virginia.'
---
Directions - Blue Ridge Brawl
Location and Directions
The Blue Ridge Brawl will take place at:
Cregger Center, Roanoke College
287 High Street
Salem, VA 24153


Survey Questions
About You
Name (Required)
Link to Photo Image (Required)
Question 1
You like inspirational sports movies such as Remember the Titans and Friday Night Lights.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 2
You like spontaneity, and can just go with the flow
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 3
You like to have control over things
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 4
You have a lot of different interests and you like to pursue them but not stay on it too long unfortunately
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 5
People can rarely upset you.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 6
You like rock,EDM, metal, and some hiphop
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 7
In a discussion, truth should be more important than people’s sensitivities.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 8
You rarely get carried away by fantasies and ideas.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 9
You think that everyone’s views should be respected regardless of whether they are supported by facts or not.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Question 10
You feel more energetic after spending time with a group of people.
1 (Strongly Disagree)
2
3
4
5 (Strongly Agree)
Submit
Your Best Match is


Many common over-the-counter drugs contain acetaminophen. Taking more than one at the same time increases your chance of "double-dipping" -- accidentally overdosing. Use this tool to find out which of the drugs in your medicine cabinet contains acetaminophen -- and how much. This is not meant to be medical advice. Toxic levels vary by individual. Call your doctor if you think you've overdosed, even if you don't show medical symptoms.
Excedrin
Nyquil
Robitussin
Sudafed
Alka-Seltzer
Theraflu
Extra Strength Tylenol
Zycam
Anacin
Children's Tylenol
Dimetapp
Panadol
Dayquil
Coricidin
Tylenol with Codene
Vicodin
Percocet
Hydrocodone
Oxycodone
Ultracet


{% load static %}
Home
Academic Plans Upload
Student Upload
Grades Upload
Grades
Manage
Graphs
Help Page
Sign out


Page 1 of 1
When will a normal store be open?
Posted:
Wed May 20, 2009 5:53 am
by marzuku
Everything is working fine, gold does not bug any more, just want a place to buy reds/greens and sell items later.
Re: When will a normal store be open?
Posted:
Wed May 20, 2009 9:26 am
by Richard. UK
That is what the bazaar is for to stop the rich getting richer, or the greedy getting greedier
Re: When will a normal store be open?
Posted:
Wed May 20, 2009 9:54 am
by marzuku
Richard. UK wrote:That is what the bazaar is for to stop the rich getting richer, or the greedy getting greedier
hmm lol, i see i have a new enemy, posting every where i post, watching my every move!
DIE ARCHNEMISIS DIE!
Re: When will a normal store be open?
Posted:
Wed May 20, 2009 10:47 am
by Joe M.
There will be a "normal" store at some point, but it won't behave quite like the merchants in most games. I expect that it won't be around until after Beta, though. Right now the bazaar and the geosids should cover most of that functionality.
Re: When will a normal store be open?
Posted:
Wed May 20, 2009 11:05 am
by Richard. UK
Thank you Joe
I know the "unique" merchants in the pipeline from over over a year ago the concept rose up
I can't wait!
Re: When will a normal store be open?
Posted:
Wed May 20, 2009 3:19 pm
by Joe M.
I can't remember a discussion of a "unique" merchant, and can't find it in a quick search through old posts. Would you mind digging that thread up for me? Sounds like something I'd like to see.


Coding Quiz!
Answer the following questions accurately and see how high of a core you can get! Answer incorrectly and there will be a time penalty! Click the "Start Quiz" button now! Do it!
Answer the following questions accurately and see how high of a core you can get! Answer incorrectly and there will be a time penalty! Click the "Start Quiz" button now! Do it!


Class reference
Usage
Control the placeholder color of an element using the .placeholder-{color}
utilities.
<input class="placeholder-gray-500 border" placeholder="[email protected]">
<input class="placeholder-red-300 border border-red-400" placeholder="[email protected]">
Changing opacity v1.4.0+
Control the opacity of an element's placeholder color using the .placeholder-opacity-{amount}
utilities.
<input class="placeholder-gray-500 placeholder-opacity-100 ..." placeholder="[email protected]">
<input class="placeholder-gray-500 placeholder-opacity-75 ..." placeholder="[email protected]">
<input class="placeholder-gray-500 placeholder-opacity-50 ..." placeholder="[email protected]">
<input class="placeholder-gray-500 placeholder-opacity-25 ..." placeholder="[email protected]">
<input class="placeholder-gray-500 placeholder-opacity-0 ..." placeholder="[email protected]">
Learn more in the placeholder opacity documentation.
Responsive
To control the text color of an element at a specific breakpoint, add a {screen}:
prefix to any existing text color utility. For example, use md:text-green-600
to apply the text-green-600
utility at only medium screen sizes and above.
For more information about Tailwind's responsive design features, check out the Responsive Design documentation.
Focus
To control the placeholder color of an element on focus, add the focus:
prefix to any existing placeholder color utility. For example, use focus:placeholder-blue-600
to apply the placeholder-blue-600
utility on focus.
<input class="placeholder-gray-600 focus:placeholder-gray-500 ..." placeholder="[email protected]">
Focus utilities can also be combined with responsive utilities by adding the responsive {screen}:
prefix before the focus:
prefix.
<input class="... md:placeholder-gray-900 md:focus:placeholder-red-600 ...">
Customizing
Placeholder Colors
By default Tailwind makes the entire default color palette available as placeholder colors.
You can customize your color palette by editing theme.colors
in your tailwind.config.js
file, or customize just your placeholder colors in the theme.textColor
section.
Responsive and pseudo-class variants
By default, only responsive and focus variants are generated for placeholder color utilities.
You can control which variants are generated for the placeholder color utilities by modifying the placeholderColor
property in the variants
section of your tailwind.config.js
file.
For example, this config will also generate hover and active variants:
Disabling
If you don't plan to use the placeholder color utilities in your project, you can disable them entirely by setting the placeholderColor
property to false
in the corePlugins
section of your config file:


{{ seller.email }}
{{contract.declineReason ?? "Seller hasn't given any reason."}}
0 || totalIncome.USD > 0; else askPrice"> {{ totalIncome.USD | currency:'USD' }} and {{ totalIncome.EUR | currency:'EUR' }} - Buyer requested Asking Price


Portugal continues to beat tourism records
The tourism sector in Portugal reached €3 billion in overnight income in 2018, with the number of guests reaching almost 25 million.
According to the 14th Hospitality Atlas, published by Deloitte, Portugal continues to beat tourism records and exceeded 66 million overnight stays in 2018, an increase of 9 million compared to the previous year, with revenues rising by around €500 million, approaching €3 billion.
These figures are justified by the increase in the number of guests in the period under review, which was 24.7 million.
Accompanying this growth was also the number of tourist developments, which, according to the consultant, exceeded 2,000 units for the first time.
Similarly, the total number of rooms reached 144,000, representing an increase of 12 percent compared to 2017.
However, this increase in the supply of rooms caused the average national occupancy rate to decrease slightly compared to 2017, despite the growth in the number of overnight stays.
“The Portuguese market has proven to be very dynamic in terms of investment in hotels, registering an increase of 256 percent in the volume of transactions compared to the previous year,” leader of Deloitte Real Estate, Jorge Marrão, said.
The region with the largest hotel offer is the Algarve, with 45,116 rooms, followed by the Metropolitan Area of Lisbon (AML), with 31,108 rooms, and the northern part of the country, which has 22,138 rooms.
AML led in terms of revenue per room, which reached €73.96, ahead of the Algarve (€52.62) and Madeira (€47.43).
According to a survey of the 20 main Portuguese hotel groups and whose analysis is part of the 14th Deloitte’s Hospitality Atlas, the main risks to the Portuguese hotel industry for the next five years are the growth of competing markets and the difficulty in hiring qualified labour.


Equivalent to clicking the Print Preview command on the File menu. Previews the pages and page breaks of the active workbook on the screen before printing.
Syntax
PRINT.PREVIEW( )
Related Function
PRINT Prints the active workbook
Return to index


Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US11/066,649
Inventor
Robert E. Lynch
Thomas R. Chidester
Robert E. Lawrence
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Aeronautics and Space Administration (NASA)
Original Assignee
National Aeronautics and Space Administration (NASA)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US10/956,523priorityCriticalpatent/US7075457B1/en
Application filed by National Aeronautics and Space Administration (NASA)filedCriticalNational Aeronautics and Space Administration (NASA)
Priority to US11/066,649prioritypatent/US7212135B1/en
Assigned to USA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAreassignmentUSA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: FLIGHT SAFETY CONSULTANTS
Assigned to USA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAreassignmentUSA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: SAFE FLIGHT
Assigned to USA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAreassignmentUSA AS REPRESENTED BY THE ADMINISTRATOR OF THE NASAASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: CHIDESTER, THOMAS R.
Publication of US7212135B1publicationCriticalpatent/US7212135B1/en
Application grantedgrantedCritical
Application status is Expired - Fee Relatedlegal-statusCritical


RT @osbridge: Great news, everyone! We've extended our call for proposals to March 14. http://ow.ly/K4qGo
3/8/2015, 10:28:17 AM
Favs: 0
Retweets: 0
link--- layout: tweet ---
RT @osbridge: Great news, everyone! We've extended our call for proposals to March 14. http://ow.ly/K4qGo
3/8/2015, 10:28:17 AM
Favs: 0
Retweets: 0
link


List of EAD-style links to canvases of IIIF Manifest
Table of dao elements to link to pages within manifest in local Durham Mirador:
Manifest bits go here...


@(map: Map[String, String], idenv:String) @Main("view area") { Toggle navigation Add Area Environment (current) Profile Log out
@v


Package br.com.armange.commons.thread
Class ScheduledCaughtExecutorService
- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- java.util.concurrent.ThreadPoolExecutor
-
- java.util.concurrent.ScheduledThreadPoolExecutor
-
- br.com.armange.commons.thread.ScheduledCaughtExecutorService
-
- All Implemented Interfaces:
java.util.concurrent.Executor
,java.util.concurrent.ExecutorService
,java.util.concurrent.ScheduledExecutorService
@Deprecated(since="2.0.0", forRemoval=true) public class ScheduledCaughtExecutorService extends java.util.concurrent.ScheduledThreadPoolExecutor
Deprecated, for removal: This API element is subject to removal in a future version.Consider to useScheduledThreadBuilderExecutor
AScheduledThreadPoolExecutor
that can additionally perform actions after thread has completed normally. Consider seeingjava.util.concurrent.ThreadPoolExecutor#afterExecute(Runnable, Throwable)
- Since:
- 2019-11-26 V1.0.0 (JDK 1.8)
- See Also:
ScheduledThreadPoolExecutor
,afterExecute(Runnable, Throwable)
,addAfterExecuteConsumer(BiConsumer)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor
java.util.concurrent.ThreadPoolExecutor.AbortPolicy, java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardPolicy
-
-
Constructor Summary
Constructors Constructor Description ScheduledCaughtExecutorService(int corePoolSize)
Deprecated, for removal: This API element is subject to removal in a future version.ScheduledCaughtExecutorService(int corePoolSize, java.util.concurrent.ThreadFactory threadFactory)
Deprecated, for removal: This API element is subject to removal in a future version.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addAfterExecuteConsumer(java.util.function.BiConsumer<java.lang.Runnable,java.lang.Throwable> afterExecuteBiConsumer)
Deprecated, for removal: This API element is subject to removal in a future version.Adds the implementation that will be executed after the end (successfully) of the thread execution.void
afterExecute(java.lang.Runnable runnable, java.lang.Throwable throwable)
Deprecated, for removal: This API element is subject to removal in a future version.Method invoked upon completion of execution of the given Runnable.java.util.List<java.util.function.BiConsumer<java.lang.Runnable,java.lang.Throwable>>
getAfterExecuteConsumers()
Deprecated, for removal: This API element is subject to removal in a future version.Returns the consumers list that will be performed after thread completed normally.-
Methods inherited from class java.util.concurrent.ScheduledThreadPoolExecutor
decorateTask, decorateTask, execute, getContinueExistingPeriodicTasksAfterShutdownPolicy, getExecuteExistingDelayedTasksAfterShutdownPolicy, getQueue, getRemoveOnCancelPolicy, schedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay, setContinueExistingPeriodicTasksAfterShutdownPolicy, setExecuteExistingDelayedTasksAfterShutdownPolicy, setRemoveOnCancelPolicy, shutdown, shutdownNow, submit, submit, submit
-
Methods inherited from class java.util.concurrent.ThreadPoolExecutor
allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toString
-
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor
-
-
-
-
Constructor Detail
-
ScheduledCaughtExecutorService
public ScheduledCaughtExecutorService(int corePoolSize)
Deprecated, for removal: This API element is subject to removal in a future version.- Parameters:
corePoolSize
- the number of threads to keep in the pool, even if they are idle, unlessallowCoreThreadTimeOut
is set- See Also:
ScheduledThreadPoolExecutor(int)
-
ScheduledCaughtExecutorService
public ScheduledCaughtExecutorService(int corePoolSize, java.util.concurrent.ThreadFactory threadFactory)
Deprecated, for removal: This API element is subject to removal in a future version.- Parameters:
corePoolSize
- the number of threads to keep in the pool, even if they are idle, unlessallowCoreThreadTimeOut
is setthreadFactory
- the factory to use when the executor creates a new thread- See Also:
ScheduledThreadPoolExecutor(int, ThreadFactory)
-
-
Method Detail
-
afterExecute
public void afterExecute(java.lang.Runnable runnable, java.lang.Throwable throwable)
Deprecated, for removal: This API element is subject to removal in a future version.Method invoked upon completion of execution of the given Runnable. This method is invoked by the thread that executed the task. If non-null, the Throwable is the uncaughtRuntimeException
orError
that caused execution to terminate abruptly. This method will consume a list ofjava.util.function.BiConsumer
with a runnable and a throwable as arguments. SeeaddAfterExecuteConsumer(BiConsumer)
- Overrides:
afterExecute
in classjava.util.concurrent.ThreadPoolExecutor
- Parameters:
runnable
- the runnable that has completedthrowable
- the exception that caused termination, or null if execution completed normally
-
getAfterExecuteConsumers
public java.util.List<java.util.function.BiConsumer<java.lang.Runnable,java.lang.Throwable>> getAfterExecuteConsumers()
Deprecated, for removal: This API element is subject to removal in a future version.Returns the consumers list that will be performed after thread completed normally.- Returns:
- the consumers list that will be performed after thread completed normally.
-
addAfterExecuteConsumer
public void addAfterExecuteConsumer(java.util.function.BiConsumer<java.lang.Runnable,java.lang.Throwable> afterExecuteBiConsumer)
Deprecated, for removal: This API element is subject to removal in a future version.Adds the implementation that will be executed after the end (successfully) of the thread execution.- Parameters:
afterExecuteBiConsumer
- the consumer that will be performed after thread has completed normally.
-
-


Podcast: A new antibiotic from nematode guts, grant funding ‘lotteries’, and butterfly genomes
Benjamin Thompson brings you the latest science news.
This week, an antibiotic that targets hard-to-treat bacteria, and a roundup of the latest science news.
In this episode:
00:49 Discovering darobactin
Researchers looked inside nematode guts and have identified a new antibiotic with some useful properties. Research Article: Imai et al.
05:45 Research Highlights
Using urine as a health metric, and sniffing out book decay with an electronic nose. Research Article: Miller et al.; Research Article: Veríssimo et al.
07:54 News Chat
Adding an element of chance to grant funding, a continental butterfly-sequencing project, and tracking endangered animals via traces of their DNA. News: Science funders gamble on grant lotteries; News: Every butterfly in the United States and Canada now has a genome sequence; News: Rare bird’s detection highlights promise of ‘environmental DNA’
Never miss an episode: Subscribe to the Nature Podcast on Apple Podcasts , Google Podcasts , Spotify or your favourite podcast app. Head here for the Nature Podcast RSS feed.


Communism claims a ploy to tarnish democratic process, says minister
KUALA LUMPUR, Dec 9 — Minister in the Prime Minister’s Department Senator P. Waytha Moorthy has expressed disappointment over allegations made by a Terengganu Umno member that communist elements have infiltrated the government.
In a statement today, he said such claims are clear efforts to instigate hatred and fear among the people towards the ruling government which has been given the mandate to rule in the last general election.
“These baseless claims that communist ideology has seeped into the government must be treated seriously,” said the minister who is in charge of national unity and social wellbeing.
In this regard, he called on the police to take immediate action against Wan Hisham Wan Salleh, who reportedly made the allegations during a debate session at the Umno general assembly recently.
Waytha Moorthy said: “In the era of New Malaysia, it baffles me how some still resort to scare tactics which include inciting hatred towards democratically elected leaders and the government.”
He underscored that the deliberate act of causing alarm is not justifiable.
“Malaysians, especially political leaders, must be made responsible for their actions of causing disharmony within the nation,” the minister said. — Bernama


| This Release |
Well, Microsoft did it again. They changed a header file
and broke my code (see rules 1 and 2 of my
coding guidelines) in the networking
classes. With the February 2000 version of the Platform SDK, they
introduced a new string type, LMSTR
. Happy
happy, joy joy.
try
and two catch
blocks. That is a
lot of typing. To make matters worse, you're having to use
components instead of classes. Components can be great but the
bad part about them (COM or CORBA) is if functionality is not
exposed in the interface, you're just plain stuck. If you had
source code, you could figure out what a method is trying
to do and fix it. With components, you can't do anything except
hack and hack and hack and hack away at it until it doesn't die
any more. With ADO, I've suffered through this kind of muck.
In the development of ADO2XML, I've been reading a Microsoft
Access 97 database. Some of the lesson's learned while developing
ADO-based programs are:
CoInitializeEx( COINIT_MULTITHREADED )
).
The problem is ADO may be multithreaded but the underlying data source
may not be. ADO doesn't handle this situation very well.
Also, you need to test this as it depends on what database
source you are connected to. This really sucks when you have to
support data sources with different personalities at run time (like
Access and SQL server). From what I've learned of COM, it doesn't
do threads very well at all. Almost as if the Windows 95 developers
worked on COM. I will be writing an article on coding around COM to
fix these kinds of problems in a generic fashion.
AddNew()
It basically said "an error occurred." I recoded it as
a SQL statement and passed to the connection class/object/interface
method Execute()
. It failed again but this time I got
the error message in the exception (I was sending a NULL field to an
Access table that had a field that didn't allow NULL in that
particular field). Like I said, hack and hack and hack and hack . . .
CRegistry Added the ability to read and write a key's default value.
CService - Added a typecast for a handle type.
STL Arrays - The drop-in replacements for CByteArray, CPtrArray,
CStringArray, CWordArray, CUINTArray and CDWordArray based on STL
have been fixed. There was a problem in the Copy()
method. I have also added test cases to the TEST
sample
project for these classes.
Convert_NERR_Code_to_String() - Changed a couple of defined constants
back to mathematical formulas for folks that have old compilers. This allows
me to convert error codes that don't have #define
'd constants.
CServiceControlManager - Fixed a bug in the Install()
method.
Well, actually, it is Microsoft's bug in NT. If an executable path name contains
a space (like C:\Program Files\myservice.exe), if you don't put quotation marks
around the executable name, the service control manager (SCM) will report an "invalid
Windows NT application" error. I added code to make sure the executable name
is surrounded by quotes if needed.
Sam Blackburn<EMAIL_ADDRESS>Return to Sam's Home Page


|
PubSub
|
#include <StringBIO.hpp>
Public Member Functions | |
| StringBIO (StringBIO &&)=delete | |
| StringBIO & | operator= (StringBIO &&)=delete |
| StringBIO () | |
| BIO * | bio () |
| std::string | str () && |
|
delete |
|
inlineexplicit |
|
inline |
|
inline |


Function Blocks
The Function
Blocks page provides a summary of all function blocks' resources. Clicking
on one of the function blocks in the summary table will display the specific details for that function block.
The summary table
contains the following:
- The
function block
- The
number of macrocell used
- The
number of function block inputs used
- The
number of product terms used
- The
pins used
- The
local control terms used
- The
number of foldback NANDs used (CoolRunner only)


Dog costume contest gives treats to four-legged winners
by Emilie BurdittMADISON, Wis. - Dogs in costume walked down the red carpet for HotelRED's first dog costume contest Friday. They partnered with Wisconsin Brewing Company.
People snapped photos of their dogs as the dogs showed off their new looks. They competed for treats from Bad Dogs Freda, and for the owners, HotelRED's bar gave discounts on WBC's Chocolate Lab Porter and Badger Club.
Dogs competed for the winning title in competitions from most fashionable to most creative.
The family-friendly event was free to those who participated and to those who watched. Hotel organizers said they're already planning on the next contest in 2020.


{% load static %}
This is default template content. Pages using this template are expected to replace this. (If you can see this, it's a bug.)


jQuery, fadeIn,Out,Toggle
Panel 1
Panel 1.1
Panel 1.2
Panel 1.3
Panel 2
Panel 2.1
Panel 2.2
Panel 2.3
Panel 3
Panel 3.1
Panel 3.2
Panel 3.3


About Me
I’m a business student in my last semester of studies at Capilano University, with core interests in law, accounting and finance. After completing my undergraduate degree, I’d like to continue my studies by applying to law school.
Between 2013 and 2016 I worked as a non-destructive testing trainee and technician in Northern Alberta. The experiences that I had in these three years not only increased my work ethic and sense of responsibility, but they also allowed me to discover my true goals for the future. In Fall of 2016 I re-enrolled in university to complete my BBA degree with the goal of applying to law school after graduation.
Some of my interests include photography, soccer and reading about politics, finance and investing in real estate. Please visit my instagram by clicking one of the photos belows!


Daniel Joseph Pezely
www.play.org
22 January 2003
You will learn the least you need to know to author a custom shader for Mental Ray 3.1 and have it function within Softimage XSI 3.0. This should work with older versions also.
It's helpful being familiar with rendering either as an artist using a 3D modeling package or as a programmer with a basic working knowledge of ray tracing.
Hopefully you understand programming principles such as what an object or data structure is. You should also know what a Property Page within Softimage XSI is. It's helpful to have used some of the standard shaders bundled with XSI and Mental Ray.
(But if you're a software developer unfamiliar with XSI, I'll supply the least you need to know about XSI and its interface to see that this thing really works.)
Let's create the simplest of shaders for the Mental Ray rendering engine: the constant material. There's no distinction between ambient or diffuse colors. The entire geometry object appears as a single, solid color blob without definition beyond its silhouette.
An associated Property Page within Softimage XSI enables the artist to adjust only one parameter: color value.
This is intended to be the simplest yet complete case.
From an engineer's perspective, it does almost nothing but does it correctly.
From the artist's perspective, however, once this custom shader has been installed, there should be no difference between how this option is used versus any standard feature built into the software as supplied by the vendor.
Shaders tap into the rendering pipeline via data structures:
Shaders do their work by examining yet another data structure for the associated geometry object. So if the object selected is a polygon mesh torus, you have access to its internals as if Mental Ray was just a strange database and XSI was its data entry front-end. (This fourth structure is accessible via library calls and referencing the structure containing input parameters.)
Parameters from the XSI Property Page are passed through a shader-specific data structure. By convention, this gets a name matching your shader.
Since our shader is called "constant_simple", the data structure is called "constant_simple_params".
Mental Ray has its own data types for just about everything. Color values are contained within a type, "miColor". Other values are held within "miScalar".
When extracting values from the primary data structures, it's important to use macros defined in "shader.h". (Find this include file within the XSI SDK; see makefile.)
Apart from C/C++ code and resulting shared libraries, XSI needs to be informed about the add-on. There is an interface file that looks like a Unix shell script. Mental Ray has its ".mi" file (meaning Mental Images, the vendor of Mental Ray), and Softimage has its own file format. SPDL is Softimage Plug-in Definition Language, and the associated file extension is, oddly enough, ".spdl".
The coding style builds upon examples provided by Softimage. (Specifically, see the "show_edges" example provided with the XSI SDK documentation.)
See the C++ source and header files for the "constant_simple" example. Both files are simple enough that it's easier for a programmer to read the code than to explain it here.
Perhaps more important to a tutorial is the SPDL file.
The Shader Wizard supplied by Softimage creates templates of a C++ file and the various associated files like the SPDL. The templates should compile under both Unix and Windows.
Optionally, you can take the files provided with this tutorial and expand upon them. Keep this in mind! There's nothing special about what the Wizard creates. It merely spares you from having to perform search and replace. Converting from existing files is handy especially if using Mozilla. (For Unix folks, the Shader Wizard seems to only like the Java VM plug-in that ships with RedHat and Netscape's branded browser.)
The tutorial files were created without directly using the Wizard, including the SPDL file.
Softimage Plug-in Definition Language (SPDL)
Within the SPDL file, there is a GUID parameter with a value of "1AC592BF-DEA4-11d5-92BD-009027219F81". There are other parameters with similar looking values.
These values are not random and must be preserved!
Each Parameter that needs to appear within the XSI Property Page (GUI) should have the same key as above. Likewise, all outputs have their own.
(Why this level of detail has been imposed on the programmer rather than being optional reflects that Softimage was momentarily owned by Microsoft while XSI was being developed.)
The PropertySet defines the inputs and outputs familiar to anyone who has used the XSI render nodes. Most material shaders would have "diffuse" and "ambient" inputs and a single "out" or output.
The first one from the PropertySet belongs to the output parameter. With most shaders, the type will be a color value.
The second parameter is "color". I could have used another name such as "insideColorValue" but instead kept things simple. This also demonstrates that there are separate name spaces within the render mechanism.
The "title" associated with each input or output parameter provides the ToolTip pop-up text when using the render view (network diagram of shader nodes). And there's another one mentioned below regarding a ToolTip in the PropertyPage (GUI).
The values for our particular input are a white-space delimited list of numerical Floats. Legal values for colors are between 0.0 and 1.0, inclusively.
The following means: Use Red at 75%, Green at 12%, Blue at 80% and set the Alpha channel mask to opaque.
value = 0.75 0.12 0.80 1.0;
Even if the XSI artist has his or her workstation configured to use Hue/Saturation/Value (HSV) instead of RGB, the application deals with the conversion. Programmers must use RGB.
Other member values within the input and output parameters should be straight-forward to anyone familiar with using XSI. (Shader programmers should have a day-long overview of XSI at minimum before changing these additional values.)
Further down the SPDL file, the "Defaults" section seems to repeat some of the parameters. The "description" associated with each input or output parameter provides the ToolTip pop-up text when using the XSI Property Page (GUI). Although this will typically be identical to the previous one for the render node, sometimes it will be appropriate to have different wording from a usability stand-point.
The filename is specified in the final section. For everyone's sanity, just keep the names consistent through all files and structures.
You must have an installed and configured version of Softimage XSI with the SDK. While the demo version should be able to use the add-on, you need the full version for compiling.
% tar zxf constant_simple.tgz % cd constant_simple
There are separate versions of the "makefile" for Linux versus Irix. (On Linux, the test build used Mandrake 9.0 so RedHat should work fine; for Slackware, you'll require tweaking.)
Compile the source and install it. A make script is supplied to ensure the proper environment variables are defined.
% ./make.sh -f makefile.linux all install
Or
% ./make.sh -f makefile.irix all install
During installation, XSI will run in batch mode without any associated windows or panels. (Depending upon the software license available to you, it may use the actual Batch mode or possibly Enterprise mode.) This may take a few minutes to load-- be patient.
Assuming it installed without errors, start XSI normally.
The add-on should appear in the "User" path from the Render->Texture->More... pop-up. (More about use and testing below.)
For the non-Unix crowd, there is a .dsp file in the tar file. It was adapted from a custom shader example written by Softimage. Good luck.
If you have XSI with the SDK on Windows and have installed Cygwin, follow these commands.
NOTE: Understand that the final step is untested. I have been unable to find a Windows XSI installation that has the SDK, so final compiling and linking known to work under Unix can only be theorized to work here. Most of the legwork, however, has been done for you. You should only need to copy and paste the commands below, building with the scripts provided.
The only compiler tested was GNU g++/gcc 3.2 via Cygwin.
See http://sources.redhat.com/cygwin/
If you have the Cygwin utilities (Bash, Perl, gnu compilers, etc), try the following.
First, copy the shader source files to the cygwin directory:
% cd cygwin % ln -s ../constant_simple* .
Convert the Windows command/batch file, Setenv.bat, to a CSH script file. "C:/Softimage/XSI_*/Application/bin/Setenv.bat" becomes "Setenv.csh".
Fortunately, much of the syntax used here converts directly and scripts are provided. Use either bat2sh.pl or bat2csh.pl, depending upon whether you use Bash/ash/sh or tcsh/csh, respectively.
From the directory including the makefile, run:
% ENVBAT=/cygdrive/c/Softimage/XSI_3.0/Application/bin/ % ./bat2sh.pl $ENVBAT/Setenv.bat > XSI_Setenv.sh
(Depending upon your workflow, you might also want to convert your workgroup environment variables, ~/Softimage/XSI_*/Addons/workgroup_shader_plugins.bat, by saving an equivalent .csh file in that same directory-- not our source directory.)
Perform the compilation. Install and test as you would with the Unix versions.
% ./make.sh all install
The only change is that there is an XSI.sh file in our "cygwin" directory for Bash/sh and another for tcsh/csh. To launch XSI from the command-line, be sure to use one of these scripts.
You should, however, be able to just launch XSI from the Windows Start menu or desktop icon as normal.
Assuming the custom shader was compiled and installed without errors from the previous steps, start XSI as you normally would.
Create an object such as a polygon mesh torus or cube, then apply the magic texture. (Press F1 to bring up the Model menu on the left side, then select: Get->Primitive->Polygon Mesh->Torus)
From the Render menu (F3), select Get->Texture->More.... A pop-up window appears. Go to the "Paths" pull-down in the upper left corner of the pop-up. Change the path to "User".
From the list of files, you should see "constant_simple". Select this, then click "OK".
If you are prompted for whether to create a local material, click Yes.
The default way in which XSI loads a custom texture is to chain it through the scene default material such as Phong.
Because of this, be skeptical as to whether the custom add-on is doing the work or if built-in functionality is providing the effect.
Bring up the Render view. (Assuming you have the usual four view panels with your object appearing from a different angle in each-- move the mouse to one of the bottom panels and press 7. Or from that viewport's title bar pull-down menu, change to "Render Tree".)
You should see the network diagram with "constant_simple" on the left, "Scene Material" on the right and a few nodes in between.
Remap the connections from our shader to the Scene Material, bypassing everything in between.
Connect the "constant_simple" node output to three of the "scene material" inputs: "Surface", "Shadow" and "Photon". (Drag from the red dot in the upper right corner of "constant_simple" node to inside "scene material". From the pop-up, select "shadow". Repeat for the other two parameters. These parameters and only these should have a dot next to their names in the pop-up, making it easier to find them.)
Some of the the original connections are still there, so next, we delete them.
Leave only the "constant_simple" and "scene material" nodes and of course the connections we just established. (Hold the space bar while selecting with the mouse: draw a box around or through the unwanted nodes. Make sure only unwanted items become white, then press Delete.)
Let's see it work.
Create a render region around the object in one of the viewports if you haven't done so already. (Move the mouse to a panel with the wireframe object. While holding the "q" key, diagonally drag a box around the object. Release the q key.)
Fiddle with the color value for the custom shader. (While holding the space bar, click on the "constant_simple" node in the Render window. Release the space bar. Press Alt+Enter and the Property Page should appear if it wasn't up already. Using the color slider should be obvious, but to change from HSV to RGB or vice-versa, click on the button just to the left of the color slider.)
Notice that the parameter is called "color" and is identical to the parameter named in the SPDL and C++ files.
Move the color slider in the Property Page, and watch the color change in the render region!
Before re-installing a custom shader, you must first uninstall it.
XSI kindly reminds you of this, should you happen to forget.
% ./make.sh -f makefile.linux uninstall
Or
% ./make.sh -f makefile.irix uninstall
Or for Cygwin
% cd cygwin % ./make.sh uninstall
It's recommended that you use XSI via batch mode to remove the add-on rather than just walking the directory tree and deleting files.
You have a complete set of C++ and the supporting SPDL files to create a simple shader. It does almost nothing but does it properly.
Regarding the possibilities, this example barely makes a dent.
If what you observed here appeals to you at all, jump into shader development.
This example shader started life as a baby Rubik's cube example supplied by Mental Images in their manual on the Softimage web site.
(TIP: If any softimage.com links require a password, replace "3.0" in the URL with "2.0.2" or "2.0" and supply "index.html" or "ray-Content.html" filename instead of directly browsing a directory.)
Or look for "Example Scene" under "Using and Writing Shaders" here: http://www.softimage.com/support/xsi/private/userguides/2.0/files/mental_ray/manual/ray-Contents.html
A little reverse-engineering and simplifying the code created our example.
Want to go further, making your own custom shader extension for XSI and Mental Ray?
First understand the basics:
Play with some custom shaders and presets from other people's development efforts:
http://www.highend3d.com/xsi/shaders/
Browse through the Mental Ray manual:
Look at examples.
There's one bundled with the XSI SDK. The shader reveals all triangles on an object's surface. It provides minimal parameters from within an XSI Property Page:
Finally, get THE BOOK:
http://www.springer.at/main/book.jsp?bookID=3-211-83851-1&categoryID=3
ISBN 3-211-83851-1
http://www.Powells.com/search/DTSearch/search?author=Driemeyer


--- layout: default title: The Chan Zuckerberg Initiative Financial and Social Network ---
This project was last updated 28 December 2018


TimeTreeViewer
javascript tree viewer
Legend
timetree
Color by
Date
---
clear
reset layout
© 2015 Trevor Bedford and Richard Neher


- saveToSharedPrefs(int) - Method in class com.enenby.drinkingproblems.controller.MainActivity
-
Saves a tally of incorrectly answered questions to shared prefs.
- ScreenLock - Class in com.enenby.drinkingproblems
-
The class Screen lock extends DeviceAdminReceiver to enable screen lock functionality.
- ScreenLock() - Constructor for class com.enenby.drinkingproblems.ScreenLock
-
- select(long) - Method in interface com.enenby.drinkingproblems.model.dao.AnswerDao
-
Select list.
- select() - Method in interface com.enenby.drinkingproblems.model.dao.QuestionDao
-
Select list.
- selectById(Long) - Method in interface com.enenby.drinkingproblems.model.dao.QuestionDao
-
Select by id question and answers.
- selectRandomWithAnswers() - Method in interface com.enenby.drinkingproblems.model.dao.QuestionDao
-
Select random question with answers.
- setAccount(GoogleSignInAccount) - Method in class com.enenby.drinkingproblems.service.DrinkingApplication
-
Sets Google Sign In account.
- setAnswers(List<Answer>) - Method in class com.enenby.drinkingproblems.model.pojo.QuestionAndAnswers
-
Sets answers.
- setClient(GoogleSignInClient) - Method in class com.enenby.drinkingproblems.service.DrinkingApplication
-
Sets Google Sign in client.
- setCorrect(boolean) - Method in class com.enenby.drinkingproblems.model.entity.Answer
-
Sets correct answer.
- setId(long) - Method in class com.enenby.drinkingproblems.model.entity.Answer
-
Sets answer id.
- setId(long) - Method in class com.enenby.drinkingproblems.model.entity.Question
-
Sets question id.
- setQuestion(Question) - Method in class com.enenby.drinkingproblems.model.pojo.QuestionAndAnswers
-
Sets question.
- setQuestionId(long) - Method in class com.enenby.drinkingproblems.model.entity.Answer
-
Sets question id.
- setRandomAnswer(boolean) - Method in class com.enenby.drinkingproblems.model.entity.Question
-
Sets random answer order.
- setText(String) - Method in class com.enenby.drinkingproblems.model.entity.Answer
-
Sets answer text.
- setText(String) - Method in class com.enenby.drinkingproblems.model.entity.Question
-
Sets question text.
- setType(int) - Method in class com.enenby.drinkingproblems.model.entity.Question
-
Sets question type.


Show window
Exit
Note: this also demonstrates popup menu on RIGHT CLICK on tray icon.
Set Icon
Remove icon
Update text
Get place:
Hide window
trayIcon Events:


Setup¶
use OpenCloud\Rackspace;
$client = new Rackspace(RACKSPACE_US, array(
));
$service = $client->objectStoreService('cloudFiles', 'IAD'); # Second argument is the region you want
Temporary URLs¶
Temporary URLs allow you to create time-limited Internet addresses that allow you to grant access to your Cloud Files account. Using Temporary URL, you may allow others to retrieve or place objects in your containers - regardless of whether they’re CDN-enabled.
Set “temporary URL” metadata key¶
You must set this “secret” value on your account, where it can be used in a global state:
$account = $service->getAccount();
$account->setTempUrlSecret('my_secret');
echo $account->getTempUrlSecret();
The string argument of setTempUrlSecret() is optional - if left out, the SDK will generate a random hashed secret for you.
Create a temporary URL¶
Once you’ve set an account secret, you can create a temporary URL for your object. To allow GET access to your object for 1 minute:
$object->getTemporaryUrl(60, 'GET');
To allow PUT access for 1 hour:
$object->getTemporaryUrl(360, 'PUT');
Hosting websites on CloudFiles¶
To host a static (i.e. HTML) website on CloudFiles, you must follow these steps:
- CDN-enable a container
- Upload all HTML content. You can use nested directory structures.
- Tell CloudFiles what to use for your default index page like this:
$container->setStaticIndexPage('index.html');
- (Optional) Tell CloudFiles which error page to use by default:
$container->setStaticErrorPage('error.html');
Bear in mind that steps 3 & 4 do not upload content, but rather specify a reference to an existing page/CloudFiles object.


REVIEW: Crackers By Luke Buckmaster<EMAIL_ADDRESS>Australian theatrical release date: July 9
>From 0 stars (bomb), to 5 stars (a masterpiece): 2 and a half stars
As partly a drama, partly a comedy and partly a ridiculous sitcom, how Crackers got the go-ahead is anybody's guess. No doubt last years The Castle gave inspiration to this Aussie backyard adventure, and whilst it is nice to see another Australian comedy wrestling with the big guys, Crackers fails to have the low brow, witty sense of humor that its predecessor was loved for.
Although I'm a little sick of seeing cliché Australian "blokes and sheilas", I couldn't help but enjoy the line up of characters that Crackers delivers. You've got your misinterpreted young lad, Joey (Daniel Kellie), his eccentric great grandfather Albert (Warren Mitchell), Joey's mum Hilary (Susan Lyons) and her boyfriend Bruno (Peter Rowsthorn). There's also Bruno's bully son, Angus (Christopher Chapman), plus a dog, Joey's grandfather, grandmother, great aunt, and a rooster.
Sound interesting? Well it is…sort of. These characters are fairly enjoyable to watch, but not enough development is given to any one of them. We can never fully understand the troubled mind of Joey - the script leaves us behind locked doors with no key to get inside. Albert is without a doubt the film's most fun character to watch, as he prances around the screen driving recklessly, drinking whiskey, and even creating a brawl in a local pub. When he is not on the screen, Crackers searches desperately for other gags to use, and ends up resorting to ridiculous situations including barbecuing a dog and creating an offbeat affair between two family members.
The screenplay is confused and flirts between genre to genre, consequently being funny without being entirely a comedy, and dramatic without being entirely a drama. Whether or not that is good or bad is not entirely relevant, because director David Swann has made sure that, although sometimes at sparse occasions, there is a laugh included for most audiences. I guess that's the difference between The Castle and Crackers - The Castle stuck to the same hilarious style of gags, but Crackers tries to suit too many people and ends up losing out in the end.
Swann seems to have had lots of fun in creating this loose, extraordinary comedy. Both the film and its characters appear so offbeat that it's perhaps reasonable to dub them as a weird, distorted family portrayed in a weird, distorted film.
Enjoyable at many occasions but far too loose and inconsistent, Crackers may be able to wrestle with the big guys, but it's likely to be pinned down for its obvious flaws, and no doubt will be beaten by more satisfying ventures.
----------------------------------- Review © copyright Luke Buckmaster
Email<EMAIL_ADDRESS>to subscribe to my newsletter (unless, of course, you already have) or<EMAIL_ADDRESS>for any inquiries or feedback
Read more of my reviews at Movie Zone: http://moviezone.alphalink.com.au
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Longhorn PHP is a 3-day conference in Austin, Texas to help PHP developers level up their craft and connect with the larger PHP community.
🌵 Check out our Kickstarter! 🌵| When: | April 19th - 21st, 2018 |
| Where: | UT Austin's Commons Learning Center |
| What: | See all of the details on our Kickstarter while we're working to spruce up our website! |
Sign up for email updates to find out when we announce more details, including keynote speakers, call for papers, schedule, and more!


This project is a demonstration of a scalable, loosely-coupled, testable, server-side application written with TypeScript and the NestJS framework. Rent-A-Car is a demonstrative car rental web application for authorized users to list their vehicle as available for rental, and to find rental vehicles available in their area. The application uses the powerful HERE Developer Geocoder API to create rentals with geocoordinate location data as well as to search for listed rentals near a user's address or device location. User profile and rental images are uploaded to an AWS S3 bucket, and the image download links and metadata are saved to a MongoDB Atlas cluster. Once a user has listed a rental, they may upload photos, edit the rental's pricing, schedule unavailability on the calendar, and update the rental's details.
This project is licensed under the MIT license. See the LICENSE file for more info.
please check out the wiki for a more detailed look at the application. https://github.com/Pioneer18/Rent-A-Car/wiki


Metrics
This is metrics info block.
Similar Terms
This is block of similar tags.
Similar Events
This is similar events block.
Crowd Use Case Flow of Events (step 3/5)
Event Flow
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
Home
Back
Next
Sankey Diagram
↔


SqlPad 2.0.0 BETA
SqlPad 2.0.0-beta.3 is now available on npm!
Over the last couple months I've taken some time to update SqlPad. These updates include code cleanup, user interface/experience updates, and some new features. While the work isn't finished, it is ready for preview. I'm anticipating a few more updates throughout the month, with a stable release published October.
If you try it out I'd love to get your feedback on it! Feel free to tweet, email, or submit a GitHub issue.
- Rick
@rickbergfalk
<EMAIL_ADDRESS>Installation
The v2 beta is installed like any other SqlPad version.
Because of some minor changes to the user data model, you may want to take a backup of your SqlPad instance before you begin.
First stop your existing SqlPad instance.
Next, locate your SqlPad database directory. By default it is installed in $HOME/sqlpad/db, but you may have changed that with the --dir flag. Copy the files in this directory and set them aside in case you ever want to revert back to an earlier version of SqlPad.
To update sqlpad, run npm install sqlpad -g
from a command prompt.
This will update your sqlpad installation to the latest SqlPad beta.
Once installed, run SqlPad just as you would under version 1.x.x.
Need to revert back? You can install an older version of SqlPad by specifying a version.
For example, to go back to the latest 1.x version run npm install<EMAIL_ADDRESS>-g
.
Changelog
- UI design updates everywhere
- Query Listing:
- preview query contents by hovering over query listing
- occassional search/filter weirdness has been fixed
- Query Editor:
- Schema sidebar no longer separates views and tables in hierarchy
- New result grid
- inline bar plot rendered for numeric values
- display issues fixed for certain browsers
- New tags widget for cleaner input
- Browser tab name now reflects query name
- Updated taucharts library with stacked bar charts
- Line and Scatterplot charts may have chart filters enabled
- 'show advanced settings' in vis editor now has a few advanced settings depending on chart (y min/max, show trendline, show filter)
- switching between sql/vis tabs won't reset chart series toggles
- table/chart only links may be set to no longer require login (see configuration page)
- Configuration:
- Specific config inputs and labels - no more open ended key/value inputs
- Current environment config documented with assistive popovers
- Update notification moved in-app
- Under the hood
- updated all the code dependencies
- reworked some foundation code for easier future development
- Known issues / not yet implemented:
- Query tag input does not allow creation
- Query auto-refresh not yet implemented


Airbnb is one of the world’s largest marketplaces for unique, authentic places to stay and things to do, offering over 7 million accommodations and 40,000 handcrafted activities, all powered by local hosts. An economic empowerment engine, Airbnb has helped millions of hospitality entrepreneurs monetize their spaces and their passions while keeping the financial benefits of tourism in their own communities. With more than half a billion guest arrivals to date, and accessible in 62 languages across 191 countries and regions, Airbnb promotes people-to-people connection, community and trust around the world.
Front End Developer -"Web 24"
"You never change things by fighting the existing reality.
To change something, build a new model that makes the existing model obsolete."
Front End Developer -"Web 25"
"Once a new technology rolls over you, if you’re not part of the steamroller, you’re part of the road.""
Front End Developer -"Web 25"
Background in Software Quality Assurance as well as DVD & Blu-Ray authoring and post production services for studio theatrical release to home video.


Penguinator
Intro
Penguinator is a jQuery plugin for annotating images. It provides controls for drawing shapes over images based on a set of input instructions, and exporting these drawn shapes.
Install
bower install --save penguinator
Usage
$('selector').annotator({
src: 'cat.jpg', // Optional, placeholder displayed by default
height: 300, // Optional, defaults to 200
width: 500, // Optional, defaults to 200
// Optional, defaults to "Annotating: Image"
features: [
{
name: "tail",
required: false,
shape: "poly"
},
{
name: "eyes",
required: true,
shape: "rect"
}
]
});
Annotating
Moving around
You can zoom in and out of the image with the '+' and '-' buttons, and move the image by selecting the pan tool ('Pan' button) and clicking and dragging anywhere in the editing area.
Making annotations
You add annotations to the image using the annotation tool ('Annotate' button). Chose the type of shape you'd like to draw and the feature you'd like to annotate from the drop-down menus, and click anywhere in the editing area to start adding points. If you're drawing a Polygon, double-click to place the last point.
Changing annotations
Using the edit tool ('Edit' button), you can select existing annotations and make changes to them. This includes moving points, and adding points to a polygon (left click), deleting points (right click, if the shape is not a polygon it will be deleted), and deleting the annotation entirely ('X' button)
License
MIT
(c) Team Heisenberg 2013-2014


Get list of free APIs for use in Development
Select Category
------------------
Animals
Anime
Anti-Malware
Art
Books
Business
Calendar
Cloud Storage
Continuous Integration
Cryptocurrency
Currency Exchange
Data Validation
Development
Dictionaries
Environment
Events
Finance
Food
Games
Geocoding
Government
Health
Jobs
Machine Learning
Music
News
Open Data
Open Source Projects
Patent
Personality
Photography
Productivity
Science
Security
Shopping
Social
Sports
Test Data
Text Analysis
Tracking
Transportation
URL Shorteners
Vehicle
Video
Weather
Get Apis


Transformation Unit, DCS
To be the world's most customer centric government,
we need to boldly rethink the way we interact
with customers
so we can make NSW government services both easy and effective
for customers and staff.
Often the interaction between rules is incomprehensible to mere humans...
So that everyone uses the same ones
and
Rule changes are propagated across applications
... for both our customers and staff
- name: Organisation is conducting a charity housie that is permitted
period: 2020-07
input:
is_charity: True
gaming_activity_is_charity_housie: True
proceeds_to_benefitting_organisation: 3900
gross_proceeds_from_gaming_activity: 4000
total_expenses_for_conducting_gaming_activity: 100
total_prize_value_from_single_gaming_session: 2000
number_of_tickets: 40
output:
charity_housie__game_meets_criteria: True
charity_housie__authority_required: False
One of the best part about Rules as code is the reusability of the code
We only have to code concepts such as, ‘What is a small business?' or 'The number of business days in a year’ once!Let us know how we can help you make compliance easier for your customers!