Tell libcurl to automatically locate and use a client certificate for authentication, when requested by the server. This option is only supported for Schannel (the native Windows SSL library). Prior to 7.77.0 this was the default behavior in libcurl with Schannel. Since the server can request any certificate that supports client authentication in the OS certificate store it could be a privacy violation and unexpected.
Example:
curl --ssl-auto-client-cert https://example.com
See also --proxy-ssl-auto-client-cert. Added in 7.77.0.
(Schannel) This option tells curl to disable certificate revocation checks. WARNING: this option loosens the SSL security, and by using this flag you ask for exactly that.
Example:
curl --ssl-no-revoke https://example.com
See also --crlfile. Added in 7.44.0.
(FTP IMAP POP3 SMTP LDAP) Require SSL/TLS for the connection. Terminates the connection if the server does not support SSL/TLS.
This option is handled in LDAP since version 7.81.0. It is fully supported by the openldap backend and rejected by the generic ldap backend if explicit TLS is required.
This option was formerly known as --ftp-ssl-reqd.
Example:
curl --ssl-reqd ftp://example.com
See also --ssl and -k, --insecure.
(Schannel) This option tells curl to ignore certificate revocation checks when they failed due to missing/offline distribution points for the revocation check lists.
Example:
curl --ssl-revoke-best-effort https://example.com
See also --crlfile and -k, --insecure. Added in 7.70.0.
(FTP IMAP POP3 SMTP LDAP) Try to use SSL/TLS for the connection. Reverts to a non-secure connection if the server does not support SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for different levels of encryption required.
This option is handled in LDAP since version 7.81.0. It is fully supported by the openldap backend and ignored by the generic ldap backend.
Please note that a server may close the connection if the negotiation does not succeed.
This option was formerly known as --ftp-ssl. That option name can still be used but will be removed in a future version.
Example:
curl --ssl pop3://example.com/
See also -k, --insecure and --ciphers.
(SSL) This option previously asked curl to use SSLv2, but starting in curl 7.77.0 this instruction is ignored. SSLv2 is widely considered insecure (see RFC 6176).
Example:
curl --sslv2 https://example.com
See also --http1.1 and --http2. -2, --sslv2 requires that the underlying libcurl was built to support TLS. This option overrides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.
(SSL) This option previously asked curl to use SSLv3, but starting in curl 7.77.0 this instruction is ignored. SSLv3 is widely considered insecure (see RFC 7568).
Example:
curl --sslv3 https://example.com
See also --http1.1 and --http2. -3, --sslv3 requires that the underlying libcurl was built to support TLS. This option overrides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.
Redirect all writes to stderr to the specified file instead. If the file name is a plain '-', it is instead written to stdout.
This option is global and does not need to be specified for each use of -:, --next.
If this option is used several times, the last one will be used.
Example:
curl --stderr output.txt https://example.com
See also -v, --verbose and -s, --silent.
Enables the automatic use of bold font styles when writing HTTP headers to the terminal.
This option is global and does not need to be specified for each use of -:, --next.
Example:
curl --styled-output -I https://example.com
See also -I, --head and -v, --verbose. Added in 7.61.0.
When --proxytunnel is used and a CONNECT request is made do not output proxy CONNECT response headers. This option is meant to be used with --dump-header or --include which are used to show protocol headers in the output. It has no effect on debug options such as --verbose or --trace, or any statistics.
Example:
curl --suppress-connect-headers --include -x proxy https://example.com
See also -D, --dump-header, -i, --include and -p, --proxytunnel. Added in 7.54.0.
Enable use of TCP Fast Open (RFC7413).
Example:
curl --tcp-fastopen https://example.com
See also --false-start. Added in 7.49.0.
Turn on the TCP_NODELAY option. See the curl_easy_setopt(3) man page for details about this option.
Since 7.50.2, curl sets this option by default and you need to explicitly switch it off if you do not want it on.
Example:
curl --tcp-nodelay https://example.com
See also -N, --no-buffer.
Pass options to the telnet protocol. Supported options are:
TTYPE=<term> Sets the terminal type.
XDISPLOC=<X display> Sets the X display location.
NEW_ENV=<var,val> Sets an environment variable.
Example:
curl -t TTYPE=vt100 telnet://example.com/
See also -K, --config.
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that curl will try to use when transferring data to or from a TFTP server. By default 512 bytes will be used.
If this option is used several times, the last one will be used.
Example:
curl --tftp-blksize 1024 tftp://example.com/file
See also --tftp-no-options.
(TFTP) Tells curl not to send TFTP options requests.
This option improves interop with some legacy servers that do not acknowledge or properly implement TFTP options. When this option is used --tftp-blksize is ignored.
Example:
curl --tftp-no-options tftp://<IP_ADDRESS>/
See also --tftp-blksize. Added in 7.48.0.
(HTTP FTP) Request a file that has been modified later than the given time and date, or one that has been modified before that time. The <date expression> can be all sorts of date strings or if it does not match any internal ones, it is taken as a filename and tries to get the modification date (mtime) from <file> instead. See the curl_getdate(3) man pages for date expression details.
Start the date expression with a dash (-) to make it request for a document that is older than the given date/time, default is a document that is newer than the specified date/time.
If this option is used several times, the last one will be used.
Examples:
curl -z "Wed 01 Sep 2021 12:18:00" https://example.com curl -z "-Wed 01 Sep 2021 12:18:00" https://example.com curl -z file https://example.com
See also --etag-compare and -R, --remote-time.
(SSL) VERSION defines maximum supported TLS version. The minimum acceptable version is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.
If the connection is done without TLS, this option has no effect. This includes QUIC-using (HTTP/3) transfers.
Use up to recommended TLS version.
Use up to TLSv1.0.
Use up to TLSv1.1.
Use up to TLSv1.2.
Use up to TLSv1.3.
Examples:
curl --tls-max 1.2 https://example.com curl --tls-max 1.3 --tlsv1.2 https://example.com
See also --tlsv1.0, --tlsv1.1, --tlsv1.2 and --tlsv1.3. --tls-max requires that the underlying libcurl was built to support TLS. Added in 7.54.0.
--tls13-ciphers <ciphersuite list>
(TLS) Specifies which cipher suites to use in the connection if it negotiates TLS 1.3. The list of ciphers suites must specify valid ciphers. Read up on TLS 1.3 cipher suite details on this URL:
https://curl.se/docs/ssl-ciphers.html
This option is currently used only when curl is built to use OpenSSL 1.1.1 or later. If you are using a different SSL backend you can try setting TLS 1.3 cipher suites by using the --ciphers option.
If this option is used several times, the last one will be used.
Example:
curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com
See also --ciphers and --curves. Added in 7.61.0.
Set TLS authentication type. Currently, the only supported option is "SRP", for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but --tlsauthtype is not, then this option defaults to "SRP". This option works only if the underlying libcurl is built with TLS-SRP support, which requires OpenSSL or GnuTLS with TLS-SRP support.
Example:
curl --tlsauthtype SRP https://example.com
See also --tlsuser.
Set password for use with the TLS authentication method specified with --tlsauthtype. Requires that --tlsuser also be set.
This option does not work with TLS 1.3.
Example:
curl --tlspassword pwd --tlsuser user https://example.com
See also --tlsuser.
Set username for use with the TLS authentication method specified with --tlsauthtype. Requires that --tlspassword also is set.
This option does not work with TLS 1.3.
Example:
curl --tlspassword pwd --tlsuser user https://example.com
See also --tlspassword.
(TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.0. That behavior was inconsistent depending on the TLS library. Use --tls-max if you want to set a maximum TLS version.
Example:
curl --tlsv1.0 https://example.com
See also --tlsv1.3. Added in 7.34.0.
(TLS) Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.1. That behavior was inconsistent depending on the TLS library. Use --tls-max if you want to set a maximum TLS version.
Example:
curl --tlsv1.1 https://example.com
See also --tlsv1.3. Added in 7.34.0.
(TLS) Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.
In old versions of curl this option was documented to allow _only_ TLS 1.2. That behavior was inconsistent depending on the TLS library. Use --tls-max if you want to set a maximum TLS version.
Example:
curl --tlsv1.2 https://example.com
See also --tlsv1.3. Added in 7.34.0.
(TLS) Forces curl to use TLS version 1.3 or later when connecting to a remote TLS server.
If the connection is done without TLS, this option has no effect. This includes QUIC-using (HTTP/3) transfers.
Note that TLS 1.3 is not supported by all TLS backends.
Example:
curl --tlsv1.3 https://example.com
See also --tlsv1.2. Added in 7.52.0.
(SSL) Tells curl to use at least TLS version 1.x when negotiating with a remote TLS server. That means TLS version 1.0 or higher
Example:
curl --tlsv1 https://example.com
See also --http1.1 and --http2. -1, --tlsv1 requires that the underlying libcurl was built to support TLS. This option overrides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.
(HTTP) Request a compressed Transfer-Encoding response using one of the algorithms curl supports, and uncompress the data while receiving it.
Example:
curl --tr-encoding https://example.com
See also --compressed.
Enables a full trace dump of all incoming and outgoing data, including descriptive information, to the given output file. Use "-" as filename to have the output sent to stdout.
This is similar to --trace, but leaves out the hex part and only shows the ASCII part of the dump. It makes smaller output that might be easier to read for untrained humans.
This option is global and does not need to be specified for each use of -:, --next.
If this option is used several times, the last one will be used.
Example:
curl --trace-ascii log.txt https://example.com
See also -v, --verbose and --trace. This option overrides --trace and -v, --verbose.
Prepends a time stamp to each trace or verbose line that curl displays.
This option is global and does not need to be specified for each use of -:, --next.
Example:
curl --trace-time --trace-ascii output https://example.com
See also --trace and -v, --verbose.
Enables a full trace dump of all incoming and outgoing data, including descriptive information, to the given output file. Use "-" as filename to have the output sent to stdout. Use "%" as filename to have the output sent to stderr.
This option is global and does not need to be specified for each use of -:, --next.
If this option is used several times, the last one will be used.
Example:
curl --trace log.txt https://example.com
See also --trace-ascii and --trace-time. This option overrides -v, --verbose and --trace-ascii.
(HTTP) Connect through this Unix domain socket, instead of using the network.
Example:
curl --unix-socket socket-path https://example.com
See also --abstract-unix-socket. Added in 7.40.0.
This transfers the specified local file to the remote URL. If there is no file part in the specified URL, curl will append the local file name. NOTE that you must use a trailing / on the last directory to really prove to Curl that there is no file name or curl will think that your last directory name is the remote file name to use. That will most likely cause the upload operation to fail. If this is used on an HTTP(S) server, the PUT command will be used.
Use the file name "-" (a single dash) to use stdin instead of a given file. Alternately, the file name "." (a single period) may be specified instead of "-" to use stdin in non-blocking mode to allow reading server output while stdin is being uploaded.
You can specify one --upload-file for each URL on the command line. Each -T, --upload-file + URL pair specifies what to upload and to where. curl also supports "globbing" of the --upload-file argument, meaning that you can upload multiple files to a single URL by using the same URL globbing style supported in the URL.
When uploading to an SMTP server: the uploaded data is assumed to be RFC 5322 formatted. It has to feature the necessary set of headers and mail body formatted correctly by the user as curl will not transcode nor encode it further in any way.
Examples:
curl -T file https://example.com curl -T "img[1-1000].png" ftp://ftp.example.com/ curl --upload-file "{file1,file2}" https://example.com
See also -G, --get and -I, --head.
Specify a URL to fetch. This option is mostly handy when you want to specify URL(s) in a config file.
If the given URL is missing a scheme name (such as "http://" or "ftp://" etc) then curl will make a guess based on the host. If the outermost sub-domain name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by setting a default protocol, see --proto-default for details.
This option may be used any number of times. To control where this URL is written, use the --output or the --remote-name options.
WARNING: On Windows, particular file:// accesses can be converted to network accesses by the operating system. Beware!
Example:
curl --url https://example.com
See also -:, --next and -K, --config.
(FTP LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using a URL that ends with ";type=A". This option causes data sent to stdout to be in text mode for win32 systems.
Example:
curl -B ftp://example.com/README
See also --crlf and --data-ascii.
(HTTP) Specify the User-Agent string to send to the HTTP server. To encode blanks in the string, surround the string with single quote marks. This header can also be set with the --header or the --proxy-header options.
If you give an empty argument to -A, --user-agent (""), it will remove the header completely from the request. If you prefer a blank header, you can set it to a single space (" ").
If this option is used several times, the last one will be used.
Example:
curl -A "Agent 007" https://example.com
See also -H, --header and --proxy-header.
Specify the user name and password to use for server authentication. Overrides --netrc and --netrc-optional.
If you simply specify the user name, curl will prompt for a password.
The user name and passwords are split up on the first colon, which makes it impossible to use a colon in the user name with this option. The password can, still.
On systems where it works, curl will hide the given option argument from process listings. This is not enough to protect credentials from possibly getting seen by other users on the same system as they will still be visible for a moment before cleared. Such sensitive data should be retrieved from a file instead or similar and never used in clear text in a command line.
When using Kerberos V5 with a Windows based server you should include the Windows domain name in the user name, in order for the server to successfully obtain a Kerberos Ticket. If you do not, then the initial authentication handshake may fail.
When using NTLM, the user name can be specified simply as the user name, without the domain, if there is a single domain and forest in your setup for example.
To specify the domain name use either Down-Level Logon Name or UPN (User Principal Name) formats. For example, EXAMPLE\user and<EMAIL_ADDRESS>respectively.
If you use a Windows SSPI-enabled curl binary and perform Kerberos V5, Negotiate, NTLM or Digest authentication then you can tell curl to select the user name and password from your environment by specifying a single colon with this option: "-u :".
If this option is used several times, the last one will be used.
Example:
curl -u user:secret https://example.com
See also -n, --netrc and -K, --config.
Makes curl verbose during the operation. Useful for debugging and seeing what's going on "under the hood". A line starting with '>' means "header data" sent by curl, '<' means "header data" received by curl that is hidden in normal cases, and a line starting with '*' means additional info provided by curl.
If you only want HTTP headers in the output, --include might be the option you are looking for.
If you think this option still does not give you enough details, consider using --trace or --trace-ascii instead.
This option is global and does not need to be specified for each use of -:, --next.
Use --silent to make curl really quiet.
Example:
curl --verbose https://example.com
See also -i, --include. This option overrides --trace and --trace-ascii.
Displays information about curl and the libcurl version it uses.
The first line includes the full version of curl, libcurl and other 3rd party libraries linked with the executable.
The second line (starts with "Protocols:") shows all protocols that libcurl reports to support.
The third line (starts with "Features:") shows specific features libcurl reports to offer. Available features include:
Support for the Alt-Svc: header is provided.
This curl uses asynchronous name resolves. Asynchronous name resolves can be done using either the c-ares or the threaded resolver backends.
Support for automatic brotli compression over HTTP(S).
curl was built with support for character set conversions (like EBCDIC)
This curl uses a libcurl built with Debug. This enables more error-tracking and memory debugging etc. For curl-developers only!
The built-in SASL authentication includes extensions to support SCRAM because libcurl was built with libgsasl.
GSS-API is supported.
HSTS support is present.
HTTP/2 support has been built-in.
HTTP/3 support has been built-in.
This curl is built to support HTTPS proxy.
This curl supports IDN - international domain names.
You can use IPv6 with this.
Kerberos V5 authentication is supported.
This curl supports transfers of large files, files larger than 2GB.
Automatic decompression (via gzip, deflate) of compressed files over HTTP is supported.
This curl supports multiple TLS backends.
NTLM authentication is supported.
NTLM delegation to winbind helper is supported.
PSL is short for Public Suffix List and means that this curl has been built with knowledge about "public suffixes".
SPNEGO authentication is supported.
SSL versions of various protocols are supported, such as HTTPS, FTPS, POP3S and so on.
SSPI is supported.
SRP (Secure Remote Password) authentication is supported for TLS.
Debug memory tracking is supported.
Unicode support on Windows.
Unix sockets support is provided.
Automatic decompression (via zstd) of compressed files over HTTP is supported.
Example:
curl --version
See also -h, --help and -M, --manual.
Make curl display information on stdout after a completed transfer. The format is a string that may contain plain text mixed with any number of variables. The format can be specified as a literal "string", or you can have curl read the format from a file with "@filename" and to tell curl to read the format from stdin you write "@-".
The variables present in the output format will be substituted by the value or text that curl thinks fit, as described below. All variables are specified as %{variable_name} and to output a normal % you just write them as %%. You can output a newline by using \n, a carriage return with \r and a tab space with \t.
The output will be written to standard output, but this can be switched to standard error by using %{stderr}.
EXPERIMENTAL feature: Output HTTP headers from the most recent request by using %header{name} where name is the case insensitive name of the header (without the trailing colon). The header contents are exactly as sent over the network, with leading and trailing whitespace trimmed. Added in curl 7.83.0.
NOTE: The %-symbol is a special symbol in the win32-environment, where all occurrences of % must be doubled when using this option.
The variables available are:
content_type The Content-Type of the requested document, if there was any.
errormsg The error message. (Added in 7.75.0)
exitcode The numerical exitcode of the transfer. (Added in 7.75.0)
filename_effective The ultimate filename that curl writes out to. This is only meaningful if curl is told to write to a file with the --remote-name or --output option. It's most useful in combination with the --remote-header-name option.
ftp_entry_path The initial path curl ended up in when logging on to the remote FTP server.
header_json EXPERIMENTAL feature.
A JSON object with all HTTP response headers from the recent transfer. Values are provided as arrays, since in the case of multiple headers there can be multiple values.
The header names provided in lowercase, listed in order of appearance over the wire. Except for duplicated headers. They are grouped on the first occurrence of that header, each value is presented in the JSON array.
http_code The numerical response code that was found in the last retrieved HTTP(S) or FTP(s) transfer.
http_connect The numerical code that was found in the last response (from a proxy) to a curl CONNECT request.
http_version The http version that was effectively used. (Added in 7.50.0)
json A JSON object with all available keys.
local_ip The IP address of the local end of the most recently done connection - can be either IPv4 or IPv6.
local_port The local port number of the most recently done connection.
method The http method used in the most recent HTTP request. (Added in 7.72.0)
num_connects Number of new connects made in the recent transfer.
num_headers The number of response headers in the most recent request (restarted at each redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
num_redirects Number of redirects that were followed in the request.
onerror The rest of the output is only shown if the transfer returned a non-zero error (Added in 7.75.0)
proxy_ssl_verify_result The result of the HTTPS proxy's SSL peer certificate verification that was requested. 0 means the verification was successful. (Added in 7.52.0)
redirect_url When an HTTP request was made without --location to follow redirects (or when --max-redirs is met), this variable will show the actual URL a redirect would have gone to.
referer The Referer: header, if there was any. (Added in 7.76.0)
remote_ip The remote IP address of the most recently done connection - can be either IPv4 or IPv6.
remote_port The remote port number of the most recently done connection.
response_code The numerical response code that was found in the last transfer (formerly known as "http_code").
scheme The URL scheme (sometimes called protocol) that was effectively used. (Added in 7.52.0)
size_download The total amount of bytes that were downloaded. This is the size of the body/data that was transferred, excluding headers.
size_header The total amount of bytes of the downloaded headers.
size_request The total amount of bytes that were sent in the HTTP request.
size_upload The total amount of bytes that were uploaded. This is the size of the body/data that was transferred, excluding headers.
speed_download The average download speed that curl measured for the complete download. Bytes per second.
speed_upload The average upload speed that curl measured for the complete upload. Bytes per second.
ssl_verify_result The result of the SSL peer certificate verification that was requested. 0 means the verification was successful.
stderr From this point on, the --write-out output will be written to standard error. (Added in 7.63.0)
stdout From this point on, the --write-out output will be written to standard output. This is the default, but can be used to switch back after switching to stderr. (Added in 7.63.0)
time_appconnect The time, in seconds, it took from the start until the SSL/SSH/etc connect/handshake to the remote host was completed.
time_connect The time, in seconds, it took from the start until the TCP connect to the remote host (or proxy) was completed.
time_namelookup The time, in seconds, it took from the start until the name resolving was completed.
time_pretransfer The time, in seconds, it took from the start until the file transfer was just about to begin. This includes all pre-transfer commands and negotiations that are specific to the particular protocol(s) involved.
time_redirect The time, in seconds, it took for all redirection steps including name lookup, connect, pretransfer and transfer before the final transaction was started. time_redirect shows the complete execution time for multiple redirections.
time_starttransfer The time, in seconds, it took from the start until the first byte was just about to be transferred. This includes time_pretransfer and also the time the server needed to calculate the result.
time_total The total time, in seconds, that the full operation lasted.
url The URL that was fetched. (Added in 7.75.0)
urlnum The URL index number of this transfer, 0-indexed. De-globbed URLs share the same index number as the origin globbed URL. (Added in 7.75.0)
url_effective The URL that was fetched last. This is most meaningful if you have told curl to follow location: headers.
If this option is used several times, the last one will be used.
Example:
curl -w '%{http_code}\n' https://example.com
See also -v, --verbose and -I, --head.
When saving output to a file, this option tells curl to store certain file metadata in extended file attributes. Currently, the URL is stored in the xdg.origin.url attribute and, for HTTP, the content type is stored in the mime_type attribute. If the file system does not support extended attributes, a warning is issued.
Example:
curl --xattr -o storage https://example.com
See also -R, --remote-time, -w, --write-out and -v, --verbose.
Files
~/.curlrc
Default config file, see --config for details.
Environment
The environment variables can be specified in lower case or upper case. The lower case version has precedence. http_proxy is an exception as it is only available in lower case.
Using an environment variable to set the proxy has the same effect as using the --proxy option.
http_proxy [protocol://]<host>[:port]
Sets the proxy server to use for HTTP.
HTTPS_PROXY [protocol://]<host>[:port]
Sets the proxy server to use for HTTPS.
[url-protocol]_PROXY [protocol://]<host>[:port]
Sets the proxy server to use for [url-protocol], where the protocol is a protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc.
ALL_PROXY [protocol://]<host>[:port]
Sets the proxy server to use if no protocol-specific proxy is set.
NO_PROXY <comma-separated list of hosts/domains>
list of host names that should not go through any proxy. If set to an asterisk '*' only, it matches all hosts. Each name in this list is matched as either a domain name which contains the hostname, or the hostname itself.
This environment variable disables use of the proxy even when specified with the --proxy option. That is NO_PROXY=direct.example.com curl -x http://proxy.example.com http://direct.example.com accesses the target URL directly, and NO_PROXY=direct.example.com curl -x http://proxy.example.com http://somewhere.example.com accesses the target URL through the proxy.
The list of host names can also be include numerical IP addresses, and IPv6 versions should then be given without enclosing brackets.
IPv6 numerical addresses are compared as strings, so they will only match if the representations are the same: "::1" is the same as "::0:1" but they do not match.
On Windows, this variable is used when trying to find the home directory. If the primary home variable are all unset.
If set, the specified number of characters will be used as the terminal width when the alternative progress-bar is shown. If not set, curl will try to figure it out using other ways.
If set, will be used as the --cacert value.
If set, is the first variable curl checks when trying to find its home directory. If not set, it continues to check XDG_CONFIG_HOME.
CURL_SSL_BACKEND <TLS backend>
If curl was built with support for "MultiSSL", meaning that it has built-in support for more than one TLS backend, this environment variable can be set to the case insensitive name of the particular backend to use when curl is invoked. Setting a name that is not a built-in alternative will make curl stay with the default.
SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls, nss, openssl, rustls, schannel, secure-transport, wolfssl
If set, this is used to find the home directory when that is needed. Like when looking for the default .curlrc. CURL_HOME and XDG_CONFIG_HOME have preference.
If curl was built with HTTP/3 support, setting this environment variable to a local directory will make curl produce qlogs in that directory, using file names named after the destination connection id (in hex). Do note that these files can become rather large. Works with both QUIC backends.
Used on VMS when trying to detect if using a DCL or a "unix" shell.
If set, will be used as the --capath value.
If set, will be used as the --cacert value.
If you set this environment variable to a file name, curl will store TLS secrets from its connections in that file when invoked to enable you to analyze the TLS traffic in real time using network analyzing tools such as Wireshark. This works with the following TLS backends: OpenSSL, libressl, BoringSSL, GnuTLS, NSS and wolfSSL.
On Windows, this variable is used when trying to find the home directory. If the other, primary, variable are all unset. If set, curl will use the path "$USERPROFILE\Application Data".
If CURL_HOME is not set, this variable is checked when looking for a default .curlrc file.
Proxy protocol prefixes
The proxy string may be specified with a protocol:// prefix to specify alternative proxy protocols.
If no protocol is specified in the proxy string or if the string does not match a supported one, the proxy will be treated as an HTTP proxy.
The supported proxy protocol prefixes are as follows:
Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
Makes it treated as an HTTPS proxy.
Makes it the equivalent of --socks4
Makes it the equivalent of --socks4a
Makes it the equivalent of --socks5
Makes it the equivalent of --socks5-hostname
Exit codes
There are a bunch of different error codes and their corresponding error messages that may appear under error conditions. At the time of this writing, the exit codes are:
Unsupported protocol. This build of curl has no support for this protocol.
Failed to initialize.
URL malformed. The syntax was not correct.
A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. To make curl able to do this, you probably need another build of libcurl.
Could not resolve proxy. The given proxy host could not be resolved.
Could not resolve host. The given remote host could not be resolved.
Failed to connect to host.
Weird server reply. The server sent data curl could not parse.
FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that does not exist on the server.
FTP accept failed. While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar.
FTP weird PASS reply. Curl could not parse the reply sent to the PASS request.
During an active FTP session while waiting for the server to connect back to curl, the timeout expired.
FTP weird PASV reply, Curl could not parse the reply sent to the PASV request.
FTP weird 227 format. Curl could not parse the 227-line the server sent.
FTP cannot use host. Could not resolve the host IP we got in the 227-line.
HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error message for details.
FTP could not set binary. Could not change transfer method to binary.
Partial file. Only a part of the file was transferred.
FTP could not download/access the given file, the RETR (or similar) command failed.
FTP quote error. A quote command returned error from the server.
HTTP page not retrieved. The requested URL was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if --fail is used.
Write error. Curl could not write data to a local filesystem or similar.
FTP could not STOR file. The server denied the STOR operation, used for FTP uploading.
Read error. Various reading problems.
Out of memory. A memory allocation request failed.
Operation timeout. The specified time-out period was reached according to the conditions.
FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!
FTP could not use REST. The REST command failed. This command is used for resumed FTP transfers.
HTTP range error. The range "command" did not work.
HTTP post error. Internal post-request generation error.
SSL connect error. The SSL handshaking failed.
Bad download resume. Could not continue an earlier aborted download.
FILE could not read file. Failed to open the file. Permissions?
LDAP cannot bind. LDAP bind operation failed.
LDAP search failed.
Function not found. A required LDAP function was not found.
Aborted by callback. An application told curl to abort the operation.
Internal error. A function was called with a bad parameter.
Interface error. A specified outgoing interface could not be used.
Too many redirects. When following redirects, curl hit the maximum amount.
Unknown option specified to libcurl. This indicates that you passed a weird option to curl that was passed on to libcurl and rejected. Read up in the manual!
Malformed telnet option.
The peer's SSL certificate or SSH MD5 fingerprint was not OK.
The server did not reply anything, which here is considered an error.
SSL crypto engine not found.
Cannot set SSL crypto engine as default.
Failed sending network data.
Failure in receiving network data.
Problem with the local certificate.
Could not use specified SSL cipher.
Peer certificate cannot be authenticated with known CA certificates.
Unrecognized transfer encoding.
Invalid LDAP URL.
Maximum file size exceeded.
Requested FTP SSL level failed.
Sending the data requires a rewind that failed.
Failed to initialise SSL Engine.
The user name, password, or similar was not accepted and curl failed to log in.
File not found on TFTP server.
Permission problem on TFTP server.
Out of disk space on TFTP server.
Illegal TFTP operation.
Unknown TFTP transfer ID.
File already exists (TFTP).
No such user (TFTP).
Character conversion failed.
Character conversion functions required.
Problem reading the SSL CA cert (path? access rights?).
The resource referenced in the URL does not exist.
An unspecified error occurred during the SSH session.
Failed to shut down the SSL connection.
Could not load CRL file, missing or wrong format.
Issuer check failed.
The FTP PRET command failed.
Mismatch of RTSP CSeq numbers.
Mismatch of RTSP Session Identifiers.
Unable to parse FTP file list.
FTP chunk callback reported error.
No connection available, the session will be queued.
SSL public key does not matched pinned public key.
Invalid SSL certificate status.
Stream error in HTTP/2 framing layer.
An API function was called from inside a callback.
An authentication function returned an error.
A problem was detected in the HTTP/3 layer. This is somewhat generic and can be one out of several problems, see the error message for details.
QUIC connection error. This error may be caused by an SSL library error. QUIC is the protocol used for HTTP/3 transfers.
More error codes will appear here in future releases. The existing ones are meant to never change.
Bugs
If you experience any problems with curl, submit an issue in the project's bug tracker on GitHub: https://github.com/curl/curl/issues
Authors / contributors
Daniel Stenberg is the main author, but the whole list of contributors is found in the separate THANKS file.
Www
See also
ftp(1), wget(1)
This HTML page was made with roffit.


How i can improve the text recognition:
- Good lightning is most important. Use the flashlight if possible.
- Blurry text is hard to read for me. Make sure that the camera has properly focussed the text
- Hold the phone parallel to the text when taking the photo
- Experiment with different iso values. High iso values can lead to image noise that makes it harder to recognize the letters
- Most of the time 5 to 7 megapixels is enough resolution to get good results. Higher values will often only increase the processing time.
"Additional tips"
- You can speed up the text recognition by cropping the taken photo
- I'm best at recognizing Text from books, magazines or new papers. Ornate or colorful letters are problematic for me.
- I'm having equally difficulties when reading light text from dark backgrounds.


Code Coverage |
|||||||||
Lines |
Functions and Methods |
Classes and Traits |
|||||||
| Total | |
28.97% |
239 / 825 |
|
28.28% |
56 / 198 |
|
44.74% |
17 / 38 |
| AuthorsBundle | |
39.30% |
79 / 201 |
|
37.25% |
19 / 51 |
|
37.50% |
3 / 8 |
| MenuBundle | |
7.96% |
9 / 113 |
|
7.32% |
3 / 41 |
|
53.85% |
7 / 13 |
| UserJoinPageBundle | |
29.55% |
151 / 511 |
|
32.08% |
34 / 106 |
|
41.18% |
7 / 17 |


EZID is a service of the Purdue University Libraries that allows creators and publishers of data and other digital content to obtain persistent identifiers for their work. It allows researchers to register their data sets and assign unique, persistent identifiers to them. This makes data easier to locate, identify, and cite.


--- title: "Lil' Buds" layout: "default" ---
Bring your preschooler to a pint-sized class filled with fun crafts, hands-on activities, Garden explorations, and more. Come make new friends, prepare for preschool, and explore the wonders of the natural world. Plus, each class is designed for caregivers to attend and participate with their Lil' Bud.
Wednesdays from 10:30AM - NOON in Em's Sprout House
Please note, Lil' Buds classes are once a week.
Check back soon for updated 2019 Lil' Buds classes!
2018 Schedule Below
Brighten your Lil' Bud's day as we explore the rainbow of colors found in the natural world.
Wednesday, April 4, 10:30AM - NOON
Wednesday, August 1, 10:30AM - NOON
From A to Z, discover the letters of the alphabet with the help of Chauncey, the Red Butte Garden Gnome, and his favorite plants.
Wednesday, April 11, 10:30AM - NOON
Wednesday, August 8, 10:30AM - NOON
One, two, three, how many plants do you see? Count on a fun time as we hunt for numbers hidden in the trees, flowers, and shrubs of the Garden.
Wednesday, April 18, 10:30AM - NOON
Wednesday, August 15, 10:30AM - NOON
Tall, short, rough, smooth, hard, soft—the natural world is filled with differences! Discover the world of opposites using the plants and animals of the Garden.
Wednesday, April 25, 10:30AM - NOON
Wednesday, August 22, 10:30AM - NOON
From triangular trees to circular flowers, we’ll explore the different shapes found in the natural world. Be there, or be square!
Wednesday, May 2, 10:30AM - NOON
Wednesday, August 29, 10:30AM - NOON
Can you smell that? Come sniff it out with your Lil’ Bud as we explore what smells in the Garden.
Wednesday, May 30, 10:30AM - NOON
Wednesday, September 5, 10:30AM - NOON
It might be soft and fuzzy or stiff and scratchy but you’ll have to come to the Garden to find out!
Wednesday, June 6, 10:30AM - NOON
Wednesday, September 12, 10:30AM - NOON
This session is closed.
Do you hear what I hear? From animals to plants blowing in the wind, there is so much to discover if we open our ears!
Wednesday, June 13, 10:30AM - NOON
Wednesday, September 19, 10:30AM - NOON
So much food and flavor comes from plants. Come taste your way through the Garden and see how much of a locavore you can be!
Wednesday, June 20, 10:30AM - NOON
Wednesday, September 26, 10:30AM - NOON
The section is closed.
Come taste, touch, smell, see and hear your way around Red Butte Garden. This class is sure to delight all the senses.
Wednesday, June 27, 10:30AM - NOON
Wednesday, October 3, 10:30AM - NOON


Simulator launcher
Experiments
Experiments Launched
Sel
Order
Completed
Date
Time
State
Scenario
Feasibility
VM Provider
VMs
Cost
Input
Output
Actions
Num
Size
Date
Time
Type


The King Educational Philosophy stems from an idealistic viewpoint. In order for society to value education, education has to be at the center of a society. This educational philosophy focuses on how to incorporate real world experience into the lives of students. One thing I have noticed about my students is their need to feel they have a place in this world. This combination increases student engagement as well as gives them a feeling of purpose.
To sum up my educational philosophy in a single phrase: “it takes a village” to educate a child. This goes with the concept that the community is responsible in helping a child grow. Students will have individual choice but work together with the community to foster the students’ talents. Students will work together with their teachers, parents, school systems, local and corporate businesses in order to achieve their goals.
Teachers play a major role. While they are not seen as necessarily the main givers of knowledge, they are seen as mentors, facilitators, and resources to their students. Teachers would work with students to pinpoint their interests and talents and tailor curriculum to fit the needs of each child. For example, if a student is interested in design, teachers would work with the student to figure out their desired interest; interior design, graphic design, etc. Very similar to magnet programs in Baltimore County, however, this opportunity would be given to every child. While students are responsible for maintaining a specific gpa in core classes such as English, Math, and Science, these courses would be tailored more towards the needs of each student.


Stories and posts about how we offer encouragement and support for the siblings of NICU patients.
Please use the search bar at the top or visit our homepage!


Type QueryBuilder<T>
Namespace WorldWeatherOnline
Interfaces IQueryBuilder<T>
Base class for query builders
Methods
Properties
Public instance methods
Task<T> GetResult(Api api)
Execute query and get results as c# object
Parameters
-
Api
api - Api instance. Is not required if it was provided in constructor or provided by builder
Returns
-
Task<T>
- Response object
Task<string> GetResultAsCsv(Api api)
Execute query and get results as plain csv text
Parameters
-
Api
api - Api instance. Is not required if it was provided in constructor or provided by builder
Returns
-
Task<string>
- csv response as plain text
Task<string> GetResultAsJson(Api api)
Execute query and get results as plain json text
Parameters
-
Api
api - Api instance. Is not required if it was provided in constructor or provided by builder
Returns
-
Task<string>
- Json response as plain text
Task<string> GetResultAsTsv(Api api)
Execute query and get results as plain tsv text
Parameters
-
Api
api - Api instance. Is not required if it was provided in constructor or provided by builder
Returns
-
Task<string>
- tsv response as plain text
Task<string> GetResultAsXml(Api api)
Execute query and get results as plain xml text
Parameters
-
Api
api - Api instance. Is not required if it was provided in constructor or provided by builder
Returns
-
Task<string>
- xml response as plain text
Public properties
Api Api get; set;
Api instance that will be used to execute queries


Excutive Engineer (Production) at ONGC LTD
Branch : Mechanical Engineering ( 2007 - 2011 )
Air Field Ground lightning Specialist at Tata Power Strategic Enginerring Division
Branch : Electrical Engineering ( 2007 - 2011)
Worked in the hydro power generation.
Deputy Manager at Ashok Leyland Ltd
Manager at Hindustan Petroleum Corporation Limited
EXECUTIVE ENGINEER AT ONGC LTD
working in BMS system (Battery management system) And CAN communication (intra vehicle community)
Software Developer/Assistant Manage in Genpact digital-Analytics and Research
Branch: Computer Science & Engineering (2007 - 2011 )
Currently working in TCS
Currently working in CAPGEMINI
Branch: Civil Engineering ( 2007 - 2011 )
Service Delivery Executive in Godrej and Boyce mfg co ltd.
Branch : Mechanical Engineering ( 2013 - 2017)
Senior Electrical Engineer at OIL
Branch : Electrical Engineering ( 2014 - 2018)
Technical Development Engineer(Aero360 Dronix Technologies Pvt Ltd)
Branch : Mechanical Engineering ( 2014 - 2018)
Branch : Electrical Engineering ( 2016 - 2020)
Branch : Mechanical Engineering ( 2016 - 2020)
Branch : Computer Science Engineering ( 2016 - 2020)


Cardiff Christmas Market 2019 food prices and how they compare to last year
A number of stalls have returned to serve hungry visitors this year too
by Joshua KnapmanThe festive feeling has gripped Cardiff as the city's Christmas Market is back.
And while there isn't an official lights switch-on this year, there's still Winter Wonderland and the wooden chalets to help you get in the seasonal spirit.
Many of the market stalls have returned for another year, bringing with them their festive food and drinks.
However, these markets have a reputation for being on the pricey side, so we decided to see how they compare to last year's costings.
And while a number of stalls have kept their prices steady, a few have introduced slight increases to the cost of their goods.
Here's how the Cardiff Christmas Market prices compare to 2018.
The Melted Cheese Company
This gooey, melted cheese hut is always a firm favourite.
And good news for cheese lovers, the prices haven't budged since last year.
Here are this year's prices:
- Traditional Raclette (melted cheese with garlic baby potatoes) - £6
- Raclette Baguette £6
- Three cheese nachos - £5
- Three cheese garlic bread - £3
Chock shop
As with last year, Chock Shop is selling any brownie with some sauce and cream - £3 (or £2.50 without the extras).
Hot Roasted Nuts
This hot nut stall has kept its prices the same as 2018.
- One bag - £2
- Three bags - £5
Snowdonia Cheese Company
There are lots of cheeses on offer at this stall and they're sold in truckles (basically, a mini wheel).

- A truckle of cheese - previously cost £4.50, now costs £5
- Three truckles used to cost £12, the deal now costs £13.
- Six truckles used to be £21, but for this year, they're selling five truckles for £20.
Do you love Christmas?
Stay up to date with all the festive goings on around Wales over at our new Facebook group, Christmas in Wales 2019.
You can find it here.
Cottage Sweets
Here you'll find a host of marshmallows on offer - and there are even some samples to try.
Prices remain the same as 2018:
- A bag of marshmallows - £4
- Lollies - £2.50 each
Celteg Wines
There's a slight change in price here.
- Mulled wine was £3.50 per cup, it's now £3.75
- Mulled wine with a shot of rum/brandy was £5 per cup - that's now £5.50 this year.
However, if you buy six cups, you'll get the seventh free.
The Christmas Carvery
Prices here have increased slightly.
- Roast meat rolls were £4.80 and now cost £5.50, while roast meat baguettes used to cost £5.50 but are now £6.50.
- Yorkshire pudding wrap was £6.50 last year, it's now £6.80.
- Roast potatoes were £3, this year they cost £4.50.
German sausages
All the sausages here cost £5, the same as last year.
- Krakauer (Gluten free spicy red sausage) - £5
- Bratwurst (gluten free traditional white German sausage) - £5
- Currywurst (gluten free sausage chopped with a curry ketchup) - £5
- Käsekrainer (gluten free smoked sausage stuffed with cheese) - £5
Rue Cocotte
There are some price changes - and a slight menu change at this French streetfood stall.
- Tartiflette (fried potatoes with melted cheese, bacon and onions) was £5, this year it's £6 - or £7 with a slice of pork shoulder.
- Last year there was a Pumpkin soup which cost £3, whereas this year you can pick up an onion soup for £4.
Churros
Six churro sticks and a chocolate dipping sauce cost £4 last year. This year it's six sticks and chocolate for £5 - or you can get four sticks and chocolate for £4.
French pancakes at the Windmill
The French-style pancakes have rise slightly in price since 2019.
- Lemon and sugar was £3, this year it's £3.50.
- Nutella and banana was £4 last year, it is now £5.
- Maple syrup was £3.50, now £4.
- Cherries and cream was £4, it's now £5.
- Ham and cheese cost £4 last year, this year it's £5.
- Cheese and pineapple was £4, it's now £5.
- Strawberries and cream was £4, it's now £5.


This attractive medieval port lies about 6 miles up the Treguier River and is a destination not to be passed by when cruising this coast.
Position 48° 47'14"N, 03° 13'19"W (marina)
Position 48° 52'10"N, 03° 09'47"W (river entrance)
There is a marina off the town but beware of the strong tides in this part of the river. Avoid entering the marina except at slack water (the harbour master strongly advises this). There is a holding pontoon in the river.
On arrival in high season wait near the end of first pontoon (E) for HM to guide you to your berth. Contact HM in advance on VHF Channel 9.
Anchorages
There are several anchorages in the river. The most useful being
(a) near the river mouth; about 1 mile west of La Corne lighthouse, close to the northern bank.
(b) about half a mile below the town, tucked in a bend of the river.
Both the marina and the river offer complete shelter. The main channel is well marked and can be entered both day and night in most conditions, at least as far as La Corne. Beyond that, although the some buoys in the river are lit, navigating on a dark night would be difficult.
Last updated July 2016.


{% extends "layout_bsa.html" %} {% block page_title %} NHS Penalty Charge Notice {% endblock %} {% block content %} BETA This is a new service – your feedback will help us to improve it. Back You have entered an invalid email address Please ensure your email address has been entered correctly Challenge a Penalty Charge Notice What is your email address? Enter an email address Invalid email address {% endblock %}
BETA This is a new service – your feedback will help us to improve it.
Challenge a Penalty Charge Notice


SENSOR
Humidity Average
-
%
Temperature Average
C
Brightness Average
lx
NILAI AMBANG:
DIGITAL INPUT
ANALOG INPUT
R:
G:
B:
WARNING! BRIGHTNESS IS TOO LOW


RTF.
Signup
Organization Invitation Code
Continue
The code you entered is not correct
Username
Username not available
First Name
Last Name
Email
Country
{{ct.name}}
Password
Use at least 8 characters including three of four groups in: numbers, symbols, capital letters, and lower-case letters.
Repeat Password
These password don't match. Try again?
Signup


Two-factor authentication adds an additional layer of security to your account by requiring more than just a password to log in.
Two-factor authentication by email
{{user.twoFactorEmail ? 'Enabled' : 'Disabled' }}
Recovery codes
{{user.twoFactorEmail ? 'Enabled' : 'Disabled' }}


HTML Components, Version 11.10
Copyright © 1995-2008 by L. David Baldwin, 2008-2023 by the HtmlViewer Team See below


Kelly Likes:
(scroll down)
Photography
Kelly, in the time she can find between school and the rest of life, enjoys taking photographs. Her favorite subjects are grand sweeping landscapres, and tiny ordinary things which might usually be overlooked. A couple of courses in college on photography and film development lead to a most rewarding hobby. She hopes someday to have her own darkroom and real time to devote to it.
Code
Kelly is currently a student at Ada developers academy in Seattle. She fell in love with code from the first look into the HTML of a website. She tinkered with the code, and loved the power to change what she saw on the screen with a few keystroke. Ada Developers Academy created a bridge into that world. The water here is deeper than she had imagined and she loves it.
Nature
Having grown up in small town America, Kelly frequently took refuge from the slings and arrows of life sitting in the fork of a tree with a book in hand. There was a peace in nature not found elsewhere. Kelly returns to find that feeling whenever possible.


{% extends 'master.html' %} {% import 'macros.html' as macros %} {% block embed %}
Over 150 companies are seeking their next next remote employee. Interested?


Members
annotationStorage :AnnotationStorage
Storage for annotation data in forms.
Type:
- AnnotationStorage
- Source:
fingerprint :string
A (not guaranteed to be) unique ID to identify a PDF.
Type:
- string
- Source:
loadingParams :DocumentInitParameters
A subset of the current {DocumentInitParameters}, which are either needed in the viewer and/or whose default values may be affected by the `apiCompatibilityParams`.
Type:
- DocumentInitParameters
- Source:
loadingTask :PDFDocumentLoadingTask
The loadingTask for the current document.
Type:
- PDFDocumentLoadingTask
- Source:
numPages :number
Total number of pages in the PDF file.
Type:
- number
- Source:
Methods
cleanup() → {Promise}
Cleans up resources allocated by the document on both the main and worker
threads.
NOTE: Do not, under any circumstances, call this method when rendering is
currently ongoing since that may lead to rendering errors.
- Source:
Returns:
A promise that is resolved when clean-up has finished.
- Type
- Promise
destroy()
Destroys the current document instance and terminates the worker.
- Source:
getAttachments() → {Promise.<any>}
- Source:
Returns:
A promise that is resolved with a lookup table
for mapping named attachments to their content.
- Type
- Promise.<any>
getData() → {Promise.<TypedArray>}
- Source:
Returns:
A promise that is resolved with a
{TypedArray} that has the raw data from the PDF.
- Type
- Promise.<TypedArray>
getDestination(id) → {Promise.<Array.<any>>}
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | The named destination to get. |
- Source:
Returns:
A promise that is resolved with all
information of the given named destination.
- Type
- Promise.<Array.<any>>
getDestinations() → {Promise.<Object.<string, Array.<any>>>}
- Source:
Returns:
A promise that is resolved
with a mapping from named destinations to references.
This can be slow for large documents. Use `getDestination` instead.
- Type
- Promise.<Object.<string, Array.<any>>>
getDownloadInfo() → {Promise.<{length: number}>}
- Source:
Returns:
A promise that is resolved when the
document's data is loaded. It is resolved with an {Object} that contains
the `length` property that indicates size of the PDF data in bytes.
- Type
- Promise.<{length: number}>
getJavaScript() → {Promise.<(Array.<string>|null)>}
- Source:
Returns:
A promise that is resolved with
an {Array} of all the JavaScript strings in the name tree, or `null`
if no JavaScript exists.
- Type
- Promise.<(Array.<string>|null)>
getMetadata() → {Promise.<{info: Object, metadata: Metadata}>}
- Source:
Returns:
A promise that is
resolved with an {Object} that has `info` and `metadata` properties.
`info` is an {Object} filled with anything available in the information
dictionary and similarly `metadata` is a {Metadata} object with
information from the metadata section of the PDF.
- Type
- Promise.<{info: Object, metadata: Metadata}>
getOpenAction() → {Promise.<(any|null)>}
- Source:
Returns:
A promise that is resolved with an {Array}
containing the destination, or `null` when no open action is present
in the PDF.
- Type
- Promise.<(any|null)>
getOptionalContentConfig() → {Promise.<OptionalContentConfig>}
- Source:
Returns:
A promise that is resolved with
an OptionalContentConfig that contains all the optional content
groups (assuming that the document has any).
- Type
- Promise.<OptionalContentConfig>
getOutline() → {Promise.<Array.<OutlineNode>>}
- Source:
Returns:
A promise that is resolved with an
{Array} that is a tree outline (if it has one) of the PDF file.
- Type
- Promise.<Array.<OutlineNode>>
getPage(pageNumber) → {Promise.<PDFPageProxy>}
Parameters:
| Name | Type | Description |
|---|---|---|
pageNumber |
number | The page number to get. The first page is 1. |
- Source:
Returns:
A promise that is resolved with
a PDFPageProxy object.
- Type
- Promise.<PDFPageProxy>
getPageIndex(ref) → {Promise.<{num: number, gen: number}>}
Parameters:
| Name | Type | Description |
|---|---|---|
ref |
Object | The page reference. Must have the `num` and `gen` properties. |
- Source:
Returns:
A promise that is resolved
with the page index (starting from zero) that is associated with the
reference.
- Type
- Promise.<{num: number, gen: number}>
getPageLabels() → {Promise.<(Array.<string>|null)>}
- Source:
Returns:
A promise that is resolved with
an {Array} containing the page labels that correspond to the page
indexes, or `null` when no page labels are present in the PDF file.
- Type
- Promise.<(Array.<string>|null)>
getPageLayout() → {Promise.<string>}
- Source:
Returns:
A promise that is resolved with a {string}
containing the page layout name.
- Type
- Promise.<string>
getPageMode() → {Promise.<string>}
- Source:
Returns:
A promise that is resolved with a {string}
containing the page mode name.
- Type
- Promise.<string>
getPermissions() → {Promise.<(Array.<number>|null)>}
- Source:
Returns:
A promise that is resolved with
an {Array} that contains the permission flags for the PDF document, or
`null` when no permissions are present in the PDF file.
- Type
- Promise.<(Array.<number>|null)>
getStats() → {Promise.<PDFDocumentStats>}
- Source:
Returns:
A promise this is resolved with
current statistics about document structures (see
PDFDocumentStats).
- Type
- Promise.<PDFDocumentStats>
getViewerPreferences() → {Promise.<(Object|null)>}
- Source:
Returns:
A promise that is resolved with an
{Object} containing the viewer preferences, or `null` when no viewer
preferences are present in the PDF file.
- Type
- Promise.<(Object|null)>
saveDocument(annotationStorage) → {Promise.<Uint8Array>}
Parameters:
| Name | Type | Description |
|---|---|---|
annotationStorage |
AnnotationStorage | Storage for annotation data in forms. |
- Source:
Returns:
A promise that is resolved with a
{Uint8Array} containing the full data of the saved document.
- Type
- Promise.<Uint8Array>


Dependency injection (DI) is a technique in which an object receives other objects that it depends on.
Always when I read this during my software engineering courses or in Java related contexts, I was confused. I didn't quite understand what it is and why people make such a fuzz around it.
Now, I think it is just a super simple idea which does not really deserve it's own name. It's making pure functions; removing the implicit dependency on outside state to explicit dependency of on a parameter.
Examples
Time
I often write functions which depend on the current time / date. Let's say we want to just get a filename. The simple solution is
import datetime
def get_filename() -> str:
"""Get something like '2020-06-10-13-06-31.txt'."""
now = datetime.datetime.now()
return f"{now:%Y-%m-%d-%H-%M-%S}.txt"
That is super straight forward, but maybe you want to test it. Then you suddenly have to use mocking for datetime.
Or, you make the function a bit different:
import datetime
def get_filename(now=None) -> str:
"""Get something like '2020-06-10-13-06-31.txt'."""
if now is None:
now = datetime.datetime.now()
return f"{now:%Y-%m-%d-%H-%M-%S}.txt"
So you inject the dependency now
. Due to Pythons handling of default
parameters you cannot assign it as a default value, but that is a different
topic.
Although you use the function exactly the same way, you can test it by setting
the now
parameter. The dependency on datetime
was removed for the imporant
code path. Instead, the dependency on an explicitly set parameter now
was
added.
Query Builder
def execute_query(db, sql):
connection = db.connect()
connection.execute(sql)
Here, the dependency is the database object db
. It is injected in the
function.
Why is it used?
Dependency injection can be used instead of global state. The advantages of dependency injection compared to having global state are:
- Flexibility: Dependency injection can make your code usable in a broader range of scenarios
- Testing: Dependency injection can make testing easier. With global state, you need to mock. However, please note that the unit test with dependency injection does not test if the interface of the dependency changed. This means with dependency injection you might want to add an explicit interface test (aka boundary test).
When not to use it
You can apply dependency injection when some kind of global state is involved:
from typing import Callable
def hello_world(output_function: Callable, name: str):
output_function(f"Hello, {name}")
hello_world(output_function=print, name="world")
Please don't do that. Only use it if you need it. YAGNI, if you want to sound cool.
In this example you don't make testing easier. You might have added flexibility, but the cost of it is that your code becomes harder to read. Code readability matters, because we read code often. When the function looks complicated, other people (including yourself in future) might just decide to implement the thing from scratch.
Inversion of Control
Inversion of control (IoC) is a programming principle. [...] with inversion of control, [a framework] calls into the custom, or task-specific, code.
See https://martinfowler.com/articles/injection.html
Liskov substitution principle
See also
- StackOverflow:
- tux21b: Why is IoC / DI not common in Python?, 2011
- bagrat: What is a Pythonic way for Dependency Injection?, 2015
- Yeray Díaz: Import as an antipattern - Demystifying Dependency Injection in modern Python at PyCon UK, 2019. On YouTube (21 minutes).
- Ilya Pekelny: Inversion of Control — Python anti-pattern, 2018.
- https://www.quora.com/unanswered/What-are-non-spring-examples-where-IoC-is-used-Python-examples-are-appreciated


Read/Write¶
Functions to read and write dynamic graphs and snapshot_affiliations.
Simple example¶
import tnetwork as tn
sn = tn.read_snapshots("file_to_Read")
tn.write_snapshots(sn,"file_to_write")
Read/Write graphs¶
Read/Write snapshot graphs¶
write_snapshots (dynGraph, outputDir, format) |
Write one file per snapshot |
read_snapshots (inputDir[, format]) |
Read as one file per snapshot |
read_graph_link_stream (inputFile) |
Format used by SOCIOPATTERN |
Read/Write interval graphs¶
write_IG (theDynGraph, fileOutput) |
Write as list of periods |
write_ordered_changes (dynNet, fileOutput[, …]) |
Write as list of successive changes |
read_IG (file_address) |
Read as list of periods |
Read/Write Communities¶
Read/Write snapshot snapshot_affiliations¶
write_com_SN (dyn_communities, output_dir[, …]) |
Write directory, 1 file = snapshot_affiliations of a snaphshot |
read_SN_by_com (inputDir[, sn_id_transformer]) |
Read directory, 1 file = snapshot_affiliations of a snaphshot |


My analytics
Using Parse.ly
Top Stories (last 72 hours)
www.greentechmedia.com
See breakdown by author
Apple Launches Home Kit
The Money Problem
Big Tariffs
Move Over
Grid Energy Storage


by Jarett Lee on 2020-02-19
Here's my todo list from last time:
I'm planning on getting my /dist/index.html to show when you go to github today.
Currently, I turned on GitHub Pages and my README.md is being served at https://jarett-lee.github.io/phaser-every-day/. I want my /dist/index.html file to be served instead.
It turns out, github pages doesn't support serving just any sub-folder, it has to be named docs. So, the first step is to point webpack to build into /docs/. This is an easy fix, just change the output path to docs.
// webpack.config.js
const config = {
output: {
filename: "[name].bundle.js",
path: path.resolve(
__dirname,
"docs",
),
},
};
Next, I'll save and commit the docs. I read that it takes a while, so I'll get started on making the markdown post files while I wait as well.
(The change went through in less than an hour.)
https://github.com/peerigon/markdown-loader
npm install --save-dev markdown-loader
// webpack.config.js
const config = {
module: {
rules: [
{
test: /\.md$/,
use: [
{
loader: "file-loader",
options: {
name: "[path][name].html",
context: "src",
},
},
"extract-loader",
"html-loader",
"markdown-loader",
],
},
],
},
};
This will copy the markdown files to their destination, but only if they're loaded. Files are loaded if they're imported from a js-equivalent file and when they're set as an entry point. I want every file in the posts folder to be loaded. I did this using entry points and adding every post file as an entry point. I implemented this solution over including every file since I remember having trouble doing that in previous projects.
// webpack.config.js
module.exports = (env, argv) => {
const postsDir = path.join(__dirname, "src", "posts");
config.entry["posts"] = fs
.readdirSync(postsDir)
.filter(file => path.extname(file) === ".md")
.map(file => path.relative(__dirname, path.join(postsDir, file)))
// TODO find a nicer way to add the preceding dot
.map(file => "./" + file);
return config;
};
# .gitignore
/docs/posts.bundle.js
What if... I could specify index.html as the entry point and webpack would include all the js files from there? This probably can't happen since I think the idea is that the same js file can be used from multiple html files. But I think this idea is looking into.
Here's some people talking about this idea: https://github.com/webpack/webpack/issues/536. I'll wait until this has more official support.
| Git message prefix | Description | |
|---|---|---|
| Post | Posting | Change to the /src/.html and /src/.md files |
| Publish | Publishing | Change to the /docs/ files |
| (Other) | Coding | All other changes |


ElasticFileSystem is distributed file system which speaks the NFS protocol. It is rumored to be a GlusterFS fork behind the scenes at AWS.
Drawbacks:
Setting permissions on persistent volumes is not nailed down in the Kubernetes spec yet. This adds some complications we will discuss later.
A crafty user may be able to contact the EFS server directly and read other user’s files depending on how the system is setup.
Procedure:
Setting up an EFS volume
Go through the EFS setup wizard in AWS (in the future this part may be scripted). The new EFS volume must be in the same VPC as your cluster. This can be changed in the AWS settings after it has been created.
Next, create a new security group for NFS traffic (target other instances in that group). Add a rule for incoming NFS traffic to the node security group and to the master security group. Change the EFS volume to use that security group.
To verify that your EFS volume is working correctly, ssh into one of the master nodes and su to root. Next, follow the steps on the EFS console page for mounting your NFS volume. The DNS entry may take a few minutes to show up.
Once the mount succeeds, unmount it and disconnect from the admin node.
Configuring Kubernetes to understand your EFS volume
Create test_efs.yaml:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-persist spec: capacity: storage: 123Gi accessModes: - ReadWriteMany nfs: server: fs-${EFS_ID}.efs.us-east-1.amazonaws.com path: "/"
Create test_efs_claim.yaml:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: efs-persist spec: storageClassName: "" accessModes: - ReadWriteMany resources: requests: storage: 11Gi
The sizes in these files are misleading. There is no quota enforced with EFS. In the future we want to set the efs PersistentVolume size to something ridiculously large like 8EiB and the PersistentVolumeClaim to 10GB. As far as we know at the moment, these sizes don’t matter.
A PersistentVolume defines a service which can perform a mount inside of a container. The PersistentVolumeClaim is a way of reserving a portion of the PersistentVolume and potentially locking access to it.
The storageClassName setting looks innocuous, but it is incredibly critical. The only non storage class PV in the cluster is the one we defined above. In the future we should tag different PV’s and use tag filters in the PVC instead of relying on a default of “”.
We are going to configure jupyterhub to use the same “static” claim among all of the containers. This means that all of our users will be using the same EFS share which should be able to scale as high as we need.
This part is a little different than the standard guide. We need to create these PV’s and PVC’s in the namespace that our app will live in. Choose a namespace (this will be the same as the namespace you will use in the helm install step later on)
Run these commands to setup your namespace and storage:
kubectl create namespace <your namespace> kubectl --namespace=<your namespace> apply -f test_efs.yaml kubectl --namespace=<your namespace> apply -f test_efs_claim.yaml
I don’t know if the PV needs to be in the namespace, but the arg does not seem to hurt anything. The PVC must be in the namespace or stuff will break in weird ways.
Configuring your application to use EFS as it’s backing storage
We now add the following to config.yaml:
singleuser: image: name: jupyter/base-notebook tag: latest storage: type: "static" static: pvcName: "efs-persist" subPath: 'home/{username}' extraEnv: CHOWN_HOME: 'yes' uid: 0 fsGid: 0 cmd: "start-singleuser.sh"
The image setting overrides the default pinned jh base image since it has not yet been updated to include the CHOWN_HOME setting. This will be fixed in Z2JH 0.7.
type static tells jh not to use a storage class and instead use a PVC defined below.
pvcName matches the claim name we specified before
subPath tells where on the supplied storage the mount point should be. In this case it will be “$EFS_ROOT/home/{username}”
It turns out there is a bug in jupyterhub where the default subPath does not work, and setting the subPath to “{username}” breaks in the same way.
The extraEnv section set’s environmental variables before trying to start jupyterhub inside of the user’s container. CHOWN_HOME is needed to force the ownership change of the home directory.
Kubernetes is still conflicted if a uid and a gid should be passed in to change how the directory is mounted inside of the container. What we do for now is auto-chown the directory before jupyterhub has been started.
The UID/fsGID is necessary to force the container to run the start-singleuser.sh as root. Once start-singleuser.sh has properly changed the ownership of the directory, it su’s to the jupyterhub user.


{% extends "content_template.html" %} {% from "components/service-link.html" import service_link %} {% block per_page_title %} Upload a letter {% endblock %} {% block content_column_content %}
Upload a one-off letter as a PDF and we’ll print, pack and post it for you.
You can use this feature if you send a lot of one-off letters or if our reusable letter templates do not meet your needs.
To upload and send a letter from a PDF file:
Your file must meet our letter specification.
{% endblock %}


Home
Sales
Stylesheet
Code Fellows
Cookie Sales
Name of Store:
Min Customers:
Max Customers:
Avg Sales:
submit


Typedefs | |
| typedef detail::tmat2x2< int, highp > | glm::highp_imat2 |
| typedef detail::tmat3x3< int, highp > | glm::highp_imat3 |
| typedef detail::tmat4x4< int, highp > | glm::highp_imat4 |
| typedef detail::tmat2x2< int, highp > | glm::highp_imat2x2 |
| typedef detail::tmat2x3< int, highp > | glm::highp_imat2x3 |
| typedef detail::tmat2x4< int, highp > | glm::highp_imat2x4 |
| typedef detail::tmat3x2< int, highp > | glm::highp_imat3x2 |
| typedef detail::tmat3x3< int, highp > | glm::highp_imat3x3 |
| typedef detail::tmat3x4< int, highp > | glm::highp_imat3x4 |
| typedef detail::tmat4x2< int, highp > | glm::highp_imat4x2 |
| typedef detail::tmat4x3< int, highp > | glm::highp_imat4x3 |
| typedef detail::tmat4x4< int, highp > | glm::highp_imat4x4 |
| typedef detail::tmat2x2< int, mediump > | glm::mediump_imat2 |
| typedef detail::tmat3x3< int, mediump > | glm::mediump_imat3 |
| typedef detail::tmat4x4< int, mediump > | glm::mediump_imat4 |
| typedef detail::tmat2x2< int, mediump > | glm::mediump_imat2x2 |
| typedef detail::tmat2x3< int, mediump > | glm::mediump_imat2x3 |
| typedef detail::tmat2x4< int, mediump > | glm::mediump_imat2x4 |
| typedef detail::tmat3x2< int, mediump > | glm::mediump_imat3x2 |
| typedef detail::tmat3x3< int, mediump > | glm::mediump_imat3x3 |
| typedef detail::tmat3x4< int, mediump > | glm::mediump_imat3x4 |
| typedef detail::tmat4x2< int, mediump > | glm::mediump_imat4x2 |
| typedef detail::tmat4x3< int, mediump > | glm::mediump_imat4x3 |
| typedef detail::tmat4x4< int, mediump > | glm::mediump_imat4x4 |
| typedef detail::tmat2x2< int, lowp > | glm::lowp_imat2 |
| typedef detail::tmat3x3< int, lowp > | glm::lowp_imat3 |
| typedef detail::tmat4x4< int, lowp > | glm::lowp_imat4 |
| typedef detail::tmat2x2< int, lowp > | glm::lowp_imat2x2 |
| typedef detail::tmat2x3< int, lowp > | glm::lowp_imat2x3 |
| typedef detail::tmat2x4< int, lowp > | glm::lowp_imat2x4 |
| typedef detail::tmat3x2< int, lowp > | glm::lowp_imat3x2 |
| typedef detail::tmat3x3< int, lowp > | glm::lowp_imat3x3 |
| typedef detail::tmat3x4< int, lowp > | glm::lowp_imat3x4 |
| typedef detail::tmat4x2< int, lowp > | glm::lowp_imat4x2 |
| typedef detail::tmat4x3< int, lowp > | glm::lowp_imat4x3 |
| typedef detail::tmat4x4< int, lowp > | glm::lowp_imat4x4 |
| typedef detail::tmat2x2< uint, highp > | glm::highp_umat2 |
| typedef detail::tmat3x3< uint, highp > | glm::highp_umat3 |
| typedef detail::tmat4x4< uint, highp > | glm::highp_umat4 |
| typedef detail::tmat2x2< uint, highp > | glm::highp_umat2x2 |
| typedef detail::tmat2x3< uint, highp > | glm::highp_umat2x3 |
| typedef detail::tmat2x4< uint, highp > | glm::highp_umat2x4 |
| typedef detail::tmat3x2< uint, highp > | glm::highp_umat3x2 |
| typedef detail::tmat3x3< uint, highp > | glm::highp_umat3x3 |
| typedef detail::tmat3x4< uint, highp > | glm::highp_umat3x4 |
| typedef detail::tmat4x2< uint, highp > | glm::highp_umat4x2 |
| typedef detail::tmat4x3< uint, highp > | glm::highp_umat4x3 |
| typedef detail::tmat4x4< uint, highp > | glm::highp_umat4x4 |
| typedef detail::tmat2x2< uint, mediump > | glm::mediump_umat2 |
| typedef detail::tmat3x3< uint, mediump > | glm::mediump_umat3 |
| typedef detail::tmat4x4< uint, mediump > | glm::mediump_umat4 |
| typedef detail::tmat2x2< uint, mediump > | glm::mediump_umat2x2 |
| typedef detail::tmat2x3< uint, mediump > | glm::mediump_umat2x3 |
| typedef detail::tmat2x4< uint, mediump > | glm::mediump_umat2x4 |
| typedef detail::tmat3x2< uint, mediump > | glm::mediump_umat3x2 |
| typedef detail::tmat3x3< uint, mediump > | glm::mediump_umat3x3 |
| typedef detail::tmat3x4< uint, mediump > | glm::mediump_umat3x4 |
| typedef detail::tmat4x2< uint, mediump > | glm::mediump_umat4x2 |
| typedef detail::tmat4x3< uint, mediump > | glm::mediump_umat4x3 |
| typedef detail::tmat4x4< uint, mediump > | glm::mediump_umat4x4 |
| typedef detail::tmat2x2< uint, lowp > | glm::lowp_umat2 |
| typedef detail::tmat3x3< uint, lowp > | glm::lowp_umat3 |
| typedef detail::tmat4x4< uint, lowp > | glm::lowp_umat4 |
| typedef detail::tmat2x2< uint, lowp > | glm::lowp_umat2x2 |
| typedef detail::tmat2x3< uint, lowp > | glm::lowp_umat2x3 |
| typedef detail::tmat2x4< uint, lowp > | glm::lowp_umat2x4 |
| typedef detail::tmat3x2< uint, lowp > | glm::lowp_umat3x2 |
| typedef detail::tmat3x3< uint, lowp > | glm::lowp_umat3x3 |
| typedef detail::tmat3x4< uint, lowp > | glm::lowp_umat3x4 |
| typedef detail::tmat4x2< uint, lowp > | glm::lowp_umat4x2 |
| typedef detail::tmat4x3< uint, lowp > | glm::lowp_umat4x3 |
| typedef detail::tmat4x4< uint, lowp > | glm::lowp_umat4x4 |
| typedef mediump_imat2 | glm::imat2 |
| typedef mediump_imat3 | glm::imat3 |
| typedef mediump_imat4 | glm::imat4 |
| typedef mediump_imat2x2 | glm::imat2x2 |
| typedef mediump_imat2x3 | glm::imat2x3 |
| typedef mediump_imat2x4 | glm::imat2x4 |
| typedef mediump_imat3x2 | glm::imat3x2 |
| typedef mediump_imat3x3 | glm::imat3x3 |
| typedef mediump_imat3x4 | glm::imat3x4 |
| typedef mediump_imat4x2 | glm::imat4x2 |
| typedef mediump_imat4x3 | glm::imat4x3 |
| typedef mediump_imat4x4 | glm::imat4x4 |
| typedef mediump_umat2 | glm::umat2 |
| typedef mediump_umat3 | glm::umat3 |
| typedef mediump_umat4 | glm::umat4 |
| typedef mediump_umat2x2 | glm::umat2x2 |
| typedef mediump_umat2x3 | glm::umat2x3 |
| typedef mediump_umat2x4 | glm::umat2x4 |
| typedef mediump_umat3x2 | glm::umat3x2 |
| typedef mediump_umat3x3 | glm::umat3x3 |
| typedef mediump_umat3x4 | glm::umat3x4 |
| typedef mediump_umat4x2 | glm::umat4x2 |
| typedef mediump_umat4x3 | glm::umat4x3 |
| typedef mediump_umat4x4 | glm::umat4x4 |
| typedef detail::tmat2x2<int, highp> glm::highp_imat2 |
High-precision signed integer 2x2 matrix.
Definition at line 62 of file matrix_integer.hpp.
| typedef detail::tmat2x2<int, highp> glm::highp_imat2x2 |
High-precision signed integer 2x2 matrix.
Definition at line 74 of file matrix_integer.hpp.
| typedef detail::tmat2x3<int, highp> glm::highp_imat2x3 |
High-precision signed integer 2x3 matrix.
Definition at line 78 of file matrix_integer.hpp.
| typedef detail::tmat2x4<int, highp> glm::highp_imat2x4 |
High-precision signed integer 2x4 matrix.
Definition at line 82 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, highp> glm::highp_imat3 |
High-precision signed integer 3x3 matrix.
Definition at line 66 of file matrix_integer.hpp.
| typedef detail::tmat3x2<int, highp> glm::highp_imat3x2 |
High-precision signed integer 3x2 matrix.
Definition at line 86 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, highp> glm::highp_imat3x3 |
High-precision signed integer 3x3 matrix.
Definition at line 90 of file matrix_integer.hpp.
| typedef detail::tmat3x4<int, highp> glm::highp_imat3x4 |
High-precision signed integer 3x4 matrix.
Definition at line 94 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, highp> glm::highp_imat4 |
High-precision signed integer 4x4 matrix.
Definition at line 70 of file matrix_integer.hpp.
| typedef detail::tmat4x2<int, highp> glm::highp_imat4x2 |
High-precision signed integer 4x2 matrix.
Definition at line 98 of file matrix_integer.hpp.
| typedef detail::tmat4x3<int, highp> glm::highp_imat4x3 |
High-precision signed integer 4x3 matrix.
Definition at line 102 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, highp> glm::highp_imat4x4 |
High-precision signed integer 4x4 matrix.
Definition at line 106 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, highp> glm::highp_umat2 |
High-precision unsigned integer 2x2 matrix.
Definition at line 211 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, highp> glm::highp_umat2x2 |
High-precision unsigned integer 2x2 matrix.
Definition at line 223 of file matrix_integer.hpp.
| typedef detail::tmat2x3<uint, highp> glm::highp_umat2x3 |
High-precision unsigned integer 2x3 matrix.
Definition at line 227 of file matrix_integer.hpp.
| typedef detail::tmat2x4<uint, highp> glm::highp_umat2x4 |
High-precision unsigned integer 2x4 matrix.
Definition at line 231 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, highp> glm::highp_umat3 |
High-precision unsigned integer 3x3 matrix.
Definition at line 215 of file matrix_integer.hpp.
| typedef detail::tmat3x2<uint, highp> glm::highp_umat3x2 |
High-precision unsigned integer 3x2 matrix.
Definition at line 235 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, highp> glm::highp_umat3x3 |
High-precision unsigned integer 3x3 matrix.
Definition at line 239 of file matrix_integer.hpp.
| typedef detail::tmat3x4<uint, highp> glm::highp_umat3x4 |
High-precision unsigned integer 3x4 matrix.
Definition at line 243 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, highp> glm::highp_umat4 |
High-precision unsigned integer 4x4 matrix.
Definition at line 219 of file matrix_integer.hpp.
| typedef detail::tmat4x2<uint, highp> glm::highp_umat4x2 |
High-precision unsigned integer 4x2 matrix.
Definition at line 247 of file matrix_integer.hpp.
| typedef detail::tmat4x3<uint, highp> glm::highp_umat4x3 |
High-precision unsigned integer 4x3 matrix.
Definition at line 251 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, highp> glm::highp_umat4x4 |
High-precision unsigned integer 4x4 matrix.
Definition at line 255 of file matrix_integer.hpp.
| typedef mediump_imat2 glm::imat2 |
Signed integer 2x2 matrix.
Definition at line 387 of file matrix_integer.hpp.
| typedef mediump_imat2x2 glm::imat2x2 |
Signed integer 2x2 matrix.
Definition at line 399 of file matrix_integer.hpp.
| typedef mediump_imat2x3 glm::imat2x3 |
Signed integer 2x3 matrix.
Definition at line 403 of file matrix_integer.hpp.
| typedef mediump_imat2x4 glm::imat2x4 |
Signed integer 2x4 matrix.
Definition at line 407 of file matrix_integer.hpp.
| typedef mediump_imat3 glm::imat3 |
Signed integer 3x3 matrix.
Definition at line 391 of file matrix_integer.hpp.
| typedef mediump_imat3x2 glm::imat3x2 |
Signed integer 3x2 matrix.
Definition at line 411 of file matrix_integer.hpp.
| typedef mediump_imat3x3 glm::imat3x3 |
Signed integer 3x3 matrix.
Definition at line 415 of file matrix_integer.hpp.
| typedef mediump_imat3x4 glm::imat3x4 |
Signed integer 3x4 matrix.
Definition at line 419 of file matrix_integer.hpp.
| typedef mediump_imat4 glm::imat4 |
Signed integer 4x4 matrix.
Definition at line 395 of file matrix_integer.hpp.
| typedef mediump_imat4x2 glm::imat4x2 |
Signed integer 4x2 matrix.
Definition at line 423 of file matrix_integer.hpp.
| typedef mediump_imat4x3 glm::imat4x3 |
Signed integer 4x3 matrix.
Definition at line 427 of file matrix_integer.hpp.
| typedef mediump_imat4x4 glm::imat4x4 |
Signed integer 4x4 matrix.
Definition at line 431 of file matrix_integer.hpp.
| typedef detail::tmat2x2<int, lowp> glm::lowp_imat2 |
Low-precision signed integer 2x2 matrix.
Definition at line 161 of file matrix_integer.hpp.
| typedef detail::tmat2x2<int, lowp> glm::lowp_imat2x2 |
Low-precision signed integer 2x2 matrix.
Definition at line 174 of file matrix_integer.hpp.
| typedef detail::tmat2x3<int, lowp> glm::lowp_imat2x3 |
Low-precision signed integer 2x3 matrix.
Definition at line 178 of file matrix_integer.hpp.
| typedef detail::tmat2x4<int, lowp> glm::lowp_imat2x4 |
Low-precision signed integer 2x4 matrix.
Definition at line 182 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, lowp> glm::lowp_imat3 |
Low-precision signed integer 3x3 matrix.
Definition at line 165 of file matrix_integer.hpp.
| typedef detail::tmat3x2<int, lowp> glm::lowp_imat3x2 |
Low-precision signed integer 3x2 matrix.
Definition at line 186 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, lowp> glm::lowp_imat3x3 |
Low-precision signed integer 3x3 matrix.
Definition at line 190 of file matrix_integer.hpp.
| typedef detail::tmat3x4<int, lowp> glm::lowp_imat3x4 |
Low-precision signed integer 3x4 matrix.
Definition at line 194 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, lowp> glm::lowp_imat4 |
Low-precision signed integer 4x4 matrix.
Definition at line 169 of file matrix_integer.hpp.
| typedef detail::tmat4x2<int, lowp> glm::lowp_imat4x2 |
Low-precision signed integer 4x2 matrix.
Definition at line 198 of file matrix_integer.hpp.
| typedef detail::tmat4x3<int, lowp> glm::lowp_imat4x3 |
Low-precision signed integer 4x3 matrix.
Definition at line 202 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, lowp> glm::lowp_imat4x4 |
Low-precision signed integer 4x4 matrix.
Definition at line 206 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, lowp> glm::lowp_umat2 |
Low-precision unsigned integer 2x2 matrix.
Definition at line 310 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, lowp> glm::lowp_umat2x2 |
Low-precision unsigned integer 2x2 matrix.
Definition at line 323 of file matrix_integer.hpp.
| typedef detail::tmat2x3<uint, lowp> glm::lowp_umat2x3 |
Low-precision unsigned integer 2x3 matrix.
Definition at line 327 of file matrix_integer.hpp.
| typedef detail::tmat2x4<uint, lowp> glm::lowp_umat2x4 |
Low-precision unsigned integer 2x4 matrix.
Definition at line 331 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, lowp> glm::lowp_umat3 |
Low-precision unsigned integer 3x3 matrix.
Definition at line 314 of file matrix_integer.hpp.
| typedef detail::tmat3x2<uint, lowp> glm::lowp_umat3x2 |
Low-precision unsigned integer 3x2 matrix.
Definition at line 335 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, lowp> glm::lowp_umat3x3 |
Low-precision unsigned integer 3x3 matrix.
Definition at line 339 of file matrix_integer.hpp.
| typedef detail::tmat3x4<uint, lowp> glm::lowp_umat3x4 |
Low-precision unsigned integer 3x4 matrix.
Definition at line 343 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, lowp> glm::lowp_umat4 |
Low-precision unsigned integer 4x4 matrix.
Definition at line 318 of file matrix_integer.hpp.
| typedef detail::tmat4x2<uint, lowp> glm::lowp_umat4x2 |
Low-precision unsigned integer 4x2 matrix.
Definition at line 347 of file matrix_integer.hpp.
| typedef detail::tmat4x3<uint, lowp> glm::lowp_umat4x3 |
Low-precision unsigned integer 4x3 matrix.
Definition at line 351 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, lowp> glm::lowp_umat4x4 |
Low-precision unsigned integer 4x4 matrix.
Definition at line 355 of file matrix_integer.hpp.
| typedef detail::tmat2x2<int, mediump> glm::mediump_imat2 |
Medium-precision signed integer 2x2 matrix.
Definition at line 111 of file matrix_integer.hpp.
| typedef detail::tmat2x2<int, mediump> glm::mediump_imat2x2 |
Medium-precision signed integer 2x2 matrix.
Definition at line 124 of file matrix_integer.hpp.
| typedef detail::tmat2x3<int, mediump> glm::mediump_imat2x3 |
Medium-precision signed integer 2x3 matrix.
Definition at line 128 of file matrix_integer.hpp.
| typedef detail::tmat2x4<int, mediump> glm::mediump_imat2x4 |
Medium-precision signed integer 2x4 matrix.
Definition at line 132 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, mediump> glm::mediump_imat3 |
Medium-precision signed integer 3x3 matrix.
Definition at line 115 of file matrix_integer.hpp.
| typedef detail::tmat3x2<int, mediump> glm::mediump_imat3x2 |
Medium-precision signed integer 3x2 matrix.
Definition at line 136 of file matrix_integer.hpp.
| typedef detail::tmat3x3<int, mediump> glm::mediump_imat3x3 |
Medium-precision signed integer 3x3 matrix.
Definition at line 140 of file matrix_integer.hpp.
| typedef detail::tmat3x4<int, mediump> glm::mediump_imat3x4 |
Medium-precision signed integer 3x4 matrix.
Definition at line 144 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, mediump> glm::mediump_imat4 |
Medium-precision signed integer 4x4 matrix.
Definition at line 119 of file matrix_integer.hpp.
| typedef detail::tmat4x2<int, mediump> glm::mediump_imat4x2 |
Medium-precision signed integer 4x2 matrix.
Definition at line 148 of file matrix_integer.hpp.
| typedef detail::tmat4x3<int, mediump> glm::mediump_imat4x3 |
Medium-precision signed integer 4x3 matrix.
Definition at line 152 of file matrix_integer.hpp.
| typedef detail::tmat4x4<int, mediump> glm::mediump_imat4x4 |
Medium-precision signed integer 4x4 matrix.
Definition at line 156 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, mediump> glm::mediump_umat2 |
Medium-precision unsigned integer 2x2 matrix.
Definition at line 260 of file matrix_integer.hpp.
| typedef detail::tmat2x2<uint, mediump> glm::mediump_umat2x2 |
Medium-precision unsigned integer 2x2 matrix.
Definition at line 273 of file matrix_integer.hpp.
| typedef detail::tmat2x3<uint, mediump> glm::mediump_umat2x3 |
Medium-precision unsigned integer 2x3 matrix.
Definition at line 277 of file matrix_integer.hpp.
| typedef detail::tmat2x4<uint, mediump> glm::mediump_umat2x4 |
Medium-precision unsigned integer 2x4 matrix.
Definition at line 281 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, mediump> glm::mediump_umat3 |
Medium-precision unsigned integer 3x3 matrix.
Definition at line 264 of file matrix_integer.hpp.
| typedef detail::tmat3x2<uint, mediump> glm::mediump_umat3x2 |
Medium-precision unsigned integer 3x2 matrix.
Definition at line 285 of file matrix_integer.hpp.
| typedef detail::tmat3x3<uint, mediump> glm::mediump_umat3x3 |
Medium-precision unsigned integer 3x3 matrix.
Definition at line 289 of file matrix_integer.hpp.
| typedef detail::tmat3x4<uint, mediump> glm::mediump_umat3x4 |
Medium-precision unsigned integer 3x4 matrix.
Definition at line 293 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, mediump> glm::mediump_umat4 |
Medium-precision unsigned integer 4x4 matrix.
Definition at line 268 of file matrix_integer.hpp.
| typedef detail::tmat4x2<uint, mediump> glm::mediump_umat4x2 |
Medium-precision unsigned integer 4x2 matrix.
Definition at line 297 of file matrix_integer.hpp.
| typedef detail::tmat4x3<uint, mediump> glm::mediump_umat4x3 |
Medium-precision unsigned integer 4x3 matrix.
Definition at line 301 of file matrix_integer.hpp.
| typedef detail::tmat4x4<uint, mediump> glm::mediump_umat4x4 |
Medium-precision unsigned integer 4x4 matrix.
Definition at line 305 of file matrix_integer.hpp.
| typedef mediump_umat2 glm::umat2 |
Unsigned integer 2x2 matrix.
Definition at line 464 of file matrix_integer.hpp.
| typedef mediump_umat2x2 glm::umat2x2 |
Unsigned integer 2x2 matrix.
Definition at line 476 of file matrix_integer.hpp.
| typedef mediump_umat2x3 glm::umat2x3 |
Unsigned integer 2x3 matrix.
Definition at line 480 of file matrix_integer.hpp.
| typedef mediump_umat2x4 glm::umat2x4 |
Unsigned integer 2x4 matrix.
Definition at line 484 of file matrix_integer.hpp.
| typedef mediump_umat3 glm::umat3 |
Unsigned integer 3x3 matrix.
Definition at line 468 of file matrix_integer.hpp.
| typedef mediump_umat3x2 glm::umat3x2 |
Unsigned integer 3x2 matrix.
Definition at line 488 of file matrix_integer.hpp.
| typedef mediump_umat3x3 glm::umat3x3 |
Unsigned integer 3x3 matrix.
Definition at line 492 of file matrix_integer.hpp.
| typedef mediump_umat3x4 glm::umat3x4 |
Unsigned integer 3x4 matrix.
Definition at line 496 of file matrix_integer.hpp.
| typedef mediump_umat4 glm::umat4 |
Unsigned integer 4x4 matrix.
Definition at line 472 of file matrix_integer.hpp.
| typedef mediump_umat4x2 glm::umat4x2 |
Unsigned integer 4x2 matrix.
Definition at line 500 of file matrix_integer.hpp.
| typedef mediump_umat4x3 glm::umat4x3 |
Unsigned integer 4x3 matrix.
Definition at line 504 of file matrix_integer.hpp.
| typedef mediump_umat4x4 glm::umat4x4 |
Unsigned integer 4x4 matrix.
Definition at line 508 of file matrix_integer.hpp.


{#- ========== Template for main.html ==========
This is a jinja template to creates main.html for arxiv custom mkdocs
theme. The main.html is also a jinja template.
For info about main.html from mkdocs see:
https://squidfunk.github.io/mkdocs-material/customization/#overriding-blocks
It is processed by starting up a flask app with arxiv-base that
renders the Jinja template in this file. The output of that processing
is a jinja template found at mkdocs/arxiv_doc_theme/main.html.
By rendering this template with arxiv-base a new template for use by
mkdocs as a custom theme is created that has the static HTML from the
arxiv-base header and footer and a content block for the mkdocs
content.
The flask app is at theme_generator/app.py
========== How this works ==========
There are two levels at work in this file:
1. The custom template generation level
2. the mkdocs evaluation level
All the jinja directives in this file will be evaluated at the custom template
generation level first. Then when mkdoc is run that template will be evaulated.
So this comment will not appear in the custom theme tempalate. But a
comment surrounded by raw tags will show up in the custom tempate but
at mkdocs eval time it will not be added to the HTML output.


above |
K'un The Receptive, Earth |
|
below |
Sun The Gentle, Wind |
Pushing upward has supreme success.
One must see the great man.
Fear not.
Departure toward the south
Brings good fortune.
Within the earth, wood grows:
The image of Pushing Upward.
Thus the superior man of devoted character
Heaps up small things
In order to achieve something high and great.
Six at the beginning means:
Pushing upward that meets with confidence
Brings great good fortune.
Nine in the second place means:
If one is sincere,
It furthers one to bring even a small offering.
No blame.
Nine in the third place means:
One pushes upward into an empty city.
Six in the fourth place means:
The king offers him Mount Ch'i.
Good fortune. No blame.
Six in the fifth place means:
Perseverance brings good fortune.
One pushes upward by steps.
Six at the top means:
Pushing upward in darkness.
It furthers one
to be unremittingly persevering.


This will generate an extensive list of all the dimensions in the reportsuite.
aw_get_dimensions( rsid = Sys.getenv("AW_REPORTSUITE_ID"), locale = "en_US", segmentable = FALSE, reportable = FALSE, classifiable = FALSE, expansion = NA, debug = FALSE, company_id = Sys.getenv("AW_COMPANY_ID") )
| rsid | Adobe report suite ID (RSID). If an environment variable called |
|---|---|
| locale | The locale that dimension details should be returned in. The default is |
| segmentable | Boolean that determines whether or not to include dimensions that can be used in
segments. |
| reportable | Boolean that determines whether or not to include dimensions that can be used in
reports |
| classifiable | Boolean that determines whether or not to include dimensions that can be used in
classifications |
| expansion | Additional dimension metadata to include in the results: |
| debug | Include the output and input of the api call in the console for debugging. Default is FALSE |
| company_id | Company ID. If an environment variable called |
A data frame of dimensions and their meta data.


--- title: Filtering a data frame by condition on multiple columns author: Pablo Cánovas Tourné date: '2019-10-05' slug: filtering-data-frame-by-condition-on-multiple-columns output: blogdown::html_page: highlight: tango categories: - R - Tips tags: [Tidyverse] subtitle: 'You could write the condition over each column, but I would like to see you dealing with 100+ features' summary: "The magic of filter_at(). Easily filtering a data frame by condition on multiple columns with R" authors: [pablo-canovas] disable_codefolding: true codefolding_show: hide codefolding_nobutton: true ---
Some times you need to filter a data frame applying the same condition over multiple columns. Obviously you could explicitly write the condition over every column, but that’s not very handy.
For those situations, it is much better to use filter_at
in combination with all_vars
.
Imagine we have the famous iris dataset with some attributes missing and want to get rid of those observations with any missing value.
# # A tibble: 10 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 1 5.1 NA 1.4 0.2 setosa
# 2 2 NA 3 1.4 NA setosa
# 3 3 4.7 3.2 1.3 0.2 setosa
# 4 4 NA 3.1 1.5 0.2 setosa
# 5 5 5 3.6 1.4 0.2 setosa
# 6 6 5.4 3.9 1.7 0.4 setosa
# 7 7 4.6 3.4 1.4 0.3 setosa
# 8 8 NA 3.4 1.5 0.2 setosa
# 9 9 4.4 2.9 1.4 0.2 setosa
# 10 10 NA NA NA NA setosa
We could write the condition on every column, but that would cumbersome:
iris %>%
filter(!is.na(Sepal.Length) &
!is.na(Sepal.Width) &
!is.na(Petal.Length) &
!is.na(Petal.Width))
Instead, we just have to select the columns we will filter on and apply the condition:
features <- iris %>% names() %>% keep(~ str_detect(.,"[.]"))
iris %>% filter_at(vars(features), all_vars(!is.na(.)))
# # A tibble: 5 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 3 4.7 3.2 1.3 0.2 setosa
# 2 5 5 3.6 1.4 0.2 setosa
# 3 6 5.4 3.9 1.7 0.4 setosa
# 4 7 4.6 3.4 1.4 0.3 setosa
# 5 9 4.4 2.9 1.4 0.2 setosa
Here we have used the function all_vars
in the predicate to explicit that
every feature must satisfy the condition.
To be honest, for that purpose it would have been easier to simply use iris %>% na.omit()
.
But what if we wanted the opposite? Keeping only the rows with all the selected features missing is as easy as changing the predicate part:
iris %>% filter_at(vars(features), all_vars(is.na(.)))
# # A tibble: 1 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 10 NA NA NA NA setosa
Another option is to apply the condition on any feature. That’s where any_vars
comes handy. Here we keep only the observations with at least one missing feature:
iris %>% filter_at(vars(features), any_vars(is.na(.)))
# # A tibble: 5 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 1 5.1 NA 1.4 0.2 setosa
# 2 2 NA 3 1.4 NA setosa
# 3 4 NA 3.1 1.5 0.2 setosa
# 4 8 NA 3.4 1.5 0.2 setosa
# 5 10 NA NA NA NA setosa
Also, there are some other fancy ways to manipulate data frames with the filter family. One trick is using contains()
or starts_with()
to select the variables:
iris %>% filter_at(vars(contains("Length")), all_vars(. >= 1.4))
# # A tibble: 5 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 1 5.1 NA 1.4 0.2 setosa
# 2 5 5 3.6 1.4 0.2 setosa
# 3 6 5.4 3.9 1.7 0.4 setosa
# 4 7 4.6 3.4 1.4 0.3 setosa
# 5 9 4.4 2.9 1.4 0.2 setosa
Another example is applying the condition on columns that satisfy certain condition with filter_if
(notice the rowid
fetaure here):
iris %>% filter_if(is.numeric, any_vars(. > 5))
# # A tibble: 6 x 6
# rowid Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <int> <dbl> <dbl> <dbl> <dbl> <fct>
# 1 1 5.1 NA 1.4 0.2 setosa
# 2 6 5.4 3.9 1.7 0.4 setosa
# 3 7 4.6 3.4 1.4 0.3 setosa
# 4 8 NA 3.4 1.5 0.2 setosa
# 5 9 4.4 2.9 1.4 0.2 setosa
# 6 10 NA NA NA NA setosa