imagecomposer.cpp Example File
painting/imagecomposition/imagecomposer.cpp/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** BSD License Usage ** Alternatively, you may use this file under the terms of the BSD license ** as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission.   ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "imagecomposer.h" #include <QtWidgets> static const QSize resultSize(200, 200); ImageComposer::ImageComposer() { sourceButton = new QToolButton; sourceButton->setIconSize(resultSize); operatorComboBox = new QComboBox; addOp(QPainter::CompositionMode_SourceOver, tr("SourceOver")); addOp(QPainter::CompositionMode_DestinationOver, tr("DestinationOver")); addOp(QPainter::CompositionMode_Clear, tr("Clear")); addOp(QPainter::CompositionMode_Source, tr("Source")); addOp(QPainter::CompositionMode_Destination, tr("Destination")); addOp(QPainter::CompositionMode_SourceIn, tr("SourceIn")); addOp(QPainter::CompositionMode_DestinationIn, tr("DestinationIn")); addOp(QPainter::CompositionMode_SourceOut, tr("SourceOut")); addOp(QPainter::CompositionMode_DestinationOut, tr("DestinationOut")); addOp(QPainter::CompositionMode_SourceAtop, tr("SourceAtop")); addOp(QPainter::CompositionMode_DestinationAtop, tr("DestinationAtop")); addOp(QPainter::CompositionMode_Xor, tr("Xor")); addOp(QPainter::CompositionMode_Plus, tr("Plus")); addOp(QPainter::CompositionMode_Multiply, tr("Multiply")); addOp(QPainter::CompositionMode_Screen, tr("Screen")); addOp(QPainter::CompositionMode_Overlay, tr("Overlay")); addOp(QPainter::CompositionMode_Darken, tr("Darken")); addOp(QPainter::CompositionMode_Lighten, tr("Lighten")); addOp(QPainter::CompositionMode_ColorDodge, tr("ColorDodge")); addOp(QPainter::CompositionMode_ColorBurn, tr("ColorBurn")); addOp(QPainter::CompositionMode_HardLight, tr("HardLight")); addOp(QPainter::CompositionMode_SoftLight, tr("SoftLight")); addOp(QPainter::CompositionMode_Difference, tr("Difference")); addOp(QPainter::CompositionMode_Exclusion, tr("Exclusion")); destinationButton = new QToolButton; destinationButton->setIconSize(resultSize); equalLabel = new QLabel(tr("=")); resultLabel = new QLabel; resultLabel->setMinimumWidth(resultSize.width()); connect(sourceButton, SIGNAL(clicked()), this, SLOT(chooseSource())); connect(operatorComboBox, SIGNAL(activated(int)), this, SLOT(recalculateResult())); connect(destinationButton, SIGNAL(clicked()), this, SLOT(chooseDestination())); QGridLayout *mainLayout = new QGridLayout; mainLayout->addWidget(sourceButton, 0, 0, 3, 1); mainLayout->addWidget(operatorComboBox, 1, 1); mainLayout->addWidget(destinationButton, 0, 2, 3, 1); mainLayout->addWidget(equalLabel, 1, 3); mainLayout->addWidget(resultLabel, 0, 4, 3, 1); mainLayout->setSizeConstraint(QLayout::SetFixedSize); setLayout(mainLayout); resultImage = QImage(resultSize, QImage::Format_ARGB32_Premultiplied); loadImage(":/images/butterfly.png", &sourceImage, sourceButton); loadImage(":/images/checker.png", &destinationImage, destinationButton); setWindowTitle(tr("Image Composition")); } void ImageComposer::chooseSource() { chooseImage(tr("Choose Source Image"), &sourceImage, sourceButton); } void ImageComposer::chooseDestination() { chooseImage(tr("Choose Destination Image"), &destinationImage, destinationButton); } void ImageComposer::recalculateResult() { QPainter::CompositionMode mode = currentMode(); QPainter painter(&resultImage); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(resultImage.rect(), Qt::transparent); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.drawImage(0, 0, destinationImage); painter.setCompositionMode(mode); painter.drawImage(0, 0, sourceImage); painter.setCompositionMode(QPainter::CompositionMode_DestinationOver); painter.fillRect(resultImage.rect(), Qt::white); painter.end(); resultLabel->setPixmap(QPixmap::fromImage(resultImage)); } void ImageComposer::addOp(QPainter::CompositionMode mode, const QString &name) { operatorComboBox->addItem(name, mode); } void ImageComposer::chooseImage(const QString &title, QImage *image, QToolButton *button) { QString fileName = QFileDialog::getOpenFileName(this, title); if (!fileName.isEmpty()) loadImage(fileName, image, button); } void ImageComposer::loadImage(const QString &fileName, QImage *image, QToolButton *button) { image->load(fileName); // Scale the image to given size *image = image->scaled(resultSize, Qt::KeepAspectRatio); QImage fixedImage(resultSize, QImage::Format_ARGB32_Premultiplied); QPainter painter(&fixedImage); painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(fixedImage.rect(), Qt::transparent); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.drawImage(imagePos(*image), *image); painter.end(); button->setIcon(QPixmap::fromImage(fixedImage)); *image = fixedImage; recalculateResult(); } QPainter::CompositionMode ImageComposer::currentMode() const { return (QPainter::CompositionMode) operatorComboBox->itemData(operatorComboBox->currentIndex()).toInt(); } QPoint ImageComposer::imagePos(const QImage &image) const { return QPoint((resultSize.width() - image.width()) / 2, (resultSize.height() - image.height()) / 2); }


Lei Jun: All Xiaomi phones above 2000 yuan ($285) will support 5G -
by Efe UdinLei Jun: All Xiaomi phones above 2000 yuan ($285) will support 5G
1.5 (30%) 2 votes
At the 2019 China Mobile Global Partner Conference, Xiaomi’s CEO, Lei Jun, said that the company will fully promote the development and promotion of 5G mobile phones. According to Lei Jun, in the first half of 2020, all Xiaomi smartphones with a price tag above 2000 yuan ($285) will be 5G phones. Recall that he earlier said that the company will release 10 5G phones next year. This means that with luck, we could be buying 5G phones for less than $300 next year.
Xiaomi has previously launched the 5G+AIoT strategy. In addition to 5G mobile phones, it will also vigorously develop AIOT devices. Lei Jun said that Xiaomi’s IoT platform has connected 196 million devices, and the number of users of IoT devices exceeds 3 million. Recently, MediaTek announced that it will hold a new product launch conference on November 26, officially releasing a new 5G chip. In addition, there is news that the first model of MediaTek’s 5G chip is likely to be the Redmi K30. This mobile phone will have a good chance to meet us at the end of this year.
Lei Jun had previously said that Xiaomi’s attitude toward 5G is optimistic and radical. In the early days of 5G popularization, high-definition video applications and cloud games have the possibility of breaking out.


find the node before the reverse head (end after reversion), head2
find the node of reverse head (the one after haed2), end2
start from the first node to be swapped, cur
hand over cur's next to end2
insert after head2, and take over the previous link after head2 (head insert as a stack)
move to end2's next, or next to be swapped.


|
cds
1.2.0
|
Pass-the-Buck guard. More...
#include <cds/gc/ptb.h>
Public Member Functions | |
| template<typename T > | |
| T | protect (std::atomic< T > const &toGuard) |
Protects a pointer of type atomic<T*> | |
| template<typename T , class Func > | |
| T | protect (std::atomic< T > const &toGuard, Func f) |
Protects a converted pointer of type atomic<T*> | |
| template<typename T > | |
| T * | assign (T *p) |
Store p to the guard. | |
| template<typename T , int BITMASK> | |
| T * | assign (cds::details::marked_ptr< T, BITMASK > p) |
Store marked pointer p to the guard. | |
| void | clear () |
| Clear value of the guard. | |
| template<typename T > | |
| T * | get () const |
| Get the value currently protected (relaxed read) | |
| Public Member Functions inherited from cds::gc::ptb::Guard | |
| Guard (ThreadGC &gc) | |
Allocates a guard from gc GC. gc must be ThreadGC object of current thread. | |
| ~Guard () | |
| Returns guard allocated back to pool of free guards. | |
| ThreadGC & | getGC () |
| Returns PTB GC object. | |
| template<typename T > | |
| T * | operator= (T *p) |
Guards pointer p . | |
| Public Member Functions inherited from cds::gc::ptb::details::guard | |
| guard () | |
| Initialize empty guard. | |
| ~guard () | |
| Object destructor, does nothing. | |
| void | set (void *p) |
Guards pointer p . | |
| void | set_guard (details::guard_data *pGuard) |
| Set guard data. | |
| details::guard_data * | get_guard () |
| Get current guard data. | |
| details::guard_data * | get_guard () const |
| Get current guard data. |
Additional Inherited Members | |
| Protected Attributes inherited from cds::gc::ptb::details::guard | |
| details::guard_data * | m_pGuard |
| Pointer to guard data. |
Pass-the-Buck guard.
This class is a wrapper for ptb::Guard.
|
inline |
Store p
to the guard.
The function equals to a simple assignment, no loop is performed. Can be used for a pointer that cannot be changed concurrently.
|
inline |
Store marked pointer p
to the guard.
The function equals to a simple assignment of p.ptr()
, no loop is performed. Can be used for a marked pointer that cannot be changed concurrently.
|
inline |
Protects a pointer of type atomic<T*>
Return the value of toGuard
The function tries to load toGuard
and to store it to the HP slot repeatedly until the guard's value equals toGuard
|
inline |
Protects a converted pointer of type atomic<T*>
Return the value of toGuard
The function tries to load toGuard
and to store result of f
functor to the HP slot repeatedly until the guard's value equals toGuard
.
The function is useful for intrusive containers when toGuard
is a node pointer that should be converted to a pointer to the value type before guarding. The parameter f
of type Func is a functor that makes this conversion:
Really, the result of f( toGuard.load() )
is assigned to the hazard pointer.


