TFRecordWriter
A class to write records to a TFRecords file.
tf.compat.v1.io.TFRecordWriter
tf.compat.v1.python_io.TFRecordWriter
tf.compat.v2.io.TFRecordWriter
This class implements __enter__
and __exit__
, and can be used
in with
blocks like a normal file.
__init__
__init__( path, options=None )
Opens file path
and creates a TFRecordWriter
writing to it.
path
: The path to the TFRecords file.options
: (optional) String specifying compression type,
TFRecordCompressionType
, or TFRecordOptions
object.IOError
: If path
cannot be opened for writing.ValueError
: If valid compression_type can't be determined from options
.__enter__
__enter__()
Enter a with
block.
__exit__
__exit__( unused_type, unused_value, unused_traceback )
Exit a with
block, closing the file.
close
close()
Close the file.
flush
flush()
Flush the file.
write
write(record)
Write a string record to the file.
record
: str


| Monospaced | Used for commands, HTTP request and responses and code blocks. |
|---|---|
| <Monospaced> | User entered values. |
| [Monospaced] | Optional values. When the value is not specified, the default value is used. |
| Italics | Important phrases and words. |
The HTTP REST API supports the complete FileSystem/FileContext interface for HDFS. The operations and the corresponding FileSystem/FileContext methods are shown in the next section. The Section HTTP Query Parameter Dictionary specifies the parameter details such as the defaults and the valid values.
The FileSystem scheme of WebHDFS is “webhdfs://”. A WebHDFS FileSystem URI has the following format.
webhdfs://<HOST>:<HTTP_PORT>/<PATH>
The above WebHDFS URI corresponds to the below HDFS URI.
hdfs://<HOST>:<RPC_PORT>/<PATH>
In the REST API, the prefix “/webhdfs/v1” is inserted in the path and a query is appended at the end. Therefore, the corresponding HTTP URL has the following format.
http://<HOST>:<HTTP_PORT>/webhdfs/v1/<PATH>?op=...
Note that if WebHDFS is secured with SSL, then the scheme should be “swebhdfs://”.
swebhdfs://<HOST>:<HTTP_PORT>/<PATH>
Below are the HDFS configuration options for WebHDFS.
| Property Name | Description |
|---|---|
| dfs.web.authentication.kerberos.principal | The HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint. The HTTP Kerberos principal MUST start with ‘HTTP/’ per Kerberos HTTP SPNEGO specification. A value of “*” will use all HTTP principals found in the keytab. |
| dfs.web.authentication.kerberos.keytab | The Kerberos keytab file with the credentials for the HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint. |
| dfs.webhdfs.socket.connect-timeout | How long to wait for a connection to be established before failing. Specified as a time duration, ie numerical value followed by a units symbol, eg 2m for two minutes. Defaults to 60s. |
| dfs.webhdfs.socket.read-timeout | How long to wait for data to arrive before failing. Defaults to 60s. |
When security is off, the authenticated user is the username specified in the user.name query parameter. If the user.name parameter is not set, the server may either set the authenticated user to a default web user, if there is any, or return an error response.
When security is on, authentication is performed by either Hadoop delegation token or Kerberos SPNEGO. If a token is set in the delegation query parameter, the authenticated user is the user encoded in the token. If the delegation parameter is not set, the user is authenticated by Kerberos SPNEGO.
Below are examples using the curl command tool.
Authentication when security is off:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]op=..."
Authentication using Kerberos SPNEGO when security is on:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
Authentication using Hadoop delegation token when security is on:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=..."
See also: Authentication for Hadoop HTTP web-consoles
Additionally, WebHDFS supports OAuth2 on the client side. The Namenode and Datanodes do not currently support clients using OAuth2 but other backends that implement the WebHDFS REST interface may.
WebHDFS supports two type of OAuth2 code grants (user-provided refresh and access token or user provided credential) by default and provides a pluggable mechanism for implementing other OAuth2 authentications per the OAuth2 RFC, or custom authentications. When using either of the provided code grant mechanisms, the WebHDFS client will refresh the access token as necessary.
OAuth2 should only be enabled for clients not running with Kerberos SPENGO.
| OAuth2 code grant mechanism | Description | Value of dfs.webhdfs.oauth2.access.token.provider that implements code grant |
|---|---|---|
| Authorization Code Grant | The user provides an initial access token and refresh token, which are then used to authenticate WebHDFS requests and obtain replacement access tokens, respectively. | org.apache.hadoop.hdfs.web.oauth2.ConfRefreshTokenBasedAccessTokenProvider |
| Client Credentials Grant | The user provides a credential which is used to obtain access tokens, which are then used to authenticate WebHDFS requests. | org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider |
The following properties control OAuth2 authentication.
| OAuth2 related property | Description |
|---|---|
| dfs.webhdfs.oauth2.enabled | Boolean to enable/disable OAuth2 authentication |
| dfs.webhdfs.oauth2.access.token.provider | Class name of an implementation of org.apache.hadoop.hdfs.web.oauth.AccessTokenProvider. Two are provided with the code, as described above, or the user may specify a user-provided implementation. The default value for this configuration key is the ConfCredentialBasedAccessTokenProvider implementation. |
| dfs.webhdfs.oauth2.client.id | Client id used to obtain access token with either credential or refresh token |
| dfs.webhdfs.oauth2.refresh.url | URL against which to post for obtaining bearer token with either credential or refresh token |
| dfs.webhdfs.oauth2.access.token | (required if using ConfRefreshTokenBasedAccessTokenProvider) Initial access token with which to authenticate |
| dfs.webhdfs.oauth2.refresh.token | (required if using ConfRefreshTokenBasedAccessTokenProvider) Initial refresh token to use to obtain new access tokens |
| dfs.webhdfs.oauth2.refresh.token.expires.ms.since.epoch | (required if using ConfRefreshTokenBasedAccessTokenProvider) Access token expiration measured in milliseconds since Jan 1, 1970. Note this is a different value than provided by OAuth providers and has been munged as described in interface to be suitable for a client application |
| dfs.webhdfs.oauth2.credential | (required if using ConfCredentialBasedAccessTokenProvider). Credential used to obtain initial and subsequent access tokens. |
When the proxy user feature is enabled, a proxy user P may submit a request on behalf of another user U. The username of U must be specified in the doas query parameter unless a delegation token is presented in authentication. In such case, the information of both users P and U must be encoded in the delegation token.
A proxy request when security is off:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]doas=<USER>&op=..."
A proxy request using Kerberos SPNEGO when security is on:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?doas=<USER>&op=..."
A proxy request using Hadoop delegation token when security is on:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=..."
WebHDFS supports an optional, configurable mechanism for cross-site request forgery (CSRF) prevention. When enabled, WebHDFS HTTP requests to the NameNode or DataNode must include a custom HTTP header. Configuration properties allow adjusting which specific HTTP methods are protected and the name of the HTTP header. The value sent in the header is not relevant. Only the presence of a header by that name is required.
Enabling CSRF prevention also sets up the WebHdfsFileSystem class to send the required header. This ensures that CLI commands like hdfs dfs and hadoop distcp continue to work correctly when used with webhdfs: URIs.
Enabling CSRF prevention also sets up the NameNode web UI to send the required header. After enabling CSRF prevention and restarting the NameNode, existing users of the NameNode web UI need to refresh the browser to reload the page and find the new configuration.
The following properties control CSRF prevention.
| Property | Description | Default Value |
|---|---|---|
| dfs.webhdfs.rest-csrf.enabled | If true, then enables WebHDFS protection against cross-site request forgery (CSRF). The WebHDFS client also uses this property to determine whether or not it needs to send the custom CSRF prevention header in its HTTP requests. | false |
| dfs.webhdfs.rest-csrf.custom-header | The name of a custom header that HTTP requests must send when protection against cross-site request forgery (CSRF) is enabled for WebHDFS by setting dfs.webhdfs.rest-csrf.enabled to true. The WebHDFS client also uses this property to determine whether or not it needs to send the custom CSRF prevention header in its HTTP requests. | X-XSRF-HEADER |
| dfs.webhdfs.rest-csrf.methods-to-ignore | A comma-separated list of HTTP methods that do not require HTTP requests to include a custom header when protection against cross-site request forgery (CSRF) is enabled for WebHDFS by setting dfs.webhdfs.rest-csrf.enabled to true. The WebHDFS client also uses this property to determine whether or not it needs to send the custom CSRF prevention header in its HTTP requests. | GET,OPTIONS,HEAD,TRACE |
| dfs.webhdfs.rest-csrf.browser-useragents-regex | A comma-separated list of regular expressions used to match against an HTTP request’s User-Agent header when protection against cross-site request forgery (CSRF) is enabled for WebHDFS by setting dfs.webhdfs.reset-csrf.enabled to true. If the incoming User-Agent matches any of these regular expressions, then the request is considered to be sent by a browser, and therefore CSRF prevention is enforced. If the request’s User-Agent does not match any of these regular expressions, then the request is considered to be sent by something other than a browser, such as scripted automation. In this case, CSRF is not a potential attack vector, so the prevention is not enforced. This helps achieve backwards-compatibility with existing automation that has not been updated to send the CSRF prevention header. | ^Mozilla.*,^Opera.* |
The following is an example curl call that uses the -H option to include the custom header in the request.
curl -i -L -X PUT -H 'X-XSRF-HEADER: ""' 'http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE'
WebHDFS supports an optional, configurable retry policy for resilient copy of large files that could timeout, or copy file between HA clusters that could failover during the copy.
The following properties control WebHDFS retry and failover policy.
| Property | Description | Default Value |
|---|---|---|
| dfs.http.client.retry.policy.enabled | If “true”, enable the retry policy of WebHDFS client. If “false”, retry policy is turned off. | false |
| dfs.http.client.retry.policy.spec | Specify a policy of multiple linear random retry for WebHDFS client, e.g. given pairs of number of retries and sleep time (n0, t0), (n1, t1), …, the first n0 retries sleep t0 milliseconds on average, the following n1 retries sleep t1 milliseconds on average, and so on. | 10000,6,60000,10 |
| dfs.http.client.failover.max.attempts | Specify the max number of failover attempts for WebHDFS client in case of network exception. | 15 |
| dfs.http.client.retry.max.attempts | Specify the max number of retry attempts for WebHDFS client, if the difference between retried attempts and failovered attempts is larger than the max number of retry attempts, there will be no more retries. | 10 |
| dfs.http.client.failover.sleep.base.millis | Specify the base amount of time in milliseconds upon which the exponentially increased sleep time between retries or failovers is calculated for WebHDFS client. | 500 |
| dfs.http.client.failover.sleep.max.millis | Specify the upper bound of sleep time in milliseconds between retries or failovers for WebHDFS client. | 15000 |
Step 1: Submit a HTTP PUT request without automatically following redirects and without sending the file data.
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE [&overwrite=<true |false>][&blocksize=<LONG>][&replication=<SHORT>] [&permission=<OCTAL>][&buffersize=<INT>][&noredirect=<true|false>]"
Usually the request is redirected to a datanode where the file data is to be written.
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE... Content-Length: 0
However, if you do not want to be automatically redirected, you can set the noredirect flag.
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."}
Step 2: Submit another HTTP PUT request using the URL in the Location header (or the returned response in case you specified noredirect) with the file data to be written.
curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."
The client receives a 201 Created response with zero content length and the WebHDFS URI of the file in the Location header:
HTTP/1.1 201 Created Location: webhdfs://<HOST>:<PORT>/<PATH> Content-Length: 0
If no permissions are specified, the newly created file will be assigned with default 644 permission. No umask mode will be applied from server side (so “fs.permissions.umask-mode” value configuration set on Namenode side will have no effect).
Note that the reason of having two-step create/append is for preventing clients to send out data before the redirect. This issue is addressed by the “Expect: 100-continue” header in HTTP/1.1; see RFC 2616, Section 8.2.3. Unfortunately, there are software library bugs (e.g. Jetty 6 HTTP server and Java 6 HTTP client), which do not correctly implement “Expect: 100-continue”. The two-step create/append is a temporary workaround for the software library bugs.
See also: overwrite, blocksize, replication, permission, buffersize, FileSystem.create
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=APPEND[&buffersize=<INT>][&noredirect=<true|false>]"
Usually the request is redirected to a datanode where the file data is to be appended:
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND... Content-Length: 0
However, if you do not want to be automatically redirected, you can set the noredirect flag.
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND..."}
curl -i -X POST -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND..."
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See the note in the previous section for the description of why this operation requires two steps.
See also: buffersize, FileSystem.append
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CONCAT&sources=<PATHS>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: sources, FileSystem.concat
curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN [&offset=<LONG>][&length=<LONG>][&buffersize=<INT>][&noredirect=<true|false>]"
Usually the request is redirected to a datanode where the file data can be read:
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=OPEN... Content-Length: 0
However if you do not want to be automatically redirected, you can set the noredirect flag.
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=OPEN..."}
The client follows the redirect to the datanode and receives the file data:
HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 22 Hello, webhdfs user!
See also: offset, length, buffersize, FileSystem.open
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=MKDIRS[&permission=<OCTAL>]"
The client receives a response with a boolean JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
If no permissions are specified, the newly created directory will have 755 permission as default. No umask mode will be applied from server side (so “fs.permissions.umask-mode” value configuration set on Namenode side will have no effect).
See also: permission, FileSystem.mkdirs
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATESYMLINK &destination=<PATH>[&createParent=<true |false>]"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: destination, createParent, FileSystem.createSymlink
curl -i -X PUT "<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAME&destination=<PATH>"
The client receives a response with a boolean JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
See also: destination, FileSystem.rename
curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE [&recursive=<true |false>]"
The client receives a response with a boolean JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
See also: recursive, FileSystem.delete
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=TRUNCATE&newlength=<LONG>"
The client receives a response with a boolean JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
See also: newlength, FileSystem.truncate
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS"
The client receives a response with a FileStatus JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "FileStatus": { "accessTime" : 0, "blockSize" : 0, "group" : "supergroup", "length" : 0, //in bytes, zero for directories "modificationTime":<PHONE_NUMBER>227, "owner" : "webuser", "pathSuffix" : "", "permission" : "777", "replication" : 0, "snapshotEnabled" : true "type" : "DIRECTORY" //enum {FILE, DIRECTORY, SYMLINK} } }
See also: FileSystem.getFileStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS"
The client receives a response with a FileStatuses JSON object:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 427 { "FileStatuses": { "FileStatus": [ { "accessTime" :<PHONE_NUMBER>771, "blockSize" : 33554432, "childrenNum" : 0, "fileId" : 16388, "group" : "supergroup", "length" : 24930, "modificationTime":<PHONE_NUMBER>771, "owner" : "webuser", "pathSuffix" : "a.patch", "permission" : "644", "replication" : 1, "storagePolicy" : 0, "type" : "FILE" }, { "accessTime" : 0, "blockSize" : 0, "childrenNum" : 0, "fileId" : 16389, "group" : "supergroup", "length" : 0, "modificationTime":<PHONE_NUMBER>256, "owner" : "username", "pathSuffix" : "bar", "permission" : "711", "replication" : 0, "snapshotEnabled" : true "type" : "DIRECTORY" }, ... ] } }
See also: FileSystem.listStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS"
The client receives a response with a FileStatuses JSON object:
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 427 { "FileStatuses": { "FileStatus": [ { "accessTime" :<PHONE_NUMBER>771, "blockSize" : 33554432, "childrenNum" : 0, "fileId" : 16390, "group" : "supergroup", "length" : 1366, "modificationTime":<PHONE_NUMBER>062, "owner" : "webuser", "pathSuffix" : "", "permission" : "644", "replication" : 1, "storagePolicy" : 0, "type" : "FILE" } ] } }
See also: FileSystem.listStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS_BATCH&startAfter=<CHILD>"
The client receives a response with a DirectoryListing JSON object, which contains a FileStatuses JSON object, as well as iteration information:
HTTP/1.1 200 OK Cache-Control: no-cache Expires: Thu, 08 Sep 2016 03:40:38 GMT Date: Thu, 08 Sep 2016 03:40:38 GMT Pragma: no-cache Expires: Thu, 08 Sep 2016 03:40:38 GMT Date: Thu, 08 Sep 2016 03:40:38 GMT Pragma: no-cache Content-Type: application/json X-FRAME-OPTIONS: SAMEORIGIN Transfer-Encoding: chunked Server: Jetty(6.1.26) { "DirectoryListing": { "partialListing": { "FileStatuses": { "FileStatus": [ { "accessTime": 0, "blockSize": 0, "childrenNum": 0, "fileId": 16387, "group": "supergroup", "length": 0, "modificationTime":<PHONE_NUMBER>563, "owner": "andrew", "pathSuffix": "bardir", "permission": "755", "replication": 0, "storagePolicy": 0, "type": "DIRECTORY" }, { "accessTime":<PHONE_NUMBER>945, "blockSize": 1024, "childrenNum": 0, "fileId": 16388, "group": "supergroup", "length": 0, "modificationTime":<PHONE_NUMBER>965, "owner": "andrew", "pathSuffix": "bazfile", "permission": "644", "replication": 3, "storagePolicy": 0, "type": "FILE" } ] } }, "remainingEntries": 2 } }
If remainingEntries is non-zero, there are additional entries in the directory. To query the next batch, set the startAfter parameter to the pathSuffix of the last item returned in the current batch. For example:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS_BATCH&startAfter=bazfile"
Which will return the next batch of directory entries:
HTTP/1.1 200 OK Cache-Control: no-cache Expires: Thu, 08 Sep 2016 03:43:20 GMT Date: Thu, 08 Sep 2016 03:43:20 GMT Pragma: no-cache Expires: Thu, 08 Sep 2016 03:43:20 GMT Date: Thu, 08 Sep 2016 03:43:20 GMT Pragma: no-cache Content-Type: application/json X-FRAME-OPTIONS: SAMEORIGIN Transfer-Encoding: chunked Server: Jetty(6.1.26) { "DirectoryListing": { "partialListing": { "FileStatuses": { "FileStatus": [ { "accessTime": 0, "blockSize": 0, "childrenNum": 0, "fileId": 16386, "group": "supergroup", "length": 0, "modificationTime":<PHONE_NUMBER>951, "owner": "andrew", "pathSuffix": "foodir", "permission": "755", "replication": 0, "storagePolicy": 0, "type": "DIRECTORY" }, { "accessTime":<PHONE_NUMBER>864, "blockSize": 1024, "childrenNum": 0, "fileId": 16389, "group": "supergroup", "length": 0, "modificationTime":<PHONE_NUMBER>878, "owner": "andrew", "pathSuffix": "quxfile", "permission": "644", "replication": 3, "storagePolicy": 0, "type": "FILE" } ] } }, "remainingEntries": 0 } }
Batch size is controlled by the dfs.ls.limit option on the NameNode.
See also: FileSystem.listStatusIterator
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETCONTENTSUMMARY"
The client receives a response with a ContentSummary JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "ContentSummary": { "directoryCount": 2, "fileCount" : 1, "length" : 24930, "quota" : -1, "spaceConsumed" : 24930, "spaceQuota" : -1, "typeQuota": { "ARCHIVE": { "consumed": 500, "quota": 10000 }, "DISK": { "consumed": 500, "quota": 10000 }, "SSD": { "consumed": 500, "quota": 10000 } } } }
See also: FileSystem.getContentSummary
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM"
Usually the request is redirected to a datanode:
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM... Content-Length: 0
However, if you do not want to be automatically redirected, you can set the noredirect flag.
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM..."}
The client follows the redirect to the datanode and receives a FileChecksum JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "FileChecksum": { "algorithm": "MD5-of-1MD5-of-512CRC32", "bytes" : "eadb10de24aa315748930df6e185c0d ...", "length" : 28 } }
See also: FileSystem.getFileChecksum
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETHOMEDIRECTORY"
The client receives a response with a Path JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username"}
See also: FileSystem.getHomeDirectory
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETTRASHROOT"
The client receives a response with a Path JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username/.Trash"}
if the path is an encrypted zone path and user has permission of the path, the client receives a response like this:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/PATH/.Trash/username"}
See also: FileSystem.getTrashRoot
For more details about trash root in an encrypted zone, please refer to Transparent Encryption Guide.
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETPERMISSION [&permission=<OCTAL>]"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: permission, FileSystem.setPermission
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETOWNER [&owner=<USER>][&group=<GROUP>]"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: owner, group, FileSystem.setOwner
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETREPLICATION [&replication=<SHORT>]"
The client receives a response with a boolean JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
See also: replication, FileSystem.setReplication
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETTIMES [&modificationtime=<TIME>][&accesstime=<TIME>]"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: modificationtime, accesstime, FileSystem.setTimes
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=MODIFYACLENTRIES &aclspec=<ACLSPEC>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.modifyAclEntries
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEACLENTRIES &aclspec=<ACLSPEC>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.removeAclEntries
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEDEFAULTACL"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.removeDefaultAcl
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEACL"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.removeAcl
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETACL &aclspec=<ACLSPEC>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.setAcl
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETACLSTATUS"
The client receives a response with a AclStatus JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "AclStatus": { "entries": [ "user:carla:rw-", "group::r-x" ], "group": "supergroup", "owner": "hadoop", "permission":"775", "stickyBit": false } }
See also: FileSystem.getAclStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CHECKACCESS &fsaction=<FSACTION>
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.access
curl -i "http://<HOST>:<PORT>/webhdfs/v1?op=GETALLSTORAGEPOLICY"
The client receives a response with a BlockStoragePolicies JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "BlockStoragePolicies": { "BlockStoragePolicy": [ { "copyOnCreateFile": false, "creationFallbacks": [], "id": 2, "name": "COLD", "replicationFallbacks": [], "storageTypes": ["ARCHIVE"] }, { "copyOnCreateFile": false, "creationFallbacks": ["DISK","ARCHIVE"], "id": 5, "name": "WARM", "replicationFallbacks": ["DISK","ARCHIVE"], "storageTypes": ["DISK","ARCHIVE"] }, { "copyOnCreateFile": false, "creationFallbacks": [], "id": 7, "name": "HOT", "replicationFallbacks": ["ARCHIVE"], "storageTypes": ["DISK"] }, { "copyOnCreateFile": false, "creationFallbacks": ["SSD","DISK"], "id": 10,"name": "ONE_SSD", "replicationFallbacks": ["SSD","DISK"], "storageTypes": ["SSD","DISK"] }, { "copyOnCreateFile": false, "creationFallbacks": ["DISK"], "id": 12, "name": "ALL_SSD", "replicationFallbacks": ["DISK"], "storageTypes": ["SSD"] }, { "copyOnCreateFile": true, "creationFallbacks": ["DISK"], "id": 15, "name": "LAZY_PERSIST", "replicationFallbacks": ["DISK"], "storageTypes": ["RAM_DISK","DISK"] } ] } }
See also: FileSystem.getAllStoragePolicies
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETSTORAGEPOLICY &storagepolicy=<policy>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.setStoragePolicy
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=UNSETSTORAGEPOLICY"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.unsetStoragePolicy
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETSTORAGEPOLICY"
The client receives a response with a BlockStoragePolicy JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "BlockStoragePolicy": { "copyOnCreateFile": false, "creationFallbacks": [], "id":7, "name":"HOT", "replicationFallbacks":["ARCHIVE"], "storageTypes":["DISK"] } }
See also: FileSystem.getStoragePolicy
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETXATTR &xattr.name=<XATTRNAME>&xattr.value=<XATTRVALUE> &flag=<FLAG>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.setXAttr
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEXATTR &xattr.name=<XATTRNAME>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.removeXAttr
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &xattr.name=<XATTRNAME>&encoding=<ENCODING>"
The client receives a response with a XAttrs JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME", "value":"XATTRVALUE" } ] }
See also: FileSystem.getXAttr
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &xattr.name=<XATTRNAME1>&xattr.name=<XATTRNAME2> &encoding=<ENCODING>"
The client receives a response with a XAttrs JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME1", "value":"XATTRVALUE1" }, { "name":"XATTRNAME2", "value":"XATTRVALUE2" } ] }
See also: FileSystem.getXAttrs
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &encoding=<ENCODING>"
The client receives a response with a XAttrs JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME1", "value":"XATTRVALUE1" }, { "name":"XATTRNAME2", "value":"XATTRVALUE2" }, { "name":"XATTRNAME3", "value":"XATTRVALUE3" } ] }
See also: FileSystem.getXAttrs
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTXATTRS"
The client receives a response with a XAttrNames JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrNames":"[\"XATTRNAME1\",\"XATTRNAME2\",\"XATTRNAME3\"]" }
See also: FileSystem.listXAttrs
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATESNAPSHOT[&snapshotname=<SNAPSHOTNAME>]"
The client receives a response with a Path JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username/.snapshot/s1"}
See also: FileSystem.createSnapshot
curl -i -X DELETE "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=DELETESNAPSHOT&snapshotname=<SNAPSHOTNAME>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.deleteSnapshot
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAMESNAPSHOT &oldsnapshotname=<SNAPSHOTNAME>&snapshotname=<SNAPSHOTNAME>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: FileSystem.renameSnapshot
curl -i GET "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETSNAPSHOTDIFF &oldsnapshotname=<SNAPSHOTNAME>&snapshotname=<SNAPSHOTNAME>"
The client receives a response with a SnapshotDiffReport JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"SnapshotDiffReport":{"diffList":[],"fromSnapshot":"s3","snapshotRoot":"/foo","toSnapshot":"s4"}}
curl -i GET "http://<HOST>:<PORT>/webhdfs/v1/?user.name=<USER>&op=GETSNAPSHOTTABLEDIRECTORYLIST"
If the USER is not the hdfs super user, the call lists only the snapshottable directories owned by the user. If the USER is the hdfs super user, the call lists all the snapshottable directories. The client receives a response with a SnapshottableDirectoryList JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "SnapshottableDirectoryList": [ { "dirStatus": { "accessTime":0, "blockSize":0, "childrenNum":0, "fileId":16386, "group":"hadoop", "length":0, "modificationTime":1520761889225, "owner":"random", "pathSuffix":"bar", "permission":"755", "replication":0, "storagePolicy":0, "type":"DIRECTORY" }, "parentFullPath":"/", "snapshotNumber":0, "snapshotQuota":65536 } ] }
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETDELEGATIONTOKEN [&renewer=<USER>][&service=<SERVICE>][&kind=<KIND>]"
The client receives a response with a Token JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "Token": { "urlString": "JQAIaG9y..." } }
See also: renewer, FileSystem.getDelegationToken, kind, service
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=RENEWDELEGATIONTOKEN&token=<TOKEN>"
The client receives a response with a long JSON object:
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"long":<PHONE_NUMBER>997} //the new expiration time
See also: token, DelegationTokenAuthenticator.renewDelegationToken
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=CANCELDELEGATIONTOKEN&token=<TOKEN>"
The client receives a response with zero content length:
HTTP/1.1 200 OK Content-Length: 0
See also: token, DelegationTokenAuthenticator.cancelDelegationToken
When an operation fails, the server may throw an exception. The JSON schema of error responses is defined in RemoteException JSON Schema. The table below shows the mapping from exceptions to HTTP response codes.
| Exceptions | HTTP Response Codes |
|---|---|
| IllegalArgumentException | 400 Bad Request |
| UnsupportedOperationException | 400 Bad Request |
| SecurityException | 401 Unauthorized |
| IOException | 403 Forbidden |
| FileNotFoundException | 404 Not Found |
| RuntimeException | 500 Internal Server Error |
Below are examples of exception responses.
HTTP/1.1 400 Bad Request Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "IllegalArgumentException", "javaClassName": "java.lang.IllegalArgumentException", "message" : "Invalid value for webhdfs parameter \"permission\": ..." } }
HTTP/1.1 401 Unauthorized Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "SecurityException", "javaClassName": "java.lang.SecurityException", "message" : "Failed to obtain user group information: ..." } }
All operations, except for OPEN, either return a zero-length response or a JSON response. For OPEN, the response is an octet-stream. The JSON schemas are shown below. See draft-zyp-json-schema-03 for the syntax definitions of the JSON schemas.
Note that the default value of additionalProperties is an empty schema which allows any value for additional properties. Therefore, all WebHDFS JSON responses allow any additional property. However, if additional properties are included in the responses, they are considered as optional properties in order to maintain compatibility.
{ "name" : "AclStatus", "properties": { "AclStatus": { "type" : "object", "properties": { "entries": { "type": "array", "items": { "description": "ACL entry.", "type": "string" } }, "group": { "description": "The group owner.", "type" : "string", "required" : true }, "owner": { "description": "The user who is the owner.", "type" : "string", "required" : true }, "stickyBit": { "description": "True if the sticky bit is on.", "type" : "boolean", "required" : true } } } } }
{ "name" : "XAttrs", "properties": { "XAttrs": { "type" : "array", "items": { "type" : "object", "properties": { "name": { "description": "XAttr name.", "type" : "string", "required" : true }, "value": { "description": "XAttr value.", "type" : "string" } } } } } }
{ "name" : "XAttrNames", "properties": { "XAttrNames": { "description": "XAttr names.", "type" : "string", "required" : true } } }
{ "name" : "boolean", "properties": { "boolean": { "description": "A boolean value", "type" : "boolean", "required" : true } } }
See also: MKDIRS, RENAME, DELETE, SETREPLICATION
{ "name" : "ContentSummary", "properties": { "ContentSummary": { "type" : "object", "properties": { "directoryCount": { "description": "The number of directories.", "type" : "integer", "required" : true }, "fileCount": { "description": "The number of files.", "type" : "integer", "required" : true }, "length": { "description": "The number of bytes used by the content.", "type" : "integer", "required" : true }, "quota": { "description": "The namespace quota of this directory.", "type" : "integer", "required" : true }, "spaceConsumed": { "description": "The disk space consumed by the content.", "type" : "integer", "required" : true }, "spaceQuota": { "description": "The disk space quota.", "type" : "integer", "required" : true }, "typeQuota": { "type" : "object", "properties": { "ARCHIVE": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "DISK": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "SSD": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } } } } } } } }
See also: GETCONTENTSUMMARY
{ "name" : "FileChecksum", "properties": { "FileChecksum": { "type" : "object", "properties": { "algorithm": { "description": "The name of the checksum algorithm.", "type" : "string", "required" : true }, "bytes": { "description": "The byte sequence of the checksum in hexadecimal.", "type" : "string", "required" : true }, "length": { "description": "The length of the bytes (not the length of the string).", "type" : "integer", "required" : true } } } } }
{ "name" : "FileStatus", "properties": { "FileStatus": fileStatusProperties //See FileStatus Properties } }
See also: FileStatus Properties, GETFILESTATUS, FileStatus
JavaScript syntax is used to define fileStatusProperties so that it can be referred in both FileStatus and FileStatuses JSON schemas.
var fileStatusProperties = { "type" : "object", "properties": { "accessTime": { "description": "The access time.", "type" : "integer", "required" : true }, "blockSize": { "description": "The block size of a file.", "type" : "integer", "required" : true }, "group": { "description": "The group owner.", "type" : "string", "required" : true }, "length": { "description": "The number of bytes in a file.", "type" : "integer", "required" : true }, "modificationTime": { "description": "The modification time.", "type" : "integer", "required" : true }, "owner": { "description": "The user who is the owner.", "type" : "string", "required" : true }, "pathSuffix": { "description": "The path suffix.", "type" : "string", "required" : true }, "permission": { "description": "The permission represented as a octal string.", "type" : "string", "required" : true }, "replication": { "description": "The number of replication of a file.", "type" : "integer", "required" : true }, "symlink": //an optional property { "description": "The link target of a symlink.", "type" : "string" }, "type": { "description": "The type of the path object.", "enum" : ["FILE", "DIRECTORY", "SYMLINK"], "required" : true } } };
A FileStatuses JSON object represents an array of FileStatus JSON objects.
{ "name" : "FileStatuses", "properties": { "FileStatuses": { "type" : "object", "properties": { "FileStatus": { "description": "An array of FileStatus", "type" : "array", "items" : fileStatusProperties //See FileStatus Properties } } } } }
See also: FileStatus Properties, LISTSTATUS, FileStatus
A DirectoryListing JSON object represents a batch of directory entries while iteratively listing a directory. It contains a FileStatuses JSON object as well as iteration information.
{ "name" : "DirectoryListing", "properties": { "DirectoryListing": { "type" : "object", "properties": { "partialListing": { "description": "A partial directory listing", "type" : "object", // A FileStatuses object "required" : true }, "remainingEntries": { "description": "Number of remaining entries", "type" : "integer", "required" : true } } } } }
See also: FileStatuses JSON Schema, LISTSTATUS_BATCH, FileStatus
{ "name" : "long", "properties": { "long": { "description": "A long integer value", "type" : "integer", "required" : true } } }
See also: RENEWDELEGATIONTOKEN,
{ "name" : "Path", "properties": { "Path": { "description": "The string representation a Path.", "type" : "string", "required" : true } } }
See also: GETHOMEDIRECTORY, Path
{ "name" : "RemoteException", "properties": { "RemoteException": { "type" : "object", "properties": { "exception": { "description": "Name of the exception", "type" : "string", "required" : true }, "message": { "description": "Exception message", "type" : "string", "required" : true }, "javaClassName": //an optional property { "description": "Java class name of the exception", "type" : "string" } } } } }
See also: Error Responses
{ "name" : "Token", "properties": { "Token": tokenProperties //See Token Properties } }
See also: Token Properties, GETDELEGATIONTOKEN, the note in Delegation.
JavaScript syntax is used to define tokenProperties so that it can be referred in Token JSON schema.
var tokenProperties = { "type" : "object", "properties": { "urlString": { "description": "A delegation token encoded as a URL safe string.", "type" : "string", "required" : true } } }
See also: Token Properties, the note in Delegation.
{ "name" : "BlockStoragePolicy", "properties": { "BlockStoragePolicy": blockStoragePolicyProperties //See BlockStoragePolicy Properties } }
See also: BlockStoragePolicy Properties, GETSTORAGEPOLICY
JavaScript syntax is used to define blockStoragePolicyProperties so that it can be referred in both BlockStoragePolicy and BlockStoragePolicies JSON schemas.
var blockStoragePolicyProperties = { "type" : "object", "properties": { "id": { "description": "Policy ID.", "type" : "integer", "required" : true }, "name": { "description": "Policy name.", "type" : "string", "required" : true }, "storageTypes": { "description": "An array of storage types for block placement.", "type" : "array", "required" : true "items" : { "type": "string" } }, "replicationFallbacks": { "description": "An array of fallback storage types for replication.", "type" : "array", "required" : true "items" : { "type": "string" } }, "creationFallbacks": { "description": "An array of fallback storage types for file creation.", "type" : "array", "required" : true "items" : { "type": "string" } }, "copyOnCreateFile": { "description": "If set then the policy cannot be changed after file creation.", "type" : "boolean", "required" : true } } };
A BlockStoragePolicies JSON object represents an array of BlockStoragePolicy JSON objects.
{ "name" : "BlockStoragePolicies", "properties": { "BlockStoragePolicies": { "type" : "object", "properties": { "BlockStoragePolicy": { "description": "An array of BlockStoragePolicy", "type" : "array", "items" : blockStoragePolicyProperties //See BlockStoragePolicy Properties } } } } }
{ "name": "SnapshotDiffReport", "type": "object", "properties": { "SnapshotDiffReport": { "type" : "object", "properties" : { "diffList": { "description": "An array of DiffReportEntry", "type" : "array", "items" : diffReportEntries, "required" : true }, "fromSnapshot": { "description": "Source snapshot", "type" : "string", "required" : true }, "snapshotRoot": { "description" : "String representation of snapshot root path", "type" : "string", "required" : true }, "toSnapshot": { "description" : "Destination snapshot", "type" : "string", "required" : true } } } } }
JavaScript syntax is used to define diffReportEntries so that it can be referred in SnapshotDiffReport JSON schema.
var diffReportEntries = { "type": "object", "properties": { "sourcePath": { "description" : "Source path name relative to snapshot root", "type" : "string", "required" : true }, "targetPath": { "description" : "Target path relative to snapshot root used for renames", "type" : "string", "required" : true }, "type": { "description" : "Type of diff report entry", "enum" : ["CREATE", "MODIFY", "DELETE", "RENAME"], "required" : true } } }
{ "name": "SnapshottableDirectoryList", "type": "object", "properties": { "SnapshottableDirectoryList": { "description": "An array of SnapshottableDirectoryStatus", "type" : "array", "items" : snapshottableDirectoryStatus, "required" : true } } }
JavaScript syntax is used to define snapshottableDirectoryStatus so that it can be referred in SnapshottableDirectoryList JSON schema.
var snapshottableDirectoryStatus = { "type": "object", "properties": { "dirStatus": fileStatusProperties, "parentFullPath": { "description" : "Full path of the parent of snapshottable directory", "type" : "string", "required" : true }, "snapshotNumber": { "description" : "Number of snapshots created on the snapshottable directory", "type" : "integer", "required" : true }, "snapshotQuota": { "description" : "Total number of snapshots allowed on the snapshottable directory", "type" : "integer", "required" : true } } }
| Name | aclspec |
|---|---|
| Description | The ACL spec included in ACL modification operations. |
| Type | String |
| Default Value | <empty> |
| Valid Values | See Permissions and HDFS. |
| Syntax | See Permissions and HDFS. |
| Name | xattr.name |
|---|---|
| Description | The XAttr name of a file/directory. |
| Type | String |
| Default Value | <empty> |
| Valid Values | Any string prefixed with user./trusted./system./security.. |
| Syntax | Any string prefixed with user./trusted./system./security.. |
| Name | xattr.value |
|---|---|
| Description | The XAttr value of a file/directory. |
| Type | String |
| Default Value | <empty> |
| Valid Values | An encoded value. |
| Syntax | Enclosed in double quotes or prefixed with 0x or 0s. |
See also: Extended Attributes
| Name | flag |
|---|---|
| Description | The XAttr set flag. |
| Type | String |
| Default Value | <empty> |
| Valid Values | CREATE,REPLACE. |
| Syntax | CREATE,REPLACE. |
See also: Extended Attributes
| Name | encoding | ||
|---|---|---|---|
| Description | The XAttr value encoding. | ||
| Type | String | ||
| Default Value | <empty> | ||
| Valid Values | text | hex | base64 |
| Syntax | text | hex | base64 |
See also: Extended Attributes
| Name | accesstime |
|---|---|
| Description | The access time of a file/directory. |
| Type | long |
| Default Value | -1 (means keeping it unchanged) |
| Valid Values | -1 or a timestamp |
| Syntax | Any integer. |
See also: SETTIMES
| Name | blocksize |
|---|---|
| Description | The block size of a file. |
| Type | long |
| Default Value | Specified in the configuration. |
| Valid Values | > 0 |
| Syntax | Any integer. |
See also: CREATE
| Name | buffersize |
|---|---|
| Description | The size of the buffer used in transferring data. |
| Type | int |
| Default Value | Specified in the configuration. |
| Valid Values | > 0 |
| Syntax | Any integer. |
| Name | createflag |
|---|---|
| Description | Enum of possible flags to process while creating a file |
| Type | enumerated strings |
| Default Value | <empty> |
| Valid Values | Legal combinations of create, overwrite, append and sync_block |
| Syntax | See note below |
The following combinations are not valid: * append,create * create,append,overwrite
See also: CREATE
| Name | createparent |
|---|---|
| Description | If the parent directories do not exist, should they be created? |
| Type | boolean |
| Default Value | true |
| Valid Values | true, false |
| Syntax | true |
See also: CREATESYMLINK
| Name | delegation |
|---|---|
| Description | The delegation token used for authentication. |
| Type | String |
| Default Value | <empty> |
| Valid Values | An encoded token. |
| Syntax | See the note below. |
Note that delegation tokens are encoded as a URL safe string; see encodeToUrlString() and decodeFromUrlString(String) in org.apache.hadoop.security.token.Token for the details of the encoding.
See also: Authentication
| Name | destination |
|---|---|
| Description | The destination path. |
| Type | Path |
| Default Value | <empty> (an invalid path) |
| Valid Values | An absolute FileSystem path without scheme and authority. |
| Syntax | Any path. |
See also: CREATESYMLINK, RENAME
| Name | doas |
|---|---|
| Description | Allowing a proxy user to do as another user. |
| Type | String |
| Default Value | null |
| Valid Values | Any valid username. |
| Syntax | Any string. |
See also: Proxy Users
| Name | fsaction |
|---|---|
| Description | File system operation read/write/execute |
| Type | String |
| Default Value | null (an invalid value) |
| Valid Values | Strings matching regex pattern "[r-][w-][x-] " |
| Syntax | "[r-][w-][x-] " |
See also: CHECKACCESS,
| Name | group |
|---|---|
| Description | The name of a group. |
| Type | String |
| Default Value | <empty> (means keeping it unchanged) |
| Valid Values | Any valid group name. |
| Syntax | Any string. |
See also: SETOWNER
| Name | length |
|---|---|
| Description | The number of bytes to be processed. |
| Type | long |
| Default Value | null (means the entire file) |
| Valid Values | >= 0 or null |
| Syntax | Any integer. |
See also: OPEN
| Name | modificationtime |
|---|---|
| Description | The modification time of a file/directory. |
| Type | long |
| Default Value | -1 (means keeping it unchanged) |
| Valid Values | -1 or a timestamp |
| Syntax | Any integer. |
See also: SETTIMES
| Name | newlength |
|---|---|
| Description | The size the file is to be truncated to. |
| Type | long |
| Valid Values | >= 0 |
| Syntax | Any long. |
| Name | offset |
|---|---|
| Description | The starting byte position. |
| Type | long |
| Default Value | 0 |
| Valid Values | >= 0 |
| Syntax | Any integer. |
See also: OPEN
| Name | oldsnapshotname |
|---|---|
| Description | The old name of the snapshot to be renamed. |
| Type | String |
| Default Value | null |
| Valid Values | An existing snapshot name. |
| Syntax | Any string. |
See also: RENAMESNAPSHOT
| Name | op |
|---|---|
| Description | The name of the operation to be executed. |
| Type | enum |
| Default Value | null (an invalid value) |
| Valid Values | Any valid operation name. |
| Syntax | Any string. |
See also: Operations
| Name | overwrite |
|---|---|
| Description | If a file already exists, should it be overwritten? |
| Type | boolean |
| Default Value | false |
| Valid Values | true |
| Syntax | true |
See also: CREATE
| Name | owner |
|---|---|
| Description | The username who is the owner of a file/directory. |
| Type | String |
| Default Value | <empty> (means keeping it unchanged) |
| Valid Values | Any valid username. |
| Syntax | Any string. |
See also: SETOWNER
| Name | permission |
|---|---|
| Description | The permission of a file/directory. |
| Type | Octal |
| Default Value | 644 for files, 755 for directories |
| Valid Values | 0 - 1777 |
| Syntax | Any radix-8 integer (leading zeros may be omitted.) |
See also: CREATE, MKDIRS, SETPERMISSION
| Name | recursive |
|---|---|
| Description | Should the operation act on the content in the subdirectories? |
| Type | boolean |
| Default Value | false |
| Valid Values | true |
| Syntax | true |
See also: RENAME
| Name | renewer |
|---|---|
| Description | The username of the renewer of a delegation token. |
| Type | String |
| Default Value | <empty> (means the current user) |
| Valid Values | Any valid username. |
| Syntax | Any string. |
See also: GETDELEGATIONTOKEN
| Name | replication |
|---|---|
| Description | The number of replications of a file. |
| Type | short |
| Default Value | Specified in the configuration. |
| Valid Values | > 0 |
| Syntax | Any integer. |
See also: CREATE, SETREPLICATION
| Name | snapshotname |
|---|---|
| Description | The name of the snapshot to be created/deleted. Or the new name for snapshot rename. |
| Type | String |
| Default Value | null |
| Valid Values | Any valid snapshot name. |
| Syntax | Any string. |
See also: CREATESNAPSHOT, DELETESNAPSHOT, RENAMESNAPSHOT
| Name | sources |
|---|---|
| Description | A list of source paths. |
| Type | String |
| Default Value | <empty> |
| Valid Values | A list of comma seperated absolute FileSystem paths without scheme and authority. |
| Syntax | Any string. |
See also: CONCAT
| Name | token |
|---|---|
| Description | The delegation token used for the operation. |
| Type | String |
| Default Value | <empty> |
| Valid Values | An encoded token. |
| Syntax | See the note in Delegation. |
See also: RENEWDELEGATIONTOKEN, CANCELDELEGATIONTOKEN
| Name | kind |
|---|---|
| Description | The kind of the delegation token requested |
| Type | String |
| Default Value | <empty> (Server sets the default kind for the service) |
| Valid Values | A string that represents token kind e.g “HDFS_DELEGATION_TOKEN” or “WEBHDFS delegation” |
| Syntax | Any string. |
See also: GETDELEGATIONTOKEN
| Name | service |
|---|---|
| Description | The name of the service where the token is supposed to be used, e.g. ip:port of the namenode |
| Type | String |
| Default Value | <empty> |
| Valid Values | ip:port in string format or logical name of the service |
| Syntax | Any string. |
See also: GETDELEGATIONTOKEN
| Name | user.name |
|---|---|
| Description | The authenticated user; see Authentication. |
| Type | String |
| Default Value | null |
| Valid Values | Any valid username. |
| Syntax | Any string. |
See also: Authentication
| Name | noredirect |
|---|---|
| Description | Whether the response should return an HTTP 307 redirect or HTTP 200 OK. See Create and Write to a File. |
| Type | boolean |
| Default Value | false |
| Valid Values | true |
| Syntax | true |
See also: Create and Write to a File
| Name | storagepolicy |
|---|---|
| Description | The name of the storage policy. |
| Type | String |
| Default Value | <empty> |
| Valid Values | Any valid storage policy name; see GETALLSTORAGEPOLICY. |
| Syntax | Any string. |
See also: SETSTORAGEPOLICY
| Name | startAfter |
|---|---|
| Description | The last item returned in the liststatus batch. |
| Type | String |
| Default Value | <empty> |
| Valid Values | Any valid file/directory name. |
| Syntax | Any string. |
See also: LISTSTATUS_BATCH


The 3D actor object allows you to access the properties of your 3D actors. 3D actor objects are created by loading an actor definition file using the Game.LoadActor3D or Scene.LoadActor3D methods.
| Actions | |
| GoTo | Makes the actor walk to a given point. |
| GoToObject | Makes the actor walk to a specified entity. |
| TurnTo | Makes actor turn to the given direction or to a given object. |
| TurnToAngle | Makes actor turn to the given angle. |
| IsWalking | Queries whether the actor is currently walking. |
| PlayAnim | Plays an animation. |
| PlayAnimChannel | Plays an animation in a specified channel. |
| StopAnim | Stops a currently playing animation. |
| StopAnimChannel | Stops a currently playing animation in the specified channel. |
| SkipTo3D | Moves the actor to a specified point in 3D space |
| Direct control | |
| DirectWalk | Makes the character walk forward. |
| DirectWalkBack | Makes the character walk backwards. |
| DirectWalkStop | Stops character from walking. |
| DirectTurnLeft | Makes the character turn counter-clockwise. |
| DirectTurnRight | Makes the character turn clockwise. |
| DirectTurnStop | Stops character from turning. |
| Shadow related functions | |
| SetShadowImage | Sets and image to be used as a simple shadow for this actor |
| GetShadowImage | Gets the currently assigned image to be used as a simple shadow for this actor |
| SetLightPosition | Sets the position of a light to project a real-time shadow |
| Mesh related functions | |
| HideMesh | Hides a specified part (mesh) of this actor |
| ShowMesh | Shows a specified part (mesh) of this actor |
| AddMesh | Load a new model from a file and attaches it to a specified bone of this actor |
| RemoveMesh | Permanently removes a specified mesh from this actor |
| Item functions | |
| TakeItem | Adds an item into the inventory. |
| DropItem | Removes an item from the inventory. |
| GetItem | Queries an inventory item. |
| HasItem | Queries whether a given item is in inventory of any of this object. |
| Cursor functions | |
| SetCursor | Sets the standard cursor. |
| GetCursor | Returns the filename of the cursor sprite (or null if no cursor is set) |
| GetCursorObject | Returns a reference to the cursor sprite (or null if no cursor is set) |
| RemoveCursor | Removes the standard cursor. |
| HasCursor | Queries whether the standard cursor is set. |
| Script functions | |
| AttachScript | Executes a script file and attaches it to the object. |
| DetachScript | Terminates a specified script file and detaches it from an object. |
| IsScriptRunning | Queries whether a specified script file is running and attached to an object. |
| CanHandleMethod | Queries whether the object supports a method of a specified name. |
| Sound functions | |
| PlaySound | Plays a sound. If the filename is omitted, the currently assigned sound is played (if any). |
| PlaySoundEvent | Plays a sound and triggers an event when the sound is over. If the filename is omitted, the currently assigned sound is played (if any). |
| StopSound | Stops the currently playing sound (if any). |
| PauseSound | Pauses the currently playing sound. |
| ResumeSound | Resumes a paused sound playback. |
| IsSoundPlaying | Queries whether a sound playback is in progress. |
| SetSoundPosition | Sets the sound's current playing position. |
| GetSoundPosition | Queries the sound's current playing position |
| SetSoundVolume | Sets a volume of the currently playing sound. |
| GetSoundVolume | Gets a volume of the currently playing sound. |
| LoadSound | Initializes a sound from file and makes it ready to be played. |
| Sound effects functions | |
| SoundFXNone | Removes any sound effect currently assigned to this object. |
| SoundFXEcho | Assigns an echo effect to the sounds played by this object. |
| SoundFXReverb | Assigns a reverb effect to the sounds played by this object. |
| Event functions | |
| ApplyEvent | Applies a named event to the object. |
| CanHandleEvent | Queries whether the object has an event handler for a specified event. |
| Miscelaneous functions | |
| Reset | Cancels the action the object was currently performing (like talking, walking etc.). |
| IsTalking | Queries whether the object is currently talking. |
| StopTalking | Cancels object's talking. |
| Talk | Makes the object talk. |
| StickToRegion | Forces this actor/entity to act like it's inside a given region |
| SetFont | Sets font of this object. |
| GetFont | Gets a font assigned to this object. |
| SkipTo | Moves an object to a specified location. |
| Type (read only) | Returns always "actor3d" |
| Direction | The direction the actor is currently facing |
| DirectionAngle | The angle the actor is currently facing, in degrees |
| Active | Specifies whether the object is visible on screen |
| IgnoreItems | Specifies whether the object appears to be non-interactive when an inventory item is used on it |
| SubtitlesPosRelative | Specifies whether the SubtitlesPosX and SubtitlesPosY attributes are relative to default position, or absolute screen coordinates |
| SubtitlesPosX | The X position of speech subtitles (either relative to speaker's position or absolute screen coordinates) |
| SubtitlesPosY | The Y position of speech subtitles (either relative to speaker's position or absolute screen coordinates) |
| SubtitlesWidth | Width of speech subtitles. Set to zero to restore the default behavior. |
| SubtitlesPosXCenter | Specifies if the SubtitlesPosX attribute affects the center of the subtitle or its left side. |
| Name | The internal name of the object. |
| Caption | The caption of the object. |
| X | The X position of the object. |
| Y | The Y position of the object. |
| Height (read only) | Returns the current height of the object. In case of actors and entities the scaling is taken into account. |
| Filename (read only) | Returns the filename. |
| Ready (read only) | Returns whether the object isn't currently performing any action. |
| Interactive | Specifies whether the object recieves user input. |
| SoundPanning | Specifies whether the sounds played by this object are automatically panned depending on object's position on screen. |
| NonIntMouseEvents | Specifies if the object can receive the MouseEntry and MouseLeave events even if the game is in non-interactive mode. |
| Scale | The scale of this character in percent. The scale affects both the character model and its shadow. |
| PosX | The 3D X coordinate of the actor's current position |
| PosY | The 3D Y coordinate of the actor's current position |
| PosZ | The 3D Z coordinate of the actor's current position |
| Velocity | The movement velocity to be used for walking |
| AngularVelocity | The turning velocity to be used for turning |
| Shadow | Specified if this character casts shadow |
| SimpleShadow | Specifies if simple shadow is used instead of real-time one (has no effect if real-time shadows are unsupported) |
| ShadowColor | The RGBA color of the real-time shadow cast by this character |
| TalkAnimName | The name of an animation sequence to be used for talking |
| WalkAnimName | The name of an animation sequence to be used for walking |
| IdleAnimName | The name of an animation sequence to be used for standing still |
| MouseEntry | The mouse pointer has been just moved over the object. |
| MouseLeave | The mouse pointer has been just moved away from the object. |
Makes the actor walk to a given point.
The GoTo method blocks the script execution until the walking is over, while the GoToAsync method returns immediately.
Makes the actor walk to a specified entity.
This method utilizes the WalkToX, WalkToY and WalkToDirection properties of the target entity. They can be set directly in SceneEdit.
Makes actor turn to the given direction or to a given object.
The TurnTo method blocks the script execution until the turning is over, while the TurnToAsync method returns immediately. The direction can be one of the following constants: DI_UP, DI_UPRIGHT, DI_RIGHT, DI_DOWNRIGHT, DI_DOWN, DI_DOWNLEFT, DI_LEFT or DI_UPLEFT (those equal to numbers 0 to 7).
Makes actor turn to the given angle.
The TurnToAngle method blocks the script execution until the turning is over, while the TurnToAngleAsync method returns immediately.
Queries whether the actor is currently walking.
Returns true if the actor is walking.
Plays an animation.
Returns true if the animation has been played successfuly.
The PlayAnim method blocks the script execution until the animation is over, while the PlayAnimAsync method returns immediately. PlayAnim is equivalent to PlayAnimChannel with channel set to zero.
Plays an animation in a specified channel.
Returns true if the animation has been played successfuly.
The PlayAnimChannel method blocks the script execution until the animation is over, while the PlayAnimChannelAsync method returns immediately.
Stops a currently playing animation.
Returns true if the animation has been stopped successfuly.
Stops a currently playing animation in the specified channel.
Returns true if the animation has been stopped successfuly.
Moves the actor to a specified point in 3D space
Makes the character walk forward.
Makes the character walk backwards.
Stops character from walking.
Makes the character turn counter-clockwise.
Makes the character turn clockwise.
Stops character from turning.
Sets and image to be used as a simple shadow for this actor
Returns true if the image has been successfuly set.
Gets the currently assigned image to be used as a simple shadow for this actor
Returns the filename of currently assigned shadow image or null if no image is set.
Sets the position of a light to project a real-time shadow
The light position is relative to actor's position.
Hides a specified part (mesh) of this actor
Returns true if the mesh has been successfuly hidden.
Shows a specified part (mesh) of this actor
Returns true if the mesh has been successfuly shown.
Load a new model from a file and attaches it to a specified bone of this actor
Returns true if the mesh has been successfuly loaded and attached.
Permanently removes a specified mesh from this actor
Returns true if the mesh has been successfuly removed.
Adds an item into the inventory.
Removes an item from the inventory.
Queries an inventory item.
A reference to the item object of a given name or at a given index in the inventory.
Queries whether a given item is in inventory of any of this object.
If the specified item is in the inventory of this object, the return value is true.
Note that this method only searches the current object, use the Game.IsItemTaken() method if you want to search all game objects.
Sets the standard cursor.
Returns true if the cursor has been set succesfuly.
Returns the filename of the cursor sprite (or null if no cursor is set)
Returns a reference to the cursor sprite (or null if no cursor is set)
Removes the standard cursor.
Queries whether the standard cursor is set.
Returns true if the object has a custom mouse pointer assigned.
Executes a script file and attaches it to the object.
Returns true if the script hs been executed succesfuly.
Each WME object can have multiple scripts attached.
Terminates a specified script file and detaches it from an object.
Returns true if the script has been detached succesfully.
Queries whether a specified script file is running and attached to an object.
Returns true if a specified script file is attached to an object.
Queries whether the object supports a method of a specified name.
Returns true if the object is able to handle the specified method.
Plays a sound. If the filename is omitted, the currently assigned sound is played (if any).
If the method succeeds, the return value is true.
Plays a sound and triggers an event when the sound is over. If the filename is omitted, the currently assigned sound is played (if any).
If the method succeeds, the return value is true.
Stops the currently playing sound (if any).
If the method succeeds, the return value is true.
Pauses the currently playing sound.
If the method succeeds, the return value is true.
Resumes a paused sound playback.
If the method succeeds, the return value is true.
Queries whether a sound playback is in progress.
If the sound is playing, the return value is true.
Sets the sound's current playing position.
If the method succeeds, the return value is true.
Queries the sound's current playing position
Returns the current playing position (in milliseconds).
Sets a volume of the currently playing sound.
If the method succeeds, the return value is true.
Gets a volume of the currently playing sound.
Returns the volume of the currently playing sound (in percent).
Initializes a sound from file and makes it ready to be played.
If the method succeeds, the return value is true.
Use this method to pre-cache a sound file. Initializing the sound takes some time and sometimes it's desirable to move all sound initialization to e.g. scene start so that the subsequent PlaySound calls don't slow the game down. That's what LoadSound is for. To play the pre-cached sound simply call PlaySound without specifying a filename, for example SomeObject.PlaySound(false);
Removes any sound effect currently assigned to this object.
Assigns an echo effect to the sounds played by this object.
Example: actor.SoundFXEcho(50, 50);
Assigns a reverb effect to the sounds played by this object.
Example: actor.SoundFXReverb(0, 0, 2000);
Applies a named event to the object.
Returns true it the event has been applied succesfuly.
Queries whether the object has an event handler for a specified event.
Returns true if the object is able to handle the specified event.
Cancels the action the object was currently performing (like talking, walking etc.).
Queries whether the object is currently talking.
Returns true if the object is talking.
Cancels object's talking.
You can also use StopTalk() abbreviation.
Makes the object talk.
Talk method blocks the script execution until the animation is over, while the TalkAsync method returns immediately. If the duration is set to zero, it's calculated automatically either from the sound file or from the length of the subtitle.
Forces this actor/entity to act like it's inside a given region
Use this method to "lock" a z-order value of an actor or an entity.
Sets font of this object.
If the method succeeds, the return value is true.
Gets a font assigned to this object.
Returns the filename of currently assigned font.
Moves an object to a specified location.


ATTN:C.E.O/PRESIDENT. I know this message is going to surprise you, considering that I am unknown to you, but I want you to know that this email is sent with all good intentions in mind. My name is Princewilliams Taylor, a Liberian and a younger brother to the incumbent president of Liberia, Charles Taylor, who is about to be exiled from the country. I have been delegated by Charles to leave Liberia for Dubai united arab emirates with the sum of (US$8.M) Eight million United States dollars, and from Dubai united arab emirates look for a trustworthy person who will assist me with the transfer of the fund out of Dubai united arab emirates to a country where we can invest, and resettle in. Now, if you decide to assist me, first I will demand absolute confidentiality for my brother’s sake and I want you to know that for your assistance you will be compensated with 20% of the Total sum. 10% for expenses and the remaining 70% you will help me for investments in your country,THIS IS THE INFORMATION THAT I WANT YOU TO SEND TO ME THAT WILL HELP THE SECURITY COMPANY TO PUT THE NAME OF YOUR COMPANY OR YOU AS THE BONAFIDE BENEFICIARY. 1 YOUR FULL NAME 2 AGE 3 FULL ADDRESS 4 YOUR PRIVATE TEL/FAX NUMBER 5 OCCUPATION 6 NATIONALITY 7 INTERNATIONAL PASSPORT COPY So immediately i receive those information i will forward you the Certificate of Deposite so that you can contact the Security Company for the Change ownship Certficate to your name,You should keep everything confidential,even the security company do not know the contents of the consignment which was registered as farmily values.Please send mail with this email address princewillams772@z6.com,it is confidential. please can you reach me through my private Telephone number which is +97150422.5106 for more information. Yours trully, PRINCEWILLIAMS TAYLOR


An online application of jsonschemafriend a JSON Schema Validator library written in Java by Jim Blackler. Paste your own schema and document for validation in the editors below, or choose a demo from the JSON Schema Store.
An online application of Java library jsonschematypes a generator of Java classes to access JSON, based on its JSON Schema. Written by Jim Blackler. Paste your own schema in the editor below, or choose a demo schema from the JSON Schema Store.
An online application of Java libary jsongenerator a generator of test/example JSON objects that match a JSON Schema. Written by Jim Blackler. Paste your own schema in the editor below, or choose a demo schema from the JSON Schema Store.
An online demonstration of Java libary jsonschematypes a generator of TypeScript classes to access JSON, based on its JSON Schema. Written by Jim Blackler. Paste your own schema in the editor below, or choose a demo schema from the JSON Schema Store.
An online demonstration of Java library usejon a JSON5 parser. Written by Jim Blackler, based on the official reference implementation for JSON5.. Paste JSON5 in the editor below, and press Convert to convert to plain JSON.


John Doe
Male
10/20/1980
Patient Consents
| Consent | Status | Created |
|---|---|---|
|
|
pending pending Signed Withdrawal pending Revoked | 2012/01/01 |
Message Center
| Type | Message | Created | Status |
|---|---|---|---|
| Please see call to schedule an appointment... | 2012/01/01 | New | |
| Your consent has been accepted, call to... | 2012/01/01 | New | |
| Consent for Dr. Connie White is set to expire... | 2012/01/01 | Alert | |
| Your provider request that you review and... | 2012/01/01 | Read | |
| Adobe Echo Sign - Your document is ready... | 2012/01/01 | Read |
Medical Documents
| File | Description | Uploaded | Size | Action |
|---|---|---|---|---|
| XML | Patient-History CCDA for 10-20-2010 to 10-20-2012 | 01/02/2012 | 20 kb |


A THEORETICAL STUDY OF NONLINEAR LONGITUDINAL COMBUSTION INSTABILITY IN LIQUID
PROPELLANT ROCKET ENGINES
A THESIS Presented to The Faculty of the Division of Graduate Studies and Research by
Manuel Edward Lores
In Partial Fulfillment of the Requirements for the Degree Doctor of Philosophy
in the School of Aerospace Engineering
Georgia Institute of Technology
March, 1972
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.


|
Worksheet - Project Tools ELTE
|
#include <Models.h>
Public Types | |
| enum | Days { Days::Monday = 0, Days::Tuesday = 1, Days::Wednesday = 2, Days::Thursday = 3, Days::Friday = 4, Days::Saturday = 5, Days::Sunday = 6, Days::Invalid = -1 } |
Public Member Functions | |
| bool | operator< (const Day &other) |
| bool | operator> (const Day &other) |
| bool | operator<= (const Day &other) |
| bool | operator>= (const Day &other) |
| bool | operator== (const Day &other) |
| Day (const Days &dayOfTheWeek) | |
| void | addWorkout (Workout workout) |
| std::string | toJSON () |
Static Public Member Functions | |
| static std::string | dayAsString (const Days &day) |
| static Days | fromString (const std::string &string) |
Model for a day. May contain up to 3 Exercises, one each of TimeOfDay morning, day and evening.
|
strong |
The days of the week.
| Enumerator | |
|---|---|
| Monday | |
| Tuesday | |
| Wednesday | |
| Thursday | |
| Friday | |
| Saturday | |
| Sunday | |
| Invalid | Day could not be interpreted as any of the above, and therefore is invalid. |
| Models::Day::Day | ( | const Days & | dayOfTheWeek | ) |
| void Models::Day::addWorkout | ( | Workout | workout | ) |
|
static |
|
static |
| string | the string representation of a Days |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| std::string Models::Day::toJSON | ( | ) |


--- title: Eggplant Involtini layout: post date: '2016-09-25 19:43:00 -0400' type: post parent_id: 0 published: true image: assets/images/post-img/assembledinvoltinidishes1-1-508x378.jpg status: publish categories: - Veggies-Meatless tags: - eggplant meta: _wpas_done_all: 1 _wpghs_github_path: _posts/2016-09-25-eggplant-involtini.md _sha: f7768aa5b9c98d7b967156cab92d41f146d14ad1 _edit_last: 1 _thumbnail_id: 434 _jetpack_dont_email_post_to_subs: 1 _posts_by_tag_page_fields: a:2:{s:12:"widget_title";s:0:"";s:11:"widget_tags";s:0:"";} _yourls_url: http://7t3.link/qvyt3 _yourls_clicks: 21 author: login: mkelley email<EMAIL_ADDRESS>display_name: Mike first_name: Mike last_name: Kelley ---
On the fussiness scale, this recipe is up there. I hate to start on such a negative note, especially when these little ricotta-stuffed rolls turned out to be so stinking good, but I'm not so drawn to these recipes anymore, the ones that call for salting and draining and blotting dry, or for deep frying, or for assembling little parcels, as adorable as they may be. But I've had this recipe bookmarked since last Christmas
Source: Eggplant Involtini


--- layout: none common-googlefonts: - "Lora:400,400i,700,700i" - "Noto+Sans+SC:300,400,500,700&subset=chinese-simplified" - "Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i" - "Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i" - "Roboto+Mono:100,100i,300,300i,400,400i,500,500i,700,700i" --- {%- include snippets/get-lang.html -%}
{%- include analytics.html -%} {%- include head.html -%} {%- include scripts/variables.html -%}


--- layout: post title: "No One Is A Good Girl, But I Still Love You" date: 2018-04-30 23:45:13 -0400 background: '/img/1.jpg' ---
No one is a good girl, yes, Angel, you are not a good girl, but I still love you. Ahh. I really love you bud. If you do not know who Angel is, she is my puppy, a cute Australia Shepherd. Three month ago, I got her from Denton Animal Shelter. In three month, God really used Angel taught me a lot of things. Mostly, patience, love, compassion and grace. If you have owned a pet, I bet you understand what am I talking about.
Angel is not a good girl. Sometimes, she blowed my trash can. Sometimes, she messes my room a little bit. But, just like my Heavenly Father loved me with Grace and Mercy, I forgive her every time when she doing wrong. Ahh, Yes, she is cute and I love her so much. Couple weeks ago, I read a article about how God concerned all creation includes animals. That means so should we.
He provides food for the cattle and for the young ravens when they call.
A righteous man cares for the needs of his animal.
Love you Angel. All Glory belongs to you Jesus. Even through Angel, You reveled your Glory. Praise you forever Lord King Jesus !


Over the last three months, I’ve been working on Compose3D, which is an extension of the amazing Compose package to 3D. My work on Compose3D began as a project for my Computer Graphics course along with Pranav T Bhat, and by the end of the course, we had a working prototype for Compose3D with support for contexts and geometries and a very basic WebGL backend.
It has been my pleasure to have been able to continue this work under the guidance of Shashi Gowda and Simon Danisch as a part of the first ever Julia Summer of Code, generously sponsored by the Gordon and Betty Moore Foundation. While I’ve been able to add quite a lot of functionality to Compose3D, it isn’t totally ready for release yet. Hopefully, in some time it will be ready. But as a happy side effect, I have been able to abstract out the WebGL rendering functionality provided by the original prototype (and a lot more!) to a separate package called ThreeJS.jl, which can now be used to render 3D graphics in browsers using Julia, opening up possibilities of displaying such scenes in IJulia notebooks and Escher.
ThreeJS is now responsible for all the WebGL rendering done by Compose3D. It can also be used as a standalone package for other graphics packages to use as a backend.
Initially, my approach to render scenes in Compose3D was to just emit out the corresponding JavaScript code, into the IJulia notebook, which would then run it! This worked pretty well in IJulia notebooks, but it was soon apparent that there were several flaws with this approach.
So Shashi suggested implementing a Polymer wrapper around the excellent three.js library, to create threejs web components. The Polymer team had done some work on creating threejs components and had a basic implementation of the same ready, which I promptly forked and tweaked to add functionality I needed. It’s quite safe to say that I’ve spent more time writing JavaScript than Julia during JSoC!
Switching over to using web components suddenly opened up 2 major avenues. Compose3D could now work with Escher and also provided interactivity. ThreeJS outputs Patchwork elements, which lets it use Patchwork’s clever diffing capabilities, thereby updating only the required DOM elements and helping performance.
On the other hand, web components introduced issues with IJulia notebooks regarding serving the files required by ThreeJS. I’m still working on finding a good solution for this problem, but for now, a hack gets ThreeJS working in IJulia, albiet with some limitations.
Anyway, now we were all set to draw 3D scenes in browsers! The below code snippet, for example, would draw a red cube illuminated from a corner. The camera in the scenes drawn by ThreeJS can be rotated, zoomed and panned using your mouse or trackpad, allowing you to explore the scene.
import ThreeJS
ThreeJS.outerdiv() << (ThreeJS.initscene() <<
[
ThreeJS.mesh(0.0, 0.0, 0.0) <<
[
ThreeJS.box(1.0,1.0,1.0),
ThreeJS.material(Dict(:kind=>"lambert",:color=>"red"))
],
ThreeJS.pointlight(3.0, 3.0, 3.0),
ThreeJS.camera(0.0, 0.0, 10.0)
])
Currently, interactivity is broken in IJulia (a side effect of the switch to Polymer 1.0, and the new sneaky DOM), so Escher is the way to go if you want to interact with your 3D scene. So an example for this can be the same scene as before, but after adding a slider and make it such that the size of the cube is controlled by the slider.
import ThreeJS
function main(window)
push!(window.assets, "widgets")
push!(window.assets, ("ThreeJS", "threejs"))
side = Input(1.0)
vbox(
slider(1.0:5.0) >>> side,
lift(side) do val
ThreeJS.outerdiv() << (ThreeJS.initscene() <<
[
ThreeJS.mesh(0.0, 0.0, 0.0) <<
[
ThreeJS.box(val, val, val),
ThreeJS.material(Dict(:kind=>"lambert",:color=>"red"))
],
ThreeJS.pointlight(3.0, 3.0, 3.0),
ThreeJS.camera(0.0, 0.0, 10.0)
])
end
)
end
Small scale animations can also be created using Escher. Instead of using sliders to update the elements,
we just update it at certain intervals using the every
function or the fpswhen
functions. A scene with a
rotating cube can be drawn using just a couple of modifications of the above code.
import ThreeJS
function main(window)
push!(window.assets, "widgets")
push!(window.assets, ("ThreeJS", "threejs"))
rx = 0.0
ry = 0.0
rz = 0.0
delta = fpswhen(window.alive, 60) #Update at 60 FPS
lift(delta) do _
rx += 0.5
ry += 0.5
rz += 0.5
ThreeJS.outerdiv() << (ThreeJS.initscene() <<
[
ThreeJS.mesh(0.0, 0.0, 0.0) <<
[
ThreeJS.box(2.0, 2.0, 2.0, rx = rx, ry = ry, rz = rz),
ThreeJS.material(Dict(:kind=>"lambert",:color=>"red"))
],
ThreeJS.pointlight(3.0, 3.0, 3.0),
ThreeJS.camera(0.0, 0.0, 10.0)
])
end
end
ThreeJS has support to render parametric surfaces, which are basically the kind of surfaces drawn by
a typical surf
plot. It also has support for drawing lines like a typical mesh
plot. Colormaps can
be applied to these surfaces by passing in an array of colors to be used. Colors to be applied are
calculated and chosen by ThreeJS. These come into effect when put together with materials using the colorkind
property of vertex
. Screenshots of such surfaces drawn by ThreeJS are shown below.
Compose3D provides an abstraction over the rendering library and lets you compose together primitives to build scenes just like the inspiration for it, the Compose library. This lets you create very interesting structures, with very less code! Compose3D has similar features to Compose, with users being able to create 3D contexts, and then use relative and absolute measures inside them and compose other primitives together.
My favorite example to showcase Compose3D would be the Sierpinski pyramid example. Here, we split the parent context into the sections that we want and then just draw the pyramid in them! So the bottom half of the 3D space is split into 4, and then, a pyramid is arranged on top of them.
using Compose3D
function sierpinski(n)
if n == 0
compose(Context(0w,0h,0d,1w,1h,1d),pyramid(0w,0h,0d,1w,1h)) #The basic unit
else
t = sierpinski(n - 1)
compose(Context(0w,0h,0d,1w,1h,1d),
(Context(0w,0h,0d,(1/2)w,(1/2)h,(1/2)d), t),
(Context(0w,0h,0.5d,(1/2)w,(1/2)h,(1/2)d), t),
(Context(0.5w,0h,0.5d,(1/2)w,(1/2)h,(1/2)d), t),
(Context(0.5w,0h,0d,(1/2)w,(1/2)h,(1/2)d), t),
(Context(0.25w,0.5h,0.25d,(1/2)w,(1/2)h,(1/2)d), t)) #The top one
end
end
compose(Context(-5mm,-5mm,-5mm,10mm,10mm,10mm),sierpinski(3))
And voila! You have a Sierpinski pyramid of level 3 like in the figure below.
The switch to ThreeJS allows Compose3D all the advantages that comes with ThreeJS. This includes interactivity and animations!
For example, the same Sierpinski example can be have some interactive elements, say a slider defining the
number of levels of recursion and maybe some controlling the colors of the pyramid. This can be done easily
in Escher just like it was done with ThreeJS. After defining the sierpinski
function given below, just creating a slider
and hooking it up to the sierpinski
function will set this up!
function main(window)
push!(window.assets, ("ThreeJS", "threejs")) #Push the threejs static assets
push!(window.assets, "widgets")
n = Input(0.0)
vbox(
slider(0.0:3.0) >>> n, #Set up the slider
lift(n) do i
#Draw the composed figure!
draw(
Patchable3D(100,100),
compose(
Context(-5mm,-5mm,-5mm,10mm,10mm,10mm), sierpinski(i)
)
)
end
)
end
An an example for animations, I ported the Escher boids example by Ian Dunning from 2D to 3D and a screencast of the same can be found below.
surf
and mesh
that will automatically draw scaled surface plots in browsers and a WebGL based
plotting library around ThreeJS.


IMAGE GALLERY
main
main page
about me
work
project
weekly documentation
image gallery
final project
This are some pictures of how we did it
This is where we write the details of my github page
This is a picture if github
This is where i get github desktop which i can publish
This is the work i have done on monday
this is lego excercise
this is a picture of the name tag that i did which will be printed when i go back to school
this is the cup i had done in week 4
final project
ownership card


Jenny Knuth's Future
things I'd like to do, starting with gSchool…
Arctic Sea Ice Extent 1979–2014
RESTART
BACK


Iconduit (Material)
Not installable
Installing
Installed
Running as an app
Install
Service worker support:
Install prompt support:


Instagram Fitness Influencers Analysis
Home
Influencer Statistics
Questionaire Statistics
Machine Learning Models
Hashtag Analysis
Topic Modeling
Wordclouds
Text Category:
Post Description
Post Comments
Influencer Category:
All Categories
Body Building
Dance
Nutrition
Pilates
Yoga
Fitness Model
Athlete


In America’s most unequal city, top households rake in $663,000
Atlanta is the capital of U.S. inequality for the second year in a row, according to a Bloomberg analysis of large American cities with a population of at least a quarter-million.
Atlanta’s average income for the top 5% of households exceeded $663,000 while families in the bottom half of the population earned less than $65,000 -- a ratio of 10.2 to 1. Nationwide, the ratio was 6.7.
Bloomberg measured the distribution of household income in 87 cities using 2018 data from the U.S. Census Bureau’s American Community Survey. Atlanta earns the title of inequality capital with a Gini coefficient of 0.57, followed by Miami, New Orleans and New York. The scale ranges from zero, which reflects absolute equality, to one -- complete inequality.
Data on inequality is complex, and it’s not always clear what it’s signaling about the economy of a region or country.
Recent Federal Reserve research said that a "relatively low level of regional wage inequality is often the result of a weakening local economy, while relatively high regional wage inequality is often a consequence of strong but uneven economic growth.”
Thus, inequality sometimes springs from positive events. Increased demand for high-skilled workers can lead to more robust wage growth for employees toward the upper portions of the wage distribution, while people less well paid may not share the gains. The Fed analysis shows that regions where manufacturing jobs have plummeted over the past three decades may have weaker demand for workers near the high end thus lowering regional wage inequality.
Shrinking Middle Class
Atlanta’s geographic boundaries contribute to its high inequality ranking. The official city limits only hold about 10% of the greater metro-area population.
Cities are too small a geographical area to measure income equality since the middle class often has fled to the suburbs, Georgia State University professor Dan Immergluck said. If the city lacks a significant middle class population it will rise in inequality while the larger region, with a robust middle class, will show less discrepancy.
Atlanta also has suffered from a lack of economic mobility. It ranked 49th of 50 metro areas in a 2014 Harvard study of inter-generational mobility -- or poor children growing up to become well off. And Georgia ranks in the bottom third of the poorest states in the nation.
The Atlanta metro area is the home of 14 S&P 500 companies with a total market capitalization of nearly $900 billion, including Home Depot, United Parcel Service and Delta Air Lines Inc.
Big Movers
Cleveland moved to the No. 5 spot in the inequality rankings, from 22nd on the list the previous year. Half of the city’s households made just below $30,000, according to the census, whereas those among the top 5% of earners made an average of $262,924 -- 36% higher than the previous year.
The cities that saw the biggest jumps in inequality relative to their peers were Irvine, CA (which jumped 34 spots), Fort Worth, TX (up 24 spots) and Raleigh, NC (up 20).
Among those making big moves in the opposite direction -- in other words, becoming more equal -- were four cities in California: Stockton, Long Beach, Sacramento and Chula Vista.
Read also
Read More
Global spotlight on illegal mica mines drives Indian villagers to hide deaths
After watching her sister-in-law and a friend die in a mica mine in eastern India in March this year, 15-year-old Ritika Murmu vowed she would never again pick the mineral and set out to warn others.
Read More
Homes, land destroyed as desperate Zimbabweans turn to illegal gold mining
Under the blazing sun, a group of men use picks and shovels to dig up a bushy patch of land outside Zimbabwe's second-largest city, stopping every few seconds to scan the soil for signs of gold.
Read More
Extinction Rebellion aims to turn up political heat with hunger strikes
Extinction Rebellion activists pressing for more rapid action on climate change threats on Wednesday entered a third day of a week-long hunger strikes in 27 countries.
Read More
'Hunger' drives India to feast at top of Test table
Virat Kohli's India were hailed as a team driven by "hunger" after stretching their lead in the new world Test championship with a crushing win over Bangladesh inside three days.

Read More
In Lebanon's Tripoli, crushing poverty fuels protests
In a dusty alley streaked with sewage in Lebanon's northern port city of Tripoli, Fatima, her husband and 11 children live crippled by debt and wondering where their next meal is coming from.


Plugin that adds the option to change the background image on battlelog
You can get it here:
http://websiteofandrew.com/static/bf3/background.js
just add that url to your plugins and close and restart battle log. It should then add an option called "change background" to the footer of battlelog next to "change language", click it and it will put a form on the bottom of the page were you can input the url of the image you want to set as the background then click the button and it will change the background of battlelog, permanently. You can change as much as you want, to go back to the regular background just uninstall the plugin.


Easy to use tool to convert a markdown file to a pretty looking PDF.
The majority of the code is based on the vscode-markdown-pdf Visual Studio Code extension, which provides the pretty styles and extra markdown features.
Supports the following features
Supports export from MD to PDF, HTML, PNG and JPEG
INPUT
::: warning
*here be dragons*
:::
OUTPUT

here be dragons

INPUT
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
OUTPUT
Install this project from the NPM package repository:
npm install -g pretty-markdown-pdf
To convert a markdown file to PDF, simply run:
pretty-md-pdf -i my-doc.md
Run with --help
to see all the options available.
This will output a file my-doc.pdf
in the directory where my-doc.md
resides.
To specify an output path as my-exported-doc.pdf
, run:
pretty-md-pdf -i my-doc.md -o my-exported-doc.pdf
To specify an output type other than PDF, run:
pretty-md-pdf -i my-doc.md -t png
You can programmatically call this package, example:
const prettyMdPdf = require("pretty-markdown-pdf")
// output to `my-doc.pdf`
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md" })
// specify an output file path
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", outputFilePath: "output.pdf" })
// specify an output file type, outputs to `my-doc.html`
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", outputFileType: "html" })
Advanced configuration is done using a JSON file. By default the tools uses the one shipped with this package, which has defaults set.
To specify a config file when running the tool:
pretty-md-pdf -i my-doc.md -c /tmp/config.json
From JavaScript you can do:
prettyMdPdf.convertMd({ markdownFilePath: "my-doc.md", configFilePath: "/tmp/config.json")
Below is the default config JSON file as an example:
{
"type": [
"pdf"
],
"outputDirectory": "",
"outputDirectoryRelativePathFile": false,
"styles": [],
"stylesRelativePathFile": false,
"includeDefaultStyles": true,
"highlight": true,
"highlightStyle": "",
"breaks": false,
"emoji": true,
"markdown-it-include": true,
"executablePath": "",
"scale": 1,
"displayHeaderFooter": true,
"headerTemplate": "

",
"footerTemplate": "
  /
",
"printBackground": true,
"orientation": "portrait",
"pageRanges": "",
"format": "A4",
"width": "",
"height": "",
"margin": "1cm",
"quality": 100,
"clip": {
"height": null
},
"omitBackground": false
}
type
"type": [
"pdf",
"html",
"png",
"jpeg"
],
outputDirectory
\
need to be written as \\
(Windows)"outputDirectory": "C:\\work\\output",
Relative Paths
"outputDirectory": "~/output",
relative path
, it will be created if the directory does not existabsolute path
, an error occurs if the directory does not existoutputDirectoryRelativePathFile
outputDirectoryRelativePathFile
option is set to true
, the relative path set with outputDirectory is interpreted as relative from the filestyles
\
need to be written as \\
(Windows)"styles": [
"C:\\Users\\<USERNAME>\\Documents\\css",
"/home/<USERNAME>/settings/css",
],
"styles": [
"css",
],
"styles": [
"~/.config/Code/User/css"
],
"styles": [
"https://xxx/css"
],
stylesRelativePathFile
stylesRelativePathFile
option is set to true
, the relative path set with styles is interpreted as relative from the fileincludeDefaultStyles
highlight
highlightStyle
github
, monokai
... Default: github
"highlightStyle": "github",
Note: You can specify a path to a css file here, ensure your path ends with .css
"highlightStyle": "styles/custom.css",
breaks
emoji
executablePath
\
need to be written as \\
(Windows)"executablePath": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
scale
"scale": 1
displayHeaderFooter
headerTemplate
footerTemplate

: formatted print date
: markdown file name
: markdown full path name
: current page number
: total pages in the document"headerTemplate": "

",
"footerTemplate": "
  /
",
printBackground
orientation
pageRanges
"pageRanges": "1,4-",
format
"format": "A4",
width
height
"width": "10cm",
"height": "20cm",
margin.top
margin.bottom
margin.right
margin.left
"margin.top": "1.5cm",
"margin.bottom": "1cm",
"margin.right": "1cm",
"margin.left": "1cm",
quality
"quality": 100,
clip.x
clip.y
clip.width
clip.height
// x-coordinate of top-left corner of clip area
"clip.x": 0,
// y-coordinate of top-left corner of clip area
"clip.y": 0,
// width of clipping area
"clip.width": 1000,
// height of clipping area
"clip.height": 1000,
omitBackground
.emoji {
height: 2em;
}
If you want to always output to a directory path relative from the Markdown file.
For example, to output to the "output" directory in the same directory as the Markdown file, set it as follows.
"outputDirectory" : "output",
"outputDirectoryRelativePathFile": true,
Please use the following to insert a page break.

Chromium download starts automatically before the first conversion; this is a one time operation, only if your reinstall this package will it be downloaded again.
This is a time-consuming task depending on the environment because of its large size (~ 170Mb Mac, ~ 282Mb Linux, ~ 280Mb Win).
During the Chromuim download, the message Installing Chromium
will be displayed in the console.


A summary of some new news related to CUNY's and CSI's response to the COVID-19 pandemic. See https://csi-covid19.github.io/ for the archive.
To add/suggest news, please email John Verzani
link Funding opportunities for COVID-19 research were announced.
link CSI Association meeting to be held online on 4-2
link Hospital specifics still unclear
link The Executive Committees of the College Council and the Faculty Senate requested a joint meeting with the President and Provost, hopefully this Friday. The working agenda (the link) is quite long and still incomplete.
On 3/31 the president refused to meet:
Dear Jane,
As I wrote in my email of November 5, I believe it appropriate to discuss items with each group separately. As I have offered before, and I continue to offer, "I would be happy to accept an invitation from the Faculty Senate Executive Committee to discuss with them those topics that they are most interested in."
Bill Fritz President
link VP of Student Affairs sent an email out regarding student refunds. This was after Monday's board meeting. Notably students do not get refunds for being displaced for residence halls unless they are graduating in good standing. Student who are not graduating are eligible for credit only.
link The chapter chair forwarded on op-ed by Stephen Brier on the state budget.
link The chapter chair forwarded an email – what is our admistration's plan regarding the pending financial woes come fall...
link The chapter chair sent an email out requesting the sharing of any concerns for the adminstration that can be shared at the April 2nd meeting.
link CUNY announces the appointment of three new presidents.
link City Council helps fund CUNY food banks


{% extends "base.html" %} {% block head_title %} Pages | {{ block.super}} {% endblock head_title %} {% block content %}
| Short Name: | {{ object.name }} |
| Page Insights: | {{ page_insights }} |
| Posts: | {{ posts }}(desde {{object.post_since.date}}) |
| Comentários: | {{ comments }}({{comments_is_complete}}) |
| Reações: | {{ reactions}}({{reactions_is_complete}}) |
| Reactions (Like) Total: | {{ reactions_like}} |
| Reactions (Love) Total: | {{ reactions_love}} |
| Reactions (Haha) Total: | {{ reactions_haha}} |
| Reactions (Wow) Total: | {{ reactions_wow}} |
| Reactions (Sad) Total: | {{ reactions_sad}} |
| Reactions (Angry) Total: | {{ reactions_angry}} |
| Usuários: | {{ faceusers }} |
| Top 10 angry: |
|
| Top 10 like: |
|
| Top 10 love: |
|
| Top 10 sad: |
|
| Maiores commenters: |
|