MQ_OVERVIEW
Section: Linux Programmer's Manual (7)
Updated: 2009-09-27
Index
Return to Main Contents
NAME
mq_overview - overview of POSIX message queues
DESCRIPTION
POSIX message queues allow processes to exchange data in
the form of messages.
This API is distinct from that provided by System V message queues
(msgget(2),
msgsnd(2),
msgrcv(2),
etc.), but provides similar functionality.
Message queues are created and opened using
mq_open(3);
this function returns a
message queue descriptor
(mqd_t),
which is used to refer to the open message queue in later calls.
Each message queue is identified by a name of the form
/somename;
that is, a null-terminated string of up to
NAME_MAX
(i.e., 255) characters consisting of an initial slash,
followed by one or more characters, none of which are slashes.
Two processes can operate on the same queue by passing the same name to
mq_open(3).
Messages are transferred to and from a queue using
mq_send(3)
and
mq_receive(3).
When a process has finished using the queue, it closes it using
mq_close(3),
and when the queue is no longer required, it can be deleted using
mq_unlink(3).
Queue attributes can be retrieved and (in some cases) modified using
mq_getattr(3)
and
mq_setattr(3).
A process can request asynchronous notification
of the arrival of a message on a previously empty queue using
mq_notify(3).
A message queue descriptor is a reference to an
open message queue description
(cf.
open(2)).
After a
fork(2),
a child inherits copies of its parent's message queue descriptors,
and these descriptors refer to the same open message queue descriptions
as the corresponding descriptors in the parent.
Corresponding descriptors in the two processes share the flags
(mq_flags)
that are associated with the open message queue description.
Each message has an associated
priority,
and messages are always delivered to the receiving process
highest priority first.
Message priorities range from 0 (low) to
sysconf(_SC_MQ_PRIO_MAX) - 1
(high).
On Linux,
sysconf(_SC_MQ_PRIO_MAX)
returns 32768, but POSIX.1-2001 requires only that
an implementation support at least priorities in the range 0 to 31;
some implementations provide only this range.
The remainder of this section describes some specific details
of the Linux implementation of POSIX message queues.
Library interfaces and system calls
In most cases the
mq_*()
library interfaces listed above are implemented
on top of underlying system calls of the same name.
Deviations from this scheme are indicated in the following table:
-
Versions
POSIX message queues have been supported on Linux since kernel 2.6.6.
Glibc support has been provided since version 2.3.4.
Kernel configuration
Support for POSIX message queues is configurable via the
CONFIG_POSIX_MQUEUE
kernel configuration option.
This option is enabled by default.
Persistence
POSIX message queues have kernel persistence:
if not removed by
mq_unlink(3),
a message queue will exist until the system is shut down.
Linking
Programs using the POSIX message queue API must be compiled with
cc -lrt
to link against the real-time library,
librt.
/proc interfaces
The following interfaces can be used to limit the amount of
kernel memory consumed by POSIX message queues:
- /proc/sys/fs/mqueue/msg_max
-
This file can be used to view and change the ceiling value for the
maximum number of messages in a queue.
This value acts as a ceiling on the
attr->mq_maxmsg
argument given to
mq_open(3).
The default value for
msg_max
is 10.
The minimum value is 1 (10 in kernels before 2.6.28).
The upper limit is
HARD_MAX:
(131072 / sizeof(void *))
(32768 on Linux/86).
This limit is ignored for privileged processes
(CAP_SYS_RESOURCE),
but the
HARD_MAX
ceiling is nevertheless imposed.
- /proc/sys/fs/mqueue/msgsize_max
-
This file can be used to view and change the ceiling on the
maximum message size.
This value acts as a ceiling on the
attr->mq_msgsize
argument given to
mq_open(3).
The default value for
msgsize_max
is 8192 bytes.
The minimum value is 128 (8192 in kernels before 2.6.28).
The upper limit for
msgsize_max
is 1,048,576 (in kernels before 2.6.28, the upper limit was
INT_MAX;
that is, 2,147,483,647 on Linux/86).
This limit is ignored for privileged processes
(CAP_SYS_RESOURCE).
- /proc/sys/fs/mqueue/queues_max
-
This file can be used to view and change the system-wide limit on the
number of message queues that can be created.
Only privileged processes
(CAP_SYS_RESOURCE)
can create new message queues once this limit has been reached.
The default value for
queues_max
is 256; it can be changed to any value in the range 0 to INT_MAX.
Resource limit
The
RLIMIT_MSGQUEUE
resource limit, which places a limit on the amount of space
that can be consumed by all of the message queues
belonging to a process's real user ID, is described in
getrlimit(2).
Mounting the message queue filesystem
On Linux, message queues are created in a virtual filesystem.
(Other implementations may also provide such a feature,
but the details are likely to differ.)
This filesystem can be mounted (by the superuser) using the following
commands:
# mkdir /dev/mqueue
# mount -t mqueue none /dev/mqueue
The sticky bit is automatically enabled on the mount directory.
After the filesystem has been mounted, the message queues on the system
can be viewed and manipulated using the commands usually used for files
(e.g.,
ls(1)
and
rm(1)).
The contents of each file in the directory consist of a single line
containing information about the queue:
$ cat /dev/mqueue/mymq
QSIZE:129 NOTIFY:2 SIGNO:0 NOTIFY_PID:8260
These fields are as follows:
- QSIZE
-
Number of bytes of data in all messages in the queue.
- NOTIFY_PID
-
If this is nonzero, then the process with this PID has used
mq_notify(3)
to register for asynchronous message notification,
and the remaining fields describe how notification occurs.
- NOTIFY
-
Notification method:
0 is
SIGEV_SIGNAL;
1 is
SIGEV_NONE;
and
2 is
SIGEV_THREAD.
- SIGNO
-
Signal number to be used for
SIGEV_SIGNAL.
Polling message queue descriptors
On Linux, a message queue descriptor is actually a file descriptor,
and can be monitored using
select(2),
poll(2),
or
epoll(7).
This is not portable.
CONFORMING TO
POSIX.1-2001.
NOTES
System V message queues
(msgget(2),
msgsnd(2),
msgrcv(2),
etc.) are an older API for exchanging messages between processes.
POSIX message queues provide a better designed interface than
System V message queues;
on the other hand POSIX message queues are less widely available
(especially on older systems) than System V message queues.
Linux does not currently (2.6.26) support the use of access control
lists (ACLs) for POSIX message queues.
EXAMPLE
An example of the use of various message queue functions is shown in
mq_notify(3).

Time: 02:55:22 GMT, September 18, 2014


