Stability: 2 - Unstable; API changes are being discussed for
future versions. Breaking changes will be minimized. See below.
Use require('crypto')
to access this module.
The crypto module offers a way of encapsulating secure credentials to be used as part of a secure HTTPS net or http connection.
It also offers a set of wrappers for OpenSSL's hash, hmac, cipher, decipher, sign and verify methods.
Load and set engine for some/all OpenSSL functions (selected by flags).
engine
could be either an id or a path to the to the engine's shared library.
flags
is optional and has ENGINE_METHOD_ALL
value by default. It could take
one of or mix of following flags (defined in constants
module):
ENGINE_METHOD_RSA
ENGINE_METHOD_DSA
ENGINE_METHOD_DH
ENGINE_METHOD_RAND
ENGINE_METHOD_ECDH
ENGINE_METHOD_ECDSA
ENGINE_METHOD_CIPHERS
ENGINE_METHOD_DIGESTS
ENGINE_METHOD_STORE
ENGINE_METHOD_PKEY_METH
ENGINE_METHOD_PKEY_ASN1_METH
ENGINE_METHOD_ALL
ENGINE_METHOD_NONE
Returns an array with the names of the supported ciphers.
Example:
var ciphers = crypto.getCiphers();
console.log(ciphers); // ['AES-128-CBC', 'AES-128-CBC-HMAC-SHA1', ...]
Returns an array with the names of the supported hash algorithms.
Example:
var hashes = crypto.getHashes();
console.log(hashes); // ['sha', 'sha1', 'sha1WithRSAEncryption', ...]
Creates a credentials object, with the optional details being a dictionary with keys:
pfx
: A string or buffer holding the PFX or PKCS12 encoded private
key, certificate and CA certificateskey
: A string holding the PEM encoded private keypassphrase
: A string of passphrase for the private key or pfxcert
: A string holding the PEM encoded certificateca
: Either a string or list of strings of PEM encoded CA
certificates to trust.crl
: Either a string or list of strings of PEM encoded CRLs
(Certificate Revocation List)ciphers
: A string describing the ciphers to use or exclude.
Consult
http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT
for details on the format.If no 'ca' details are given, then node.js will use the default publicly trusted list of CAs as given in http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt.
Creates and returns a hash object, a cryptographic hash with the given algorithm which can be used to generate hash digests.
algorithm
is dependent on the available algorithms supported by the
version of OpenSSL on the platform. Examples are 'sha1'
, 'md5'
,
'sha256'
, 'sha512'
, etc. On recent releases, openssl
list-message-digest-algorithms
will display the available digest
algorithms.
Example: this program that takes the sha1 sum of a file
var filename = process.argv[2];
var crypto = require('crypto');
var fs = require('fs');
var shasum = crypto.createHash('sha1');
var s = fs.ReadStream(filename);
s.on('data', function(d) {
shasum.update(d);
});
s.on('end', function() {
var d = shasum.digest('hex');
console.log(d + ' ' + filename);
});
The class for creating hash digests of data.
It is a stream that is both readable and writable. The
written data is used to compute the hash. Once the writable side of
the stream is ended, use the read()
method to get the computed hash
digest. The legacy update
and digest
methods are also supported.
Returned by crypto.createHash
.
Updates the hash content with the given data
, the encoding of which
is given in input_encoding
and can be 'utf8'
, 'ascii'
or
'binary'
. If no encoding is provided and the input is a string an
encoding of 'binary'
is enforced. If data
is a Buffer
then
input_encoding
is ignored.
This can be called many times with new data as it is streamed.
Calculates the digest of all of the passed data to be hashed. The
encoding
can be 'hex'
, 'binary'
or 'base64'
. If no encoding
is provided, then a buffer is returned.
Note: hash
object can not be used after digest()
method has been
called.
Creates and returns a hmac object, a cryptographic hmac with the given algorithm and key.
It is a stream that is both readable and writable. The
written data is used to compute the hmac. Once the writable side of
the stream is ended, use the read()
method to get the computed
digest. The legacy update
and digest
methods are also supported.
algorithm
is dependent on the available algorithms supported by
OpenSSL - see createHash above. key
is the hmac key to be used.
Class for creating cryptographic hmac content.
Returned by crypto.createHmac
.
Update the hmac content with the given data
. This can be called
many times with new data as it is streamed.
Calculates the digest of all of the passed data to the hmac. The
encoding
can be 'hex'
, 'binary'
or 'base64'
. If no encoding
is provided, then a buffer is returned.
Note: hmac
object can not be used after digest()
method has been
called.
Creates and returns a cipher object, with the given algorithm and password.
algorithm
is dependent on OpenSSL, examples are 'aes192'
, etc. On
recent releases, openssl list-cipher-algorithms
will display the
available cipher algorithms. password
is used to derive key and IV,
which must be a 'binary'
encoded string or a buffer.
It is a stream that is both readable and writable. The
written data is used to compute the hash. Once the writable side of
the stream is ended, use the read()
method to get the computed hash
digest. The legacy update
and digest
methods are also supported.
Creates and returns a cipher object, with the given algorithm, key and iv.
algorithm
is the same as the argument to createCipher()
. key
is
the raw key used by the algorithm. iv
is an initialization
vector.
key
and iv
must be 'binary'
encoded strings or
buffers.
Class for encrypting data.
Returned by crypto.createCipher
and crypto.createCipheriv
.
Cipher objects are streams that are both readable and
writable. The written plain text data is used to produce the
encrypted data on the readable side. The legacy update
and final
methods are also supported.
Updates the cipher with data
, the encoding of which is given in
input_encoding
and can be 'utf8'
, 'ascii'
or 'binary'
. If no
encoding is provided, then a buffer is expected.
If data
is a Buffer
then input_encoding
is ignored.
The output_encoding
specifies the output format of the enciphered
data, and can be 'binary'
, 'base64'
or 'hex'
. If no encoding is
provided, then a buffer is returned.
Returns the enciphered contents, and can be called many times with new data as it is streamed.
Returns any remaining enciphered contents, with output_encoding
being one of: 'binary'
, 'base64'
or 'hex'
. If no encoding is
provided, then a buffer is returned.
Note: cipher
object can not be used after final()
method has been
called.
You can disable automatic padding of the input data to block size. If
auto_padding
is false, the length of the entire input data must be a
multiple of the cipher's block size or final
will fail. Useful for
non-standard padding, e.g. using 0x0
instead of PKCS padding. You
must call this before cipher.final
.
For authenticated encryption modes (currently supported: GCM), this
method returns a Buffer
that represents the authentication tag that
has been computed from the given data. Should be called after
encryption has been completed using the final
method!
For authenticated encryption modes (currently supported: GCM), this method sets the value used for the additional authenticated data (AAD) input parameter.
Creates and returns a decipher object, with the given algorithm and key. This is the mirror of the createCipher() above.
Creates and returns a decipher object, with the given algorithm, key and iv. This is the mirror of the createCipheriv() above.
Class for decrypting data.
Returned by crypto.createDecipher
and crypto.createDecipheriv
.
Decipher objects are streams that are both readable and
writable. The written enciphered data is used to produce the
plain-text data on the the readable side. The legacy update
and
final
methods are also supported.
Updates the decipher with data
, which is encoded in 'binary'
,
'base64'
or 'hex'
. If no encoding is provided, then a buffer is
expected.
If data
is a Buffer
then input_encoding
is ignored.
The output_decoding
specifies in what format to return the
deciphered plaintext: 'binary'
, 'ascii'
or 'utf8'
. If no
encoding is provided, then a buffer is returned.
Returns any remaining plaintext which is deciphered, with
output_encoding
being one of: 'binary'
, 'ascii'
or 'utf8'
. If
no encoding is provided, then a buffer is returned.
Note: decipher
object can not be used after final()
method has been
called.
You can disable auto padding if the data has been encrypted without
standard block padding to prevent decipher.final
from checking and
removing it. Can only work if the input data's length is a multiple of
the ciphers block size. You must call this before streaming data to
decipher.update
.
For authenticated encryption modes (currently supported: GCM), this
method must be used to pass in the received authentication tag.
If no tag is provided or if the ciphertext has been tampered with,
final
will throw, thus indicating that the ciphertext should
be discarded due to failed authentication.
For authenticated encryption modes (currently supported: GCM), this method sets the value used for the additional authenticated data (AAD) input parameter.
Creates and returns a signing object, with the given algorithm. On
recent OpenSSL releases, openssl list-public-key-algorithms
will
display the available signing algorithms. Examples are 'RSA-SHA256'
.
Class for generating signatures.
Returned by crypto.createSign
.
Sign objects are writable streams. The written data is
used to generate the signature. Once all of the data has been
written, the sign
method will return the signature. The legacy
update
method is also supported.
Updates the sign object with data. This can be called many times with new data as it is streamed.
Calculates the signature on all the updated data passed through the sign.
private_key
can be an object or a string. If private_key
is a string, it is
treated as the key with no passphrase.
private_key
:
key
: A string holding the PEM encoded private keypassphrase
: A string of passphrase for the private keyReturns the signature in output_format
which can be 'binary'
,
'hex'
or 'base64'
. If no encoding is provided, then a buffer is
returned.
Note: sign
object can not be used after sign()
method has been
called.
Creates and returns a verification object, with the given algorithm. This is the mirror of the signing object above.
Class for verifying signatures.
Returned by crypto.createVerify
.
Verify objects are writable streams. The written data
is used to validate against the supplied signature. Once all of the
data has been written, the verify
method will return true if the
supplied signature is valid. The legacy update
method is also
supported.
Updates the verifier object with data. This can be called many times with new data as it is streamed.
Verifies the signed data by using the object
and signature
.
object
is a string containing a PEM encoded object, which can be
one of RSA public key, DSA public key, or X.509 certificate.
signature
is the previously calculated signature for the data, in
the signature_format
which can be 'binary'
, 'hex'
or 'base64'
.
If no encoding is specified, then a buffer is expected.
Returns true or false depending on the validity of the signature for the data and public key.
Note: verifier
object can not be used after verify()
method has been
called.
Creates a Diffie-Hellman key exchange object and generates a prime of
prime_length
bits and using an optional specific numeric generator
.
If no generator
is specified, then 2
is used.
Creates a Diffie-Hellman key exchange object using the supplied prime
and an
optional specific generator
.
generator
can be a number, string, or Buffer.
If no generator
is specified, then 2
is used.
prime_encoding
and generator_encoding
can be 'binary'
, 'hex'
, or 'base64'
.
If no prime_encoding
is specified, then a Buffer is expected for prime
.
If no generator_encoding
is specified, then a Buffer is expected for generator
.
The class for creating Diffie-Hellman key exchanges.
Returned by crypto.createDiffieHellman
.
A bit field containing any warnings and/or errors as a result of a check performed
during initialization. The following values are valid for this property
(defined in constants
module):
DH_CHECK_P_NOT_SAFE_PRIME
DH_CHECK_P_NOT_PRIME
DH_UNABLE_TO_CHECK_GENERATOR
DH_NOT_SUITABLE_GENERATOR
Generates private and public Diffie-Hellman key values, and returns
the public key in the specified encoding. This key should be
transferred to the other party. Encoding can be 'binary'
, 'hex'
,
or 'base64'
. If no encoding is provided, then a buffer is returned.
Computes the shared secret using other_public_key
as the other
party's public key and returns the computed shared secret. Supplied
key is interpreted using specified input_encoding
, and secret is
encoded using specified output_encoding
. Encodings can be
'binary'
, 'hex'
, or 'base64'
. If the input encoding is not
provided, then a buffer is expected.
If no output encoding is given, then a buffer is returned.
Returns the Diffie-Hellman prime in the specified encoding, which can
be 'binary'
, 'hex'
, or 'base64'
. If no encoding is provided,
then a buffer is returned.
Returns the Diffie-Hellman generator in the specified encoding, which can
be 'binary'
, 'hex'
, or 'base64'
. If no encoding is provided,
then a buffer is returned.
Returns the Diffie-Hellman public key in the specified encoding, which
can be 'binary'
, 'hex'
, or 'base64'
. If no encoding is provided,
then a buffer is returned.
Returns the Diffie-Hellman private key in the specified encoding,
which can be 'binary'
, 'hex'
, or 'base64'
. If no encoding is
provided, then a buffer is returned.
Sets the Diffie-Hellman public key. Key encoding can be 'binary'
,
'hex'
or 'base64'
. If no encoding is provided, then a buffer is
expected.
Sets the Diffie-Hellman private key. Key encoding can be 'binary'
,
'hex'
or 'base64'
. If no encoding is provided, then a buffer is
expected.
Creates a predefined Diffie-Hellman key exchange object. The
supported groups are: 'modp1'
, 'modp2'
, 'modp5'
(defined in RFC
2412) and 'modp14'
, 'modp15'
, 'modp16'
, 'modp17'
,
'modp18'
(defined in RFC 3526). The returned object mimics the
interface of objects created by crypto.createDiffieHellman()
above, but will not allow to change the keys (with
diffieHellman.setPublicKey() for example). The advantage of using
this routine is that the parties don't have to generate nor exchange
group modulus beforehand, saving both processor and communication
time.
Example (obtaining a shared secret):
var crypto = require('crypto');
var alice = crypto.getDiffieHellman('modp5');
var bob = crypto.getDiffieHellman('modp5');
alice.generateKeys();
bob.generateKeys();
var alice_secret = alice.computeSecret(bob.getPublicKey(), null, 'hex');
var bob_secret = bob.computeSecret(alice.getPublicKey(), null, 'hex');
/* alice_secret and bob_secret should be the same */
console.log(alice_secret == bob_secret);
Asynchronous PBKDF2 function. Applies the selected HMAC digest function
(default: SHA1) to derive a key of the requested length from the password,
salt and number of iterations. The callback gets two arguments:
(err, derivedKey)
.
Example:
crypto.pbkdf2('secret', 'salt', 4096, 512, 'sha256', function(err, key) {
if (err)
throw err;
console.log(key.toString('hex')); // 'c5e478d...1469e50'
});
You can get a list of supported digest functions with crypto.getHashes().
Synchronous PBKDF2 function. Returns derivedKey or throws error.
Generates cryptographically strong pseudo-random data. Usage:
// async
crypto.randomBytes(256, function(ex, buf) {
if (ex) throw ex;
console.log('Have %d bytes of random data: %s', buf.length, buf);
});
// sync
try {
var buf = crypto.randomBytes(256);
console.log('Have %d bytes of random data: %s', buf.length, buf);
} catch (ex) {
// handle error
// most likely, entropy sources are drained
}
NOTE: Will throw error or invoke callback with error, if there is not enough
accumulated entropy to generate cryptographically strong data. In other words,
crypto.randomBytes
without callback will not block even if all entropy sources
are drained.
Generates non-cryptographically strong pseudo-random data. The data returned will be unique if it is sufficiently long, but is not necessarily unpredictable. For this reason, the output of this function should never be used where unpredictability is important, such as in the generation of encryption keys.
Usage is otherwise identical to crypto.randomBytes
.
The class used for working with signed public key & challenges. The most
common usage for this series of functions is when dealing with the <keygen>
element. http://www.openssl.org/docs/apps/spkac.html
Returned by crypto.Certificate
.
Returns true of false based on the validity of the SPKAC.
Exports the encoded public key from the supplied SPKAC.
Exports the encoded challenge associated with the SPKAC.
The default encoding to use for functions that can take either strings
or buffers. The default value is 'buffer'
, which makes it default
to using Buffer objects. This is here to make the crypto module more
easily compatible with legacy programs that expected 'binary'
to be
the default encoding.
Note that new programs will probably expect buffers, so only use this as a temporary measure.
The Crypto module was added to Node before there was the concept of a unified Stream API, and before there were Buffer objects for handling binary data.
As such, the streaming classes don't have the typical methods found on other Node classes, and many methods accepted and returned Binary-encoded strings by default rather than Buffers. This was changed to use Buffers by default instead.
This is a breaking change for some use cases, but not all.
For example, if you currently use the default arguments to the Sign class, and then pass the results to the Verify class, without ever inspecting the data, then it will continue to work as before. Where you once got a binary string and then presented the binary string to the Verify object, you'll now get a Buffer, and present the Buffer to the Verify object.
However, if you were doing things with the string data that will not
work properly on Buffers (such as, concatenating them, storing in
databases, etc.), or you are passing binary strings to the crypto
functions without an encoding argument, then you will need to start
providing encoding arguments to specify which encoding you'd like to
use. To switch to the previous style of using binary strings by
default, set the crypto.DEFAULT_ENCODING
field to 'binary'. Note
that new programs will probably expect buffers, so only use this as a
temporary measure.


