This is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from experimental Redis server branches.
Install with:
npm install redis
Pieter Noordhuis has provided a binding to the official hiredis
C library, which is non-blocking and fast. To use hiredis
, do:
npm install hiredis redis
If hiredis
is installed, node_redis
will use it by default. Otherwise, a pure JavaScript parser will be used.
If you use hiredis
, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can
happen between node and native code modules after a node upgrade.
Simple example, included as examples/simple.js
:
var redis = require("redis"),
client = redis.createClient();
// if you'd like to select database 3, instead of 0 (default), call
// client.select(3, function() { /* ... */ });
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});
This will display:
mjr:~/work/node_redis (master)$ node example.js
Reply: OK
Reply: 0
Reply: 0
2 replies:
0: hashtest 1
1: hashtest 2
mjr:~/work/node_redis (master)$
Here are typical results of multi_bench.js
which is similar to redis-benchmark
from the Redis distribution.
It uses 50 concurrent connections with no pipelining.
JavaScript parser:
PING: 20000 ops 42283.30 ops/sec 0/5/1.182
SET: 20000 ops 32948.93 ops/sec 1/7/1.515
GET: 20000 ops 28694.40 ops/sec 0/9/1.740
INCR: 20000 ops 39370.08 ops/sec 0/8/1.269
LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370
LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048
LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072
hiredis parser:
PING: 20000 ops 46189.38 ops/sec 1/4/1.082
SET: 20000 ops 41237.11 ops/sec 0/6/1.210
GET: 20000 ops 39682.54 ops/sec 1/7/1.257
INCR: 20000 ops 40080.16 ops/sec 0/8/1.242
LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212
LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363
LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287
The performance of node_redis
improves dramatically with pipelining, which happens automatically in most normal programs.
Each Redis command is exposed as a function on the client
object.
All functions take either an args
Array plus optional callback
Function or
a variable number of individual arguments followed by an optional callback.
Here is an example of passing an array of arguments and a callback:
client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {});
Here is that same call in the second style:
client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {});
Note that in either form the callback
is optional:
client.set("some key", "some val");
client.set(["some other key", "some val"]);
If the key is missing, reply will be null (probably):
client.get("missingkey", function(err, reply) {
// reply is null when the key is missing
console.log(reply);
});
For a list of Redis commands, see Redis Command Reference
The commands can be specified in uppercase or lowercase for convenience. client.get()
is the same as client.GET()
.
Minimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings,
integer replies return JavaScript Numbers, "bulk" replies return node Buffers, and "multi bulk" replies return a
JavaScript Array of node Buffers. HGETALL
returns an Object with Buffers keyed by the hash keys.
client
will emit some events about the state of the connection to the Redis server.
client
will emit ready
a connection is established to the Redis server and the server reports
that it is ready to receive commands. Commands issued before the ready
event are queued,
then replayed just before this event is emitted.
client
will emit connect
at the same time as it emits ready
unless client.options.no_ready_check
is set. If this options is set, connect
will be emitted when the stream is connected, and then
you are free to try to send commands.
client
will emit error
when encountering an error connecting to the Redis server.
Note that "error" is a special event type in node. If there are no listeners for an "error" event, node will exit. This is usually what you want, but it can lead to some cryptic error messages like this:
mjr:~/work/node_redis (master)$ node example.js
node.js:50
throw e;
^
Error: ECONNREFUSED, Connection refused
at IOWatcher.callback (net:870:22)
at node.js:607:9
Not very useful in diagnosing the problem, but if your program isn't ready to handle this, it is probably the right thing to just exit.
client
will also emit error
if an exception is thrown inside of node_redis
for whatever reason.
It would be nice to distinguish these two cases.
client
will emit end
when an established Redis server connection has closed.
client
will emit drain
when the TCP connection to the Redis server has been buffering, but is now
writable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now,
you need to check client.command_queue.length
to decide when to reduce your send rate. Then you can
resume sending when you get drain
.
client
will emit idle
when there are no outstanding commands that are awaiting a response.
Create a new client connection. port
defaults to 6379
and host
defaults
to <IP_ADDRESS>
. If you have redis-server
running on the same computer as node, then the defaults for
port and host are probably fine. options
in an object with the following possible properties:
parser
: which Redis protocol reply parser to use. Defaults to hiredis
if that module is installed.
This may also be set to javascript
.return_buffers
: defaults to false
. If set to true
, then all replies will be sent to callbacks as node Buffer
objects instead of JavaScript Strings.detect_buffers
: default to false
. If set to true
, then replies will be sent to callbacks as node Buffer objects
if any of the input arguments to the original command were Buffer objects.
This option lets you switch between Buffers and Strings on a per-command basis, whereas return_buffers
applies to
every command on a client.socket_nodelay
: defaults to true
. Whether to call setNoDelay() on the TCP stream, which disables the
Nagle algorithm on the underlying socket. Setting this option to false
can result in additional throughput at the
cost of more latency. Most applications will want this set to true
.no_ready_check
: defaults to false
. When a connection is established to the Redis server, the server might still
be loading the database from disk. While loading, the server not respond to any commands. To work around this,
node_redis
has a "ready check" which sends the INFO
command to the server. The response from the INFO
command
indicates whether the server is ready for more commands. When ready, node_redis
emits a ready
event.
Setting no_ready_check
to true
will inhibit this check.enable_offline_queue
: defaults to true
. By default, if there is no active
connection to the redis server, commands are added to a queue and are executed
once the connection has been established. Setting enable_offline_queue
to
false
will disable this feature and the callback will be execute immediately
with an error, or an error will be thrown if no callback is specified. var redis = require("redis"),
client = redis.createClient(null, null, {detect_buffers: true});
client.set("foo_rand000000000000", "OK");
// This will return a JavaScript String
client.get("foo_rand000000000000", function (err, reply) {
console.log(reply.toString()); // Will print `OK`
});
// This will return a Buffer since original key is specified as a Buffer
client.get(new Buffer("foo_rand000000000000"), function (err, reply) {
console.log(reply.toString()); // Will print `<Buffer 4f 4b>`
});
client.end();
createClient()
returns a RedisClient
object that is named client
in all of the examples here.
When connecting to Redis servers that require authentication, the AUTH
command must be sent as the
first command after connecting. This can be tricky to coordinate with reconnections, the ready check,
etc. To make this easier, client.auth()
stashes password
and will send it after each connection,
including reconnections. callback
is invoked only once, after the response to the very first
AUTH
command sent.
NOTE: Your call to client.auth()
should not be inside the ready handler. If
you are doing this wrong, client
will emit an error that looks
something like this Error: Ready check failed: ERR operation not permitted
.
Forcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed.
If you want to exit cleanly, call client.quit()
to send the QUIT
command after you have handled all replies.
This example closes the connection to the Redis server before the replies have been read. You probably don't want to do this:
var redis = require("redis"),
client = redis.createClient();
client.set("foo_rand000000000000", "some fantastic value");
client.get("foo_rand000000000000", function (err, reply) {
console.log(reply.toString());
});
client.end();
client.end()
is useful for timeout cases where something is stuck or taking too long and you want
to start over.
Most Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings. When dealing with hash values, there are a couple of useful exceptions to this.
The reply from an HGETALL command will be converted into a JavaScript Object by node_redis
. That way you can interact
with the responses using JavaScript syntax.
Example:
client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234");
client.hgetall("hosts", function (err, obj) {
console.dir(obj);
});
Output:
{ mjr: '1', another: '23', home: '1234' }
Multiple values in a hash can be set by supplying an object:
client.HMSET(key2, {
"0123456789": "abcdefghij", // NOTE: the key and value must both be strings
"some manner of key": "a type of value"
});
The properties and values of this Object will be set as keys and values in the Redis hash.
Multiple values may also be set by supplying a list:
client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value");
Here is a simple example of the API for publish / subscribe. This program opens two client connections, subscribes to a channel on one of them, and publishes to that channel on the other:
var redis = require("redis"),
client1 = redis.createClient(), client2 = redis.createClient(),
msg_count = 0;
client1.on("subscribe", function (channel, count) {
client2.publish("a nice channel", "I am sending a message.");
client2.publish("a nice channel", "I am sending a second message.");
client2.publish("a nice channel", "I am sending my last message.");
});
client1.on("message", function (channel, message) {
console.log("client1 channel " + channel + ": " + message);
msg_count += 1;
if (msg_count === 3) {
client1.unsubscribe();
client1.end();
client2.end();
}
});
client1.incr("did a thing");
client1.subscribe("a nice channel");
When a client issues a SUBSCRIBE
or PSUBSCRIBE
, that connection is put into "pub/sub" mode.
At that point, only commands that modify the subscription set are valid. When the subscription
set is empty, the connection is put back into regular mode.
If you need to send regular commands to Redis while in pub/sub mode, just open another connection.
If a client has subscriptions active, it may emit these events:
Client will emit message
for every message received that matches an active subscription.
Listeners are passed the channel name as channel
and the message Buffer as message
.
Client will emit pmessage
for every message received that matches an active subscription pattern.
Listeners are passed the original pattern used with PSUBSCRIBE
as pattern
, the sending channel
name as channel
, and the message Buffer as message
.
Client will emit subscribe
in response to a SUBSCRIBE
command. Listeners are passed the
channel name as channel
and the new count of subscriptions for this client as count
.
Client will emit psubscribe
in response to a PSUBSCRIBE
command. Listeners are passed the
original pattern as pattern
, and the new count of subscriptions for this client as count
.
Client will emit unsubscribe
in response to a UNSUBSCRIBE
command. Listeners are passed the
channel name as channel
and the new count of subscriptions for this client as count
. When
count
is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.
Client will emit punsubscribe
in response to a PUNSUBSCRIBE
command. Listeners are passed the
channel name as channel
and the new count of subscriptions for this client as count
. When
count
is 0, this client has left pub/sub mode and no more pub/sub events will be emitted.
MULTI
commands are queued up until an EXEC
is issued, and then all commands are run atomically by
Redis. The interface in node_redis
is to return an individual Multi
object by calling client.multi()
.
var redis = require("./index"),
client = redis.createClient(), set_size = 20;
client.sadd("bigset", "a member");
client.sadd("bigset", "another member");
while (set_size > 0) {
client.sadd("bigset", "member " + set_size);
set_size -= 1;
}
// multi chain with an individual callback
client.multi()
.scard("bigset")
.smembers("bigset")
.keys("*", function (err, replies) {
// NOTE: code in this callback is NOT atomic
// this only happens after the the .exec call finishes.
client.mget(replies, redis.print);
})
.dbsize()
.exec(function (err, replies) {
console.log("MULTI got " + replies.length + " replies");
replies.forEach(function (reply, index) {
console.log("Reply " + index + ": " + reply.toString());
});
});
client.multi()
is a constructor that returns a Multi
object. Multi
objects share all of the
same command methods as client
objects do. Commands are queued up inside the Multi
object
until Multi.exec()
is invoked.
You can either chain together MULTI
commands as in the above example, or you can queue individual
commands while still sending regular client command as in this example:
var redis = require("redis"),
client = redis.createClient(), multi;
// start a separate multi command queue
multi = client.multi();
multi.incr("incr thing", redis.print);
multi.incr("incr other thing", redis.print);
// runs immediately
client.mset("incr thing", 100, "incr other thing", 1, redis.print);
// drains multi queue and runs atomically
multi.exec(function (err, replies) {
console.log(replies); // 101, 2
});
// you can re-run the same transaction if you like
multi.exec(function (err, replies) {
console.log(replies); // 102, 3
client.quit();
});
In addition to adding commands to the MULTI
queue individually, you can also pass an array
of commands and arguments to the constructor:
var redis = require("redis"),
client = redis.createClient(), multi;
client.multi([
["mget", "multifoo", "multibar", redis.print],
["incr", "multifoo"],
["incr", "multibar"]
]).exec(function (err, replies) {
console.log(replies);
});
Redis supports the MONITOR
command, which lets you see all commands received by the Redis server
across all client connections, including from other client libraries and other computers.
After you send the MONITOR
command, no other commands are valid on that connection. node_redis
will emit a monitor
event for every new monitor message that comes across. The callback for the
monitor
event takes a timestamp from the Redis server and an array of command arguments.
Here is a simple example:
var client = require("redis").createClient(),
util = require("util");
client.monitor(function (err, res) {
console.log("Entering monitoring mode.");
});
client.on("monitor", function (time, args) {
console.log(time + ": " + util.inspect(args));
});
Some other things you might like to know about.
After the ready probe completes, the results from the INFO command are saved in the client.server_info
object.
The versions
key contains an array of the elements of the version string for easy comparison.
> client.server_info.redis_version
'2.3.0'
> client.server_info.versions
[ 2, 3, 0 ]
A handy callback function for displaying return values when testing. Example:
var redis = require("redis"),
client = redis.createClient();
client.on("connect", function () {
client.set("foo_rand000000000000", "some fantastic value", redis.print);
client.get("foo_rand000000000000", redis.print);
});
This will print:
Reply: OK
Reply: some fantastic value
Note that this program will not exit cleanly because the client is still connected.
Boolean to enable debug mode and protocol tracing.
var redis = require("redis"),
client = redis.createClient();
redis.debug_mode = true;
client.on("connect", function () {
client.set("foo_rand000000000000", "some fantastic value");
});
This will display:
mjr:~/work/node_redis (master)$ node ~/example.js
send command: *3
$3
SET
$20
foo_rand000000000000
$20
some fantastic value
on_data: +OK
send command
is data sent into Redis and on_data
is data received from Redis.
Used internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis
Wiki have been added to the client
object. However, if I missed any, or if new commands are introduced before
this library is updated, you can use send_command()
to send arbitrary commands to Redis.
All commands are sent as multi-bulk commands. args
can either be an Array of arguments, or omitted.
Boolean tracking the state of the connection to the Redis server.
The number of commands that have been sent to the Redis server but not yet replied to. You can use this to enforce some kind of maximum queue depth for commands while connected.
Don't mess with client.command_queue
though unless you really know what you are doing.
The number of commands that have been queued up for a future connection. You can use this to enforce some kind of maximum queue depth for pre-connection commands.
Current delay in milliseconds before a connection retry will be attempted. This starts at 250
.
Multiplier for future retry timeouts. This should be larger than 1 to add more time between retries. Defaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc.
This applies to anything that uses an optional [WITHSCORES]
or [LIMIT offset count]
in the redis.io/commands documentation.
Example:
var args = [ 'myzset', 1, 'one', 2, 'two', 3, 'three', 99, 'ninety-nine' ];
client.zadd(args, function (err, response) {
if (err) throw err;
console.log('added '+response+' items.');
// -Infinity and +Infinity also work
var args1 = [ 'myzset', '+inf', '-inf' ];
client.zrevrangebyscore(args1, function (err, response) {
if (err) throw err;
console.log('example1', response);
// write your code here
});
var max = 3, min = 1, offset = 1, count = 2;
var args2 = [ 'myzset', max, min, 'WITHSCORES', 'LIMIT', offset, count ];
client.zrevrangebyscore(args2, function (err, response) {
if (err) throw err;
console.log('example2', response);
// write your code here
});
});
Better tests for auth, disconnect/reconnect, and all combinations thereof.
Stream large set/get values into and out of Redis. Otherwise the entire value must be in node's memory.
Performance can be better for very large values.
I think there are more performance improvements left in there for smaller values, especially for large lists of small values.
Some people have have added features and fixed bugs in node_redis
other than me.
Ordered by date of first contribution. Auto-generated on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT).
mranney
tim-smart
visionmedia
technoweenie
orionz
aivopaas
hanksims
paulcarey
pietern
nithesh
andy2ray
unknowdna
redsquirrel
dvv
umairsiddique
lp
markdaws
bobrik
felixge
undefined
maks
orls
zzak
TEHEK
isaacs
DTrejo
bnoguchi
bluesmoon
marcuswestin2
jed
jdavisp3
trobrock
shankar0306
ignacio
Thanks.
Copyright (c) 2010 Matthew Ranney, http://ranney.com/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


