Guacamole protocol reference
Drawing instructions
- arc
The arc instruction adds the specified arc subpath to the existing path, creating a new path if no path exists. The path created can be modified further by other path-type instructions, and finally stroked, filled, and/or closed.
- Arguments
layer (integer) – The layer which should have the specified arc subpath added.
x (integer) – The X coordinate of the center of the circle containing the arc to be drawn.
y (integer) – The Y coordinate of the center of the circle containing the arc to be drawn.
radius (float) – The radius of the circle containing the arc to be drawn, in pixels.
start (float) – The starting angle of the arc to be drawn, in radians.
end (float) – The ending angle of the arc to be drawn, in radians.
negative (integer) – Non-zero if the arc should be drawn from START to END in order of decreasing angle, zero otherwise.
- cfill
Fills the current path with the specified color. This instruction completes the current path. Future path instructions will begin a new path.
- Arguments
mask (integer) – The channel mask to apply when filling the current path in the specified layer.
layer (integer) – The layer whose path should be filled.
r (integer) – The red component of the color to use to fill the current path in the specified layer.
g (integer) – The green component of the color to use to fill the current path in the specified layer.
b (integer) – The blue component of the color to use to fill the current path in the specified layer.
a (integer) – The alpha component of the color to use to fill the current path in the specified layer.
- clip
Applies the current path as the clipping path. Future operations will only draw within the current path. Note that future clip instructions will also be limited by this path. To set a completely new clipping path, you must first reset the layer with a reset instruction. If you wish to only reset the clipping path, but preserve the current transform matrix, push the layer state before setting the clipping path, and pop the layer state to reset.
- Arguments
layer (integer) – The layer whose clipping path should be set.
- close
Closes the current path by connecting the start and end points with a straight line.
- Arguments
layer (integer) – The layer whose path should be closed.
- copy
Copies image data from the specified rectangle of the specified layer or buffer to a different location of another specified layer or buffer.
- Arguments
srclayer (integer) – The index of the layer to copy image data from.
srcx (integer) – The X coordinate of the upper-left corner of the source rectangle within the source layer.
srcy (integer) – The Y coordinate of the upper-left corner of the source rectangle within the source layer.
srcwidth (integer) – The width of the source rectangle within the source layer.
srcheight (integer) – The height of the source rectangle within the source layer.
mask (integer) – The channel mask to apply when drawing the image data on the destination layer.
dstlayer (integer) – The index of the layer to draw the image data to.
dstx (integer) – The X coordinate of the upper-left corner of the destination within the destination layer.
dsty (integer) – The Y coordinate of the upper-left corner of the destination within the destination layer.
- cstroke
Strokes the current path with the specified color. This instruction completes the current path. Future path instructions will begin a new path.
- Arguments
mask (integer) – The channel mask to apply when stroking the current path in the specified layer.
layer (integer) – The layer whose path should be stroked.
cap (integer) – The index of the line cap style to use. This can be either butt (0), round (1), or square (2).
join (integer) – The index of the line join style to use. This can be either bevel (0), miter (1), or round (2).
thickness (integer) – The thickness of the stroke to draw, in pixels.
r (integer) – The red component of the color to use to stroke the current path in the specified layer.
g (integer) – The green component of the color to use to stroke the current path in the specified layer.
b (integer) – The blue component of the color to use to stroke the current path in the specified layer.
a (integer) – The alpha component of the color to use to stroke the current path in the specified layer.
- cursor
Sets the client’s cursor to the image data from the specified rectangle of a layer, with the specified hotspot.
- Arguments
x (integer) – The X coordinate of the cursor’s hotspot.
y (integer) – The Y coordinate of the cursor’s hotspot.
srclayer (integer) – The index of the layer to copy image data from.
srcx (integer) – The X coordinate of the upper-left corner of the source rectangle within the source layer.
srcy (integer) – The Y coordinate of the upper-left corner of the source rectangle within the source layer.
srcwidth (integer) – The width of the source rectangle within the source layer.
srcheight (integer) – The height of the source rectangle within the source layer.
- curve
Adds the specified cubic bezier curve subpath.
- Arguments
layer (integer) – The layer which should have the specified curve subpath added.
cp1x (integer) – The X coordinate of the first control point of the curve.
cp1y (integer) – The Y coordinate of the first control point of the curve.
cp2x (integer) – The X coordinate of the second control point of the curve.
cp2y (integer) – The Y coordinate of the second control point of the curve.
x (integer) – The X coordinate of the endpoint of the curve.
y (integer) – The Y coordinate of the endpoint of the curve.
- dispose
Removes the specified layer. The specified layer will be recreated as a new layer if it is referenced again.
- Arguments
layer (integer) – The layer to remove.
- distort
Sets the given affine transformation matrix to the layer. Unlike transform, this operation is independent of any previously sent transformation matrix. This operation can be undone by setting the layer’s transformation matrix to the identity matrix using distort
- Arguments
layer (integer) – The layer to distort.
a (float) – The matrix value in row 1, column 1.
b (float) – The matrix value in row 2, column 1.
c (float) – The matrix value in row 1, column 2.
d (float) – The matrix value in row 2, column 2.
e (float) – The matrix value in row 1, column 3.
f (float) – The matrix value in row 2, column 3.
- identity
Resets the transform matrix of the specified layer to the identity matrix.
- Arguments
layer (integer) – The layer whose transform matrix should be reset.
- img
Allocates a new stream, associating it with the metadata of an image update, including the image type, the destination layer, and destination coordinates. The contents of the image will later be sent along the stream with blob instructions. The full size of the image need not be known ahead of time.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the image being sent.
mask (integer) – The channel mask to apply when drawing the image data.
layer (integer) – The destination layer.
x (integer) – The X coordinate of the upper-left corner of the destination within the destination layer.
y (integer) – The Y coordinate of the upper-left corner of the destination within the destination layer.
- lfill
Fills the current path with a tiled pattern of the image data from the specified layer. This instruction completes the current path. Future path instructions will begin a new path.
- Arguments
mask (integer) – The channel mask to apply when filling the current path in the specified layer.
layer (integer) – The layer whose path should be filled.
srclayer (integer) – The layer to use as the pattern.
- line
Adds the specified line subpath.
- Arguments
layer (integer) – The layer which should have the specified line subpath added.
x (integer) – The X coordinate of the endpoint of the line.
y (integer) – The Y coordinate of the endpoint of the line.
- lstroke
Strokes the current path with a tiled pattern of the image data from the specified layer. This instruction completes the current path. Future path instructions will begin a new path.
- Arguments
mask (integer) – The channel mask to apply when filling the current path in the specified layer.
layer (integer) – The layer whose path should be filled.
cap (integer) – The index of the line cap style to use. This can be either butt (0), round (1), or square (2).
join (integer) – The index of the line join style to use. This can be either bevel (0), miter (1), or round (2).
thickness (integer) – The thickness of the stroke to draw, in pixels.
srclayer (integer) – The layer to use as the pattern.
- move
Moves the given layer to the given location within the specified parent layer. This operation is applicable only to layers, and cannot be applied to buffers (layers with negative indices). Applying this operation to the default layer (layer 0) also has no effect.
- Arguments
layer (integer) – The layer to move.
parent (integer) – The layer that should be the parent of the given layer.
x (integer) – The X coordinate to move the layer to.
y (integer) – The Y coordinate to move the layer to.
z (integer) – The relative Z-ordering of this layer. Layers with larger values will appear above layers with smaller values.
- pop
Restores the previous state of the specified layer from the stack. The state restored includes the transformation matrix and clipping path.
- Arguments
layer (integer) – The layer whose state should be restored.
- push
Saves the current state of the specified layer to the stack. The state saved includes the current transformation matrix and clipping path.
- Arguments
layer (integer) – The layer whose state should be saved.
- rect
Adds a rectangular path to the specified layer.
- Arguments
mask (integer) – The channel mask to apply when drawing the image data.
layer (integer) – The destination layer.
x (integer) – The X coordinate of the upper-left corner of the rectangle to draw.
y (integer) – The Y coordinate of the upper-left corner of the rectangle to draw.
width (integer) – The width of the rectangle to draw.
height (integer) – The width of the rectangle to draw.
- reset
Resets the transformation and clip state of the layer.
- Arguments
layer (integer) – The layer whose state should be reset.
- set
Sets the given client-side property to the specified value. Currently there is only one property: miter-limit, the maximum distance between the inner and outer points of a miter joint, proportional to stroke width (if miter-limit is set to 10.0, the default, then the maximum distance between the points of the joint is 10 times the stroke width).
- Arguments
layer (integer) – The layer whose property should be set.
property (string) – The name of the property to set.
value (string) – The value to set the given property to.
- shade
Sets the opacity of the given layer.
- Arguments
layer (integer) – The layer whose opacity should be set.
opacity (integer) – The opacity of the layer, where 0 is completely transparent, and 255 is completely opaque.
- size
Sets the size of the specified layer.
- Arguments
layer (integer) – The layer to resize.
width (integer) – The new width of the layer
height (integer) – The new height of the layer
- start
Starts a new subpath at the specified point.
- Arguments
layer (integer) – The layer which should start a new subpath.
x (integer) – The X coordinate of the first point of the new subpath.
y (integer) – The Y coordinate of the first point of the new subpath.
- transfer
Transfers image data from the specified rectangle of the specified layer or buffer to a different location of another specified layer or buffer, using the specified transfer function.
For a list of available functions, see the definition of
guac_transfer_function
within the guacamole/protocol-types.h header included with libguac.- Arguments
srclayer (integer) – The index of the layer to transfer image data from.
srcx (integer) – The X coordinate of the upper-left corner of the source rectangle within the source layer.
srcy (integer) – The Y coordinate of the upper-left corner of the source rectangle within the source layer.
srcwidth (integer) – The width of the source rectangle within the source layer.
srcheight (integer) – The height of the source rectangle within the source layer.
function (integer) –
The index of the transfer function to use.
For a list of available functions, see the definition of
guac_transfer_function
within the guacamole/protocol-types.h header included with libguac.dstlayer (integer) – The index of the layer to draw the image data to.
dstx (integer) – The X coordinate of the upper-left corner of the destination within the destination layer.
dsty (integer) – The Y coordinate of the upper-left corner of the destination within the destination layer.
- transform
Applies the specified transformation matrix to future operations. Unlike distort, this operation is dependent on any previously sent transformation matrices, and only affects future operations. This operation can be undone by setting the layer’s transformation matrix to the identity matrix using identity, but image data already drawn will not be affected.
- Arguments
layer (integer) – The layer to apply the given transformation matrix to.
a (float) – The matrix value in row 1, column 1.
b (float) – The matrix value in row 2, column 1.
c (float) – The matrix value in row 1, column 2.
d (float) – The matrix value in row 2, column 2.
e (float) – The matrix value in row 1, column 3.
f (float) – The matrix value in row 2, column 3.
Streaming instructions
- ack
The ack instruction acknowledges a received data blob, providing a status code and message indicating whether the operation associated with the blob succeeded or failed. A status code other than 0 (
SUCCESS
) implicitly ends the stream.- Arguments
stream (integer) – The index of the stream the corresponding blob was received on.
message (string) – A human-readable error message. This typically is not exposed within any user interface, and mainly helps with debugging.
status (integer) – The Guacamole status code denoting success or failure. For a list of status codes, see the table in Status codes.
- argv
Allocates a new stream, associating it with the given argument (connection parameter) metadata. The relevant connection parameter data will later be sent along the stream with blob instructions. If sent by the client, this data will be the desired new value of the connection parameter being changed, and will be applied if the server supports changing that connection parameter while the connection is active. If sent by the server, this data will be the current value of a connection parameter being exposed to the client.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the connection parameter being sent. In most cases, this will be “text/plain”.
name (string) – The name of the connection parameter whose value is being sent.
- audio
Allocates a new stream, associating it with the given audio metadata. Audio data will later be sent along the stream with blob instructions. The mimetype given must be a mimetype previously specified by the client during the handshake procedure. Playback will begin immediately and will continue as long as blobs are received along the stream.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the audio data being sent.
- blob
Sends a blob of data along the given stream. This blob of data is arbitrary, base64-encoded data, and only has meaning to the Guacamole client or server through the metadata assigned to the stream when the stream was allocated.
- Arguments
stream (integer) – The index of the stream along which the given data should be sent.
data (string) – The base64-encoded data to send.
- clipboard
Allocates a new stream, associating it with the given clipboard metadata. The clipboard data will later be sent along the stream with blob instructions. If sent by the client, this data will be the contents of the client-side clipboard. If sent by the server, this data will be the contents of the clipboard within the remote desktop.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the clipboard data being sent. In most cases, this will be “text/plain”.
- end
The end instruction terminates an open stream, freeing any client-side or server-side resources. Data sent to a terminated stream will be ignored. Terminating a stream with the end instruction only denotes the end of the stream and does not imply an error.
- Arguments
stream (integer) – The index of the stream the corresponding blob was received on.
- file
Allocates a new stream, associating it with the given arbitrary file metadata. The contents of the file will later be sent along the stream with blob instructions. The full size of the file need not be known ahead of time.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the file being sent.
filename (string) – The name of the file, as it would be saved on a filesystem.
- msg
Sends a message from the server (guacd) to the client. The nature of these messages is intentionally broad and flexible - the message must include a numeric code that the client understands and can act on, and may also any number of arguments that can be used by the client in association with the message.
- Arguments
msg (integer) – A numeric value indicating the message that is being passed to the client.
args (string) – Any number of arguments associated with the message that is being sent to the client.
- pipe
Allocates a new stream, associating it with the given arbitrary named pipe metadata. The contents of the pipe will later be sent along the stream with blob instructions. Pipes in the Guacamole protocol are unidirectional, named pipes, very similar to a UNIX FIFO or pipe. It is up to client-side code to handle pipe data appropriately, likely based upon the name of the pipe, which is arbitrary. Pipes may be opened by either the client or the server.
- Arguments
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the data being sent along the pipe.
name (string) – The arbitrary name of the pipe, which may have special meaning to client-side code.
- video
Allocates a new stream, associating it with the given video metadata. Video data will later be sent along the stream with blob instructions. The mimetype given must be a mimetype previously specified by the client during the handshake procedure. Playback will begin immediately and will continue as long as blobs are received along the stream.
- Arguments
stream (integer) – The index of the stream to allocate.
layer (integer) – The index of the layer to stream the video data into. The effect of other drawing operations on this layer during playback is undefined, as the client codec implementation may leverage any rendering mechanism it sees fit, including hardware decoding.
mimetype (string) – The mimetype of the video data being sent.
Object instructions
- body
Allocates a new stream, associating it with the name of a stream previously requested by a get instruction. The contents of the stream will be sent later with blob instructions. The full size of the stream need not be known ahead of time.
- Arguments
object (integer) – The index of the object associated with this stream.
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the data being sent.
name (string) – The name of the stream associated with the object.
- filesystem
Allocates a new object, associating it with the given arbitrary filesystem metadata. The contents of files and directories within the filesystem will later be sent along streams requested with get instructions or created with put instructions.
- Arguments
object (integer) – The index of the object to allocate.
name (string) – The name of the filesystem.
- get
Requests that a new stream be created, providing read access to the object stream having the given name. The requested stream will be created, in response, with a body instruction.
Stream names are arbitrary and dictated by the object from which they are requested, with the exception of the root stream of the object itself, which has the reserved name “
/
”. The root stream of the object has the mimetype “application/vnd.glyptodon.guacamole.stream-index+json
”, and provides a simple JSON map of available stream names to their corresponding mimetypes. If the object contains a hierarchy of streams, some of these streams may also be “application/vnd.glyptodon.guacamole.stream-index+json
”.For example, the ultimate content of the body stream provided in response to a get request for the root stream of an object containing two text streams, “A” and “B”, would be the following:
{ "A" : "text/plain", "B" : "text/plain" }
- Arguments
object (integer) – The index of the object to request a stream from.
name (string) – The name of the stream being requested from the given object.
- put
Allocates a new stream, associating it with the given arbitrary object and stream name. The contents of the stream will later be sent with blob instructions.
- Arguments
object (integer) – The index of the object associated with this stream.
stream (integer) – The index of the stream to allocate.
mimetype (string) – The mimetype of the data being sent.
name (string) – The name of the stream within the given object to which data is being sent.
- undefine
Undefines an existing object, allowing its index to be reused by another future object. The resource associated with the original object may or may not continue to exist - it simply no longer has an associated object.
- Arguments
object (integer) – The index of the object to undefine.
Client handshake instructions
- audio
Specifies which audio mimetypes are supported by the client. Each parameter must be a single mimetype, listed in order of client preference, with the optimal mimetype being the first parameter.
- connect
Begins the connection using the previously specified protocol with the given arguments. This is the last instruction sent during the handshake phase.
The parameters of this instruction correspond exactly to the parameters of the received args instruction. If the received args instruction has, for example, three parameters, the responding connect instruction must also have three parameters.
- image
Specifies which image mimetypes are supported by the client. Each parameter must be a single mimetype, listed in order of client preference, with the optimal mimetype being the first parameter.
It is expected that the supported mimetypes will include at least “image/png” and “image/jpeg”, and the server may safely assume that these mimetypes are supported, even if they are absent from the handshake.
- name
Specifies the human-readable name of the user joining a connection. A single, string value is expected for this, and guacd does not expect or require that this value be unique among other users connected to the server or connection. The type of name provided is completely up to the client implementation.
- select
Requests that the connection be made using the specified protocol, or to the specified existing connection. Whether a new connection is established or an existing connection is joined depends on whether the ID of an active connection is provided. The Guacamole protocol dictates that the IDs generated for active connections (provided during the handshake of those connections via the ready instruction) must not collide with any supported protocols.
This is the first instruction sent during the handshake phase.
- Arguments
identifier (string) – The name of the protocol to use, such as “vnc” or “rdp”, or the ID of the active connection to be joined, as returned via the ready instruction.
- size
Specifies the client’s optimal screen size and resolution.
- Arguments
width (integer) – The optimal screen width.
height (integer) – The optimal screen height.
dpi (integer) – The optimal screen resolution, in approximate DPI.
- timezone
Specifies the timezone of the client system, in IANA zone key format. This is a single-value parameter, and may be used by protocols to set the timezone on the remote computer, if the remote system allows the timezone to be configured. This instruction is optional.
- Arguments
timezone (string) –
- video
Specifies which video mimetypes are supported by the client. Each parameter must be a single mimetype, listed in order of client preference, with the optimal mimetype being the first parameter.
Server handshake instructions
- args
Reports the expected format of the argument list for the protocol requested by the client. This message can be sent by the server during the handshake phase only.
The first parameter of this instruction will be the protocol version supported by the server. This is used to negotiate protocol compatibility between the client and the server, with the highest supported protocol by both sides being chosen. Versions of Guacamole prior to 1.1.0 do not support protocol version negotiation, and will silently ignore this instruction.
The remaining parameters of the args instruction are the names of all connection parameters accepted by the server for the protocol selected by the client, in order. The client’s responding connect instruction must contain the values of each of these parameters in the same order.
Control instructions
- disconnect
Notifies the client or server that the connection is about to be closed. This message can be sent during any phase, and takes no parameters.
- nop
The “nop” instruction does absolutely nothing, has no parameters, and is universally ignored by both Guacamole clients and servers. Its main use is as a keep-alive signal, and may be sent by guacd, client plugins, or web applications when there is no activity to ensure the socket is not closed due to timeout.
- sync
Reports that all operations as of the given server-relative timestamp have been completed. Both client and server are expected to occasionally send sync to report on current operation execution state, with the server using sync to denote the end of a logical frame.
If a sync is received from the server, the client must respond with a corresponding sync once all previous operations have been completed, or the server may stop sending updates until the client catches up. For the client, sending a sync with a timestamp newer than any timestamp received from the server is an error.
- Arguments
timestamp (integer) – A valid server-relative timestamp.
Server control instructions
- error
Notifies the client that the connection is about to be closed due to the specified error. This message can be sent by the server during any phase.
- Arguments
message (string) – An arbitrary message describing the error
status (integer) – The Guacamole status code describing the error. For a list of status codes, see the table in Status codes.
- log
The log instruction sends an arbitrary string for debugging purposes. This instruction will be ignored by Guacamole clients, but can be seen in protocol dumps if such dumps become necessary. Sending a log instruction can help add context when searching for the cause of a fault in protocol support.
- Arguments
message (string) – An arbitrary, human-readable message.
- mouse
Reports that a user on the current connection has moved the mouse to the given coordinates.
- Arguments
x (integer) – The current X coordinate of the mouse pointer.
y (integer) – The current Y coordinate of the mouse pointer.
- ready
The ready instruction sends the ID of a new connection and marks the beginning of the interactive phase of a new, successful connection. The ID sent is a completely arbitrary string, and has no standard format. It must be unique from all existing and future connections and may not match the name of any installed protocol support.
- Arguments
identifier (string) – An arbitrary, unique identifier for the current connection. This identifier must be unique from all existing and future connections, and may not match the name of any installed protocol support (such as “vnc” or “rdp”).
Input/Event instructions
- key
Sends the specified key press or release event.
- Arguments
keysym (integer) – The X11 keysym of the key being pressed or released.
pressed (integer) – 0 if the key is not pressed, 1 if the key is pressed.
- mouse
Sends the specified mouse movement or button press or release event (or combination thereof).
- Arguments
x (integer) – The current X coordinate of the mouse pointer.
y (integer) – The current Y coordinate of the mouse pointer.
mask (integer) – The button mask, representing the pressed or released status of each mouse button.
- size
Specifies that the client’s optimal screen size has changed from what was specified during the handshake, or from previously-sent “size” instructions.
- Arguments
width (integer) – The new, optimal screen width.
height (integer) – The new, optimal screen height.
Status codes
Several Guacamole instructions, and various other internals of the Guacamole core, use a common set of numeric status codes. These codes denote success or failure of operations, and can be rendered by user interfaces in a human-readable way.
- 0 (
SUCCESS
) The operation succeeded. No error.
- 256 (
UNSUPPORTED
) The requested operation is unsupported.
- 512 (
SERVER_ERROR
) An internal error occurred, and the operation could not be performed.
- 513 (
SERVER_BUSY
) The operation could not be performed because the server is busy.
- 514 (
UPSTREAM_TIMEOUT
) The upstream server is not responding. In most cases, the upstream server is the remote desktop server.
- 515 (
UPSTREAM_ERROR
) The upstream server encountered an error. In most cases, the upstream server is the remote desktop server.
- 516 (
RESOURCE_NOT_FOUND
) An associated resource, such as a file or stream, could not be found, and thus the operation failed.
- 517 (
RESOURCE_CONFLICT
) A resource is already in use or locked, preventing the requested operation.
- 518 (
RESOURCE_CLOSED
) The requested operation cannot continue because the associated resource has been closed.
- 519 (
UPSTREAM_NOT_FOUND
) The upstream server does not appear to exist, or cannot be reached over the network. In most cases, the upstream server is the remote desktop server.
- 520 (
UPSTREAM_UNAVAILABLE
) The upstream server is refusing to service connections. In most cases, the upstream server is the remote desktop server.
- 521 (
SESSION_CONFLICT
) The session within the upstream server has ended because it conflicts with another session. In most cases, the upstream server is the remote desktop server.
- 522 (
SESSION_TIMEOUT
) The session within the upstream server has ended because it appeared to be inactive. In most cases, the upstream server is the remote desktop server.
- 523 (
SESSION_CLOSED
) The session within the upstream server has been forcibly closed. In most cases, the upstream server is the remote desktop server.
- 768 (
CLIENT_BAD_REQUEST
) The parameters of the request are illegal or otherwise invalid.
- 769 (
CLIENT_UNAUTHORIZED
) Permission was denied, because the user is not logged in. Note that the user may be logged into Guacamole, but still not logged in with respect to the remote desktop server.
- 771 (
CLIENT_FORBIDDEN
) Permission was denied, and logging in will not solve the problem.
- 776 (
CLIENT_TIMEOUT
) The client (usually the user of Guacamole or their browser) is taking too long to respond.
- 781 (
CLIENT_OVERRUN
) The client has sent more data than the protocol allows.
- 783 (
CLIENT_BAD_TYPE
) The client has sent data of an unexpected or illegal type.
- 797 (
CLIENT_TOO_MANY
) The client is already using too many resources. Existing resources must be freed before further requests are allowed.
Message Codes
The msg instruction must have at least one numeric argument that the client then uses to interpret the message and determine what action, if any, it should take based on the message. The following numeric codes are currently implemented for this instruction.
- 1 (
USER_JOINED
) Notifies the owner of a connection that another user has joined the connection. This message is expected to include two additional arguments: the guacd-generated UUID of the user who is joining the connection, and the arbitrary name of the user provided by the client during the handshake.
- 2 (
USER_LEFT
) Notifies the owner of a connection that another user has left the connection. This message is expected to include two additional arguments: the guacd-generated UUID of the user who is leaving the connection, and the arbitrary name of the user provided by the client during the handshake.