Definition: A contract involving the sale of securities coupled with an agreement to repurchase the same securities on a later date
Factors affecting the repo rate:
Quality of the collateral
Term of the repo
Delivery requirement
Availability of collateral
Prevailing interest rates in the economy
Seasonal factors
Derivatives-Enabled Strategies
Interest Rate Risk
Portfolio duration - the weighted-average of the durations of the individual securities composing a portfolio
Dollar duration - the duration impact of a one dollar investment in a security
(Di×Vi)/Vp
To maintain portfolio duration when exchanging one security for another, the dollar durations of the exchanged securities must match
New bond market value = DD0/DN×100
Other Risk Measures
Semivariance - measures dispersion of return outcomes below the target return
Computationally challenging
To the extent returns are symmetric, it containts no additional information as compared to variance
Shortfall risk - probability of not achieving some specified target return
Does not account for magnitude of losses in dollar terms
Value at risk (VaR) - estimate of the loss (in dollar terms) that is expected to be exceeded with a given level of probability over a specified time horizon
Does not indicate the magnitude of losses beyond exceedance point
Problems with Using Variance to Measure Bond Portfolio Risk
Number of estimated parameters increases dramatically as number of bonds under consideration increases
# of parameters = # of bonds × (× of bonds + 1)/2
Difficult to estimate variances and covariances based on historical data
Products Used in Derivatives-Enabled Strategies
Interest Rate Futures
Definition: A contract between a buyer and seller agreeing to the future delivery of an interest-bearing asset
Conversion factors
Cheapest-to-deliver (CTD)
Common strategies:
Duration management
Duration hedging
Duration Management
Definition: The process of maintaining a portfolio's duration at its target value
Portfolio target dollar duration (DD) = Current portfolio DD w/o futures + DD of futures contracts
DD of futures = DD per futures contract × # of contracts
Number of contracts needed to achieve portfolio target DD:
(DT-DI)PI/DD per futures contract, OR
[(DT-DI)PI/(DCTDPCTD)]×(DCTDPCTD)/DD per futures contract, OR
[(DT-DI)PI/(DCTDPCTD)]×Conversion factor for CTD bond
Duration Hedging
Definition: The process of using futures contracts to offset existing interest rate exposure
Basis and basis risk
Cross hedging
Hedge ratio = Factor exposure of bond/portfolio to be hedged/Factor exposure of hedging instrument
Hedge ratio = (DHPH)/(DCTDPCTD)×Conversion factor for CTD bond×Yield beta
Sources of hedging error:
Incorrect duration calculations
Inaccurate projected basis values
Inaccurate yield beta estimates
Interest Rate Swaps
Definition: A contract between counterparties to exchange periodic interest pyaments based on a specified notional principal amount
Fixed-rate payer vs. floating-rate payer
Dollar duration (DD) of a swap = DD of fixed rate bond - DD of floating rate bond
Bond and Interest Rate Options
Option duration = Option delta × Underlying instrument duration × Price of underlying/Price of option instrument
Protective puts and covered calls
Caps and floors
Credit Risk Instruments
Credit options
Binary credit option - provides payoffs contingent on the occurence of a specified negative credit event
Credit default swap - contract that shifts credit exposure of an asset issued by a specified reference entity from one investor to another investor
International Bond Investing
Active Management
Attempts to add value via:
Bond market selection
Currency selection
Duration and yield curve management
Sector selection
Credit analysis of issuers
Investing in markets outside the benchmark
Currency Risk
Interest rate parity (IRP) - states the forward foreign exchange rate discount/premium over a fixed period should equal the risk-free interest rate differential between the two countries over that period
f = (F-S0)/S0
f ≈ id - if
Hedging currency risk
Forward hedging
Proxy hedging
Cross hedging
Breakeven Spread Analysis
Definition: An analysis that quanitifies the amount of spread widening required to diminish a foreign yield advantage


Our highly experienced Consultants are dedicated to providing a 5-star, personal service to everyone visiting the clinic for treatment. Etiam vehicula urna ut diam scelerd nisi. Praesent hendrerit magna a velit tincidunt rutrum.
If you have any questions relating to treatment options or pricing information then get in touch with us by filling out one of our contact boxes or giving us a call on 1-800-123-4567


Open "settings"
Input the relative path to root folder of the database which contains the components.xml.
Example:
Assuming your zip file is database.zip and is located at "http://url/of/your/database.zip",
it includes folder "data" which includes "components.xml".
Now, the URL of your database is: http://url/of/your/database.zip
the relative path to root folder of the database is: data/.
Click "DOWNLOAD" after you input the correct address. The app will always remember your inputs, so that you don't need to re-enter the address once your want to update your database from the same source.


The BinanceFutureMarginInterestRateModel
simulates the margin cost and payments of your Crypto Future holdings. When the funding rate is positive, the price of the perpetual contract is higher than the mark price, so traders who are long pay for short positions. Conversely, a negative funding rate indicates that perpetual prices are below the mark price, so traders who are short pay for long positions. The interest amount is
The interest amount is periodically credited or debited from your currency holdings while you hold open positions. The interest amount is charged at 12 AM, 8 AM, 4 PM in your algorithm time zone.
security.MarginInterestRateModel = new BinanceFutureMarginInterestRateModel();
security.MarginInterestRateModel = BinanceFutureMarginInterestRateModel()
To view the implementation of this model, see the LEAN GitHub repository.


For testers: because this example uses a worker placed in the folderdist
of this project, a server must be used to test it, for example:cd pico2wave.js && python3 -m http.server
For developers: note that if you want the sound file generated on mobile to be played using a hidden html audio element, it must be played a first time with a blank sound file from an event handler during an action performed by the user.


flixel.plugin.MouseEventManager
- type
- class
- extends
- FlxPlugin
Provides mouse event detection for FlxSprites.
To use it, initialize the manager and register sprites.
FlxG.plugins.add(new MouseInteractionMgr());
var spr:FlxSprite = new FlxSprite();
MouseEventManager.addSprite(spr, onMouseDown, onMouseUp, onMouseOver, onMouseOut);
Or simply add a new sprite the manager will initialize itself:
MouseEventManager.addSprite(spr, onMouseDown, onMouseUp, onMouseOver, onMouseOut);
Also implement the callbacks with FlxSprite return:
function onMouseDown(sprite:FlxSprite) {}
function onMouseUp(sprite:FlxSprite) {}
function onMouseOver(sprite:FlxSprite) {}
function onMouseOut(sprite:FlxSprite) {}
Static Methods
- parameters
Sprite
The FlxSprite
OnMouseDown
Callback when mouse is pressed down over this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
OnMouseUp
Callback when mouse is released over this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
OnMouseOver
Callback when mouse is this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
OnMouseOut
Callback when mouse moves out of this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
MouseChildren
If mouseChildren is enabled, other sprites overlaped by this will still receive mouse events.
MouseEnabled
If mouseEnabled this sprite will receive mouse events.
PixelPerfect
If enabled the collision check will be pixel-perfect.
- parameters
Sprite
The FlxSprite.
- parameters
Sprite
The FlxSprite.
- parameters
Sprite
The sprite to set the callback.
OnMouseDown
Callback when mouse is pressed down over this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
- parameters
Sprite
The FlxSprite to set the callback.
OnMouseOver
Callback when mouse is moves out of this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
- parameters
Sprite
The sprite to set the callback.
OnMouseOver
Callback when mouse is over this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
- parameters
Sprite
The sprite to set the callback.
OnMouseUp
Callback when mouse is released over this sprite. Must have Sprite as argument - e.g. onMouseDown(sprite:FlxSprite).
- parameters
Sprite
The FlxSprite.
MouseChildren
Whether this sprite will allow other overlapped sprites to receive mouseEvents.
- parameters
Sprite
The FlxSprite.
MouseEnabled
Whether this sprite will be tested for mouse events.
- parameters
Camera
Which camera to draw the debug visuals to.
- parameters
Width
The new window width
Height
The new window Height


Do you like to hike?
Home
Register
   Do you like to hike?
Home
Register
   Do you like to hike?
Home
Register
   Do you like to hike?
Home
Register
   Do you like to hike?
Home
Recommendation


Classes
The following classes are available globally.
-
Implementation of LKCommunicationMager for Bluetooth devices.
See moreDeclaration
Swift
@objc public class LKBLEInteractor : LKCommunicationManager, LKBLEResponder
-
This class is responsible for managing a LKDevice communication. It is used for sending some type of message to any LKDevice. An instance of this class should be generated for the device that is going to be communicated with once a new communication is required.
The steps to use this instace are:
- Initialize the instance with the device that should communicated, a user responsible for the communication and an delegate who implements the LKDeviceCommunicatorProtocol.
- Call communicateWithType everytime a new communication is going to be made with the device.
Declaration
Swift
@objc public class LKDeviceCommunicator : NSObject
-
Specifies an error returned in a device message.
See moreDeclaration
Swift
@objc public class LKDeviceError : NSObject
-
A response from a LK Device when a command is sent.
See moreDeclaration
Swift
@objc public class LKDeviceResponse : NSObject
-
Specification of
LKDeviceResponse
that provides the raw response returned from the device.This is normally used for responses that the device cannot parse (e.g. messages meant for the server).
Declaration
Swift
@objc public class LKDeviceRawResponse : LKDeviceResponse
-
Undocumented
See moreDeclaration
Swift
public class LKRemoteUnlocker : NSObject
-
This entity is a representatiton of the components from a LoopKey.
See moreDeclaration
Swift
@objc public class LKCommDevice : NSObject
-
Unlock Schedule information
See moreDeclaration
Swift
@objc public class LKCommSchedule : NSObject
-
Undocumented
See moreDeclaration
Swift
@objc public class LKCommUser : NSObject
-
Undocumented
See moreDeclaration
Swift
public class LKServerNetworking
-
Undocumented
See moreDeclaration
Swift
@objc public class LKPermissionSettings : NSObject
-
Undocumented
See moreDeclaration
Swift
@objc public class LKPermissionTime : NSObject
-
This class is the main communication manager from the device with a LoopKey. It can be used for discovering a device or to send a messsage. This is an abstract class and a concrete implementation should be provided according to the communication method used to send messages to the LK Device (e.g. BLE).
Warning
This class should never be instantiated. It must be subclassed.Using the service for discovering a device:
- The class has to implement the LKDiscoveryProtocol for listening to response events.
- The class can subscribeForNotifications to discover when has changed its state from reachable to unreachable and vice-versa. In that case that class has to unsubscribeForNotifications when it wants to stop listenning to these events.
- The class can get immediately the current list of visible devices by calling getVisibleDevices.
Using the service for connecting with a device:
- If a a rollCount is need the user can cal readRollCount first.
- To send a message the user can call send.
Declaration
Swift
@objc public class LKCommunicationManager : NSObject
-
This class contains usefull methods for the swift files.
Declaration
Swift
public class LKUtilsSwift