"TOB", THE LAND OF a district on the east of Jodan, about 13 miles south-east of the Sea of Galilee, to which Jephthah fled from his brethren(Judges 11:3, 5). It was on the northern boundary of Perea, between Syria and the land of Ammon (2 Samuel 10:6, 8). Its modern name is Taiyibeh.
"TOB", THE LAND OF a district on the east of Jodan, about 13 miles south-east of the Sea of Galilee, to which Jephthah fled from his brethren(Judges 11:3, 5). It was on the northern boundary of Perea, between Syria and the land of Ammon (2 Samuel 10:6, 8). Its modern name is Taiyibeh.


eTicket
info_outline
Mobile eTicket - available on single and return fares
Smart Card
info_outline
Mobile eTicket - available on single and return fares
Collect From Station
info_outline
Mobile eTicket - available on single and return fares
{{moreEticket}}


You must import the plotting libraries and get some historical data to create histograms.
In this example, you create a histogram that shows the distribution of the daily percent returns of the bank sector ETF. In addition to the bins in the histogram, you overlay a normal distribution curve for comparison. Follow these steps to create the histogram:
Symbol
.symbol = symbols[0]
history
DataFrame with the symbol
and then select the close column.close_prices = history.loc[symbol]['close']
pct_change
method and then call the dropna
method.daily_returns = close_prices.pct_change().dropna()
histogram
method with the daily_returns
, the density argument enabled, and a number of bins.hist, edges = np.histogram(daily_returns, density=True, bins=20)
This method call returns the following objects:
hist
: The value of the probability density function at each bin, normalized such that the integral over the range is 1.edges
: The x-axis value of the edges of each bin.figure
method with a title and axis labels.plot = figure(title=f"{symbol} Daily Return Distribution", x_axis_label='Return', y_axis_label='Frequency')
quad
method with the coordinates of the bins and some design settings.plot.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], fill_color="navy", line_color="white", alpha=0.5)
This method call plots the histogram bins.
mean
and std
methods.mean = daily_returns.mean() std = daily_returns.std()
linspace
method with the lower limit, upper limit, and number data points for the x-axis of the normal distribution curve.x = np.linspace(-3*std, 3*std, 1000)
pdf = 1/(std * np.sqrt(2*np.pi)) * np.exp(-(x-mean)**2 / (2*std**2))
line
method with the data and style of the normal distribution PDF curve.plot.line(x, pdf, color="red", line_width=4, alpha=0.7, legend_label="Normal Distribution PDF")
This method call plots the normal distribution PDF curve.
show
to show the plot.show(plot)
The Jupyter Notebook displays the histogram.


Hot Restaurant
We only have 5 tables!
View Tables
Current Reservations
Name
Phone Number
Email
Unique ID
Submit
API Table Link
|
API Wait List


