connection module
Documentation of the TIBCO eFTL™ Python application programming interface.

Ancestors (in MRO)
Class variables
var CONNECTED
var CONNECTING
var DISCONNECTED
var DISCONNECTING
var RECONNECTING
Static methods
def __init__(
self)
Initialize the Eftl instance.
def connect(
self, url, **kwargs)
Connect to an eFTL server.
This call returns immediately; connecting continues asynchronously. When the connection is ready to use, the eFTL library calls your on_connect method, passing a EftlConnection object that you can use to publish and subscribe.
When a pipe-separated list of URLs is specified this call will attempt a connection to each in turn, in a random order, until one is connected. A program that uses more than one server channel must connect separately to each channel.
:param: url: The call connects to the eFTL server at this URL. This can be a single URL, or a pipe ('|') separated list of URLs. URLs can be in either of these forms
ws://host:port/channel
wss://host:port/channel
Optionally, the URLs can contain the username, password,
and/or client identifier
ws://username:password@host:port/channel?clientId=<identifier>
wss://username:password@host:port/channel?clientId=<identifier
:param: kwargs auto_reconnect_attempts : int, optional Maximum number of reconnect attempts. The default is 256 attempts. auto_reconnect_max_delay : optional Maximum reconnect delay in milliseconds. The default is 30 seconds. user : optional Login credentials to use if not found in the url. password : optional Login credentials to use if not found in the url. client_id : optional User-specified client identifier. handshake_timeout : optional Seconds to wait for websocket handshake to complete. login_timeout : optional Seconds to halt waiting for a login message reply. If a reply is not received in time, raise an EftlClientError. polling_interval : optional Seconds to wait between each message reply check. trust_all : true/false (optional) trust_store : certificate path (optional) loop : event loop provided by user (optional) Callbacks : on_connect(connection): on_disconnect(connection, loop, code, reason): on_reconnect(connection): on_error(connection, code, reason): on_state_change(connection, state): :return: The EftlConnection object that can used to publish and subscribe Raises
ValueError If any provided urls lack a host name or the correct scheme. EftlClientError If the connection is not established in time.
def get_version(
self)
Return the eFTL Python library version.
Returns: str: The eFTL Python library version
Instance variables
var ec
class EftlAlreadyConnected
Raise when connect method is called but connection is already connected.
Ancestors (in MRO)
Class variables
var args
class EftlClientError
Raise when establishing a connection to the server fails.
Ancestors (in MRO)
Class variables
var args
class EftlConnection
A websocket wrapper exchanging eftl protocol messages with a server.
Different functions implement each of the types of protocol messages (e.g. publish, subscribe, disconnect). The messages are sent asynchronously, but by default these functions halt waiting for a reponse. The user may set a timeout for this waiting period if they desire.
Users also may specify callbacks to trigger when messages get delivered, fail to get delivered, etc.
Ancestors (in MRO)
Static methods
def __init__(
self)
Initialize the connection object, which is unconnected.
def acknowledge(
self, message)
Acknowledge this message.
Messages consumed from subscriptions with a client acknowledgment mode must be explicitly acknowledged. The eFTL server will stop delivering messages to the client once the server's configured maximum number of unacknowledged messages is reached.
:param message: The message being acknowledged :return:
def acknowledge_all(
self, message)
Acknowledge all messages up to and including this message.
Messages consumed from subscriptions with a client acknowledgment mode must be explicitly acknowledged. The eFTL server will stop delivering messages to the client once the server's configured maximum number of unacknowledged messages is reached.
:param message: The message being acknowledged1 :return:
def close_all_subscriptions(
self)
Close all the subscriptions on this connection.
For durable subscriptions, this call will cause the persistence service to stop delivering messages while leaving the durable subscriptions to continue accumulating messages. Any unacknowledged messages will be made available for redelivery.
Programs receive subscription identifiers through their on_subscribe method.
def close_subscription(
self, subscription_id)
Close subscription for specified subscription identifier.
For durable subscriptions, this call will cause the persistence service to stop delivering messages while leaving the durable subscriptions to continue accumulating messages. Any unacknowledged messages will be made available for redelivery.
Programs receive subscription identifiers through their on_subscribe method.
def create_kv_map(
self, name)
Return a new EftlKVMap associated with this connection.
:param name: name of the KVMap :return: The KVmap object
def create_message(
self)
Create an EftlMessage that can be used to publish or send request/replies.
:return: The EftlMessage object
def disconnect(
self)
Disconnect from the eFTL server.
Programs may disconnect to free server resources.
This call returns immediately; disconnecting continues asynchronously.
When the connection has closed, the eFTL library calls your on_disconnect callback.
:return:
def get_clientId(
self)
Get the client identifier for this connection.
:return: The client's identifier.
def is_connected(
self)
Determine whether this connection to the eFTL server is open or closed.
:return: True if this connection is open, False otherwise
def publish(
self, message, **kwargs)
Publish a one-to-many message to all subscribing clients.
This call returns immediately; publishing continues asynchronously. When the publish completes successfully, the eFTL library calls your
:param message: Publish this message. :param kwargs: callbacks: on_publish on_error :return:
ValueError If the message size exceeds the maximum. TypeError If the message is not of type EftlMessage ConnectionError If the connection is closed.
def reconnect(
self)
Reopen a closed connection.
You may call this method within your on_disconnect method.
This call returns immediately; connecting continues asynchronously. When the connection is ready to use, the eFTL library calls your on_reconnect callback
Reconnecting automatically re-activates all subscriptions on the connection. The eFTL library invokes your on_subscribe callback for each successful resubscription.
:return:
def remove_kv_map(
self, name)
Remove a EftlKVMap object.
:param name: the name of the map :return:
def send_reply(
self, requestMessage, replyMessage, **kwargs)
Send a reply message in response to a request message.
This call returns immediately. When the send completes successfully the eFTL library calls your {@link CompletionListener#onCompletion} callback.
:param requestMessage: The reply message to send :param replyMessage: The request msg :param kwargs: callbacks :return:
def send_request(
self, message, timeout, **kwargs)
Publish a request message.
This call returns immediately. When the reply is received the eFTL library calls your {@link RequestListener#onReply} callback.
:param message: The request message to publish. :param timeout: timeout seconds to wait for reply :param kwargs: callbacks: :return:
def subscribe(
self, **kwargs)
Send a message to register a matcher-based subscription.
Parameters
timeout : optional
Number of seconds to halt waiting on acknowledgement from
the server (default set in EftlConnection.connect()).
matcher : str, optional
JSON content matcher to subscribe to.
type : {"standard", "shared", "last-value"}, optional
Durable type.
key : optional
The last-value index key, if type
is "last-value".
durable : str, optional
Name to give the durable.
ack_mode: client, None. Default is auto
Returns
sub_id The subcription identifier of the new subscription.
def unsubscribe(
self, sub_id)
Unsubscribe from messages on a subscription.
For durable subscriptions, this call will cause the persistence service to remove the durable subscription, along with any persisted messages.
Programs receive subscription identifiers through their methods.
:param sub_id: Subscription identifier of the subscription to delete. timeout` :return:
def unsubscribe_all(
self)
Unsubscribe from all subscriptions.
Parameters
timeout : optional Number of seconds to halt waiting on acknowledgement from the server (default set in EftlConnection.connect()).
Instance variables
var attempt_manual_reconnect
var auto_reconnect_attempts
var auto_reconnect_max_delay
var client_factory
var client_id
var client_protocol
var code
var connection_closed
var first_retry_delay
var got_login_reply
var kv_pair
var login_timeout
var polling_interval
var previously_connected
var reason
var reconnect_counter
var reconnect_timer
var reconnect_token
var requests
var sequence_counter
var status
var subscription_counter
var subscriptions
var timeout
var trust_all
var trust_store
var url_index
var url_list
var user_event_loop
class EftlKVMap
A key-value map object represents a program's connection to an FTL map.
Programs use key-value map objects to set, get, and remove key-value pairs in an FTL map.
Ancestors (in MRO)
Static methods
def __init__(
self, connection, name)
Initialize self. See help(type(self)) for accurate signature.
def get(
self, key, **kwargs)
Get the value of a key from the map, or
:param key: Get the value for this key :param kwargs: Callbacks: on_success: on_error: :return: The value as a EftlMessage
def remove(
self, key, **kwargs)
Remove a key-value pair from the map.
This call returns immediately; removing continues asynchronously. When the remove completes successfully, the eFTL library calls your on_success callback.
:param key: Revove the value for this key. :param kwargs: on_success on_error :return:
def set(
self, key, value, **kwargs)
Set a key-value pair in the map, overwriting any existing value.
This call returns immediately; setting continues asynchronously. When the set completes successfully, the eFTL library calls your on_success callback.
:param key: Set the value for this key. :param value: Set this value for the key. :param kwargs: on_success on_error :return:
Instance variables
var connection
var name
class EftlMessage
Programs use message objects to publish messages on an eFTL connection or receive messages for a given subscription.
Message objects contain typed fields that map names to values.
Ancestors (in MRO)
Static methods
def __init__(
self, obj=None)
Initialize the EftlMessage instance properties.
def clear_all_fields(
self)
Remove all the fields in this message.
def clear_field(
self, field_name)
Remove the given field from this message.
:param field_name:
def get_datetime(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type datetime
def get_datetime_array(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type datetime array
def get_delivery_count(
self)
Message's delivery count assigned by the persistence service.
:return: The message delivery count.
def get_double(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type double
def get_double_array(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type double array
def get_field_names(
self)
Return the list of field names.
:return: The field names of this message as a list object.
def get_field_type(
self, field_name)
Return the type of value of this field.
:param field_name: The name of the field :return: type of value of this field.
Possible return values :
'int' represents Integer
'str' represents String
'float' represents Float
'datetime.datetime' represents datetime.datetime
'message' represents EftlMessage object type
'opaque' represents opaque type (bytes)
'unknown'
def get_long(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type long
def get_long_array(
self, field_name)
Get the value of a long array field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type long array
def get_message(
self, field_name)
Get the value of a long field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type message
def get_message_array(
self, field_name)
Get the value of a message array field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type message array (list of messages)
def get_opaque(
self, field_name)
Get the value of opaque field from a message.
:param field_name: The name of the field :return: The value of the field if the field is present
def get_store_message_id(
self)
Message's unique store identifier assigned by the persistence service.
:return: A monotonically increasing long value that represents message's unique store identifier
def get_string(
self, field_name)
Get the value of a string field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type string
def get_string_array(
self, field_name)
Get the value of a string array field from a message.
:param field_name: The name of the field
:return: The value of the field if the field is present and has type string array
def is_field_set(
self, field_name)
Return True if the field is set, False otherwise.
:param field_name: The name of the field :return: True if the field is set, False otherwise
def set_datetime(
self, field_name, value)
Set a datetime field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_datetime_array(
self, field_name, values)
Set a datetime array field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_double(
self, field_name, value)
Set a double field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_double_array(
self, field_name, values)
Set a double array field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_long(
self, field_name, value)
Set a long field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_long_array(
self, field_name, values)
Set a long array field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_message(
self, field_name, value)
Set a message field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_message_array(
self, field_name, values)
Set a message array field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_opaque(
self, field_name, value)
Set an opaque field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_string(
self, field_name, value)
Set a string field in a message.
:param field_name: The call sets this field :param value: The call sets this value. :return:
def set_string_array(
self, field_name, values)
Set a string array field in a message.
:param field_name: The call sets this field :param values: The call sets this value. :return:
class EftlMessageSizeTooLarge
Raise when EftlMesssage size is larger than the maximum allowed size.
Ancestors (in MRO)
Class variables
var args


👇 Write your article below (in
Markdown
)
👈 and see how it looks with Nutshell on the left!
# Write A Nutshell... by typing stuff under a header # Then Embed It By... 1. Making a [:link whose text starts with a colon](#WriteANutshell) (the colon's removed in this button, but you can see it in the Markdown on the right). Then... 2. Linking to the #HeaderName - in this case, #WriteANutshell. (Capitalization, punctuation and spaces don't matter) You can also embed Nutshells from [:other pages](../#recursion) and [:other websites](https://blog.ncase.me/explorable-explanations/#Procedural-Rhetoric), even from different authors or stuff written long ago, as long as both pages have the Nutshell script installed. ## IMPORTANT NOTE: If you're working in HTML, you can't just type "# Header"! Markdown parsing is NOT built into Nutshell, it's just part of this demo! You have to actually put it in header tags like `
Header
`. Likewise, a link has to be `
:link
`. If you're working in a normal WYSIWYG text editor, make headers and :links (with colons) as usual. (* Thanks NachoBIT for catching this ambiguity!)


Laravel Sail
- Introduction
- Installation & Setup
- Starting & Stopping Sail
- Executing Commands
- Interacting With Databases
- File Storage
- Running Tests
- Previewing Emails
- Container CLI
- PHP Versions
- Sharing Your Site
- Customization
Introduction
Laravel Sail is a light-weight command-line interface for interacting with Laravel's default Docker development environment. Sail provides a great starting point for building a Laravel application using PHP, MySQL, and Redis without requiring prior Docker experience.
At its heart, Sail is the docker-compose.yml
file and the sail
script that is stored at the root of your project. The sail
script provides a CLI with convenient methods for interacting with the Docker containers defined by the docker-compose.yml
file.
Laravel Sail is supported on macOS, Linux, and Windows (via WSL2).
Installation & Setup
Laravel Sail is automatically installed with all new Laravel applications so you may start using it immediately. To learn how to create a new Laravel application, please consult Laravel's installation documentation for your operating system. During installation, you will be asked to choose which Sail supported services your application will be interacting with.
Installing Sail Into Existing Applications
If you are interested in using Sail with an existing Laravel application, you may simply install Sail using the Composer package manager. Of course, these steps assume that your existing local development environment allows you to install Composer dependencies:
composer require laravel/sail --dev
After Sail has been installed, you may run the sail:install
Artisan command. This command will publish Sail's docker-compose.yml
file to the root of your application:
php artisan sail:install
Finally, you may start Sail. To continue learning how to use Sail, please continue reading the remainder of this documentation:
./vendor/bin/sail up
Configuring A Bash Alias
By default, Sail commands are invoked using the vendor/bin/sail
script that is included with all new Laravel applications:
./vendor/bin/sail up
However, instead of repeatedly typing vendor/bin/sail
to execute Sail commands, you may wish to configure a Bash alias that allows you to execute Sail's commands more easily:
alias sail='bash vendor/bin/sail'
Once the Bash alias has been configured, you may execute Sail commands by simply typing sail
. The remainder of this documentation's examples will assume that you have configured this alias:
sail up
Starting & Stopping Sail
Laravel Sail's docker-compose.yml
file defines a Docker variety of containers that work together to help you build Laravel applications. Each of these containers is an entry within the services
configuration of your docker-compose.yml
file. The laravel.test
container is the primary application container that will be serving your application.
Before starting Sail, you should ensure that no other web servers or databases are running on your local computer. To start all of the Docker containers defined in your application's docker-compose.yml
file, you should execute the up
command:
sail up
To start all of the Docker containers in the background, you may start Sail in "detached" mode:
sail up -d
Once the application's containers have been started, you may access the project in your web browser at: http://localhost.
To stop all of the containers, you may simply press Control + C to stop the container's execution. Or, if the containers are running in the background, you may use the down
command:
sail down
Executing Commands
When using Laravel Sail, your application is executing within a Docker container and is isolated from your local computer. However, Sail provides a convenient way to run various commands against your application such as arbitrary PHP commands, Artisan commands, Composer commands, and Node / NPM commands.
When reading the Laravel documentation, you will often see references to Composer, Artisan, and Node / NPM commands that do not reference Sail. Those examples assume that these tools are installed on your local computer. If you are using Sail for your local Laravel development environment, you should execute those commands using Sail:
# Running Artisan commands locally...
php artisan queue:work
# Running Artisan commands within Laravel Sail...
sail artisan queue:work
Executing PHP Commands
PHP commands may be executed using the php
command. Of course, these commands will execute using the PHP version that is configured for your application. To learn more about the PHP versions available to Laravel Sail, consult the PHP version documentation:
sail php --version
sail php script.php
Executing Composer Commands
Composer commands may be executed using the composer
command. Laravel Sail's application container includes a Composer 2.x installation:
sail composer require laravel/sanctum
Installing Composer Dependencies For Existing Applications
If you are developing an application with a team, you may not be the one that initially creates the Laravel application. Therefore, none of the application's Composer dependencies, including Sail, will be installed after you clone the application's repository to your local computer.
You may install the application's dependencies by navigating to the application's directory and executing the following command. This command uses a small Docker container containing PHP and Composer to install the application's dependencies:
docker run --rm \
-u "$(id -u):$(id -g)" \
-v $(pwd):/opt \
-w /opt \
laravelsail/php80-composer:latest \
composer install --ignore-platform-reqs
Executing Artisan Commands
Laravel Artisan commands may be executed using the artisan
command:
sail artisan queue:work
Executing Node / NPM Commands
Node commands may be executed using the node
command while NPM commands may be executed using the npm
command:
sail node --version
sail npm run prod
Interacting With Databases
MySQL
As you may have noticed, your application's docker-compose.yml
file contains an entry for a MySQL container. This container uses a Docker volume so that the data stored in your database is persisted even when stopping and restarting your containers. In addition, when the MySQL container is starting, it will ensure a database exists whose name matches the value of your DB_DATABASE
environment variable.
Once you have started your containers, you may connect to the MySQL instance within your application by setting your DB_HOST
environment variable within your application's .env
file to mysql
.
To connect to your application's MySQL database from your local machine, you may use a graphical database management application such as TablePlus. By default, the MySQL database is accessible at localhost
port 3306.
Redis
Your application's docker-compose.yml
file also contains an entry for a Redis container. This container uses a Docker volume so that the data stored in your Redis data is persisted even when stopping and restarting your containers. Once you have started your containers, you may connect to the Redis instance within your application by setting your REDIS_HOST
environment variable within your application's .env
file to redis
.
To connect to your application's Redis database from your local machine, you may use a graphical database management application such as TablePlus. By default, the Redis database is accessible at localhost
port 6379.
MeiliSearch
If you chose to install the MeiliSearch service when installing Sail, your application's docker-compose.yml
file will contain an entry for this powerful search-engine that is compatible with Laravel Scout. Once you have started your containers, you may connect to the MeiliSearch instance within your application by setting your MEILISEARCH_HOST
environment variable to http://meilisearch:7700
.
From your local machine, you may access MeiliSearch's web based administration panel by navigating to http://localhost:7700
in your web browser.
File Storage
If you plan to use Amazon S3 to store files while running your application in its production environment, you may wish to install the MinIO service when installing Sail. MinIO provides an S3 compatible API that you may use to develop locally using Laravel's s3
file storage driver without creating "test" storage buckets in your production S3 environment. If you choose to install MinIO while installing Sail, a MinIO configuration section will be added to your application's docker-compose.yml
file.
By default, your application's filesystems
configuration file already contains a disk configuration for the s3
disk. In addition to using this disk to interact with Amazon S3, you may use it to interact with any S3 compatible file storage service such as MinIO by simply modifying the associated environment variables that control its configuration. For example, when using MinIO, your filesystem environment variable configuration should be defined as follows:
FILESYSTEM_DRIVER=s3
AWS_ACCESS_KEY_ID=sail
AWS_SECRET_ACCESS_KEY=password
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=local
AWS_ENDPOINT=http://minio:9000
AWS_USE_PATH_STYLE_ENDPOINT=true
Running Tests
Laravel provides amazing testing support out of the box, and you may use Sail's test
command to run your applications feature and unit tests. Any CLI options that are accepted by PHPUnit may also be passed to the test
command:
sail test
sail test --group orders
The Sail test
command is equivalent to running the test
Artisan command:
sail artisan test
Laravel Dusk
Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. Thanks to Sail, you may run these tests without ever installing Selenium or other tools on your local computer. To get started, uncomment the Selenium service in your application's docker-compose.yml
file:
selenium:
image: 'selenium/standalone-chrome'
volumes:
- '/dev/shm:/dev/shm'
networks:
- sail
Next, ensure that the laravel.test
service in your application's docker-compose.yml
file has a depends_on
entry for selenium
:
depends_on:
- mysql
- redis
- selenium
Finally, you may run your Dusk test suite by starting Sail and running the dusk
command:
sail dusk
Previewing Emails
Laravel Sail's default docker-compose.yml
file contains a service entry for MailHog. MailHog intercepts emails sent by your application during local development and provides a convenient web interface so that you can preview your email messages in your browser. When using Sail, MailHog's default host is mailhog
and is available via port 1025:
MAIL_HOST=mailhog
MAIL_PORT=1025
When Sail is running, you may access the MailHog web interface at: http://localhost:8025
Container CLI
Sometimes you may wish to start a Bash session within your application's container. You may use the shell
command to connect to your application's container, allowing you to inspect its files and installed services as well execute arbitrary shell commands within the container:
sail shell
sail root-shell
To start a new Laravel Tinker session, you may execute the tinker
command:
sail tinker
PHP Versions
Sail currently supports serving your application via PHP 8.0 or PHP 7.4. To change the PHP version that is used to serve your application, you should update the build
definition of the laravel.test
container in your application's docker-compose.yml
file:
# PHP 8.0
context: ./vendor/laravel/sail/runtimes/8.0
# PHP 7.4
context: ./vendor/laravel/sail/runtimes/7.4
In addition, you may wish to update your image
name to reflect the version of PHP being used by your application. This option is also defined in your application's docker-compose.yml
file:
image: sail-8.0/app
After updating your application's docker-compose.yml
file, you should rebuild your container images:
sail build --no-cache
sail up
Sharing Your Site
Sometimes you may need to share your site publicly in order to preview your site for a colleague or to test webhook integrations with your application. To share your site, you may use the share
command. After executing this command, you will be issued a random laravel-sail.site
URL that you may use to access your application:
sail share
When sharing your site via the share
command, you should configure your application's trusted proxies within the TrustProxies
middleware. Otherwise, URL generation helpers such as url
and route
will be unable to determine the correct HTTP host that should be used during URL generation:
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies = '*';
If you would like to choose the subdomain for your shared site, you may provide the subdomain
option when executing the share
command:
sail share --subdomain=my-sail-site
{tip} The
share
command is powered by Expose, an open source tunneling service by BeyondCode.
Customization
Since Sail is just Docker, you are free to customize nearly everything about it. To publish Sail's own Dockerfiles, you may execute the sail:publish
command:
sail artisan sail:publish
After running this command, the Dockerfiles and other configuration files used by Laravel Sail will be placed within a docker
directory in your application's root directory. After customizing your Sail installation, you may rebuild your application's containers using the build
command:
sail build --no-cache


Usage of the DIFXAPI Sample Program
This sample demonstrates how to use DIFx API. It shows how to preinstall, install and uninstall driver packages. It also shows how to retrieve the path to an already preinstalled or installed driver package. It furthers shows how to capture logging information that the APIs create during installs and uninstalls.
Navigate to the src\setup\DIFxAPI\DIFXCMD directory and run the following command:
build -cZ
Once the sample is built, run the following commands. Before running the command, copy a complete driver package into the same directory:
difxcmd.exe to print out how to use the command line tool
difxcmd.exe /p my.inf , to preinstall my.inf
difxcmd.exe /i my.inf , to install my.inf
difxcmd.exe /i my.inf 16, to install my.inf in legacy mode (accepting unsigned drivers)
difxcmd.exe /p my.inf , to obtain the path to the installed my.inf
difxcmd.exe /u my.inf , to uninstall my.inf
difxapi /p /i /u /g <inf-filename> [Flag(s)]
Options:
/p : preinstall driver package.
/i : install driver package.
/u : uninstall driver package.
/g : get driver package path.
<inf-filename> : has to be in the current directory.
Flags:
DRIVER_PACKAGE_REPAIR: 0x00000001 ( 1)
DRIVER_PACKAGE_SILENT: 0x00000002 ( 2)
DRIVER_PACKAGE_FORCE: 0x00000004 ( 4)
DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT: 0x00000008 ( 8)
DRIVER_PACKAGE_LEGACY: 0x00000010 (16)
DRIVER_PACKAGE_DELETE_FILES: 0x00000020 (32)
© Microsoft Corporation 2002


Ezekiel 23:41
And satest upon a stately bed, and a table prepared before it, whereupon thou hast set mine incense and mine oil.


Candorhub was built using React/Redux. It's designed to promote constructive and meaningful criticism of artwork. Myself along with three others built this as our internship project at DevelopmentNow.
The Laser blog was a pair programming project done at Epicodus to practice MVC type architectural patterns. It implements CRUD functionality.
My name is Riley Starnes and I'm a web developer and designer. I grew up in Southern Oregon and moved to Portland about eight years ago. I got into web development with the goal of creating quality content and feeding my never ending urge to try new things.


Linux Tutorial
Table of Contents
| No. | Topic |
|---|---|
| 1 | User information |
| 2 | File and directory commands |
| 3 | File permissions |
| 4 | Networking |
| 5 | Installing packages |
| 6 | Disk usage |
| 7 | System and Hardware information |
| 8 | Search Files |
| 9 | SSH |
| 10 | Vi/Vim-commands |
User Information
-
who It is used to get information about currently logged in user on to system. If you don’t provide any option or arguments, the command displays the following information for each logged-in user.
- Login name of the user
- User terminal
- Date & Time of login
- Remote host name of the user
$ who sudheer :0 2019-08-04 01:21 (:0)
-
whoami: It display the system’s username
$ whoami sudheer
-
id: It display the user identification(the real and effective user and group IDs) information
$ id uid=1000(sj) gid=1000(sj) groups=1000(sj),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare)
-
groups: This command is used to display all the groups for which the user belongs to.
$ group sj: sj, adm, cdrom, sudo, dip, plugdev, lpadmin, lxd, sambashare
-
finger: Used to check the information of any currently logged in users. i.e, It displays users login time, tty (name), idle time, home directory, shell name etc.
$ finger Login Name Tty Idle Login Time Office Office Phone sj sj *:0 Aug 28 01:27 (:0)
This may not be available by default in many linux machines. In this case, you need to install it manually.
$ sudo apt install finger
-
users: Displays usernames of all users currently logged on the system.
$ users sj
-
grep: It is a powerful pattern searching tool to find information about a specific user from the system accounts file: /etc/passwd.
```cmd $ grep -i sj /etc/passwd sj:x:1000:1000:sj,,,:/home/sj:/bin/bash ```
-
W Command: It(W) is a command-line utility that displays information about currently logged in users and what each user is doing.
w [OPTIONS] [USER] Example: w 18:45:04 up 2:09, 1 user, load average: 0.09, 0.07, 0.02 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT sj :0 :0 01:27 ?xdm? 1:14 0.01s /usr/lib/gdm3/g
-
last or lastb: Displays a list of last logged in users on the system. You can pass user names to display their login and hostname details.
last [options] [username...] [tty...] Example: last sj :0 :0 Fri Aug 28 01:27 gone - no logout reboot system boot 5.4.0-29-generic Fri Aug 28 01:27 still running sj :0 :0 Wed Jul 29 11:46 - crash (29+13:40) reboot system boot 5.4.0-29-generic Wed Jul 29 11:45 still running sj :0 :0 Thu May 14 21:04 - crash (75+14:41) reboot system boot 5.4.0-29-generic Thu May 14 21:03 still running wtmp begins Thu May 14 21:03:56 2020
-
lastlog: The
lastlog
command is used to find the details of a recent login of all users or of a given user.$ lastlog Username Port From Latest root **Never logged in** daemon **Never logged in** bin **Never logged in** sys **Never logged in** sync **Never logged in** games **Never logged in** man **Never logged in** lp **Never logged in** mail **Never logged in** news **Never logged in**
File and directory commands
-
pwd The pwd(Present Working Directory) command is used to print the name of the present/current working directory starting from the root.
$ pwd /home/sj/Desktop/Linux
-
mkdir The mkdir(make directory) command allows users to create directories or folders.
$ mkdir ubuntu $ ls ubuntu
The option ‘-p’ is used to create multiple directories or parent directories at once.
$ mkdir -p dir1/dir2/dir3 $ cd dir1/dir2/dir3 ~/Desktop/Linux/dir1/dir2/dir3$
-
rmdir: The rmdir(remove directories) is used to remove empty directories. Can be used to delete multiple empty directories as well. Safer to use compared to
rm -r FolderName
. This command can also be forced to delete non-empty directories.- Remove empty directory:
rmdir FolderName
- Remove multiple directories:
rmdir FolderName1 FolderName2 FolderName3
- Remove non-empty directories:
rmdir FolderName1 --ignore-fail-on-non-empty
- Remove entire directory tree. This command is similar to
rmdir a/b/c a/b a
:
rmdir -p a/b/c
-
rm: The rm(remove) command is used to remove objects such as files, directories, symbolic links etc from the file system.
- Remove file: The rm command is used to remove or delete a file
rm file_name
- Remove file forcefully: The rm command with -f option is used for removal of file without prompting for confirmation.
rm -f filename
- Remove directory: The rm command with -r option is used to remove the directory and its contents recursively.
rm -r myDir
- Remove directory forcefully: The rm command with -rf option is used to forcefully remove directory recursively.
rm -rf myDir
- Remove file: The rm command is used to remove or delete a file
-
touch: The touch command is is used to create, change and modify timestamps of a file without any content.
-
Create a new file: You can create a single file at a time using touch command. The file created is an empty file.
touch file_name
-
Create multiple files: You can create the multiple numbers of files at the same time.
touch file1_name file2_name file3_name
-
Change access time: The touch command with
a
option is used to change the access time of a file.touch -a file_name
-
Change modification time: The touch command with
m
option is used to change the modified time.touch -m file_name
-
Use timestamp of other file: The touch command with
r
option is used to get timestamp of another file.touch -r file2 file1
In the above example, we get the timestamp of file1 for file2.
-
Create file with Specific time: The touch command with ‘t’ option is used to create a file with specified time.
touch -t<PHONE_NUMBER> file_name
-
Create a new file: You can create a single file at a time using touch command. The file created is an empty file.
-
cat: The cat command is used to create single or multiple files, view contain of file, concatenate files and redirect output in terminal or files.
-
View file contents: You can view contents of a single or more files by mentioning the filenames.
cat file_name1 file_name2
-
File permissions
Since Linux is a multi-user operating system, it is necessary to provide security to prevent people from accessing each other’s confidential files. So Linux divides authorization into 2 levels,
-
Ownership: Each file or directory has assigned with 3 types of owners i. User: Owner of the file who created it. ii. Group: Group of users with the same access permissions to the file or directory. iii. Other: Applies to all other users on the system
-
Permissions: Each file or directory has following permissions for the above 3 types of owners.
i. Read: Give you the authority to open and read a file and lists its content for a directory.
ii. Write: Give you the authority to modify the contents of a file and add, remove and rename files stored in the directory.
iii. Execute: Give you the authority to run the program in Unix/Linux.
The permissions are indicated with below characters,
r = read permission w = write permission x = execute permission \- = no permission
The above authorization levels represented in a diagram
There is a need to restrict own file/directory access to others.
Change access:
The chmod
command is used to change the access mode of a file. This command is used to set permissions (read, write, execute) on a file/directory for the owner, group and the others group.
chmod [reference][operator][mode] file...
Example
chmod ugo-rwx test.txt
There are 2 ways to use this command,
-
Absolute mode: The file permissions will be represented in a three-digit octal number.
The possible permissions types represented in a number format as below.
Permission Type Number Symbol No Permission 0 — Execute 1 –x Write 2 -w- Execute + Write 3 -wx Read 4 r– Read + Execute 5 r-x Read + Write 6 rw- Read + Write + Execute 7 rwx
Let’s update the permissions in absolute mode with an example as below,
chmode 764 test.txt
-
Symbolic mode: In the symbolic mode, you can modify permissions of a specific owner unlike absolute mode.
The owners are represented as below,
Owner Description u user/owner g group o other a all and the list of mathematical symbols to modify the file permissions as follows,
Operator Description + Adds permission - Removes the permission = Assign the permission
Changing Ownership and Group:
It is possible to change the the ownership and group of a file/directory using chown
command.
chown user filename
chown user:group filename
Example:
chown John test.txt
chown John:Admin test.txt
Change group-owner only: Sometimes you may need to change group owner only. In this case, chgrp command need to be used
chgrp group_name filename
Example:
sudo chgrp Administrator test.txt
Networking
-
Display network information:
ifconfig
command is used to display all network information(ip address, ports etc)
ifconfig -a
-
Test connection to a remote machine: Send an echo request to test connection of a remote machine.
ping <ip-address> or hostname Example: ping <IP_ADDRESS>
-
Show IP Address: Display ip address of a currennt machine
hostname -I (OR) ip addr show
-
Active ports: Shows active or listening ports
netstat -pnltu
-
Find information about domain:
whois
command is used to find out information about a domain, such as the owner of the domain, the owner’s contact information, and the nameservers used by domain.whois [domain] Example: whois google.com
Installing packages
- Install package:
yum install package_name
- Package description: The info command is used to display brief details about a package.
yum info package_name
-
Uninstall package:
The remove command is used to remove or uninstall package name.
yum remove package_name
- Install package from local file:
It is also possible to install package from local file named package_name.rpm.
rpm -i package_name.rpm
- Install from source code:
tar zxvf sourcecode.tar.gz
cd sourcecode
./configure
make
make install
Disk usage
-
Synopsis:
du
command is used to check the information of disk usage of files and directories on a machine
du [OPTION]... [FILE]...
- Disk usage of a directory: To find out the disk usage summary of a /home/ directory tree and each of its sub directories
du /home/
- Disk usage in human readable format: To find out the disk usage in human readable format
du -h /home/
- Total disk usage of a directory: To find out the total disk usage
du -sh /home/
- Total disk usage of all files and directories: To find out the total disk usage of files and directories
du -ah /home/
- Total disk usage of all files and directories upto certain depth: print the total for a directory only if it is N or fewer levels below the command
du -ah --max-depth 2 /home/
- Total disk usage with excluded files: To find out the total disk usage of files and directories, but excludes the files that matches given pattern.
du -ah --exclude="*.txt" /home/
-
Help: This command gives information about
du
du --help
System and Hardware information
-
Print all information:
uname
is mainly used to print system information.
$ uname -a
- Print kernel name:
$ uname -s
- Print kernel release:
$ uname -r
- Print Architecture:
$ uname -m
- Print Operating System:
$ uname -o
Search Files
-
Pattern search:
The
grep
command is used to search patterns in files.
grep pattern files
grep -i // Case sensitive
grep -r // Recursive
grep -v // Inverted search
Example:
grep "^hello" test.txt // Hello John
grep -i "hELLo" text.txt // Hello John
- Find files and directories:
The find
command is used to find or search files and directories by file name, folder name, creation date, modification date, owner and permissions etc and perform subsequent operations on them.
i. Search file with name:
find ./directory_name -name file_name
Example:
find ./test -name test.txt // ./test/test.txt
ii. Search file with pattern:
find ./directory_name -name file_pattern
Example:
find ./test -name *.txt // ./test/test.txt
iii. Search file with executable action:
find ./directory_name -name file_name -exec command
Example:
find ./test -name test.txt -exec rm -i {} \; // Search file and delete it after confirmation
iv. Search for empty files or directories:
The find command is used to search all empty folders and files in the entered directory or sub-directories.
find ./directory_name -empty
Example:
find ./test -empty
//./test/test1
//./test/test2
//./test/test1.txt
v. Search for files with permissions:
The find command is used to find all the files in the mentioned directory or sub-directory with the given permissions
find ./directory_name -perm permission_code
Example:
find ./test -perm 664
vi. Search text within multiple files:
find ./ -type f -name file_pattern -exec grep some_text {} \;
Example:
find ./ -type f -name "*.txt" -exec grep 'World' {} \; // Hello World
- Whereis to locate binary or source files for a command: The whereis command in Linux is used to locate the binary, source, and manual page files for a command. i.e, It is used to It is used to find executables of a program, its man pages and configuration files.
whereis command_name
Example:
whereis netstat //netstat: /bin/netstat /usr/share/man/man8/netstat.8.gz(i.e, executable and location of its man page)
- Locate to find files: The locate command is used to find the files by name. This command is faster compared to find command because it searches database for the filename instead of searching your filesystem.
locate [OPTION] PATTERN
Example:
locate "*.txt" -n 10 // 10 file search results ending with .txt extension
SSH
SSH (Secure Shell) is a network protocol that enables secure remote connections between two systems.
- Connect remote machine using IP address or machine name: The remote server can be connected with local user name using either host name or IP address
ssh <host-name> or <ip-address>
Example:
ssh <IP_ADDRESS>
ssh test.remoteserver.com
- Connect remote machine using username: It is also possible specify a user for an SSH connection.
ssh username@hostname_or_ip-address
Example:
ssh<EMAIL_ADDRESS>ssh<EMAIL_ADDRESS>- :Connect remote machine using custom port By default, the SSH server listens for a connection on port 22. But you can also specify the custom port.
ssh <host-name> or <ip-address> -p port_number
Example:
ssh test.remoteserver.com -p 3322
- Generate SSH keys using keygen: SSH Keygen is used to generate a key pair which consists of public and private keys to improve the security of SSH connections.
ssh-keygen -t rsa
-
Copying SSH keys to servers: For SSH authentication,
ssh-copy-id
command will be used to copy public key(id_rsa.pub) to server.
ssh-copy-id hostname_or_IP
- Copy a File Remotely over SSH: SCP tool is used to securely copy files over the SSH protocol.
scp fileName user@remotehost:destinationPath
Example:
scp test.txt test@<IP_ADDRESS>:/home/john/Desktop
-
Edit SSH Config File SSH server options customized by editing the settings in
sshd_config
file.
sudo vim /etc/ssh/sshd_config
- Run commands on a remote server SSH commands can be executed on remote machine using the local machine.
ssh test.remoteserver.com mkdir NewDirectoryName // Creating directory on remote machine
- Restart SSH service: You need to restart the service in Linux after making changes to SSH configuration.
sudo ssh service restart
(or)
sudo sshd service restart
Vi/Vim-commands
Vi editor is the most popular text editor from the early days of Unix. Whereas Vim(Vi IMproved) is an improved version of vi editor to be used in CLI (command line interface) for mainly text editing tasks in many configuration files. Some of the other alternatives are Elvis, Nvi, Nano, Joe, and Vile. It has two main operation modes,
- Command Mode: It allows the entry of commands to manipulate text.
- Entry mode(Or Insert mode): It allows typed characters on the keyboard into the current file.
1. Start with Vi Editor
You can create a new file or open an existing file using vi filename
command.
vi <filename_NEW> or <filename_EXISTING> // Create a new file or open an existing file
Example:
vi first.txt
Let’s see how do you create file, enter the content and leave the CLI by saving the changes.
- Create a new file named
first.txt
- Press
i
to enter the insert mode - Enter the text “Hello World!”
- Save the text and exit by pressing
:wq!
command - Check the entered text
2. Cursor movement
These commands will be used in Command mode.
Move cursor
You can use arrow keys(left, right, up and down) to move the cursor on the terminal. But you can also other keys for this behavior.
h # Move left
j # Move down
k # Move up
l # Move right
Jump one word
These commands used to jump one word at a time
w # Jump forwards to the start of a word
W # Jump forwards to the start of a WORD
e # Jump forwards to the start of a word
E # Jump forwards to the start of a WORD
b # Jump backwords to the start of a word
B # Jump backwords to the start of a WORD
Jump to start or end of a line or next line
These commands used to jump starting or ending of a line or a next line.
^ # Jump to the start of a current line
$ # Jump to the end of a current line
return # Jump to the start of a next line
Move sides
These commands used to moves all sides of the screen
Backspace # Move cursor one character to the left
Spacebar # Move cursor one character to the right
H(High) # Move cursor to the top of the screen
M(Middle) # Move cursor to the middle of the screen
L(Low) # Move cursor to the bottom of the screen
Paging and Scrolling
Paging is used to moves the cursor up or down through the text a full screen at a time. Whereas Scrolling happens line by line.
Ctrl + f # move forward one full screen
Ctrl + b # move backward one full screen
Ctrl + d # move forward half a screen
Ctrl + u # move backward half a screen
Inserting Text
These commands places vi in entry mode from command mode. First, you need to be in command mode to use the below commands.
Insert
i # Insert text to the left of the cursor
I # Insert text at the beginning of a line
ESC # Exit insert mode
Append
a # Insert(or Append) text to the right of the cursor
A # Insert(or Append) text at the end of a line
Open a line
o # Open a line below the current cursor position
O # open a line above the current cursor position
Editing Text
-
Change word: Change word/part of word to right of cursor
cw
-
Change line Change entire line
cc
-
Change line from specific character Change from cursor to end of line
C
Deleting Text
-
Deleting One Character: Position the cursor over the character to be deleted and type x
x X //To delete one character before the cursor
-
Deleting a Word: Position the cursor at the beginning of the word and type dw
dw
-
Deleting a Line: Position the cursor anywhere on the line and type dd.
dd
Cut, Copy & Paste
Copy, Cut and Paste operations can be done in either Normal or visual Mode.
-
Normal mode: This mode appears on click of
Esc
key.Copy There are various copy or yank commands based on amount of text to be copied. The
y
character is used to perform this operation.i. Copy an entire line: Just place the cursor at the beginning of the line and type
yy
yy
ii.Copy three lines: Just place the cursor from where to start copying and type
3yy
3yy
iii. Copy word with trailing whitespace: Place the cursor at the beginning of the word and type
yaw
yaw
iv. Copy word without trailing whitespace: Place the cursor at the beginning of the word and type
yiw
.yiw
v. Copy right of the cursor: Copy text right of the cursor to the end of line using
y$
commandy$
vi.Copy left of the cursor: Copy text left of the cursor to the end of line using
y^
commandy^
vii. Copy text between the cursor and character: Copy text between the cursor and specified character.
ytx(Copy until x and x is excluded) yfx(Copy until x and x is included)
Cut There are various cutting or deleting commands based on amount of text to be deleted. The
d
character is used to perform this operation.i. Cut entire line: Cut the entire line where the cursor is located
dd
ii.Cut three lines: Cut the three lines starting from the place where cursor is located
3dd
iii.Cut right of the cursor: Cut the text from the right of the cursor till the end of line
d$
iii.Cut left of the cursor: Cut the text from the left of the cursor till the beginning of line
d^
Paste This operation is performed using
p
command to paste the selected textp
-
Visual Mode In this mode, first select the text using below keys
- v (lowercase): To select individual characters
- V (uppercase): To select the entire line
- Ctrl+v: To select by block
and perform copy, cut and paste operations using y,d and p commands
Exiting
These commands are used to exit from the file.
```cmd
:w # Write (save) the file, but don't exit
:wq # Write (save) and quit
:wq! # Force write (save) and quit
:q # Quit, but it fails if anything has changed
:q! # Quit and throw away for any changes
```


Syyad Khan
About
Portfolio
Portfolio
Connect with Me
Github
My Portfolio
Action
Action
Linkedin
People I Know and know me
Action
Action
Yahoo Mail
Email Me
Action
Action
Syyad Khan Copyright 2018.


Interface MarketData
-
- All Known Implementing Classes:
BuiltMarketData
,ImmutableMarketData
public interface MarketData
Provides access to market data, such as curves, surfaces and time-series.Market data is looked up using subclasses of
MarketDataId
. All data is valid for a single date, defined bygetValuationDate()
. When performing calculations with scenarios, only the data of a single scenario is accessible.The standard implementation is
ImmutableMarketData
.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default MarketData
combinedWith(MarketData other)
Combines this market data with another.default boolean
containsValue(MarketDataId<?> id)
Checks if this market data contains a value for the specified identifier.static MarketData
empty(LocalDate valuationDate)
Obtains an instance containing no market data.<T> Set<MarketDataId<T>>
findIds(MarketDataName<T> name)
Finds the market data identifiers associated with the specified name.<T> Optional<T>
findValue(MarketDataId<T> id)
Finds the market data value associated with the specified identifier.Set<MarketDataId<?>>
getIds()
Gets the market data identifiers.LocalDateDoubleTimeSeries
getTimeSeries(ObservableId id)
Gets the time-series identified by the specified identifier, empty if not found.Set<ObservableId>
getTimeSeriesIds()
Gets the time-series identifiers.LocalDate
getValuationDate()
Gets the valuation date of the market data.default <T> T
getValue(MarketDataId<T> id)
Gets the market data value associated with the specified identifier.static MarketData
of(LocalDate valuationDate, Map<? extends MarketDataId<?>,?> values)
Obtains an instance from a valuation date and map of values.static MarketData
of(LocalDate valuationDate, Map<? extends MarketDataId<?>,?> values, Map<? extends ObservableId,LocalDateDoubleTimeSeries> timeSeries)
Obtains an instance from a valuation date, map of values and time-series.default <T> MarketData
withValue(MarketDataId<T> id, T value)
Returns a copy of this market data with the specified value.
-
-
-
Method Detail
-
of
static MarketData of(LocalDate valuationDate, Map<? extends MarketDataId<?>,?> values)
Obtains an instance from a valuation date and map of values.Each entry in the map is a single piece of market data, keyed by the matching identifier. For example, an
FxRate
can be looked up using anFxRateId
. The caller must ensure that the each entry in the map corresponds with the parameterized type on the identifier.- Parameters:
valuationDate
- the valuation date of the market datavalues
- the market data values- Returns:
- the market data instance containing the values in the map
- Throws:
ClassCastException
- if a value does not match the parameterized type associated with the identifier
-
of
static MarketData of(LocalDate valuationDate, Map<? extends MarketDataId<?>,?> values, Map<? extends ObservableId,LocalDateDoubleTimeSeries> timeSeries)
Obtains an instance from a valuation date, map of values and time-series.- Parameters:
valuationDate
- the valuation date of the market datavalues
- the market data valuestimeSeries
- the time-series- Returns:
- the market data instance containing the values in the map and the time-series
- Throws:
ClassCastException
- if a value does not match the parameterized type associated with the identifier
-
empty
static MarketData empty(LocalDate valuationDate)
Obtains an instance containing no market data.- Parameters:
valuationDate
- the valuation date of the market data- Returns:
- empty market data
-
getValuationDate
LocalDate getValuationDate()
Gets the valuation date of the market data.All values accessible through this interface have the same valuation date.
- Returns:
- the valuation date
-
containsValue
default boolean containsValue(MarketDataId<?> id)
Checks if this market data contains a value for the specified identifier.- Parameters:
id
- the identifier to find- Returns:
- true if the market data contains a value for the identifier
-
getValue
default <T> T getValue(MarketDataId<T> id)
Gets the market data value associated with the specified identifier.If this market data instance contains the identifier, the value will be returned. Otherwise, an exception will be thrown.
- Type Parameters:
T
- the type of the market data value- Parameters:
id
- the identifier to find- Returns:
- the market data value
- Throws:
MarketDataNotFoundException
- if the identifier is not found
-
findValue
<T> Optional<T> findValue(MarketDataId<T> id)
Finds the market data value associated with the specified identifier.If this market data instance contains the identifier, the value will be returned. Otherwise, an empty optional will be returned.
- Type Parameters:
T
- the type of the market data value- Parameters:
id
- the identifier to find- Returns:
- the market data value, empty if not found
-
getIds
Set<MarketDataId<?>> getIds()
Gets the market data identifiers.- Returns:
- the set of market data identifiers
-
findIds
<T> Set<MarketDataId<T>> findIds(MarketDataName<T> name)
Finds the market data identifiers associated with the specified name.This returns the unique identifiers that refer to the specified name. There may be more than one identifier associated with a name as the name is not unique.
- Type Parameters:
T
- the type of the market data value- Parameters:
name
- the name to find- Returns:
- the set of market data identifiers, empty if name not found
-
getTimeSeriesIds
Set<ObservableId> getTimeSeriesIds()
Gets the time-series identifiers.- Returns:
- the set of observable identifiers
-
getTimeSeries
LocalDateDoubleTimeSeries getTimeSeries(ObservableId id)
Gets the time-series identified by the specified identifier, empty if not found.- Parameters:
id
- the identifier to find- Returns:
- the time-series, empty if no time-series found
-
combinedWith
default MarketData combinedWith(MarketData other)
Combines this market data with another.The result combines both sets of market data. Values are taken from this set of market data if available, otherwise they are taken from the other set.
The valuation dates of the sets of market data must be the same.
- Parameters:
other
- the other market data- Returns:
- the combined market data
-
withValue
default <T> MarketData withValue(MarketDataId<T> id, T value)
Returns a copy of this market data with the specified value.When the result is queried for the specified identifier, the specified value will be returned.
For example, this method could be used to replace a curve with a bumped curve.
- Type Parameters:
T
- the type of the market data value- Parameters:
id
- the identifier to findvalue
- the value to associate with the identifier- Returns:
- the derived market data with the specified identifier and value
-
-


Overall site design blatantly stolen from NotOnYourKeyboard. Code completely rewritten fresh. Want a different set of characters for your own use? Fork this on GitHub and edit away!


CPAN2DIST
Section: Perl Programmers Reference Guide (1)Updated: 2012-06-22
Index Return to Main Contents
NAME
cpan2dist - The CPANPLUS distribution creatorDESCRIPTION
This script will create distributions of "CPAN" modules of the format you specify, including its prerequisites. These packages can then be installed using the corresponding package manager for the format.Note, you can also do this interactively from the default shell, "CPANPLUS::Shell::Default". See the "CPANPLUS::Dist" documentation, as well as the documentation of your format of choice for any format specific documentation.
USAGE
Usage: cpan2dist [--format FMT] [OPTS] Mod::Name [Mod::Name, ...] cpan2dist [--format FMT] [OPTS] --modulelist /tmp/mods.list cpan2dist [--format FMT] [OPTS] --archive /tmp/dist [/tmp/dist2] Will create a distribution of type FMT of the modules specified on the command line, and all their prerequisites. Can also create a distribution of type FMT from a local archive and all of its prerequisites.
Options:
### take no argument: --help Show this help message --install Install this package (and any prerequisites you built) after building it. --skiptest Skip tests. Can be negated using --noskiptest --force Force operation. Can be negated using --noforce --verbose Be verbose. Can be negated using --noverbose --keepsource Keep sources after building distribution. Can be negated by --nokeepsource. May not be supported by all formats --makefile Prefer Makefile.PL over Build.PL. Can be negated using --nomakefile. Defaults to your config setting --buildprereq Build packages of any prerequisites, even if they are already uptodate on the local system. Can be negated using --nobuildprereq. Defaults to false. --archive Indicate that all modules listed are actually archives --flushcache Update CPANPLUS' cache before commencing any operation --defaults Instruct ExtUtils::MakeMaker and Module::Build to use default answers during 'perl Makefile.PL' or 'perl Build.PL' calls where possible --edit-metafile Edit the distributions metafile(s) before the distribution is built. Requires a configured editor. ### take argument: --format Installer format to use (defaults to config setting) --ban Patterns of module names to skip during installation, case-insensitive (affects prerequisites too) May be given multiple times --banlist File containing patterns that could be given to --ban Are appended to the ban list built up by --ban May be given multiple times. --ignore Patterns of modules to exclude from prereq list. Useful for when a prereq listed by a CPAN module is resolved in another way than from its corresponding CPAN package (Match is done on both module name, and package name of the package the module is in, case-insensitive) --ignorelist File containing patterns that may be given to --ignore. Are appended to the ban list built up by --ignore. May be given multiple times. --modulelist File containing a list of modules that should be built. Are appended to the list of command line modules. May be given multiple times. --logfile File to log all output to. By default, all output goes to the console. --timeout The allowed time for buliding a distribution before aborting. This is useful to terminate any build that hang or happen to be interactive despite being told not to be. Defaults to 300 seconds. To turn off, you can set it to 0. --set-config Change any options as specified in your config for this invocation only. See CPANPLUS::Config for a list of supported options. --set-program Change any programs as specified in your config for this invocation only. See CPANPLUS::Config for a list of supported programs. --dist-opts Arbitrary options passed along to the chosen installer format's prepare()/create() routine. Please see the documentation of the installer of your choice for options it accepts. ### builtin lists --default-banlist Use our builtin banlist. Works just like --ban and --banlist, but with pre-set lists. See the "Builtin Lists" section for details. --default-ignorelist Use our builtin ignorelist. Works just like --ignore and --ignorelist but with pre-set lists. See the "Builtin Lists" section for details.
Examples:
### build a debian package of DBI and its prerequisites, ### don't bother running tests cpan2dist --format CPANPLUS::Dist::Deb --buildprereq --skiptest DBI ### build a debian package of DBI and its prerequisites and install them cpan2dist --format CPANPLUS::Dist::Deb --buildprereq --install DBI ### Build a package, whose format is determined by your config, of ### the local tarball, reloading cpanplus' indices first and using ### the tarballs Makefile.PL if it has one. cpan2dist --makefile --flushcache --archive /path/to/Cwd-1.0.tgz ### build a package from Net::FTP, but dont build any packages or ### dependencies whose name match 'Foo', 'Bar' or any of the ### patterns mentioned in /tmp/ban cpan2dist --ban Foo --ban Bar --banlist /tmp/ban Net::FTP ### build a package from Net::FTP, but ignore its listed dependency ### on IO::Socket, as it's shipped per default with the OS we're on cpan2dist --ignore IO::Socket Net::FTP ### building all modules listed, plus their prerequisites cpan2dist --ignorelist /tmp/modules.ignore --banlist /tmp/modules.ban --modulelist /tmp/modules.list --buildprereq --flushcache --makefile --defaults ### pass arbitrary options to the format's prepare()/create() routine cpan2dist --dist-opts deb_version=3 --dist-opts prefix=corp
Built-In Filter Lists
Some modules you'd rather not package. Some because they are part of core-perl and you dont want a new package. Some because they won't build on your system. Some because your package manager of choice already packages them for you.There may be a myriad of reasons. You can use the "--ignore" and "--ban" options for this, but we provide some built-in lists that catch common cases. You can use these built-in lists if you like, or supply your own if need be.
Built-In Ignore List
You can use this list of regexes to ignore modules matching to be listed as prerequisites of a package. Particulaly useful if they are bundled with core-perl anyway and they have known issues building.Toggle it by supplying the "--default-ignorelist" option.
^IO$ # Provided with core anyway ^Cwd$ # Provided with core anyway ^File::Spec # Provided with core anyway ^Config$ # Perl's own config, not shipped separately ^ExtUtils::MakeMaker$ # Shipped with perl, recent versions # have bug 14721 (see rt.cpan.org) ^ExtUtils::Install$ # Part of of EU::MM, same reason
Built-In Ban list
You can use this list of regexes to disable building of these modules altogether.Toggle it by supplying the "--default-banlist" option.
^GD$ # Needs c libaries ^Berk.*DB # DB packages require specific options & linking ^DBD:: # DBD drives require database files/headers ^XML:: # XML modules usually require expat libraries Apache # These usually require apache libraries SSL # These usually require SSL certificates & libs Image::Magick # Needs ImageMagick C libraries Mail::ClamAV # Needs ClamAV C Libraries ^Verilog # Needs Verilog C Libraries ^Authen::PAM$ # Needs PAM C libraries & Headers
SEE ALSO
CPANPLUS::Dist, CPANPLUS::Module, CPANPLUS::Shell::Default, "cpanp"BUG REPORTS
Please report bugs or other issues to<EMAIL_ADDRESS>This module by Jos Boumans<EMAIL_ADDRESS>The CPAN++ interface (of which this module is a part of) is copyright (c) 2001 - 2007, Jos Boumans<EMAIL_ADDRESS>All rights reserved.This library is free software; you may redistribute and/or modify it under the same terms as Perl itself.
Index
This document was created by man2html, using the manual pages.
Time: 05:29:02 GMT, December 24, 2015


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
JSONDeserializer.deserialize(String)
, but uses an instance of
java.io.Reader as json input.
JSONDeserializer.deserialize(java.io.Reader, Class)
, but uses an instance of
java.io.Reader as json input.
JSONDeserializer.deserialize(String, ObjectFactory)
, but uses an instance of
java.io.Reader as json input.
JSONDeserializer.deserializeInto(String, Object)
, but uses an instance of
java.io.Reader as json input.
JSONSerializer
to include
or exclude fields from the JSON serialization process.
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


--- title: "Research Scientists and Fellows" date: 2020-06-12T12:57:28+08:00 draft: false summary: Here comes the power house of Clinical Brain Lab - our Research Scientists and Research Fellows. ---
More information: - CV: - GitHub: - Email:


Contact Us @<PHONE_NUMBER>
Hair Styling is no longer what it used to be. The days of just walking into a barber shop and getting a trim and a shave are long gone and today, being a hair stylist or barber is a demanding and challenging career that takes design, art and creativity to a whole new level. The scope for employment for a professional hair stylist is enormous, with many hair stylists opening their own salons exclusively for hair styling.
View Our ProgramsWelcome to A-One Hairstyling and Aesthetics School, a modern up-to-date facility located in the Brampton, Ontario at the major intersection of Chinguacousy & Bovaird.
We are registered with the ministry of Training, Colleges and Universities Ontario as a private career college under the private colleges’ act.
As a professional school, we strive to provide professional level programs to help our students on the path to a rewarding career.
Cosmetology schools give you an advantage when pursuing a career in the hairdressing and beauty industry. In a top school, you gain crucial talents and experience that enlarge your resume and launch you into a career.
At A-One, we ensure that each student is taught techniques needed to quickly advance in their chosen field. Our highly trained and respected educators are constantly upgrading their skills to ensure training remains ahead.
Students learn by demonstration, visual aids and hands-on practice. As growth in this industry reaches new heights and new spas and salons open, our students are sought after to fill these positions. The beauty career is challenging and rewarding and personal growth has no boundaries.
Graduates will have an abundance of employment opportunities – Spas, Salons, and Sales and Marketing, Cosmetic firms, Management, Ownership – to name a few. The high quality of standards, the comprehensive courses and clinical practice ensures that graduates are well trained and highly qualified to commence their chosen career.
Copyright © A-One Hair & Aesthetics 2016