@(email: String) @main(email) {
Please provide your E-mail
Password should be at least 6, maximum 16 characters (UpperCase, LowerCase, Number/SpecialChar)
Please confirm your password
Password should be at least 3, maximum 20 characters
Please write your bussines hours ex. 07:00h - 18:00h.
Already member?Log in


A CBLDatabase is both a filesystem object and a container for documents.
More...
|
Opening, closing, and managing open databases.
|
| enum | CBLMaintenanceType : uint32_t { kCBLMaintenanceTypeCompact = 0,
kCBLMaintenanceTypeReindex,
kCBLMaintenanceTypeIntegrityCheck
} |
| | Maintenance Type used when performing database maintenance. More...
|
| |
| _cbl_warn_unused CBLDatabase * | CBLDatabase_Open (FLSlice name, const CBLDatabaseConfiguration *config, CBLError *error) |
| | Opens a database, or creates it if it doesn't exist yet, returning a new CBLDatabase instance. More...
|
| |
| bool | CBLDatabase_Close (CBLDatabase *, CBLError *) |
| | Closes an open database. More...
|
| |
| static const CBLDatabase * | CBLDatabase_Retain (const CBLDatabase *t) |
| |
| static void | CBLDatabase_Release (const CBLDatabase *t) |
| |
| bool | CBLDatabase_Delete (CBLDatabase *, CBLError *) |
| | Closes and deletes a database. More...
|
| |
| bool | CBLDatabase_BeginBatch (CBLDatabase *, CBLError *) |
| | Begins a batch operation, similar to a transaction. More...
|
| |
| bool | CBLDatabase_EndBatch (CBLDatabase *, CBLError *) |
| | Ends a batch operation. More...
|
| |
| bool | CBLDatabase_ChangeEncryptionKey (CBLDatabase *, const CBLEncryptionKey *newKey, CBLError *outError) |
| | Encrypts or decrypts a database, or changes its encryption key. More...
|
| |
| bool | CBLDatabase_PerformMaintenance (CBLDatabase *db, CBLMaintenanceType type, CBLError *outError) |
| | Performs database maintenance. More...
|
| |
A CBLDatabase is both a filesystem object and a container for documents.
◆ CBLDatabase
A connection to an open database.
◆ CBLDatabaseChangeListener
| typedef void(* CBLDatabaseChangeListener) (void *context, const CBLDatabase *db, unsigned numDocs, FLString docIDs[]) |
A database change listener callback, invoked after one or more documents are changed on disk.
- Warning
- By default, this listener may be called on arbitrary threads. If your code isn't prepared for that, you may want to use CBLDatabase_BufferNotifications so that listeners will be called in a safe context.
- Parameters
-
| context | An arbitrary value given when the callback was registered. |
| db | The database that changed. |
| numDocs | The number of documents that changed (size of the docIDs array) |
| docIDs | The IDs of the documents that changed, as a C array of numDocs C strings. |
◆ CBLDatabaseFlags
Flags for how to open a database.
| Enumerator |
|---|
| kCBLDatabase_Create | Create the file if it doesn't exist.
|
| kCBLDatabase_ReadOnly | Open file read-only.
|
| kCBLDatabase_NoUpgrade | Disable upgrading an older-version database.
|
| kCBLDatabase_VersionVectors | EXPERIMENTAL: Upgrade DB to use version vectors.
|
◆ CBLEncryptionAlgorithm
Database encryption algorithms (available only in the Enterprise Edition).
| Enumerator |
|---|
| kCBLEncryptionNone | No encryption (default)
|
| kCBLEncryptionAES256 | AES with 256-bit key.
|
◆ CBLEncryptionKeySize
Encryption key sizes (in bytes).
◆ CBLMaintenanceType
Maintenance Type used when performing database maintenance.
| Enumerator |
|---|
| kCBLMaintenanceTypeCompact | Compact the database file and delete unused attachments.
|
| kCBLMaintenanceTypeReindex | Rebuild the entire database's indexes.
|
| kCBLMaintenanceTypeIntegrityCheck | Check for the database’s corruption. If found, an error will be returned.
|
◆ CBL_CopyDatabase()
Copies a database file to a new location, and assigns it a new internal UUID to distinguish it from the original database when replicating.
- Parameters
-
| fromPath | The full filesystem path to the original database (including extension). |
| toName | The new database name (without the ".cblite2" extension.) |
| config | The database configuration (directory and encryption option.) |
◆ CBL_DatabaseExists()
Returns true if a database with the given name exists in the given directory.
- Parameters
-
| name | The database name (without the ".cblite2" extension.) |
| inDirectory | The directory containing the database. If NULL, name must be an absolute or relative path to the database. |
◆ CBL_DeleteDatabase()
Deletes a database file.
If the database file is open, an error is returned.
- Parameters
-
| name | The database name (without the ".cblite2" extension.) |
| inDirectory | The directory containing the database. If NULL, name must be an absolute or relative path to the database. |
| outError | On return, will be set to the error that occurred, or a 0 code if no error. |
- Returns
- True if the database was deleted, false if it doesn't exist or deletion failed. (You can tell the last two cases apart by looking at
outError
.)
◆ CBLDatabase_AddChangeListener()
Registers a database change listener callback.
It will be called after one or more documents are changed on disk.
- Parameters
-
| db | The database to observe. |
| listener | The callback to be invoked. |
| context | An opaque value that will be passed to the callback. |
- Returns
- A token to be passed to CBLListener_Remove when it's time to remove the listener.
◆ CBLDatabase_BeginBatch()
Begins a batch operation, similar to a transaction.
You must later call CBLDatabase_EndBatch to end (commit) the batch.
- Note
- Multiple writes are much faster when grouped inside a single batch.
-
Changes will not be visible to other CBLDatabase instances on the same database until the batch operation ends.
-
Batch operations can nest. Changes are not committed until the outer batch ends.
◆ CBLDatabase_ChangeEncryptionKey()
Encrypts or decrypts a database, or changes its encryption key.
If newKey
is NULL, or its algorithm
is kCBLEncryptionNone, the database will be decrypted. Otherwise the database will be encrypted with that key; if it was already encrypted, it will be re-encrypted with the new key.
◆ CBLDatabase_Close()
◆ CBLDatabase_Config()
Returns the database's configuration, as given when it was opened.
- Note
- The encryption key is not filled in, for security reasons.
◆ CBLDatabase_Count()
Returns the number of documents in the database.
◆ CBLDatabase_Delete()
Closes and deletes a database.
If there are any other connections to the database, an error is returned.
◆ CBLDatabase_EndBatch()
◆ CBLDatabase_Name()
Returns the database's name.
◆ CBLDatabase_Open()
Opens a database, or creates it if it doesn't exist yet, returning a new CBLDatabase instance.
It's OK to open the same database file multiple times. Each CBLDatabase instance is independent of the others (and must be separately closed and released.)
- Parameters
-
| name | The database name (without the ".cblite2" extension.) |
| config | The database configuration (directory and encryption option.) |
| error | On failure, the error will be written here. |
- Returns
- The new database object, or NULL on failure.
◆ CBLDatabase_Path()
Returns the database's full filesystem path.
◆ CBLDatabase_PerformMaintenance()
Performs database maintenance.
◆ CBLDatabase_Release()
| static void CBLDatabase_Release |
( |
const CBLDatabase * |
t | ) |
|
|
inlinestatic |
◆ CBLDatabase_Retain()
◆ CBLDatabaseConfiguration_Default()
Returns the default database configuration.
◆ CBLEncryptionKey_FromPassword()
Derives an encryption key from a password.
If your UI uses passwords, call this function to create the key used to encrypt the database. It is designed for security, and deliberately runs slowly to make brute-force attacks impractical.
- Parameters
-
| key | The derived AES key will be stored here. |
| password | The input password, which can be any data. |
- Returns
- True on success, false if there was a problem deriving the key.


Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
Universal scores for accessibility and inequalities in urban areas
Motivations
High entrance barriers
You need a Ph.D. in the specific domain to do research. But sometimes even to understand the results.
Overspecialization in Science
Very difficult to cross the branches of science.
Slow learning
curve
Very difficult to perform self-education path
images:[
Branch Tree Drawing Clip art - branches clipart @kisspng
,]
Components
"Simplicity is the ultimate sophistication"
Data visualization
Interactive visualizations of results.
Gamification
Involve general audience to partecipate.
images:[
Jegi - flickr
]
Motivations 2
I was born in Rome
I had a very difficult childhood
Rome public transport are "not so good".
Ok. But how much compared to the other cities?
Where is the better served [by public transport] place in the city?
And in the world?
Urban Accessibility measures
Urban Accessibility measures
Huge scientific literature
The first definition of accessiblity in urban context is done more than 50 years ago
Many different definitions of accessibility
But no attemp to compute it at large scale.
A science of city needs quantitative measurement.
We want easy to understand, easy to compute and meaningful quantities to measure public transport efficiency.
And we define and measure them.
Boundaries and Tessellation.
It is possible to compute isochrones
First step towards an accessibility measure:
The larger isochrones are, the faster you move.
Velocity Score
Consider the Area of the Isochrone a time \(t\) computed in \(P\):
\begin{equation}
r(t,P) = \sqrt{\frac{A(t, P)}{\pi}}
\end{equation}
dividing by time, we obtain a quantity with the dimension of a velocity:
\begin{equation}
v(t,P) = \frac{r(t,P)}{t}
\end{equation}
Integrating over time:
\begin{equation}
v_{score}(P) = \frac{\int_0^{\infty} v(t, P) f(t) dt}{\int_0^{\infty} f(t) dt},
\end{equation}
\(f(t)^1\) is the daily time budget distribution for public transport.
The Velocity Score can be consider as the average velocity of a daily typical trip taking a random direction from \(P\).
\(^1\) Robert Kölbl, Dirk Helbing. Energy laws in human travel behaviour. New Journal of Physics 5, 48 IOP Publishing, 2003.
Velocity Score
Average velocity taking a random direction
Paris
Rome
interactive maps and more cities:
Sociality Score
Consider the populations inside the Isochrone a time \(t\) computed in \(P\):
\begin{equation}
s(t,P) = \sum_{i \mid t_i(P) < t} p(h_i),
\end{equation}
we sum over all the hexagons with time \(t_i\) less than \(t\) and \(p(h_i)\) is the population within \(h_i\).
\begin{equation}
s(P) = \frac{\int_0^{\infty} s(t,P)f(t)dt}{\int_0^{\infty} f(t) dt},
\end{equation}
\(f(t)^1\) is the daily time budget distribution for public transport.
The Sociality Score quantifies how many citizens it is possible to reach with a daily typical trip starting from \(P\).
\(^1\) Robert Kölbl, Dirk Helbing. Energy laws in human travel behaviour. New Journal of Physics 5, 48 IOP Publishing, 2003.
Sociality Score
Number of people is possible to reach in a typical day trip starting from a point.
Paris
Rome
interactive maps and more cities:
City Rankings
City Velocity
Velocity Score per person
City Sociality
Sociality Score per person
Cohesion
City Sociality divided by total population
Distributions
Values distribution
Area distributions - Population distributions
Inequality distribution of
accessibilities
Exponential decay from the center of the city.
fitting function: \(f(t) = e^{-t/\tau} + \sigma_0 \)
Exponential decay from the center of the city.
fitting function: \(f(t) = e^{-t/\tau} + \sigma_0 \)
Why these patterns are observed in all cities?
Are these inequalities unavoidable?
Can be modified or optimized?
In which way?
CityChrone
Interactive platform
Citizen Science [DataViz & Gamification]
SETI@home [1999]: analyze radio signals, searching for signs of extraterrestrial intelligence. People can partecipate using their PC, donating their computational resources.
foldit [2008]: fold the structures of selected proteins as perfectly as possible, using tools provided in the game. Nature paper with credits more than 57000 authors.
Quantum Moves [2012]: simulations of logical operations in a quantum computer. Played over 8 million times by more than 200,000 players worldwide.
The 200 000 players were all beaten by the stochastic optimization method. :(
Algorithms: routing in urban context
Walking routing algortimh:
OSRM
New class of public transport routing algorithms:
CSA [2013],
RAPTOR [2011]
This new class of algoritms are easy to implements and fast, but they have some crucial limitations in urban context.
They needs to be closure by transitiveness in the walking path.
We modified the CSA and the RAPTOR algorithm in order to use it in urban context.

What are the best interventions given a budget?
Let's Play!
CityChrone
Interactive platform for exploring new scenario
Budget: 5 Bilion €
Name Scenario: Gram Author: Pietro
After 1 year
Name Scenario: rer + circle Author: mat
Useful Links
Interactive platform:
Open Source and Open Data:
Article:
Today presentation:
Sponsor:


Air Pollution
The visualization for comparison of GHG emissions and population is created in Tableau. The left graph is the comparison of GHG emissions to population in 2006. The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country. The graph shows that there is no positive relationship between population and GHG emissions. For example, Mexico has larger amount of population but smaller emissions. In most countries, larger population indicates larger amount of emissions. Other five years show similar pattern.
The left graph is the comparison of GHG emissions to population in 2007.The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country.
The left graph is the comparison of GHG emissions to population in 2008. The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country.
The left graph is the comparison of GHG emissions to population in 2009. The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country.
The left graph is the comparison of GHG emissions to population in 2010. The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country.
The left graph is the comparison of GHG emissions to population in 2011. The blue rectangular bars represent GHG emissions in million tonnes while the pink rectangular bars represent the population in millions. Two rectangular bars are stacked for each country.


{% extends "base.html" %} {% block title %}About{% endblock %} {% block head %} {{ super() }} {% endblock %} {% set active_page = "about" %} {% block content %}
We are very delighted that you have shown interest in our enterprise. Data protection is of a particularly high priority for the management of the allmysubs.video. The use of the Internet pages of the allmysubs.video is possible without any indication of personal data; however, if a data subject wants to use special enterprise services via our website, processing of personal data could become necessary. If the processing of personal data is necessary and there is no statutory basis for such processing, we generally obtain consent from the data subject.
The processing of personal data, such as the name, address, e-mail address, or telephone number of a data subject shall always be in line with the General Data Protection Regulation (GDPR), and in accordance with the country-specific data protection regulations applicable to the allmysubs.video. By means of this data protection declaration, our enterprise would like to inform the general public of the nature, scope, and purpose of the personal data we collect, use and process. Furthermore, data subjects are informed, by means of this data protection declaration, of the rights to which they are entitled.
As the controller, the allmysubs.video has implemented numerous technical and organizational measures to ensure the most complete protection of personal data processed through this website. However, Internet-based data transmissions may in principle have security gaps, so absolute protection may not be guaranteed. For this reason, every data subject is free to transfer personal data to us via alternative means, e.g. by telephone.
The data protection declaration of the allmysubs.video is based on the terms used by the European legislator for the adoption of the General Data Protection Regulation (GDPR). Our data protection declaration should be legible and understandable for the general public, as well as our customers and business partners. To ensure this, we would like to first explain the terminology used.
In this data protection declaration, we use, inter alia, the following terms:
Personal data means any information relating to an identified or identifiable natural person (“data subject”). An identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.
Data subject is any identified or identifiable natural person, whose personal data is processed by the controller responsible for the processing.
Processing is any operation or set of operations which is performed on personal data or on sets of personal data, whether or not by automated means, such as collection, recording, organisation, structuring, storage, adaptation or alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, alignment or combination, restriction, erasure or destruction.
Restriction of processing is the marking of stored personal data with the aim of limiting their processing in the future.
Profiling means any form of automated processing of personal data consisting of the use of personal data to evaluate certain personal aspects relating to a natural person, in particular to analyse or predict aspects concerning that natural person's performance at work, economic situation, health, personal preferences, interests, reliability, behaviour, location or movements.
Pseudonymisation is the processing of personal data in such a manner that the personal data can no longer be attributed to a specific data subject without the use of additional information, provided that such additional information is kept separately and is subject to technical and organisational measures to ensure that the personal data are not attributed to an identified or identifiable natural person.
Controller or controller responsible for the processing is the natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data; where the purposes and means of such processing are determined by Union or Member State law, the controller or the specific criteria for its nomination may be provided for by Union or Member State law.
Processor is a natural or legal person, public authority, agency or other body which processes personal data on behalf of the controller.
Recipient is a natural or legal person, public authority, agency or another body, to which the personal data are disclosed, whether a third party or not. However, public authorities which may receive personal data in the framework of a particular inquiry in accordance with Union or Member State law shall not be regarded as recipients; the processing of those data by those public authorities shall be in compliance with the applicable data protection rules according to the purposes of the processing.
Third party is a natural or legal person, public authority, agency or body other than the data subject, controller, processor and persons who, under the direct authority of the controller or processor, are authorised to process personal data.
Consent of the data subject is any freely given, specific, informed and unambiguous indication of the data subject's wishes by which he or she, by a statement or by a clear affirmative action, signifies agreement to the processing of personal data relating to him or her.
Controller for the purposes of the General Data Protection Regulation (GDPR), other data protection laws applicable in Member states of the European Union and other provisions related to data protection is:
Andreas Ebbert-Karroum
allmysubs.video
Clevinghausstraße 6a
44795 Bochum
Germany
Phone: 0234 6230989
Email<EMAIL_ADDRESS>Website: allmysubs.video
The Internet pages of the allmysubs.video use cookies. Cookies are text files that are stored in a computer system via an Internet browser.
Many Internet sites and servers use cookies. Many cookies contain a so-called cookie ID. A cookie ID is a unique identifier of the cookie. It consists of a character string through which Internet pages and servers can be assigned to the specific Internet browser in which the cookie was stored. This allows visited Internet sites and servers to differentiate the individual browser of the dats subject from other Internet browsers that contain other cookies. A specific Internet browser can be recognized and identified using the unique cookie ID.
Through the use of cookies, the allmysubs.video can provide the users of this website with more user-friendly services that would not be possible without the cookie setting.
By means of a cookie, the information and offers on our website can be optimized with the user in mind. Cookies allow us, as previously mentioned, to recognize our website users. The purpose of this recognition is to make it easier for users to utilize our website. The website user that uses cookies, e.g. does not have to enter access data each time the website is accessed, because this is taken over by the website, and the cookie is thus stored on the user's computer system. Another example is the cookie of a shopping cart in an online shop. The online store remembers the articles that a customer has placed in the virtual shopping cart via a cookie.
The data subject may, at any time, prevent the setting of cookies through our website by means of a corresponding setting of the Internet browser used, and may thus permanently deny the setting of cookies. Furthermore, already set cookies may be deleted at any time via an Internet browser or other software programs. This is possible in all popular Internet browsers. If the data subject deactivates the setting of cookies in the Internet browser used, not all functions of our website may be entirely usable.
The website of the allmysubs.video collects a series of general data and information when a data subject or automated system calls up the website. This general data and information are stored in the server log files. Collected may be (1) the browser types and versions used, (2) the operating system used by the accessing system, (3) the website from which an accessing system reaches our website (so-called referrers), (4) the sub-websites, (5) the date and time of access to the Internet site, (6) an Internet protocol address (IP address), (7) the Internet service provider of the accessing system, and (8) any other similar data and information that may be used in the event of attacks on our information technology systems.
When using these general data and information, the allmysubs.video does not draw any conclusions about the data subject. Rather, this information is needed to (1) deliver the content of our website correctly, (2) optimize the content of our website as well as its advertisement, (3) ensure the long-term viability of our information technology systems and website technology, and (4) provide law enforcement authorities with the information necessary for criminal prosecution in case of a cyber-attack. Therefore, the allmysubs.video analyzes anonymously collected data and information statistically, with the aim of increasing the data protection and data security of our enterprise, and to ensure an optimal level of protection for the personal data we process. The anonymous data of the server log files are stored separately from all personal data provided by a data subject.
The data controller shall process and store the personal data of the data subject only for the period necessary to achieve the purpose of storage, or as far as this is granted by the European legislator or other legislators in laws or regulations to which the controller is subject to.
If the storage purpose is not applicable, or if a storage period prescribed by the European legislator or another competent legislator expires, the personal data are routinely blocked or erased in accordance with legal requirements.
Each data subject shall have the right granted by the European legislator to obtain from the controller the confirmation as to whether or not personal data concerning him or her are being processed. If a data subject wishes to avail himself of this right of confirmation, he or she may, at any time, contact any employee of the controller.
Each data subject shall have the right granted by the European legislator to obtain from the controller free information about his or her personal data stored at any time and a copy of this information. Furthermore, the European directives and regulations grant the data subject access to the following information:
Furthermore, the data subject shall have a right to obtain information as to whether personal data are transferred to a third country or to an international organisation. Where this is the case, the data subject shall have the right to be informed of the appropriate safeguards relating to the transfer.
If a data subject wishes to avail himself of this right of access, he or she may, at any time, contact any employee of the controller.
Each data subject shall have the right granted by the European legislator to obtain from the controller without undue delay the rectification of inaccurate personal data concerning him or her. Taking into account the purposes of the processing, the data subject shall have the right to have incomplete personal data completed, including by means of providing a supplementary statement.
If a data subject wishes to exercise this right to rectification, he or she may, at any time, contact any employee of the controller.
Each data subject shall have the right granted by the European legislator to obtain from the controller the erasure of personal data concerning him or her without undue delay, and the controller shall have the obligation to erase personal data without undue delay where one of the following grounds applies, as long as the processing is not necessary:
If one of the aforementioned reasons applies, and a data subject wishes to request the erasure of personal data stored by the allmysubs.video, he or she may, at any time, contact any employee of the controller. An employee of allmysubs.video shall promptly ensure that the erasure request is complied with immediately.
Where the controller has made personal data public and is obliged pursuant to Article 17(1) to erase the personal data, the controller, taking account of available technology and the cost of implementation, shall take reasonable steps, including technical measures, to inform other controllers processing the personal data that the data subject has requested erasure by such controllers of any links to, or copy or replication of, those personal data, as far as processing is not required. An employees of the allmysubs.video will arrange the necessary measures in individual cases.
Each data subject shall have the right granted by the European legislator to obtain from the controller restriction of processing where one of the following applies:
If one of the aforementioned conditions is met, and a data subject wishes to request the restriction of the processing of personal data stored by the allmysubs.video, he or she may at any time contact any employee of the controller. The employee of the allmysubs.video will arrange the restriction of the processing.
Each data subject shall have the right granted by the European legislator, to receive the personal data concerning him or her, which was provided to a controller, in a structured, commonly used and machine-readable format. He or she shall have the right to transmit those data to another controller without hindrance from the controller to which the personal data have been provided, as long as the processing is based on consent pursuant to point (a) of Article 6(1) of the GDPR or point (a) of Article 9(2) of the GDPR, or on a contract pursuant to point (b) of Article 6(1) of the GDPR, and the processing is carried out by automated means, as long as the processing is not necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller.
Furthermore, in exercising his or her right to data portability pursuant to Article 20(1) of the GDPR, the data subject shall have the right to have personal data transmitted directly from one controller to another, where technically feasible and when doing so does not adversely affect the rights and freedoms of others.
In order to assert the right to data portability, the data subject may at any time contact any employee of the allmysubs.video.
Each data subject shall have the right granted by the European legislator to object, on grounds relating to his or her particular situation, at any time, to processing of personal data concerning him or her, which is based on point (e) or (f) of Article 6(1) of the GDPR. This also applies to profiling based on these provisions.
The allmysubs.video shall no longer process the personal data in the event of the objection, unless we can demonstrate compelling legitimate grounds for the processing which override the interests, rights and freedoms of the data subject, or for the establishment, exercise or defence of legal claims.
If the allmysubs.video processes personal data for direct marketing purposes, the data subject shall have the right to object at any time to processing of personal data concerning him or her for such marketing. This applies to profiling to the extent that it is related to such direct marketing. If the data subject objects to the allmysubs.video to the processing for direct marketing purposes, the allmysubs.video will no longer process the personal data for these purposes.
In addition, the data subject has the right, on grounds relating to his or her particular situation, to object to processing of personal data concerning him or her by the allmysubs.video for scientific or historical research purposes, or for statistical purposes pursuant to Article 89(1) of the GDPR, unless the processing is necessary for the performance of a task carried out for reasons of public interest.
In order to exercise the right to object, the data subject may contact any employee of the allmysubs.video. In addition, the data subject is free in the context of the use of information society services, and notwithstanding Directive 2002/58/EC, to use his or her right to object by automated means using technical specifications.
Each data subject shall have the right granted by the European legislator not to be subject to a decision based solely on automated processing, including profiling, which produces legal effects concerning him or her, or similarly significantly affects him or her, as long as the decision (1) is not is necessary for entering into, or the performance of, a contract between the data subject and a data controller, or (2) is not authorised by Union or Member State law to which the controller is subject and which also lays down suitable measures to safeguard the data subject's rights and freedoms and legitimate interests, or (3) is not based on the data subject's explicit consent.
If the decision (1) is necessary for entering into, or the performance of, a contract between the data subject and a data controller, or (2) it is based on the data subject's explicit consent, the allmysubs.video shall implement suitable measures to safeguard the data subject's rights and freedoms and legitimate interests, at least the right to obtain human intervention on the part of the controller, to express his or her point of view and contest the decision.
If the data subject wishes to exercise the rights concerning automated individual decision-making, he or she may, at any time, contact any employee of the allmysubs.video.
Each data subject shall have the right granted by the European legislator to withdraw his or her consent to processing of his or her personal data at any time.
If the data subject wishes to exercise the right to withdraw the consent, he or she may, at any time, contact any employee of the allmysubs.video.
On this website, the controller has integrated Google AdSense. Google AdSense is an online service which allows the placement of advertising on third-party sites. Google AdSense is based on an algorithm that selects advertisements displayed on third-party sites to match with the content of the respective third-party site. Google AdSense allows an interest-based targeting of the Internet user, which is implemented by means of generating individual user profiles.
The operating company of Google's AdSense component is Alphabet Inc., 1600 Amphitheatre Pkwy, Mountain View, CA 94043-1351, United States.
The purpose of Google's AdSense component is the integration of advertisements on our website. Google AdSense places a cookie on the information technology system of the data subject. The definition of cookies is explained above. With the setting of the cookie, Alphabet Inc. is enabled to analyze the use of our website. With each call-up to one of the individual pages of this Internet site, which is operated by the controller and into which a Google AdSense component is integrated, the Internet browser on the information technology system of the data subject will automatically submit data through the Google AdSense component for the purpose of online advertising and the settlement of commissions to Alphabet Inc. During the course of this technical procedure, the enterprise Alphabet Inc. gains knowledge of personal data, such as the IP address of the data subject, which serves Alphabet Inc., inter alia, to understand the origin of visitors and clicks and subsequently create commission settlements.
The data subject may, as stated above, prevent the setting of cookies through our website at any time by means of a corresponding adjustment of the web browser used and thus permanently deny the setting of cookies. Such an adjustment to the Internet browser used would also prevent Alphabet Inc. from setting a cookie on the information technology system of the data subject. Additionally, cookies already in use by Alphabet Inc. may be deleted at any time via a web browser or other software programs.
Furthermore, Google AdSense also uses so-called tracking pixels. A tracking pixel is a miniature graphic that is embedded in web pages to enable a log file recording and a log file analysis through which a statistical analysis may be performed. Based on the embedded tracking pixels, Alphabet Inc. is able to determine if and when a website was opened by a data subject, and which links were clicked on by the data subject. Tracking pixels serve, inter alia, to analyze the flow of visitors on a website.
Through Google AdSense, personal data and information—which also includes the IP address, and is necessary for the collection and accounting of the displayed advertisements—is transmitted to Alphabet Inc. in the United States of America. These personal data will be stored and processed in the United States of America. The Alphabet Inc. may disclose the collected personal data through this technical procedure to third parties.
Google AdSense is further explained under the following link https://www.google.com/intl/en/adsense/start/.
On this website, the controller has integrated the component of Google Analytics (with the anonymizer function). Google Analytics is a web analytics service. Web analytics is the collection, gathering, and analysis of data about the behavior of visitors to websites. A web analysis service collects, inter alia, data about the website from which a person has come (the so-called referrer), which sub-pages were visited, or how often and for what duration a sub-page was viewed. Web analytics are mainly used for the optimization of a website and in order to carry out a cost-benefit analysis of Internet advertising.
The operator of the Google Analytics component is Google Inc., 1600 Amphitheatre Pkwy, Mountain View, CA 94043-1351, United States.
For the web analytics through Google Analytics the controller uses the application "_gat. _anonymizeIp". By means of this application the IP address of the Internet connection of the data subject is abridged by Google and anonymised when accessing our websites from a Member State of the European Union or another Contracting State to the Agreement on the European Economic Area.
The purpose of the Google Analytics component is to analyze the traffic on our website. Google uses the collected data and information, inter alia, to evaluate the use of our website and to provide online reports, which show the activities on our websites, and to provide other services concerning the use of our Internet site for us.
Google Analytics places a cookie on the information technology system of the data subject. The definition of cookies is explained above. With the setting of the cookie, Google is enabled to analyze the use of our website. With each call-up to one of the individual pages of this Internet site, which is operated by the controller and into which a Google Analytics component was integrated, the Internet browser on the information technology system of the data subject will automatically submit data through the Google Analytics component for the purpose of online advertising and the settlement of commissions to Google. During the course of this technical procedure, the enterprise Google gains knowledge of personal information, such as the IP address of the data subject, which serves Google, inter alia, to understand the origin of visitors and clicks, and subsequently create commission settlements.
The cookie is used to store personal information, such as the access time, the location from which the access was made, and the frequency of visits of our website by the data subject. With each visit to our Internet site, such personal data, including the IP address of the Internet access used by the data subject, will be transmitted to Google in the United States of America. These personal data are stored by Google in the United States of America. Google may pass these personal data collected through the technical procedure to third parties.
The data subject may, as stated above, prevent the setting of cookies through our website at any time by means of a corresponding adjustment of the web browser used and thus permanently deny the setting of cookies. Such an adjustment to the Internet browser used would also prevent Google Analytics from setting a cookie on the information technology system of the data subject. In addition, cookies already in use by Google Analytics may be deleted at any time via a web browser or other software programs.
In addition, the data subject has the possibility of objecting to a collection of data that are generated by Google Analytics, which is related to the use of this website, as well as the processing of this data by Google and the chance to preclude any such. For this purpose, the data subject must download a browser add-on under the link https://tools.google.com/dlpage/gaoptout and install it. This browser add-on tells Google Analytics through a JavaScript, that any data and information about the visits of Internet pages may not be transmitted to Google Analytics. The installation of the browser add-ons is considered an objection by Google. If the information technology system of the data subject is later deleted, formatted, or newly installed, then the data subject must reinstall the browser add-ons to disable Google Analytics. If the browser add-on was uninstalled by the data subject or any other person who is attributable to their sphere of competence, or is disabled, it is possible to execute the reinstallation or reactivation of the browser add-ons.
Further information and the applicable data protection provisions of Google may be retrieved under https://www.google.com/intl/en/policies/privacy/ and under http://www.google.com/analytics/terms/us.html. Google Analytics is further explained under the following Link https://www.google.com/analytics/.
On this website, the controller has integrated Google AdWords. Google AdWords is a service for Internet advertising that allows the advertiser to place ads in Google search engine results and the Google advertising network. Google AdWords allows an advertiser to pre-define specific keywords with the help of which an ad on Google's search results only then displayed, when the user utilizes the search engine to retrieve a keyword-relevant search result. In the Google Advertising Network, the ads are distributed on relevant web pages using an automatic algorithm, taking into account the previously defined keywords.
The operating company of Google AdWords is Google Inc., 1600 Amphitheatre Pkwy, Mountain View, CA 94043-1351, UNITED STATES.
The purpose of Google AdWords is the promotion of our website by the inclusion of relevant advertising on the websites of third parties and in the search engine results of the search engine Google and an insertion of third-party advertising on our website.
If a data subject reaches our website via a Google ad, a conversion cookie is filed on the information technology system of the data subject through Google. The definition of cookies is explained above. A conversion cookie loses its validity after 30 days and is not used to identify the data subject. If the cookie has not expired, the conversion cookie is used to check whether certain sub-pages, e.g, the shopping cart from an online shop system, were called up on our website. Through the conversion cookie, both Google and the controller can understand whether a person who reached an AdWords ad on our website generated sales, that is, executed or canceled a sale of goods.
The data and information collected through the use of the conversion cookie is used by Google to create visit statistics for our website. These visit statistics are used in order to determine the total number of users who have been served through AdWords ads to ascertain the success or failure of each AdWords ad and to optimize our AdWords ads in the future. Neither our company nor other Google AdWords advertisers receive information from Google that could identify the data subject.
The conversion cookie stores personal information, e.g. the Internet pages visited by the data subject. Each time we visit our Internet pages, personal data, including the IP address of the Internet access used by the data subject, is transmitted to Google in the United States of America. These personal data are stored by Google in the United States of America. Google may pass these personal data collected through the technical procedure to third parties.
The data subject may, at any time, prevent the setting of cookies by our website, as stated above, by means of a corresponding setting of the Internet browser used and thus permanently deny the setting of cookies. Such a setting of the Internet browser used would also prevent Google from placing a conversion cookie on the information technology system of the data subject. In addition, a cookie set by Google AdWords may be deleted at any time via the Internet browser or other software programs.
The data subject has a possibility of objecting to the interest based advertisement of Google. Therefore, the data subject must access from each of the browsers in use the link www.google.de/settings/ads and set the desired settings.
Further information and the applicable data protection provisions of Google may be retrieved under https://www.google.com/intl/en/policies/privacy/.
Art. 6(1) lit. a GDPR serves as the legal basis for processing operations for which we obtain consent for a specific processing purpose. If the processing of personal data is necessary for the performance of a contract to which the data subject is party, as is the case, for example, when processing operations are necessary for the supply of goods or to provide any other service, the processing is based on Article 6(1) lit. b GDPR. The same applies to such processing operations which are necessary for carrying out pre-contractual measures, for example in the case of inquiries concerning our products or services. Is our company subject to a legal obligation by which processing of personal data is required, such as for the fulfillment of tax obligations, the processing is based on Art. 6(1) lit. c GDPR. In rare cases, the processing of personal data may be necessary to protect the vital interests of the data subject or of another natural person. This would be the case, for example, if a visitor were injured in our company and his name, age, health insurance data or other vital information would have to be passed on to a doctor, hospital or other third party. Then the processing would be based on Art. 6(1) lit. d GDPR. Finally, processing operations could be based on Article 6(1) lit. f GDPR. This legal basis is used for processing operations which are not covered by any of the abovementioned legal grounds, if processing is necessary for the purposes of the legitimate interests pursued by our company or by a third party, except where such interests are overridden by the interests or fundamental rights and freedoms of the data subject which require protection of personal data. Such processing operations are particularly permissible because they have been specifically mentioned by the European legislator. He considered that a legitimate interest could be assumed if the data subject is a client of the controller (Recital 47 Sentence 2 GDPR).
Where the processing of personal data is based on Article 6(1) lit. f GDPR our legitimate interest is to carry out our business in favor of the well-being of all our employees and the shareholders.
The criteria used to determine the period of storage of personal data is the respective statutory retention period. After expiration of that period, the corresponding data is routinely deleted, as long as it is no longer necessary for the fulfillment of the contract or the initiation of a contract.
We clarify that the provision of personal data is partly required by law (e.g. tax regulations) or can also result from contractual provisions (e.g. information on the contractual partner). Sometimes it may be necessary to conclude a contract that the data subject provides us with personal data, which must subsequently be processed by us. The data subject is, for example, obliged to provide us with personal data when our company signs a contract with him or her. The non-provision of the personal data would have the consequence that the contract with the data subject could not be concluded. Before personal data is provided by the data subject, the data subject must contact any employee. The employee clarifies to the data subject whether the provision of the personal data is required by law or contract or is necessary for the conclusion of the contract, whether there is an obligation to provide the personal data and the consequences of non-provision of the personal data.
As a responsible company, we do not use automatic decision-making or profiling.
This Privacy Policy has been generated by the Privacy Policy Generator of the External Data Protection Officers that was developed in cooperation with the Media Law Lawyers from WBS-LAW.


Library for common mathematical functions.
| Name | Type | Value | Description |
|---|---|---|---|
| E | float | 2.718281828459045235360 | It's e. |
| PI | float | 3.141592653589793238462 | It's pi. |
Returns the absolute value of the given numerical input. The type of the output will match the input.
| Name | Type | Description |
|---|---|---|
| number | float or integer | Any number |
| Type | Description |
|---|---|
| float or integer | A positive number |
Calculates the arc cosine (inverse cosine) of the given ratio.
| Name | Type | Description |
|---|---|---|
| ratio | float | A valid cosine ratio. |
| Type | Description |
|---|---|
| float | the angle with the given cosine value in radians |
Calculates the arc sine (inverse sine) of the given ratio.
| Name | Type | Description |
|---|---|---|
| ratio | float | A valid sine ratio. |
| Type | Description |
|---|---|
| float | the angle with the given sine value in radians |
Calculates the arc tangent (inverse tangent) of the given ratio. This function can be called with either 1 or 2 arguments. If given one argument, that value is the ratio and a theta between -pi / 2 and pi / 2will be returned. If given two arguments, these represent y and x components (respectively) of a vector. By providing two vector components, you will get return values in the full range of -pi to pi.
| Name | Type | Optional | Description |
|---|---|---|---|
| yComponent | float | A y-component value. |
|
| xComponent | float | Optional | An optional x-component value. If ommitted, the default value is 1.0 and the first argument simply becomes a ratio. |
| Type | Description |
|---|---|
| float | the angle with the given tangent value |
Computes the cosine of the given angle
| Name | Type | Description |
|---|---|---|
| theta | float | An angle in radians |
| Type | Description |
|---|---|
| float | The cosine ratio |
Ensures the number falls within the given range. The type of the output will match the number that is chosen. For example, ensureRange(2.0, 1, 3) will be 2.0, but ensureRange of (2, 0, 1) will be 1. If the number matches either the upper or lower bound, the initial input will be returned, so ensureRange(3.0, 3, 4) is unambiguously 3.0, not 3.
| Name | Type | Description |
|---|---|---|
| num | float or integer | Any number |
| lowerBound | float or integer | The lower bound |
| upperBound | float or integer | The upper bound |
| Type | Description |
|---|---|
| float or integer | A guaranteed to be in the given range. |
Returns the integer less than or equal to the given number.
| Name | Type | Description |
|---|---|---|
| number | float or integer | A float to round down. Integers are also valid input, but will return themselves. |
| Type | Description |
|---|---|
| integer | The next integer less than or equal to the input. |
Computes the natural logarithm (base e) of the input. Throws Core.InvalidArgumentException for values less than or equal to 0.
| Name | Type | Description |
|---|---|---|
| number | float or integer | A positive number |
| Type | Description |
|---|---|
| float | The natural logarithm |
Computes the base-10 logarithm of the input. Throws Core.InvalidArgumentException for values less than or equal to 0. Guaranteed to return floating-point-error-free floats for inputs that are exactly powers of 10.
| Name | Type | Description |
|---|---|---|
| number | float or integer | A positive number |
| Type | Description |
|---|---|
| float | The base 10 logarithm |
Computes the base-2 logarithm of the input. Throws Core.InvalidArgumentException for values less than or equal to 0. Guaranteed to return floating-point-error-free floats for inputs that are exactly powers of 2.
| Name | Type | Description |
|---|---|---|
| number | float or integer | A positive number |
| Type | Description |
|---|---|
| float | The base 2 logarithm |
Returns the maximum of two numbers. The type of the output will match the number that is chosen. For example, max(3.0, 2) will be 3.0, but the max of (3, 2.0) will be 3. If they match, the first number is returned, so max(3.0, 3) is unambiguously 3.0, not 3.
| Name | Type | Description |
|---|---|---|
| a | float or integer | Any number |
| b | float or integer | Any number |
| Type | Description |
|---|---|
| float or integer | The higher number. |
Returns the minimum of two numbers. The type of the output will match the number that is chosen. For example, min(2.0, 3) will be 2.0, but the min of (2, 3.0) will be 2. If they match, the first number is returned, so min(3.0, 3) is unambiguously 3.0, not 3.
| Name | Type | Description |
|---|---|---|
| a | float or integer | Any number |
| b | float or integer | Any number |
| Type | Description |
|---|---|
| float or integer | The lower number. |
Determines positive/negative/zero-ness of a number by returning -1, 0, or 1 accordingly. Output is always an integer regardless of input type.
| Name | Type | Description |
|---|---|---|
| num | float or integer | Any number |
| Type | Description |
|---|---|
| integer | -1 if the number is negative. 1 if it's positive. 0 if it's 0 or 0.0 |
Computes the sine of the given angle
| Name | Type | Description |
|---|---|---|
| theta | float | An angle in radians |
| Type | Description |
|---|---|
| float | The sine ratio |
Computes the tangent of the given angle.
| Name | Type | Description |
|---|---|---|
| theta | float | An angle in radians |
| Type | Description |
|---|---|
| float | The tangent ratio |


It seems that you don't have email templates yet. Would you like to create one?
Could not find anything. Try to change search criteria.


Chad Cooper, instructor -<EMAIL_ADDRESS>In this workshop we will acquire data, process it, examine it, and manipulate it into a usable GIS dataset.
Things you should know already:
Curriculum:
For this workshop we will start from scratch, first
What we will accomplish


About me:
Hi! I'm Lincoln. I'm studying electrical and computer engineering and
physics at the University of Maryland. I work at Base 2 Engineering
as a computer engineering intern, where I write low-level software in C. I love working on
low-level software because it's satisfying to see everything come together, which is another
reason I love physics and maths so much (which are two of my favorite pastimes outside
the computer engineering field). I also love Arduino and electrical engineering, so I
started an Arduino club in high school. I plan to use my physics degree to help improve
the electrical engineering side of computer engineering, as I would like to understand
every little detail of what I'm working with. I also have an interest in Linguistics, in which
I plan to minor in in the future.
Contact:
Name: Lincoln V. Doney
Phone:<PHONE_NUMBER>
E-Mail<EMAIL_ADDRESS>School E-mail<EMAIL_ADDRESS>Current Education:
School: University of Maryland College Park
Program: College Park Scholars
Major: Electrical and Computer Engineering & Physics
Minor: Prospective Linguistics minor
GPA: 4.0
High School Education:
School: South River High School
STEM Pathways: Computer Science and PLTW
Skills:
Programming languages: C | C# | Java | MIPS Assembly | PHP | Type/JavaScript | OCaml | Ruby | Rust | Web Design Languages (css, html, etc.)
Foreign Languages: Japanese (JLPT N3)
Frameworks: Cordova | Node JS | Ncurses | JQuery
Software: Multisim | Office products | Linux CLI (Debian or Arch based) | Visual Studio | Git
Hardware: Arduino | Raspberry Pi
This website
-Well you're on it right now! Here's the code:
Warning: This Game is Hard
-This is a Mobile App I created using Cocos Creator for fun which has been published to the Google Play Store (I lost the most recent code
so it's an abandoned project for now :( )
Cafe at Maryland Hall App
-I created this for an internship, which is yet to be published. It is a mobile ordering service
CRAB Radio Podcast App
-A podcasting app for CRAB Radio which is currently in progress
Annoying Bot
-Another one of my youtube projects, its just a bot that annoys you when it detects your face
Social Distancer
-A mobile app to support the 6 feet social distancing rule
Brain F$!# Interpreter
-An interpreter for the language Brain F*!# to run or analyze code written in that language
Project PANOPTES South River
-Exoplanet Hunting Telescope
Cancelled due to COVID-19
CLI Pong
-Command Line Interface pong written in C using ncurses (PRACTICE PROJECT)
Engy
-3D Graphical Game Engine written in C++ (PRACTICE PROJECT)
Arduino Breakout
-Atari Breakout on an Arduino with an OLED!
CLI Conway's Game of Life
-Little fun project I wrote as a challenge from a fellow programmer
TrustYa
-Social Media platform (sort of discontinued)
Entegra Studios
Position: Software Development Intern
Cafe at Maryland Hall
Position: Mobile App Developer
CRAB Radio
Position: Software Development Intern
Base 2 Engineering
Position: Computer Engineering Intern
Competitions
Hackathons
Charm City Code 2018
Cyber Maryland 2018 & 2020
Lockheed Martin Code Quest 2019
Same Home Different Hacks 2020
Geom Hacks 2020
DeveloperWeek Global 2020
Planet Wide SOS Hackaton 2020
COVID19 Hack Challenge 2020
Epsilon Hacks 2020
Shell Makeathon 2020
Programming Competitions
AACC Programming Competition 2017 & 2018
College Clubs
Society of Physics Students
High School Clubs
FTC Robotics
Team Captain Talons 3796
Qualified for states (2x)
Boy Scouts Troop 1214
Life Scout
Senior Patrol Leader
Order of the Arrow Honor Society
Cyber Patriot
Team Captian
Bronze 2016 | Gold 2017 | Platinum 2018 | Gold 2019
Other related clubs
Arduino Club (founder)
Stock Market Club
Foosball Club
Cyber Club


About Me
I was born in middle-of-nowhere Indiana, surrounded by cows and corn. Bored with the prospects of farm life, I focused my energies on art and music.
I started off my adult life pursuing a career in youth ministry but found myself spending all my free time doing graphic design. Eventually, I made it my full-time focus and took a job as a web designer, learning how to code HTML and CSS on the job.
Through the years, I've become more focused on development, and am looking forward to understanding the backend as well as I do the front so that I can bring my creative ideas to life.


Lap Stool by SmithMatthias highlights traditional joinery technique
by Alyn GriffithsLondon studio SmithMatthias has created a wooden bar stool for British design brand Deadgood featuring a simple structure held together by a visible lap joint that gives the product its name.
The Lap Stool is the second product designed by Jack Smith and Gemma Matthias for Deadgood, following on from the Marra Table the duo created in 2017.
The designers were set a brief to create a stacking wooden stool with a distinctive aesthetic, which the Newcastle upon Tyne-based brand had identified as an underserved niche in the contract furniture market.
"Timber stools exude quality and durability, but often at the expense of reduced utility and high transport costs due to their method of assembly," Deadgood's design director, Vicki Leach told Dezeen.
"The Lap Stool bridges that gap and offers commercial projects much more flexibility and functionality, whilst not having to make concessions on using this high-quality, tactile material."
Deadgood approached SmithMatthias for the project because of their reputation for creating straightforward, functional products that celebrate the materials and processes used in their manufacture.
The designers began by sketching out a basic form that they developed through a process of hands-on model making. This eventually culminated in a decision to focus on the lap joint as a key detail in the design.
"Our usual process is to sketch together and get in the workshop to develop ideas," explained Matthias.
"The leg assembly was born through sketching but it wasn't until we started playing around in the workshop that the leg joint was decided."
Two angled pieces of wood meet at the top to form the stool's A-shaped frame. Some of the material is cut away from each piece to create the distinctive overlapping joint that the stool was named after.
"The lap joint is a time-honoured method of securely joining pieces of overlapping timber," Leach added.
"The way in which the leg is designed offers supreme strength, whilst at the same time revealing an intriguing and honest detail that tells the story of the craft."
The product is made from solid European oak with a natural or black lacquered finish. The user sits on a simple seat with rounded edges, while a bent-metal footrest enhances the sitter's comfort.
According to Smith, the stool is best suited to use in contexts such as bars, restaurants and workplaces requiring furniture that is versatile and easy to move around.
The Lap Stool was launched at an event at Deadgood's showroom in London's Clerkenwell on 20 November. The product is available for pre-order, with the first stock shipping in January 2020.
Deadgood was co-founded in 2005 by Dan Ziglam and Elliot Brook, who set out to build a portfolio of characterful furniture, lighting and interior products that are made in Britain.
The company has worked with many emerging designers over the years, including Daniel Schofield, who designed a leather lampshade with a laser-cut pattern inspired by brogue shoes; Max Lamb, who created an anodised aluminium table; and David Irwin, whose pentagonal pendant lights for the brand are held together by silicon bands.


-
Oct 01, 2017
-
Oct 04, 2016
-
Aug 07, 2016
-
Jul 31, 2016
-
Jul 24, 2016
-
Jul 17, 2016
-
Jun 26, 2016
-
Jun 12, 2016
-
Jun 05, 2016
-
Aug 17, 2015
-
Mar 09, 2015
-
Dec 08, 2014
-
Nov 04, 2014
-
Aug 20, 2014
-
May 20, 2014
-
Feb 21, 2014
-
Feb 10, 2014
-
Feb 07, 2014
-
Dec 11, 2013
-
Dec 10, 2013


You're confirming you've already paid this money
We will tell the claimant that you've paid and ask them to close this claim.
We'll contact you again if they don't accept that you have already paid.
The claim fee
Jan Clark has paid a claim fee of £75 to make this claim. They have a right to claim this back from you. You can choose to pay them this now and ask them to close the claim. Alternatively they might decide to continue the claim to get you to pay the £75 claim fee.
Confirm that you've paid the money
It’s against the law to deliberately give untrue information.
Confirm and submit response


GeniBlocks Examples
Geniverse 2.0 Interactives
- Level 1, Mission 1.1
- Level 2, Mission 1.1
- Level 2, Mission 2.1
- Level 2, Mission 3.1
- Level 4, Mission 1.1
- Alternate URLs which allow selection of a local authoring file:
- Level 1, Mission 1.1
- Level 2, Mission 1.1
- Level 2, Mission 2.1
- Level 2, Mission 3.1
- Level 4, Mission 1.1
- Authoring File(Download and edit locally)
- October classroom test:
- GeniConnect Drakes & Traits(Ethan McElroy)
- Alternate Egg Game III behaviors for consideration/evaluation:
- Case 3: Egg Game III (collect eggs in basket)
- Alternate URLs which return to Github Examples page at end of each case:
- Level 1, Mission 1.1
- Level 2, Mission 1.1
- Level 2, Mission 2.1
- Level 2, Mission 3.1
- Level 4, Mission 1.1
Geniverse 2.0 Prototype
Basic Examples
Experiments


DB2 Text Search also supports searches in SQL/XML and XQuery. By using a subset of the XPath language with extensions for text search, XML search allows you to index and search XML documents. This page shows you several options to search in XML documents.
This example uses the text search functionality in combination with XMLQUERY(). It returns the value of the author
tag if the bookinfo contains the word 'range'.
SELECT xmlquery('$bi//author' passing bookinfo as "bi")
FROM books
WHERE CONTAINS(bookinfo, 'range') = 1
This example performs the same search as the previous example except that XQuery is used instead.
xquery db2-fn:xmlcolumn-contains
('MYSCHEMA.BOOKS.BOOKINFO', 'range')/bookinfo/author
This example performs the same search as the previous example except that XPath expression is used instead.
SELECT author, year, substr(title,1,30)
FROM books
WHERE CONTAINS( bookinfo
, '@xpath:''/bookinfo/story [.contains("range")]''') = 1
This example shows the use of XPath expression in an XQuery to perform a text search.
xquery db2-fn:xmlcolumn-contains
( 'MYSCHEMA.BOOKS.BOOKINFO'
, '@xpath:''/bookinfo/story[.contains("range")]''')/bookinfo/author


If you're reading this, audio isn't supported.
HOME
Calendar
Saved Lists
Today's To-Do List
Walk the dog
Brush the cat
Buy presents
Make egg pasta
Eat cheese
Build a website


Implements S4 classes for probability models based on packages 'distr' and
'distrEx'.
| Version: |
2.7.0 |
| Depends: |
R (≥ 2.14.0), distr (≥ 2.5.2), distrEx (≥ 2.4), RandVar (≥
0.6.3), MASS, stats4, methods |
| Imports: |
startupmsg, sfsmisc, graphics, stats, grDevices |
| Suggests: |
ismev, evd |
| Enhances: |
RobExtremes |
| Published: |
2018-08-01 |
| Author: |
Matthias Kohl [aut, cph],
Peter Ruckdeschel [cre, cph],
R Core Team [ctb, cph] (for source file 'format.perc') |
| Maintainer: |
Peter Ruckdeschel <peter.ruckdeschel at uni-oldenburg.de> |
| License: |
LGPL-3 |
| URL: |
http://distr.r-forge.r-project.org/ |
| NeedsCompilation: |
no |
| Citation: |
distrMod citation info |
| Materials: |
NEWS |
| In views: |
Distributions |
| CRAN checks: |
distrMod results |


The Ionic Native Playground is an app created by Ibby Hadeed to allow people to experiment with different Cordova plugins via Ionic Native wrappers. This app is open source and is available on Github under an MIT license.
Feel free to submit any suggestions or issues on the Github repository. Also, if you like this app, don't forget to share it with your friends and colleagues!


{% extends "base.html" %} {% load bootstrap3 %} {% block title %}Sign in{% endblock %} {% block content %}
Not yet registered? Register now
Trouble signing in? Reset password.
| Connect with Facebook
Login failed. Try again...


Classes
The following classes are available globally.
-
This is the main logger class. Its operation should be fairly intuitive and the properties and functions are fully documented herein.
The ‘SloggerTests.swift’ file is a very good place to look for examples of advanced usage, including how to define a subclass to use your own categories. Check out the Slogger extension below for logging site functions documentation. Only the severe level functions are documented. All other functions related to logging site levels are identical.
Important Implementation Note: Slogger uses a private, serial dispatch queue for most of its work, including calls to the generator, decorator, and all logging destinations. The only code executed synchronously by the logging functions is the threshold evaluation (and only if
destinations.count > 0
) and, if that passes, evaulation of the closure to produce the message from the logging site. All other work is performed on a separate thread serially.Thus, all Slogger types are inherently thread-safe. If you decide to implement your own, you can do so without concern about concurrency issues. However, if you create a custom implementation of any type that requires code be executed on the main thread, you MUST wrap that code inside a
See moredispatch_async
call to the main queue.Declaration
Swift
public class Slogger <T: SloggerCategory> : NSObject
-
A default console destination.
See moreDeclaration
Swift
public class ConsoleDestination : Destination
-
Comma separated values TextFileDestination
See moreDeclaration
Swift
public class CSVFileDestination : TextFileDestination
-
CSV entry generator.
Declaration
Swift
public class CSVGenerator : Generator
-
An in-memory logging destination used by the test suite. Provided as it might be a useful superclass for some use-cases (e.g. buffering lines for periodic transfer to some other output sink.
See moreDeclaration
Swift
public class MemoryDestination : Destination
-
Destination for XML file output.
See moreDeclaration
Swift
public class XMLFileDestination : TextFileDestination
-
XML log entry generator.
Declaration
Swift
public class XMLGenerator : Generator
-
A rotating and archiving local filesystem destination.
Important: This destination always keeps the file well-formed by outputting the postamble generated by
See moreconfig.fileWrapperGenerator
after each entry. Unless the app were to crash while writing to the file, it should always be assumed to be well formed. This is particularly important for any formats that require content enclosing the entries (e.g. JSON and XML).Declaration
Swift
public class TextFileDestination : Destination
-
Base class for log entry generators. See custom file destinations for more generators.
See moreDeclaration
Swift
public class Generator
-
Output destination for JSON files.
See moreDeclaration
Swift
public class JSONFileDestination : TextFileDestination
-
JSON format log entry generator.
Declaration
Swift
public class JSONGenerator : Generator
-
Tab-delimited file output destination.
See moreDeclaration
Swift
public class TSVFileDestination : TextFileDestination
-
Log entry generator for tab-delimited format.
Declaration
Swift
public class TSVGenerator : Generator
-
Simple performance test for logging.
See moreDeclaration
Swift
public class PerformanceTest
-
Base class implementing the destination protocol. Subclasses must override logString function.
See moreDeclaration
Swift
public class Destination


Typedef
| Static Public Summary | ||
| public |
ContextApp: * SandboxContext for application |
|
| public |
|
|
| public |
Bridge to make HTTP requests |
|
| public |
|
|
| public |
Is a bridge to isolate the runtime from the specific platform |
|
| public |
|
Static Public
public ContextApp: * source
SandboxContext for application
public Hyperty: Object source
Properties:
| Name | Type | Attribute | Description |
| runtimeHypertyURL | string | Hyperty address |
|
| status | MSG_STATUS | Hyperty status |
|
| instance | Object | Hyperty object |
|
| name | string | Hyperty name |
public RuntimeAdapter: Object source
Properties:
| Name | Type | Attribute | Description |
| requireHyperty | function(Hyperty descriptor: string, Hyperty addresses to be reused or empty in other case: string): Promise<Hyperty> | Loads and returns a Hyperty |
|
| requireProtostub | function(Domain: string) | Loads a protostub from the given domain |
|
| close | function(): Promise | Unloads and closes the installed runtime |
public RuntimeFactory: Object source
Is a bridge to isolate the runtime from the specific platform
Properties:
| Name | Type | Attribute | Description |
| createSandbox | function(): Sandbox | Creates a new Sandbox |
|
| createAppSandbox | function(): SandboxApp | Creates a new SandboxApp |
|
| createHttpRequest | function(): Request | Creates a new Request object |
|
| createRuntimeCatalogue | function(): RuntimeCatalogue | Creates a new RuntimeCatalogue |
|
| atob | function(Encoded data: string): string | Returns the string decoded |
|
| persistenceManager | function(): PersistenceManager | Returns a new PersistenceManager |
|
| storageManager | function(): StorageManager | Returns a new StorageManager |
|
| runtimeCapabilities | function(): RuntimeCapabilities | Returns a new RuntimeCapabilities |


Nothing is more frustrating than something not working when you need it most.  Perhaps your final paper is due for a class or you simply can't do the work you need to - whatever the case, getting your PC repaired is essential. Many technicians in the computer industry charge a flat rate (or several hours of time) to perform a "tune up" on your PC and will tell you that they've repaired it.
This is seldom the best way to approach your problem and will not prevent the problem from coming again. The reality is that spyware removal, disk drive defragmentation, virus removal and definition updates, etc. are only temporary solutions if not coupled with completely securing your computer.


--- author: Jesse categories: app date: '2011-08-11 01:00:41' link: http://blogs.nitobi.com/jesse/2011/08/10/my-blog-is-moving/ permalink: /2011/08/11/my-blog-is-moving/ slug: my-blog-is-moving status: publish title: My blog is moving type: post format: html ---
My Blog activity will now happen over at my own site, to relieve the overload on nitobi.com. Check it out at http://www.risingj.com Cheers!