FreeSprite()
Syntax
FreeSprite(#Sprite)Description
Removes the specified sprite from memory. It's not possible to the sprite anymore after calling this function.
Parameters
#Sprite The sprite to free. If #PB_All is specified, all the remaining sprites are freed.
Return value
None.
Remarks
All remaining sprites are automatically freed when the program ends.
Supported OS
All


$ node
> 1 + 2
3
> const express = require('express');
...
> .exit
They're what you get back from a request 😎
"Routes" define how a server should respond to a certain request at a certain end point or path.
// app.<HTTP action>
app.get('/', function (req, res) {
res.send('Hello World!');
});
Our controllers mediate communication between our models and views
exports.index = function (req, res) {
res.send('Welcome to the GDI Node Workshop!');
}
A node module is a file, and it exposes things to the outside world with exports
exports.index = function (req, res) {
res.send('Welcome to the GDI Node Workshop!');
}
var express = require('express');
// var nameWeUseInOurApp = require('someModule');
// Tell app.js about the home controller using require
// Node how the ./ tells node to look in our own folder structure vs node_modules
var homeController = require('./controllers/home');
// Routes
app.get('/', homeController.index);
home.js
file in a controllers
folder.home.js
app.js
to use your controller./*
route as a catch-all displays a 404 message./about
Pass data through to your view
var path = require('path');
exports.index = function (req, res) {
res.sendFile(path.join(__dirname, '../public', 'templates', 'index.html'));
}
We need to tell Express which files we allow the user to access
// Serve static files (i.e. images, scripts, styles, templates) from public/ directory
app.use(express.static('public'));
index.html
/about
if you haven't yet/about
with a new templateBecause writing HTML can be a lot! And view engines are great!
Check out Pug (formerly known as Jade)'s site for examples and an interactive playground
// template.pug
h1 Welcome
a(href="somewhere.com") Some cool link!
Install & Use Pug
npm install --save pug
// in app.js
app.set('view engine', 'pug');
Use res.render
to use your view engine
exports.about = function (req, res) {
res.render('about');
}
Since we put our about.pug
file in views/
Express knows where that is and assumes that's what we mean when we say render
npm install --save-dev nodemon
and update your package.json
to use nodemon to run app.js
. It will live reload so you don't have to start/stop your server!
.pug
views to a views
folderApplication Programming Interface
AKA computers talk to each other
APIs allow us to request data from a service
Some APIs you might want to use
/api/all
/api/get/:id
where id is the index of the dinosaurExercise solutions at https://github.com/pselle/Intro-to-Node.js-Exercises


${head}
${navbar}
${_('Import Directory')}
${_('Select Directory')}
${_('Minimum File Size')}
${_('MegaBytes')}
${_('Scan Recursively')}
${_('Scan sub-folders as well.')}
${_('Scan Directory')}
${_('No New Movies Found')}
${_('No new movies have been found.')}
${_('Found Movies')}
${_('Import')}
${_('File')}
${_('Title')}
${_('TheMovieDB ID')}
${_('Source')}
${_('Size')}
${_('Incomplete Movies')}
${_('The following movies are missing key information. Review and correct as needed.')}
${_('Import')}
${_('File')}
${_('Title')}
${_('TheMovieDB ID')}
${_('Source')}
${_('Size')}
${_('Import Library')}
${_('Imported Movies')}
${_('Title')}
${_('TheMovieDB ID')}
${_('Import Errors')}
${_('Title')}
${_('Error')}
${_('Return')}
%for source in sources:
${source}
%endfor
%for profile in profiles: %if profile == "Default":
Default
%else:
${profile}
%endif %endfor
${_('Select Library Directory')}
${current_dir}
%for i in file_list:
${i}
%endfor


KEGG analyses of differentially expressed genes between MM_L_P and ww_L_P groups. a The top 20 KEGG enrichment pathways for differentially expressed lncRNA targets between MM_L_P and ww_L_P groups. b The top 20 KEGG enrichment pathways for differentially expressed mRNAs between MM_L_P and ww_L_P groups


Death Becomes Her - Cast
Home
Cast
Quotes
This page will list several cast members

Name

Character
Meryl Streep
...
Madeline Ashton
Goldie Hawn
...
Helen Sharp


virus {border-style px;} #ffffff;} cases outbreak bacterial people pneumonia COVIDâ€� SARS influenza patients px; respiratory secondary severe {font-family Hunter coronavirus font-size health infected viral Chinese Wuhan caused double; infection public symptoms China border-color border-width data does early immune infectious information mild solid; vaccine {font-style {font-weight However, bold case courier; em; explained. host infections new number primary pt;} rate response symptoms, time â€"


Form of Many Things
How does you and your RPG group use the mysterious Deck of Many Things?
*Name:
*Email:
*Age:
Are you regularly a player or DM?
Select an option
Player
DM
Both equally
Other
*Has your group used the Deck of Many Things?
Yes
No
Maybe so
What's your favorite card?
Submit


FIRST ATTACK
Copyright (c) 19?? Frank Harary
This game is played on any square board (say 8x8):
- TURN - On each turn, each player drops a neutral stone on an empty cell provided that it does not share the same row, column or diagonal with all the stones already on board.
- GOAL - Wins the last player to move.
An example The green dots show the remaining valid cells. So, the next player will drop one stone there and win the game.
Some possible variants (the first two are Harary's suggestions, the others are mine):
- Use stones of two colors (the restriction is only applied to stones of the same color).
- Use other restrictions (only row and column, only diagonals, chess knight connections ...)
- Use obstacles (neutral pieces that stop the range of the dropping pieces). These obstacles may be initially placed on board, or may be part of a player's personal reserve.
- Allow the drop of several different pieces (e.g., a chess army)
- Players may drop everywhere, but if a player detects an invalid position he wins.
- Each player must drop two stones each turn, but he may optionally remove a stone already on board before the two drops.
- Replace the drop phase with an initial invalid position. Pieces move using their range and may capture by replacement. Wins the first player that achieves a valid position (with valid meaning "no piece attacking another").
This game title is mine, I don't know the original name but will be glad to hear it if someone does.


Post Title
Today's Date
Paragraph 1
Paragraph 2
Paragraph 3
Week 1
Week 2
Week 3
Week 4
Week 5
About Me
Portfolio
Blog
Contact


#JLP76 | Not there yet... Montague says party needs more time before national poll
Chairman of the Jamaica Labour Party (JLP) Robert Montague has said the party is in no haste to go to the polls.
Speaking at the JLP's 76th annual conference at Kingston's National Arena, Montague said Prime Minister Andrew Holness will not call an election unless the party is ready.
But he said several seats are yet to be filled as the JLP conducts background checks on prospective candidates.
"Some people are in desperate haste to have an election. I call them desperado. But only one man can call an election and him won’t call an election until the chairman of the party tell him we are 100 per cent ready,” Montague said.
He also told supporters that the party had projects that it needed to complete before the polls.
"We are in no haste," said Montague.
READ: Timeline - #JLP76 annual conference
Elections are not constitutionally due until 2021, however, Labourites have been energised.
Earlier, JLP General Secretary Dr Horace Chang, said the party wanted 45 seats when the next election is called.
The JLP now has 34 seats to the People's National Party's 29.
Two of the seats held by the JLP were won in by-elections in the past year.
Meanwhile, Montague has also ridiculed the PNP over claims of a massive scandal at the Rural Agricultural Development Authority.
"Desperado say wi spend $1.6 billion on bushing. If wi did spend so much money pon bushing, no bush wouldn't lef a St Thomas," he said.
Follow our #JLP76 coverage on Twitter @JamaicaGleaner and on Facebook @GleanerJamaica. Send us a message on WhatsApp at 1-876-499-0169, email us at<EMAIL_ADDRESS>or onlinefeedback@gleanerjm.com.


1. Open remocialapp.com on your TV or computer screen. 2. Connect to your screen by entering the given code. 3. Search a video on Vimeo. Tap to select. Tap again to play. 4. Pass the remote to your friends by pressing usergroup !


Advent of Code - Day 2
The elves are running low on wrapping paper, and so they need to submit an order for more.
They have a list of the dimensions (length l, width w, and height h) of each present, and only want to order exactly as much as they need.
Fortunately, every present is a box (a perfect right rectangular prism), which makes calculating the required wrapping paper for each gift a little easier: find the surface area of the box, which is 2*l*w + 2*w*h + 2*h*l.
The elves also need a little extra paper for each present: the area of the smallest side.
For example:
- A present with dimensions 2x3x4 requires 2*6 + 2*12 + 2*8 = 52 square feet of wrapping paper plus 6 square feet of slack, for a total of 58 square feet.
- A present with dimensions 1x1x10 requires 2*1 + 2*10 + 2*10 = 42 square feet of wrapping paper plus 1 square foot of slack, for a total of 43 square feet.
All numbers in the elves' list are in feet. How many total square feet of wrapping should they order?
The elves need to order {{ctrl.answer}} square feet of wrapping paper.


Configure Docker Swarm for TLS
Estimated reading time: 17 minutesYou are viewing docs for legacy standalone Swarm. These topics describe standalone Docker Swarm. In Docker 1.12 and higher, Swarm mode is integrated with Docker Engine. Most users should use integrated Swarm mode — a good place to start is Getting started with swarm mode, Swarm mode CLI commands, and the Get started with Docker walkthrough). Standalone Docker Swarm is not integrated into the Docker Engine API and CLI commands.
In this procedure you create a two-node swarm cluster, a Docker Engine CLI, a
swarm manager, and a Certificate Authority as shown below. All the Docker Engine
hosts (client
, swarm
, node1
, and node2
) have a copy of the
CA’s certificate as well as their own key-pair signed by the CA.
This procedure includes the following steps:
- Step 1: Set up the prerequisites
- Step 2: Create a Certificate Authority (CA) server
- Step 3: Create and sign keys
- Step 4: Install the keys
- Step 5: Configure the Engine daemon for TLS
- Step 6: Create a swarm cluster
- Step 7: Create the swarm manager using TLS
- Step 8: Test the swarm manager configuration
- Step 9: Configure the Engine CLI to use TLS
Before you begin
The article includes steps to create your own CA using OpenSSL. This is similar
to operating your own internal corporate CA and PKI. However, this must not
be used as a guide to building a production-worthy internal CA and PKI. These
steps are included for demonstration purposes only - so that readers without
access to an existing CA and set of certificates can follow along and configure
Docker Swarm to use TLS.
Step 1: Set up the prerequisites
To complete this procedure you must stand up 5 (five) Linux servers. These servers can be any mix of physical and virtual servers; they may be on premises or in the public cloud. The following table lists each server name and its purpose.
| Server name | Description |
|---|---|
ca |
Acts as the Certificate Authority (CA) server. |
swarm |
Acts as the swarm manager. |
node1 |
Acts as a swarm node. |
node2 |
Acts as a swarm node. |
client |
Acts as a remote Docker Engine client. |
Make sure that you have SSH access to all 5 servers and that they can communicate with each other using DNS name resolution. In particular:
- Open TCP port 2376 between the swarm manager and swarm nodes
- Open TCP port 3376 between the Docker Engine client and the swarm manager
You can choose different ports if these are already in use. This example assumes you use these ports though.
Each server must run an operating system compatible with Docker Engine. For simplicity, the steps that follow assume all servers are running Ubuntu 14.04 LTS.
Step 2: Create a Certificate Authority (CA) server
Note: If you already have access to a CA and certificates, and are comfortable working with them, you should skip this step and go to the next.
In this step, you configure a Linux server as a CA. You use this CA to create
and sign keys. This step included so that readers without access to an existing
CA (external or corporate) and certificates can follow along and complete the
later steps that require installing and using certificates. It is not
intended as a model for how to deploy production-worthy CA.
-
Logon to the terminal of your CA server and elevate to root.
$ sudo su
-
Create a private key called
ca-priv-key.pem
for the CA:# openssl genrsa -out ca-priv-key.pem 2048 Generating RSA private key, 2048 bit long modulus ...........................................................+++ .....+++ e is 65537 (0x10001)
-
Create a public key called
ca.pem
for the CA.The public key is based on the private key created in the previous step.
# openssl req -config /usr/lib/ssl/openssl.cnf -new -key ca-priv-key.pem -x509 -days 1825 -out ca.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US <output truncated>
You have now configured a CA server with a public and private keypair. You can inspect the contents of each key. To inspect the private key:
# openssl rsa -in ca-priv-key.pem -noout -text
To inspect the public key (cert):
# openssl x509 -in ca.pem -noout -text
The following command shows the partial contents of the CA’s public key.
# openssl x509 -in ca.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:<PHONE_NUMBER>4024107661 (0xf1eaf0f9f41eca8d)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=CA, L=Sanfrancisco, O=Docker Inc
Validity
Not Before: Jan 16 18:28:12 2016 GMT
Not After : Jan 13 18:28:12 2026 GMT
Subject: C=US, ST=CA, L=San Francisco, O=Docker Inc
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:d1:fe:6e:55:d4:93:fc:c9:8a:04:07:2d:ba:f0:
55:97:c5:2c:f5:d7:1d:6a:9b:f0:f0:55:6c:5d:90:
<output truncated>
Later, you use this certificate to sign keys for other servers in the infrastructure.
Step 3: Create and sign keys
Now that you have a working CA, you need to create key pairs for the swarm manager, swarm nodes, and remote Docker Engine client. The commands and process to create key pairs is identical for all servers. You create the following keys:
| Key | Description |
|---|---|
ca-priv-key.pem |
The CA’s private key and must be kept secure. It is used later to sign new keys for the other nodes in the environment. Together with the ca.pem file, this makes up the CA’s key pair. |
ca.pem |
The CA’s public key (also called certificate). This is installed on all nodes in the environment so that all nodes trust certificates signed by the CA. Together with the ca-priv-key.pem file, this makes up the CA’s key pair. |
NODE_NAME.csr |
A certificate signing request (CSR). A CSR is effectively an application to the CA to create a new key pair for a particular node. The CA takes the information provided in the CSR and generates the public and private key pair for that node. |
NODE_NAME-priv-key.pem |
A private key signed by the CA. The node uses this key to authenticate itself with remote Docker Engines. Together with the NODE_NAME-cert.pem file, this makes up a node’s key pair. |
NODE_NAME-cert.pem |
A certificate signed by the CA. This is not used in this example. Together with the NODE_NAME-priv-key.pem file, this makes up a node’s key pair. |
The commands below show how to create keys for all of your nodes. You perform this procedure in a working directory located on your CA server.
-
Logon to the terminal of your CA server and elevate to root.
$ sudo su
-
Create a private key
swarm-priv-key.pem
for your swarm manager# openssl genrsa -out swarm-priv-key.pem 2048 Generating RSA private key, 2048 bit long modulus ............................................................+++ ........+++ e is 65537 (0x10001)
-
Generate a certificate signing request (CSR)
swarm.csr
using the private key you create in the previous step.# openssl req -subj "/CN=swarm" -new -key swarm-priv-key.pem -out swarm.csr
Remember, this is only for demonstration purposes. The process to create a CSR is slightly different in real-world production environments.
-
Create the certificate
swarm-cert.pem
based on the CSR created in the previous step.# openssl x509 -req -days 1825 -in swarm.csr -CA ca.pem -CAkey ca-priv-key.pem -CAcreateserial -out swarm-cert.pem -extensions v3_req -extfile /usr/lib/ssl/openssl.cnf <snip> # openssl rsa -in swarm-priv-key.pem -out swarm-priv-key.pem
You now have a keypair for the swarm manager.
-
Repeat the steps above for the remaining nodes in your infrastructure (
node1
,node2
, andclient
).Remember to replace the
swarm
specific values with the values relevant to the node you are creating the key pair for.Server name Private key CSR Certificate node1
node1-priv-key.pem
node1.csr
node1-cert.pem
node2
node2-priv-key.pem
node2.csr
node2-cert.pem
client
client-priv-key.pem
client.csr
client-cert.pem
-
Verify that your working directory contains the following files:
# ls -l total 64 -rw-r--r-- 1 root root 1679 Jan 16 18:27 ca-priv-key.pem -rw-r--r-- 1 root root 1229 Jan 16 18:28 ca.pem -rw-r--r-- 1 root root 17 Jan 18 09:56 ca.srl -rw-r--r-- 1 root root 1086 Jan 18 09:56 client-cert.pem -rw-r--r-- 1 root root 887 Jan 18 09:55 client.csr -rw-r--r-- 1 root root 1679 Jan 18 09:56 client-priv-key.pem -rw-r--r-- 1 root root 1082 Jan 18 09:44 node1-cert.pem -rw-r--r-- 1 root root 887 Jan 18 09:43 node1.csr -rw-r--r-- 1 root root 1675 Jan 18 09:44 node1-priv-key.pem -rw-r--r-- 1 root root 1082 Jan 18 09:49 node2-cert.pem -rw-r--r-- 1 root root 887 Jan 18 09:49 node2.csr -rw-r--r-- 1 root root 1675 Jan 18 09:49 node2-priv-key.pem -rw-r--r-- 1 root root 1082 Jan 18 09:42 swarm-cert.pem -rw-r--r-- 1 root root 887 Jan 18 09:41 swarm.csr -rw-r--r-- 1 root root 1679 Jan 18 09:42 swarm-priv-key.pem
You can inspect the contents of each of the keys. To inspect a private key:
openssl rsa -in <key-name> -noout -text
To inspect a public key (cert):
openssl x509 -in <key-name> -noout -text
The following command shows the partial contents of the swarm manager’s public
swarm-cert.pem
key.
# openssl x509 -in ca.pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:<PHONE_NUMBER>311914051 (0x8518d2237ad49e43)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, ST=CA, L=Sanfrancisco, O=Docker Inc
Validity
Not Before: Jan 18 09:42:16 2016 GMT
Not After : Jan 15 09:42:16 2026 GMT
Subject: CN=swarm
<output truncated>
Step 4: Install the keys
In this step, you install the keys on the relevant servers in the infrastructure. Each server needs three files:
- A copy of the Certificate Authority’s public key (
ca.pem
) - Its own private key
- Its own public key (cert)
The procedure below shows you how to copy these files from the CA server to each
server using scp
. As part of the copy procedure, rename each file as
follows on each node:
| Original name | Copied name |
|---|---|
ca.pem |
ca.pem |
<server>-cert.pem |
cert.pem |
<server>-priv-key.pem |
key.pem |
-
Logon to the terminal of your CA server and elevate to root.
$ sudo su
-
Create a
~/.certs
directory on the swarm manager. Here we assume user account is ubuntu.$ ssh ubuntu@swarm 'mkdir -p /home/ubuntu/.certs'
-
Copy the keys from the CA to the swarm manager server.
$ scp ./ca.pem ubuntu@swarm:/home/ubuntu/.certs/ca.pem $ scp ./swarm-cert.pem ubuntu@swarm:/home/ubuntu/.certs/cert.pem $ scp ./swarm-priv-key.pem ubuntu@swarm:/home/ubuntu/.certs/key.pem
Note: You may need to provide authentication for the
scp
commands to work. For example, AWS EC2 instances use certificate-based authentication. To copy the files to an EC2 instance associated with a public key callednigel.pem
, modify thescp
command as follows:scp -i /path/to/nigel.pem ./ca.pem ubuntu@swarm:/home/ubuntu/.certs/ca.pem
. -
Repeat step 2 for each remaining server in the infrastructure.
node1
node2
client
-
Verify your work.
When the copying is complete, each machine should have the following keys.
Each node in your infrastructure should have the following files in the
/home/ubuntu/.certs/
directory:# ls -l /home/ubuntu/.certs/ total 16 -rw-r--r-- 1 ubuntu ubuntu 1229 Jan 18 10:03 ca.pem -rw-r--r-- 1 ubuntu ubuntu 1082 Jan 18 10:06 cert.pem -rw-r--r-- 1 ubuntu ubuntu 1679 Jan 18 10:06 key.pem
Step 5: Configure the Engine daemon for TLS
In the last step, you created and installed the necessary keys on each of your swarm nodes. In this step, you configure them to listen on the network and only accept connections using TLS.
On node1
and node2
(your swarm nodes), do the following:
-
Open a terminal on
node1
and elevate to root.$ sudo su
-
Add the following configuration keys to the
/etc/docker/daemon.json
. If the file does not yet exist, create it.{ "hosts": ["tcp://<IP_ADDRESS>:2376"], "tlsverify": "true", "tlscacert": "/home/ubuntu/.certs/ca.pem", "tlscert": "/home/ubuntu/.certs/cert.pem", "tlskey": "/home/ubuntu/.certs/key.pem" }
Restart Docker for the changes to take effect. If the file is not valid JSON, Docker fails to start and emits an error.
-
Repeat the procedure on
node2
as well.
Step 6: Create a swarm cluster
Next create a swarm cluster. In this procedure you create a two-node swarm cluster using the default hosted discovery backend. The default hosted discovery backend uses Docker Hub and is not recommended for production use.
-
Logon to the terminal of your swarm manager node.
-
Create the cluster and export it’s unique ID to the
TOKEN
environment variable.$ sudo export TOKEN=$(docker run --rm swarm create) Unable to find image 'swarm:latest' locally latest: Pulling from library/swarm d681c900c6e3: Pulling fs layer <snip> 986340ab62f0: Pull complete a9975e2cc0a3: Pull complete Digest: sha256:c21fd414b0488637b1f05f13a59b032a3f9da5d818d31da1a4ca98a84c0c781b Status: Downloaded newer image for swarm:latest
-
Join
node1
to the cluster.Be sure to specify TCP port
2376
and not2375
.$ sudo docker run -d swarm join --addr=node1:2376 token://$TOKEN 7bacc98536ed6b4200825ff6f4004940eb2cec891e1df71c6bbf20157c5f9761
-
Join
node2
to the cluster.$ sudo docker run -d swarm join --addr=node2:2376 token://$TOKEN db3f49d397bad957202e91f0679ff84f526e74d6c5bf1b6734d834f5edcbca6c
Step 7: Start the swarm manager using TLS
-
Launch a new container with TLS enables
$ docker run -d -p 3376:3376 -v /home/ubuntu/.certs:/certs:ro swarm manage --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/cert.pem --tlskey=/certs/key.pem --host=<IP_ADDRESS>:3376 token://$TOKEN
The command above launches a new container based on the
swarm
image and it maps port3376
on the server to port3376
inside the container. This mapping ensures that Docker Engine commands sent to the host on port3376
are passed on to port3376
inside the container. The container runs the swarmmanage
process with the--tlsverify
,--tlscacert
,--tlscert
and--tlskey
options specified. These options force TLS verification and specify the location of the swarm manager’s TLS keys. -
Run a
docker ps
command to verify that your swarm manager container is up and running.$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 035dbf57b26e swarm "/swarm manage --tlsv" 7 seconds ago Up 7 seconds 2375/tcp, <IP_ADDRESS>:3376->3376/tcp compassionate_lovelace
Your swarm cluster is now configured to use TLS.
Step 8: Test the swarm manager configuration
Now that you have a swarm cluster built and configured to use TLS, test that it works with a Docker Engine CLI.
-
Open a terminal onto your
client
server. -
Issue the
docker version
command.When issuing the command, you must pass it the location of the clients certifications.
$ sudo docker --tlsverify --tlscacert=/home/ubuntu/.certs/ca.pem --tlscert=/home/ubuntu/.certs/cert.pem --tlskey=/home/ubuntu/.certs/key.pem -H swarm:3376 version Client: Version: 1.9.1 API version: 1.21 Go version: go1.4.2 Git commit: a34a1d5 Built: Fri Nov 20 13:12:04 UTC 2015 OS/Arch: linux/amd64 Server: Version: swarm/1.0.1 API version: 1.21 Go version: go1.5.2 Git commit: 744e3a3 Built: OS/Arch: linux/amd64
The output above shows the
Server
version as “swarm/1.0.1”. This means that the command was successfully issued against the swarm manager. -
Verify that the same command does not work without TLS.
This time, do not pass your certs to the swarm manager.
$ sudo docker -H swarm:3376 version : Version: 1.9.1 API version: 1.21 Go version: go1.4.2 Git commit: a34a1d5 Built: Fri Nov 20 13:12:04 UTC 2015 OS/Arch: linux/amd64 Get http://swarm:3376/v1.21/version: malformed HTTP response "\x15\x03\x01\x00\x02\x02". * Are you trying to connect to a TLS-enabled daemon without TLS?
The output above shows that the command was rejected by the server. This is because the server (swarm manager) is configured to only accept connections from authenticated clients using TLS.
Step 9: Configure the Engine CLI to use TLS
You can configure the Engine so that you don’t need to pass the TLS options when
you issue a command. To do this, configure the Docker Engine host
and
TLS
settings as defaults on your Docker Engine client.
To do this, you place the client’s keys in your ~/.docker
configuration
folder. If you have other users on your system using the Engine command line,
configure their account’s ~/.docker
as well. The procedure below shows how to
do this for the ubuntu
user on your Docker Engine client.
-
Open a terminal onto your
client
server. -
If it doesn’t exist, create a
.docker
directory in theubuntu
user’s home directory.$ mkdir /home/ubuntu/.docker
-
Copy the Docker Engine client’s keys from
/home/ubuntu/.certs
to/home/ubuntu/.docker
$ cp /home/ubuntu/.certs/{ca,cert,key}.pem /home/ubuntu/.docker
-
Edit the account’s
~/.bash_profile
. -
Set the following variables:
Variable Description DOCKER_HOST
Sets the Docker host and TCP port to send all Engine commands to. DOCKER_TLS_VERIFY
Tells Engine to use TLS. DOCKER_CERT_PATH
Specifies the location of TLS keys. For example:
export DOCKER_HOST=tcp://swarm:3376 export DOCKER_TLS_VERIFY=1 export DOCKER_CERT_PATH=/home/ubuntu/.docker/
-
Save and close the file.
-
Source the file to pick up the new variables.
$ source ~/.bash_profile
-
Verify that the procedure worked by issuing a
docker version
command$ docker version Client: Version: 1.9.1 API version: 1.21 Go version: go1.4.2 Git commit: a34a1d5 Built: Fri Nov 20 13:12:04 UTC 2015 OS/Arch: linux/amd64 Server: Version: swarm/1.0.1 API version: 1.21 Go version: go1.5.2 Git commit: 744e3a3 Built: OS/Arch: linux/amd64
The server portion of the output above command shows that your Docker client is issuing commands to the swarm manager and using TLS.
Congratulations! You have configured a Docker swarm cluster to use TLS.


THE FACULTY ** (out of four) -a review by Bill Chambers<EMAIL_ADDRESS>)
[For more purple prose, visit Film Freak Central - http://filmfreakcentral.net )
starring Elijah Wood, Josh Hartnett, Clea DuVall, Jordana Brewster screenplay by Kevin Williamson directed by Robert Rodriguez
Before Kevin Williamson came along, could anyone other than film geeks/freaks name a living, working screenwriter? His name on a movie's credits (sometimes before the title) is a signal to teenagers that they're in for some post-Gen X irony-his screenplays assume everyone born after 1980 grew up in a video store. (Often, as he's cribbing a plot, he'll refer to the source-the Breakfast Club episode of "Dawson's Creek", for example.) Williamson is, in some circles, even hipper than Quentin Tarantino is.
T2's Robert Patrick stars as a pent-up high school football coach whose body is taken over by a parasitic alien; he proceeds to contaminate virtually the entire faculty-most amusingly, Ain't-It-Cool-News webmaster Harry Knowles (!) in his screen debut as the Teacher Most In Need of a Treadmill. A group of rambunctious whippersnappers uncover this secret early on. Together, they search for places to hide and a defense against their newfound enemies.
Said group of archetypal-make that stereotypical-teen heroes are as follows: Delilah (Brewster), the head cheerleader and school beauty; Stan (Shawn Hatosy), ex-captain of the football team and ex-boyfriend of Delilah-a jock with a yearning for learning; Casey (Wood), the underappreciated school nerd; Marybeth (Laura Harris), the naive new girl in school; Zeke (Hartnett), the rebel without a comb, an underachieving student who sells homemade drugs out of the trunk of his car; and Stokeley (DuVall-be still my beating heart), the weirdo gothic brainer who pretends she's a lesbian so guys will leave her alone. Did I just describe the cast of The Breakfast Club? Here, Williamson takes it a step further, as the characters look to the text of Jack Finney's Invasion of the Body Snatchers for a solution to their dilemma.
The real problem is that Rodriguez (Desperado, From Dusk Till Dawn) is such an efficient director (three staff members are snatched within the first five minutes of the film) that (the nonetheless enjoyable) The Faculty rarely has a chance to breathe. Relationships are pared down to their essentials; oftentimes, two characters are conversing (and snooping together) who were not friends a scene before. Marybeth gravitates to Stokeley immediately-why? Unlike The Breakfast Club (or any of the Body Snatchers films, for that matter), there is little reason all these characters would unite. Also, as in most movies of this type, it seems a dartboard was used to select who will become an alien and who won't. (Aside, some entries for Roger Ebert's Movie Glossary: when testing a group of people to see which person is harbouring a secret alien identity, the last one tested will turn out to be the monster; in an attempt to body snatch the male protagonist, a female villain will appear totally nude before him and invite him closer.)
There is mild subtext to Williamson's screenplay (which was polished off by David Wechter and Bruce Kimmel)-The Faculty at time plays like an effects-laden "Just Say No!" commercial. Which is a great message, except that drugs defeat these aliens-perhaps Rodriguez and co. are commenting on the merits of detox? The beauty of all three Body Snatchers movies is how emblematic of their respective periods they are (1956: McCarthyism; 1978: the Me Generation; 1993: the military state); in 1999, there is more to say about the threat of widespread mind control than what's laid out here. Today's teenagers and twentysomething folks (myself included) have been spoonfed so much pop culture-we're all talking like the characters on "Friends"-that I doubt they'd notice if our teachers and parents lost their identities, too.
-January, 1999
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Daniel Villarroel
I am a bilingual full stack web developer, enthusiastic and trilled to
build my mastery every day. I enjoy adapting to different situations
and challenging myself. I aim to work as confortable and effective as
possible. My experience as a Bilingual Youth Counselor has taught me
the value of great comunication to improve customer service and
professional relationships with my team.


aggregatable
attribute enables aggregation for table rows. The following operations are supported:
SUM
- calculate the sum
AVG
- find the average value
COUNT
- calculate the total number
MIN
- find the minimum value
MAX
- find the maximum value
The aggregation
element should be set for aggregated table cells with the type
attribute,
which sets the aggregation function. The aggregated table values are shown in an additional row at the top of the
table.
The aggregationStyle
attribute allows you to specify the location of the aggregation row:
TOP
or BOTTOM
. TOP
is used by default.
In addition to the operations listed above, you can define a custom aggregation strategy by implementing the
AggregationStrategy
interface.


Powerball: Tuesday's results
Here are your Powerball and Powerball Plus results for Tuesday, November 19:
PowerBall: 03, 04, 16, 43, 44 PowerBall: 10
PowerBall Plus: 31, 32, 39, 45, 47 PowerBall: 16
In case you missed it here are Saturday's Lotto and Lotto Plus results:
*Please note that the information provided herein is third party information. Whilst every effort is expended to ensure that the information provided is true and accurate, we are not responsible for errors, omissions or any loss which an individual may experience.
See the National Lottery Terms and conditions here .
Tap here to download the News24 Android App or here to download the News24 iOS App .


SFSmartStorePlugin Class Reference
| Inherits from | PGPlugin : NSObject |
| Declared in | SFSmartStorePlugin.h |
Tasks
-
+ resetSharedStore
Used for unit testing purposes only: allows the shared smart store instance to be reset.
-
– pgSoupExists:withDict:
Does the given soup exist in the store? See see [SFSmartStore soupExists:].
-
– pgRegisterSoup:withDict:
Registers a new soup in the store. See [SFSmartStore registerSoup:withIndexSpecs:].
-
– pgRemoveSoup:withDict:
Removes a soup from the store. See [SFSmartStore removeSoup:].
-
– pgQuerySoup:withDict:
Queries a soup for data. See [SFSmartStore querySoup:withQuerySpec:].
-
– pgRetrieveSoupEntries:withDict:
Retrieves a set of soup entries from a soup. See [SFSmartStore retrieveEntries:fromSoup:].
-
– pgUpsertSoupEntries:withDict:
Inserts/updates a group of entries in a soup. See [SFSmartStore upsertEntries:toSoup:].
-
– pgCloseCursor:withDict:
Closes a cursor associated with soup data.
-
– pgRemoveFromSoup:withDict:
Removes a set of soup entries from a soup. See [SFSmartStore removeEntries:fromSoup:].
-
– cursorByCursorId:
Gets a handle to a cursor, from its ID.
Instance Methods
cursorByCursorId:
Gets a handle to a cursor, from its ID.
- (SFSoupCursor *)cursorByCursorId:(NSString *)cursorId
Parameters
- cursorId
The unique ID of the cursor.
Return Value
The cached SFSoupCursor isntance with the given ID, or nil.
Discussion
Gets a handle to a cursor, from its ID.
Declared In
SFSmartStorePlugin.h
pgCloseCursor:withDict:
Closes a cursor associated with soup data.
- (void)pgCloseCursor:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success
- options
NSDictionary containing “cursorId”.
Discussion
Closes a cursor associated with soup data.
Declared In
SFSmartStorePlugin.h
pgQuerySoup:withDict:
Queries a soup for data. See [SFSmartStore querySoup:withQuerySpec:].
- (void)pgQuerySoup:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error with an error code.
- options
NSDictionary containing “soupName” and “querySpec”.
Discussion
Queries a soup for data. See [SFSmartStore querySoup:withQuerySpec:].
Declared In
SFSmartStorePlugin.h
pgRegisterSoup:withDict:
Registers a new soup in the store. See [SFSmartStore registerSoup:withIndexSpecs:].
- (void)pgRegisterSoup:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error
- options
NSDictionary containing “soupName” and “indexSpecs”.
Discussion
Registers a new soup in the store. See [SFSmartStore registerSoup:withIndexSpecs:].
Declared In
SFSmartStorePlugin.h
pgRemoveFromSoup:withDict:
Removes a set of soup entries from a soup. See [SFSmartStore removeEntries:fromSoup:].
- (void)pgRemoveFromSoup:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error with an error code.
- options
NSDictionary containing “soupName” and “soupEntryIds”.
Discussion
Removes a set of soup entries from a soup. See [SFSmartStore removeEntries:fromSoup:].
Declared In
SFSmartStorePlugin.h
pgRemoveSoup:withDict:
Removes a soup from the store. See [SFSmartStore removeSoup:].
- (void)pgRemoveSoup:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error
- options
NSDictionary containing “soupName”.
Discussion
Removes a soup from the store. See [SFSmartStore removeSoup:].
Declared In
SFSmartStorePlugin.h
pgRetrieveSoupEntries:withDict:
Retrieves a set of soup entries from a soup. See [SFSmartStore retrieveEntries:fromSoup:].
- (void)pgRetrieveSoupEntries:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error with an error code.
- options
NSDictionary containing “soupName” and “soupEntryIds”.
Discussion
Retrieves a set of soup entries from a soup. See [SFSmartStore retrieveEntries:fromSoup:].
Declared In
SFSmartStorePlugin.h
pgSoupExists:withDict:
Does the given soup exist in the store? See see [SFSmartStore soupExists:].
- (void)pgSoupExists:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error
- options
NSDictionary containing “soupName”.
Discussion
Does the given soup exist in the store? See see [SFSmartStore soupExists:].
Declared In
SFSmartStorePlugin.h
pgUpsertSoupEntries:withDict:
Inserts/updates a group of entries in a soup. See [SFSmartStore upsertEntries:toSoup:].
- (void)pgUpsertSoupEntries:(NSArray *)arguments withDict:(NSDictionary *)options
Parameters
- arguments
Standard phonegap arguments array, containing: 1: successCB – this is the javascript function that will be called on success 2: errorCB – optional javascript function to be called in the event of an error with an error code.
- options
NSDictionary containing “soupName” and “entries”.
Discussion
Inserts/updates a group of entries in a soup. See [SFSmartStore upsertEntries:toSoup:].
Declared In
SFSmartStorePlugin.h


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Image Inspection Services Ltd.
Legal/Operating Name:
Image Inspection Services Ltd.
Mailing Address:
4650 50th Ave SECALGARY, Alberta
T2B 3R4
Location Address:
4650 50th Ave SECALGARY, Alberta
T2B 3R4
Tel.:<PHONE_NUMBER>
Tel.:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
Logo
Company Profile
Image Inspection Services manufactures remote television cameras for inspecting underground sewers and pipelines. The camera is a self contained unit which is drawn through the pipe, and using it's own light source, transmits a picture of the inside conditions of the pipe to the operator. The inspection results are video recorded for a permanent record. Defects along with their corresponding distance measurement are noted on the recording as well as in a computer generated log report. Radio location from above ground exactly locates the camera position to minimize digging. Various robotocs are employed to transport the camera through a variety of pipe diameters ranging from less than 1" in diameter to over 48" in diameter.
The camera is typically drawn from manhole to manhole either by a winch or a pressure flushing machine. A remote crawler is
available for conveying the camera when access is restricted to one end. The camera can be used for inspecting pipe diameters from 3" through 48" in diameter with a maximum cable length of 2500". Similarly, the video camera can be lowered into wells and boreholes.
Environmental Profile
Image Inspection Services Ltd. is a specialty manufacturer of underwater television inspection systems designed for the non-destructive inspection of sewers, wells, boreholes and pipelines. Our products have found numerous applications in both the municipal and industrial sectors. The majority of our equipment system sales are to municipal governments; the minority of sales are to contractors to the industrial and municipal market.
We also provide a consulting service utilizing video inspection equipment for the detection and evaluation of pipeline corrosion, pipe and vessel condition, and sewer system ratings and evaluations. Training in the safe and efficient operation of the sewer equipment is provided to new system owners. The company has developed various cameras for a diverse range of applications from sewer pipe to drinking water well to oilfield pipeline inspection.
Image Inspection Services Ltd. also acts as a design consultant for CCTV video applications, including night surveillance, computer imaging and machine vision, and security and surveillance applications. We have custom designed many specialty composite video cable, underwater housings and underwater lighting systems. 65% of all sales are within Canada with 50% in Western Canada and 15% in Eastern Canada; the remaining 25% are in the US market, and 10% overseas. Regional repair centers throughout Canada and the United States provide convenient service centers for equipment repair or upgrading.
Our in-house capabilities include a machine shop, CADD system, electronic repair center, and an electronic manufacturing facility including a wave solder machine. Image markets its products and services to governments, hospitals, utilities, petroleum companies, and private water and sewer contractors.
Full profile
Full profile
Contact information
Company description
334220 - Radio and Television Broadcasting and Wireless Communications Equipment Manufacturing
541330 - Engineering Services
811210 - Electronic and Precision Equipment Repair and Maintenance
Product / Service / Licensing
The Image Mini Camera Inspection System is a versatile camera system available in many configurations. Many camera heads
are available including color mini cameras, and Pan and Tilt cameras. All camera heads have
CCD construction, water tight, excellent resolution, low light sensitivity, and are all interchangeable.
The camera systems are useful for inspecting a variety of piping and vessels including sewer laterals, house plumbing, chimneys,
catalyst tubes, boreholes, electrical and telephone ducts and industrial piping. The systems are compact, light weight, and cost effective. The cameras and pushrods will negotiate multiple bends and deliver a quality picture over hundreds of meters of cable. All controls units are housed in heavy duty aluminum flight cases with compartment lids to protect components during transport.
Model 2
The most popular, rugged and versatile model of portable camera control units. It features a built in industrial color monitor, industrial DVD, DVR, or VCR, and rack mounted camera control unit. It has an adjustable light power supply and can power both mini color and pan and tilt cameras. A built in a heavy duty aluminum flight case with compartment storage to hold remotes, disks, and cords. The DVD unit is region free and records in MPEG4 format. The DVR records onto standard camera memory cards.
The control unit has many optional upgrades including a built in auxiliary lighting kit for mainline inspections, built in crawler controller, optional basic on screen distance counter, optional deluxe distance, date, time and full on screen text counter overlays, optional grade indicator, and compulink connector enabling a portable computer to interface with the unit for data collection and report generation. Screen text overlays are controlled by a standard computer keyboard that plugs into the front of the control unit. The rugged flight case features optional configurations including built in retractable dolly handle and built in heavy duty roller wheels, side by side desktop configuration or compact flip top design with 10.4 LCD monitor.
Model 8
Our smallest model of portable camera control unit. It features a built in color LCD monitor, video out connector for connecting to a recording device, and camera control unit. It has an adjustable light power supply and can power both color and black and white camera heads. The control unit and monitor are housed in a rugged waterproof case about the size of a small briefcase. The case also hold the optional roll up keyboard for on screen text.
The control unit has many optional upgrades including built in crawler adapter, optional basic on screen distance counter, optional deluxe distance, date, time and full on screen text counter overlays and compu-link connector enabling a portable computer to interface with the unit for data collection and report generation. Optional on screen text overlays are controlled by a roll up computer keyboard that plugs into the front of the control unit and is stored inside the lid.
Model 9-11-12
The model 9 and its interchangeable pushrods are our most economical models of portable camera control units. It features a built in color LCD monitor with sun shade, digital recorder with USB, and video out connector for connecting to a separate recording device. It has an adjustable light power supply and houses a complete mini reel with slip ring and mini colour camera.
The control unit, monitor, and camera reel are housed in a rugged waterproof case about the size of a briefcase. The case also holds the battery, battery charger, and interconnect cables. The Model 9 system is idea for pipe, wall, and air duct inspections as well as many industrial type applications.
Model 10
The model 10 control unit is the smallest portable color pan and tilt camera units. It features a built in color LCD monitor with sun shade, digital recorder with USB, and video out connector for connecting to a separate recording device. It has an adjustable light power supply and houses a complete mini reel with built in inclinometer for its pan and tilt camera head.
The control unit, monitor, and camera reel are housed in a rugged waterproof case about the size of a briefcase. The case also holds the battery, battery charger, and interconnect cables. The Model 10 camera is a fully remote controlled pan and tilt camera head measuring 1.6 in diameter and is ideal for industrial inspections.
Cables are contracted around a rugged fiberglass core with copper conductors wrapped along with Kevlar and steel reinforcing members. The cable jacket is a tough and slippery high density polyethylene plastic in bright safety orange color. The cable end connection is contained within a heavy duty spring assembly with metal shelled military specification connector.
A high quality mercury slip ring assembly ensures completely noise free, maintenance free service. There is also an optional accurate electronic distance counter and built in 512 Hz radio transmitter for above ground locating. The wheeled frame assembly is lightweight and easy to maneuver on built in wheels.
Mole Crawler
The smallest member of a family of 3 robust wheeled camera crawlers. Pipe diameters from 4 to 12 are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera carries a built in high resolution color camera and lights, and best suited for lateral lines. It comes with its own high torque 48 volt motor, or a duel motor for added distance and strength. comes with forward, reverse, and variable speed abilities. Able to pull up to 500' of mini camera cable.
Gopher Crawler
The intermediate member of a family of 3 robust wheeled camera crawlers, and the most popular. Pipe diameters from 6 to 24 pipe are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras, but requires a front mounted mini camera when negotiating 6 diameter pipe. This crawler is best suited for lines up to 500 in length.
Wolverine Crawler
The largest member of a family of 3 robust wheeled camera crawlers, and one that features a dual motor drive for steerable operations. Pipe diameters from 8 to 36 pipe are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras and is ideal for demanding 8 and larger operation.
Grizzly Crawler
Pipe diameters from 24 and larger are possible with the use of various sizes of pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras and is ideal for demanding large pipe operation. The Grizzly features 4 high torque 48 volt motors, independently drawn for steerable operation. Variable speed options and transmission neutral available. 3 sizes of pneumatic storm tire available for this model, and interchangeable in tires from all crawlers.
C17B
The most popular camera has 570 lines of resolution color and 0.3 Lux sensitivity. It has a white LED solid state lighting consisting of 30 LEDs high output in bullet nose.
C20 Screw Pump Camera
This camera has 350 lines of Resolution color and 0.3 Lux sensitivity. It has LED solid state lighting consisting of 15 high output LEDs in white.
C26SL
This camera is a self leveling unit with an internal gold slipring. 570 lines of Resolution color and 0.3 Lux sensitivity. It has a 30 LED white solid state light ring consisting of consisting of 15 forward and 15 angled high output LEDs.
Pan and Tilt camera
This camera head can be pushrod or crawler mounted to provide advanced viewing of pipe wall defects. Its ultra small size enables it to be used for 4 pipe inspections where a high detail of wall conditions are not possible with straight viewing mini camera heads. Designed specifically to provide a close-up view of sewer pipe walls and lateral entrances through the use of a low light sensitive movable camera head with directional lighting. This color unit is designed for operation through up to 2000 of multi-conductor coax cable in sanitary and storm sewers. Chassis construction is 100% solid state circuitry designed to withstand shocks and vibration normally sustained while being pulled through 6 or larger pipe. The camera provides 360 degrees of radial rotation viewing with chip rotation to view all sewer wall surfaces and lateral connections.
We custom design circuit boards and provide assembly services for small to medium sized production runs both by hand and 12 wave solder machine.
Technology profile
Market profile
Industry sector market interests:
- Environment
- Service Industry
Geographic markets:
Export experience:
- Algeria
- Australia
- Bahamas
- Barbados
- Bermuda
- Brazil
- Cayman Islands
- Cuba
- Dominican Republic
- Haiti
- India
- Jamaica
- Netherlands Antilles
- Nigeria
- Puerto Rico
- Trinidad and Tobago
- Turks and Caicos Islands
- United States
- Alabama
- Illinois
- Louisiana
- Oregon
- South Carolina
- Texas
Actively pursuing:
- Argentina
- Chile
- Colombia
- Falkland Islands (Malvinas)
- Malta
- Mexico
- United Kingdom
- Alaska
- Arizona
- Arkansas
- California
- Colorado
- Connecticut
- Delaware
- District of Columbia
- Florida
- Georgia
- Hawaii
- Idaho
- Indiana
- Iowa
- Kansas
- Kentucky
- Maine
- Maryland
- Massachusetts
- Michigan
- Minnesota
- Mississippi
- Missouri
- Montana
- Nebraska
- Nevada
- New Hampshire
- New Jersey
- New Mexico
- New York
- North Carolina
- North Dakota
- Ohio
- Oklahoma
- Pennsylvania
- Rhode Island
- South Dakota
- Tennessee
- Utah
- Vermont
- Virginia
- Washington
- West Virginia
- Wisconsin
- Wyoming
Sector information
Total plant size:
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
334220 - Radio and Television Broadcasting and Wireless Communications Equipment Manufacturing
541330 - Engineering Services
811210 - Electronic and Precision Equipment Repair and Maintenance
Products, services and licensing
Product / Service / Licensing
The Image Mini Camera Inspection System is a versatile camera system available in many configurations. Many camera heads
are available including color mini cameras, and Pan and Tilt cameras. All camera heads have
CCD construction, water tight, excellent resolution, low light sensitivity, and are all interchangeable.
The camera systems are useful for inspecting a variety of piping and vessels including sewer laterals, house plumbing, chimneys,
catalyst tubes, boreholes, electrical and telephone ducts and industrial piping. The systems are compact, light weight, and cost effective. The cameras and pushrods will negotiate multiple bends and deliver a quality picture over hundreds of meters of cable. All controls units are housed in heavy duty aluminum flight cases with compartment lids to protect components during transport.
Model 2
The most popular, rugged and versatile model of portable camera control units. It features a built in industrial color monitor, industrial DVD, DVR, or VCR, and rack mounted camera control unit. It has an adjustable light power supply and can power both mini color and pan and tilt cameras. A built in a heavy duty aluminum flight case with compartment storage to hold remotes, disks, and cords. The DVD unit is region free and records in MPEG4 format. The DVR records onto standard camera memory cards.
The control unit has many optional upgrades including a built in auxiliary lighting kit for mainline inspections, built in crawler controller, optional basic on screen distance counter, optional deluxe distance, date, time and full on screen text counter overlays, optional grade indicator, and compulink connector enabling a portable computer to interface with the unit for data collection and report generation. Screen text overlays are controlled by a standard computer keyboard that plugs into the front of the control unit. The rugged flight case features optional configurations including built in retractable dolly handle and built in heavy duty roller wheels, side by side desktop configuration or compact flip top design with 10.4 LCD monitor.
Model 8
Our smallest model of portable camera control unit. It features a built in color LCD monitor, video out connector for connecting to a recording device, and camera control unit. It has an adjustable light power supply and can power both color and black and white camera heads. The control unit and monitor are housed in a rugged waterproof case about the size of a small briefcase. The case also hold the optional roll up keyboard for on screen text.
The control unit has many optional upgrades including built in crawler adapter, optional basic on screen distance counter, optional deluxe distance, date, time and full on screen text counter overlays and compu-link connector enabling a portable computer to interface with the unit for data collection and report generation. Optional on screen text overlays are controlled by a roll up computer keyboard that plugs into the front of the control unit and is stored inside the lid.
Model 9-11-12
The model 9 and its interchangeable pushrods are our most economical models of portable camera control units. It features a built in color LCD monitor with sun shade, digital recorder with USB, and video out connector for connecting to a separate recording device. It has an adjustable light power supply and houses a complete mini reel with slip ring and mini colour camera.
The control unit, monitor, and camera reel are housed in a rugged waterproof case about the size of a briefcase. The case also holds the battery, battery charger, and interconnect cables. The Model 9 system is idea for pipe, wall, and air duct inspections as well as many industrial type applications.
Model 10
The model 10 control unit is the smallest portable color pan and tilt camera units. It features a built in color LCD monitor with sun shade, digital recorder with USB, and video out connector for connecting to a separate recording device. It has an adjustable light power supply and houses a complete mini reel with built in inclinometer for its pan and tilt camera head.
The control unit, monitor, and camera reel are housed in a rugged waterproof case about the size of a briefcase. The case also holds the battery, battery charger, and interconnect cables. The Model 10 camera is a fully remote controlled pan and tilt camera head measuring 1.6 in diameter and is ideal for industrial inspections.
Cables are contracted around a rugged fiberglass core with copper conductors wrapped along with Kevlar and steel reinforcing members. The cable jacket is a tough and slippery high density polyethylene plastic in bright safety orange color. The cable end connection is contained within a heavy duty spring assembly with metal shelled military specification connector.
A high quality mercury slip ring assembly ensures completely noise free, maintenance free service. There is also an optional accurate electronic distance counter and built in 512 Hz radio transmitter for above ground locating. The wheeled frame assembly is lightweight and easy to maneuver on built in wheels.
Mole Crawler
The smallest member of a family of 3 robust wheeled camera crawlers. Pipe diameters from 4 to 12 are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera carries a built in high resolution color camera and lights, and best suited for lateral lines. It comes with its own high torque 48 volt motor, or a duel motor for added distance and strength. comes with forward, reverse, and variable speed abilities. Able to pull up to 500' of mini camera cable.
Gopher Crawler
The intermediate member of a family of 3 robust wheeled camera crawlers, and the most popular. Pipe diameters from 6 to 24 pipe are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras, but requires a front mounted mini camera when negotiating 6 diameter pipe. This crawler is best suited for lines up to 500 in length.
Wolverine Crawler
The largest member of a family of 3 robust wheeled camera crawlers, and one that features a dual motor drive for steerable operations. Pipe diameters from 8 to 36 pipe are possible with the use of various sizes of solid or pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras and is ideal for demanding 8 and larger operation.
Grizzly Crawler
Pipe diameters from 24 and larger are possible with the use of various sizes of pneumatic wheels and spacers. The camera can carry standard or pan and tilt cameras and is ideal for demanding large pipe operation. The Grizzly features 4 high torque 48 volt motors, independently drawn for steerable operation. Variable speed options and transmission neutral available. 3 sizes of pneumatic storm tire available for this model, and interchangeable in tires from all crawlers.
C17B
The most popular camera has 570 lines of resolution color and 0.3 Lux sensitivity. It has a white LED solid state lighting consisting of 30 LEDs high output in bullet nose.
C20 Screw Pump Camera
This camera has 350 lines of Resolution color and 0.3 Lux sensitivity. It has LED solid state lighting consisting of 15 high output LEDs in white.
C26SL
This camera is a self leveling unit with an internal gold slipring. 570 lines of Resolution color and 0.3 Lux sensitivity. It has a 30 LED white solid state light ring consisting of consisting of 15 forward and 15 angled high output LEDs.
Pan and Tilt camera
This camera head can be pushrod or crawler mounted to provide advanced viewing of pipe wall defects. Its ultra small size enables it to be used for 4 pipe inspections where a high detail of wall conditions are not possible with straight viewing mini camera heads. Designed specifically to provide a close-up view of sewer pipe walls and lateral entrances through the use of a low light sensitive movable camera head with directional lighting. This color unit is designed for operation through up to 2000 of multi-conductor coax cable in sanitary and storm sewers. Chassis construction is 100% solid state circuitry designed to withstand shocks and vibration normally sustained while being pulled through 6 or larger pipe. The camera provides 360 degrees of radial rotation viewing with chip rotation to view all sewer wall surfaces and lateral connections.
We custom design circuit boards and provide assembly services for small to medium sized production runs both by hand and 12 wave solder machine.
Technology
Technology profile
Market
Market profile
Industry sector market interests:
- Environment
- Service Industry
Geographic markets:
Export experience:
- Algeria
- Australia
- Bahamas
- Barbados
- Bermuda
- Brazil
- Cayman Islands
- Cuba
- Dominican Republic
- Haiti
- India
- Jamaica
- Netherlands Antilles
- Nigeria
- Puerto Rico
- Trinidad and Tobago
- Turks and Caicos Islands
- United States
- Alabama
- Illinois
- Louisiana
- Oregon
- South Carolina
- Texas
Actively pursuing:
- Argentina
- Chile
- Colombia
- Falkland Islands (Malvinas)
- Malta
- Mexico
- United Kingdom
- Alaska
- Arizona
- Arkansas
- California
- Colorado
- Connecticut
- Delaware
- District of Columbia
- Florida
- Georgia
- Hawaii
- Idaho
- Indiana
- Iowa
- Kansas
- Kentucky
- Maine
- Maryland
- Massachusetts
- Michigan
- Minnesota
- Mississippi
- Missouri
- Montana
- Nebraska
- Nevada
- New Hampshire
- New Jersey
- New Mexico
- New York
- North Carolina
- North Dakota
- Ohio
- Oklahoma
- Pennsylvania
- Rhode Island
- South Dakota
- Tennessee
- Utah
- Vermont
- Virginia
- Washington
- West Virginia
- Wisconsin
- Wyoming


Aaron L. Post
- **** G**** Dr. Dallas, TX 75***
-<EMAIL_ADDRESS>- (***) 867-5309
- AaronLPost.com
I am a self-taught Web Designer/Developer with a formal design education in Architecture. I have experience in front-end technologies including HTML5, CSS3, and JavaScript, as well as design in Photoshop and Illustrator. I am a persistent learner with an interest in responsive design, semantic code, and user experience. My professional logistics experience demonstrates an ability to calmly lead teams across multiple disciplines, problem-solve, and communicate with necessary parties to meet business goals.
↓ Download Resumé PDFEducation
- Master of Architecture
- Kansas State University
- August '04-May '09
Skills and Sites
- Development
- HTML5
- CSS3
- JQuery
- SASS/LESS
- Javascript
- Design
- Photoshop
- Illustrator
- Responsive
- InDesign
- Client:
- Fred Bohn - Artist
- Type:
- Portfolio and Blog
- Foundation:
- HTML5 Boilerplate and Statamic CMS
- Created and executed design through all phases, from brand identity to code.
- Learned Statamic CMS backend to code a custom front-page slider that automatically showcases Fred's most recent artwork.
- Client:
- Beth - Artist
- Type:
- Portfolio
- Foundation:
- Bootstrap and Statamic CMS
- Designed with mobile in mind. The responsive gallery adapts to screen size to showcase Beth's art at home or on the go.
- Utilized the Bootstrap framework and LESS preprocessing for rapid prototyping.
- Programmed custom logic that allows Beth to easily upload new artwork that is automatically resized and cropped for thumbnails.
- Trained myself on a diverse range of web technologies including web/icon fonts, CSS3, and jQuery.
- Client:
- Myself
- Type:
- Personal Portfolio
- Foundation:
- HTML5 Boilerplate and SASS
- Built a responsive timeline of my portfolio using jQuery and CSS3 media queries.
- Created custom maps of my photography and videos using the Mapbox platfrom.
- Studied accessibility and semantic coding to create a more accessible site.
- Experimented with jQuery techniques to enhance the user experience
Work Experience
- Logistics Team Leader
- Target (Rowlett, TX)
- June '11 - Present
-
- Led a backroom team of 10 ranked in the top 10% in Backroom Accuracy in our group. (Out of 82 Target stores in North Texas and Oklahoma.)
- Led an instocks team of 3 ranked the in top 5% of replenishment metric goals in our group.
- Partnered with other store-wide teams to ensure replenishment and drive sales through guest satisfaction.
- Problem-solved and implemented new routines according to changing workload, goals, and staffing.
- Other Positions Held:
- Planogram Team Member (Rowlett, TX • April '10 - June '11)
- Instocks Team Member (Wichita, KS • September '09 - April '10)
- Backroom Team Member (Manhattan, KS • June '07 - September '09)
Get in Touch
I'm excited to hear from you! I am currently available for hire, so please contact me and I'd love to start a conversation on how I can help you. You can contact me via:
- Email:
-<EMAIL_ADDRESS>- Phone:
- (***) 867-5309
Thank you! I'll get back to you soon.


The geometry package provides classes useful for many physical simulations in the real 3D space, namely vectors and rotations.
Vector3D provides a simple vector type. One important feature is that instances of this class are guaranteed to be immutable, this greatly simplifies modelling dynamical systems with changing states: once a vector has been computed, a reference to it is known to preserve its state as long as the reference itself is preserved.
Numerous constructors are available to create vectors. In addition to the straightforward cartesian coordinates constructor, a constructor using azimuthal coordinates can build normalized vectors and linear constructors from one, two, three or four base vectors are also available. Constants have been defined for the most commons vectors (plus and minus canonical axes, null vector, and special vectors with infinite or NaN coordinates).
The generic vectorial space operations are available including dot product, normalization, orthogonal vector finding and angular separation computation which have a specific meaning in 3D. The 3D geometry specific cross product is of course also implemented.
Vector3DFormat is a specialized format for formatting output or parsing input with text representation of 3D vectors.
Rotation represents 3D rotations. Rotation instances are also immutable objects, as Vector3D instances.
Rotations can be represented by several different mathematical entities (matrices, axe and angle, Cardan or Euler angles, quaternions). This class presents a higher level abstraction, more user-oriented and hiding implementation details. Well, for the curious, we use quaternions for the internal representation. The user can build a rotation from any of these representations, and any of these representations can be retrieved from a Rotation instance (see the various constructors and getters). In addition, a rotation can also be built implicitely from a set of vectors and their image.
This implies that this class can be used to convert from one representation to another one. For example, converting a rotation matrix into a set of Cardan angles can be done using the following single line of code:
double[] angles = new Rotation(matrix, 1.0e-10).getAngles(RotationOrder.XYZ);
Focus is oriented on what a rotation does rather than on its underlying representation. Once it has been built, and regardless of its internal representation, a rotation is an operator which basically transforms three dimensional vectors into other three dimensional vectors. Depending on the application, the meaning of these vectors may vary as well as the semantics of the rotation.
For example in a spacecraft attitude simulation tool, users will often consider the vectors are fixed (say the Earth direction for example) and the rotation transforms the coordinates coordinates of this vector in inertial frame into the coordinates of the same vector in satellite frame. In this case, the rotation implicitly defines the relation between the two frames (we have fixed vectors and moving frame). Another example could be a telescope control application, where the rotation would transform the sighting direction at rest into the desired observing direction when the telescope is pointed towards an object of interest. In this case the rotation transforms the direction at rest in a topocentric frame into the sighting direction in the same topocentric frame (we have moving vectors in fixed frame). In many case, both approaches will be combined, in our telescope example, we will probably also need to transform the observing direction in the topocentric frame into the observing direction in inertial frame taking into account the observatory location and the Earth rotation.
These examples show that a rotation means what the user wants it to mean, so this class does not push the user towards one specific definition and hence does not provide methods like projectVectorIntoDestinationFrame or computeTransformedDirection. It provides simpler and more generic methods: applyTo(Vector3D) and applyInverseTo(Vector3D).
Since a rotation is basically a vectorial operator, several rotations can be composed together and the composite operation r = r1 o r2 (which means that for each vector u, r(u) = r1(r2(u))) is also a rotation. Hence we can consider that in addition to vectors, a rotation can be applied to other rotations as well (or to itself). With our previous notations, we would say we can apply r1 to r2 and the result we get is r = r1 o r2. For this purpose, the class provides the methods: applyTo(Rotation) and applyInverseTo(Rotation).


vignettes/analysis-summarization.Rmd
analysis-summarization.Rmd
For an introduction to the upbm package, please see the quick start vignette (vignette("upbm-quickstart")
). Here, we provide details on the summarization procedures implemented in the package for converting probe-level intensities to approximate 8-mer-level affinity estimates. In this vignette, we assume basic knowledge of the PBMExperiment class (see vignette("upbm-classes")
). The same example HOXC9 dataset from the upbmData package is used in this vignette to illustrate the various functions.
To perform inference, the upbm pipeline aggregates normalized probe-level intensities to the 8-mer level across samples. These procedures require replicate data. When replicate samples are not available for conditions of interest, simple K-mer summary statistics can be computed using the upbm::summarizeKmers
function. However, these simple summary statistics cannot be used with downstream inference procedures implemented in the package (see vignette("analysis-inference")
) and should be treated as exploratory statistics.
suppressPackageStartupMessages(library("upbm"))
Throughout, we will be using broom::tidy
to tidy data stored in PBMExperiment and SummarizedExperiment objects for interactive analysis and plotting (see vignette("other-tidydata")
). We load the dplyr package to help with interactive analysis.
suppressPackageStartupMessages(library("dplyr"))
suppressPackageStartupMessages(library("ggplot2"))
For details on the example HOXC9 dataset, see the quick start vignette in this package or the upbmData package vignette. Here, we will use both Alexa488 and Cy3 scans.
Here, we again use just single PMT gain scan for the Alexa488 scans.
We also load the reference Cy3 dataset.
data(refcy3_8x60k_v1, package = "upbmAux")
We will perform the earlier steps of pre-processing using the upbm::pmbPreprocess
wrapper.
alexa_subset <- upbmPreprocess(pe = alexa_subset,
cy3pe = hoxc9cy3,
cy3refpe = refcy3_8x60k_v1,
verbose = FALSE)
The first step of summarization is to aggregate across replicate samples in the dataset. This is performed using the upbm::probeFit
function. Given a set of samples, the function returned cross-replicate estimate probe-level affinity summaries as well as variance and degrees of freedom estimates.
As described in the quick start vignette, we must specify the column in the colData of the PBMExperiment containing replicate information. In our example dataset, this information in stored in the "condition"
column.
table(colData(alexa_subset)$condition)
##
## HOXC9-K195R HOXC9-R193K HOXC9-R222W HOXC9-REF
## 2 2 3 3
For each allelic variants, we only have 2 or 3 replicates. In PBM experiments, we often have access to only a few replicates of each condition. To obtain cross-replicate affinity and variance estimates, the upbm::probeFit
internally calls limma, a popular package for the analysis of microarray data with features for handling analyses with low numbers of samples (Ritchie et al. 2015).
alexa_pfit <- probeFit(alexa_subset, stratify = "condition")
alexa_pfit
## class: PBMExperiment
## dim: 41944 4
## metadata(0):
## assays(3): beta sd df
## rownames: NULL
## rowData names(4): Column Row probeID Sequence
## colnames(4): HOXC9-K195R HOXC9-R193K HOXC9-R222W HOXC9-REF
## colData names(0):
## probeCols(4): Column Row probeID Sequence
## probeFilter names(0):
## probeTrim: 1 36
The returned PBMExperiment now only includes one column for each condition (HOXC9-K195R
, HOXC9-R193K
, HOXC0-R222W
, HOXC9-REF
). The cross-replicate summarized probe intensities are included in the beta
assay.
## # A tibble: 167,776 x 7
## Column Row probeID Sequence cname beta sd
## <int> <int> <chr> <chr> <chr> <dbl> <dbl>
## 1 6 1 dBr_14334_J… GGTGTGAGTCCATTTCGTCAAACC… HOXC9-K… 11.6 0.482
## 2 7 1 dBr_06208_J… CAGTCTAAGTTTTCGGATTACCAT… HOXC9-K… 12.7 0.413
## 3 8 1 dBr_39317_J… CTTTTTAAAGACCTAGGAATCATT… HOXC9-K… 12.7 0.339
## 4 9 1 dBr_06987_J… CAGCTACGGAAGAGTAAAGGTTGT… HOXC9-K… 10.1 0.303
## 5 10 1 dBr_05074_J… GCTTCGAACGTGGGCGATGGAACA… HOXC9-K… 10.0 0.285
## 6 15 1 dBr_16182_J… CGCCCGTGGTAACAGTTACGAAAA… HOXC9-K… 12.7 0.485
## 7 23 1 dBr_20062_J… TTAGCCCGTTGTATGAGCAACTAT… HOXC9-K… 11.4 0.351
## 8 24 1 dBr_25542_J… TGCACAAGCGATCGAGCTCCTGTG… HOXC9-K… 10.5 0.369
## 9 26 1 dBr_40621_J… GGATGCCTCTTCTTTTCCGGGTCA… HOXC9-K… 10.7 0.434
## 10 27 1 dBr_21815_J… GTCAGAACCTCGCAAGTGGCACTT… HOXC9-K… 10.5 0.403
## # … with 167,766 more rows
While raw probe intensities ranged from 0 to 2^16, the cross-sample summaries are computed after log2 transforming intensities. As a result, the beta
values are mostly bounded between 0 and 16. The log2 transformation is performed with a pseudocount of 1 added to probe intensities to prevent NA
s for zero intensity probes. This can be changed by modifying the offset=
parameter in the call.
We can plot the distribution of beta
estimates across conditions.
ggplot(pfit_dat, aes(x = beta, color = cname)) +
geom_density() +
scale_color_brewer("condition", palette = "Set1") +
theme_bw() +
ggtitle("HOXC9 cross-replicate summarized probe intensities")
We see that most alleles have similar distributions with the exception of the R222W variant.
Next, we take the cross-replicate aggregated probe intensities and further aggregate them to the 8-mer level using the upbm::kmerFit
function. The function takes the output from upbm::probeFit
above along with a list of k-mers, usually all 8-mers, as the primary input. Mathematically, this is accomplished by framing the analysis as a meta-analysis across probes for each K-mer. K-mer-level estimates are computed by pooling the probe-level estimates for all probes containing the K-mer using the two-step DerSimonian and Laird estimator (DerSimonian and Kacker 2007). Additional steps are also performed to adjust for position bias of K-mers along the probe sequence and to filter out outlier probes from each K-mer probe set. More details on this procedure can be found in the forthcoming manuscript describing the method.
To generate the full set of 8-mers, the package includes a helper function, upbm::uniqueKmers
. The function can be used to generate the complete set of K-mers of a specified length, unique to reverse complementation. We demonstrate this function by returning all unique 3-mers.
uniqueKmers(3)
## [1] "AAA" "AAC" "AAG" "AAT" "ACA" "ACC" "ACG" "ACT" "AGA" "AGC" "AGG"
## [12] "ATA" "ATC" "ATG" "CAA" "CAC" "CAG" "CCA" "CCC" "CCG" "CGA" "CGC"
## [23] "CTA" "CTC" "GAA" "GAC" "GCA" "GCC" "GGA" "GTA" "TAA" "TCA"
As stated in the quick start, the function additionally computes statistics needed for downstream differential testing. More specifically, unless contrasts = FALSE
is specified, the covariance between the baseline condition (column) and all other conditions is estimated during this step.
By default, if a single column is found containing the REF
suffix, this will be used as the baseline condition. If no column includes the REF
suffix or a different condition should be used as the baseline condition for computing contrasts, this should be specified to the baseline=
parameter. In this analysis, we use the standard HOXC9-REF
(wild type) allele as our baseline condition.
alexa_kfit <- kmerFit(alexa_pfit, kmers = uniqueKmers(8L),
baseline = "HOXC9-REF")
alexa_kfit
## class: SummarizedExperiment
## dim: 32896 4
## metadata(1): baseline
## assays(5): affinityEstimate affinityVariance contrastDifference
## contrastAverage contrastVariance
## rownames: NULL
## rowData names(1): seq
## colnames(4): HOXC9-K195R HOXC9-R193K HOXC9-R222W HOXC9-REF
## colData names(0):
The returned PBMExperiment includes the same number of columns corresponding to the four conditions. The number of rows is equal to the number of K-mers specified to kmers=
above.
length(uniqueKmers(8L))
## [1] 32896
For each condition, an 8-mer affinityEstimate
and affinityVariance
is computed. For all conditions other than the baseline, contrastDifference
(baseline - condition
), contrastAverage
((baseline + condition)/2
) and contrastVariance
(var(baseline - condition)
) values are also computed.
kfit_dat <- broom::tidy(alexa_kfit, c("affinityEstimate", "affinityVariance",
"contrastDifference", "contrastAverage",
"contrastVariance"))
kfit_dat
## # A tibble: 131,584 x 7
## seq cname affinityEstimate affinityVariance contrastDiffere…
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 AAAA… HOXC… 11.8 0.0146 0.201
## 2 AAAA… HOXC… 11.7 0.0156 0.111
## 3 AAAA… HOXC… 11.5 0.0237 0.140
## 4 AAAA… HOXC… 12.1 0.0225 0.275
## 5 AAAA… HOXC… 11.7 0.0367 0.108
## 6 AAAA… HOXC… 11.5 0.0222 0.0517
## 7 AAAA… HOXC… 11.8 0.0239 0.00936
## 8 AAAA… HOXC… 11.4 0.0179 0.173
## 9 AAAA… HOXC… 11.7 0.0308 0.0942
## 10 AAAA… HOXC… 11.3 0.0234 0.0948
## # … with 131,574 more rows, and 2 more variables: contrastAverage <dbl>,
## # contrastVariance <dbl>
All the values of the contrast
columns are NA
for the HOXC9-REF
condition.
kfit_dat %>%
dplyr::select(cname, starts_with("contrast")) %>%
dplyr::group_by(cname) %>%
dplyr::summarize_if(is.numeric, ~mean(is.na(.)))
## # A tibble: 4 x 4
## cname contrastDifference contrastAverage contrastVariance
## <chr> <dbl> <dbl> <dbl>
## 1 HOXC9-K195R 0 0 0
## 2 HOXC9-R193K 0 0 0
## 3 HOXC9-R222W 0 0 0
## 4 HOXC9-REF 1 1 1
We can plot the 8-mer affinity distributions across conditions.
ggplot(kfit_dat, aes(x = affinityEstimate, color = cname)) +
geom_density() +
scale_color_brewer("condition", palette = "Set1") +
theme_bw() +
ggtitle("HOXC9 cross-replicate summarized 8-mer affinities")
Again, affinities appear similar for all alleles with the exception of the R222W variant.
We can also create MA plots using the contrastDifference
and contrastAverage
columns to compare each allelic variant against the baseline wild type condition. When generating this plot, we need to remember to filter out the NA
s corresponding to the baseline condition’s values in the table.
kfit_dat %>%
dplyr::filter(!is.na(contrastDifference)) %>%
ggplot(aes(x = contrastAverage, y = contrastDifference)) +
geom_point(alpha = 1/5) +
facet_grid(. ~ cname) +
theme_bw() +
ggtitle("HOXC9 8-mer affinity MA plot")
DerSimonian, Rebecca, and Raghu Kacker. 2007. “Random-Effects Model for Meta-Analysis of Clinical Trials: An Update.” Contemporary Clinical Trials 28 (2): 105–14.
Ritchie, Matthew E, Belinda Phipson, Di Wu, Yifang Hu, Charity W Law, Wei Shi, and Gordon K Smyth. 2015. “Limma Powers Differential Expression Analyses for Rna-Sequencing and Microarray Studies.” Nucleic Acids Research 43 (7): e47–e47.


What's New
Version: v3.3.0
- Support iitc:// scheme, query parameters will be used to load intel view. Example
iitc://?ll=0.0,0.0&z=17
- Fix minor bugs.
Version: v3.2.0
- Allow managing scripts via File.app
- Embedded IITC-CE v0.30.1
- Embedded IITC-CE test version
- Fix minor bugs.
Version: v3.1.1
- Set default user agent.
- Update share url to intel.ingress.com
- Fixed minor bugs.
Version: v3.1.0
- Support share to Gaode Map and Baidu Map
- Support dark mode
- Bundled new version of IITC
- Fixed minor bugs.
Version: v3.0.6
- Fixed bug keep loading old iitc script
- Fixed bug prevent showing layers in iitc-ce
- Fixed minor bugs.
Version: v3.0.5
- Fixed bug prevent loading new iitc script
- Fixed minor bugs.
Version: v3.0.4
- Support IITC-CE
- Fixed minor bugs.
Version: v3.0.3
Version: v3.0.2
- Add a label indicating if a script is added by user.
- Fixed other minor bugs.
Version: v3.0.1
- Allow sharing portals to Google Map and copying portal links.
- Allow exporting draw-tools's data.
- Fixed other minor bugs.
Version: v3.0.0
Webview Console
A console is added for development and debugging plugins.
Script Viewer
A script viewer with code highlighting is added. Just select a downloaded script to check its content.
Search Bar in Plugin list
Now you can search plugins by its name, category, and descriptions. Just scroll down the plugin list if it
doesn't appear.
Custom UserAgent
Allow customizing UserAgent of the browser. You can either choose a pre-defined UserAgent or use your own one.
Misc
- Formatted Codes
- Fixed the bug that Alert Panel can't be opened.
- Fixed bugs in the detection of "Out of China".
- Buttons would not overlap with each other.
- Updated UI.
- Fixed other minor bugs.


Use Transport Layer Security (TLS) protocol or Virtual Private Network (VPN) instead of unencrypted connections for any application that uses AWS. TLS is good for most web service applications. VPN is only used for internal applications, while TLS is usually appropriate for cloud applications as well as internal applications.
Protect web service connections using TLS to prevent man-in-the-middle attacks. In the AWS shared security model you are responsible for redirection to third party merchants, especially with regard to compliance with PCI-DSS.
Implemented properly, TLS used with web applications secures HTTP communication over TLS, or HTTPS between the client and cloud services. The result is protection for online accounts, authentication credentials, and cookies.
Encrypted connections with TLS or VPN must always be used with web applications in order to protect sensitive information as it is transmitted over the network and is susceptible to theft and abuse.
To use TLS to protect network connections follow these general steps:
Get valid certificates. Purchase valid certificates for the application.
Use valid certificates. Configure the server in the cloud to accept TLS connections. Do not permit unencrypted connections to the server.
Define communication security requirements. Define which network communications need to be encrypted. All transmissions that include sensitive data, including authentication credentials and session tokens must be encrypted. In some cases, it might be practical to encrypt all network connections.
Identify communications performed by the application. Review the application design to confirm all network communications performed by the application comply with security requirements.
Find all code that connects to the cloud. Identify code that needs to send encrypted data over the network.
Add code that uses TLS. There are multiple methods for using TLS, depending on application requirements. Use the method that is most appropriate for your application.


Mourinho meets Spurs squad as new manager gears up for first game
The Portuguese has signed a three-and-a-half-year contract.
Jose Mourinho was at Tottenham’s training ground to meet his new squad on Wednesday afternoon following his appointment as Mauricio Pochettino’s replacement.
The former Chelsea and Manchester United boss signed a three-and-a-half-year contract less than 12 hours after Pochettino was sacked.
The 56-year-old, who had been out of work since leaving United last December, was at Hotspur Way meeting the club’s players and staff.
He was due to take training in the afternoon ahead of his unveiling press conference at 2pm on Thursday and first game in charge at West Ham on Saturday lunchtime.
Mourinho revealed he was relishing the chance to work with the players, who have under-achieved so far this season.
The Portuguese said: “I am excited to be joining a club with such a great heritage and such passionate supporters.
“The quality in both the squad and the academy excites me. Working with these players is what has attracted me.”
Mourinho moved quickly to appoint his backroom staff, with Joao Sacramento and Nuno Santos joining from Lille as assistant manager and goalkeeping coach, respectively.
Tottenham also confirmed the arrival of Carlos Lalin as fitness coach, Ricardo Formosinho as tactical analyst and Giovanni Cerra as technical analyst.
All three worked under Mourinho at Old Trafford.
Despite his troubles in the latter stages of his tenure at Old Trafford, Mourinho remains one of the most sought-after managers in the game.
His success at delivering trophies is not in question, having won three Premier League titles, two Champions Leagues and a host of domestic cups, and that was a clear attraction for Spurs chairman Daniel Levy.
Levy previously tried appointing Mourinho in 2007 when he left Chelsea for the first time and has admired him since.
Levy said: “In Jose we have one of the most successful managers in football.
“He has a wealth of experience, can inspire teams and is a great tactician. He has won honours at every club he has coached. We believe he will bring energy and belief to the dressing room.”
A statement from the club described Mourinho as “one of the world’s most accomplished managers” who “is renowned for his tactical prowess”.
It added: “He has won a domestic title in a record four different countries (Portugal, England, Italy and Spain) and is one of only three managers to have won the UEFA Champions League twice with two clubs, FC Porto in 2004 and Inter Milan in 2010.”
Pochettino was dismissed after five-and-a-half years in charge, less than six months after he took Spurs to the Champions League final, with the club lying 14th in the Premier League table after the opening 12 matches.
Mourinho, who has most recently been working as a pundit for Sky Sports, had turned down a number of opportunities to coach abroad since leaving United, including with clubs in China, Spain and Portugal.
His first match in charge will be the London derby away to West Ham on Saturday and they are due to play United at Old Trafford on December 4.
Spurs also play Champions League games at home to Olympiakos and away at Bayern Munich before hosting their new manager’s former club Chelsea on December 22.
Mourinho’s side host Liverpool on January 11 and Manchester City on February 1 before making the trip to Stamford Bridge on February 22.


Ridiculously simple, highly opinionated Logging library for .NET.
.NET Framework 4.5.
Logger is a Nuget package.
PM> Install-Package FeatherAndScale.Logger
Instantiate a new LoggerRegistry and assign to a static property, or inject into your classes using IoC.
csharp
public static ILoggerRegistry LoggerRegistry = new LoggerRegistry();
Get an instance of ILogger by calling the Logger() method of LoggerRegistry. The Logger() method takes a key as string, which you should generate using the MakeKey() helper method provided. MakeKey() accepts a param array of Ids that will be concatenated into a key; something like "aaa.bbb.ccc".
csharp
private ILogger _log = LoggerRegistry.Logger(LoggerRegistry.MakeKey("MyProject", "MyClass", "SomeId"));
If an instance of ILogger with that key has been instantiated before (within the lifetime of the LoggerRegistry) it will be returned, otherwise a new instance will be created.
Now you can use the instance of ILogger to log messages in your code, e.g.
csharp
foreach (var image in images)
{
_log.Message("Importing image {0}", new object[] { image });
// ... etc
}
There are three methods (plus overloads) that support three log levels:
All accept a message string, which may be a format string. If you want to provide args for the format string, put them in an object array (param arrays are not supported by these methods).
Error() will also take just an Exception, or an Exception and a message. The exception's stack trace will be written to the log in full.
Each method also accepts arguments decorated with Caller Member Attributes These arguments will be set by the compiler, you do not need to set them explicitly.
The log messages are formatted and written to the System.Diagnostics.Trace.WriteLine() method. You may configure where and how Trace information is logged by configuring TraceListener's. Otherwise the default TraceListener will be used. This usually means you will see the log output in your Output window in Visual Studio, or in your Test runner output and/or logs.
Sample output: ``` [TRACE] Example.Key - TraceLoggerTests.MessageTest(),18 This is a message vstest.executionengine.x86.exe Information: 0 : [INFO] Example.Key - TraceLoggerTests.InfoTest(),30 This is an Info message vstest.executionengine.x86.exe Error: 0 : [ERROR] Example.Key - TraceLoggerTests.ErrorTestThrowException(),91 This is a thrown exception's message. =======================================================(inner most exception)===
Thread ID : 10
Message: "This is a thrown exception's message."
Stack Trace:
```