Predecessor circuses
Hachaliah Bailey appears to have established the first circus in the United States after he purchased an African Elephant, which he named "Old Bet", around . With it as his star attraction he formed the Bailey Circus, which also included a trained dog, several pigs, a horse and four wagons. This was the impetus for what in time evolved into the Bailey component of what became the Ringling Bros. and Barnum & Bailey Circus.
P. T. Barnum, who as a boy had worked as a ticket seller for Hachaliah Bailey's show, had run the Barnum's American Museum from New York City since from the former Scudder's American Museum building. Besides building up the existing exhibits, Barnum brought in animals to add zoo-like elements, and a freak show. During this time, Barnum took the Museum on road tours, named "P.T. Barnum's Grand Traveling American Museum". The Museum burned down in . Though Barnum attempted to re-establish the Museum at another location in the city, it too burned down in , and Barnum opted to retire from the museum business.
In , Dan Castello and William Cameron Coup persuaded Barnum to come out of retirement as to
lend his name, know-how and financial backing to the circus they had already created in Delavan, Wisconsin. The combined show
was named "P.T. Barnum's Great Traveling Museum, Menagerie, Caravan, and Hippodrome". As described by Barnum, Castello and
Coup had a show that was truly immense, and combined all the elements of museum, menagerie, variety performance, concert
hall, and circus
, and considered it to potentially be the Greatest Show on Earth,
which subsequently became part of
the circus's name.
Independently of Castello and Coup, James Anthony Bailey had teamed up with James E. Cooper to create the Cooper and Bailey Circus in the 1860s. The Cooper and Bailey Circus became the chief competitor to Barnum's circus. As Bailey's circus was outperforming his, Barnum sought to merge the circuses. The two groups agreed to combine their shows on . Initially named "P.T. Barnum's Greatest Show On Earth, And The Great London Circus, Sanger's Royal British Menagerie and The Grand International Allied Shows United", it was eventually shortened to "Barnum and Bailey's Circus". Bailey was instrumental in acquiring Jumbo, advertised as the world's largest elephant, for the show. Barnum died in and Bailey then purchased the circus from his widow. Bailey continued touring the eastern United States until he took his circus to Europe. That tour started on , and lasted until .
Separately, in , five of the seven Ringling brothers had started a small circus in Baraboo, Wisconsin. This was about the same time that Barnum & Bailey were at the peak of their popularity. Similar to dozens of small circuses that toured the Midwest and the Northeast at the time, the brothers moved their circus from town to town in small animal-drawn caravans. Their circus rapidly grew and they were soon able to move their circus by train, which allowed them to have the largest traveling amusement enterprise of that time. Bailey's European tour gave the Ringling brothers an opportunity to move their show from the Midwest to the eastern seaboard. Faced with the new competition, Bailey took his show west of the Rocky Mountains for the first time in . He died the next year, and the circus was sold to the Ringling Brothers.


---
layout: post
title: Keeping files safe and available with Unison and BackupPC
categories:
- Linux
- Opensource
tags: []
status: publish
type: post
published: true
comments: true
meta:
_edit_last: '1'
---
Over the years I have been experimenting with countless methods for keeping my files available to me wherever I am. Being primarily a linux user, I have a great opportunity to experiment given some of the clever tools that have emerged. I have been hard-pressed to find a solution to meet my exact requirements but I have actually settled upon a solution that has withstood the test of time and I want to share it.
I will mention that simple remote login does not meet my requirements for serious work. It does however supplement my setup as an alternative access method if I don't trust the machine I am on. If you are looking for a remote access tool, I highly recommend freenx.
One other requirement I should mention is that I need to keep my stuff backed up. I need to make sure I don't lose anything that I decide I need to keep. Because of the iterative nature of the stuff I work on, having the opportunity to roll back to a previous backup is a huge bonus and has proven extremely valuable in the past.
I realize that a combination of various web-services offered for free such as Evernote, Google Docs, etc. can probably meet most people's needs. I do see some issues with current web-services that I prefer not to have to deal with:
- Ownership - Once you have uploaded something, can you be sure It belongs to you?
- Availability - Many web-services up-times are awesome, but even the mighty Google goes down from time to time
- Backups - Do you know if your stuff is actually being backed up? Even if it is, do you have access to the backups?
- Instability - Many of the cool new stuff that comes out has the potential to die after their initial popularity has died off.
By hosting my own private solution, I at least know that If the internet in my neighborhood goes down I can go home and a copy of my backups and all my files are available on my home server.
My solution consists of the following components:
Unison & SSH
Unison is a file synchronization tool which is designed for synchronization between two machines. It allows you to synchronize folders on separate machines over a network (using SSH) = and it even runs on the big three: Windows, Mac OS, and Linux. This means that you can use it for all your machines. If you only have two machines then this is a dead simple setup. More than two machines, is basically the same just more pairs. In my setup:
- My laptop has my entire home directory (minus some annoying configuration stuff)
- My work machine has only certain files and folders within my home directory which are related to work
- My home server has the entire thing
- And if I need to access files from an untrusted machine, ssh or freenx lets me get at them quickly
Each machine has unison installed but only the ones that can initiate a synchronization need their own config file. Here is and example config file (.unison/default.prf)
{% highlight sh %}
root = local_directory // I use my home directory here
root = ssh://remote_username@remote_host:port/remote_directory
//Explicit commands to backup specific things
path = folder_to_include //Relative to local_directory
//You can also do a "Sync everything Except" approach as below
ignore = Path {.*} // Ignore config files,
ignore = Path {bin} // Ignore my binary files
{% endhighlight %}
The only issue I have encountered is that in order for everything to work, you have to run a sync now and then. Occasional sync's are completely habit now though so it's not really a problem. If you do forget to sync, you can always log in to the machine and do a sync via ssh because unison has a commanline version built in!
BackupPC
I encountered BackupPC a few years ago when I was doing admin work and was looking for a good, cheap backup solution for one of our clients. I tested the software int he office (along with many others) and I can honestly say it is impressive. Whether you are a company or an individual, this thing rocks. It can be a bit of a challenge to get working perfectly, but once it does it works very well. You could definitely get a good setup using just a cronjob that does a clever copy too if you wanted to research that.
Anyway, BackupPC does tons of stuff but the feature I am interested in, is that it does very clever incremental backups that take up very little space depending on how many files you modify between backups.
In my configuration, BackupPC will do nightly incremental backups up my home directory located on the home server to an external drive.
Note: BackupPC sometimes requires some trickery if you are storing archives on a separate volume than the one it is running on. (hint, mount the external volume to the default location as opposed to changing the location in the configuration)
If you have some questions on configurations, leave a comment or fire me an email. Also here is my uber-simple setup in diagram form:
I am also considering an attempt to port Unison to android so I can access and backup stuff on my phone!