cytopy.flow.gating.utilities¶
Functions
|
Calculate centroid of a given 2-dimensional array |
|
Check peaks against largest peak in list, if peak < t*largest peak, then peak is removed |
|
Perform density dependent down-sampling to remove risk of under-sampling rare populations; |
|
Find local minima between the two highest peaks in the density distribution provided |
|
Generate a list of parameters belonging to given class (klass). |
|
Return mask of two dimensional matrix specifying if a data point (row) falls |
|
Return rows in dataframe who’s values for x and y are contained in some polygon coordinate shape |
|
Generate a 1D kernel density estimation using the scikit-learn implementation |
Given a DataFrame with column ‘labels’, pass over each unique value for ‘labels’ and subset data. |
|
|
Given a pandas dataframe of fcs events data and a definition for a rectangular geom, |
-
cytopy.flow.gating.utilities.
centroid
(data: numpy.array, method: callable = None)¶ Calculate centroid of a given 2-dimensional array
- Parameters
data (Numpy.array) – Data to calculate centroid for (must be 2-dimensional)
method (callable, (default=Numpy.median)) – Method used to find center of each dimension
- Returns
Centroid [x, y]
- Return type
Numpy.array
-
cytopy.flow.gating.utilities.
check_peak
(peaks: numpy.array, probs: numpy.array, t: float = 0.05) → numpy.array¶ Check peaks against largest peak in list, if peak < t*largest peak, then peak is removed
- Parameters
peaks (Numpy.array) – array of indices for peaks
probs (Numpy.array) – array of probability values of density estimate
t (float, (default=0.05)) – height threshold as a percentage of highest peak
- Returns
Sorted peaks
- Return type
Numpy.array
-
cytopy.flow.gating.utilities.
density_dependent_downsample
(data: pandas.core.frame.DataFrame, features: list, frac: float = 0.1, sample_n: int = None, alpha: int = 5, mmd_sample_n: int = 2000, outlier_dens: float = 1, target_dens: float = 5)¶ Perform density dependent down-sampling to remove risk of under-sampling rare populations; adapted from SPADE*
Extracting a cellular hierarchy from high-dimensional cytometry data with SPADE
Peng Qiu-Erin Simonds-Sean Bendall-Kenneth Gibbs-Robert Bruggner-Michael Linderman-Karen Sachs-Garry Nolan-Sylvia Plevritis - Nature Biotechnology - 2011
- Parameters
data (Pandas.DataFrame) – Data to sample
features (list) – Name of columns to be used as features in down-sampling algorithm
frac (float, (default=0.1)) – fraction of dataset to return as a sample
sample_n (int, optional) – number of events to return in sample (used as alternative to frac)
alpha (int, (default=5)) – used for estimating distance threshold between cell and nearest neighbour (default = 5 used in original paper)
mmd_sample_n (int, (default=2000)) – number of cells to sample for generation of KD tree
outlier_dens (float, (default=1)) – used to exclude cells with the lowest local densities; int value as a percentile of the lowest local densities e.g. 1 (the default value) means the bottom 1% of cells with lowest local densities are regarded as noise
target_dens (float, (default=5)) – determines how many cells will survive the down-sampling process; int value as a percentile of the lowest local densities e.g. 5 (the default value) means the density of bottom 5% of cells will serve as the density threshold for rare cell populations
- Returns
Down-sampled pandas dataframe
- Return type
Pandas.DataFrame
-
cytopy.flow.gating.utilities.
find_local_minima
(probs: numpy.array, xx: numpy.array, peaks: numpy.array) → float¶ Find local minima between the two highest peaks in the density distribution provided
- Parameters
probs (Numpy.array) – probability for density estimate
xx (Numpy.array) – x values for corresponding probabilities
peaks (Numpy.array) – array of indices for identified peaks
- Returns
local minima between highest peaks
- Return type
float
-
cytopy.flow.gating.utilities.
get_params
(klass: object, required_only: bool = False, exclude_kwargs: bool = True)¶ Generate a list of parameters belonging to given class (klass).
- Parameters
klass (class) – Python class to extract parameters from
required_only (bool, (default=False)) – If True, returns only parameters with no pre-defined default
exclude_kwargs (bool, (default=True)) – If True, excludes **kwargs
- Returns
List of parameters (list of strings)
- Return type
List
-
cytopy.flow.gating.utilities.
inside_ellipse
(data: numpy.array, center: tuple, width: int, height: int, angle: int) → object¶ Return mask of two dimensional matrix specifying if a data point (row) falls within an ellipse
- Parameters
data (Numpy.array) – two dimensional matrix (x,y)
center (tuple) – x,y coordinate corresponding to center of elipse
width (int or float) – semi-major axis of eplipse
height (int or float) – semi-minor axis of elipse
angle (int or float) – angle of ellipse
- Returns
numpy array of indices for values inside specified ellipse
- Return type
Numpy.array
-
cytopy.flow.gating.utilities.
inside_polygon
(df: pandas.core.frame.DataFrame, x: str, y: str, poly: shapely.geometry.polygon.Polygon)¶ Return rows in dataframe who’s values for x and y are contained in some polygon coordinate shape
- Parameters
df (Pandas.DataFrame) – Data to query
x (str) – name of x-axis plane
y (str) – name of y-axis plane
poly (shapely.geometry.Polygon) – Polygon object to search
- Returns
Masked DataFrame containing only those rows that fall within the Polygon
- Return type
Pandas.DataFrame
-
cytopy.flow.gating.utilities.
kde
(data: pandas.core.frame.DataFrame, x: str, kde_bw: float, kernel: str = 'gaussian') → numpy.array¶ Generate a 1D kernel density estimation using the scikit-learn implementation
- Parameters
data (Pandas.DataFrame) – Data for smoothing
x (str) – column name for density estimation
kde_bw (float) – bandwidth
kernel (str, (default='gaussian')) – kernel to use for estimation (see scikit-learn documentation)
- Returns
Probability density function for array of 1000 x-axis values between min and max of data
- Return type
np.array
-
cytopy.flow.gating.utilities.
multi_centroid_calculation
(data: pandas.core.frame.DataFrame)¶ Given a DataFrame with column ‘labels’, pass over each unique value for ‘labels’ and subset data. For each subset generate calculate the centroid.
- Parameters
data (Pandas.DataFrame) – Dataframe - must contain column name ‘labels’ and ‘chunk_idx’
- Returns
DataFrame with columns ‘chunk_idx’, ‘cluster’, ‘x’, and ‘y’, where ‘x’ and ‘y’ correspond to the coordinates of the centroid.
- Return type
Pandas.DataFrame
-
cytopy.flow.gating.utilities.
rectangular_filter
(data: pandas.core.frame.DataFrame, x: str, y: str, definition: dict) → pandas.core.frame.DataFrame¶ Given a pandas dataframe of fcs events data and a definition for a rectangular geom, filter the pandas dataframe and return only data contained within the rectangular geometric 2D plane
- Parameters
data (Pandas.DataFrame) – pandas dataframe of fcs data to filter
y (str) – name of Y dimension (channel/marker name for column)
x (str) – name of X dimension (channel/marker name for column)
definition (dict) – dictionary with keys: [‘xmin’, ‘xmax’, ‘ymin’, ‘ymax’] each of integer/float value; see static.rect_gate for conventions
- Returns
filtered pandas dataframe
- Return type
Pandas.DataFrame


