Bringing a new service on YARN today is not a simple experience. The APIs of existing frameworks are either too low level (native YARN), require writing new code (for frameworks with programmatic APIs) or writing a complex spec (for declarative frameworks).
This simplified REST API can be used to create and manage the lifecycle of YARN services. In most cases, the application owner will not be forced to make any changes to their applications. This is primarily true if the application is packaged with containerization technologies like Docker.
This document describes the API specifications (aka. YarnFile) for deploying/managing containerized services on YARN. The same JSON spec can be used for both REST API and CLI to manage the services.
License: Apache 2.0 License URL: http://www.apache.org/licenses/LICENSE-2.0.html
POST /app/v1/services
Create a service. The request JSON is a service object with details required for creation. If the request is successful it returns 202 Accepted. A success of this API only confirms success in submission of the service creation request. There is no guarantee that the service will actually reach a RUNNING state. Resource availability and several other factors determines if the service will be deployed in the cluster. It is expected that clients would subsequently call the GET API to get details of the service and determine its state.
GET /app/v1/services
PUT /app/v1/services/{service_name}
Update the runtime properties of a service. Currently the following operations are supported - update lifetime, stop/start a service. The PUT operation is also used to orchestrate an upgrade of the service containers to a newer version of their artifacts (TBD).
| Type | Name | Description | Required | Schema | Default |
|---|---|---|---|---|---|
| PathParameter | service_name | Service name | true | string | |
| BodyParameter | Service | The updated service definition. It can contain the updated lifetime of a service or the desired state (STOPPED/STARTED) of a service to initiate a start/stop operation against the specified service | true | Service |
GET /app/v1/services/{service_name}
DELETE /app/v1/services/{service_name}
Destroy a service and release all resources. This API might have to return JSON data providing location of logs (TBD), etc.
PUT /app/v1/services/{service_name}/components/{component_name}
Artifact of a service component. If not specified, component will just run the bare launch command and no artifact will be localized.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| id | Artifact id. Examples are package location uri for tarball based services, image name for docker, name of service, etc. | true | string | |
| type | Artifact type, like docker, tarball, etc. (optional). For TARBALL type, the specified tarball will be localized to the container local working directory under a folder named lib. For SERVICE type, the service specified will be read and its components will be added into this service. The original component with artifact type SERVICE will be removed (any properties specified in the original component will be ignored). | false | enum (DOCKER, TARBALL, SERVICE) | DOCKER |
| uri | Artifact location to support multiple artifact stores (optional). | false | string |
One or more components of the service. If the service is HBase say, then the component can be a simple role like master or regionserver. If the service is a complex business webapp then a component can be other services say Kafka or Storm. Thereby it opens up the support for complex and nested services.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| name | Name of the service component (mandatory). If Registry DNS is enabled, the max length is 44 characters. | true | string | |
| state | The state of the component | false | ComponentState | |
| dependencies | An array of service components which should be in READY state (as defined by readiness check), before this component can be started. The dependencies across all components of a service should be represented as a DAG. | false | string array | |
| readiness_check | Readiness check for this component. | false | ReadinessCheck | |
| artifact | Artifact of the component (optional). If not specified, the service level global artifact takes effect. | false | Artifact | |
| launch_command | The custom launch command of this component (optional for DOCKER component, required otherwise). When specified at the component level, it overrides the value specified at the global level (if any). If docker image supports ENTRYPOINT, launch_command is delimited by comma(,) instead of space. | false | string | |
| resource | Resource of this component (optional). If not specified, the service level global resource takes effect. | false | Resource | |
| number_of_containers | Number of containers for this component (optional). If not specified, the service level global number_of_containers takes effect. | false | integer (int64) | |
| decommissioned_instances | List of decommissioned component instances. | false | string array | |
| containers | Containers of a started component. Specifying a value for this attribute for the POST payload raises a validation error. This blob is available only in the GET response of a started service. | false | Container array | |
| run_privileged_container | Run all containers of this component in privileged mode (YARN-4262). | false | boolean | |
| placement_policy | Advanced scheduling and placement policies for all containers of this component. | false | PlacementPolicy | |
| configuration | Config properties for this component. | false | Configuration | |
| quicklinks | A list of quicklink keys defined at the service level, and to be resolved by this component. | false | string array | |
| restart_policy | Policy of restart component. Including ALWAYS (Always restart | |||
| component even if instance exit code = 0); ON_FAILURE (Only restart component if instance exit code != 0); NEVER (Do not restart in any cases). Flexing is not supported for components which have restart_policy=ON_FAILURE/NEVER | false | string | ALWAYS |
The state of the component
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| state | enum of the state of the component | false | enum (INIT, FLEXING, STABLE, UPGRADING) |
A config file that needs to be created and made available as a volume in a service component container.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| type | Config file in the standard format like xml, properties, json, yaml, template or static/archive resource files. When static/archive types are specified, file must be uploaded to remote file system before launching the job, and YARN service framework will localize files prior to launching containers. Archive files are unwrapped during localization | false | enum (XML, PROPERTIES, JSON, YAML, TEMPLATE, HADOOP_XML, STATIC, ARCHIVE) | |
| dest_file | The path that this configuration file should be created as. If it is an absolute path, it will be mounted into the DOCKER container. Absolute paths are only allowed for DOCKER containers. If it is a relative path, only the file name should be provided, and the file will be created in the container local working directory under a folder named conf for all types other than static/archive. For static/archive resource types, the files are available under resources directory. | false | string | |
| src_file | This provides the source location of the configuration file, the content of which is dumped to dest_file post property substitutions, in the format as specified in type. Typically the src_file would point to a source controlled network accessible file maintained by tools like puppet, chef, or hdfs etc. Currently, only hdfs is supported. | false | string | |
| properties | A blob of key value pairs that will be dumped in the dest_file in the format as specified in type. If src_file is specified, src_file content are dumped in the dest_file and these properties will overwrite, if any, existing properties in src_file or be added as new properties in src_file. | false | object |
Set of configuration properties that can be injected into the service components via envs, files and custom pluggable helper docker containers. Files of several standard formats like xml, properties, json, yaml and templates will be supported.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| properties | A blob of key-value pairs for configuring the YARN service AM. | false | object | |
| env | A blob of key-value pairs which will be appended to the default system properties and handed off to the service at start time. All placeholder references to properties will be substituted before injection. | false | object | |
| files | Array of list of files that needs to be created and made available as volumes in the service component containers. | false | ConfigFile array |
An instance of a running service container.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| id | Unique container id of a running service, e.g. container_e3751_1458061340047_0008_01_000002. | false | string | |
| launch_time | The time when the container was created, e.g. 2016-03-16T01:01:49.000Z. This will most likely be different from cluster launch time. | false | string (date) | |
| ip | IP address of a running container, e.g. <IP_ADDRESS>. The IP address and hostname attribute values are dependent on the cluster/docker network setup as per YARN-4007. | false | string | |
| hostname | Fully qualified hostname of a running container, e.g. ctr-e3751-1458061340047-0008-01-000002.examplestg.site. The IP address and hostname attribute values are dependent on the cluster/docker network setup as per YARN-4007. | false | string | |
| bare_host | The bare node or host in which the container is running, e.g. cn008.example.com. | false | string | |
| state | State of the container of a service. | false | ContainerState | |
| component_instance_name | Name of the component instance that this container instance belongs to. Component instance name is named as $COMPONENT_NAME-i, where i is a monotonically increasing integer. E.g. A componet called nginx can have multiple component instances named as nginx-0, nginx-1 etc. Each component instance is backed by a container instance. | false | string | |
| resource | Resource used for this container. | false | Resource | |
| artifact | Artifact used for this container. | false | Artifact | |
| privileged_container | Container running in privileged mode or not. | false | boolean |
The current state of the container of a service.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| state | enum of the state of the container | false | enum (INIT, STARTED, READY) |
The kerberos principal info of the user who launches the service.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| principal_name | The principal name of the user who launches the service. Note that _HOST is required in the principal_name field such as<EMAIL_ADDRESS>because Hadoop client validates that the server’s (in this case, the AM’s) principal has hostname present when communicating to the server. | false | string | |
| keytab | The URI of the kerberos keytab. Currently supports only files present on the bare host. URI starts with “file://” - A path on the local host where the keytab is stored. It is assumed that admin pre-installs the keytabs on the local host before AM launches. | false | string |
Placement constraint details.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| name | An optional name associated to this constraint. | false | string | |
| type | The type of placement. | true | PlacementType | |
| scope | The scope of placement. | true | PlacementScope | |
| target_tags | The name of the components that this component’s placement policy is depending upon are added as target tags. So for affinity say, this component’s containers are requesting to be placed on hosts where containers of the target tag component(s) are running on. Target tags can also contain the name of this component, in which case it implies that for anti-affinity say, no more than one container of this component can be placed on a host. Similarly, for cardinality, it would mean that containers of this component is requesting to be placed on hosts where at least minCardinality but no more than maxCardinality containers of the target tag component(s) are running. | false | string array | |
| node_attributes | Node attributes are a set of key:value(s) pairs associated with nodes. | false | object | |
| node_partitions | Node partitions where the containers of this component can run. | false | string array | |
| min_cardinality | When placement type is cardinality, the minimum number of containers of the depending component that a host should have, where containers of this component can be allocated on. | false | integer (int64) | |
| max_cardinality | When placement type is cardinality, the maximum number of containers of the depending component that a host should have, where containers of this component can be allocated on. | false | integer (int64) |
Advanced placement policy of the components of a service.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| constraints | Placement constraint details. | true | PlacementConstraint array |
The scope of placement for the containers of a component.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| type | false | enum (NODE, RACK) |
The type of placement - affinity/anti-affinity/affinity-with-cardinality with containers of another component or containers of the same component (self).
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| type | false | enum (AFFINITY, ANTI_AFFINITY, AFFINITY_WITH_CARDINALITY) |
A check to be performed to determine the readiness of a component instance (a container). If no readiness check is specified, the default readiness check will be used unless the yarn.service.default-readiness-check.enabled configuration property is set to false at the component or global level. The artifact field is currently unsupported but may be implemented in the future, enabling a pluggable helper container to support advanced use cases.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| type | DEFAULT (AM checks whether the container has an IP and optionally performs a DNS lookup for the container hostname), HTTP (AM performs default checks, plus sends a REST call to the container and expects a response code between 200 and 299), or PORT (AM performs default checks, plus attempts to open a socket connection to the container on a specified port). | true | enum (DEFAULT, HTTP, PORT) | |
| properties | A blob of key value pairs that will be used to configure the check. | false | object | |
| artifact | Artifact of the pluggable readiness check helper container (optional). If specified, this helper container typically hosts the http uri and encapsulates the complex scripts required to perform actual container readiness check. At the end it is expected to respond a 204 No content just like the simplified use case. This pluggable framework benefits service owners who can run services without any packaging modifications. Note, artifacts of type docker only is supported for now. NOT IMPLEMENTED YET | false | Artifact |
Resource determines the amount of resources (vcores, memory, network, etc.) usable by a container. This field determines the resource to be applied for all the containers of a component or service. The resource specified at the service (or global) level can be overriden at the component level. Only one of profile OR cpu & memory are expected. It raises a validation exception otherwise.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| profile | Each resource profile has a unique id which is associated with a cluster-level predefined memory, cpus, etc. | false | string | |
| cpus | Amount of vcores allocated to each container (optional but overrides cpus in profile if specified). | false | integer (int32) | |
| memory | Amount of memory allocated to each container (optional but overrides memory in profile if specified). Currently accepts only an integer value and default unit is in MB. | false | string | |
| additional | A map of resource type name to resource type information. Including value (integer), unit (string) and optional attributes (map). This will be used to specify resource other than cpu and memory. Please refer to example below. | false | object |
ResourceInformation determines unit/value of resource types in addition to memory and vcores. It will be part of Resource object.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| value | Integer value of the resource. | false | integer (int64) | |
| unit | Unit of the resource, acceptable values are - p/n/u/m/k/M/G/T/P/Ki/Mi/Gi/Ti/Pi. By default it is empty means no unit. | false | string |
a service resource has the following attributes.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| name | A unique service name. If Registry DNS is enabled, the max length is 63 characters. | true | string | |
| version | Version of the service. | true | string | |
| description | Description of the service. | false | string | |
| id | A unique service id. | false | string | |
| artifact | The default artifact for all components of the service except the components which has Artifact type set to SERVICE (optional). | false | Artifact | |
| resource | The default resource for all components of the service (optional). | false | Resource | |
| launch_time | The time when the service was created, e.g. 2016-03-16T01:01:49.000Z. | false | string (date) | |
| number_of_running_containers | In get response this provides the total number of running containers for this service (across all components) at the time of request. Note, a subsequent request can return a different number as and when more containers get allocated until it reaches the total number of containers or if a flex request has been made between the two requests. | false | integer (int64) | |
| lifetime | Life time (in seconds) of the service from the time it reaches the STARTED state (after which it is automatically destroyed by YARN). For unlimited lifetime do not set a lifetime value. | false | integer (int64) | |
| components | Components of a service. | false | Component array | |
| configuration | Config properties of a service. Configurations provided at the service/global level are available to all the components. Specific properties can be overridden at the component level. | false | Configuration | |
| state | State of the service. Specifying a value for this attribute for the PUT payload means update the service to this desired state. | false | ServiceState | |
| quicklinks | A blob of key-value pairs of quicklinks to be exported for a service. | false | object | |
| queue | The YARN queue that this service should be submitted to. | false | string | |
| kerberos_principal | The principal info of the user who launches the service | false | KerberosPrincipal | |
| docker_client_config | URI of the file containing the docker client configuration (e.g. hdfs:///tmp/config.json) | false | string | |
| dependencies | A list of service names that this service depends on. | false | string array |
The current state of a service.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| state | enum of the state of the service | false | enum (ACCEPTED, STARTED, STABLE, STOPPED, FAILED, FLEX, UPGRADING) |
The current status of a submitted service, returned as a response to the GET API.
| Name | Description | Required | Schema | Default |
|---|---|---|---|---|
| diagnostics | Diagnostic information (if any) for the reason of the current state of the service. It typically has a non-null value, if the service is in a non-running state. | false | string | |
| state | Service state. | false | ServiceState | |
| code | An error code specific to a scenario which service owners should be able to use to understand the failure in addition to the diagnostic information. | false | integer (int32) |
POST URL - http://localhost:8088/app/v1/services
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example", "components" : [ { "name": "hello", "number_of_containers": 2, "artifact": { "id": "nginx:latest", "type": "DOCKER" }, "launch_command": "./start_nginx.sh", "resource": { "cpus": 1, "memory": "256" } } ] }
GET URL - http://localhost:8088/app/v1/services/hello-world
Note, lifetime value of -1 means unlimited lifetime.
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example", "id": "application_1503963985568_0002", "lifetime": -1, "state": "STABLE", "components": [ { "name": "hello", "state": "STABLE", "resource": { "cpus": 1, "memory": "256" }, "configuration": { "properties": {}, "env": {}, "files": [] }, "quicklinks": [], "containers": [ { "id": "container_e03_1503963985568_0002_01_000002", "ip": "<IP_ADDRESS>", "hostname": "ctr-e03-1503963985568-0002-01-000002.example.site", "state": "READY", "launch_time":<PHONE_NUMBER>412, "bare_host": "host100.cloud.com", "component_instance_name": "hello-0" }, { "id": "container_e03_1503963985568_0002_01_000003", "ip": "<IP_ADDRESS>", "hostname": "ctr-e03-1503963985568-0002-01-000003.example.site", "state": "READY", "launch_time":<PHONE_NUMBER>450, "bare_host": "host100.cloud.com", "component_instance_name": "hello-1" } ], "launch_command": "./start_nginx.sh", "number_of_containers": 1, "run_privileged_container": false } ], "configuration": { "properties": {}, "env": {}, "files": [] }, "quicklinks": {} }
PUT URL - http://localhost:8088/app/v1/services/hello-world
Note, irrespective of what the current lifetime value is, this update request will set the lifetime of the service to be 3600 seconds (1 hour) from the time the request is submitted. Hence, if a a service has remaining lifetime of 5 mins (say) and would like to extend it to an hour OR if an application has remaining lifetime of 5 hours (say) and would like to reduce it down to an hour, then for both scenarios you need to submit the same request below.
{ "lifetime": 3600 }
PUT URL - http://localhost:8088/app/v1/services/hello-world/components/hello
POST URL - http://localhost:8088:/app/v1/services/hbase-app-1
{ "name": "hbase-app-1", "version": "1.0.0", "description": "hbase service", "lifetime": "3600", "components": [ { "name": "hbasemaster", "number_of_containers": 1, "artifact": { "id": "hbase:latest", "type": "DOCKER" }, "launch_command": "/usr/hdp/current/hbase-master/bin/hbase master start", "resource": { "cpus": 1, "memory": "2048" }, "configuration": { "env": { "HBASE_LOG_DIR": "<LOG_DIR>" }, "files": [ { "type": "XML", "dest_file": "/etc/hadoop/conf/core-site.xml", "properties": { "fs.defaultFS": "${CLUSTER_FS_URI}" } }, { "type": "XML", "dest_file": "/etc/hbase/conf/hbase-site.xml", "properties": { "hbase.cluster.distributed": "true", "hbase.zookeeper.quorum": "${CLUSTER_ZK_QUORUM}", "hbase.rootdir": "${SERVICE_HDFS_DIR}/hbase", "zookeeper.znode.parent": "${SERVICE_ZK_PATH}", "hbase.master.hostname": "hbasemaster.${SERVICE_NAME}.${USER}.${DOMAIN}", "hbase.master.info.port": "16010" } } ] } }, { "name": "regionserver", "number_of_containers": 3, "artifact": { "id": "hbase:latest", "type": "DOCKER" }, "launch_command": "/usr/hdp/current/hbase-regionserver/bin/hbase regionserver start", "resource": { "cpus": 1, "memory": "2048" }, "configuration": { "env": { "HBASE_LOG_DIR": "<LOG_DIR>" }, "files": [ { "type": "XML", "dest_file": "/etc/hadoop/conf/core-site.xml", "properties": { "fs.defaultFS": "${CLUSTER_FS_URI}" } }, { "type": "XML", "dest_file": "/etc/hbase/conf/hbase-site.xml", "properties": { "hbase.cluster.distributed": "true", "hbase.zookeeper.quorum": "${CLUSTER_ZK_QUORUM}", "hbase.rootdir": "${SERVICE_HDFS_DIR}/hbase", "zookeeper.znode.parent": "${SERVICE_ZK_PATH}", "hbase.master.hostname": "hbasemaster.${SERVICE_NAME}.${USER}.${DOMAIN}", "hbase.master.info.port": "16010", "hbase.regionserver.hostname": "${COMPONENT_INSTANCE_NAME}.${SERVICE_NAME}.${USER}.${DOMAIN}" } } ] } } ], "quicklinks": { "HBase Master Status UI": "http://hbasemaster0.${SERVICE_NAME}.${USER}.${DOMAIN}:16010/master-status", "Proxied HBase Master Status UI": "http://app-proxy/${DOMAIN}/${USER}/${SERVICE_NAME}/hbasemaster/16010/" } }
POST URL - http://localhost:8088/app/v1/services
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example with GPUs", "components" : [ { "name": "hello", "number_of_containers": 2, "artifact": { "id": "nginx:latest", "type": "DOCKER" }, "launch_command": "./start_nginx.sh", "resource": { "cpus": 1, "memory": "256", "additional" : { "yarn.io/gpu" : { "value" : 4, "unit" : "" } } } } ] }
POST URL - http://localhost:8088/app/v1/services
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example with anti-affinity", "components" : [ { "name": "hello", "number_of_containers": 3, "artifact": { "id": "nginx:latest", "type": "DOCKER" }, "launch_command": "./start_nginx.sh", "resource": { "cpus": 1, "memory": "256" }, "placement_policy": { "constraints": [ { "type": "ANTI_AFFINITY", "scope": "NODE", "node_attributes": { "os": ["centos6", "centos7"], "fault_domain": ["fd1", "fd2"] }, "node_partitions": [ "gpu", "fast-disk" ], "target_tags": [ "hello" ] } ] } } ] }
GET URL - http://localhost:8088/app/v1/services/hello-world
Note, for an anti-affinity component no more than 1 container will be allocated in a specific node. In this example, 3 containers have been requested by component “hello”. All 3 containers were allocated because the cluster had 3 or more NMs. If the cluster had less than 3 NMs then less than 3 containers would be allocated. In cases when the number of allocated containers are less than the number of requested containers, the component and the service will be in non-STABLE state.
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example with anti-affinity", "id": "application_1503963985568_0003", "lifetime": -1, "state": "STABLE", "components": [ { "name": "hello", "state": "STABLE", "resource": { "cpus": 1, "memory": "256" }, "placement_policy": { "constraints": [ { "type": "ANTI_AFFINITY", "scope": "NODE", "node_attributes": { "os": ["centos6", "centos7"], "fault_domain": ["fd1", "fd2"] }, "node_partitions": [ "gpu", "fast-disk" ], "target_tags": [ "hello" ] } ] }, "configuration": { "properties": {}, "env": {}, "files": [] }, "quicklinks": [], "containers": [ { "id": "container_e03_1503963985568_0003_01_000002", "ip": "<IP_ADDRESS>", "hostname": "ctr-e03-1503963985568-0003-01-000002.example.site", "state": "READY", "launch_time":<PHONE_NUMBER>412, "bare_host": "host100.cloud.com", "component_instance_name": "hello-0" }, { "id": "container_e03_1503963985568_0003_01_000003", "ip": "<IP_ADDRESS>", "hostname": "ctr-e03-1503963985568-0003-01-000003.example.site", "state": "READY", "launch_time":<PHONE_NUMBER>450, "bare_host": "host101.cloud.com", "component_instance_name": "hello-1" }, { "id": "container_e03_1503963985568_0003_01_000004", "ip": "<IP_ADDRESS>", "hostname": "ctr-e03-1503963985568-0003-01-000004.example.site", "state": "READY", "launch_time":<PHONE_NUMBER>450, "bare_host": "host102.cloud.com", "component_instance_name": "hello-2" } ], "launch_command": "./start_nginx.sh", "number_of_containers": 1, "run_privileged_container": false } ], "configuration": { "properties": {}, "env": {}, "files": [] }, "quicklinks": {} }
POST URL - http://localhost:8088/app/v1/services
{ "name": "hello-world", "version": "1.0.0", "description": "hello world example with health threshold monitor", "components" : [ { "name": "hello", "number_of_containers": 100, "artifact": { "id": "nginx:latest", "type": "DOCKER" }, "launch_command": "./start_nginx.sh", "resource": { "cpus": 1, "memory": "256" }, "configuration": { "properties": { "yarn.service.container-health-threshold.percent": "90", "yarn.service.container-health-threshold.window-secs": "400", "yarn.service.container-health-threshold.init-delay-secs": "800" } } } ] }


This tests loading of a HTML page with a BMP image when the HTTP content-type is set to "NULL" . Expected : This page should have an HTML as text .


Dimension-reduction methods aim at defining a score that maximizes signal diversity. Two approaches, namely maximum entropy weights and maximum variance weights, are provided.
| Version: | 2017.12-03 |
| Depends: | R (≥ 3.3.0) |
| Suggests: | MASS, RUnit |
| Published: | 2017-12-04 |
| Author: | Zonglin He [aut, cre], Youyi Fong [aut] |
| Maintainer: | Zonglin He <nkhezl at gmail.com> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| Materials: | ChangeLog |
| CRAN checks: | mdw results |
| Reference manual: | mdw.pdf |
| Package source: | mdw_2017.12-03.tar.gz |
| Windows binaries: | r-devel: mdw_2017.12-03.zip, r-release: mdw_2017.12-03.zip, r-oldrel: mdw_2017.12-03.zip |
| OS X binaries: | r-release: mdw_2017.12-03.tgz, r-oldrel: mdw_2017.12-03.tgz |
| Old sources: | mdw archive |
Please use the canonical form https://CRAN.R-project.org/package=mdw to link to this page.


The following section will show you the basics of how to configure the textCounter plugin.
The following is a list of all the options available and their default values:
| Option | Description | Default |
|---|---|---|
| defaultClass | The default class used for the text counter. The same class will be used for all textCounter objects unless overridden. | textCounter |
| transition | The transition to use when showing the text counter. Possible values include: none, fadeToggle, slideToggle or any defined jQuery toggle method. | slideToggle |
| easing | The easing mode the transition should use. Possible values include swing and linear. Additional options are available via jQuery UI. | swing |
| transitionSpeed | In milliseconds the amount of time for the transition to last. | 200 |
| posX | The X-axis where the counter should appear. Possible values include: left, center , right, or any integer. | right |
| posY | The Y-axis where the counter should appear. Possible values include: top, center , bottom, or any integer | bottom |
| posXoffset | The number of pixels on the X-axis to move the counter from it's default position of posX. | 0 |
| posYoffset | The number of pixels on the Y-axis to move the counter from it's default position of posY. | 0 |
| warnAt | The number of characters, or percentage remaining, when the warningClass will be applied. | 10 |
| warningClass | The class to apply to the text counter when the warnAt value has been met or passed. | warningCounter |
| showBeforeWarn | Should the text counter be shown before reaching the warnAt value. Possible values include: true and false. | true |
| textPattern | The text to be displayed in the counter. The following constants will be replaced:
| [+] / [=] |
| maxLength | The default maxlength value to apply to any field that does not have the attribute set. Enforces this value on Opera and Internet Explorer versions that do not support the maxlength attribute. | 500 |
| countDown | Should the text counter count down from maximum value (true) or up to it (false). | true |
| onWarn | An optional function to call when the textCounter has fallen below the warnAt threshold. | null |
| onPass | An optional function to call when the textCounter moves above the warnAt threshold. | null |
If you want to override a default option globally for the textCounter object(s), you can make a call to the textCounter options object. The below will change the default transition from "slideToggle" to "none" for all textCounters. Note: This is not being applied for this demo page.
$.fn.textCounter.options.transition = "none";
The following textarea uses all the default settings for the textCounter object.
$("#test1").textCounter();
In this example we have moved the textcounter object to top left.
$("#test1").textCounter( { posX : "left" , posY : "top" } );
For more finite control, there are the posXoffset and posYoffset options. These options allow you to adjust the placement of the textCounter object similar to relative positioning in CSS. In the example below, the textCounter has been moved an additional 25 pixels to the left and five pixels down from it's default position (bottom right).
$("#test3").textCounter( { posXoffset : -25 , posYoffset : 5 } );
Another option is to set the posX and posY options to the exact coordinates of where you want to show the textCounter. These coordinates are based off of the top left hand corner of the page.
$("#test4").textCounter( { posX:250 , posY:2050 } );
In this example, the textPattern option has been changed to show just the percentage. Because of this, the warnAt value now represents the percentage remaining before the warningClass is applied. Also, since countDown is still true the textCounter will count down from 100%.
$("#test5").textCounter( { textPattern : "[%]%" } );
In this example, the countDown option has been changed to false and the percentage will count up to 100%.
$("#test6").textCounter( { textPattern : "[%]%" , countDown : false } );
Here we will show the count ( [+] ), the total ( [=] ), and the percentage( [%] ).
$("#test7").textCounter({ textPattern:"[+]/[=] [%]%" , countDown:false });
On the textarea below, we have modified the transition option to be none.
$("#test8").textCounter( { transition : "none" } );
Another simple example, changes the transition option to be fadeToggle, the easing to linear and the transitionSpeed to 500 milliseconds.
$("#test9").textCounter( { transition : "fadeToggle" ,
easing : "linear",
transitionSpeed : 500
} );
On the textarea below, we have modified the showBeforeWarn option to be false. This will cause the textCounter to only appear after the warnAt value has been passed.
$("#test10").textCounter( { showBeforeWarn : false } );
On the textarea below, we have used a different defaultID and a different textPattern. Since this particular textCounter has it's unique ID and classes, it can look entirely different without interfering with the default textCounter options.
$("#test11").textCounter( { defaultClass : "counter2" ,
textPattern : "[+] of [=] characters"
});
These two functions are called each time the warnAt threshold is passed. The onWarn function will be called each time the counter goes below the threshold and the onPass function will be called when the counter goes above the threshold.
In the onWarn or onPass function, this will refer to the current selected object. It does not refer to the textCounter object.
$("#test12").textCounter( {
onWarn : function( ) {
$this=$(this);
$this.addClass("fail");
},
onPass : function( ) {
$this=$(this);
$this.removeClass("fail");
}
});
You can download the plugin from the GitHub Repository.
Feel free to email me if you have any questions.
Copyright © 2012, Gary Storey ( http://garystorey.com )
Released under Creative Commons Attribution-ShareAlike 3.0 Unported License.


Permanently deactivate your account and delete all of your content on Algo Store. This deactivation is related to Algo Store only and would not affect Lykke Exchange or any other Lykke services.


"x" "1" "COUCH,DB, ABERNETHY,DJ AND ALLEN,PF, THE EFFECT OF BIOTRANSFORMATIONOF 2,4-DINITROTOLUENE ON ITS MUTAGENIC POTENTIAL, MUTAGENESIS 2(6):415-418,1987"


Ken stands. Ken stamps. Ken taps. Ken spins. Ken pants. Ken sits. Ken rests. Ken stands and taps and stamps and spins and pants, and sits and rests.


---
layout: page
parmalink: 'pages/team'
parent: team
---
Mr. Chandrakant J. Shah
Director
Qualified as a
Bachelor of Science (Chemistry) from
University of Mumbai, he made a modest beginning in the mid
1950s by working as a chemist with
Sterling Chemicals.
He, along with his brother Mr. Harshad Shah established and promoted
Chemical Corp Pvt. Ltd. He later diversified into manufacturing of inorganic and organic salts under the company
Sterling Orgo and Inorgo Chemicals Pvt. Ltd.
He was also instrumental in setting up a manufacturing
unit for
Trichem Laboratories (Bombay) Pvt. Ltd.
at Navi Mumbai. At present, he looks after the overall operations of the group.
Mr. Harshad J. Shah
Director
Qualified as a
Bachelor of Science (Chemistry) from
University of Mumbai,
he made a humble beginning by trading of chemicals. He continued to expand, his business by penetrating into the market and
maintaining a strong hold on the trading vertical of the group.
He was instrumental in establishing
Chemical Corp in 1959 along with his elder brother, Mr. Chandrakant Shah. At present he manages the trading
business and overall operations of the Company. He was also the
Hon. Secretary of Chemical & Alkali Merchants Association (CAMA) and is presently a member of the
Arbitration committee.
Mr. Nilesh C. Shah
Director
He is qualified as a
Bachelor of Science (Chemistry), from the
University of Mumbai.
He has the overall knowledge of the
core technicals
and expertise into manufacturing activities of the group. He handles all the technical issues pertaining to material and
overall infrastructure. His knowledge in the technical aspects of the group also helps him in identification
and
development of new products for the group. He is instrumental in the setting up and running of the current
manufacturing unit of current manufacturing unit of
Trichem Laboratories (Bombay) Pvt. Ltd.
at Ambernath.
Mr. Ketan C. Shah
Director
He is a qualified
Computer Engineer from the
University of Mumbai. His expertise lies in handling
finances of the entire group and is an integral part of
Groups Management, Operations and Sales.
He is also responsible for other
commercial activities of the group.


Across: 1. Amusing woman needs no last changes to basics (12) 8. Join up again with caution (7) 9. Send on behalf of one with guardian (7) 11. Oligarchs’ dog caught vermin! (10) 12. Paperback circle’s first responsibility (4) 14. Queens without number may be in unlicensed premises (8) 16. Soldier left inside with communist-backed flyer (6) 17.  (3) 18. Be over-enthusiastic and swear on purpose (6) 21. Time to mix rice, rum and spice... (8) 24. ...Fine artist portrays vegetable (4) 25. Get emitter working about Christmas (10) 27. John returns after central heating is fixed in seconds in colleges (7) 28. Vote after communist flyer (7) 29. Misery when women try to bring up desperate needs at end of proceedings (12) Down: 1. U-Boat turns, shooting around crack (7) 2. Mad capers only result in sudden tiredness (10) 3. Lincoln car worker is wrong! (8) 4. Leaders of East Finchley Fun Day were rather ineffectual (6) 5. Wrong to move smartly back (4) 6. Inclined to get right into what we did in 27 (7) 7. Suppose endless terror in confusion would be unbelievable! (12) 10. See daughter within copper’s area, at first without paying attention (12) 13. 8 society member’s crest (10) 15. Take place without energy (3) 18. Run back to you, in France, before wine’s brought up (8) 20. More growth on article by river (7) 22. Damaging for us in our confusion! (7) 23. Break IT scholar’s possession – a thing of dubious taste! (6) 26. Run to get to toss-up before start of Test (4)


{% extends "devilry_gradingsystem/admin/reconfigurebase.django.html" %} {% load i18n %} {% block heading %} {% trans "How are results presented to the student?" %} {% endblock heading %} {% block subheading %} {% include "devilry_gradingsystem/admin/currentprogress.django.html" %} {% endblock subheading %} {% block content %}
{% trans "Students see their result as passed or failed." %} {% if not pluginapi.sets_passing_grade_min_points_automatically %} {% trans "You select the number of points required to pass in the next step of this wizard." %} {% endif %}
{% include "devilry_gradingsystem/admin/use-this-button.django.html" with href="?points_to_grade_mapper=passed-failed" %}{% trans "Students see their result as points/max-points, and they can see if the number of points is a passing or a failing grade." %} {% if not pluginapi.sets_passing_grade_min_points_automatically %} {% trans "You select the number of points required to pass in the next step of this wizard." %} {% endif %}
{% include "devilry_gradingsystem/admin/use-this-button.django.html" with href="?points_to_grade_mapper=raw-points" %}{% trans "You set up a table mapping points to a grade. Use this if you want to grade your students according to some scale, such as A-F." %}
{% include "devilry_gradingsystem/admin/use-this-button.django.html" with href="?points_to_grade_mapper=custom-table" %}


My Fridge
Meat
{% for prod in meat %}
{% include 'partials/product.html' %}
{% endfor %}
Dairy
{% for prod in dairy %}
{% include 'partials/product.html' %}
{% endfor %}
Sea Food
{% for prod in sea_food %}
{% include 'partials/product.html' %}
{% endfor %}
Vegetables
{% for prod in vegetables %}
{% include 'partials/product.html' %}
{% endfor %}
Fruits
{% for prod in fruits %}
{% include 'partials/product.html' %}
{% endfor %}
Drinks
{% for prod in drinks %}
{% include 'partials/product.html' %}
{% endfor %}
Others
{% for prod in others_fridge %}
{% include 'partials/product.html' %}
{% endfor %}


Renderer coupled with a basic diffuse path tracer. The user can move the camera anywhere and trigger a path-traced rendering. Can also display the raycaster acceleration structure.
More...
#include <BVHRenderer.hpp>
Renderer coupled with a basic diffuse path tracer. The user can move the camera anywhere and trigger a path-traced rendering. Can also display the raycaster acceleration structure.
Inherits Renderer.
◆ BVHRenderer()
| BVHRenderer::BVHRenderer |
( |
const glm::vec2 & |
resolution | ) |
|
|
explicit |
Constructor.
- Parameters
-
| resolution | the rendering resolution |
◆ castRay()
| void BVHRenderer::castRay |
( |
const glm::vec3 & |
position, |
|
|
const glm::vec3 & |
direction |
|
) |
| |
Generate visualisation for a ray cast from a position.
- Parameters
-
| position | the ray origin. |
| direction | the ray direction. |
◆ clean()
| void BVHRenderer::clean |
( |
| ) |
|
|
overridevirtual |
Clean internal resources.
Implements Renderer.
◆ clearRay()
| void BVHRenderer::clearRay |
( |
| ) |
|
Delete the displayed ray.
◆ draw()
| void BVHRenderer::draw |
( |
const Camera & |
camera | ) |
|
|
overridevirtual |
Draw from a given viewpoint.
- Parameters
-
| camera | the rendering viewpoint |
Reimplemented from Renderer.
◆ maxLevel()
| int BVHRenderer::maxLevel |
( |
| ) |
|
The maximum depth of the BVH.
- Returns
- the maximum level
◆ range()
| glm::ivec2& BVHRenderer::range |
( |
| ) |
|
|
inline |
Display a range of levels of the BVH.
- Returns
- the range
◆ resize()
| void BVHRenderer::resize |
( |
unsigned int |
width, |
|
|
unsigned int |
height |
|
) |
| |
|
overridevirtual |
Handle a window resize event.
- Parameters
-
| width | the new width |
| height | the new height |
Implements Renderer.
◆ setScene()
| void BVHRenderer::setScene |
( |
const std::shared_ptr< Scene > & |
scene, |
|
|
const Raycaster & |
raycaster |
|
) |
| |
Set the scene to render.
- Parameters
-
| scene | the new scene |
| raycaster | the associated raycaster |
◆ showBVH()
| bool& BVHRenderer::showBVH |
( |
| ) |
|
|
inline |
Show the BVH structure.
- Returns
- the toggle
The documentation for this class was generated from the following files:


CONGRATULATIONS TO THE LADIES OF RSIX!
Congratulations to the ladies of Restated who just took 3rd place in the NY Regional Harmony Sweepstakes as members of RSix!
Congratulations to the ladies of Restated who just took 3rd place in the NY Regional Harmony Sweepstakes as members of RSix!
Get $5 off tickets to our upcoming show at Trash Bar (next Thu night, Jan. 16) when you purchase them by Jan. 12!
We've added two new amazing talents to our roster: we're excited to welcome Anna and Lily to Restated!
Italian X-Factor sensation CLUSTER has scheduled their first US tour, and Restated will open for them at The Bitter End on 10/23.
We're currently accepting audition submissions for all parts! (Through July 5, that is, so hurry up and find out how.)
Help us support Hurricane Sandy relief efforts by downloading our new single, "The Heart of the Matter," available now on iTunes!
It's been 5 years. We've grown. And now we have a new name: Restated A Cappella!
Our version of "Just Dance" has been selected to appear on A Cappella Records' compilation tribute to Lady Gaga.


Elder Filaur:
At first, we thought that the lost Wererats had trickled into the dark and damp mines for a place to rest. You know, lost monsters have been coming into the mines for ages.
But that wasn't it. They had entered the mines for some specific purpose. Their numbers slowly increased, until one day, it seemed that they would take over the whole place.
Also...
"Also...?"


From:Miller Mary Kay To:Geaccone Tracy Sent:2017-01-11T04:37:15.0000000Z Subject:RE: TW 2002 Plan Summary
I was tied up in some other meetings and wasn't able to attend. Do we have the final info, detail and presentation package for next Friday with Stan? How about "Stan frequently asked question response? " MK
-----Original Message-----
From: Geaccone, Tracy
Sent: Wednesday, October 03, 2001 2:01 PM
To: Miller, Mary Kay
Subject: RE: TW 2002 Plan Summary
We are meeting briefly with Danny this afternoon in EB 1336. Let Audrey know if you want to call in. We can e-mail you something.
Thanks
Tracy
-----Original Message-----
From: Miller, Mary Kay
Sent: Tuesday, October 02, 2001 1:48 PM
To: Moore, Jan
Cc: Geaccone, Tracy
Subject: RE: TW 2002 Plan Summary
Is this the latest info for TW? are there any plans to review prior to the 12th with Danny, if so, I'd like to be involved- thanks MK
-----Original Message-----
From: Moore, Jan
Sent: Wednesday, September 19, 2001 4:43 PM
To: Miller, Mary Kay
Cc: Geaccone, Tracy
Subject: TW 2002 Plan Summary
Mary Kay:
Tracy Geaccone asked that I send you the attached summary. This is what we have now, but Steve is still making changes.
<< File: VarianceAnaly.xls >>
Jan Moore
713-345-3858
***********
EDRM Enron Email Data Set has been produced in EML, PST and NSF format by ZL Technologies, Inc. This Data Set is licensed under a Creative Commons Attribution 3.0 United States License <http://creativecommons.org/licenses/by/3.0/us/> . To provide attribution, please cite to "ZL Technologies, Inc. (http://www.zlti.com)."
***********
California


A consumer (e.g. Pownce) makes the following HTTP request:
http://www.flickr.com/services/oembed/?url=http%3A//www.flickr.com/photos/bees/2341623661/
The provider (e.g. Flickr) then responds with an oEmbed response:
{ "version": "1.0", "type": "photo", "width": 240, "height": 160, "title": "ZB8T0193", "url": "http://farm4.static.flickr.com/3123/2341623661_7c99f48bbf_m.jpg", "author_name": "Bees", "author_url": "http://www.flickr.com/photos/bees/", "provider_name": "Flickr", "provider_url": "http://www.flickr.com/" }
This allows the consumer to turn a URL to a Flickr photo page into structured data to allow embedding of that photo in the consumer's website.


Used to trigger a build when another CruiseControl project has a successful build. When triggered, this will report a modification with action \"add\", the successfully built project's logfile, the name of the successfully built project's log directory (the final component of attribute logdir), and the username set to "cc-" + name of the successfully built project. You may need make an alias for this username if you are using an <email> publisher.
In addition to the standard CruiseControl properties passed to builders, <buildstatus> sets the following properties:
| Property Name | Description |
|---|---|
| most.recent.logdir | The location being checked for new log files |
| most.recent.logfile | The name of the newest logfile included in the modification set |
| most.recent.logtime | The timestamp of the newest build included in the
modification set, using the format
yyyyMMddHHmmss |
| most.recent.loglabel | The label of the newest build included in the modification set |


--- layout: post title: character Sketches date: '2017-07-30T11:30:11+02:00' categories: - Sketches - Costumes picture_url: https://film-Storyboards.tumblr.com/post/163602345402/character-Sketches ---


< prev index next > modules/javafx.web/src/main/native/Source/ThirdParty/libxml/src/parserInternals.c
Print this page
return((int) *ctxt->input->cur);
encoding_error:
/*
* An encoding problem may arise from a truncated input buffer
* splitting a character in the middle. In that case do not raise
- * an error but return 0 to endicate an end of stream problem
+ * an error but return 0 to indicate an end of stream problem
*/
if (ctxt->input->end - ctxt->input->cur < 4) {
*len = 0;
return(0);
}
encoding_error:
/*
* An encoding problem may arise from a truncated input buffer
* splitting a character in the middle. In that case do not raise
- * an error but return 0 to endicate an end of stream problem
+ * an error but return 0 to indicate an end of stream problem
*/
if ((ctxt == NULL) || (ctxt->input == NULL) ||
(ctxt->input->end - ctxt->input->cur < 4)) {
*len = 0;
return(0);
default:
break;
}
}
/*
- * TODO: We could recover from errors in external entites if we
+ * TODO: We could recover from errors in external entities if we
* didn't stop the parser. But most callers of this function don't
* check the return value.
*/
if (handler == NULL) {
xmlStopParser(ctxt);
if (input == NULL)
return (-1);
if (input->buf != NULL) {
if (input->buf->encoder != NULL) {
/*
- * Check in case the auto encoding detetection triggered
+ * Check in case the auto encoding detection triggered
* in already.
*/
if (input->buf->encoder == handler)
return (0);
< prev index next >


output element example
+
=
+
=
Invoice
Number of hours
Rate
£
Vat
Tatol:
£
A Mildly Controversial Example Using ＜input type="range"＞
Flying Skill Level
Using getElementById to support older browsers
+
=


|
Ocular Engine
|
#include <Scene.hpp>
Public Member Functions | |
| void | initialize () |
| void | addObject (SceneObject *object) |
| void | addObjects (std::vector< SceneObject * > const &objects) |
| void | removeObject (SceneObject *object) |
| void | removeObjects (std::vector< SceneObject * > const &objects) |
| void | removeAllObjects () |
| void | update () |
| void | render () |
| void | getVisibleSceneObjects (std::vector< SceneObject * > &objects, Math::Frustum const &frustum) |
| void | setStaticTreeType (SceneTreeType type) |
| SceneTreeType const & | getStaticTreeType () const |
| void | setDynamicTreeType (SceneTreeType type) |
| SceneTreeType const & | getDynamicTreeType () const |
| void | setRendererType (std::string const &string) |
| std::string const & | getRendererType () const |
Protected Member Functions | |
| void | updateTrees () |
| void | updateRoutines () |
| void | sortRoutines () |
| void | objectTreeChanged (SceneObject *object) |
| void | objectParentChanged (SceneObject *object, SceneObject *oldParent) |
| void | routineAdded (ARoutine *routine) |
| void | routineRemoved (ARoutine *routine) |
| void | triggerObjectDirty (UUID const &uuid, bool staticObject) |
Friends | |
| class | SceneManager |
A Scene owns the dual-SceneTrees which control all active SceneObjects. The system of dual trees is used in order to separate static and dynamic objects, and to aid in object caching and other performance improving techniques.
By default, the static tree uses a (yet to be created) QuadTree implementation while the dynamic tree employs a BVH implementation.
In addition to managing object addition, removal, and movement within the trees, the Scene is also responsible for retrieving the set of all non-culled SceneObjects and handing them off to the dedicated renderer which will sort them and envoke their render methods.
| void Ocular::Core::Scene::addObject | ( | SceneObject * | object | ) |
Adds the specified object to the scene's tree.
| [in] | object |
| void Ocular::Core::Scene::addObjects | ( | std::vector< SceneObject * > const & | objects | ) |
Adds a collection of objects to the scene's tree.
| [in] | objects |
| void Ocular::Core::Scene::getVisibleSceneObjects | ( | std::vector< SceneObject * > & | objects, |
| Math::Frustum const & | frustum | ||
| ) |
Returns a collection of all SceneObjects visible to the specified view frustum (see Camera::getFrustum).
The returned collection is a flat list meaning all visible SceneObjects are returned, not just top-level parents. Thus there is no need to check child visibility, as visible children will also be stored in the returned collection.
| [out] | objects | All visible SceneObjects |
| [in] | frustum | View frustum to perform frustum-culling against |
|
protected |
Alerts when the SceneObject's parent has been changed. This happens when the SceneObject::SetParent() method is called.
| [in] | object | |
| [in] | oldParent |
A change in object parentage can have an effect on the SceneTrees.
If the old parent is null, then the object used to be a top-level object and thus the appropriate SceneTree will need to be updated. As far as the tree is concerned, the object was removed as they only deal with top-level parents.
The the new parent is null, then the appropriate SceneTree will need to add the object as a new top-level parent.
If neither the old parent or the new parent are null, then the SceneTrees do not need to do anything as they do not interact while child objects.
|
protected |
Alerts that the SceneObject needs to be placed in a different SceneTree. This happens when the SceneObject::SetStatic() method is called.
| [in] | object |
| void Ocular::Core::Scene::removeAllObjects | ( | ) |
Removes all objects from the scene's tree.
| void Ocular::Core::Scene::removeObject | ( | SceneObject * | object | ) |
Removes the specified object from the scene's tree.
| [in] | object |
| void Ocular::Core::Scene::removeObjects | ( | std::vector< SceneObject * > const & | objects | ) |
Removes a collection of objects from the scene's tree.
| [in] | objects |
| void Ocular::Core::Scene::render | ( | ) |
Retrieves all non-culled SceneObjects and passes them to the dedicated renderer.
|
protected |
Alerts when a new routine has been created and added to a SceneObject.
| [in] | routine |
|
protected |
Alerts when a routine is being destroyed and removed from a SceneObject.
| [in] | routine |
| void Ocular::Core::Scene::setDynamicTreeType | ( | SceneTreeType | type | ) |
| [in] | type |
| void Ocular::Core::Scene::setStaticTreeType | ( | SceneTreeType | type | ) |
| [in] | type |
| void Ocular::Core::Scene::update | ( | ) |
Updates the SceneTrees (calls their member restructure methods).


-
module Latinum
-
class Resource
A Resource represents a fixed amount of a named currency or material.
-
def self.parse(string, default_name: nil)
Parse a string representation of a resource.
-
def self.load(string)
Load a string representation of a resource.
-
def self.dump(resource)
Dump a string representatino of a resource.
-
attr :amount
The amount of the resource.
-
attr :name
The name of the resource.
-
def + other
Add two resources. Must have the same name.
-
def - other
Subtract two resources. Must have the same name.
-
def -@
Invert the amount of the resource.
-
def * factor
Multiplies the resource by a given factor.
-
def / factor
Divides the resource by a given factor.
-
def exchange(rate, name, precision = nil)
Compute a new resource using the given exchange rate for the specified name.
-
def to_s
A human readable string representation of the resource amount and name.
-
def to_digits
A human readable string representation of the resource amount.
-
def <=> other
Compare with another
class Latinum::Resource
or a Numeric value. -
def zero?
Whether the amount of the resource is zero.
-
-
class DifferentResourceNameError < ArgumentError
Represents an error when trying to perform arithmetic on differently named resources.
-
module Currencies
-
module Formatters
-
class PlainFormatter
Formats a currency using a standard decimal notation.
-
def format(amount)
Formats the amount using a general notation.
-
def to_integral(amount)
Converts the amount directly to an integer, truncating any decimal part.
-
def from_integral(amount)
Converts the amount to a decimal.
-
-
class DecimalCurrencyFormatter
Formats a currency using a standard decimal notation.
-
def format(amount, **options)
Formats the amount using the configured symbol, separator, delimeter, and places.
-
def to_integral(amount)
Converts the amount directly to an integer, truncating any decimal part, taking into account the number of specified decimal places.
-
def from_integral(amount)
Converts the amount to a decimal, taking into account the number of specified decimal places.
-
-
-
class ExchangeRate
A basic exchange rate for a named resource.
-
def initialize(input, output, factor)
-
attr :input
The name of the input resource.
-
attr :output
The name of the output resource.
-
attr :factor
The rate of exchange.
-
-
class Bank
A bank defines exchange rates and formatting rules for resources. It is a centralised location for resource formatting and metadata.
-
def initialize(*imports)
Imports all given currencies.
-
def import(resources)
Import a list of resource templates, e.g. currencies.
-
def [](name)
Look up a currency by name.
-
attr :symbols
A map of all recognised symbols ordered by priority.
-
attr :currencies
The supported currents and assocaited formatting details.
-
def <<(rate)
Add an exchange rate to the bank.
-
def exchange(resource, for_name)
Exchange one resource for another using internally specified rates.
-
def parse(string, default_name: nil)
Parse a string according to the loaded currencies.
-
def round(resource)
Rounds the specified resource to the maximum precision as specified by the formatter. Whe computing things like tax, you often get fractional amounts which are unpayable because they are smaller than the minimum discrete unit of the currency. This method helps to round a currency to a payable amount.
-
def format(resource, *arguments, **options)
Format a resource as a string according to the loaded currencies.
-
def to_integral(resource)
Convert the resource to an integral representation based on the currency's precision.
-
def from_integral(amount, name)
Convert the resource from an integral representation based on the currency's precision.
-
-
class Collection
Aggregates a set of resources, typically used for summing values to compute a total.
-
def initialize(names = Set.new)
Initialize the collection with a given set of resource names.
-
attr :names
All resource names which have been added to the collection.
-
attr :resources
Keeps track of all added resources.
-
def add(resource)
Add a resource into the totals.
-
def <<(object)
Add a resource, an array of resources, or another collection into this one.
-
def - other
Subtract something from this collection.
-
def -@
Allow negation of all values within the collection.
-
def [] key
-
def []= key, amount
Set the amount for the specified resource name.
-
def each
Iterates over all the resources.
-
def empty?
Whether the collection is empty.
-
def include?(key)
Whether the collection contains the specified resource (may be zero).
-
def compact
Generate a new collection but ignore zero values.
-
def to_s
A human readable representation of the collection.
-
-


Oops! It looks like you haven't configured Git the gist yet.
Please configure your GitHub username and select a default gist, then try that action again!
Please configure your GitHub username and select a default gist, then try that action again!
Settings
An error occurred:
Choose Default Gist


Form
Questionnaire for boarders or residential pupils about accommodation
Annual point-in-time questionnaire for boarders and residential pupils at academies and maintained, non-maintained and independent schools.
Documents
MS Word Document
,
269KB
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
184KB
,
2 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
793KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
768KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
772KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
753KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
721KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
PDF
,
732KB
,
8 pages
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
Details
Ofsted gathers the views of boarders or residential pupils on the boarding provision at their school by sending a survey by email to the school at a specific point in time during the inspection year. The school is asked to distribute the survey to the boarders or residential pupils.
Ofsted have adapted the survey into Makaton, Widgit and Picture Communication Symbols for pupils who may need them. There are 2 sets of these, 1 omitting the question about food. For guidance on how Ofsted uses the responses to the surveys, please refer to:


The JirAgileR R package has the mission to bring the power of the project management tool 🔧 JIRA to R. By doing so, users benefit from the best capabilities of both platforms. More specifically, the package is a wrapper around JIRA’s REST API, allowing users to easily analyze JIRA projects and issues from within R. The underlying powertrain of the API is the Jira Query Language (JQL). You can find more information about it here. You can find a cheatsheet here.
The focus of this package lies in the following workflow aspects:
Hence, for easy transformation and manipulation, each function returns a data.frame
with tidy data, following main rules where each row is a single observation of an issue or a project, each column is a variable and each value must have its own cell. Thus, it integrates well with both the dplyr
and data.table
R libraries. This also allows for an easy integration with tabular data.
More information about the package can be found at the following link: https://matbmeijer.github.io/JirAgileR/.
data.frame
is flattened to a combination of issues and comments. Thus, the information of an issue may be repeated the number of comments each issue has.get_jira_dashboards()
function to retrieve JIRA dashboardsget_jira_permissions()
function to retrieve JIRA user permissionsget_jira_groups()
function to retrieve JIRA groupsget_jira_server_info()
function to retrieve JIRA server informationdata.table
dependencyYou can install the CRAN release version of JirAgileR following this R
command:
install.packages("JirAgileR")
You can also install the latest release of this package from Github with the following commands in R
:
if (!require("devtools")) install.packages("devtools")
devtools::install_github("matbmeijer/JirAgileR")
This is a basic example which shows you how to obtain a simple table of issues of a project and create a tabular report. Most of the times, you will need a username and your password to authenticate in your domain. Possible fields to obtain (which will populate the data.frame
columns) can be found here.
library(JirAgileR, quietly = T)
library(knitr, quietly = T)
library(dplyr, quietly = T)
# Save credentials to pass them only one time
save_jira_credentials(domain = "https://bugreports.qt.io")
# Get full list of projects in domain
get_jira_projects() %>%
select(key, name) %>%
kable(row.names = F, padding = 0)
| key | name |
|---|---|
| COIN | Coin |
| QBS | Qbs (“Cubes”) |
| QTBUG | Qt |
| QT3DS | Qt 3D Studio |
| AUTOSUITE | Qt Automotive Suite |
| QTJIRA | Qt Bugtracking interface |
| QTCREATORBUG | Qt Creator |
| QDS | Qt Design Studio |
| QTEXT | Qt Extensions |
| QTMCU | Qt for MCUs |
| PYSIDE | Qt for Python |
| QTIFW | Qt Installer Framework |
| QTMOBILITY | Qt Mobility |
| QTPLAYGROUND | Qt Playground Projects |
| QTWEBSITE | Qt Project Website |
| QTQAINFRA | Qt Quality Assurance Infrastructure |
| QTCOMPONENTS | Qt Quick Components (Deprecated, use QTBUG) |
| QSR | Qt Safe Renderer |
| QTSOLBUG | Qt Solutions |
| QTVSADDINBUG | Qt Visual Studio Tools |
| QTWB | Qt WebBrowser |
| QTSYSADM | Qt-Project.org Sysadmin (defunct) |
# Retrieve the issues from a single project - in this case the project QTWB from bugreports.qt.io. See documentation to define which fields to see
get_jira_issues(jql_query = "project='QTWB'",
fields = c("summary","created", "status")) %>%
select(key, summary, created, status_name, status_description, status_statuscategory_name) %>%
head(2) %>%
kable(row.names = F, padding = 0)
| key | summary | created | status_name | status_description | status_statuscategory_name |
|---|---|---|---|---|---|
| QTWB-60 | webkit-qtwe bkit-23/Source/WTF/wtf/dtoa/bignum.cc:762: suspicious increment ? | 2021-05-12 22:56:00 | Reported | The issue has been reported, but no validation has been done on it. | To Do |
| QTWB-58 | win7 touchscreen can’t click html-select dropdown list | 2021-04-08 09:09:00 | Reported | The issue has been reported, but no validation has been done on it. | To Do |
Please note that the JirAgileR project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.


During CocoaConf-2012-Raleigh, I discussed my PinchView from Laying out text with Core Text. It’s a text view that squeezes the glyphs towards your finger when you touch it. I built it to demonstrate per-glyph layout in Core Text. While demonstrating it, I was pretty unsatisfied with how it looked when you touched it or let go. When you drag your finger on the view, the glyphs move around like water. It’s quite pretty. But when you initially touch the screen, the glyphs suddenly jump to their new locations, and then they jump back when you release the screen. Well, that’s no good. So I wanted to add animations.
But here’s the thing: what do you animate? While you do want to animate the glyph positions, you’re not doing it directly. The location of each glyph is dependent on the location of the current touch. What you want to animate is how much the touch impacts the glyph positions. A quick look over CALayer’s list of animatable properties confirmed that there’s nothing like that. But no problem, I added a custom property called touchPointScale
and animated that. (I cover animating custom properties in the Layers chapter of iOS:PTL, and I still have to pull out that chapter every time to remind myself how to do it. Ole Begemann has a good, quick writeup on Stack Overflow.)
OK, so great. But one comment I got at CocoaConf was that it should handle multitouch. So I started playing with that, but now I had a problem. I could have lots of touches, so my single touchPointScale
doesn’t…er…scale. What I want to do is take a collection of TouchPoint
objects that the layer owns, animate each of their scales independently, and have the layer do its animation thing. But how do we animate based on changes in properties of things in a layer’s collection?
The sample code is available on github.
First, we have TouchPoint
objects. These are just trivial data objects. The identifier
here happens to be the address of the object, but it could be any unique string.
@interface TouchPoint : NSObject
@property (nonatomic, readwrite, strong) UITouch *touch;
@property (nonatomic, readwrite, assign) CGPoint point;
@property (nonatomic, readwrite, assign) CGFloat scale;
+ (TouchPoint *)touchPointForTouch:(UITouch *)touch inView:(UIView *)view scale:(CGFloat)scale;
- (NSString *)identifier;
@end
Then we have PinchTextLayer
, which has a collection of TouchPoint
objects:
@property (nonatomic, readwrite, strong) NSMutableDictionary *touchPointsForIdentifier;
The thing we want to animate is “the scale
of the touch point with a given identifier.” In order to animate something, it needs to be something you can call setValue:forKeyPath:
on. And that brings us to the power of KVC and dictionaries.
Say you have this code:
self.dict[@"somekey"] = @"somevalue";
You can also write that this way:
[self setValue:@"somevalue" <EMAIL_ADDRESS>And if you have this code:
<EMAIL_ADDRESS>= @"someValue";
You can write that this way:
[self setValue:@"somevalue" <EMAIL_ADDRESS>And that means that things held in dictionaries can be animated pretty easily because they can be accessed via setValue:forKeyPath:
. First, you need to tell the layer that changes on your dictionary impact drawing:
+ (BOOL)needsDisplayForKey:(NSString *)key {
if ([key isEqualToString:@"touchPointForIdentifier"]) {
return YES;
}
else {
return [super needsDisplayForKey:key];
}
}
This applies to all key paths that start with touchPointForIdentifier
. And because we’re not animating touchPointForIdentifier
itself, we don’t have to make it @dynamic
. We do need to copy it in initWithLayer:
of course:
- (id)initWithLayer:(id)layer {
self = [super initWithLayer:layer];
...
[self setTouchPointForIdentifier:[[layer touchPointForIdentifier] copy]];
return self;
}
And that’s just about it. We can now treat the key path “touchPointForIdentifier.<identifier>.scale” as an animatable property just like position
or opacity
.
- (void)addTouches:(NSSet *)touches inView:(UIView *)view scale:(CGFloat)scale {
for (UITouch *touch in touches) {
TouchPoint *touchPoint = [TouchPoint touchPointForTouch:touch inView:view scale:scale];
NSString *keyPath = [self touchPointScaleKeyPathForTouchPoint:touchPoint];
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:keyPath];
anim.fromValue = @0;
anim.toValue = @(touchPoint.scale);
[self addAnimation:anim forKey:keyPath];
[self.touchPointForIdentifier setObject:touchPoint forKey:touchPoint.identifier];
}
}
- (NSString *)touchPointScaleKeyPathForTouchPoint:(TouchPoint *)touchPoint {
return [NSString stringWithFormat<EMAIL_ADDRESS>touchPoint.identifier];
}
Side note: Along the way, I also developed a technique for animating custom properties (without any storage behind them, implemented by custom methods) by overriding setValue:forKeyPath:
. If you think that might be useful, you can see it in github, but so far I haven’t thought of any cases where it’s better than using the dictionary.


Two Michelin stars go to Thai restaurants in Thailand in a first
It is the first time restaurants in Thailand serving Thai cuisine have been given the recognition.
Two restaurants in Bangkok have earned a pair of coveted Michelin stars, the first time the leading guide has awarded the accolade to local establishments offering Thai cuisine.
The restaurants - Sorn and R-Haan - were upgraded from their previous one-star rating in the third edition of the Michelin guide in Thailand, unveiled on Tuesday in the capital.
Sorn celebrates traditional techniques and recipes from southern Thailand, where it sources from a network of small producers.
At the helm of R-Haan, Chef Chumpol offers food inspired by products from all regions of the kingdom.
No establishment won three stars in this 2020 edition, but three others retain two stars - the French restaurants Le Normandie and Mezzaluna, as well as Suhring, a restuarant owned by German twin brothers.
This year, some 29 establishments in Thailand received stars.
Gwendal Poullennec, international director of Michelin Guides, said the ratings showcased "Thailand's rich diversity and high quality of local produce".
Allegations of Eurocentrism
Thailand is already famed for its street food and Bangkok's curbside crab omelette standout Jay Fai retained its one star.
Despite criticism over its alleged Eurocentrism and focus on pricey restaurants, the red guide, created in 1900, remains a key reference in the world of the gastronomy.
Out of some 20,000 restaurants listed worldwide, only about 100 have achieved the highest distinction of "three stars".
Michelin covers Asia in Tokyo, Hong Kong and Macau, Shanghai, Seoul, Singapore, Taiwan and Bangkok.


{{ post.title }}
{{ post.excerpt }}
Since I eventually have to start documenting things, I figured this might be a good way to do it. So, here goes!
Currently my only really active project is my arduino-powered servo controller. The current "stable" data for this is located at tekdemo.github.com/project-sir-vo , which will at some point be located at it's project page.


The mass of the tetrahedron is given by:
$$
M =\iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \int_{x= 0}^{a} \int_{y = 0}^{b(1-\frac{x}{a})} \color{red}\int_\color{red}{z=0}^\color{red}{a(1-\frac{x}{a} - \frac{y}{b})} \rho(x,y,z) \,\color{red}d\color{red}z\,dy \,dx
$$
The inner integral is given by
$$
\int_{z=0}^{c(1-\frac{x}{a} - \frac{y}{b})}\rho(x,y,z) \,dz
$$
and is integrated over constant X and Y.
This corresponds to building a tower with the volume elements
The mass of the tetrahedron is given by:
$$
M =\iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \int_{x= 0}^{a} \color{red}\int_\color{red}{y = 0}^\color{red}{b(1-\frac{x}{a})} \int_{z=0}^{a(1-\frac{x}{a} - \frac{y}{b})} \rho(x,y,z) \,dz\,\color{red}d\color{red}y \,dx
$$
The middle integral is given by
$$
\int_{y = 0}^{b(1-\frac{x}{a})}\rho '(x,y),dy
$$
and is integrated over a constant X.
This corresponds to building a slice of cake with the tower elements
The mass of the tetrahedron is given by:
$$
M =\iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \color{red}\int_\color{red}{x= 0}^\color{red}{a} \int_{y = 0}^{b(1-\frac{x}{a})} \int_{z=0}^{a(1-\frac{x}{a} - \frac{y}{b})} \rho ''(x,y,z) \,dz\,dy \,\color{red}d\color{red}x
$$
The outer integral is given by
$$
\int_{x= 0}^{a}\rho''(x) \,dx
$$
and must be integrated between two constants.
This corresponds to building the tetrahedron with the slices.
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \int_{z= 0}^{c} \int_{y = 0}^{b(1-\frac{z}{c})} \color{red}\int_\color{red}{x=0}^\color{red}{a(1-\frac{y}{b} - \frac{z}{c})} \rho(x,y,z) \,\color{red}d\color{red}x\,dy \,dz
$$
The inner integral is given by
$$
\int_{x=0}^{a(1-\frac{y}{b} - \frac{z}{c})}\rho(x,y,z) \,dx
$$
and is integrated over constant Y and Z.
This corresponds to building a tower with the volume elements
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \int_{z= 0}^{c} \color{red}\int_\color{red}{y = 0}^\color{red}{b(1-\frac{z}{c})} \int_{x=0}^{a(1-\frac{y}{b} - \frac{z}{c})} \rho(x,y,z) \,dx\,\color{red}d\color{red}y \,dz
$$
The middle integral is given by
$$
\int_{y = 0}^{b(1-\frac{z}{c})}\rho '(y,z),dy
$$
and is integrated over a constant Z.
This corresponds to building a slice of cake with the tower elements
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \color{red}\int_\color{red}{z= 0}^\color{red}{c} \int_{y = 0}^{b(1-\frac{z}{c})} \int_{x=0}^{a(1-\frac{y}{b} - \frac{z}{c})} \rho(x,y,z) \,dx\,dy \,\color{red}d\color{red}z
$$
The outer integral is given by
$$
\int_{z= 0}^{a}\rho ''(z)\,dz
$$
and must be integrated between two constants.
This corresponds to building the tetrahedron with the slices.
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dy\,dz\,dx
= \int_{x= 0}^{a} \int_{z = 0}^{c(1-\frac{x}{a})} \color{red}\int_\color{red}{y=0}^\color{red}{b(1-\frac{x}{a} - \frac{z}{c})} \rho(x,y,z) \,\color{red}d\color{red}y\,dz \,dx
$$
The inner integral is given by
$$
\int_{y=0}^{b(1-\frac{x}{a} - \frac{z}{c})}\rho(x,y,z) \,dy
$$
and is integrated over constant X and Z.
This corresponds to building a tower with the volume elements
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dy\,dz\,dx
= \int_{x= 0}^{a} \color{red}\int_\color{red}{z = 0}^\color{red}{c(1-\frac{x}{a})} \int_{y=0}^{b(1-\frac{x}{a} - \frac{z}{c})} \rho(x,y,z) \,dy\,\color{red}d\color{red}z \,dx
$$
The middle integral is given by
$$
\int_{z = 0}^{c(1-\frac{x}{a})}\rho '(x,z),dz
$$
and is integrated over a constant X.
This corresponds to building a slice of cake with the tower elements
The mass of the tetrahedron is given by:
$$
M = \iiint_V \rho(x,y,z) \,dx\,dy\,dz
= \color{red}\int_\color{red}{x= 0}^\color{red}{a} \int_{z = 0}^{c(1-\frac{x}{a})} \int_{y=0}^{b(1-\frac{x}{a} - \frac{z}{c})} \rho(x,y,z) \,dy\,dz \,\color{red}d\color{red}x
$$
The outer integral is given by
$$
\int_{x= 0}^{a}\rho ''(x)\,dx
$$
and must be integrated between two constants.
This corresponds to building the tetrahedron with the slices.


TextStyleAddstyles - any named style listed below in Description
•
•
•
•
• Note To format or change the case of text, use the Lower, Upper, or Proper function (see Text functions).TextStyleAdd(“Plaid”;Italic) returns the word Plaid in italics.TextStyleAdd(FirstName;Bold+Underline) returns Sophie in bold, underlined text when the FirstName field contains Sophie.The following calculation creates two descriptions of styles, then concatenates two phrases using these styles. Using the Let function is an effective way to avoid creating a long and complex TextStyleAdd statement.In the following example, to find every occurrence of several words and change their style, use the Substitute function combined with the TextStyleAdd function.


Knowledge check
Question 1
Does the following applicant meet the basic eligibility requirements for the CPP retirement pension?
Select an answer and click the Submit button to submit your answer
Does the following applicant meet the basic eligibility requirements for the CPP retirement pension?
Select an answer and click the Submit button to submit your answer


Lynch has put together a number of sports-related community events since calling it quits, and he’s still also managed to remain relevant — participating in some games.
He recently did just that, playing in a charity soccer game, and raising hell during it, in true Beast Mode fashion. Lynch did it all — getting a red card, and also scoring a goal during the game.
It’s great to see Lynch is still the same exciting, entertainment guy he’s always been. Always fun to watch him on the field.


Yuli Fashion
Shop
Cart
The best styles in town
Pants
Shorts
Tops
Shoes
One Piece
Formal
Accessories
Dresses


of Medieval Incunabula
The Golden Mean, Modernist Layout and the Web
Hi, I'm Darren
@73rhodes
Bridgewater. Kindsight. Alcatel-Lucent. Shopify.
Telecom. AAA. Security. Mobile.
Mobile World Congress. Blackhat.
Canonical or Accidental
grids
templates
accidental?
wtf?
"Phisicorum", HMD Collection, c. 1485
University of Glasgow Collection, c. 1465
Gutenberg Bible, Johannes Gutenberg, c. 1455
unknown, 15th Century Germany
1902 - 1974
The Form of the Book
The Bauhaus School of Design, Dessau
1903 - 1966
Divina proporción tipográfica, Argentina, 1953
c. 1900
"Nieuwe berekening voor de vormgeving" in Tete, Amsterdam, 1946
Folio, Picardy, 33 pages, c. 1230
p. 29
View on Wikimedia CommonsA / B = (A + B) / A
φ = 1.61803398875Vitruvian Man, c. 1490
Vitruvian Man, c.1490
Di Architura
c.80 BC - c. 15 BC
Elements, c. 300 BC
"A straight line is said to have been cut in extreme and mean ratio when, as the whole line is to the greater segment, so is the greater to the lesser."
Timaeus, c.360 BC
"For whenever in any three numbers, whether cube or square, there is a mean, which is to the last term what the first term is to it; and again, when the mean is to the first term as the last term is to the mean—then the mean becoming first and last, and the first and last both becoming means, they will all of them of necessity come to be the same, and having become the same with one another will be all one"
a scrolling medium
Arbitrary text areas -
canons for book layout won't work
CSS grid systems
Phi.JS - Secret Canons on the Web
Thanks!


val game: String
The game that this pack is referring to (type)
game - The game that this pack is referring to (type)
game


Adwcleaner 7 3 Neowin
Download Adwcleaner
Adwcleaner 7 3 0 0 Free Download Onesoftwares
Adwcleaner 7 3 Crack With Activation Key 2019 Full Free
Malwarebytes Adwcleaner
Adwcleaner 7 3 Crack Plus Activation Key Free Download
Adwcleaner 7 3 0 0 For Pc Windows Download For Windows Filesoul Com
Download Adwcleaner Archives Sarocrack
Adwcleaner 7 3 0 0 Free Download Latest Is Here
Adwcleaner Pro 7 4 0 Free Download Get Into Pc
Download Malwarebytes Adwcleaner Majorgeeks
Adwcleaner 7 3 Download Free Adwcleaner 3 022 Exe
Malwarebytes Adwcleaner バージョン 7 3 がリリースされました 私のpc自作部屋
Adwcleaner 8 1 0 Crack Activation Key Download For Windows Mac
Download Adwcleaner 7 1 1 0 Free Filecombo
Malwarebytes Adwcleaner 8 2 Crack Is Here 2021 Bicfic
Adwcleaner 8 0 8 Crack Serial Key 2021 Download
Remove Adwcleaner The Remove Button Is Already Broken Malwarebytes Adwcleaner Malwarebytes Forums
Adwcleaner Pro 2019 Free Download
Chocolatey Software Adwcleaner Portable 8 2
Download Adwcleaner 8 1 For Windows Filehippo Com
Malwarebytes Acquires Adwcleaner Page 20 Windows 10 Forums
Download Malwarebytes Adwcleaner Older Versions
Adwcleaner Cleaner For Mac
Adwcleaner Pro 2019 Opened Free Download Softotornix


Defines | |
| #define | ADL_STEREO_SUPPORTED (1 << 2) |
| This value indicates that the workstation card supports active stereo though stereo output connector. | |
| #define | ADL_STEREO_BLUE_LINE (1 << 3) |
| This value indicates that the workstation card supports active stereo via "blue-line". | |
| #define | ADL_STEREO_OFF 0 |
| This value is used to turn off stereo mode. | |
| #define | ADL_STEREO_ACTIVE (1 << 1) |
| This value indicates that the workstation card supports active stereo. This is also used to set the stereo mode to active though the stereo output connector. | |
| #define | ADL_STEREO_AUTO_HORIZONTAL (1 << 30) |
| This value indicates that the workstation card supports auto-stereo monitors with horizontal interleave. This is also used to set the stereo mode to use the auto-stereo monitor with horizontal interleave. | |
| #define | ADL_STEREO_AUTO_VERTICAL (1 << 31) |
| This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave. | |
| #define | ADL_STEREO_PASSIVE (1 << 6) |
| This value indicates that the workstation card supports passive stereo, ie. non stereo sync. | |
| #define | ADL_STEREO_PASSIVE_HORIZ (1 << 7) |
| This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave. | |
| #define | ADL_STEREO_PASSIVE_VERT (1 << 8) |
| This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave. | |
| #define | ADL_STEREO_AUTO_SAMSUNG (1 << 11) |
| This value indicates that the workstation card supports auto-stereo monitors with Samsung. | |
| #define | ADL_STEREO_AUTO_TSL (1 << 12) |
| This value indicates that the workstation card supports auto-stereo monitors with Tridility. | |
| #define | ADL_DEEPBITDEPTH_10BPP_SUPPORTED (1 << 5) |
| This value indicates that the workstation card supports DeepBitDepth (10 bpp). | |
| #define | ADL_8BIT_GREYSCALE_SUPPORTED (1 << 9) |
| This value indicates that the workstation supports 8-Bit Grayscale. | |
| #define | ADL_CUSTOM_TIMING_SUPPORTED (1 << 10) |
| This value indicates that the workstation supports CUSTOM TIMING. | |
| #define | ADL_WORKSTATION_LOADBALANCING_SUPPORTED 0x00000001 |
| Load balancing is supported. | |
| #define | ADL_WORKSTATION_LOADBALANCING_AVAILABLE 0x00000002 |
| Load balancing is available. | |
| #define | ADL_WORKSTATION_LOADBALANCING_DISABLED 0x00000000 |
| Load balancing is disabled. | |
| #define | ADL_WORKSTATION_LOADBALANCING_ENABLED 0x00000001 |
| Load balancing is Enabled. |
| #define ADL_STEREO_SUPPORTED (1 << 2) |
This value indicates that the workstation card supports active stereo though stereo output connector.
| #define ADL_STEREO_BLUE_LINE (1 << 3) |
This value indicates that the workstation card supports active stereo via "blue-line".
| #define ADL_STEREO_OFF 0 |
This value is used to turn off stereo mode.
| #define ADL_STEREO_ACTIVE (1 << 1) |
This value indicates that the workstation card supports active stereo. This is also used to set the stereo mode to active though the stereo output connector.
| #define ADL_STEREO_AUTO_HORIZONTAL (1 << 30) |
This value indicates that the workstation card supports auto-stereo monitors with horizontal interleave. This is also used to set the stereo mode to use the auto-stereo monitor with horizontal interleave.
| #define ADL_STEREO_AUTO_VERTICAL (1 << 31) |
This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave.
| #define ADL_STEREO_PASSIVE (1 << 6) |
This value indicates that the workstation card supports passive stereo, ie. non stereo sync.
| #define ADL_STEREO_PASSIVE_HORIZ (1 << 7) |
This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave.
| #define ADL_STEREO_PASSIVE_VERT (1 << 8) |
This value indicates that the workstation card supports auto-stereo monitors with vertical interleave. This is also used to set the stereo mode to use the auto-stereo monitor with vertical interleave.
| #define ADL_STEREO_AUTO_SAMSUNG (1 << 11) |
This value indicates that the workstation card supports auto-stereo monitors with Samsung.
| #define ADL_STEREO_AUTO_TSL (1 << 12) |
This value indicates that the workstation card supports auto-stereo monitors with Tridility.
| #define ADL_DEEPBITDEPTH_10BPP_SUPPORTED (1 << 5) |
This value indicates that the workstation card supports DeepBitDepth (10 bpp).
| #define ADL_8BIT_GREYSCALE_SUPPORTED (1 << 9) |
This value indicates that the workstation supports 8-Bit Grayscale.
| #define ADL_CUSTOM_TIMING_SUPPORTED (1 << 10) |
This value indicates that the workstation supports CUSTOM TIMING.
| #define ADL_WORKSTATION_LOADBALANCING_SUPPORTED 0x00000001 |
Load balancing is supported.
| #define ADL_WORKSTATION_LOADBALANCING_AVAILABLE 0x00000002 |
Load balancing is available.
| #define ADL_WORKSTATION_LOADBALANCING_DISABLED 0x00000000 |
Load balancing is disabled.
| #define ADL_WORKSTATION_LOADBALANCING_ENABLED 0x00000001 |
Load balancing is Enabled.


fn main() { println!("Hello World!"); }
With standard linenums attribute
linenums
fn main() { println!("Hello stretched World!"); }
Using  in source requires a subs="none" attribute to the source block.

subs="none"
(def lazy-fib (concat [0 1] ((fn rfib [a b] (lazy-cons (+ a b) (rfib b (+ a b)))) 0 1)))
Highlights are using Asciidoctor syntax not reveal.js. Ex: 4..8,11 instead of 4-8,11.
4..8,11
4-8,11
import React, { useState } from 'react'; function Example() { const [count, setCount] = useState(0); return (

You clicked {count} times
 <button onClick={() => setCount(count + 1)}> Click me </button>
 ); }
Highlights are using Asciidoctor syntax not reveal.js. Ex: 1|2..3|4,6..10 instead of 1|2-3|4,6-10.
1|2..3|4,6..10
1|2-3|4,6-10
This is an example of a paragraph styled with `listing`. Notice that the monospace markup is preserved in the output.


Changes Feed¶
Polling¶
A list of changes made to documents in the database, in the order they were made, can be obtained from the database’s _changes resource. You can query the _changes resource by issuing a GET request with the following (optional) parameters:
| Parameter | Value | Default Value | Notes |
|---|---|---|---|
| since | seqnum / now | 0 | (1) |
| limit | maxsequences | none | (2) |
| descending | boolean | false | (3) |
| feed | normal / longpoll / continuous | normal | (4) |
| heartbeat | milliseconds | 60000 | (5) |
| timeout | milliseconds | 60000 | (6) |
| filter | designdoc/filtername / _view | none | (7) |
| include_docs | boolean | false | (8) |
| style | all_docs / main_only | main_only | (9) |
| view | designdoc/filtername | none | (10) |
Notes:
Start the results from the change immediately after the given sequence number.
Limit number of result rows to the specified value (note that using 0 here has the same effect as 1).
Return the change results in descending sequence order (most recent change first)
Select the type of feed.
Period in milliseconds after which an empty line is sent in the results. Only applicable for longpoll or continuous feeds. Overrides any timeout to keep the feed alive indefinitely.
Maximum period in milliseconds to wait for a change before the response is sent, even if there are no results. Only applicable for longpoll or continuous feeds. Note that 60000 is also the default maximum timeout to prevent undetected dead connections.
You can change the default maximum timeout in your ini-configuration:
[httpd] changes_timeout=#millisecs
Reference a filter function from a design document to selectively get updates. See the section in the book for more information.
Include the associated document with each result. If there are conflicts, only the winning revision is returned.
Specifies how many revisions are returned in the changes array. The default, main_only, will only return the current “winning” revision; all_docs will return all leaf revisions (including conflicts and deleted former conflicts.)
Allows to use view functions as filters. It requires to set filter special value _view to enable this feature. Documents counted as “passed” for view filter in case if map function emits at least one record for them.
Changed in version 0.11.0: added include_docs parameter
Changed in version 1.2.0: added view parameter and special value _view for filter one
Changed in version 1.3.0: since parameter could take now value to start listen changes since current seq number.
By default all changes are immediately returned as a JSON object:
GET /somedatabase/_changes HTTP/1.1
{"results":[
{"seq":1,"id":"fresh","changes":[{"rev":"1-967a00dff5e02add41819138abb3284d"}]},
{"seq":3,"id":"updated","changes":[{"rev":"2-7051cbe5c8faecd085a3fa619e6e6337"}]},
{"seq":5,"id":"deleted","changes":[{"rev":"2-eec205a9d413992850a6e32678485900"}],"deleted":true}
],
"last_seq":5}
results is the list of changes in sequential order. New and changed documents only differ in the value of the rev; deleted documents include the "deleted": true attribute. (In the style=all_docs mode, deleted applies only to the current/winning revision. The other revisions listed might be deleted even if there is no deleted property; you have to GET them individually to make sure.)
last_seq is the sequence number of the last update returned. (Currently it will always be the same as the seq of the last item in results.)
Sending a since param in the query string skips all changes up to and including the given sequence number:
GET /somedatabase/_changes?since=3 HTTP/1.1
{"results":[
{"seq":5,"id":"deleted","changes":[{"rev":"2-eec205a9d413992850a6e32678485900"}],"deleted":true}
],
"last_seq":5}
Long Polling¶
The longpoll feed (probably most useful used from a browser) is a more efficient form of polling that waits for a change to occur before the response is sent. longpoll avoids the need to frequently poll CouchDB to discover nothing has changed!
The response is basically the same JSON as is sent for the normal feed.
A timeout limits the maximum length of time the connection is open. If there are no changes before the timeout expires the response’s results will be an empty list.
Continuous¶
Polling the CouchDB server is not a good thing to do. Setting up new HTTP connections just to tell the client that nothing happened puts unnecessary strain on CouchDB.
A continuous feed stays open and connected to the database until explicitly closed and changes are sent to the client as they happen, i.e. in near real-time.
The continuous feed’s response is a little different than the other feed types to simplify the job of the client - each line of the response is either empty or a JSON object representing a single change, as found in the normal feed’s results.
GET /somedatabase/_changes?feed=continuous HTTP/1.1
{"seq":1,"id":"fresh","changes":[{"rev":"1-967a00dff5e02add41819138abb3284d"}]}
{"seq":3,"id":"updated","changes":[{"rev":"2-7051cbe5c8faecd085a3fa619e6e6337"}]}
{"seq":5,"id":"deleted","changes":[{"rev":"2-eec205a9d413992850a6e32678485900"}],"deleted":true}
... tum tee tum ...
{"seq":6,"id":"updated","changes":[{"rev":"3-825cb35de44c433bfb2df415563a19de"}]}
Obviously, ... tum tee tum ... does not appear in the actual response, but represents a long pause before the change with seq 6 occurred.
Filters¶
Classic filters¶
By default changes feed emits all database documents changes. But if you’re waiting for some special changes it’s not optimal to process each record.
Filters are special design document functions that allows changes feed to emit only specific documents that passed filter rules.
Let assume that our database is mailbox and we need to listen changes to handle only new mails (documents with status new). Assuming that, our filter function would looks like next one:
function(doc, req){
// we need only `mail` documents
if (doc.type != 'mail'){
return false;
}
// we're interested only in `new` ones
if (doc.status != 'new'){
return false;
}
return true; // passed!
}
Filter function must return true in fact if document passed all defined rules. Now, if you apply this function to changes feed, you’re changes feed will emit only changes about “new mail”:
GET /somedatabase/_changes?filter=mailbox/new_mail HTTP/1.1
{"results":[
{"seq":1,"id":"df8eca9da37dade42ee4d7aa3401f1dd","changes":[{"rev":"1-c2e0085a21d34fa1cecb6dc26a4ae657"}]},
{"seq":7,"id":"df8eca9da37dade42ee4d7aa34024714","changes":[{"rev":"1-29d748a6e87b43db967fe338bcb08d74"}]},
],
"last_seq":27}
Note, that last_seq number is 27, but we’d received only two records. Seems like any other changes was about documents, that hadn’t passed our filter.
Probably, we also need to filter changes feed of our mailbox not only by single status value: we also interested in statuses like “spam” to update spam-filter heuristic rules, “outgoing” to let mail daemon actually send mails and so on. Creating a lot of similar functions that actually does same work isn’t good idea - so we need dynamic filter to go.
If you have noted, filter functions takes second argument as request object - it allows to create dynamic filters based on query parameters, user context and more.
The dynamic version of our filter now will be next:
function(doc, req){
// we need only `mail` documents
if (doc.type != 'mail'){
return false;
}
// we're interested only in requested status
if (doc.status != req.query.status){
return false;
}
return true; // passed!
}
and now we have pass status query parameter in request to let filter match only required documents:
GET /somedatabase/_changes?filter=mailbox/by_status&status=new HTTP/1.1
{"results":[
{"seq":1,"id":"df8eca9da37dade42ee4d7aa3401f1dd","changes":[{"rev":"1-c2e0085a21d34fa1cecb6dc26a4ae657"}]},
{"seq":7,"id":"df8eca9da37dade42ee4d7aa34024714","changes":[{"rev":"1-29d748a6e87b43db967fe338bcb08d74"}]},
],
"last_seq":27}
and we can change filter behavior with easy:
GET /somedatabase/_changes?filter=mailbox/by_status&status=spam HTTP/1.1
{"results":[
{"seq":11,"id":"8960e91220798fc9f9d29d24ed612e0d","changes":[{"rev":"3-cc6ff71af716ddc2ba114967025c0ee0"}]},
],
"last_seq":27}
Combining filters with continuous feed allows to create powerful event-driven systems.
View filters¶
View filters are the same as classic one with one small difference: they used view map function instead to filter changes feed. Each time a value could be emitted, a change is returned. This allows to avoid creating filter functions that are mostly does same works as views.
To use them just specify _view value for filter parameter and designdoc/viewname for view one:
GET /somedatabase/_changes?filter=_view&view=dname/viewname HTTP/1.1
Note
Since view filters are uses map function as filter they couldn’t have dynamic behavior since request object is not available