wolk package¶
This module provides connection to WolkAbout IoT Platform.
To start publishing data to the platform create an instance of Device class with credentials obtained from the platform and pass it to an instance of WolkConnect class.
For more information about module features visit: https://github.com/Wolkabout/WolkConnect-Python/tree/master/examples/full_feature_set
Throughout this package usage of enumerations and ABCs are omitted due to a constraint caused by the necessity to have a single base (wolkcore) for two versions of Python: CPython and Zerynth.
Connection Management¶
wolk.WolkConnect module¶
WolkConnect Module.
-
class
wolk.WolkConnect.
WolkConnect
(device, actuation_handler=None, actuator_status_provider=None, configuration_handler=None, configuration_provider=None, outbound_message_queue=<wolk.OSOutboundMessageQueue.OSOutboundMessageQueue object>, keep_alive_enabled=True, firmware_handler=None, host=None, port=None, ca_cert=None)[source]¶ Bases:
object
Exchange data with WolkAbout IoT Platform.
Variables: - connectivity_service (wolk.OSMQTTConnectivityService.OSMQTTConnectivityService) – Means of sending/receiving data
- deserializer (wolk.OSInboundMessageDeserializer.OSInboundMessageDeserializer) – Deserializer of inbound messages
- device (wolk.Device.Device) – Contains device key and password, and actuator references
- firmware_update (wolk.OSFirmwareUpdate.OSFirmwareUpdate) – Firmware update handler
- keep_alive_service (wolk.OSKeepAliveService.OSKeepAliveService) – Keep device connected when not sending data
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- outbound_message_factory (wolk.OSOutboundMessageFactory.OSOutboundMessageFactory) – Create messages to send
- outbound_message_queue (wolk.wolkcore.OutboundMessageQueue.OutboundMessageQueue) – Store data before sending
Provide communication with WolkAbout IoT Platform.
Parameters: - device (wolk.Device.Device) – Contains key and password, and actuator references
- actuation_handler (wolk.ActuationHandler.ActuationHandler or None) – Handle actuation commands
- actuator_status_provider (wolk.ActuatorStatusProvider.ActuatorStatusProvider or None) – Read actuator status
- outbound_message_queue (wolk.wolkcore.OutboundMessageQueue.OutboundMessageQueue or None) – Store messages before sending
- keep_alive_enabled (bool) – Enable or disable the keep alive service
- firmware_handler (wolk.FileSystemFirmwareHandler.FileSystemFirmwareHandler or None) – Firmware update support
- host (str or None) – Host name or IP address of the remote broker
- port (int or None) – Network port of the server host to connect to
- ca_cert (str or None) – String path to Certificate Authority certificate file
-
add_alarm
(reference, active, timestamp=None)[source]¶ Publish an alarm to WolkAbout IoT Platform.
Parameters:
-
add_sensor_reading
(reference, value, timestamp=None)[source]¶ Publish a sensor reading to WolkAbout IoT Platform.
Parameters:
-
connect
()[source]¶ Connect the device to the WolkAbout IoT Platform.
Raises: e – Exception from MQTT client
wolk.Device module¶
Device Module.
-
class
wolk.Device.
Device
(key, password, actuator_references=None)[source]¶ Bases:
object
Hold all necessary information to communicate with WolkAbout IoT Platform.
Variables: - actuator_references (list) – Actuator references enabled on device
- key (str) – Device key obtained when creating device on WolkAbout IoT Platform
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- password (str) – Password obtained when creating device on WolkAbout IoT Platform
Contain device credentials necessary for connection to WolkAbout IoT Platform.
Parameters:
wolk.OSKeepAliveService module¶
OS Keep Alive Service module.
-
class
wolk.OSKeepAliveService.
OSKeepAliveService
(connectivity_service, outbound_message_factory, interval=600)[source]¶ Bases:
wolk.wolkcore.KeepAliveService.KeepAliveService
Send messages to platform in regular intervals to keep device connected.
Used for cases where no data is being sent by device for over 30 minutes.
Variables: - connectivity_service (wolk.wolkcore.ConnectivityService.ConnectivityService) – Connectivity service used to publish
- interval (int) – Number of seconds between each keep alive message
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- outbound_message_factory (wolk.wolkcore.OutboundMessageFactory.OutboundMessageFactory) – message factory used to create pings
- timer (wolk.OSKeepAliveService.RepeatingTimer) – timer for sending ping messages
Service for sending keep alive messages.
Parameters: - connectivity_service (wolk.wolkcore.ConnectivityService.ConnectivityService) – Connectivity service used to publish
- outbound_message_factory (wolk.wolkcore.OutboundMessageFactory.OutboundMessageFactory) – Message factory used to create pings
- interval (int or None) – Number of seconds between each keep alive message
-
send_keep_alive
()[source]¶ Make ping and send.
Create a keep alive message from the outbound message factory and publishes it using the connectivity service
-
class
wolk.OSKeepAliveService.
RepeatingTimer
(interval, f, *args, **kwargs)[source]¶ Bases:
object
Repeating timer calls function with arguments every interval.
Variables: - args (list) – list of arguments
- f (function) – function to call
- interval (int) – number of seconds after which to call function
- kwargs (kwargs) – keyword arguments
- timer (threading.Timer) – timer
Create a repeating timer.
Parameters:
Data Handling¶
wolk.ActuationHandler module¶
ActuationHandler Module.
-
class
wolk.ActuationHandler.
ActuationHandler
[source]¶ Bases:
object
Handle actuation commands received from WolkAbout IoT Platform.
-
handle_actuation
(reference, value)[source]¶ Set actuator to value.
When the actuation command is given from WolkAbout IoT Platform, it will be delivered to this method. This method should pass the new value to the device’s actuator. Must be implemented as non blocking. Must be implemented as thread safe.
Parameters:
-
wolk.ActuatorStatusProvider module¶
ActuatorStatusProvider Module.
-
class
wolk.ActuatorStatusProvider.
ActuatorStatusProvider
[source]¶ Bases:
object
Read the status of device’s actuators.
-
get_actuator_status
(reference)[source]¶ Get current actuator status.
Reads the status of actuator from device and returns as tuple containing actuator state and current value. Must be implemented as non blocking. Must be implemented as thread safe.
The possible actuator states are:
wolk.ACTUATOR_STATE_READY
wolk.ACTUATOR_STATE_BUSY
wolk.ACTUATOR_STATE_ERROR
Parameters: reference (str) – Actuator reference Returns: (state, value) Return type: (wolk.ActuatorState, int or float or str)
-
Device Management¶
wolk.ConfigurationHandler module¶
ConfigurationHandler Module.
-
class
wolk.ConfigurationHandler.
ConfigurationHandler
[source]¶ Bases:
object
Set device’s configuration options.
-
handle_configuration
(configuration)[source]¶ Change device’s configuration options.
When the configuration command is given from WolkAbout IoT Platform, it will be delivered to this method. This function should update device configuration with received configuration values. Must be implemented as non blocking. Must be implemented as thread safe.
Parameters: configuration (dict) – Configuration option reference:value pairs
-
wolk.ConfigurationProvider module¶
ConfigurationProvider Module.
-
class
wolk.ConfigurationProvider.
ConfigurationProvider
[source]¶ Bases:
object
Read the device’s current configuration options.
-
get_configuration
()[source]¶ Get current configuration options.
Reads device configuration and returns it as a dictionary with device configuration reference as key, and device configuration value as value.
Must be implemented as non blocking. Must be implemented as thread safe.
Returns: configuration Return type: dict
-
wolk.FileSystemFirmwareHandler module¶
FileSystemFirmwareHandler Module.
-
class
wolk.FileSystemFirmwareHandler.
FileSystemFirmwareHandler
(version, chunk_size, max_file_size, firmware_installer, download_location, firmware_url_download_handler=None)[source]¶ Bases:
wolk.wolkcore.FirmwareHandler.FirmwareHandler
Firmware handler that uses OS provided disk storage for firmware files.
Variables: - chunk_size (int) – Desired chunk size in bytes
- download_location (str) – Where to store the completed firmware file
- file_name (str) – Name of firmware file
- file_size (int) – Size of firmware file in bytes
- file_url (str) – URL where there firmware file is located
- firmware_installer (wolk.FirmwareInstaller.FirmwareInstaller) – Installer of firmware file
- firmware_url_download_handler (wolk.FirmwareURLDownloadHandler.FirmwareURLDownloadHandler or None) – URL downloader
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- max_file_size (int) – Maximum file size supported by device in bytes
- report_result_callback (function) – Callback for reporting URL download result
- temp_file (file object) – Handle of temp file used to store incomplete firmware file
- version (str) – Current version of the device firmware
- version_persister (persistent_queue.PersistentQueue) – Means of storing current version on disk
Handle file manipulation on disk storage.
Parameters: - version (str) – Current version of the device firmware
- chunk_size (int) – Desired chunk size in bytes
- max_file_size (int) – Maximum file size supported by device in bytes
- firmware_installer (wolk.FirmwareInstaller.FirmwareInstaller) – Installer of firmware file
- download_location (str) – Where to store the completed firmware file
- firmware_url_download_handler (wolk.FirmwareURLDownloadHandler.FirmwareURLDownloadHandler or None) – Optional URL downloader
-
persist_version
(version)[source]¶ Place the current firmware version into persistent storage.
Later to be used to determine the result of the firmware update process
Parameters: version (str) – Current firmware version Returns: result Return type: bool
-
read_chunk
(index)[source]¶ Read a chunk of the temporary firmware file.
Parameters: index (int) – Offset from the beginning of the file Returns: chunk Return type: bytes
-
set_url_download_result_callback
(callback)[source]¶ Set callback for reporting URL download result.
Parameters: callback (function) – Function to call
-
unpersist_version
()[source]¶ Remove the firmware version from persistent storage.
Returns: version Return type: str or None
-
update_finalize
()[source]¶ Finalize firmware installation process.
Copies the content of the temporary file to the desired download location. Calls the provided firmware installer’s install_firmware function
-
update_start
(file_name, file_size)[source]¶ Start receiving the firmware file.
Parameters: Returns: result
Return type:
-
update_start_url_download
(file_url)[source]¶ Start firmware file URL download process.
Calls download function from firmware_url_download_handler. Returns the validity of the URL and calls download function if valid.
Parameters: file_url (str) – URL that contains the firmware file Returns: result Return type: bool
wolk.FirmwareInstaller module¶
FirmwareInstaller Module.
wolk.FirmwareURLDownloadHandler module¶
FirmwareURLDownloadHandler Module.
-
class
wolk.FirmwareURLDownloadHandler.
FirmwareURLDownloadHandler
[source]¶ Bases:
object
Responsible for providing means of downloading firmware file from a URL.
Internal dependencies¶
wolk.LoggerFactory module¶
LoggerFactory Module.
-
class
wolk.LoggerFactory.
LoggerFactory
(level=20, log_format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', console=True, log_file=None)[source]¶ Bases:
object
Factory for issuing ready to use loggers in other modules.
Create a factory that will give loggers through calls to get_logger().
Parameters:
wolk.OSFirmwareUpdate module¶
OSFirmwareUpdate Module.
-
class
wolk.OSFirmwareUpdate.
OSFirmwareUpdate
(firmware_handler=None)[source]¶ Bases:
wolk.wolkcore.FirmwareUpdate.FirmwareUpdate
Responsible for everything related to the firmware update process.
Variables: - auto_install (bool) – install upon receiving the firmware file
- expected_number_of_chunks (int) – expected number of firmware chunks
- file_hash (str) – hash of firmware file received from the platform
- file_name (str) – firmware file name
- file_size (int) – firmware file size
- firmware_handler (wolk.wolkcore.FirmwareHandler.FirmwareHandler) – implementation of FirmwareHandler interface
- install_timer (threading.Timer) – timer for install countdown
- last_packet_hash (str) – hash of last valid packet received
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- max_retries (int) – number of retries for a firmware packet
- minimum_packet_size (int) – minimal size of a firmware chunk
- next_chunk_index (int) – index of next firmware chunk
- on_file_packet_request_callback (function) – callback for chunk request
- on_status_callback (function) – callback for reporting firmware update status
- request_timeout (threading.Timer) – countdown timer for request timeout
- retry_count (int) – current retry count
- state (wolk.wolkcore.FirmwareUpdateStateType) – current firmware installation state
Responsible for firmware update flow.
Parameters: firmware_handler (wolk.wolkcore.FirmwareHandler.FirmwareHandler or None) – Responsible for the firmware file itself -
handle_file_upload
(firmware_command)[source]¶ Handle the file upload command received from the platform.
Parameters: firmware_command (wolk.wolkcore.FirmwareCommand.FirmwareCommand) – Firmware command received
-
handle_packet
(packet)[source]¶ Handle the firmware file chunk packet received from the platform.
Parameters: packet (wolk.wolkcore.FileTransferPacket.FileTransferPacket) – Firmware file chunk received
-
handle_url_download
(firmware_command)[source]¶ Handle the URL download command received from the platform.
Parameters: firmware_command (wolk.wolkcore.FirmwareCommand.FirmwareCommand) – Firmware command received
-
handle_url_download_result
(result)[source]¶ Receive the result of URL download from the firmware handler.
Parameters: result (bool) – Result of the URL download
-
set_on_file_packet_request_callback
(on_file_packet_request_callback)[source]¶ Set the callback function for requesting file packets.
Parameters: on_file_packet_request_callback (function) – Function to be called
-
set_on_status_callback
(on_status_callback)[source]¶ Set the callback function for reporting firmware status.
Parameters: on_status_callback (function) – Function to be called
-
validate_firmware_file
()[source]¶ Validate the completed firmware file.
Compares the sha256 hash of the received file with the file hash received from the platform.
Returns: valid Return type: bool
-
validate_packet
(packet)[source]¶ Validate received firmware file packet.
Checks if the packed is bigger than the minimum packet size and checks if the sha256 hash of the data matches the hash received from the platform
Parameters: packet (wolk.wolkcore.FileTransferPacket.FileTransferPacket) – Packet to validate Returns: valid Return type: bool
wolk.OSInboundMessageDeserializer module¶
OSInboundMessageDeserializer Module.
-
class
wolk.OSInboundMessageDeserializer.
OSInboundMessageDeserializer
[source]¶ Bases:
wolk.wolkcore.InboundMessageDeserializer.InboundMessageDeserializer
Deserialize messages received from the WolkAbout IoT Platform.
Variables: logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory Just logger init.
-
deserialize_actuator_command
(message)[source]¶ Deserialize the message into an actuation command.
Parameters: message (wolk.wolkcore.InboundMessage.InboundMessage) – Message to be deserialized Returns: actuation Return type: wolk.wolkcore.ActuatorCommand.ActuatorCommand
-
deserialize_configuration_command
(message)[source]¶ Deserialize the message into a configuration command.
Parameters: message (wolk.wolkcore.InboundMessage.InboundMessage) – message to be deserialized Returns: configuration Return type: wolk.wolkcore.ConfigurationCommand.ConfigurationCommand
-
deserialize_firmware_chunk
(message)[source]¶ Split the message into a packet.
Parameters: message (wolk.wolkcore.InboundMessage.InboundMessage) – Message to be deserialized Returns: packet Return type: wolk.wolkcore.FileTransferPacket.FileTransferPacket
-
deserialize_firmware_command
(message)[source]¶ Deserialize the message into a firmware command.
Parameters: message (wolk.wolkcore.InboundMessage.InboundMessage) – Message to be deserialized Returns: firmware_command Return type: wolk.wolkcore.FirmwareCommand.FirmwareCommand
-
wolk.OSMQTTConnectivityService module¶
OSMQTTConnectivityService Module.
-
class
wolk.OSMQTTConnectivityService.
OSMQTTConnectivityService
(device, qos=2, host='api-demo.wolkabout.com', port=8883, ca_cert=None)[source]¶ Bases:
wolk.wolkcore.ConnectivityService.ConnectivityService
Handle sending and receiving MQTT messages.
Variables: - ca_cert (str) – Path to ca.crt file used for TLS
- client (paho.mqtt.Client) – MQTT client used to send/receive data
- connected (bool) – State of the connection
- connected_rc (int) – return code of the connection
- device (wolk.Device.Device) – Holds authentication information and actuator references
- host (str) – Address of the MQTT broker
- inbound_message_listener (function) – Callback function for inbound messages
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- port (int) – Port to which to send messages
- qos (int) – Quality of Service for the MQTT connection
- topics (list) – List of topics to subscribe to
Provide the connection to the WolkAbout IoT Platform.
Parameters: - device (wolk.Device.Device) – Contains device key, password and actuator references
- qos (int or None) – Quality of Service for MQTT connection
- host (str or None) – Address of the MQTT broker
- port (int or None) – Port to which to send messages
- ca_cert (str or None) – Certificate file used to encrypt the connection
-
connect
()[source]¶ Establish the connection to the WolkAbout IoT platform.
If there are actuators it will subscribe to topics that will contain actuator commands. Subscribes to firmware update related topics. Starts a loop to handle inbound messages.
Raises: RuntimeError – Reason for connection being refused
-
on_mqtt_connect
(client, userdata, flags, rc)[source]¶ Handle when the client receives a CONNACK response from the server.
Parameters:
-
on_mqtt_disconnect
(client, userdata, rc)[source]¶ Handle when the client disconnects from the broker.
Parameters: Raises: RuntimeError – Unexpected disconnection
-
on_mqtt_message
(client, userdata, message)[source]¶ Serialize inbound messages and pass them to inbound message listener.
Parameters: - client (paho.mqtt.Client) – Client that received the message
- userdata (str) – Private user data set in Client()
- message (paho.mqtt.MQTTMessage) – Class with members: topic, payload, qos, retain.
-
publish
(outbound_message)[source]¶ Publish serialized data to WolkAbout IoT Platform.
Parameters: outbound_message (wolk.wolkcore.OutboundMessage.OutboundMessage) – Message to be published Returns: result Return type: bool
wolk.OSOutboundMessageFactory module¶
OSOutboundMessageFactory Module.
-
class
wolk.OSOutboundMessageFactory.
OSOutboundMessageFactory
(device_key)[source]¶ Bases:
wolk.wolkcore.OutboundMessageFactory.OutboundMessageFactory
Serialize messages to be sent to WolkAbout IoT Platform.
Variables: - device_key (str) – Device key to use when serializing messages
- logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
Create a factory for serializing messages.
Parameters: device_key (str) – Device key to use when serializing messages -
make_from_actuator_status
(actuator)[source]¶ Serialize the actuator status to be sent to WolkAbout IoT Platform.
Parameters: actuator (wolk.wolkcore.ActuatorStatus.ActuatorStatus) – Actuator status to be serialized Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_alarm
(alarm)[source]¶ Serialize the alarm to be sent to WolkAbout IoT Platform.
Parameters: alarm (wolk.wolkcore.Alarm.Alarm) – Alarm event to be serialized Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_chunk_request
(file_name, chunk_index, chunk_size)[source]¶ Request a firmware file chunk from WolkAbout IoT Platform.
Parameters: Returns: message
Return type:
-
make_from_configuration
(configuration)[source]¶ Report device’s configuration to WolkAbout IoT Platform.
Parameters: configuration (dict) – Device’s current configuration Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_firmware_status
(firmware_status)[source]¶ Serialize the firmware status to be sent to WolkAbout IoT Platform.
Parameters: firmware_status (wolk.wolkcore.FirmwareStatus.FirmwareStatus) – Firmware status to be serialized Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_firmware_version
(version)[source]¶ Report the current version of firmware to WolkAbout IoT Platform.
Parameters: version (str) – Firmware version to report Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_keep_alive_message
()[source]¶ Create a ping message.
Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
-
make_from_sensor_reading
(reading)[source]¶ Serialize the sensor reading to be sent to WolkAbout IoT Platform.
Parameters: reading (wolk.wolkcore.SensorReading.SensorReading) – Sensor reading to be serialized Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage
wolk.OSOutboundMessageQueue module¶
OSOutboundMessageQueue Module.
-
class
wolk.OSOutboundMessageQueue.
OSOutboundMessageQueue
[source]¶ Bases:
wolk.wolkcore.OutboundMessageQueue.OutboundMessageQueue
Store messages before they are sent to the WolkAbout IoT Platform.
Variables: - logger (logging.Logger) – Logger instance issued by wolk.LoggerFactory
- queue (collections.deque) – Double ended queue used to store messages
Create a double ended queue to store messages.
-
get
()[source]¶ Take the first message from the queue.
Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage or None
-
peek
()[source]¶ Return the first message from the queue without removing it.
Returns: message Return type: wolk.wolkcore.OutboundMessage.OutboundMessage or None
-
put
(message)[source]¶ Add the message to the queue.
Combines sensor reading messages of the same reference into a single message.
Parameters: message (wolk.wolkcore.OutboundMessage.OutboundMessage) – Message to place in the queue
wolk.wolkcore subpackage¶
Additional internal dependencies are located in the wolkcore subpackage


--- title: Postdoctoral Positions ---
The department hosts three types of postdoctoral fellows. These are:
Most of the postdocs hosted by the department are funded by external fellowships. Some of these fellowships are:
Disclaimers. For the latest information on these fellowships, please check their websites. Some of these may not longer be available. At the same time, there may be other funding opportunities that are not listed above.
If you wish to apply for any of these, and then join the department, you must first identify a prospective faculty mentor in your area of research, and seek their consent to host you at the department. The faculty member will inform you of their decision after consultation with the Postdoctoral Fellows Committee, which may contact you for more information to assess your suitability for the position.
The institute offers a select number of postdoctoral fellowships including the Raman Post-doctoral Fellowship and the IoE Fellowship. If you wish to be hosted at the mathematics department as a Raman PDF, please carefully read the institute advertisement for these positions, and follow the procedure outlined in the advertisement.
Please note that the Raman PDF is a highly competitive and prestigious fellowship, and the department recommends very few applications for further screening at the institute level. The candidate must show a strong record of independent and high-quality research.
Some members of our faculty may also have grants that can support a post-doctoral position. You may write to faculty members (in your area of research) to enquire about the possibility of such funding.
All postdocs will be expected to teach/perform TA duties depending on the department's requirements.
For any clarifications, you may write to the postdoctoral fellows committee.


--- layout: post permalink: charminglifedesigns.html Tags: Array NameOfCoupon: Charming Life Designs Cash Back Summary: See our Charming Life Designs Coupon Code, Charming Life Designs Rebate, Charming Life Designs Promo Code, Charming Life Designs Discount, Charming Life Designs Coupon Cash Back Rebate here. MetaKeywords: Charming Life Designs Coupon Code, Charming Life Designs Rebate, Charming Life Designs Promo Code, Charming Life Designs Cash Back Rebate, Charming Life Designs Discount, Charming Life Designs Coupon Image: images/23823.jpg LinkURL: http://www.shareasale.com/r.cfm?b=189716&u=412002&m=23823 affiliate_url_link: http://www.icouponblog.com/jane.php?id=1159 thesis_readmore: See the Charming Life Designs Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=charminglifedesigns.com Title: Save 10% - Charming Life Designs Coupon Code for charminglifedesigns.com. Charming Life Designs Rebate & Discount thesis_description: Our Charming Life Designs Discount Coupon Code for charminglifedesigns.com. We have the best Charming Life Designs Rebate anywhere. thesis_keywords: Charming Life Designs, Charming Life Designs Coupon Code, Charming Life Designs Discount, Charming Life Designs Rebate product_name: Charming Life Designs hop_url: http://www.icouponblog.com/hop.php?id=1159 ---
Are you lost in a sea of jewelry items and do not know who to buy from? Charming Life Designs is a place to buy special, unique, jewelry items like rings, bracelets, necklaces and much more. Charming Life Designs has very beautiful collection of handcrafted, and designer like jewelry at a very affordable price. Only the best quality materials go into the crafting of our products. Buy something unique, beautiful, stylish and sophisticated through Charming Life Designs today. Use our discount coupons to get a great deal.
< p> Charming Life Designs uses only the best quality materials including precious metals and genuine gemstones as well as Swarovski crystals and freshwater pearls. Visit Charming Life Designs website and check out a beautiful collection of jewelry and stones. Buy beautiful necklaces, bracelets, earrings and charms. You will love the products and it is available at a low price. Use our coupons to get even better deals. Shop online at Charming Life Designs.com
Charming Life Designs has beautiful, sophisticated, delicate and stylish jewelry and charms. They make great presents for anniversaries, birthdays, valentines’ and lot more. Surprise your better half, or a friend, a significant other with a gift of beauty and love from Charming Life Designs. Don’t forget to use our discount coupons on these amazing products form Charming Life Designs.


© 2019
| breviaculeatus breviaculeata breviaculeatum | short prickles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| aculeatus | aculeat | adj | with prickles, stings; thorny | |
| brevialatus brevialata brevialatum | short winged | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| alatus | alat | adj | furnished with wings, winged | |
| Colutea brevialata Lange | ||||
| breviaristatus breviaristata breviaristatum | short bristles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| arista | arist | noun/f | corn silk; ear of corn | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Bromus breviaristatus Buckl. | ||||
| brevibarbatus brevibarbata brevibarbatum | short beard | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| barbatus | barbat | adj | having a beard; bearded | |
| Penstemon brevibarbatus Crosswhite | ||||
| brevibarbis brevibarbis brevibarbe | short beard | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| barba | barb | noun/f | beard | |
| is | adj | adjectival suffix | ||
| Saccharum brevibarbe (Michx.) Pers. Erianthus brevibarbis Michx. | ||||
| brevibracteatus brevibracteata brevibracteatum | with short bracts | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| bractea | bracte | noun/f | thin plate of metal, gold-leaf | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| brevicalcaratus brevicalcarata brevicalcaratum | with a short spur | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| calcar | calcar | noun/n | spur | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Biscutella brevicalcarata (Batt.) Batt. | ||||
| brevicallosus brevicallosa brevicallosum | little callouses | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| callosus | callos | adj | with a hard skill, thick-skinned, callous | |
| Sorghum brevicallosum E. D. Garber | ||||
| brevicalyx brevicalyces | short calyx | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| calyx | calyc | noun/f | καλυξ, υκοϛ husk, covering, calyx | |
| Cyrtandra brevicalyx (Hbd.) St. John | ||||
| brevicarinatus brevicarinata brevicarinatum | little keel | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| carinatus | carinat | padj | carinos to supply with a keel or shell | |
| brevicaudatus brevicaudata brevicaudatum | with a small tail | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| cauda | caud | noun/f | tail | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Pasania brevicaudata (Skan) Schottky Juncus brevicaudatus (Engelm.) Fern. | ||||
| brevicaulis brevicaulis brevicaule | short stemmed | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| caulis | caul | adj/ | καυλοϛ stem of a plant; usual spelling was colis or coles | |
| Eriogonum brevicaule Nutt. Iris brevicaulis Raf. | ||||
| breviciliatus breviciliata breviciliatum | short hairs | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| cilium | cili | noun/n | eyelash & eyelid together | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| brevicollis brevicolles | small bumps | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| collis | coll | noun/m | a small hill | |
| Trematodon brevicollis Hoppe & Hornsch. ex Hornsch. | ||||
| brevicollus brevicolla brevicollum | short neck | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| collum | coll | noun/n | the neck | |
| us | adj | Latinizing suffix | ||
| Encalypta brevicolla (Bruch & Schimp. in B.S.G.) Bruch ex èngstr. | ||||
| brevicomptus brevicompta brevicomptum | smallband | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| comptus | compt | noun/m | band; tie | |
| us | adj | Latinizing suffix | ||
| Ixiolaena brevicompta F. Muell. | ||||
| brevicornu brevicornua | short horn | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| cornu | corn | noun/m | horn, antler | |
| Asclepias brevicornu Scheele | ||||
| brevicornutus brevicornuta brevicornutum | with short horns | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| cornutus | cornut | adj | horned | |
| Cyrtandra brevicornuta St. John | ||||
| brevicoronatus brevicoronata brevicoronatum | witha small crown | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| corona | coron | noun/f | κορωνη wreath, garland, crown | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Matelea brevicoronata (B.L. Robins.) Woods. | ||||
| brevicrinis brevicrines | short hair | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| crinis | crin | noun/m | hair; tail; antennae | |
| breviculus brevicula breviculum | somewhat short | |||
| breviculus | brevicul | adj | diminutive of brevis: somewhat short | |
| Linanthus breviculus (Gray) Greene | ||||
| brevicuspis brevicuspides | with short points | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| cuspis | cuspid | noun/f | point; spear, stinger | |
| brevidens brevidentes | short toothed | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| dens | dent | noun/m | tooth | |
| Astragalus brevidens (Gandog.) Rydb. | ||||
| breviflorus breviflora breviflorum | short flowered | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| florus | flor | ppar | floreo to bloom, to flower | |
| Agastache breviflora (Gray) Epling Androstephium breviflorum S. Wats. Cercocarpus breviflorus Gray | ||||
| brevifolioides brevifolioides brevifolioides | like another species named brevifolius/a/um | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| folius | foli | adj | folium leaf | |
| oides | oid | adj | -οειδεϛ adjective suffix for nouns: like, resemble | |
| Cyperus brevifolioides Thieret & Delahoussaye | ||||
| brevifoliolatus brevifoliolata brevifoliolatum | with short leaflets | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| folium | foli | noun/n | leaf | |
| olum | ol | noun/n | olus substantive suffix for 1st & 2nd declention nouns: diminutive | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Encephalartos brevifoliolatus Vorster | ||||
| brevifolius brevifolia brevifolium | short leaved | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| folius | foli | adj | folium leaf | |
| Pyxidanthera brevifolia Wells Talinum brevifolium Torr. Ranunculus brevifolius Ten. | ||||
| brevifrons brevifrondes | short leaves or fronds | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| frons | frond | noun/f | leaf, foliage | |
| Hymenophyllum brevifrons Kunze | ||||
| breviglandulosus breviglandulosa breviglandulosum | full of small glands | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| glandulosus | glandulos | adj | full of glands | |
| breviglumis breviglumis breviglume | short glumed | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| gluma | glum | noun/f | a hull or husk | |
| is | adj | adjectival suffix | ||
| brevihamatus brevihamata brevihamatum | with short hooks | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| hamatus | hamat | adj | furnished with a hook, hooked | |
| Ancistrocactus brevihamatus (Engelm.) Britt. & Rose | ||||
| brevilabris brevilabris brevilabre | short lipped | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| labrum | labr | noun/n | a lip | |
| is | adj | adjectival suffix | ||
| Spiranthes brevilabris Lindl. | ||||
| brevilanatus brevilanata brevilanatum | with short wooly hairs | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| lanatus | lanat | adj | covered with wool, wooly | |
| Gossypioides brevilanatum (Hochr.) J. B. Hutch. | ||||
| breviligulatus breviligulata breviligulatum | with short ligules | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| ligula | ligul | noun/f | tongue of land; tongue of shoe, shoe strap | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Ammophila breviligulata Fern. | ||||
| brevilingulatus brevilingulata brevilingulatum | with short tongues | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| lingula | lingul | noun/f | a little tongue hence a number of tongue shaped things: land, shoe tongue, spoon, etc. | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Machaeranthera brevilingulata (Schultz-Bip. ex Hemsl.) B.L. Turner & Horne | ||||
| brevilobatus brevilobata brevilobatum | with short lobes | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| lobatus | lobat | adj | NL lobed | |
| Castilleja brevilobata Piper | ||||
| brevilobus breviloba brevilobum | with short or small lobes | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| lobus | lob | noun/m | λοβοϛ Late L Greek: lobe of the ear; late Latin: husk, pod | |
| us | adj | Latinizing suffix | ||
| Quercus breviloba (Torr.) Sarg. | ||||
| brevimucronatus brevimucronata brevimucronatum | very short points | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| mucro | mucron | noun/m | a sharp point or edge | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Solanum brevimucronatum Hawkes | ||||
| brevinervis brevinervis brevinerve | with short veins | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| nervus | nerv | noun/m | νευρον a sinew, tendon, nerve | |
| is | adj | adjectival suffix | ||
| Pohlia brevinervis Lindb. & Arnell | ||||
| brevior brevior brevius | shorter | |||
| comparative of brevis | brev | adj | short; little | |
| ior | adj | comparative suffix; more so, to a greater degree; more-, -er (e.g. larger, prettier, whiter) | ||
| Carex brevior (Dewey) Mack. | ||||
| brevipaniculatus brevipaniculata brevipaniculatum | with short panicles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| panicula | panicul | noun/f | a tuft, panicle | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Arundinaria brevipaniculata Hand.-Mazz. | ||||
| brevipedicellatus brevipedicellata brevipedicellatum | with sort partical pedicels | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pedicellus | pedicell | noun/m | Mod L Linnaeus chose this word to describe a partial peduncle | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| brevipedunculatus brevipedunculata brevipedunculatum | short peduncles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pedunculus | peduncul | noun/m | a little foot; hence a foot stalk | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Ampelopsis brevipedunculata (Maxim.) Trautv. | ||||
| brevipes brevipedes | with short feet | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pes | ped | noun/m | foot; claw | |
| Alisma brevipes Greene | ||||
| brevipetalus brevipetala brevipetalum | with short petals | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| petalum | petal | noun/n | πεταλον Mod L petal (Gk: leaf, tablet) | |
| us | adj | Latinizing suffix | ||
| brevipetiolatus brevipetiolata brevipetiolatum | with short petioles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| petiolus | petiol | noun/m | pes foot; claw | |
| olus substantive suffix for 1st & 2nd declention nouns: diminutive | ||||
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Campnospera brevipetiolata Volkens Campnosperma brevipetiolatum Volkens | ||||
| brevipilis brevipilis brevipile | with short hairs | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pilus | pil | noun/m | a hair; a trifle | |
| is | adj | adjectival suffix | ||
| brevipilosus brevipilosa brevipilosum | hairy with short hairs | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pilosus | pilos | adj | hairy, shaggy | |
| brevipubis brevipubis brevipube | with short hairs | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| pubes | pub | noun/f | youth, men; hair that appears at puberty | |
| is | adj | adjectival suffix | ||
| Gleichenia brevipubis Christ | ||||
| breviracemosus breviracemosa breviracemosum | with short racemes | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| racemus | racem | noun/m | the stalk of or a cluster of a bunch of grapes | |
| osus | os | adj | adjective suffix for nouns: plenitude or notable development | |
| Lansium breviracemosum Kosterm. | ||||
| breviradiatus breviradiata breviradiatum | short rays | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| radiatus | radiat | ppar | with rays; shining | |
| brevirameus breviramea brevirameum | with short branches | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| rameus | rame | adj | of or belonging to branches, boughs | |
| Chamaecyparis breviramea Maxim. | ||||
| breviramosus breviramosa breviramosum | with many short branches | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| ramosus | ramos | adj | with many branches | |
| Begonia breviramosa Irmsch. | ||||
| brevirostris brevirostris brevirostre | short beaked | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| rostrum | rostr | noun/n | the beak of a bird | |
| is | adj | adjectival suffix | ||
| Hylocomium brevirostre (Brid.) Schimp. in B.S.G. Aloina brevirostris (Hook. & Grev.) Kindb. | ||||
| brevirostrus brevirostra brevirostrum | short beaked | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| rostrum | rostr | noun/n | the beak of a bird | |
| us | adj | Latinizing suffix | ||
| brevis brevis breve | short | |||
| brevis | brev | adj | short; little | |
| Bromus brevis Nees ex Steud. | ||||
| breviscapus breviscapa breviscapum | short scape | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| scapus | scap | adj | shaft, stem, stalk, trunk | |
| brevisepalus brevisepala brevisepalum | with short sepals | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| sepalum | sepal | noun/n | Mod L sepal; = Gk skepe (covering) + petalum (petal) (coined in 1790 by H. J. de Necker) | |
| skepe σκεπη covering; shelter, protection | ||||
| petalum πεταλον Mod L petal (Gk: leaf, tablet) | ||||
| us | adj | Latinizing suffix | ||
| Penstemon brevisepalus Pennell | ||||
| breviserratus breviserrata breviserratum | with short serrations | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| serratus | serrat | adj | saw like, serrated, saw toothed | |
| Salix breviserrata Flod. | ||||
| brevisetus breviseta brevisetum | with short bristles | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| seta | set | noun/f | saeta a bristle or stiff hair of an animal | |
| us | adj | Latinizing suffix | ||
| Bartramia breviseta Lindb. Entodon brevisetus (Hook. & Wils. in Wils.) Lindb. | ||||
| brevisiliquus brevisiliqua brevisiliquum | with short pods | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| siliqua | siliqu | noun/f | pod of a legume | |
| us | adj | Latinizing suffix | ||
| brevispathus brevispatha brevispathum | with a short spathe | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spatha | spath | noun/f | σπαϑη broad double edged sword, saber | |
| us | adj | Latinizing suffix | ||
| Aglaonema brevispathum f. hospitum (F. N. Williams) Nicolson | ||||
| brevispicatus brevispicata brevispicatum | with a short spike | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spicatus | spicat | ppar | spico to grow ears, spikes (like corn) | |
| Lysiloma brevispicatum (Rose) Britton & Rose | ||||
| brevispicus brevispica brevispicum | short spiked | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spica | spic | noun/f | point, ear (of grain), spike | |
| us | adj | Latinizing suffix | ||
| Tragia brevispica Engelm. & Gray | ||||
| brevispinosus brevispinosa brevispinosum | with short spines | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spinosus | spinos | adj | thorny | |
| Rhigozum brevispinosum Kuntze | ||||
| brevispinus brevispina brevispinum | with short spines | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spina | spin | noun/f | thorn; prickle, spine | |
| us | adj | Latinizing suffix | ||
| Agave brevispina Trel. | ||||
| brevisporus brevispora brevisporum | short spores (capsules) | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| spora | spor | noun/f | σπορα the sowing of seeds, seed; offspring | |
| us | adj | Latinizing suffix | ||
| Bactrospora brevispora R. C. Harris | ||||
| brevisquamis brevisquamis brevisquame | with short scales | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| squama | squam | noun/f | a scale | |
| is | adj | adjectival suffix | ||
| brevisquamus brevisquama brevisquamum | with short scales | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| squama | squam | noun/f | a scale | |
| us | adj | Latinizing suffix | ||
| brevissimus brevissima brevissimum | shortest | |||
| superlative of brevis | brev | adj | short; little | |
| issimus | issim | adj | superlative suffix; most so, to the greatest degree; most-, -est (e.g. largest, prettiest, whitest) | |
| Festuca brevissima Jurtzev Psilocarphus brevissimus Nutt. | ||||
| brevistamineus brevistaminea brevistamineum | with short stames | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| stamineus | stamine | adj | full of threads | |
| Heuchera brevistaminea Wiggins | ||||
| brevistipulatus brevistipulata brevistipulatum | with short stipules | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| stipula | stipul | noun/f | a stalk, stem, blade | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Viola brevistipulata (Fr. & Sar.) W.Becker | ||||
| brevistylis brevistyles | short style | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| stylis | styl | noun/m | stylos στυλοϛ pillar, pole, prop (confused with L. stilus) | |
| is -ιϛ substantive suffix for nouns: a connection to a noun | ||||
| brevistylus brevistyla brevistylum | short styled | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| stylus | styl | adj | stylos στυλοϛ pillar, pole, prop (confused with L. stilus) | |
| us Latinizing suffix | ||||
| Aquilegia brevistyla Hook. Allium brevistylum S.Wats. Orthocarpus brevistylus Hoover | ||||
| brevisubulatus brevisubulata brevisubulatum | with short awl shapes | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| subula | subul | noun/f | awl | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Hordeum brevisubulatum (Trin.) Link | ||||
| brevithyrsus brevithyrsa brevithyrsum | short thyrse (stalks multiply branched) | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| thyrsus | thyrs | noun/m | ϑυρσοϛ the stalk of an umbeliferous plant like fennel; a staff with vines wrapped around it | |
| us | adj | Latinizing suffix | ||
| Palicourea brevithyrsa Britt. & Standl. | ||||
| brevivaginatus brevivaginata brevivaginatum | with a short sheath | |||
| brevis | brev | adj | short; little | |
| i | i | cnct | connective vowel used by botanical Latin | |
| vagina | vagin | noun/f | a covering, sheath | |
| atus | at | adj | adjectival suffix for nouns: possessive of or likeness of something (with, shaped, made)/ for verb participles: a completed action, -ed | |
| Fimbristylis brevivaginata Kral | ||||
| brumalis brumalis brumale | wintry | |||
| brumalis | brumal | adj | of the winter solstice; wintry | |
| Crataegus brumalis Ashe | ||||
| brunneofuscus brunneofusca brunneofuscum | dark brown | |||
| brunneus | brunne | adj | Mod L brown, from Germanic: brun | |
| o | o | cnct | connective vowel in botanical Latin, usually for Greek words but in some cases, such as color tingeing, for Latin words | |
| fuscus | fusc | adj | dark, dusky, swarthy | |
| Lecidea brunneofusca H. Magn. | ||||
| brunneomaculatus brunneomaculata brunneomaculatum | brown spotted | |||
| brunneus | brunne | adj | Mod L brown, from Germanic: brun | |
| o | o | cnct | connective vowel in botanical Latin, usually for Greek words but in some cases, such as color tingeing, for Latin words | |
| maculatus | maculat | ppar | maculo to spot, stain, pollute, defile | |
| Lupinus brunneomaculatus Eastw. | ||||
| bryoides bryoides bryoides | moss-like | |||
| bryon | bry | noun/n | βρυον moss | |
| oides | oid | adj | -οειδεϛ adjective suffix for nouns: like, resemble | |
| Phlox bryoides Nutt. | ||||
| bryomorphus bryomorpha bryomorphum | mossy form | |||
| bryon | bry | noun/n | βρυον moss | |
| o | o | cnct | connective vowel in botanical Latin, usually for Greek words but in some cases, such as color tingeing, for Latin words | |
| morphe | morph | noun/f | μορφη form, shape, figure, appearance; beauty, grace | |
| us | adj | Latinizing suffix | ||
| bryophilus bryophila bryophilum | moss like leaves | |||
| bryon | bry | noun/n | βρυον moss | |
| o | o | cnct | connective vowel in botanical Latin, usually for Greek words but in some cases, such as color tingeing, for Latin words | |
| philus | phil | adj | philos φιλοσ, ε, ον loved; loving, friendly, fond | |
| us Latinizing suffix | ||||
| Alsophila bryophila R. Tryon Diploschistes bryophilus (Ehrh. ex Ach.) Zahlbr. | ||||
| bryophorus bryophora bryophorum | moss bearing | |||
| bryon | bry | noun/n | βρυον moss | |
| o | o | cnct | connective vowel in botanical Latin, usually for Greek words but in some cases, such as color tingeing, for Latin words | |
| phoros | phor | apar | phoreo φορεω (φερω) to carry, bring | |
| us | adj | Latinizing suffix | ||
| Saxifraga bryophora Gray | ||||
| bubalinus bubalina bubalinum | buff (the color of a gazelle) | |||
| bubalus | bubal | noun/m | some kind of African gazelle or stag | |
| inus | in | adj | adjective suffix for nouns: belonging to or resembling | |
| Burchellia bubalina (L. f.) Sims Encephalartos bubalinus Melville |


Select more parties to form a majority
Build a coalition government using the latest average of opinion poll results.
Star


LifeSkills GO
A platform that forms a fun and interactive learning space that supports the social, emotional and physical development of children aged 5 to 13.
I have over 15 years of experience as a Software Developer, and have worked at both small
startups and large organizations. I'm a proficient full-stack developer and a hands-on technical
leader who has built software products from the ground up. My collegues often call me a Jack of
All Trades.
I love building things. While hard engineering problems are often intrinsically fun to tackle,
I'm most attracted to solving real customer problems with a business justification. I'm looking
for a senior individual contributor role where I can take on on collaborative team leadership
responsibilites, and gain experience with architecture and project management.


--- layout: isolated template: t-isolated title: Objects > WRAPPER name: wrapper selector: .o-wrapper ---


Call this when you want to make an angular factory for use in your project.
yo scaffi:factory
When a ui factory is made, Scaffi creates it in the src/ui/app/factories folder. This will create a js controller that is used like a typical angular factory.
Let's say we generate a factory called 'LaunchToast'.
 If you're injecting additional providers into a factory, you need to inject them in three places: In static factory params, in the new instance of the factory class, and in the constructor of the factory class. Take a look at the $rootScope in the first example. Notice how it's referenced three times in order to make it usable inside the factory class. !!!


Login with existing user
E-mail
Password
Login
Register a new user
E-mail
Password
Add "Admin" role
Create user


If you run ./gulp/gulp -w and access to the url http://localhost:3000 you will be able to watch css and js changes on-the-fly without manually reloading the browser.
Example: Try to modify background-color for body element in assets/css/frontend/homepage.scss
| Section | SUBSECTION |
|---|---|
| Frontend | HomePage |


Implemented a Monte Carlo Pathtracer with various illumination techniques, including global illumination using multiple importance sampling, volume rendering, and photon mapping with a k-d tree.
Implemented multiple features such as thin-lens camera, BVH acceleration structure, constructive solid geometry and different types of light sources and materials.
Mini Minecraft | C++, GLSL
Nov 2019
Collaborated in a group of 3 students; I was responsible for
implementing efficient terrain rendering and chunking, texturing
and texture animation, procedual weathers such as rain,
snow, lightening and clouds.
Mini Maya | C++, GLSL
Oct 2019
Implemented an interactive Maya-like mesh editor with
Half-Edge Mesh data structure, Catmull-Clark Subdivision, Extrusion, Interactive
Skeleton Structure, Skinning, and Shader Based Skin Deformation.
Japanese Restaurant
Oct 2019
I modeled a Japanese Restaurant by Maya and rendered it in
Arnold based on a
reference image
.
GAN-based 3D Reconstruction | Python, JavaScript
Apr 2019
Designed and trained a Conditional GAN-based network which can reconstruct 3D model and make surface color
estimation by giving an image of a certain category of objects
such as the chairs.
Implemented a system to show the results by using React and
Three.js.
leaflet-tooltip-layout | JavaScript
Sep 2018
Created the plugin leaflet-tooltip-layout, solved a UI overlap
issue of Leaflet.js, an
open source map library, by using the Force-Directed Drawing
algorithm.


?Ludwigia
peruviana
(L.)
Hara
Determined
by
T*P
Ą
Rajnainoor*thy
1990
DOMINICAN
REPUBLIC
La
Vega
No.
339
25
July
1967
Ludwigia
peruviana
(L.)
Hara
det.
Bro.
Alain
Liogier
NEW
YORK
BOTANICAL
GARDEN
01447670
Cut-over
roadsides.
Semi-woody
shrub
to
1,5
m.
tall
on
wet
river
bank.
Flowers
yellow,
J-U
cm.
across.
Lowland
forest
near
La
CiŽnega.
Elev.
1100-1200
m.
Gerald
J.
Gastony,
Gayle
C.
Jones,
and
Daniel
H.
Norris
Collected
under
auspices
of
Gray
Herbarium
of
Harvard
University,
New
York
Botanical
Garden,
and
Smithsonian
Institution,
with
collaboration
of
Dr.
E.
de
Js.
Marcano
F.,
Universidad
Aut—noma
de
Santo
Domingo.
01447670
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Please note, all items listed are available, if it is not listed, we do not have in stock. Thank you!❤
Select size


Paradigm shift in science & technology research
Cross platform Development:
Java applets shut down ; Microsoft partnered NodeJS (2016-17)
Real Time Operating System:
Event based Programming language to process data in real time
Functional Programming:
Lambda Calculus, Pure Functions and objects -> Prototypal Inheritance
(contrary to class based inheritance ).
Konfinity


==== Financial Information (e.g. bank, credit, equity accounts) ====
Financial information is often some of the most guarded information an organization possesses. This information can include bank account information, credit card account information and/or credit card numbers, and investment accounts, among others.


UnsecuredSMELendingResponse_RepaymentHoliday
- MaxHolidayLength : Float
The maximum length/duration of a Repayment Holiday
- MaxHolidayPeriod : String
The unit of period (days, weeks, months etc.) of the repayment holiday
- Enum:
- Day
- Half Year
- Month
- Quarter
- Week
- Year
- Notes : List
Free text for adding details for repayment holiday


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/spawn.20new.20process.html ---
Would it be at all possible for a lean tactic to spawn a new process? For example call coqtop
? If so, any recommendation as to what file to take a look at? (I don't suppose it's documented.)
leanpkg spawns external processes for almost everything: https://github.com/leanprover/lean/blob/d6d44a19947e2575b3fceed6d61167d258c661fb/leanpkg/leanpkg/main.lean
You can do the same in tactics by lifting the io monad to the tactic monad (don't remember the name of the function)
I guess there must be hints in that "Lean talks to mathematica" paper
Thank you. I am giving you 10 out of 10 for today :P! :)
https://arxiv.org/abs/1712.09288
Next thing you know we'll be querying google for proofs! ;)
You can do the same in tactics by lifting the io monad to the tactic monad (don't remember the name of the function)
tactic.unsafe_run_io
:) . The unsafe part should vanish soon by basing tactic
on io
.
Last updated: Apr 24 2020 at 19:02 UTC


Trust the First Filipino Online Gaming Platform
Game Categories
E-Games
Play E-Games
Sportsbook
Bet in your favorite games
Get Started
Any questions?
Our dedicated support team is here for you 24/7.
Email
Phone
Live Chat
Terms and Conditions
General
By ticking the age verification and the "Terms of Service" checkbox during the registration process, the user acknowledge that he/she has read, understand, and agrees to be bound by Lucky888bet User Agreement in its entirety and without reservation. As such, the User Agreement constitutes a binding legal document between the user and Lucky888bet. The Agreement always governs the user’s use of our gambling services.
- Players must be at least 21 years of age to play with Lucky888bet.com.
- Lucky888bet.com reserves the right to void any transactions involving players under 21 years old, employees (as well as their immediate relatives) of the Philippine government, PAGCOR, Lucky888bet, law enforcement agencies, members of the military and anyone residing in the Philippines.
- Lucky888bet.com accepts bets within the Philippines. All bets accepted by Lucky888bet.com Games are subjected to these terms & conditions.
- Lucky888bet.com reserves the right to amend these terms and conditions at any time without prior notification. All editions will show version number and validity start date.
- It is the exclusive responsibility of the players to ensure compliance if the set rules before registering with Lucky888bet.
- Lucky888bet.com Games reserves the right to change any of the rules anytime without prior notice.
- We shall treat any breach of these Terms and Conditions as a serious matter and we may take any steps at law, which we deem fit and proper to protect our interests.`


When choosing which secondary school to attend I decided on a high school specializing in scientific subjects to focus on mathematics, algebra and physics. In particular, I selected the IT stream that included computer-oriented problem solving. I successfully graduated from High School with a grade of 95/100 in which my Maths Exam result was of 14 out of 15. These results met my expectation so I could enter the Newcastle University that was my greatest ambition.
During the 5 years of High School, I learnt how to master time management skills and techniques to do my best with perfect timing and all the courses were problem solving based to give the students all the tools to face to every kind of problem.


Before I get started I would like to state that I am currently taking a variety of medications on a daily basis, including Buspar, Adderall XR, and the SSRI anti-depressant Celexa. I highly recommend taking EXTREME caution when experimenting with psychoactives while taking prescription drugs as very little data is available on the risks involved in combining the two. Personally, I have had no adverse reactions from the substances mentioned in this report (or at all for that matter).
I have been studying the medicinal properties of plants for two years now, and have been experimenting with psychoactives for seven plus years. I have tried smoking a variety of herbal blends and found most of them to be either intolerable taste wise or just plain ineffective. However, there is one herbal blend that not only has a very pleasant taste, but noticeable effects.
The recipe includes equal parts of cannabis, mugwort, hops, lavender flowers, and rose petals. The blend is light and fluffy, with a lightly sweet taste. Also, it smokes beautifully.
The experience is a bit like an absinthe and cannabis (obviously) high, only without overwhelming effects of strong liquor tied in with it. I suppose that makes sense considering mugwort and wormwood are in the same family. Smoking smaller amounts make the blend ideal for meditation and artistic inspiration, while smoking larger amounts tends to bring about sedation. Typically, I smoke one or two 1 gram bowls out of a glass pipe, but I imagine using a bong would produce a more powerful reaction.
I would also like to note that I tend to have some amazing dreams after smoking these herbs together. For those who are into lucid dreams but do not want to smoke plant material, I recommend placing the herbs in a pouch (minus the cannabis) and placing them under your pillow.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- layout: page title: Everlast Floors description: Website, Graphic Design ---
Company: Everlast Floors LLC
Breif: In order to effectively display products, sell online samples, and present the brand as luxury hardwood flooring providers, Everlast was looking for an effective way to do so. I decided to bring attention to the floors they sold and a few of the clients that had their floors installed.
Deliverables: Website, Design, Branding
Website: Everlast Floors


Demo Application
Question-1 Print numbers
Print
Question-3 Inheritance example
Question-3 Concatenated string via API calls
Get data
Question-4 Line chart from selected CSV
Select local CSV File:
file contents will appear here


TM3 is setup with automatic text reminders to help combat the menacing DNA. Even better, set up automatic notifications that let clients know whenever someone cancels and a spot from the waiting list opens up. This simple feature can reduce your DNAs by up to 90%!
{{ else }}TM3 includes text reminders to help combat the menacing DNA. This simple feature can reduce your DNAs by up to 90%!
{{ end}}TM3 comes with an array of customised templates, including patient updates and referral letters, making it simple to communicate with your patients or third parties.
Got a query? Connect with TM3’s support team with just one click.
With TM3, you are always just one click away from a support portal that hosts all your training needs.
{{ if eq .Site.LanguageCode "en-GB" }} 98% of clients have rated our support 3 stars or above, with 86% giving us 5 stars. {{ else }} Our dedicated Australian support team are committed to providing you with exceptional customer service and a positive experience. {{ end }}
Sending an email is easy with TM3. With a selection of templates and multiple placeholders at your disposal, the key information is already there for you.
Never forget a task again! Quickly create and assign tasks and reminders to colleagues helping increase efficiency and harmony within the clinic.