Installing Guacamole natively
Guacamole is separated into two pieces: guacamole-server, which provides the guacd proxy and related libraries, and guacamole-client, which provides the client to be served by your servlet container, usually Apache Tomcat.
guacamole-client is available in binary form, but guacamole-server must be built from source. Don’t be discouraged: building the components of Guacamole from source is not as difficult as it sounds, and the build process is automated. You just need to be sure you have the necessary tools installed ahead of time. With the necessary dependencies in place, building Guacamole only takes a few minutes.
Building guacamole-server
guacamole-server contains all the native, server-side components required by Guacamole to connect to remote desktops. It provides a common C library, libguac, which all other native components depend on, as well as separate libraries for each supported protocol, and guacd, the heart of Guacamole.
guacd is the proxy daemon that runs on your Guacamole server, accepts users’ connections that are tunneled through the Guacamole web application, and then connects to remote desktops on their behalf. Building guacd creates an executable called guacd which can be run manually or, if you wish, automatically when your computer starts up.
To build guacamole-server, you will need a C compiler (such as gcc) and the libraries that guacamole-server depends on. Some dependencies are absolutely required, while others are optional. The presence of optional dependencies enables additional features.
Important
Many Linux distributions separate library packages into binary and “development” packages; you will need to install the development packages. These will usually end in a “-dev” or “-devel” suffix.
Required dependencies
In order to build guacamole-server, you will need Cairo, libjpeg (or libjpeg-turbo), libpng, and libuuid (or the OSSP UUID library). These libraries are strictly required in all cases - Guacamole cannot be built without them.
- Cairo
Cairo is used by libguac for graphics rendering. Guacamole cannot function without Cairo installed.
Debian / Ubuntu package
libcairo2-dev
Fedora / CentOS / RHEL package
cairo-devel
- libjpeg-turbo
libjpeg-turbo is used by libguac to provide JPEG support. Guacamole will not build without this library present:
Debian package
libjpeg62-turbo-dev
Ubuntu package
libjpeg-turbo8-dev
Fedora / CentOS / RHEL package
libjpeg-turbo-devel
If libjpeg-turbo is unavailable on your platform, and you do not wish to build it from source, libjpeg will work as well, though it will not be quite as fast:
Debian / Ubuntu package
libjpeg62-dev
Fedora / CentOS / RHEL package
libjpeg-devel
- libpng
libpng is used by libguac to write PNG images, the core image type used by the Guacamole protocol. Guacamole cannot function without libpng.
Debian / Ubuntu package
libpng12-dev
Fedora / CentOS / RHEL package
libpng-devel
- libtool
libtool is used during the build process. libtool creates compiled libraries needed for Guacamole.
Debian / Ubuntu package
libtool-bin
Fedora / CentOS / RHEL package
libtool
- libuuid (part of util-linux)
libuuid is used by libguac to assign unique, internal IDs to each Guacamole user and connection. These unique IDs are the basis for connection sharing support.
Debian / Ubuntu package
uuid-dev
Fedora / CentOS / RHEL package
libuuid-devel
If libuuid is unavailable, the OSSP UUID library may also be used:
Debian / Ubuntu package
libossp-uuid-dev
Fedora / CentOS / RHEL package
uuid-devel
Optional dependencies
The optional dependencies of Guacamole dictate which parts of guacamole-server will be built. This includes the support for various remote desktop protocols, as well as any additional features of those protocols:
VNC support depends on the libvncclient library, which is part of libVNCServer.
RDP support depends on a recent version of FreeRDP (2.0.0 or higher, but please not a non-release version from git).
SSH support depends on libssh2, OpenSSL and Pango (a font rendering and text layout library, used by Guacamole’s built-in terminal emulator).
Telnet depends on libtelnet and Pango.
Kubernetes support depends on libwebsockets, OpenSSL, and Pango.
The guacenc
utility, provided by guacamole-server to translate screen
recordings into video, depends on FFmpeg, and will only be built if at least
the libavcodec, libavformat, libavutil, and libswscale libraries provided by
FFmpeg are installed.
Important
If you lack these dependencies, then the features or protocols which depend on them will not be enabled. Please read this section carefully before deciding not to install an optional dependency.
- FFmpeg
The libavcodec, libavformat, libavutil, and libswscale libraries provided by FFmpeg are used by
guacenc
to encode video streams when translating recordings of Guacamole sessions. Without FFmpeg, theguacenc
utility will simply not be built.If you do not wish to make graphical recordings of Guacamole sessions, or do not wish to translate such recordings into video, then FFmpeg is not needed.
Debian / Ubuntu package
libavcodec-dev
,libavformat-dev
,libavutil-dev
,libswsccale-dev
Fedora / CentOS / RHEL package
ffmpeg-devel
- FreeRDP
FreeRDP 2.0.0 or later is required for RDP support. If you do not wish to build RDP support, this library is not needed.
Debian / Ubuntu package
freerdp2-dev
Fedora / CentOS / RHEL package
freerdp-devel
- Pango
Pango is a text layout library which Guacamole uses to render text for protocols that require a terminal (Kubernetes, SSH, and telnet). If you do not wish to build any terminal-based protocol support, this library is not needed.
Debian / Ubuntu package
libpango1.0-dev
Fedora / CentOS / RHEL package
pango-devel
- libssh2
libssh2 is required for SSH and SFTP support. If you do not wish to build SSH or SFTP support, this library is not needed.
Debian / Ubuntu package
libssh2-1-dev
Fedora / CentOS / RHEL package
libssh2-devel
- libtelnet
libtelnet is required for telnet support. If you do not wish to build telnet support, this library is not needed.
Debian / Ubuntu package
libtelnet-dev
Fedora / CentOS / RHEL package
libtelnet-devel
- libVNCServer
libVNCServer provides libvncclient, which is required for VNC support. If you do not wish to build VNC support, this library is not needed.
Debian / Ubuntu package
libvncserver-dev
Fedora / CentOS / RHEL package
libvncserver-devel
- libwebsockets
libwebsockets is required for Kubernetes support. If you do not wish to build Kubernetes support, this library is not needed.
Debian / Ubuntu package
libwebsockets-dev
Fedora / CentOS / RHEL package
libwebsockets-devel
- PulseAudio
PulseAudio provides libpulse, which is used by Guacamole’s VNC support to provide experimental audio support. If you are not going to be using the experimental audio support for VNC, you do not need this library.
Debian / Ubuntu package
libpulse-dev
Fedora / CentOS / RHEL package
pulseaudio-libs-devel
- OpenSSL
OpenSSL provides support for SSL and TLS - two common encryption schemes that make up the majority of encrypted web traffic.
If you have libssl installed, guacd will be built with SSL support, allowing communication between the web application and guacd to be encrypted. This library is also required for SSH support, for manipulating public/private keys, and for Kubernetes support, for SSL/TLS connections to the Kubernetes server.
Without SSL support, there will be no option to encrypt communication to guacd, and support for SSH and Kubernetes cannot be built.
Debian / Ubuntu package
libssl-dev
Fedora / CentOS / RHEL package
openssl-devel
- libvorbis
libvorbis provides support for Ogg Vorbis - a free and open standard for sound compression. If installed, libguac will be built with support for Ogg Vorbis, and protocols supporting audio will use Ogg Vorbis compression when possible.
Otherwise, sound will only be encoded as WAV (uncompressed), and will only be available if your browser also supports WAV.
Debian / Ubuntu package
libvorbis-dev
Fedora / CentOS / RHEL package
libvorbis-devel
- libwebp
libwebp is used by libguac to write WebP images. Though support for WebP is not mandated by the Guacamole protocol, WebP images will be used if supported by both the browser and by libguac.
Lacking WebP support, Guacamole will simply use JPEG in cases that it would have preferred WebP.
Debian / Ubuntu package
libwebp-dev
Fedora / CentOS / RHEL package
libwebp-devel
Obtaining the source code
You can obtain a copy of the guacamole-server source from the Guacamole project
web site. These releases are stable snapshots of the latest code which have
undergone enough testing that the Guacamole team considers them fit for public
consumption. Source downloaded from the project web site will take the form of
a .tar.gz
archive which you can extract
from the command line:
$ tar -xzf guacamole-server-1.5.0.tar.gz
$ cd guacamole-server-1.5.0/
$
If you want the absolute latest code, and don’t care that the code hasn’t been as rigorously tested as the code in stable releases, you can also clone the Guacamole team’s git repository on GitHub:
$ git clone git://github.com/apache/guacamole-server.git
Cloning into 'guacamole-server'...
remote: Counting objects: 6769, done.
remote: Compressing objects: 100% (2244/2244), done.
remote: Total 6769 (delta 3058), reused 6718 (delta 3008)
Receiving objects: 100% (6769/6769), 2.32 MiB | 777 KiB/s, done.
Resolving deltas: 100% (3058/3058), done.
$
The build process
Once the guacamole-server source has been downloaded and extracted, you need to
run configure
. This is a shell script automatically generated by GNU
Autotools, a popular build system used by the Guacamole project for
guacamole-server. Running configure
will determine which libraries are
available on your system and will select the appropriate components for
building depending on what you actually have installed.
Important
Source downloaded directly from git will not contain this configure
script,
as autogenerated code is not included in the project’s repositories. If you
downloaded the code from the project’s git repositories directly, you will need
to generate configure
manually:
$ cd guacamole-server/
$ autoreconf -fi
$
Doing this requires GNU Autotools to be installed.
Source archives downloaded from the project website contain the configure
script and all other necessary build files, and thus do not require GNU
Autotools to be installed on the build machine.
Once you run configure
, you can see what a listing of what libraries were
found and what it has determined should be built:
$ ./configure --with-init-dir=/etc/init.d
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
...
------------------------------------------------
guacamole-server version 1.5.0
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat ......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no
Protocol support:
Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ yes
VNC ........... yes
Services / tools:
guacd ...... yes
guacenc .... yes
guaclog .... yes
Init scripts: /etc/init.d
Systemd units: no
Type "make" to compile guacamole-server.
$
The --with-init-dir=/etc/init.d
shown above prepares the build to install a
startup script for guacd into the /etc/init.d
directory, such that we can
later easily configure guacd to start automatically on boot. If you do not wish
guacd to start automatically at boot, leave off the --with-init-dir
option.
If the directory containing your distribution’s startup scripts differs from
the common /etc/init.d
, replace /etc/init.d
with the proper directory here.
You may need to consult your distribution’s documentation, or do a little
digging in /etc
, to determine the proper location.
Here, configure
has found everything, including all optional libraries, and
will build all protocol support, even support for Ogg Vorbis sound in RDP. If
you are missing some libraries, some of the “yes
” answers above will read
“no
”. If a library which is strictly required is missing, the script will
fail outright, and you will need to install the missing dependency. If, after
running configure
, you find support for something you wanted is missing,
simply install the corresponding dependencies and run configure
again.
Important
All protocols that require a terminal (Kubernetes, SSH, and telnet) require that fonts are installed on the Guacamole server in order to function, as output from the terminal cannot be rendered otherwise. Support for these protocols will build just fine if fonts are not installed, but it will fail to connect when used:
Aug 23 14:09:45 my-server guacd[5606]: Unable to get font "monospace"
If terminal-based connections are not working and you see such a message in syslog, you should make sure fonts are installed and try again.
Once configure
is finished, just type “make
”, and it will guacamole-server
will compile:
$ make
Making all in src/libguac
make[1]: Entering directory `/home/mjumper/guacamole/guacamole-server/src/libguac'
...
make[1]: Leaving directory `/home/mjumper/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Entering directory `/home/mjumper/guacamole/guacamole-server'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/home/mjumper/guacamole/guacamole-server'
$
Quite a bit of output will scroll up the screen as all the components are compiled.
Installation
Once everything finishes, all you have left to do is type “make install
” to
install the components that were built, and then “ldconfig
” to update your
system’s cache of installed libraries:
# make install
Making install in src/libguac
make[1]: Entering directory `/home/mjumper/guacamole/guacamole-server/src/libguac'
make[2]: Entering directory `/home/mjumper/guacamole/guacamole-server/src/libguac'
...
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/mjumper/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Leaving directory `/home/mjumper/guacamole/guacamole-server/src/protocols/vnc'
make[1]: Entering directory `/home/mjumper/guacamole/guacamole-server'
make[2]: Entering directory `/home/mjumper/guacamole/guacamole-server'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/mjumper/guacamole/guacamole-server'
make[1]: Leaving directory `/home/mjumper/guacamole/guacamole-server'
# ldconfig
#
At this point, everything is installed, but guacd is not running. You will need to run guacd in order to use Guacamole once the client components are installed as well.
Beware that even after installing guacd and its startup script, you will likely still have to activate the service for it to start automatically. Doing this varies by distribution, but each distribution will have documentation describing how to do so.
guacamole-client
Important
Normally, you don’t need to build guacamole-client, as it is written in Java and is cross-platform. You can easily obtain the latest version of guacamole-client from the release archives of the Guacamole project web site, including all supported extensions, without having to build it yourself.
If you do not want to build guacamole-client from source, just download
guacamole.war
from the project web site, along with any desired extensions,
and skip ahead to Deploying Guacamole.
guacamole-client contains all Java and JavaScript components of Guacamole (guacamole, guacamole-common, guacamole-ext, and guacamole-common-js). These components ultimately make up the web application that will serve the HTML5 Guacamole client to users that connect to your server. This web application will then connect to guacd, part of guacamole-server, on behalf of connected users in order to serve them any remote desktop they are authorized to access.
To compile guacamole-client, all you need is Apache Maven and a copy of the Java JDK. Most, if not all, Linux distributions will provide packages for these.
You can obtain a copy of the guacamole-client source from the Guacamole project
web site. These releases are stable snapshots of the latest code which have
undergone enough testing that the Guacamole team considers them fit for public
consumption. Source downloaded from the project web site will take the form of
a .tar.gz
archive which you can extract from the command line:
$ tar -xzf guacamole-client-1.5.0.tar.gz
$ cd guacamole-client-1.5.0/
$
As with guacamole-server, if you want the absolute latest code, and don’t care that the code hasn’t been as rigorously tested as the code in stable releases, you can also clone the Guacamole team’s git repository on GitHub:
$ git clone git://github.com/apache/guacamole-client.git
Cloning into 'guacamole-client'...
remote: Counting objects: 12788, done.
remote: Compressing objects: 100% (4183/4183), done.
remote: Total 12788 (delta 3942), reused 12667 (delta 3822)
Receiving objects: 100% (12788/12788), 3.23 MiB | 799 KiB/s, done.
Resolving deltas: 100% (3942/3942), done.
$
Unlike guacamole-server, even if you grab the code from the git repositories,
you won’t need to run anything before building. There are no scripts that need
to be generated before building - all Maven needs is the pom.xml
file
provided with the source.
To build guacamole-client, just run “mvn package
”. This will invoke Maven
to automatically build and package all components, producing a single .war
file, which contains the entire web application:
$ mvn package
[INFO] Scanning for projects...

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for guacamole-client 1.5.0:
[INFO]
[INFO] guacamole-client ................................... SUCCESS [ 11.879 s]
[INFO] guacamole-common ................................... SUCCESS [ 15.140 s]
[INFO] guacamole-ext ...................................... SUCCESS [ 14.764 s]
[INFO] guacamole-common-js ................................ SUCCESS [ 23.530 s]
[INFO] guacamole .......................................... SUCCESS [01:09 min]
[INFO] extensions ......................................... SUCCESS [ 0.601 s]
[INFO] guacamole-auth-duo ................................. SUCCESS [ 6.680 s]
[INFO] guacamole-auth-header .............................. SUCCESS [ 3.379 s]
[INFO] guacamole-auth-jdbc ................................ SUCCESS [ 0.239 s]
[INFO] guacamole-auth-jdbc-base ........................... SUCCESS [ 6.755 s]
[INFO] guacamole-auth-jdbc-mysql .......................... SUCCESS [ 6.523 s]
[INFO] guacamole-auth-jdbc-postgresql ..................... SUCCESS [ 4.756 s]
[INFO] guacamole-auth-jdbc-sqlserver ...................... SUCCESS [ 4.600 s]
[INFO] guacamole-auth-jdbc-dist ........................... SUCCESS [ 3.381 s]
[INFO] guacamole-auth-json ................................ SUCCESS [ 6.449 s]
[INFO] guacamole-auth-ldap ................................ SUCCESS [ 10.611 s]
[INFO] guacamole-auth-quickconnect ........................ SUCCESS [ 6.908 s]
[INFO] guacamole-auth-sso ................................. SUCCESS [ 0.216 s]
[INFO] guacamole-auth-sso-base ............................ SUCCESS [ 4.174 s]
[INFO] guacamole-auth-sso-cas ............................. SUCCESS [ 12.180 s]
[INFO] guacamole-auth-sso-openid .......................... SUCCESS [ 5.119 s]
[INFO] guacamole-auth-sso-saml ............................ SUCCESS [ 5.263 s]
[INFO] guacamole-auth-sso-dist ............................ SUCCESS [ 6.400 s]
[INFO] guacamole-auth-totp ................................ SUCCESS [ 9.445 s]
[INFO] guacamole-history-recording-storage ................ SUCCESS [ 2.370 s]
[INFO] guacamole-vault .................................... SUCCESS [ 0.177 s]
[INFO] guacamole-vault-base ............................... SUCCESS [ 3.899 s]
[INFO] guacamole-vault-ksm ................................ SUCCESS [ 8.084 s]
[INFO] guacamole-vault-dist ............................... SUCCESS [ 3.555 s]
[INFO] guacamole-example .................................. SUCCESS [ 2.363 s]
[INFO] guacamole-playback-example ......................... SUCCESS [ 1.040 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:20 min
[INFO] Finished at: 2023-01-10T17:20:33-08:00
[INFO] ------------------------------------------------------------------------
$
Once the Guacamole web application is built, there will be a .war file in the
guacamole/target/
subdirectory of the current directory (the directory you
were in when you ran mvn), ready to be deployed to a servlet container like
Tomcat.
Deploying Guacamole
The web application portion of Guacamole is packaged as a fully self-contained
.war
file. If you downloaded Guacamole from the main project web site, this
file will be called guacamole.war
. Deploying this involves copying the file
into the directory your servlet container uses for .war
files. In the case of
Tomcat, this will be CATALINA_HOME/webapps/
. The location of CATALINA_HOME
will vary by how Tomcat was installed, but is commonly /var/lib/tomcat
,
/var/lib/tomcat7
, or similar:
# cp guacamole.war /var/lib/tomcat/webapps
#
If you have built guacamole-client from source, the required .war
file will
be within the guacamole/target/
directory and will contain an additional
version suffix. As Tomcat will determine the location of the web application
from the name of the .war
file, you will likely want to rename this to simply
guacamole.war
while copying:
# cp guacamole/target/guacamole-1.5.0.war /var/lib/tomcat/webapps/guacamole.war
#
Again, if you are using a different servlet container or if Tomcat is installed
to a different location, you will need to check the documentation of your
servlet container, distribution, or both to determine the proper location for
deploying .war
files like guacamole.war
.
Once the .war
file is in place, you may need to restart Tomcat to force
Tomcat to deploy the new web application, and the guacd daemon must be started
if it isn’t running already. The command to restart Tomcat and guacd will vary
by distribution. Typically, you can do this by running the corresponding init
scripts with the “restart” option:
# /etc/init.d/tomcat7 restart
Stopping Tomcat... OK
Starting Tomcat... OK
# /etc/init.d/guacd start
Starting guacd: SUCCESS
guacd[6229]: INFO: Guacamole proxy daemon (guacd) version 1.5.0 started
#
Important
If you want Guacamole to start on boot, you will need to configure the Tomcat and guacd services to run automatically. Your distribution will provide documentation for doing this.
After restarting Tomcat and starting guacd, Guacamole is successfully installed, though it will not be fully running. In its current state, it is completely unconfigured, and further steps are required to add at least one Guacamole user and a few connections. This is covered in Configuring Guacamole.
What about WebSocket?
Guacamole will use WebSocket automatically if supported by the browser and your servlet container. In the event that Guacamole cannot connect using WebSocket, it will immediately and transparently fall back to using HTTP.
WebSocket is supported in Guacamole for Tomcat 7.0.37 or higher, Jetty 8 or higher, and any servlet container supporting JSR 356, the standardized Java API for WebSocket.


Jeremys Blog & Technology Reviews
Home
Tags
Timeline
About
Reviews
Home
Tags
Timeline
About
Reviews
404
Page not found :(
The requested page could not be found.


HTTP builder.
More...
#include <HTTPBuilder.h>
|
| | HTTPBuilder (const std::string &fullHTTPVersion="HTTP/1.1") |
| |
| | HTTPBuilder (const HTTPBuilder &other) |
| |
| | HTTPBuilder (HTTPBuilder &&other) noexcept |
| |
| HTTPBuilder & | operator= (const HTTPBuilder &other) |
| |
| HTTPBuilder & | operator= (HTTPBuilder &&other) noexcept |
| |
| HTTPBuilder & | getRequest () |
| | Set GET request. More...
|
| |
| HTTPBuilder & | postRequest () |
| | Set POST request. More...
|
| |
| HTTPBuilder & | putRequest () |
| | Set PUT request. More...
|
| |
| HTTPBuilder & | headRequest () |
| | Set HEAD request. More...
|
| |
| HTTPBuilder & | optionsRequest () |
| | Set OPTIONS request. More...
|
| |
| HTTPBuilder & | deleteRequest () |
| | Set DELETE request. More...
|
| |
| HTTPBuilder & | connectRequest () |
| | Set CONNECT request. More...
|
| |
| HTTPBuilder & | traceRequest () |
| | Set TRACE request. More...
|
| |
| HTTPBuilder & | patchRequest () |
| | Set PATCH request. More...
|
| |
| template<typename StringT , typename T , typename... Args> |
| HTTPBuilder & | parameters (StringT &&name, T &&value, Args &&... args) |
| | Append key - value parameters. More...
|
| |
| HTTPBuilder & | parameters (const std::string ¶meters) |
| | Set parameters. More...
|
| |
| HTTPBuilder & | responseCode (responseCodes code) |
| |
| HTTPBuilder & | responseCode (int code, const std::string &responseMessage) |
| |
| HTTPBuilder & | HTTPVersion (const std::string &httpVersion) |
| |
| template<typename StringT , typename T , typename... Args> |
| HTTPBuilder & | headers (StringT &&name, T &&value, Args &&... args) |
| | Append header - value. More...
|
| |
| HTTPBuilder & | chunks (const std::vector< std::string > &chunks) |
| |
| HTTPBuilder & | chunk (const std::string &chunk) |
| |
| std::string | build (const std::string &data="", const std::unordered_map< std::string, std::string > &additionalHeaders={}) const |
| |
| std::string | build (const json::JSONBuilder &builder, const std::unordered_map< std::string, std::string > &additionalHeaders={}) const |
| |
| HTTPBuilder & | clear () |
| |
| | ~HTTPBuilder ()=default |
| |
HTTP builder.
Definition at line 22 of file HTTPBuilder.h.
◆ HTTPBuilder() [1/3]
| web::HTTPBuilder::HTTPBuilder |
( |
const std::string & |
fullHTTPVersion = "HTTP/1.1" | ) |
|
◆ HTTPBuilder() [2/3]
| web::HTTPBuilder::HTTPBuilder |
( |
const HTTPBuilder & |
other | ) |
|
◆ HTTPBuilder() [3/3]
◆ ~HTTPBuilder()
| web::HTTPBuilder::~HTTPBuilder |
( |
| ) |
|
|
default |
◆ build() [1/2]
| std::string web::HTTPBuilder::build |
( |
const json::JSONBuilder & |
builder, |
|
|
const std::unordered_map< std::string, std::string > & |
additionalHeaders = {} |
|
) |
| const |
◆ build() [2/2]
| std::string web::HTTPBuilder::build |
( |
const std::string & |
data = "" , |
|
|
const std::unordered_map< std::string, std::string > & |
additionalHeaders = {} |
|
) |
| const |
◆ chunk()
| HTTPBuilder & web::HTTPBuilder::chunk |
( |
const std::string & |
chunk | ) |
|
◆ chunks()
| HTTPBuilder & web::HTTPBuilder::chunks |
( |
const std::vector< std::string > & |
chunks | ) |
|
◆ clear()
◆ connectRequest()
◆ deleteRequest()
◆ getChunk()
| string web::HTTPBuilder::getChunk |
( |
const std::string & |
chunk | ) |
|
|
static |
Make HTTP parsed chunk.
- Parameters
-
- Returns
Definition at line 107 of file HTTPBuilder.cpp.
◆ getChunks()
| string web::HTTPBuilder::getChunks |
( |
const std::vector< std::string > & |
chunks | ) |
|
|
static |
Make HTTP parsed data with zero chunk.
- Parameters
-
- Returns
Definition at line 93 of file HTTPBuilder.cpp.
◆ getRequest()
◆ headers()
template<typename StringT , typename T , typename... Args>
| HTTPBuilder & web::HTTPBuilder::headers |
( |
StringT && |
name, |
|
|
T && |
value, |
|
|
Args &&... |
args |
|
) |
| |
Append header - value.
- Template Parameters
-
- Parameters
-
- Returns
- Self
Definition at line 177 of file HTTPBuilder.h.
◆ headRequest()
◆ HTTPVersion()
| HTTPBuilder & web::HTTPBuilder::HTTPVersion |
( |
const std::string & |
httpVersion | ) |
|
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ optionsRequest()
◆ parameters() [1/2]
| HTTPBuilder& web::HTTPBuilder::parameters |
( |
const std::string & |
parameters | ) |
|
Set parameters.
- Parameters
-
- Returns
- Self
◆ parameters() [2/2]
template<typename StringT , typename T , typename... Args>
| HTTPBuilder & web::HTTPBuilder::parameters |
( |
StringT && |
name, |
|
|
T && |
value, |
|
|
Args &&... |
args |
|
) |
| |
Append key - value parameters.
- Template Parameters
-
- Parameters
-
- Returns
- Self
Definition at line 146 of file HTTPBuilder.h.
◆ patchRequest()
◆ postRequest()
◆ putRequest()
◆ responseCode() [1/2]
| HTTPBuilder& web::HTTPBuilder::responseCode |
( |
int |
code, |
|
|
const std::string & |
responseMessage |
|
) |
| |
◆ responseCode() [2/2]
◆ traceRequest()
◆ operator<<
Set HTTP to output stream.
- Parameters
-
| outputStream | std::ostream subclass instance |
| parser | const reference to HTTPBuilder instance |
- Returns
- outputStream
The documentation for this class was generated from the following files:


---
layout: post
title: skipping vpn, going to bluetooth
date: '2007-05-15T00:27:00.000+02:00'
author: Steven Van Acker
tags:
modified_time: '2008-01-18T10:47:35.994+01:00'
blogger_id: tag:blogger.com,1999:blog-5513234137363262204.post-1916263659727997897
blogger_orig_url: http://www.singularity.be/2007/05/skipping-vpn-going-to-bluetooth.html
---
I've been doing other geeky stuff lately, but more about that later.
I decided to skip the OpenVPN trials and focus on the bluetooth interconnectivity for now.
I'm installing kMobileTools, bluetooth chat, bluetooth obex client, kbluetoothd, bluetooth obex server and bluetooth file sharing.
http://www.spiration.co.uk/post/1307
http://www.marotori.com/blog/?cat=12
http://ludit.kuleuven.be/internet/kotnet/dialin_en.html
https://wiki.ubuntu.com/BluetoothDialup
http://www.gentoo.org/doc/en/bluetooth-guide.xml
https://wiki.ubuntu.com/Telepathy/Modules
http://gnokii.org/faq.shtml
bluez-gnome !
http://live.gnome.org/PhoneManager


This is the First Charger SRT8 that was built for public sale. It is in new condition. With only 3002 miles on the odometer this is a perfect example of an SRT8. The tires are original and look unused. In addition to being the first SRT8
this is the only one in the color GoManGo.
One off options on this car are the following:
The only SRT8 to be painted GoMango
One of a kind Matte Black Grill Insert
Matt Black Deck lid Applique
Steering Wheel Stitching in GoMango
Sport Seat Stitching GoMango
Shift Nob With GoMango stitching
Black painted Brembo Calipers
20 inch aluminum Performance Wheels Fully Polished
Assembled September 12, 2005 at the Brampton Assembly plant. We have documenting including pictures of this Charger moving through the assembly line (disc that comes with the car). Certificate of Authenticity from Dodge. The car fax shows
mileage of 4000 reported back in 2011 when the current owner registered it. This was a rounded figure. The car has sat in a collection since 2011.
Please call me if you are interested I have a Flcker album with videos and over 100 pictures so you can see the car and its condition. Please message me your email address and I will send the invite.
Please call me to discuss this beautiful SRT8, or arrange an inspection. My auction almost always end early due to a sale. I am happy to discuss a purchase price with any one who calls. You can reach me at<PHONE_NUMBER>. Check out my Ebay
Listing
here.


Home
Games
Fans
Contact
Game Listing
Smash Ultimate released for:
Your browser does not support Javascript
00
y
00
d
00
h
00
m
00
s


Executive Leadership
Enduring Commitments - Uncompromising Quality
Ranjeev Pamnani, President & CEO
Ranjeev Pamnani is the President/CEO and co-founder of Cloud Nine Technologies Inc. He defines the strategic plan and provides vision, direction and leadership to help the company reach its goals. This includes setting high performance standard and leading by example a team of outstanding talented staff, developing external relationships to increase market presence, and leading the company to a path of sustainable growth. Mr. Pamnani has over 17 years of technical and professional experience in various disciplines within the information technology field. He has provided technical leadership as an architect to federal government customers. He is a subject matter expert in the domains of Grants Management and Improper Federal Payment Reduction. His deep knowledge of technologies coupled with his Domain knowledge expertise has led to simplified technology solutions for our clients that effectively address their business needs.
Indranil Sen, EVP & COO
Indranil Sen is the EVP/COO and co-founder of Cloud Nine Technologies Inc. He is responsible for Business and Proposal, Development, Program Management, Operations and Customer Relationship. He brings extensive technical and management experience in leveraging technology to provide value added services to our customers. He has expertise in managing traditional and non-traditional IT SDLC projects that are compliant with CMMI Level 3 practices. Mr. Sen has extensive domain knowledge of Improper Federal Payment Reduction - Income Verification and Intra-Governmental Data Exchanges. He was instrumental in the success of the HUD - Enterprise Income Verification program. He also has extensive domain knowledge of Asset Management and Asset Life Cycle and has successfully led major Asset reconciliation effort for a federal client. .
News Room
December 2017
Cloud Nine receives CMMI Level 3 certification in Development and ServicesFebruary 2017
Cloud Nine has been awarded CMS SPARC contract as an 8(a) and a small business, Cloud Nine will compete for task orders offering a variety of information technology professional services to all operating divisions within HHS. SPARC is managed by HHS’ Centers for Medicare & Medicaid Services (CMS). The types of services available through SPARC is broad and includes:- Requirements Services
- Design Services
- Development Services
- Test Services
- Security Control Assessment Services
- Independent Verification and Validation Services
- Maintenance Services
- General Support and Business Operations Services
- Data Request Services
February 2012
Cloud Nine receives CMMI Level 3 certificationDecember 2011
Cloud Nine has been awarded the Report of Survey and Personal Property Asset Management Program Support contract at FAA. The Personal Property Management Program supports the operational mission of the FAA through policy, control, visibility and tracking of all leased and owned assets, as well as Government owned assets at contractor depots from the time the asset becomes operationally inuse until the asset is no longer required by the Agency. The Report of Survey Program is responsible for establishing policy and procedure for the survey of lost, damaged, or destroyed personal property.August 2011
Cloud Nine Technologies receives CMMI Level 2 certificationApril 2011
Cloud Nine Technologies has been chosen as the prime contractor at FAA under the 7-year $2.0 billion eFAST IDIQ vehicle. eFAST is an IDIQ vehicle for small businesses at FAA to provide a broad range of comprehensive professional and support services. Cloud Nine has been awarded the contract for the following four functional areas:- Business Administration and Management (BAM)
- Computer/Information Systems Development (CSD)
- Computer Systems Support (CSS)
- Documentation & Training (D&T)


Describe the actions you take to succeed at this step. Emphasize why this step is important and useful.
This might be a good place to reinforce the rationale and importance of this step. Mercedem aut nummos unde unde extricat, amaras. Quis aute iure reprehenderit in voluptate velit esse.
Offer tips and advice. Highlight common pitfalls and suggest strategies to avoid them. Link to additional resources for help and guidance. Quote experts (both learners and teachers), if that might be helpful.
"A compelling quote that offers great advice." - a successful learner
Summarize key things about this step. Give encouragement! Maybe a self-eval checklist?


TShirt Designer (Desktop)
Open in a new window
Task Manager
Open in a new window
Website Template
Open in a new window
OpenDataStat
Open in a new window


Hush has been building the first ever open source private messenger service based on Zcash technology. Hush & Komodo not only share core developers, but coinciding views on the importance of independent right to privacy.
100 messages
Before 05-Dec-19 12:00 AM
GatewayBOT09-Oct-19 04:28 PM
[dscrd-hush] <franciscana23> Good afternoon friends
GatewayBOT09-Oct-19 05:01 PM
[dscrd-hush] <Berg> !ticker BTC
[dscrd-hush] <ORAMASAKS> hello
[dscrd-hush] <Berg> Bitcoin is making some moves
[dscrd-hush] <ORAMASAKS> wen is the wallet going on gplay ?(edited)
[dscrd-hush] <Berg> @Privatoshi² and @dukeleto are the ones leading that :)
We'll see what they have to say once someone comes online.
[dscrd-hush] <ORAMASAKS> ok thanx
GatewayBOT09-Oct-19 08:39 PM
[dscrd-hush] <CANCEROSO> Hello friend, new member
[dscrd-hush] <Berg> @CANCEROSO Hi! Welcome to the Hush Discord
[dscrd-hush] <CANCEROSO> @Berg Thanks friend, how was your day?
[dscrd-hush] <Berg> Very good How about you?
[dscrd-hush] <Berg> What brings you to Hush?
GatewayBOT09-Oct-19 08:51 PM
[dscrd-hush] <CANCEROSO> @Berg I was reading ads on twitter and a link brought me here.
GatewayBOT09-Oct-19 10:36 PM
[dscrd-hush] <AkiraX> Welcome
GatewayBOT09-Oct-19 11:06 PM
[dscrd-hush] <Hember> I have tried to sync silent dragon for three times. Every time komodod fails at 97% of syncing. What should I do?
[dscrd-hush] <Hember> I'm going to participate in the joke contest. I used an hour to make up a bad joke.
GatewayBOT10-Oct-19 01:25 AM
[dscrd-hush] <dukeleto> @Hember i am working hard to fix this weird sync issue. are you able to compile your own daemon or do you require binaries?
GatewayBOT10-Oct-19 10:38 AM
[dscrd-hush] <aledel> :carlos:
GatewayBOT10-Oct-19 01:37 PM
[dscrd-hush] <dukeleto> !tip @CHMEX 250 hush
[dscrd-hush] <tip.cc> :HUSH: @dukeleto sent @CHMEX 250.00 HUSH (≈ $9.65).
[dscrd-hush] <dukeleto> @CHMEX thanks for getting an explorer for our old chain up and running!
OLD HUSH. View detailed information on all OLD HUSH transactions and block. {{ $root.title + $root.titleDetail }}
[dscrd-hush] <dukeleto> If anybody needs to prove a transaction happened on the old chain, to an exchange or whatever, now you can get that info easily
[dscrd-hush] <dukeleto> That explorer is stopped at block 500,000 , so all the numbers are exactly correct, as they were used in the snapshot
Where did you hear about $HUSH? We’d love to know where our community comes from!
GatewayBOT10-Oct-19 03:50 PM
[dscrd-hush] <CANCEROSO> good morning to all(edited)
GatewayBOT10-Oct-19 03:57 PM
[dscrd-hush] <Hember> @dukeleto I do not understand this question "are you able to compile your own daemon or do you require binaries?"... I don't know how to compile a daemon or what this binaries thing is. All I know that sometimes you need to first run daemon manually when using some wallet programs.
GatewayBOT10-Oct-19 05:50 PM
[dscrd-hush] <CANCEROSO> bad joke
What did he die of? - He drowned with the words he never said - And what were they? - "I do not know how to swim"
GatewayBOT10-Oct-19 08:13 PM
[dscrd-hush] <Berg> You should send it on SilentDragon to
for a chance to win 500 HUSH or a physical HUSH coin (edited)
GatewayBOT10-Oct-19 09:46 PM
[dscrd-hush] <AkiraX> Why couldn’t you hear the pterodactyl in the bathroom?(edited)
[dscrd-hush] <AkiraX> The p is silent
GatewayBOT11-Oct-19 02:16 AM
[dscrd-hush] <dukeleto> @Hember that answers my question We are actively debugging the problem, so best thing is to hang tight and wait for a new release
GatewayBOT11-Oct-19 07:59 AM
[dscrd-hush] <gigamesh> @Berg is the competition postponed now?(edited)
GatewayBOT11-Oct-19 08:55 AM
[dscrd-hush] <Crypto99> @ORAMASAKS
I think we will prefer that you download
Silent Dragon, from Github, and maybe F-Droid, at a later time.
GatewayBOT11-Oct-19 01:38 PM
[dscrd-hush] <dukeleto> @gigamesh nope, I told Berg the risks and he is ok with them
[dscrd-hush] <Zbayda> waht about bitcoin Hush ?
[dscrd-hush] <dukeleto> @Zbayda it's waiting patiently, for a day to shine
[dscrd-hush] <Zbayda> i had them since one year
[dscrd-hush] <Zbayda> i hope
GatewayBOT11-Oct-19 01:55 PM
[dscrd-hush] <Berg> Yes, considering that a lot of people are having issues with their wallet we’ll extend submissions
[dscrd-hush] <Berg> We’ll extend it by a week or so, depending on when it’s solved
[dscrd-hush] <dukeleto> no mining pools or exchanges reported issues. it seems it was GUI wallet users that are most effected
[dscrd-hush] <dukeleto> it's a weird-ass bug
GatewayBOT11-Oct-19 02:41 PM
[dscrd-hush] <scubapanda> No GUI here..
[dscrd-hush] <scubapanda> Is there a hush blockchain bootstrap that goes beyond the 99k issue, happy to try that.
GatewayBOT11-Oct-19 03:46 PM
[dscrd-hush] <Dr.Terminus> DITTO
GatewayBOT11-Oct-19 03:58 PM
[dscrd-hush] <dukeleto> @scubapanda it has to do with the exact commit you were running, it seems. None of my servers were affected
[dscrd-hush] <dukeleto> at least that is good, the Hush seed node listed in the hushd script did not crash. That would have been shitty
@kadhimshubber @RobMcNealy Desperate move by the US authorities to try and protect the Petro-Dollar's eminent collapse. Governments won't be able to stop blockchain
[dscrd-hush] <actionslacks> 50+ people just joined the discord in the space of 4 minutes...:rolf:
GatewayBOT12-Oct-19 04:45 AM
[dscrd-hush] <jewelie> @AkiraX I'm from the Philippines.
Easiest way is through apps like coins.ph
People here can also buy BTC on 7-eleven.(edited)
GatewayBOT12-Oct-19 05:54 AM
[dscrd-hush] <passcombo.com > not sure you've seen my prev post @dukeleto what is your opinion on chances hushlist could be used to create a decentralized opt-in anonymouse twitter? far from that? I think it would be interesting to make monteziation like - each activiti cost some Hush dust like 0.0001 Hush to prevetn spamming in comments/likes and so... probably some interface would be needed to link messages, likes, comments, user profile? images could be put as links and displayed in a proper app or maybe even "explorers" online ?
[dscrd-hush] <passcombo.com > what twitter is missing is opt-in anonimity, freedom from censorship and decentralization
[dscrd-hush] <passcombo.com > at least it could be good start to be able to create anonymouse news channel visible in the online explorer if that is simple ?
[dscrd-hush] <passcombo.com > ah and one more think added - each time comment or like a post on hush twitter I pay 0.0001 dust it should got to the orig post - this way good content creators of interesting channels get rewarder
[dscrd-hush] <passcombo.com > could be huge, maybe better then steemit idea
[dscrd-hush] <passcombo.com > and I believe the hardest part is done
GatewayBOT12-Oct-19 06:59 AM
[dscrd-hush] <phm87> Good morning Hush
Have a nice weekend !
GatewayBOT12-Oct-19 07:14 AM
[dscrd-hush] <denio> thanks, you too @phm87
[dscrd-hush] <denio> after rain for a week or so the sun is back in germany
GatewayBOT12-Oct-19 07:37 AM
[dscrd-hush] <phm87> Belgium weather is fine today. I will cut the grass. Maybe I will find some private keys in the ground
GatewayBOT12-Oct-19 10:47 AM
[dscrd-hush] <dukeleto> !tip @jewelie 25 hush
[dscrd-hush] <tip.cc> :HUSH: @dukeleto sent @jewelie 25.00 HUSH (≈ $1.40).
[dscrd-hush] <dukeleto> thanks for the good local PH info
[dscrd-hush] <dukeleto> @passcombo.com something like you describe is possible. I could help somebody build it, but I am pretty focused on the lower layers, still. I also have ideas of how to do something similar inside SilentDragon
GatewayBOT12-Oct-19 10:59 AM
[dscrd-hush] <jewelie> Thanks so much @dukeleto
[dscrd-hush] <dukeleto>
[dscrd-hush] <dukeleto> I am beginning to find time to work on the Hush DragonHead's again, I need to buy some HW in bulk and come up with a system to "image" a new Linux install with a bunch of Hush software. The goal is when you buy it, it's "plug-n-play" and you just give it some internet to sync back to 100%. It will have Hush + :SD: pre-installed
[dscrd-hush] <dukeleto> there will be no wallet.dat, that is created the first time you startup. We don't want to know your privkeys and never trust any kind of thing like this that comes with a pre-generated wallet.dat !!! Somebody could monitor the addresses constantly and sweep funds out at any time
[dscrd-hush] <dukeleto> I am going to add a feature to :SD: which shows the time the wallet.dat was created in the hushd screen. That will make it easier for GUI users to verify the time the wallet.dat was generated, without using the command line


THE END! You decided to find a new career! Its okay, sometimes we are chosen to do something else in life. You can keep playing as much as you want!Start Over?!


The biggest sights in Nebraska
Henry Doorly Zoo in Omaha:
Joslyn Art Museum in Omaha:
The Durham Museum in Omaha:
Return
Page 6


A Portfolio Website
Learning everyday. (This is a prototype website, still in an initial stage.)
Learning everyday. (This is a prototype website, still in an initial stage.)
Currently I am an Engineering Student learning Electronics and Communications. I mostly understand everything by experimenting a lot; 'Trial and Error' method, which gives the most interesting results known to me.
I love Electronics, Design, Photography, Coding, Driving, Travel. The next page will show you my progress in learning software skills related to these.


TCPhotoViewController
open class TCPhotoViewController : UIViewController, TCPhotoContainer, UIScrollViewDelegate
Undocumented
-
Undocumented
Declaration
Swift
open var photo: TCPhoto?
-
Undocumented
Declaration
Swift
open weak var delegate: TCPhotoViewControllerDelegate?
-
Undocumented
Declaration
Swift
open var scalingImageView: TCScalingImageView?
-
Undocumented
Declaration
Swift
open var loadingView: UIView?
-
Undocumented
Declaration
Swift
open var notificationCenter: NotificationCenter?
-
Undocumented
Declaration
Swift
open lazy var doubleTapGestureRecognizer: UITapGestureRecognizer { get set }
-
Undocumented
Declaration
Swift
open lazy var longPressGestureRecognizer: UILongPressGestureRecognizer { get set }
-
Undocumented
Declaration
Swift
public init( withPhoto photo: TCPhoto?, loadingView: UIView?, notificationCenter: NotificationCenter?)
-
Undocumented
Declaration
Swift
override public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
-
Undocumented
Declaration
Swift
required public init?(coder aDecoder: NSCoder)
-
Undocumented
Declaration
Swift
override open func viewDidLoad()
-
Undocumented
Declaration
Swift
override open func viewWillLayoutSubviews()
-
Undocumented
Declaration
Swift
override open func prefersHomeIndicatorAutoHidden() -> Bool
-
Undocumented
Declaration
Swift
open func setupLoadingView(_ loadingView: UIView?)
-
Undocumented
Declaration
Swift
@objc open func photoImageUpdated(withNotification notification: Notification)
-
Undocumented
Declaration
Swift
open func updateImage(_ image: UIImage?, imageData: Data?)
-
Undocumented
Declaration
Swift
@objc open func didDoubleTapWithGestureRecognizer(_ recognizer: UITapGestureRecognizer)
-
Undocumented
Declaration
Swift
@objc open func didLongPressWithGestureRecognizer(_ recognizer: UILongPressGestureRecognizer)
-
Undocumented
Declaration
Swift
open func viewForZooming(in scrollView: UIScrollView) -> UIView?
-
Undocumented
Declaration
Swift
open func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?)
-
Undocumented
Declaration
Swift
open func scrollViewDidEndZooming( _ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat)


Page Not Found We're sorry, but the URL you've requested cannot be found on this web site.Sections of this site include: Home About Blog Projects


The Team
PROAIR SDN BHD, a contracting mechanical and electrical company was established in 1990 with the main objective of providing.
Kan Kum Fatt
Managing Director
Mr. Kan is the founder and main shareholder of Proair Sdn Bhd. He holds a Diploma in Electrical & electronics Engineering, and has been trained in design of air-conditioning systems (basic & advanced). Mr. Kan has more than 30 years’ experience in the heating ventilation and air- conditioning industry.
Shia Mary
Director (Finance and Administration)
Ms. Shia is responsible for the company’s finance and administration unit of the company. She holds a Master of Business Administration degree from University of Bath, United Kingdom and is a member of the Malaysian Institute of Management. Ms Shia had 15 years’ experience in the financial services industry prior to joining as the Finance and Administration Director.
Phang Chee Kit
Project Director
Mr. Phang Holds a B SC. in Electrical Engineering (Honours) UK, MIEM, P. Eng, MIPENZ. He has extensive experience in mechanical and engineering works.


---
layout: post
title: Read books, don't read libraries (Linux Programming Book)
date: '2009-12-14T19:49:00.000-08:00'
author: Daniel Hilst
blogger: true
tags:
modified_time: '2009-12-16T00:13:07.620-08:00'
blogger_id: tag:blogger.com,1999:blog-8785437776394405849.post-8411054638455096186
blogger_orig_url: http://gkos-hw.blogspot.com/2009/12/read-books-dont-read-libraries-linux.html
---
Another good (I hope so) book (:
http://www.advancedlinuxprogramming.com/alp-folder


FROM RUSSIA WITH LOVE A film review by James Berardinelli Copyright 1996 James Berardinelli
RATING (0 TO 10): 8.0 Alternative Scale: ***1/2 out of ****
United Kingdom, 1963 Running Length: 1:50 MPAA Classification: PG (Violence, sexual innuendo) Theatrical Aspect Ratio: 1.75:1
Cast: Sean Connery, Daniela Bianchi, Pedro Armendariz, Lotte Lenya, Robert Shaw, Bernard Lee, Lois Maxwell Director: Terence Young Producers: Harry Saltzman and Albert R. Broccoli Screenplay: Richard Maibaum and Johnanna Harwood, based on the novel by Ian Fleming Cinematography: Ted Moore Music: John Barry U.S. Distributor: United Artists
FROM RUSSIA WITH LOVE, along with its successor, GOLDFINGER, represents Bond at his best. Although the series has run for more than thirty years with seventeen "official" entries, it has yet to better, or even equal, what it achieved in 1963-1964 with the release of these two films. By combining solid storylines, tightly-paced action sequences, memorable villains, and Sean Connery in top form, RUSSIA and GOLDFINGER mark the cinematic apex for Ian Fleming's 007.
The elements of FROM RUSSIA WITH LOVE move the movie closer to the recognizable "Bond formula" than was the case for its predecessor, DR. NO. Here, the action scenes are more numerous and generate added tension, the title sequence has a familiar flavor, John Barry's distinctive score replaces the workmanlike music of Monty Norman, Q makes his first appearance, and Connery tones up 007's sophistication while downplaying his cold-bloodedness.
Unlike the megalomaniacs in later Bond films, the villains in FROM RUSSIA WITH LOVE aren't after world domination (at least not immediately). In fact, they want something significantly less ambitious: a Russian decoding device. Two of SPECTRE's top operatives are on the mission: #3, former KGB agent Rosa Klebb (Lotte Lenya), and #5, Kronsteen (Vladek Sheybal), a chess master who has meticulously plotted every move and weighed all alternatives.
Kronsteen's manipulative plan involves using Bond and Russian cipher clerk Tatiana Romanova (Daniela Bianchi) as pawns. Once the British agent has obtained the decoding device from Tatiana, SPECTRE thug Red Grant (Robert Shaw) is to take it from him, leaving behind a corpse. The plot is suitably complicated (but not so convoluted that the viewer will get lost), and, even though 007 suspects a trap, the lure of a beautiful woman and a valuable espionage coup is too enticing to resist. So he travels to Istanbul, where Tatiana has arranged to meet him.
Connery, who felt his way through parts of DR. NO, has mastered his character by this outing. He acts the role with confidence and familiarity, easily establishing his reputation as the inimitable 007. He is surrounded by an interesting supporting cast that includes Miss Universe 1960, Daniela Bianchi (whose voice was dubbed over), and Lotte Lenya as an especially vicious adversary. Playing his part with the perfect combination of toughness and sly wit, Pedro Armendariz (in his final acting appearance) is delightful as Kerim Bay, Bond's Turkish ally.
FROM RUSSIA WITH LOVE is among the most tightly-plotted of all the Bond films, and, as a result, is one of the shortest. It moves briskly, blending intrigue, romance, and action into an immensely satisfying whole. RUSSIA exudes style, as typified by a fight in a gypsy camp where Bond offhandedly dispatches rogues to the strains of John Barry's "007 theme". This movie has several such memorable moments, including an inventively choreographed fight sequence with Bond and Grant going at it in the confined space of two train compartments. Shortly after that, there's a death-defying chase between Bond and a helicopter.
Standing at the pinnacle of the series, FROM RUSSIA WITH LOVE shows how good a Bond film can be when all the ingredients mesh. This movie isn't just a fun popcorn-munching action adventure flick; it's a good motion picture by any standards.
- James Berardinelli e-mail<EMAIL_ADDRESS><EMAIL_ADDRESS>web: http://www2.cybernex.net/~berardin
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


Giver Protocol
Save the World
Save for the Future
Save on Taxes
You need to enable JavaScript to run this app.


Amazon EMR InstanceGroupConfig AutoScalingPolicy
AutoScalingPolicy
is a property of the AWS::EMR::InstanceGroupConfig resource that specifies
the constraints and rules for an Auto Scaling group policy. For more information,
see
PutAutoScalingPolicy in the Amazon EMR API Reference.
Syntax
JSON
{ "Constraints" :
ScalingConstraints
, "Rules" : [ScalingRule
] }
YAML
Constraints:
ScalingConstraints
Rules: -ScalingRule
Properties
Constraints
-
The upper and lower Amazon EC2 instance limits for an automatic scaling policy. Automatic scaling activity doesn't cause an instance group to grow above or below these limits.
Required: Yes
Type: Amazon EMR InstanceGroupConfig ScalingConstraints
Update requires: No interruption
Rules
-
The scale-in and scale-out rules that compose the automatic scaling policy.
Required: Yes
Type: List of Amazon EMR InstanceGroupConfig ScalingRule
Update requires: No interruption
Example
The following example defines an AutoScalingPolicy
for an InstanceGroupConfig
resource.
JSON
"MyInstanceGroupConfig": { "Type": "AWS::EMR::InstanceGroupConfig", "Properties": { "InstanceCount": 1, "InstanceType": { "Ref": "InstanceType" }, "InstanceRole": "TASK", "Market": "ON_DEMAND", "Name": "cfnTask", "JobFlowId": { "Ref": "MyCluster" }, "AutoScalingPolicy": { "Constraints": { "MinCapacity": { "Ref": "MinCapacity" }, "MaxCapacity": { "Ref": "MaxCapacity" } }, "Rules": [ { "Name": "Scale-out", "Description": "Scale-out policy", "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": 1, "CoolDown": 300 } }, "Trigger": { "CloudWatchAlarmDefinition": { "Dimensions": [ { "Key": "JobFlowId", "Value": "${emr.clusterId}" } ], "EvaluationPeriods": 1, "Namespace": "AWS/ElasticMapReduce", "Period": 300, "ComparisonOperator": "LESS_THAN", "Statistic": "AVERAGE", "Threshold": 15, "Unit": "PERCENT", "MetricName": "YARNMemoryAvailablePercentage" } } }, { "Name": "Scale-in", "Description": "Scale-in policy", "Action": { "SimpleScalingPolicyConfiguration": { "AdjustmentType": "CHANGE_IN_CAPACITY", "ScalingAdjustment": -1, "CoolDown": 300 } }, "Trigger": { "CloudWatchAlarmDefinition": { "Dimensions": [ { "Key": "JobFlowId", "Value": "${emr.clusterId}" } ], "EvaluationPeriods": 1, "Namespace": "AWS/ElasticMapReduce", "Period": 300, "ComparisonOperator": "GREATER_THAN", "Statistic": "AVERAGE", "Threshold": 75, "Unit": "PERCENT", "MetricName": "YARNMemoryAvailablePercentage" } } } ] } } }
YAML
MyInstanceGroupConfig: Type: 'AWS::EMR::InstanceGroupConfig' Properties: InstanceCount: 1 InstanceType: !Ref InstanceType InstanceRole: TASK Market: ON_DEMAND Name: cfnTask JobFlowId: !Ref MyCluster AutoScalingPolicy: Constraints: MinCapacity: !Ref MinCapacity MaxCapacity: !Ref MaxCapacity Rules: - Name: Scale-out Description: Scale-out policy Action: SimpleScalingPolicyConfiguration: AdjustmentType: CHANGE_IN_CAPACITY ScalingAdjustment: 1 CoolDown: 300 Trigger: CloudWatchAlarmDefinition: Dimensions: - Key: JobFlowId Value: '${emr.clusterId}' EvaluationPeriods: 1 Namespace: AWS/ElasticMapReduce Period: 300 ComparisonOperator: LESS_THAN Statistic: AVERAGE Threshold: 15 Unit: PERCENT MetricName: YARNMemoryAvailablePercentage - Name: Scale-in Description: Scale-in policy Action: SimpleScalingPolicyConfiguration: AdjustmentType: CHANGE_IN_CAPACITY ScalingAdjustment: -1 CoolDown: 300 Trigger: CloudWatchAlarmDefinition: Dimensions: - Key: JobFlowId Value: '${emr.clusterId}' EvaluationPeriods: 1 Namespace: AWS/ElasticMapReduce Period: 300 ComparisonOperator: GREATER_THAN Statistic: AVERAGE Threshold: 75 Unit: PERCENT MetricName: YARNMemoryAvailablePercentage


Journal Contact Information
All submissions must be made through the Philosophy of Science
Editorial Manager website.
Email:
<EMAIL_ADDRESS>Mailing Address:
Philosophy of Science 3151 Social Science
Plaza A University of California Irvine, CA 92697-5100
Editors:
Jeff Barrett Editor-in-Chief Department of
Logic and Philosophy of Science University of California
Irvine Phone:<PHONE_NUMBER> Fax:<PHONE_NUMBER> Email:
<EMAIL_ADDRESS>Cailin O'Connor Managing Editor Department
of Logic and Philosophy of Science University of California
Irvine Phone:<PHONE_NUMBER> Fax:<PHONE_NUMBER> Email:
<EMAIL_ADDRESS>Samir Okasha Associate
Editor Department of Philosophy
University of Bristol Phone:
+44 0<PHONE_NUMBER> Email<EMAIL_ADDRESS>Chris Smeenk Associate Editor Department of
Philosophy University of Western Ontario Phone:
519.661.2111, ext. 85770 Email<EMAIL_ADDRESS>P. Kyle Stanford Associate Editor Department
of Logic and Philosophy of Science University of California
Irvine Phone:<PHONE_NUMBER> Email<EMAIL_ADDRESS>Andrea Woody Associate Editor Department of
Philosophy University of Washington Phone:
206.685.2663 Email<EMAIL_ADDRESS>Kevin J. S. Zollman Associate Editor Department
of Philosophy Carnegie Melon University Phone:
412.268.8493 Email<EMAIL_ADDRESS>|


| * | Constant | any constant |
| String | a string constant: "this is a string" |
| Character | a character constant: 'c', '\n' |
| Number | a number constant: 234, 0xff |
| Boolean | a boolean constant: TRUE, false |
| Float | a floating point constant: 2.3e10 |
| * | Identifier | any variable name |
| Function | function name (also: methods for classes) |
| * | Statement | any statement |
| Conditional | if, then, else, endif, switch, etc. |
| Repeat | for, do, while, etc. |
| Label | case, default, etc. |
| Operator | "sizeof", "+", "*", etc. |
| Keyword | any other keyword |
| Exception | try, catch, throw |
| * | PreProc | generic Preprocessor |
| Include | preprocessor #include |
| Define | preprocessor #define |
| Macro | same as Define |
| PreCondit | preprocessor #if, #else, #endif, etc. |
| * | Type | int, long, char, etc. |
| StorageClass | static, register, volatile, etc. |
| Structure | struct, union, enum, etc. |
| Typedef | A typedef |
| * | Special | any special symbol |
| SpecialChar | special character in a constant |
| Tag | you can use CTRL-] on this |
| Delimiter | character that needs attention |
| Debug | debugging statements |
| * | Underlined | text that stands out, HTML links |
| * | Ignore | left blank, hidden |
| * | Error | any erroneous construct |
| * | Todo | anything that needs extra attention; mostly the keywords TODO FIXME and XXX |


{% extends "base.html" %} {% block content %} {% if popup %}
You are about to take the {{ name }}. The test consists of {{ problem_count }} multiple choice question{{ problem_count|pluralize }} with 5 answers (A through E) for each. You will have {{ exam_length }} to complete the exam.
You should have available a pencil, paper and a calculator to work out problems. You should use no outside resources. A periodic table will be displayed below each question. To view a larger version of the periodic table, simply click the image. A new window will open, which you can keep open for the duration of your exam.
Once you click "Start Test" below, your timer will begin, and you will have {{ exam_length }} to complete the exam. You can submit the exam before time expires by clicking "Finish Test". If you do not finish in the time limit, your test will automatically be submitted for you. Please note that you have exactly {{ exam_length }} from the time you click the "Start Test" button below to complete the exam, or your exam will be automatically graded after {{ exam_length }}.
When you answer a question, your solutions are automatically saved, so in case of your browser crashing, you will not lose any of your work. If you close the browser window, or your browser crashes, simply reopen your browser and log back in. Your test will continue with your answers intact. Please note that you will not be compensated for time lost. You have exactly {{ exam_length }} regardless of closing your browser or it crashing.
Questions are shown on the left side of the screen. Your answer key is on the right hand side. You can navigate questions by either clicking "Previous Question" or "Next Question." You may also click the question number on the answer key to skip directly to a question. You may skip ahead or return to questions and change answers; only your last entry will be counted. The selected question is highlighted in red on your answer key, and you may only answer the currently selected question.
You may also use just the keyboard answer and navigate the exam. Pressing the left or right arrow key will show the previous or next question. To answer a question, you can type the letter you wish to choose. For example, if you think the answer to Problem 1 is C, then simply press the C key on your keyboard.
While you are free to use any browser, we strongly recommend the latest version of Safari, Chrome, or Firefox. Older versions of Firefox should work fine. Internet Explorer 6 and 7 work satisfactorily. Older versions of Internet Explorer will not work, and you should also avoid Netscape Navigator earlier than version 8. If you are taking the exam on an iPad, you can scroll the answer sheet using 2 fingers.
If you have any questions, please send an email to {{ contact_email }}{% if popup %}.{% else %} and do not start your test. Close this window and wait for a response.{% endif %}
{% if popup %}


HelsinkiOS is a community of iOS and Mac developers based in and around Helsinki. We hold regular meetings hosted by companies around the area. The meetings are an opportunity to meet fellow developers, listen to presentations, and to relax with your peers.


This is an Angularjs SPA with at least 10 partials ( work in progress ). The back-end is Nodejs/express and the data store is mongoDB
It started as a basic blog class-project from a mongoDB University course I added the following features:
All the features of quickbooks online; but stable.
This is a transitional site replacing a dated and no longer accurate site.
It's basically meant for anyone looking at the old URL; so they don't end up confused by either the old site or a non-functional landing or 404 page.
It has some links and a contact form that takes the usual info and stores it in a database, then sends an email so I know if someone needs to contact us.


If we lose, he played s*** – Guardiola happy to stick with Fernandinho in defence
by BeSoccerFernandinho has been exceptional in midfield in recent seasons, but it seems his immediate future remains in Manchester City's defence.
Pep Guardiola is eager for Fernandinho to remain in Manchester City's defence, even if the decision draws criticism.
Fernandinho has been used primarily as an emergency centre-back this season, with Aymeric Laporte out injured while John Stones and Nicolas Otamendi have struggled with fitness and consistency issues.
The Brazil international has often looked City's most solid option at the back in Laporte's absence, despite the fact he is primarily a midfielder.
And Guardiola has no plans to alter Fernandinho's role if his other midfield options stay fit.
"If Rodri and Gundogan are fit, I don't think so. I like Fernandinho there, in that position [centre-back]. I like it," Guardiola told reporters when asked if he would move the 34-year-old back into the centre of the park.
"I know he can play there, but we have Gundogan, I trust him a lot, and Rodri.
"Since I arrived here we were looking for a holding midfielder in the first season. Fernandinho was good [against Chelsea] because we won.
Featured links
- The latest football transfers news and rumours
- Luis Enrique returns to Spain national team
- Mourinho replaces Pochettino at Tottenham
- Wales, golf, Madrid... in that order
"If we lose, he played s***, I know that, but we won. So at Anfield he was the best central defender we have there, but [apparently] it was a disaster. I know how it works, this job.
"He was incredible at Anfield, he was incredible [against Chelsea]. He is so fast, in our build-up he's perfect.
"It is important to be aggressive as the midfielder but to be quick with the ball and to find solutions in smaller spaces. Gundogan has that quality. That's why we look [at him] in other situations."
While City's injury problems have come mainly in defence so far this season, Guardiola harbours concerns over Sergio Aguero, who was forced off late on in the 2-1 win over Chelsea on Saturday.
However, Guardiola has no doubts Gabriel Jesus – who has scored five goals in all competitions this season – can fill the void should Aguero miss an extended period of time.
"Gabriel has made one of the best starts this season. If Sergio cannot play in the next games, we will see, Gabriel will be of course our option," Guardiola said.
"[Raheem] Sterling can play also in that position but Gabriel is going to play there of course."