Grandmom's Sweet Kitchen is a cooking blog featuring everyone's beloved Grandmom Suzy.
While Grandmom's kitchen mostly smells like sweets, you can also find savory recipes as well as guides for other handcrafted goodies.
As you step into Grandmom's kitchen for the first time a zesty and tangy smell is in the air. It smells really similar to lemons and yet it smells sweet as well.
That's because Grandma's Lemon Maringue Pie was just done baking.
Featuring a fragrant flaky crust, sweet lemon filling with just the right amount of sourness and incredibly fluffy meringue.
The perfect afternoon treat along with a cup of tea or lemonade.


Welcome to Comprior’s documentation!¶
- Installation and Usage
- Example Use Cases
- Input Data Sets
- Configuration Parameters
- Folder Structure - Where to find what Files (In- and Output)
- Knowledge Bases
- Prior Knowledge Approaches
- Extending Comprior - How-Tos
- Python Code Documentation
- R Code Documentation
- Java Code Documentation
- System Architecture


history.push('/start');
What is a Router?
Why do we need it?
In Web Development
Routing is a process of matching of a URL to a View
In Single Page Applications (SPAs)
View is a set of components being rendered
Router dynamically loads components and changes what's displayed in the Browser as user navigates the page.
P. S. Without reloading the page
P. P. S. Because it's SPA
React isn't a framework, it's a library.
Therefore, it doesn't solve all the application's needs.
It does a great job at creating components and managing state,
but creating a more complex SPA requires additional libraries.
React Router is an external library that manages navigation
and rendering of components in the React applications
First thing to check when looking for a documentation,
an article or a solution at StackOverflow,
it that it is about React Router v4+.
https://reacttraining.com/react-router/core/guides/philosophy
React Router is not included in React by default,
so you need to install it on top of React itself:
npm install --save react
npm install --save react-dom
npm install --save react-router-dom
It's not even included in Create React App by default:
npx create-react-app my-app
cd my-app
npm install --save react-router-dom
There are three types of components in React Router:
BrowserRouter
import { BrowserRouter } from 'react-router-dom';
HashRouter
import { HashRouter } from 'react-router-dom';
BrowserRouter requires a default SPA route to be configured on Server.
Otherwise here's what's happening:
Default SPA route on Express server
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, '../dist')));
app.get('*', (req, res) => { // SPA default route
res.sendFile(path.join(__dirname, '../dist/index.html'));
});
app.listen(3000);
Default SPA route on Webpack Dev Server
const path = require('path');
module.exports = {
devServer: {
inline: true,
contentBase: './',
historyApiFallback: { // SPA default route
index: 'index.html'
}
},
};
HashRouter is the fallback in case
there is no control of Server side or static HTML.
Like GitHub Pages for example.
Or this presentation.
HashRouter on Static Server
Importing a Router component:
import { BrowserRouter } from 'react-router-dom';
import { HashRouter } from 'react-router-dom';
Renaming to Router on import:
import { BrowserRouter as Router } from 'react-router-dom';
import { HashRouter as Router } from 'react-router-dom';
There are two route matching components:
Importing the Route matching components
import { Route } from 'react-router-dom';
import { Route, Switch } from 'react-router-dom';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
// when location.pathname = '/about'
<Route path='/about' component={About} /> // renders <About/>
<Route path='/contact' component={Contact} /> // renders null
<Route component={Always} /> // renders <Always/>
// v5.1+ alternative to <Route path="/about" component={About} />
<Route path="/about">
<About />
</Route>
import React from 'react';
import { render } from 'react-dom';
import { BrowserRouter, Route } from 'react-router-dom';
const Hello = () => (Hello, World!
);
const App = () => (
<BrowserRouter>
<Route path="/" component={Hello} />
</BrowserRouter>
);
render(<App />, document.getElementById('root'));
A <Router> may have only one child element in v4
...
const App = () => (
<BrowserRouter>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
</BrowserRouter>
);
...
Uncaught Error: A <Router> may have only one child element
at invariant (browser.js:38)
at Router.componentWillMount (Router.js:73)
at callComponentWillMount (react-dom.development.js:6370)
Multiple <Router> children must be wrapped in v4 (they're OK in v5)
...
const App = () => (
<BrowserRouter>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
</BrowserRouter>
);
...
...
const App = () => (
<BrowserRouter>
<Route path="/" component={Home} />
<Route path="/about" component={About} />
</BrowserRouter>
);
...
...
const App = () => (
<BrowserRouter>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
</BrowserRouter>
);
...
const App = () => (
<BrowserRouter>

<Route path="/user" component={UserMenu} />

<Route exact path="/" component={Home} />
<Route path="/user" component={UserContent} />

</BrowserRouter>
);
import { BrowserRouter, Route, Switch } from 'react-router-dom';
const App = () => (
<BrowserRouter>
<Switch>
<Route path="/users/add" component={UsersAdd} />
<Route path="/users" component={Users} />
<Route path="/" component={Home} />
</Switch>
</BrowserRouter>
);
// Instead of this
<Switch>
<Route path="/user" component={User} />
<Route path="/profile" component={User} />
</Switch>
// You can use an array in v5
<Route path={['/user', '/profile']} component={User} />
<Link> component is used to create links in your application
<Link to='/'>Home</Link>
When a <Link> is rendered, an  will be rendered in HTML
Home
Now we are ready to revisit our BrowserRouter & HashRouter friends!
<Link> to object
<Link to={{
pathname: '/about', // A string representing the path to link to
search: '?what=company', // A string represenation of query parameters
hash: '#sub-section', // A hash to put in the URL
state: { fromHome: true } // State to persist to the location
}}>
Home
</Link>
<Link replace>
When true, clicking the link will replace the current entry in the history stack instead of adding a new one.
<Link to='/about' replace>Home</Link>
<NavLink> is a special type of <Link> that can style itself as “active” when its to prop matches the current location
// when location.pathname = '/about'
<NavLink to="/about">About</NavLink> // 'active' class is added by default
<NavLink to="/about" activeClassName="special">About</NavLink>
<NavLink to="/about" activeStyle={{
fontWeight: bold,
color: orange
}}>About</NavLink>
<NavLink> analyses its current location, just like <Route> does.
Thus the same caveats:
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contacts" component={Contacts} />
</Switch>
<NavLink exact> and <NavLink strict>
<NavLink exact to="/">Home</NavLink>
<Route exact path="/">Home</NavLink>
<NavLink strict to="/about/">About</NavLink>
<Route strict path="/about/">About</NavLink>
When <Redirect> is rendered it navigates to a new location.
Current location is replaced in the history stack (replace by default)
<Redirect to="/about" />
<Redirect to={{
pathname: '/login',
search: '?utm=your+face',
state: { from: currentLocation }
}}>
<Redirect from> within a Switch
<Switch>
<Route path="/new" component={New} />
<Redirect from="/old" to="/new">
</Switch>
<Redirect exact> and <Redirect strict>
<Switch>
<Route path="/new" component={New} />
<Redirect exact strict from="/old/path/" to="/new">
</Switch>
Override the default repalce
<Redirect push to="/about">About</Redirect>
There are 3 ways to render something with a <Route>:
P.S. You'll have to choose
All the 3 render methods will be passed the same 3 route props:
object contains information about how a <Route path> matched the URL.
props: {
match: {
path: '/about/:name', // The path pattern used to match.
url: '/about/joe', // The matched portion of the URL.
isExact: true, // true if the entire URL was matched.
params: { // Key/value pairs parsed from the URL,
name: 'joe' // corresponding to the dynamic segments
} // of the path
}
}
object contains current location and passed state
props: {
location: {
key: 'ac3df4', // not with HashHistory!
pathname: '/somewhere'
search: '?some=search-string',
hash: '#howdy',
state: {
[userDefined]: true
}
}
}
object refers to the history package, which is one of only 2 major dependencies of React Router (besides React itself), and which provides several different implementations for managing session history in JavaScript in various environments:
history: {
length: 10 // The number of entries in the history stack
action: 'PUSH' // The current action (PUSH, REPLACE, or POP)
location: {} // The current location object
push(path, [state]) // Pushes a new entry onto the history stack
replace(path, [state]) // Replaces the current entry on the history stack
go(n) // Moves the pointer in the history stack by n entries
goBack() // Equivalent to go(-1)
goForward() // Equivalent to go(1)
block(prompt) // Prevents navigation (see the history docs)
}
<Route component> with match parameter
<Route path="/user/:username" component={User}/>
const User = ({ match }) => {
return Hello {match.params.username}!
}
Custom match parameters
// Set custom match parameters in the Route
<Route path="/:company/:division" component={About}/>
// Access the value in component like so:
About {match.params.division} division of {match.params.company}
path can be any valid URL path that path-to-regexp understands.
https://www.npmjs.com/package/path-to-regexp
Custom match parameters support regexp matches
/optional/:param? // /optional, /optional/foo
/optional/:param* // /optional, /optional/foo/, optional/foo/bar
/optional/:param+ // /optional/foo/, optional/foo/bar
/number/(\d+) // /number/1, 123, 12345
/number/(\d{1,3}) // /number/123
/phone/(\d{3})-(\d{3})-(\d{4}) // /phone/067-123-4567
/date/:iso(\d{4}-\d{2}-\d{2}) // /date/2018-12-31, ISO 8601 format date
/time/:hh(\d{2})::mm(\d{2}) // /time/10:45
/:key/:value(\d+) // /iq/80, /weight/150
<Route render>
// Inline rendering
<Route path="/home" render={() => Home}/>
// Wrapping, passing data
const BooksList = ({ books }) => (
{books.map(book => (- {book.title}
))}
);
const BooksListWithDataPassed = (props) => {
const books = [ { id: 1, title: 'bukvar'}, ... ]; // data
return (<BooksList {...props} books={books} />);
}
<Route path="/books" render={BooksListWithDataPassed} />
<Route children>
// children is rendered always, but when it didn't match, match is null
const RenderMeAnyway = ({ match }) => (
match
? (I matched!)
: (I didn't match, but still rendered)
);
<Route path="/match" children={RenderMeAnyway} />
Protected Route
const Login = () => (You must log in);
const Admin = () => (Welcome to admin zone);
const ProtectedRoute = (props) => (
authService.checkAuth()
? (<Admin {...props} />)
: (<Redirect to="/" />)
);
const App = () => (
<Router>
<Route exact path="/" component={Login} />
<Route path="/admin" render={ProtectedRoute}/>
</Router>
);
Nested Routes
const App = () => (
<Router>
<Route path="/tacos" component={Tacos}/>
</Router>
);
const Tacos = () => (
<Route path="/tacos/carnitas" component={Carnitas} />
);
Nested Routes with match
const App = () => (
<Router>
<Route path="/tacos" component={Tacos}/>
</Router>
);
const Tacos = ({ match }) => (
<Route path={match.url + '/carnitas'} component={Carnitas} />
);
withRouter()
The match, location and history props are only available to the component immediately rendered by Route. In case you need to access them in a deeper level component you may either forward them down in props, or use withRouter. withRouter HOC will pass the closest Route's match, location, and history props to the wrapped component whenever it renders.
withRouter()
import React, { Component } from 'react';
import { withRouter } from 'react-router';
class ShowTheLocation extends Component {
render() {
const { match, location, history } = this.props
return (You are now at {location.pathname});
}
}
export default withRouter(ShowTheLocation);
Navigate programmatically
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class UseHistory extends Component {
goAway = () => this.props.history.push('/away');
render() {
return (
<button onClick={this.goAway}>Go Away</button>
);
}
}
export default withRouter(ShowMatchUseHistory);
React Router API Hooks
import { useRouteMatch, useLocation, useHistory, useParams } from 'react-router-dom';
const DeepComponent = () => { // not a "route component", far deep from Route
const match = useRouteMatch();
const location = useLocation();
const history = useHistory();
const params = useParams();
return (
<>

match.path: {match.path}

location.pathname: {location.pathname}

params.answer: {params.answer}

<button onClick={() => history.push('/home')}>Go Home</button>
</>
);
};
Transition Animation
import { TransitionGroup, CSSTransition } from "react-transition-group";
<Route
render={({ location }) => (
<TransitionGroup>
<CSSTransition key={location.key} classNames="fade" timeout={5000}>
<Switch location={location}>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
</Switch>
</CSSTransition>
</TransitionGroup>
)}
/>
Thank You
Oleksiy Лёша Dubovyk
github.com/dubbha/react-router-lecture
github.com/dubbha/react-router-examples


Using a Toy Lightsaber Seems Like the Best Way to Play Star Wars Jedi: Fallen Order
by Luke PlunkettCustom controller pioneer Rudeism is back with a very nice setup for Star Wars Jedi: Fallen Order, which involves a lightsaber, a glove and what looks like some very gratifying force powers.
The lightsaber is just a plastic toy version with motion sensors in it, while the glove also has motion sensors, with thumbsticks and buttons for movement and actions spread across both.
As you’d expect/hope, you swing the toy lightsaber to swing the in-game weapon, and you push your hand around to activate Cal’s force powers:


Login Navbar
Login
Invalid username or password.
You have been logged out.
Username
Password
Register
Login


THE ARRIVAL A film review by Mark R. Leeper Copyright 1996 Mark R. Leeper
Capsule: This is a tired retread of too many action films with an unnecessary science fiction premise thrown in. Some of the special effects are reasonable, but there is a great deal of silliness in the plot. If you really are looking for something original and different to see this summer you will find that THE ARRIVAL is not much of a departure. Rating: high 0 (-4 to +4) [A discussion of some of the ideas follows the main review, but at least one of the comments might be a spoiler.]
Start with a standard conspiracy and cover-up story. However, instead of making the villain be the government or the Mafia or enemy agents, this time make it be aliens. That gives you a little latitude for a few nice special effects and allows you to exploit the publicity for INDEPENDENCE DAY. That seems to be what happened with THE ARRIVAL. The plot is pretty much a standard loner-on-the-run not knowing whom he can trust that has been around since THE 39 STEPS and probably longer. David Twohy proves that it does not take a whole lot of effort to make this tried-and-true suspense formula into a science fiction film. Two previously wrote and directed DISASTER IN TIME, and there he did a reasonable job. That adaptation of C. L. Moore's "Vintage Season" added adventure elements to a classic story and arguably actually improved on the original. However he also co-authored the script for WATERWORLD, which depended too much on all-too-familiar action film devices. With THE ARRIVAL he is back to re-framing the all-too- familiar, once again writing and directing.
Zane Zaminski (played by Charlie Sheen) is a radio astronomer working for NASA on the Search for Extra- terrestrial Intelligence project when he receives a signal from space that seems to be a message from something intelligent. Bringing it to his supervisor, Gordian (Ron Silver), he finds that some people, and especially Gordian, seem more anxious to hush up the discovery than to act on the tremendous implications of the signal. Zaminski finds himself fired and the tape of the intercepted signal is destroyed. He determines that he can search for the signal again by hijacking all the television satellite dishes in the neighborhood, re-rigging them so that he can direct them at will, and using them to try to again find his signal. The information he gets is sufficient to tip him off that there is something odd that has to be investigated in Mexico and the chase begins in earnest.
Twohy's script really needed to use its science fiction premise more effectively in the plot. Too often the premise of the aliens is relegated to McGuffin. If a character is hanging onto something for dear life, does it really make this a science fiction film if the thing held onto is a radio telescope rather than the Statue of Liberty? Does it make the story any more exciting? And for an action plot, THE ARRIVAL's is rather flaccid with only one scene of any real tension, and that involving poisonous insects and not aliens. Charlie Sheen could have used a winning performance to his credit, but his radio astronomer is neither winning nor believable. Lindsay Crouse, whose wooden performance was the only major problem with HOUSE OF GAMES, gives an only slightly better performance here. Tony T. Johnson is the little boy next door, to whom Sheen can explain what would not otherwise be obvious to the audience. Teri Polo, the Christine Daae of the 1990 TV version of THE PHANTOM OF THE OPERA, is along as the female companion of Zaminski, but neither the character nor the actress is very much help.
I somehow think that David Twohy wanted to have made a science fiction film, but did not have his heart in writing science fiction. This chase/action film gets a high 0 on the -4 to +4 scale.
SPOILER... SPOILER... SPOILER... SPOILER... SPOILER... SPOILER...
The idea that Zaminski could build his own radio telescope to find the signal again is ludicrous since it would take more money than he could put into the project and putting all the television satellite antennas out of commission would give him away before he could use the scheme. My guess is that this handful of small dishes would not accomplish his purpose in any case. Radio telescopes have to be really large because they generally use very large wave lengths, though admittedly the script says that Zaminski was looking in the FM band. The Very Large Array near Socorro, New Mexico has 21 antennas, each 81 feet high and 422 feet in diameter. They are on a Y-shaped rail track 22 miles across. They can be brought in to the center in a tight configuration or spread out over the whole track, having the equivalent effect of looking with a wide-angle lens or with a telephoto lens. However, this array is very often used in conjunction with other radio telescopes in other parts of the world so the huge array that so astounded Zaminski at one point in the plot should not have been even a novel idea to a real radio astronomer. Another problem that is conveniently overlooked is the length of time it takes the aliens to communicate with "something that moves like a star" and not a satellite, so presumably it is a star. There is also a plot problem involving the note that Kiki left for his grandmother.
Mark R. Leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Good Morning All!
Firstly thank you to OEM team for supplying this project, its been great working through it.
I have built the currently only circuit using an Arduino Nano and transmitting the data using XBEE (although the wirless medium is not important). Within the circuit i am using two 10K resistors as a potential devider and a 33 burden resistor and i am using this current sensor https://www.sparkfun.com/products/11005.
It seems to be responding correctly when appliances are plugged it, however at idle it is throwing out 40-50 watts constantly which is obviously incorrect. I appreciate that its not taking a reference voltage but that surely wont cause such bad accuracy.
Any help on the matter would be really appreciated as im sure its something simple!
Re: EMON Current Only Incorrect Power Readings at Idle
There are two possible sources of your unwanted current. One is digital noise coming from the processor itself, the other is voltage pick-up from the cable the c.t. is clipped around. The first you can probably do little about, the second can be reduced if not removed completely by clipping onto the neutral rather than the line cable.
The problem is, the software rectifies the voltage from the burden resistor and any input at whatever frequency appears as a current. I've no idea how you have calibrated your input, so it's hard to judge whether you have a lot of pick-up or a normal amount of pick-up but a lot of amplification in the software. At the risk of overloading your c.t. (and hence introducing distortion and different inaccuracies), you could try increasing the value of the burden resistor and compensating for the increased voltage in the software. As it stands, you will only get fractionally more than 1/4 of the full input range if your analogue reference is 5 V.
It has been suggested that a 2n2 capacitor from ground to the analogue input pin will 'cure' the noise, but I have not tried this.
Re: EMON Current Only Incorrect Power Readings at Idle
Robert,
Thank you for your response.
I have just changed the CT from the live to the neutral line, this made no difference so i can eliminate that.
I will increase my burden resistor but where about's would i make calibrations to the software as i have not done this yet.
Many Thanks
Re: EMON Current Only Incorrect Power Readings at Idle
It's all here: CT and AC power adaptor installation and calibration theory
Re: EMON Current Only Incorrect Power Readings at Idle
How about running my MinMaxAndRangeChecker tool to see what ADC values you're getting?
Another constructor recently posted values which showed at most a 1-level movement in the ADC values for his current sensor when idle. That's nothing like 40 - 50 Watts.


| 1 |
| h00 |
| CS32 F18 |
| Name: | ||||
|---|---|---|---|---|
| (as it would appear on official course roster) | ||||
| Umail address: | @umail.ucsb.edu | |||
| Optional: name you wish to be called if different from name above. | ||||
| Optional: name of "homework buddy" (leaving this blank signifies "I worked alone" |
h00: Linear Search
| ready? | assigned | due | points |
|---|---|---|---|
| true | Tue 10/02 08:00AM | Tue 10/09 02:00PM |
You may collaborate on this homework with AT MOST one person, an optional "homework buddy".
MAY ONLY BE TURNED IN IN THE LECTURE LISTED ABOVE AS THE DUE DATE,
OR IF APPLICABLE, SUBMITTED ON GRADESCOPE. There is NO MAKEUP for missed assignments;
in place of that, we drop the four lowest scores (if you have zeros, those are the four lowest scores).
-
(10 pts) Before attending your first discussion section (lab), please ensure that you can access your CSIL / College of Engineering Account. Either visit CSIL (the lab on first floor ocean side of Harold Frank Hall), and try to login, or use an ssh client to see if you can access csil.cs.ucsb.edu.
If you need help creating or accessing your CoE/CSIL account, visit https://accounts.engr.ucsb.edu
Then, write your College of Engineering account username below. DO NOT WRITE YOUR PASSWORD. DO NOT EVER WRITE YOUR PASSWORD!!
Course Textbooks
- PS9: Problem Solving with C++, 9th Edition by Walter Savitch (used in CS16 - Purple/Blue cover. There is a newer edition available, but I don’t want everyone to buy a new edition if you already have the 9th edition from when you took CS 16).
- DS4: Data Structures and Other Objects Using C++, 4th edition by Michael Main and Walter Savitch (used in CS24 - Brown cover)
Both books are required for this course. This homework will only refer to DS4 (the brown book), but future homework assignments may draw on either or both of the two books.
Reading: In DS4 read pages 584-594; STOP at p. 594 (pp 594-598 will be covered on H02).
Also, read the “C++ Feature” box about size_t
on p. 100. You only need to read the part in the sans-serif font beside the “C++ Feature” logo, but if you read a few extra lines of the main text, you’ll see better how size_t
is used. Since size_t
is used in Section 12.1, it’s helpful to review this material from Chapter 3 in case you glossed over it during CS24.
Then, answer the questions on the back of this homework.
Questions about DS4, pages 584-586.
-
(10 pts) Serial search is also called "linearSearch". Suppose you are writing a standalone C++ function called linearSearch that searches through an unsorted C++ builtin array array of int values using this technique. Write the function prototype for this function—ONLY the function protototype. Be sure to include the name and type all the input parameters you would need, and a suitable type for the return value. Assume the function returns the index of the value if found, and -1 if the value is not found. Choose parameter names that make sense and represent good programming style (i.e. clearly document the purpose of the parameters that are being passed in.)
-
(10 pts) For this question, please review pp 584-586 and read both sides of the handout (http://www.cs.ucsb.edu/~richert/cs32/misc/h00-handout.pdf). Then answer this question about the expected number of array accesses for linear search.
- Suppose there are nine array elements,
a[0]
througha[8]
. - Each of the odd elements,
a[1]
,a[3]
,a[5]
, anda[7]
has a 10% chance (0.1) of being the one searched for. - Each of the even elements
a[0]
,a[2]
,a[4]
,a[6]
anda[8]
has a 5% change (0.05) of being the one searched for. - With probability 35% (0.35), the element being sought is not found in the array.
In this case, what is the expected number of array accesses?
- Suppose there are nine array elements,
- In CMPSC 24, you should have learned about big-Oh analysis, i.e.
asymptotic worst-case run-time analysis.
-
(10 pts) What is the big-O analysis of a find(key) operation on a
sorted array of n keys, implemented using binary
search?
Circle your answer.
Note that log, in the context of big-O, typically means log
based 2, but since all logs are related by a constant factor,
i.e. for any value of b, there is a constant C such that log2(x) = C·logb(x).
O(1) O(log n) O(n) O(n log n) O(n2) O(n2 log n) O(n3) - (10 pts) Explain why this is the running time for binary search. A "formal proof" is not required—just a brief intuitive explanation that shows you understand why this is the running time.
-
(10 pts) What is the big-O analysis of a find(key) operation on a
sorted array of n keys, implemented using binary
search?
Circle your answer.
Note that log, in the context of big-O, typically means log
based 2, but since all logs are related by a constant factor,
i.e. for any value of b, there is a constant C such that log2(x) = C·logb(x).


Laughter is innate to all of us, which is why Dad Jokes LLC sought out a way to bring families closer together by targeting the corniest jokster of them all, the dad. Allowing the dad to increase his Joke Portfolio in a new revolutionary way.
Say no more, take me there!Throughout history, jokes have been predominately shared orally and via text. We decided, it's time to move the Dad Joke genre to the world wide web to simply allow more dads than ever before to have access to the jokes that will spark laughs (and embarrasment) for their children and spouses.
Dad Jokes allows users to create accounts and find new jokes to increase their Joke Portfolio. Using our site, users will find many many jokes they've never heard of, and some that may have slipped their mind, either way Dad Jokes is a great way to bring the funnies in to your family. Whip them out a dinner time, during a picnic, or during baseball practice. Anytime is a good time for a Dad Joke.


Numba has several decorators.
@jit @jit() # the same as @jit @jit(nopython=True) @jit('float64(int64[:,:,:])', nopython=True) # energy for Ising 3D
@njit # alias for @jit(nopython=True) @njit('float64(int64)') # nopython=True is included
@vectorize # produces NumPy 'ufunc' (universal functions) @vectorize([float64(float64, float64)]) # a list of signatures
@guvectorize # produces NumPy generalized 'ufunc' The typical example is a running median or a convolution filter.
@stencil # declare a function as a kernel for a stencil like operation
@jitclass # for jit aware classes (experimental)
@cfunc # declare a function for use as a native call back (to be called from C/C++ etc)
@overload # register your own implementation of a function for use in nopython mode @overload(scipy.special.j0)


The Nonverbal Vocalization Dataset is a human nonverbal vocal sound dataset crowdsourced by the general public in South Korea. Also, the dataset includes metadata such as age, sex, noise level, and quality of utterance.
16 classes of Included human nonverbal sound contain 'teeth-chattering', teeth-grinding', 'tongue-clicking', 'nose-blowing', 'coughing', 'yawning', 'throat clearing', 'sighing', 'lip-popping', 'lip-smacking', 'panting', 'crying', 'laughing', 'sneezing', 'moaning', and 'screaming'.
The dataset is a subset(approximately 1%) of a much bigger dataset
which were recorded under the same environment as this public dataset.
Please visit our website Deeply Inc., GitHub, or contact us for more details and access to the full set of the dataset with commercial license.
Deeply makes products that anyone can use with audio AI technology and makes people's lives happier with those products. For more products and services, please visit Deeply Inc..


NEWWAVE.COM | 1.866.460.9283 |<EMAIL_ADDRESS>You received this email as an update to your service, If you'd rather not receive email updates from NewWave, you can unsubscribe.
© 2017 NewWave Communications
One Montgomery Plaza, Fourth Floor, Sikeston, MO 63801
|
|


{% extends "broadcast/base.html" %} {% block title %}Delete Broadcast{% endblock %} {% block javascripts %} {{ block.super }} {% endblock %} {% block right %}
Are you sure you want to delete broadcast #{{ broadcast.pk }}?


STAR WARS: A NEW HOPE (SPECIAL EDITION) A film review by David Wilcock Copyright 1997 David Wilcock
A sci-fi/adventure starring Mark Hamill, Carrie Fisher, Peter Cushing,Harrison Ford and Alec Guiness
A TWENTIETH CENTURY FOX PICTURE
Well, what can I say about this film? It's, Star Wars, isn't it? And everyone knows that Star Wars. But, in this speacil edition, the sound has been beefed up (the ships really do swoop around you, and the atmosphere in the Death Star is now much better) Also, there has been added extra footage, including a conversation between Han Solo (Ford) and Jabba the Hut (which looks really good)
Everyone knows the plot by now. Hamill, Guiness, Fisher and Ford (plus his wookie friend Chewbacca, and the droids C3PO and R2D2) all help the rebels the destroy the empires (led by Cushing, and Darth Vadar who is voiced by James Earl Jones and David Prowse) evil plan, which is blowing the rebels up with the Death Star.
Basically, this has to be one of the best space adventures out there. The bad guys are really bad, the good guys do really good guy things (all stick for each other, etc) and C3PO and R2D2 have to be one of the greatest comedy pairings ever. And with the new THX and digital sound, and the added footage, it is even better.
So, overall then, I would recommended this film to anyone over the age of 3. See it!
RATING=***** out of *****
REVIEW BY DAVID WILCOCK =============================== DAVID WILCOCK<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


1) echo deb http://http.kali.org/kali kali-bleeding-edge contrib non-free main >> /etc/apt/sources.list 2) apt-get update 3) apt-get upgrade
This will pull the latest git version for following tools:


Takeaways
- About Curses
- people abuse because it sounds cool and requires no imagination to vent.
- useless weapons for people who do not even have the courage of vocabulary to come up with proper invective for their enemies.
- The ability to learn to defend against noise and wield it as a weapon is an important skill.
- Metaphor: being as innocent as canaries.
- It all depends on how you are feeling and how you would rather feel.
- Both anticipation and longing are counterproductive.
- Life is a series of sweet coincidences.
- It’s lack of leadership qualities that stop leaders mid career.


UKCloud Limited (“UKC”) and Virtual Infrastructure Group Limited (“VIG”) (together “the Companies”) – in Compulsory Liquidation
On 25 October 2022, the Companies were placed into Liquidation with the Official Receiver appointed as Liquidator and J Robinson and A M Hudson simultaneously appointed as Special Managers to manage the liquidation process on behalf of the Official Receiver.
Further information regarding the Liquidations can be found here: https://www.gov.uk/government/news/virtual-infrastructure-group-limited-and-ukcloud-limited-information-for-creditors-and-interested-parties
Contact details:
For any general queries relating to the Liquidations please email<EMAIL_ADDRESS>For customer related queries please email<EMAIL_ADDRESS>For supplier related queries please email<EMAIL_ADDRESS>How to access syslog data for your edge gateway
Overview
Your NSX edge is globally configured to send syslog messages to a specific IP address (<IP_ADDRESS>
). By configuring a new network or IP address within your virtual data centre (VDC) and deploying a collector with the syslog IP address, you can access your NSX edge syslog data. You can then use this data to check:
Allowed and denied network traffic
Load balancer statistics
Load balancer health
This guide explains the network configuration required to provision a syslog collector within your VDC to receive syslog information direct from your NSX gateway.
Collecting syslog data for a single NSX edge
The simplest scenario is to gather syslog data from a single NSX edge into one collector. To do this you need to create a routable location for the syslog IP address, by either:
Adding the syslog IP address to an existing NIC
Add the syslog IP address to a subnet on the routed network.
For example, if your existing monitoring server has a NIC on eth0 (for example,
<IP_ADDRESS>
), on routed VDC network<IP_ADDRESS>/24
, you'd add the syslog IP address to eth0.Add a route on the NSX edge that routes the syslog IP address via the subnet.
For example, route
<IP_ADDRESS> MASK <IP_ADDRESS>
via<IP_ADDRESS>
.Configure the software on your existing monitoring server to capture data from the IP address of the NSX edge.
Note
The steps to achieve this depend on your operating system and chosen syslog server.
Configuring a new routed network
Create a new routed network with the following details:
Name: Customer defined
Gateway:
<IP_ADDRESS>/29
Subnet Mask:
<IP_ADDRESS>
DNS: Customer defined
Static IP Pool:
<IP_ADDRESS>-<IP_ADDRESS>
You can find more detailed steps for creating a routed network in How to create a routed VDC network.
Deploy a new syslog server connected to the new routed network with a static address of
<IP_ADDRESS>
and install and configure the syslog server's NSX edge.Note
The steps to achieve this depend on your operating system and chosen syslog server.
Collecting syslog data for multiple NSX edges
If you have multiple NSX edges under a single NFT, you can gather the data from all those edges into the same syslog collector.
Set up a single syslog collector for one of your NSX edges as described in the previous section.
Note
We'll refer to this NSX edge as the syslog edge and all the other NSX edges as source edges.
Confirm that you can see the local syslog traffic from the local syslog edge.
Create a firewall rule on the syslog edge to allow syslog traffic from the source edges' TRANSIT IPs (
172.26.
x
.
x
in Assured or172.26.
LOWER OCTET
.
x
in Elevated) through to the syslog server IP.You can create individual rules using the following suggestions:
SOURCE TRANSIT IP
:Any
to<IP_ADDRESS>
on UDPAny:Any
to<IP_ADDRESS>:514
on UDPNFT TRANSIT CIDR/SUBNET
:Any
to<IP_ADDRESS>:514
on UDP
On each of the source edges, create a static route to direct traffic to the syslog edge. Use the following settings:
Network:
<IP_ADDRESS>/29
Next Hop IP: The TRANSIT IP address of the syslog edge
Syslog packets from each source edge will now be forwarded to the syslog edge, with the source of the syslog traffic being the TRANSIT IP of the source edge.
Perform a packet capture on the syslog collector to confirm it's receiving packets from the source edges.
Note
You may have to enable or disable logging on firewall rules to trigger syslog traffic.
When you've confirmed that your syslog collector is receiving the syslog data, configure your syslog server to capture packets from the new syslog source.
Enabling logging
After setting up your syslog collector, you need to make sure that your NSX edge sends network traffic to the log.
In VMware Cloud Director, select the VDC to which the NSX edge belongs.
In the left navigation panel, under Networking, select Edges.
Select the edge that you want to configure and click Services.
Select the Edge Settings tab.
Click Edit Syslog Server.
In the Edit Syslog Server dialog box, in the Syslog Server field, enter the IP address of your syslog server then click Keep.
Select the Firewall Rules tab.
For each firewall rule that you want to log, select the Enable logging check box, then click Save changes.
Select the NAT tab.
For each NAT rule that you want to log, select the rule, click the Edit icon, select the Enable logging option then click Keep.
When you're done, click Save changes.
Select the Load Balancer tab.
On the Global Configuration tab, select the Enable Logging option.
From the Log Level list, select the logging level.
You can find more detailed steps for editing load balancer settings in How to configure a load balancer.
When you're done, click Save changes.
Sample syslog captures
Firewall denied
firewall[]: [073ab562-9147-428c-bf0c-33139c6ec51e]:DROP_131073IN= OUT=vNic_0 SRC=<IP_ADDRESS> DST=<IP_ADDRESS> LEN=44 TOS=0x00 PREC=0x00 TTL=254 ID=25689 PROTO=ICMP TYPE=8 CODE=0 ID=7 SEQ=62584 MARK=0x207
Firewall allowed
firewall[]: [073ab562-9147-428c-bf0c-33139c6ec51e]: ACCEPT_319IN= OUT=vNic_4 SRC=<IP_ADDRESS> DST=<IP_ADDRESS> LEN=36 TOS=0x00 PREC=0x00 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=27693 SEQ=1 MARK=0x6
Load balancer statistics
loadbalancer[5899]: [073ab562-9147-428c-bf0c-33139c6ec51e]: xx.xxx.xxx.xxx:51699 [23/May/2016:14:43:38.242] TEST_CONN_8040_1625_HTTP TEST CONN_UAT_8040_1625_HTTP/TEST CONN_UAT_8040_1625_HTTP_<IP_ADDRESS> 0/0/0/1/1 200 2127 - - --VN 12/5/4/2/0 0/0 "GET /OA_MEDIA/FNDSSCORP.gif HTTP/1.1"
Refer to https://cbonte.github.io/haproxy-dconv/1.5/configuration.html#8 for information about how to interpret the load balancer logs.
Feedback
If you find a problem with this article, click Improve this Doc to make the change yourself or raise an issue in GitHub. If you have an idea for how we could improve any of our services, send an email to feedback@ukcloud.com.


detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail detail.


var ( HeightOpts = metrics.GaugeOpts{ Namespace: "gossip", Subsystem: "state", Name: "height", Help: "Current ledger height", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } CommitDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "state", Name: "commit_duration", Help: "Time it takes to commit a block in seconds", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } PayloadBufferSizeOpts = metrics.GaugeOpts{ Namespace: "gossip", Subsystem: "payload_buffer", Name: "size", Help: "Size of the payload buffer", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } )
var ( SentMessagesOpts = metrics.CounterOpts{ Namespace: "gossip", Subsystem: "comm", Name: "messages_sent", Help: "Number of messages sent", StatsdFormat: "%{#fqname}", } BufferOverflowOpts = metrics.CounterOpts{ Namespace: "gossip", Subsystem: "comm", Name: "overflow_count", Help: "Number of outgoing queue buffer overflows", StatsdFormat: "%{#fqname}", } ReceivedMessagesOpts = metrics.CounterOpts{ Namespace: "gossip", Subsystem: "comm", Name: "messages_received", Help: "Number of messages received", StatsdFormat: "%{#fqname}", } )
var ( ValidationDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "validation_duration", Help: "Time it takes to validate a block (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } ListMissingPrivateDataDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "list_missing_duration", Help: "Time it takes to list the missing private data (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } FetchDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "fetch_duration", Help: "Time it takes to fetch missing private data from peers (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } CommitPrivateDataDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "commit_block_duration", Help: "Time it takes to commit private data and the corresponding block (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } PurgeDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "purge_duration", Help: "Time it takes to purge private data (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } SendDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "send_duration", Help: "Time it takes to send a missing private data element (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } ReconciliationDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "reconciliation_duration", Help: "Time it takes for reconciliation to complete (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } PullDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "pull_duration", Help: "Time it takes to pull a missing private data element (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } RetrieveDurationOpts = metrics.HistogramOpts{ Namespace: "gossip", Subsystem: "privdata", Name: "retrieve_duration", Help: "Time it takes to retrieve missing private data elements from the ledger (in seconds)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } )
var ( LeaderDeclerationOpts = metrics.GaugeOpts{ Namespace: "gossip", Subsystem: "leader_election", Name: "leader", Help: "Peer is leader (1) or follower (0)", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } )
var ( TotalOpts = metrics.GaugeOpts{ Namespace: "gossip", Subsystem: "membership", Name: "total_peers_known", Help: "Total known peers", LabelNames: []string{"channel"}, StatsdFormat: "%{#fqname}.%{channel}", } )
CommMetrics encapsulates gossip communication related metrics
type CommMetrics struct { SentMessages metrics.Counter BufferOverflow metrics.Counter ReceivedMessages metrics.Counter }
ElectionMetrics encapsulates gossip leader election related metrics
type ElectionMetrics struct { Declaration metrics.Gauge }
GossipMetrics encapsulates all of gossip metrics
type GossipMetrics struct { StateMetrics *StateMetrics ElectionMetrics *ElectionMetrics CommMetrics *CommMetrics MembershipMetrics *MembershipMetrics PrivdataMetrics *PrivdataMetrics }
func NewGossipMetrics(p metrics.Provider) *GossipMetrics
MembershipMetrics encapsulates gossip channel membership related metrics
type MembershipMetrics struct { Total metrics.Gauge }
PrivdataMetrics encapsulates gossip private data related metrics
type PrivdataMetrics struct { ValidationDuration metrics.Histogram ListMissingPrivateDataDuration metrics.Histogram FetchDuration metrics.Histogram CommitPrivateDataDuration metrics.Histogram PurgeDuration metrics.Histogram SendDuration metrics.Histogram ReconciliationDuration metrics.Histogram PullDuration metrics.Histogram RetrieveDuration metrics.Histogram }
StateMetrics encapsulates gossip state related metrics
type StateMetrics struct { Height metrics.Gauge CommitDuration metrics.Histogram PayloadBufferSize metrics.Gauge }


Using the the QuantBook history method qb.History(Symbol[], Period, Resolution)
we can pass in an array of Symbol
objects. It supports resolutions Minute, Hour and Daily. This can be easily done by passing in the Securities
keys as demonstrated below:
# Get historical data of last 10 days for all subscribed assets with time span h1 = qb.History(qb.Securities.Keys, timedelta(days=10), Resolution.Daily) # Get historical data of last 10 daily bars for specified symbol h2 = qb.History(["SPY"], 10, Resolution.Daily)
You can also use the start date and the end date to retrieve a period of history data with the method qb.History(Symbols, StartDate, EndDate, Resolution)
. The format of start and end date are python datetime.
The return value of history request is a multi-index pandas dataframe. The first level of the index is symbol, the second level is time. To get the columns required you can apply operations on the pandas dataframes to retrieve the columns you need:
# Fetch the open price of "SPY" h2.loc[“SPY”]["open"] # Fetch the ask close price of “EURUSD” h1.loc["EURUSD"]["askclose"] # Fetch the close price of all subscribed assets h1['close'].unstack(level=0)


Notary Nodes candidates proposals. Contribute to KomodoPlatform/NotaryNodes development by creating an account on GitHub.
6
3
1
2
1
Dr.Terminus06-Mar-19 03:03 AM
thanks @kolo
been eagerly awaiting posts
heard you were election master
kolo06-Mar-19 03:25 AM
@Dr.Terminus it’s so since last year. Not a news.
siu - Chainmakers06-Mar-19 09:58 AM
When we will know which nodes are automatically re-elected?
just top 32?
can an official list be published? @kolo
ca33306-Mar-19 10:03 AM
The last 12 months probably equal "the real proposal" for this years NN elections and specially the last 3 - 6 months, when the market was very bloody, did show us who is truly doing this for the security and stability of Komodo network. This could well be reflected in the election results...(edited)
@siu - Chainmakers - yes - the top 50%.
siu - Chainmakers06-Mar-19 10:06 AM
ok. So i better start doing campaign for my node since im like number 34
Vote for Chainmakers-NA! Your most trusted service provider for Komodo Technology!
blackjok3r06-Mar-19 10:13 AM
I was under the impression it was the top 7 of each region
as the SH region is at a major dissavdantage
I am 9th anyway ... so it doesnt matter
to me
ca33306-Mar-19 10:14 AM
I dislike the "NN mushrooms" - like the OPs that out of the sudden pop up when they see "oh its election times". And rest of the year you wont hear/see much from them.
@everyone
This year i will periodically give out objective recommendations based on what a NN operator did for the KMD ecosystem but also based on the skillz level and professionalism. I will start with two community members that have been around for more than a year now - this will be the 2nd NN era in which we are happy to have them on board.
@blackjok3r and @Alright are two very active and supportive Devs, IT experts and Blockchain architects. They have launched up an ecosystem project called #kmdlabs and thanks to their efforts a set of various bugs and issues was fixed on the Notary Node Network but also in the Komodo Blockchain network. Having each of them run a set of Notary Nodes across the globe and hopefully in each region is highly recommended for the stability and security of our network.
7
13
jorian06-Mar-19 10:15 AM
i would still want to see an official list from @kolo or one of his cats
siu - Chainmakers06-Mar-19 10:16 AM
But blackjoker is in the top 32 anyway!, vote for Chainmakers NA which is the top of the lower 32 :p
1
blackjok3r06-Mar-19 10:16 AM
I dont think my node is in the top...
in fact im sure its not
its right at the boarderline though
siu - Chainmakers06-Mar-19 10:17 AM
but you seem to be going to be automatically re-elected
Ludom06-Mar-19 10:17 AM
Hi @ca333 I'm a mushroom
blackjok3r06-Mar-19 10:17 AM
It lost months of notarizations at the start before I knew what I was doing...
jeezy06-Mar-19 10:17 AM
@siu - Chainmakers@kolo the most important question is is it total 32 or by region divided
could be a very important detail
siu - Chainmakers06-Mar-19 10:18 AM
yes, that is why i would like an official list
Ludom06-Mar-19 10:18 AM
Anyway, great to see the election again
ca33306-Mar-19 10:18 AM
@Ludom - i dont think so. You got us projects onboard and arranged meetups, etc. - for example Crypto Union - you have pushed them into KMD world. Am i right?
Ludom06-Mar-19 10:18 AM
I was kiding
siu - Chainmakers06-Mar-19 10:18 AM
also i see @SHossain with a dev tag, does this mean that he is not going to be part of the top 32 and just a dev node?
ca33306-Mar-19 10:19 AM
maybe a hybrid mushroom
siu - Chainmakers06-Mar-19 10:19 AM
those details are important since im literally 1 or 2 places below top 32
Ludom06-Mar-19 10:19 AM
And I'm not alone. IndéNodes is @eclips and @Yassin too
jeezy06-Mar-19 10:19 AM
yea, can we subtract all nodes from the 32 that have dev in them?
jorian06-Mar-19 10:20 AM
we must wait for kolo to return
Ludom06-Mar-19 10:20 AM
Ok, I don't know how many nodes will be reelected
ca33306-Mar-19 10:20 AM
@siu - Chainmakers - just ONE of shossains nodes was qualified as a dev node for this NN era.
Crabby Paddy06-Mar-19 10:20 AM
@blackjok3r and @Alright have spent multiple hours helping someone with no knowledge to stake a coin at their own loss of time and stake. You both have worked hard in the background always testing and helping the community
You both get the vote of me and my group of investors
ca33306-Mar-19 10:20 AM
DEV nodes will not be substracted since they are below top 32...
if you create an excelt table and just sort all nodes you will see who would make it right now.
jeezy06-Mar-19 10:21 AM
a lot of dev nodes are very high up in scores
ca33306-Mar-19 10:21 AM
the only dev nodes are in the "dev" box - consider the other ones no dev nodes.
Ludom06-Mar-19 10:22 AM
I don't know how many nodes will be reelected for IndéNodes but I have only one regret : the reelection system is not transparent AND not decentralised at all
ca33306-Mar-19 10:22 AM
why? its based on a transparent score system @Ludom
jorian06-Mar-19 10:22 AM
why do we have kolo when ca333 seems to have all the answers?
Ludom06-Mar-19 10:22 AM
I really like @kolo but he is not a decentralised guy
lukechilds06-Mar-19 10:22 AM
I thought the other nodes not in the dev box were changed to dev nodes because they were in the wrong regions and therefore violating the rules?
Statistics for the Komodo Platform's dPOW notarization of KMD and supported blockchains.
ca33306-Mar-19 10:23 AM
the automatic reelection is based purely on score and probably any disqualification rules that were set up last year.
blackjok3r06-Mar-19 10:24 AM
Also the score counts the KMD txns... when the network was flooding -26 errors, a extrmely large amount of notarizations were counted that did not create a checkpoint... so when we correct this flaw the stats will change a LOT I would say.
1
Ludom06-Mar-19 10:24 AM
Yes but is it the 8 best on each region or the 32 best of all the world ?
Or less ?
jl777c06-Mar-19 10:24 AM
by region
lukechilds06-Mar-19 10:24 AM
top half of each region was what was said last year I believe
ca33306-Mar-19 10:24 AM
Kolo is the official master and only his replies will count as 100% valid. I am just trying to give you answers based on the infos i have.
Ludom06-Mar-19 10:25 AM
That's not decentralized. But that don't change anything from my side
I just hope we'll make better for 2020
siu - Chainmakers06-Mar-19 10:26 AM
Ok, so its global top 32 or top 7 of each region? These details need to ne clear before anything else
Ludom06-Mar-19 10:27 AM
I really like the effort of transparence on the election 2019 but we can make it better.
jl777c06-Mar-19 10:27 AM
@siu - Chainmakers what part of "by region" is ambiguous?
ca33306-Mar-19 10:27 AM
by region @siu - Chainmakers
Ludom06-Mar-19 10:28 AM
I'm just writing to stimulate the evolution for the best.
siu - Chainmakers06-Mar-19 10:28 AM
Ok, since ca said top 50% first, im just looking for the official official answer
jeezy06-Mar-19 10:28 AM
32/4=8 so its top 8 of each region?
ca33306-Mar-19 10:28 AM
top 50% first should automagically let you imply by region. anything else just wont make any sense common sense wise.
blackjok3r06-Mar-19 10:28 AM
Seems some regions have more.less nodes exactly how many per region get auto election?
Ludom06-Mar-19 10:29 AM
I'm in crypto for decentralized systems and economics
ca33306-Mar-19 10:29 AM
@blackjok3r probably top 8 to match 32?
jl777c06-Mar-19 10:29 AM
divide the number of nodes in each region by 2
1
that is the number of automatic spots
why such controversy over >>= 1?
jeezy06-Mar-19 10:29 AM
ok so SH has 7.5 automatic spots
jl777c06-Mar-19 10:30 AM
in a case of any ambiguity, kolo is election master
no fractions in >>=
blackjok3r06-Mar-19 10:30 AM
Just if its 8 in SH... I need to start attackin peertocloud to get that 8th spot
1
Ludom06-Mar-19 10:30 AM
Good idea
blackjok3r06-Mar-19 10:30 AM
if its 7... there is no point
I wouldnt do it lol... was joke.
Ludom06-Mar-19 10:30 AM
It' could be a good test on the security of each notary
Because it can be a point of failure in the future
blackjok3r06-Mar-19 10:31 AM
I m not sure anyone else knows how to do it, or defend against it at this point in time... but all the code to defend the only attack that I know of has been merged, but needs to be activated in the code.
unless there is some other attack... Realy all it would do is slow down other notaris... notarizations would continue regardless.. so it would be obvious you were doing it. There is no point.
ca33306-Mar-19 10:32 AM
57 total NN count = 28.5 (~29) NNs get autoelected according to komodostats and the info from above.
jeezy06-Mar-19 10:33 AM
@jl777c can you project next years minimal specs? like 500GB SSD is running very slim already so 1 TB SSD should be minimum, what about cores and RAM is it ok to stay about equal as this year?
jl777c06-Mar-19 10:34 AM
i think 500GB SSD is indeed on the small side
Ludom06-Mar-19 10:34 AM
Do you take dev nody in your math ?
blackjok3r06-Mar-19 10:34 AM
The min was 1Tb last year and som ppl ignored it
siu - Chainmakers06-Mar-19 10:34 AM
@jeezy more projects will be onboarded next year, so i wouls recommend to start with what you have right now and move to bigger hardware
blackjok3r06-Mar-19 10:35 AM
I have 3TB SSd in my server, using RAID1 atm but I will be taking that off for straight disks when I re do the node and change keys.


The normal method for controlling MiniMyth is through a remote control. If you have not already done so, please the LIRC configuration variables' section of minimyth.conf for instructions on how to configure your specific remote.
For some of the entries in the Myth setup menus, it is easier to use a keyboard than a remote control. While MiniMyth supports connecting a keyboard and mouse, it is often physically difficult to do so. Therefore, MiniMyth support controlling the MiniMyth GUI using VNC.
In general, VNC enables a client to connect to either the real X display or a virtual X display. By connecting to the real X display, a VNC client can control the X session running on the remote machine's console. By connecting to a virtual X display, a VNC client can have its own X session. Since MiniMyth uses VNC as a method for remotely controlling the MiniMyth system, MiniMyth uses a VNC server that connects the VNC client to the real X display.
When security is enabled (see 'MM_SECURITY_ENABLED'), then VNC is available on localhost but not on any other address. Therefore, when security is enabled, VNC can only be accessed by port forwarding over SSH.
Normally, MiniMyth does not start a virtual console. However, when MiniMyth detects an error when booting (i.e. during init), MiniMyth starts a virtual console to ease debugging. In addition, when security is disabled (see 'MM_SECURITY_ENABLED'), MiniMyth starts a virtual console. If you have a keyboard connected, then you can switch to the virtual console using the key sequence 'Ctrl+Alt+F1'.
There are two users that can connect using the virtual console: 'minimyth' and 'root'. Neither user requires a password.
The user 'minimyth' is a restricted access user that MiniMyth uses to run the X window system (i.e. xinit) and X applications (e.g. mythfrontend, mythtv, mplayer, vlc, x11vnc and xine). Since many applications look for their configuration relative to the user's home directory, and since some applications behave differently depending on user's access rights, it is important that you run the X windows system and the X applications as the correct user.
The user 'root' is the root user. You may wish to log in as the user 'root' when you need access beyond the access allowed the user 'minimyth'. For example, some files can only be written or read as the user 'root'.
Normally, MiniMyth does not start a telnet server. However, when MiniMyth detects an error when booting (i.e. during init), MiniMyth starts a telnet server to ease debugging. In addition, when security is disabled (see 'MM_SECURITY_ENABLED'), MiniMyth starts a telnet server.
There are two terminal types that MiniMyth can understand: 'linux' and 'xterm'. Therefore, be sure that the terminal you are using emulates one of those terminal types.
There are two users that can connect using telnet: 'minimyth' and 'root'. Neither user requires a password.
If you have enabled the SSH server, then MiniMyth provides access using ssh. During normal operation, there is no reason to need ssh access to MiniMyth. However, ssh access can be very useful when customizing or debugging MiniMyth.
There is one user that can connect using ssh: 'root'. When connecting as user 'root', you must present a identity file authorized in the authorized_keys configuration file.
If you need to perform a task as the user 'minimyth' (e.g. restart X), then you will need to su to the user 'minimyth' using the command 'su - minimyth'.
MiniMyth provides access to the MiniMyth web pages using HTTP. The MiniMyth web pages are accessible by connecting to port 80 (the default HTTP port) using HTTP. These web pages include status information, software version information and MiniMyth documentation. Unlike the MiniMyth documentation on www.minimyth.org, the MiniMyth documentation available through the MiniMyth web pages is sure to correspond to the version of MiniMyth that is running.
When security is disabled (see 'MM_SECURITY_ENABLED'), MiniMyth provides access to the MiniMyth file system using HTTP. The MiniMyth file system is accessible by connecting to port 8080 using HTTP. This allows you to view any file using a web browser (e.g. Firefox) or download any file using a web download client (e.g. wget).


This website is mainly going to be a creative platform for me, helping me practice my HTML and CSS skills, and hopefully JavaScript, but also a place I can showcase my amateur photography and videography.
This website is mainly going to be a creative platform for me, helping me practice my HTML and CSS skills, and hopefully JavaScript, but also a place I can showcase my amateur photography and videography.


MultiAgent Systems
MultiAgent Systems
Choose the agent type:
Choose the environment type:
Start
Number of Actions: {{ agent.actionsCount }}
Number of Cleaned Tiles: {{ agent.cleansCount }}
Actions/CleanedTiles Ratio: {{ agent.actionsCount / agent.cleansCount | number:2 }}
Floor cleaned!!