/**
A **GameObject** is an entity within a xeoEngine {{#crossLink "Scene"}}Scene{{/crossLink}}.
## Overview
See the {{#crossLink "Scene"}}Scene{{/crossLink}} class documentation for more information on GameObjects.

## Boundaries
#### World-space
A GameObject provides its World-space boundary as a {{#crossLink "Boundary3D"}}{{/crossLink}} that encloses
the {{#crossLink "Geometry"}}{{/crossLink}} {{#crossLink "Geometry/positions:property"}}{{/crossLink}} after
transformation by the GameObject's {{#crossLink "GameObject/transform:property"}}Modelling transform{{/crossLink}}.

```` javascript
var scene = new XEO.Scene();
var geometry = new XEO.Geometry(myScene, {
//...
});
var translate = new XEO.Translate(scene, {
xyz: [-5, 0, 0] // Translate along -X axis
});
var object = new XEO.GameObject(myScene, {
geometry: myGeometry,
transform: translate
});
// Get the World-space Boundary3D
var world = object.world;
// Get World-space object-aligned bounding box (OBB),
// which is an array of eight vertices that describes
// the box that is aligned with the GameObjectbject
var obb = world.obb;
// Get the World-space axis-aligned bounding box (ABB),
// which contains the extents of the boundary on each axis
var aabb = world.aabb;
// get the World-space center of the GameObject:
var center = world.center;
````
#### View-space
A GameObject also provides its View-space boundary as a {{#crossLink "Boundary3D"}}{{/crossLink}} that encloses
the {{#crossLink "Geometry/positions:property"}}Geometry positions{{/crossLink}} after
their transformation by the {{#crossLink "Camera/view:property"}}View{{/crossLink}} and
{{#crossLink "GameObject/transform:property"}}Modelling{{/crossLink}} transforms.

```` javascript
// Get the View-space Boundary3D
var view = object.view();
// Get View-space object-aligned bounding box (OBB),
// which is an array of eight vertices that describes
// the box that is aligned with the GameObjectbject
var obb = view.obb;
// Get the View-space axis-aligned bounding box (ABB),
// which contains the extents of the boundary on each axis
var aabb = view.aabb;
// get the View-space center of the GameObject:
var center = view.center;
````
@class GameObject
@module XEO
@submodule objects
@constructor
@param [scene] {Scene} Parent {{#crossLink "Scene"}}Scene{{/crossLink}} - creates this GameObject within xeoEngine's default {{#crossLink "XEO/scene:property"}}scene{{/crossLink}} by default.
@param [cfg] {*} Configs
@param [cfg.id] {String} Optional ID, unique among all components in the parent {{#crossLink "Scene"}}Scene{{/crossLink}}, generated automatically when omitted.
@param [cfg.meta] {String:Object} Optional map of user-defined metadata to attach to this GameObject.
@param [cfg.camera] {String|Camera} ID or instance of a {{#crossLink "Camera"}}Camera{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/camera:property"}}camera{{/crossLink}}.
@param [cfg.clips] {String|Clips} ID or instance of a {{#crossLink "Clips"}}Clips{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/clips:property"}}clips{{/crossLink}}.
@param [cfg.colorTarget] {String|ColorTarget} ID or instance of a {{#crossLink "ColorTarget"}}ColorTarget{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/colorTarget:property"}}colorTarget{{/crossLink}}.
@param [cfg.depthTarget] {String|DepthTarget} ID or instance of a {{#crossLink "DepthTarget"}}DepthTarget{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/depthTarget:property"}}depthTarget{{/crossLink}}.
@param [cfg.depthBuf] {String|DepthBuf} ID or instance of a {{#crossLink "DepthBuf"}}DepthBuf{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, depth {{#crossLink "Scene/depthBuf:property"}}depthBuf{{/crossLink}}.
@param [cfg.visibility] {String|Visibility} ID or instance of a {{#crossLink "Visibility"}}Visibility{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/visibility:property"}}visibility{{/crossLink}}.
@param [cfg.modes] {String|Modes} ID or instance of a {{#crossLink "Modes"}}Modes{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/modes:property"}}modes{{/crossLink}}.
@param [cfg.geometry] {String|Geometry} ID or instance of a {{#crossLink "Geometry"}}Geometry{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/geometry:property"}}geometry{{/crossLink}}, which is a 2x2x2 box.
@param [cfg.layer] {String|Layer} ID or instance of a {{#crossLink "Layer"}}Layer{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/layer:property"}}layer{{/crossLink}}.
@param [cfg.lights] {String|Lights} ID or instance of a {{#crossLink "Lights"}}Lights{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/lights:property"}}lights{{/crossLink}}.
@param [cfg.material] {String|Material} ID or instance of a {{#crossLink "Material"}}Material{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the
parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance, {{#crossLink "Scene/material:property"}}material{{/crossLink}}.
@param [cfg.morphTargets] {String|MorphTargets} ID or instance of a {{#crossLink "MorphTargets"}}MorphTargets{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s
default instance, {{#crossLink "Scene/morphTargets:property"}}morphTargets{{/crossLink}}.
@param [cfg.reflect] {String|Reflect} ID or instance of a {{#crossLink "CubeMap"}}CubeMap{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance,
{{#crossLink "Scene/reflect:property"}}reflection{{/crossLink}}.
@param [cfg.shader] {String|Shader} ID or instance of a {{#crossLink "Shader"}}Shader{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance,
{{#crossLink "Scene/shader:property"}}shader{{/crossLink}}.
@param [cfg.shaderParams] {String|ShaderParams} ID or instance of a {{#crossLink "ShaderParams"}}ShaderParams{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance,
{{#crossLink "Scene/shaderParams:property"}}shaderParams{{/crossLink}}.
@param [cfg.stage] {String|Stage} ID or instance of of a {{#crossLink "Stage"}}Stage{{/crossLink}} to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance,
{{#crossLink "Scene/stage:property"}}stage{{/crossLink}}.
@param [cfg.transform] {String|Transform} ID or instance of a modelling transform to attach to this GameObject. Must be within the same {{#crossLink "Scene"}}Scene{{/crossLink}} as this GameObject. Defaults to the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s default instance,
{{#crossLink "Scene/transform:property"}}transform{{/crossLink}} (which is an identity matrix which performs no transformation).
@extends Component
*/
/**
* Fired when this GameObject is *picked* via a call to the {{#crossLink "Canvas/pick:method"}}{{/crossLink}} method
* on the parent {{#crossLink "Scene"}}Scene{{/crossLink}}'s {{#crossLink "Canvas"}}Canvas {{/crossLink}}.
* @event picked
* @param {String} objectId The ID of this GameObject.
* @param {Number} canvasX The X-axis Canvas coordinate that was picked.
* @param {Number} canvasY The Y-axis Canvas coordinate that was picked.
*/
(function () {
"use strict";
XEO.Extents = XEO.Component.extend({
type: "XEO.Extents",
_init: function (cfg) {
// Cached boundary for each coordinate space
this._model = null;
this._world = null;
this._view = null;
this._canvas = null;
this._modelDirty = true;
this._worldDirty = true;
this._viewDirty = true;
this._canvasDirty = true;
this._getModelOBB = cfg.getModelOBB;
this._getModelMatrix = cfg.getModelMatrix;
this._getViewMatrix = cfg.getViewMatrix;
this._getCanvasMatrix = cfg.getCanvasMatrix;
},
_props: {
/**
* Model-space 3D boundary.
*
* If you call {{#crossLink "Component/destroy:method"}}{{/crossLink}} on this boundary, then
* this property will be assigned to a fresh {{#crossLink "Boundary3D"}}{{/crossLink}} instance next
* time you reference it.
*
* @property model
* @type Boundary3D
* @final
*/
model: {
get: function () {
if (!this._model) {
var self = this;
this._model = new XEO.Boundary3D(this.scene, {
getDirty: function () {
return self._modelDirty;
},
getOBB: this._getModelOBB
});
this._model.on("destroyed",
function () {
self._model = null;
});
this._setModelDirty();
}
return this._model;
}
},
/**
* World-space 3D boundary.
*
* If you call {{#crossLink "Component/destroy:method"}}{{/crossLink}} on this boundary, then
* this property will be assigned to a fresh {{#crossLink "Boundary3D"}}{{/crossLink}} instance next
* time you reference it.
*
* @property world
* @type Boundary3D
* @final
*/
world: {
get: function () {
if (!this._world) {
var self = this;
this._world = new XEO.Boundary3D(this.scene, {
getDirty: function () {
return self._worldDirty;
},
getOBB: this._getModelOBB,
getMatrix: this._getModelMatrix
});
this._world.on("destroyed",
function () {
self._world = null;
});
this._setWorldDirty();
}
return this._world;
}
},
/**
* View-space 3D boundary.
*
* If you call {{#crossLink "Component/destroy:method"}}{{/crossLink}} on this boundary, then
* this property will be assigned to a fresh {{#crossLink "Boundary3D"}}{{/crossLink}} instance
* next time you reference it.
*
* @property view
* @type Boundary3D
* @final
*/
view: {
get: function () {
if (!this._view) {
var self = this;
this._view = new XEO.Boundary3D(this.scene, {
getDirty: function () {
return self._viewDirty;
},
getOBB: function () {
return self.world.obb;
},
getMatrix: this._getViewMatrix
});
this._view.on("destroyed",
function () {
self._view = null;
});
this._setViewDirty();
}
return this._view;
}
},
/**
* Canvas-space 2D boundary.
*
* If you call {{#crossLink "Component/destroy:method"}}{{/crossLink}} on this boundary, then
* this property will be assigned to a fresh {{#crossLink "Boundary2D"}}{{/crossLink}} instance
* next time you reference it.
*
* @property canvas
* @type Boundary2D
* @final
*/
canvas: {
get: function () {
if (!this._canvas) {
var self = this;
this._canvas = new XEO.Boundary2D(this.scene, {
getDirty: function () {
return self._canvasDirty;
},
getOBB: function () {
return self.view.obb;
},
getMatrix: this._getCanvasMatrix
});
this._canvas.on("destroyed",
function () {
self._canvas = null;
});
this._setCanvasDirty();
}
return this._canvas;
}
}
},
_setModelDirty: function () {
this._modelDirty = true;
if (this._model) {
this._model.fire("updated", true);
}
this._setWorldDirty();
},
_setWorldDirty: function () {
this._worldDirty = true;
if (this._world) {
this._world.fire("updated", true);
}
this._setViewDirty();
},
_setViewDirty: function () {
this._viewDirty = true;
if (this._view) {
this._view.fire("updated", true);
}
this._setCanvasDirty();
},
_setCanvasDirty: function () {
this._canvasDirty = true;
if (this._canvas) {
this._canvas.fire("updated", true);
}
this.fire("updated", true);
},
_destroy: function () {
if (this._world) {
this._world.destroy();
}
if (this._view) {
this._view.destroy();
}
if (this._canvas) {
this._canvas.destroy();
}
}
});
})();


typedef void (*sighandler_t)(int);
sighandler_t sigset(int sig, sighandler_t disp);
int sighold(int sig);
int sigrelse(int sig);
int sigignore(int sig);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
sigset(),
sighold(),
sigrelse(),
sigignore():
The sigset() function modifies the disposition of the signal sig. The disp argument can be the address of a signal handler function, or one of the following constants:
If disp specifies the address of a signal handler, then sig is added to the process's signal mask during execution of the handler.
If disp was specified as a value other than SIG_HOLD, then sig is removed from the process's signal mask.
The dispositions for SIGKILL and SIGSTOP cannot be changed.
The sighold() function adds sig to the calling process's signal mask.
The sigrelse() function removes sig from the calling process's signal mask.
The sigignore() function sets the disposition of sig to SIG_IGN.
The sighold(), sigrelse(), and sigignore() functions return 0 on success; on error, these functions return -1 and set errno to indicate the error.
For sighold() and sigrelse() see the ERRORS under sigprocmask(2).
For sigignore(), see the errors under sigaction(2).
The sighandler_t type is a GNU extension; it is used on this page only to make the sigset() prototype more easily readable.
The sigset() function provides reliable signal handling semantics (as when calling sigaction(2) with sa_mask equal to 0).
On System V, the signal() function provides unreliable semantics (as when calling sigaction(2) with sa_mask equal to SA_RESETHAND | SA_NODEFER). On BSD, signal() provides reliable semantics. POSIX.1-2001 leaves these aspects of signal() unspecified. See signal(2) for further details.
In order to wait for a signal, BSD and System V both provided a function named sigpause(3), but this function has a different argument on the two systems. See sigpause(3) for details.
In versions of glibc before 2.5, sigset() does not correctly return the previous disposition of the signal in two cases. First, if disp is specified as SIG_HOLD, then a successful sigset() always returns SIG_HOLD. Instead, it should return the previous disposition of the signal (unless the signal was blocked, in which case SIG_HOLD should be returned). Second, if the signal is currently blocked, then the return value of a successful sigset() should be SIG_HOLD. Instead, the previous disposition of the signal is returned. These problems have been fixed since glibc 2.5.


An Introduction to Boolean Logic
A strong and correct reasoning must, at the very least, be rooted in a rock solid logic. This article tries to explain the basics of the boolean logic, one of the most commonly used logic in mathematics.
It is the first article in a series of four:
The final goal of this series is to derive the so-called rules of inference that are rules to apply for correct reasoning.
Some Definitions
Proposition
- Proposition
- Let’s define a proposition \( P \) as a sentence that can either be true or false, and nothing else (law of excluded middle).
Example: \( P \) = “It is snowing”
Remark: Some might argue that, in real life, a perfect binarity most often doesn’t exist. It is more likely that a property can take a value in a gradient of possible values. I totally agree with this point of view. But I think it is still possible to define propositions that are either true or false but nothing else, by considering ranges of values.
For example, assume I define \( P \) as “X has brown hair”. X might have dark brow hair, or aubrun hair… Is \( P \) true or false then? One possible solution is to better define the proposition \( P \) as “X has hair that are brown or darker”.
Compound Proposition
- Compound Proposition
- I now define a compound proposition as a proposition that is defined by relationships between other propositions. I will call the other propositions input propositions. The relationships are defined using operators. We will see a few of them below.
- Truthtable
- Let’s also define the truthtable of a compound proposition as a table showing all the possible values that the input propositions can take and the value that the compound proposition take given the values of the input propositions.
For conciseness, true will be written
T
and false will be writtenF
inside truthtables.
To create a compound proposition, one must link or combine one or more propositions together. To combine propositions one uses so-called operators, they simply represent the kind of relationship there is between two propositions.
I will now define a few ways to combine propositions using unary and binary operators (operators that are applied on a single proposition or two propositions respectively).
Operators
Negation
Let’s define a unary operation on a proposition called the negation of a proposition in the following way, the negation of a proposition that is true will yield false, the negation of a proposition that is false will yield true. The negation of a proposition \( P \) is represented in the following way: \( \neg P \). A second way to represent the negation of \( P \) is \( \bar P \). I will use one or the other depending on which is more comfortable to read in a given context.
Here is the truthtable of the negation operation:
| \( P \) | \( \bar{P} \) |
|---|---|
| T | F |
| F | T |
I will now try to show that the negation operation corresponds to the negation as we understand it in the english language.
Let me define \( P \) as “It is snowing”. This can either be true or false. Let me also remark that \( P \) yields true when it is snowing and false otherwise.
I pretend that the negation of a proposition is equivalent to the negation of the sentence that the proposition represent. I am not sure if it is even possible to make a rigorous proof of this. I can only hope that the following example convinces you, that you find it obvious enough or that someone propose us a proper proof of it. This remark is valid for all following operators where I try to show the correspondences to the human language.
We now consider \( \bar{P} \). By the definition of the negation operator, \( \bar{P} \) will yield false when it snows and true when it is not snowing. This is equivalent to the proposition “It is not snowing” because it yield true when it is not snowing and false when it is snowing.
Axiom: For a proposition defined as a sentence, the negation operation on the proposition is the same as the negation as we understand it in the English language of the sentence.
AND
Let me represent the AND operator with the following symbol: \( \wedge \). The AND-composition of two propositions \( A \) and \( B \) is then represented the following way: \( A \wedge B \)
Furthermore, I define the truthtable of the AND-operator as follow:
| \( A \) | \( B \) | \( A\wedge B \) |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
In other words, \( A \wedge B \) is true if and only if \( A \) is true and \( B \) is true simultaneously.
I pretend that the AND operator on two propositions \( A \) and \( B \) is equivalent to saying “A and B” as we understand it in the English language.
Let’s consider the following propositions:
\( A \) = “I have brown eyes”
\( B \) = “I possess a car”
\( C \) = \( A \wedge B \)
We see that C, by the definition of the AND operator is only true if both \( A \) and \( B \) are true simultaneously.
Axiom: The AND operator applied on two propositions \( A \), \( B \) is equivalent to saying “\( A \) and \( B \)” as we understand it in English.
OR
Let me define the OR operator as being false only if both \( A \) and \( B \) are false simultaneously. I also define the following notation to represent it: \( A \vee B \).
Here is the truthtable of the OR operator:
| \( A \) | \( B \) | \( A \vee B \) |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
Remark: the OR operator does not correspond to the English “or”. Let’s remark that when someone says “I can have an apple or a banana”, what is meant is that the person can have either an apple or a banana, but not both. The OR operator would mean that you can have one or both.
We pretend that the OR operator is equivalent to saying “A or B or both”.
Precedence Rules
For complex expressions involving many operators, we need to know in which order the operators are to be applied.
We arbitrarily define the following order:
- Negation
- AND
- OR
We will use parenthesis to modify the order in which to apply the operators, in the following way: the operators inside a parenthesis should be applied before the operators outside of the parenthesis.
Conclusion
These only three operators are enough for all the boolean logic. They allow us to represent every possible operation on any number of input variables. However, for the sake of brevity and simplicity, it is often preferable to define some more operators; two, in fact, that also have meaning in the spoken language. This will be the topic of the next article: Complex Boolean Operators
Subscribe to ASARPhiB
Get the latest posts delivered right to your inbox


In this ativity you will be using a multi touch interface.The red coloured panel is the place where multi touch actions need to be provided.It looks like this ...
There are total of six options that you can choose from.They are as follows - Pen, Pencil, Brush, Thin, Medium and Thick.The first three are different types of tracing devices whereas the latter three are different types of stroke widths.
To choose any option using the multi touch panel you need to make two touches on the panel
To choose an option from the types of tracing devices ie Pen , Pencil or Brush, the first touch needs to be on the left side of the screen.
Within the different types of tracing devices to choose PEN the second touch needs to be to the top of the first touch like this ...
To choose PENCIL the second touch needs to be to the right of the first touch like this ...
To choose BRUSH the second touch needs to be to the bottom of the first touch like this ...
The first touch can be anywhere on the left side of the panel it need not always be in the middle .For example both the following are actions for PEN
Also the second touch is scale independent so you can touch anywhere on the screen .So while this is pencil
This is also pencil
To choose an option from the types of stroke widths ie Thin , Medium or Thick , the first touch needs to be on the right side of the screen.
Within the different stroke widths to choose THIN the second touch needs to be to the top of the first touch like this ...
To choose MEDIUM the second touch needs to be to the RIGHT of the first touch like this ...
To choose THICK the second touch needs to be to the bottom of the first touch like this ...
Make sure the first finger is in place while performing the second touch.Go ahead and try choosing a couple of options.Once you feel you are comfortable with the interface proceed to training.


Books of hours are often characterized as the “bestseller” of the Middle Ages. As a genre, they certainly enjoyed enormous, even unprecedented popularity, becoming the prayer book of the laity, monarchs and merchants, lords and ladies, alike. Its popularity, however, was restricted to certain parts of Europe: primarily France, England and the Netherlands. Elsewhere in Europe, for example, in German-speaking lands, Central Europe and even Italy and Spain, where other types of prayer books retained their dominance, it remained relatively rare.
Not all books of hours were illustrated, but they are best known today for their decoration, which can range from the routine in examples mass-produced for the commercial market to the spectacular, as in such famous examples as the Très Riches Heures of Jean, duc de Berry, one of the most famous manuscripts of the entire Middle Ages, or, to take an example from Harvard reproduced in its entirety on this website, the De Buz Hours). The sheer number of books of hours that survive make them an indispensable source not only for the study of late medieval piety and prayer, but also for the history of late medieval art.
Books of hours provide a fairly continuous, dense record of well-preserved medieval painting in numerous locales and centers where most monumental painting, whether murals, stained glass, or panel painting, has been lost. They are also the site of tremendous iconographic inventiveness, with most manuscripts displaying at least some idiosyncratic features that set them apart and open them to interpretation and analysis.
This website is designed to permit you to open some (by no means all) of the books of hours in the Houghton Library’s rich collection of such manuscripts and pore through their pages without travelling to the reading room.


Rubeus namespace
The Rubeus Engine namespace.
Contents
- Reference
Namespaces
- namespace AudioComponents
- The Symphony Audio Engine.
- namespace Awerere
- The Awerere Physics Engine namespace.
- namespace GraphicComponents
- The Graphic Components of Rubeus Engine namespace.
- namespace UtilityComponents
- The Utility Components of Rubeus Engine namespace.
Classes
- struct AudioModifier
- Custom POD structure to be sent with messages as audio commands.
- struct Message
- Declares the message objects that systems use to communicate.
- class REngine
- A class the contains all components that make up Rubeus.
- class RGameObject
- A game object. Main class responsible for player interactions.
- class RInputManager
- The Input manager. Manages key strokes, mouse buttons, and cursor/scroll inputs.
- class RLevel
- A single container from all access to a level's contents.
- class RMailingList
- A class that handles all the message commands.
- class RMasterComponent
- A master component. Serves as parent class for all components.
- class RMessageSystem
- A message system class that handles message posting and adding.
- class RWorld
- The container for all gameobjects. Synonymous to Scene graph.
Enums
- enum class EMouseButtons { __MOUSE_BUTTON_1 = 0, __MOUSE_BUTTON_2 = 1, __MOUSE_BUTTON_3 = 2, __MOUSE_BUTTON_4 = 3, __MOUSE_BUTTON_5 = 4, __MOUSE_BUTTON_6 = 5, __MOUSE_BUTTON_7 = 6, __MOUSE_BUTTON_8 = 7, __MOUSE_BUTTON_LAST = __MOUSE_BUTTON_8, __MOUSE_BUTTON_LEFT = __MOUSE_BUTTON_1, __MOUSE_BUTTON_RIGHT = __MOUSE_BUTTON_2, __MOUSE_BUTTON_MIDDLE = __MOUSE_BUTTON_3 }
- Mouse buttons supported.
- enum class EKeyboardKeys { __UNKNOWN = -1, __SPACE = 32, __APOSTROPHE = 39, __COMMA = 44, __MINUS = 45, __PERIOD = 46, __SLASH = 47, __0 = 48, __1 = 49, __2 = 50, __3 = 51, __4 = 52, __5 = 53, __6 = 54, __7 = 55, __8 = 56, __9 = 57, __SEMICOLON = 59, __EQUAL = 61, __A = 65, __B = 66, __C = 67, __D = 68, __E = 69, __F = 70, __G = 71, __H = 72, __I = 73, __J = 74, __K = 75, __L = 76, __M = 77, __N = 78, __O = 79, __P = 80, __Q = 81, __R = 82, __S = 83, __T = 84, __U = 85, __V = 86, __W = 87, __X = 88, __Y = 89, __Z = 90, __LEFT_BRACKET = 91, __BACKSLASH = 92, __RIGHT_BRACKET = 93, __GRAVE_ACCENT = 96, __WORLD_1 = 161, __WORLD_2 = 162, __ESCAPE = 256, __ENTER = 257, __TAB = 258, __BACKSPACE = 259, __INSERT = 260, __DELETE = 261, __RIGHT = 262, __LEFT = 263, __DOWN = 264, __UP = 265, __PAGE_UP = 266, __PAGE_DOWN = 267, __HOME = 268, __END = 269, __CAPS_LOCK = 280, __SCROLL_LOCK = 281, __NUM_LOCK = 282, __PRINT_SCREEN = 283, __PAUSE = 284, __F1 = 290, __F2 = 291, __F3 = 292, __F4 = 293, __F5 = 294, __F6 = 295, __F7 = 296, __F8 = 297, __F9 = 298, __F10 = 299, __F11 = 300, __F12 = 301, __F13 = 302, __F14 = 303, __F15 = 304, __F16 = 305, __F17 = 306, __F18 = 307, __F19 = 308, __F20 = 309, __F21 = 310, __F22 = 311, __F23 = 312, __F24 = 313, __F25 = 314, __KP_0 = 320, __KP_1 = 321, __KP_2 = 322, __KP_3 = 323, __KP_4 = 324, __KP_5 = 325, __KP_6 = 326, __KP_7 = 327, __KP_8 = 328, __KP_9 = 329, __KP_DECIMAL = 330, __KP_DIVIDE = 331, __KP_MULTIPLY = 332, __KP_SUBTRACT = 333, __KP_ADD = 334, __KP_ENTER = 335, __KP_EQUAL = 336, __LEFT_SHIFT = 340, __LEFT_CONTROL = 341, __LEFT_ALT = 342, __LEFT_SUPER = 343, __RIGHT_SHIFT = 344, __RIGHT_CONTROL = 345, __RIGHT_ALT = 346, __RIGHT_SUPER = 347, __MENU = 348, __DEACTIVATED = 0, __ACTIVATED = 1 }
- Keyboard keys supported.
- enum EAudioEffect { fade_out, fade_in }
- Defines audio commands allowed to send to the audio manager.
Functions
- void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods)
- Callback function which sets the flag corresponding to a mouse button.
- void scrollCallback(GLFWwindow* window, double xoffset, double yoffset)
- Callback function which sets mouse scroll value.
- void cursorPositionCallback(GLFWwindow* window, double xpos, double ypos)
- Callback function which sets mouse position value.
- void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods)
- Callback function which sets the flag corresponding to a key.
Function documentation
void Rubeus:: mouseButtonCallback(GLFWwindow* window,
int button,
int action,
int mods)
Callback function which sets the flag corresponding to a mouse button.
| Parameters | |
|---|---|
| window | GLFW specified window object. |
| button | GLFW specified mouse button pressed or released. |
| action | GLFW specified key action.(Release, Press or Repeat) |
| mods | Modifier key pressed along with. |
void Rubeus:: scrollCallback(GLFWwindow* window,
double xoffset,
double yoffset)
Callback function which sets mouse scroll value.
| Parameters | |
|---|---|
| window | GLFW specified window object. |
| xoffset | X value of scroll |
| yoffset | Y value of scroll |
void Rubeus:: cursorPositionCallback(GLFWwindow* window,
double xpos,
double ypos)
Callback function which sets mouse position value.
| Parameters | |
|---|---|
| window | GLFW specified window object. |
| xpos | X value of position |
| ypos | Y value of position |
void Rubeus:: keyCallback(GLFWwindow* window,
int key,
int scancode,
int action,
int mods)
Callback function which sets the flag corresponding to a key.
| Parameters | |
|---|---|
| window | GLFW specified window object. |
| key | GLFW specified key which was pressed or released. |
| scancode | |
| action | GLFW specified key action.(Release, Press or Repeat) |
| mods | Modifier key pressed along with. |


Section 2.21 Web Braille / BARD
Skills Addressed in this Lesson:
Open the Web Braille web site.
Log into Web Braille.
Locate a book or magazine.
Save a book or magazine.
Subsection 2.21.1 Tasks
Enter the Web Braille web site.
You will need to log in.
Use the thumb-keys to locate the name and password edit boxes. Write in your name and password and press enter to log in.
On the Web Braille page, space or backspace to explore the links.
For this exercise, let's download a magazine. Locate the Braille magazines link and press enter.
Space and backspace through the links to locate a magazine that you are interested in. Press enter.
Now move to the link of the magazine issue that you would like to download. Press enter.
You will then be at the accept page. You will need to say "yes" to agree to the Web Braille conditions. Press space with dots4 6 to go to the "I Accept" button. You need the one that is best for Note Taker users. Press enter.
You will then be on a page that you need to save. Press space with s to save.
Space to the folder that you want to save the document in. Press enter to select the given folder.
Name the magazine appropriately and press enter.
Use enter with b to go back by web page. Download another magazine if you wish.
If you want to download book volumes, use the same process, but enter on the volume number links to save them. After entering on the volume link you want, you will be taken to the accept page. Press space with 4 6 to move to the "best for note taker" option and press enter. Using the available Braille Book Review on the Web Braille site is a good place to start. Open the URL format version of the Braille Book Review. Then you may choose a category of books and will be able to locate books from that point.
When pressing enter on a book volume, you will be taken to the next page. Press space with s to save the book volume.
Save the book in a folder where you can find and open it later. Name the book volume so that you can also find it when you want to read and open it through the book reader on the BrailleNote.
From Main Menu, press b for book reader. Select the folder and book volume you want. Press enter to open the book.
You should be able to read the book as usual from here.
Subsection 2.21.2 Quiz
Write the letter of the best answer choice.
-
To check the time, what should you press?
space with t
backspace with t
enter with t
t
-
How can you save a book or magazine in order to read it later?
enter with s
space with s
backspace with s
s
-
Which of the following items can you get on Web Braille?
books
magazines
just "a$"$
both "a$"$ and "b$"$
-
What will o with space, then p do?
takes you to one-hand mode
turns Braille on and off
turns speech on or off
checks the power status
-
How can you toggle speech on and off?
previous thumb-key with space
next thumb-key with space
backspace and enter
space with backspace
-
How can you get to the accept button on the accept page in Web Braille?
l for link
press space with dots4 6
press l with space
none of the above
-
To get to the web browser, what letter should you press?
w
b
i
p
-
Where should you go to read a Web Braille book?
keyword
keyplan
bookreader
keylearn mode
-
Which of the following are sites you can get books from?
Web Braille
NPR
Bookshshare
both a and c
-
How can you move to the next input control on a web page?
space
backspace
space with 1 3
backspace with 1 2 3


Hi, I'm Dom.
I'm a DevOps Engineer and aspiring cloud architect from Somerset, currently working remotely for
The Access Group.
Things I do professionally:
- Write Terraform modules and implementation of said modules.
- The infrastructure for this simple website is created and managed by Terraform (module, implementation).
- Use Git.
- Automate (almost) everything with Azure DevOps multi-stage (YAML) pipelines.
- Use Bash and Powershell (core, I live in the real world) to automate "things" in Azure DevOps pipelines.
- Use Packer to generate VM images.
- Implement IaaS, PaaS, and SaaS using PaC and IaC. Thats a lot of acronyms...
- Get paid 37.5k per annum.
Things I have previously done professionally, but do not currently do:
- Used GitHub, but like who hasn't at this point.
- Used Ansible.
- Implemented and used Kubernetes (AKS).
- FaaS with AWS Lambda.
- Written small system integration programs with Node.js and Python.
- Written comprehensive unit tests for those same programs.
Things I have done, but not professionally:
- Typescript
- GitHub Actions
- This simple website is created and managed using GitHub Actions, see the code.
- 2D game development in the Godot game engine.
My DevOps ideology:
This is not a description of what DevOps is, for that I quite like
Microsoft's definition,
as I find that longer definitions try to define too much and get bogged down.
This is simply a list of beliefs that I hold.
- GitOps is the future
- The trend of replacing Dev in DevOps with other words, or amalgamation to another word (DevSecOps) is a bit silly.
- Rules are made to be broken by those who made them.
- Everything as Code should be the default.
- Virtual Machines in the cloud are (usually) a waste of money and potential. Seriously, PaaS and SaaS services exist, use them!
- Kubernetes is overused and overhyped. The opposite is true about containers in general.
- The best tool is:
- Probably not the one you are currently using.
- Probably not the industry standard.
- Probably not worth rearchitecting your process/product for anyway.
- Perfect is the enemy of good (this one is stolen verbatim from James Reed).
- Code readability is often actually more important than code cleanliness.
If you are a recruiter, please contact me on LinkedIn
after reading my profile.


| Token | Syntax | Details | Examples |
|---|---|---|---|
| Constant | -?[0-9]+\.?[0-9]* | Real valued numbers only | 36, -4.5 |
| Variable | :[a-zA-Z_]+ | Any worded preceded by a colon | :length, :side |
| Command | [a-zA-Z_]+(\?)? | Any word, given they are not a built-in command | spin, diag |
| List | [ ] | Any succession of zero or more commands or variables, always separated by spaces | [ 36, 56, 24, 109] |
| Comment | ^#.* | Lines that start with # or are empty | #this is a comment |
| Name | Details |
|---|---|
| forward pixels, fd pixels | Moves the turtle in the current direction of distance pixels, returns pixels |
| back pixels, bk pixels | Moves the turtle in the reverse of the current direction of distance pixels, returns pixels |
| left degrees, lt degrees | Turns the turtle counter-clockwise by degrees, returns degrees |
| right degrees, right degrees | Turns the turtle clockwise by degrees, returns degrees |
| setheading degrees, seth degrees | Turns the turtle to degrees, returns degrees |
| towards x y | Turns the turtle so that it faces (x, y), where (0, 0) is the center of the screen, returns degrees turned |
| setxy x y | Sets the turtle at position (x, y), where (0, 0) is the center of the screen, returns distance moved |
| pendown, pd | Sets the pen to start marking a trail, returns 1 |
| penup, pu | Sets the pen to not leave a trail, returns 0 |
| showturtle, st | Makes the turtle visible, returns 1 |
| hideturtle, ht | Makes the turtle invisible, returns 0 |
| home | Moves the turtle to (0, 0), returns distance moved |
| clearscreen, cs | Removes all trails on screen and moves turtle to (0, 0), returns distance moved |
| Name | Details |
|---|---|
| xcor | Returns turtle's x-coordinate |
| ycor | Returns turtle's y-coordinate |
| heading | Returns turtle's heading in degrees |
| pendown?, pendownp | Returns 1 if pen is down, 0 if it is up |
| showing?, showingp | Returns 1 if turtle is visible, 0 if it is invisible |
| Name | Details |
|---|---|
| sum x y, + x y | Returns the sum of x and y |
| difference x y, - x y | Returns the difference of x and y |
| product x y, * x y | Returns the product of x and y |
| quotient x y, / x y | Returns the quotient of x and y |
| remainder x y, % x y | Returns the remainder of dividing x by y |
| minus x, ~ x | Returns the negative of x |
| random max | Returns a random, non-negative number that is less than max |
| sin degrees | Returns the sin of degrees |
| cos degrees | Returns the cos of degrees |
| tan degrees | Returns the tan of degrees |
| atan degrees | Returns the arctan of degrees |
| log x | Returns the log of x |
| pow x y | Returns x raised to the power of y |
| pi | Returns the value of pi |
| Name | Details |
|---|---|
| less? x y, lessp x y | Returns 1 if x is less than y, otherwise 0 |
| greater? x y, greaterp x y | Returns 1 if x is greater than y, otherwise 0 |
| equal? x y, equalp x y | Returns 1 if x is equal to y, otherwise 0 |
| notequal? x y, notequalp x y | Returns 1 if x is not equal to y, otherwise 0 |
| and x y | Returns 1 if x and y are both non-zero, otherwise 0 |
| or x y | Returns 1 if x or y are non-zero, otherwise 0 |
| not x | Returns 1 if x is zero, otherwise 0 |
| Name | Details |
|---|---|
| make variable expression, set variable expression | Assigns the value of expression to variable, returns expression |
| repeat expression [ command(s) ] | Runs the command(s) expression number of times, returns value of final command executed or 0 if no command executed |
| dotimes [ variable limit(s) ] [ command(s) ] | Runs the command(s) for each value specified in the range, returns value of final command executed or 0 if no command executed |
| for [ variable start end increment ] [ command(s) ] | Runs the command(s) for each value specified in the range going by increment, returns value of final command executed or 0 if no command executed |
| if expression [ command(s) ] | Runs command(s) if expression is not zero, returns value of final command executed or 0 if no command executed |
| ifelse expression [ true command(s) ] [ false command(s) ] | Runs true command(s) if expression is not zero, else run false command(s), returns value of final command executed or 0 if no command executed |
| to command name [ variable(s) ] [ command(s) ] | Assigns the command(s) to command name using variable(s) as parameters, returns 1 if command name is successfully define, 0 otherwise |
| Name | Details |
|---|---|
| setbackground index, setbg index | 0=white, 1=red, 2=orange, 3=yellow, 4=green, 5=blue, 6=purple, 7=pink, 8=brown, 9=black, returns index |
| setpencolor index, setpc index | 0=white, 1=red, 2=orange, 3=yellow, 4=green, 5=blue, 6=purple, 7=pink, 8=brown, 9=black, returns index |
| setpensize pixels | Sets the current pen size to pixels, returns pixels |
| setshape index, setsh index | Sets the current shape to the shape represented by index, returns index, 1=normal, 2=Duvall |
| setpalette index r g b | Sets the color at index on the palette to the color represented by r g b, returns index |
| pencolor, pc | 0=white, 1=red, 2=orange, 3=yellow, 4=green, 5=blue, 6=purple, 7=pink, 8=brown, 9=black, returns current pen color index |
| shape, sh | Returns the index of the current shape |


{% extends "base.html" %} {% block navigation %}
A1. Internet is serious business!
A2. Some techy freaks at the student union Online, dotKom at NTNU


{% extends "LL1_Academy/_navbarPages.html" %} {% load static %} {% block title %}About{% endblock %} {% block content %}
Given that compilers and LL(1) grammars are very specific and advanced topics, there are not enough adequate resources for students to practice these concepts. This project was created by a group of undergraduate UCLA students for the course Computer Science 130: Software Engineering with the objective of developing a web application that will provide students with the means to learn more about LL(1) grammars and practice using randomized questions through a tailored experience based on performance on previous questions.
The biggest advantage that our application provides over other existing online teaching tools is that the grammars and question are not manually human written, but rather by computer generation. We implement the logic to generate LL(1) grammars, associated questions, and the correct answers. We also collect user performance, and tailor the questions offered to help users practice and improve upon their weaknesses.
4th Year, B.S. Computer Science
3rd Year, B.S. Computer Science
4th Year, B.S. Computer Science and Engineering
3rd Year, B.S. Computer Science
4th Year, B.S. Computer Science
UCLA Professor


Return home.
This is an experiment to see if it's possible (and useful) to support enctype="application/json" on forms.
enctype="application/json"


I've previously worked as a help desk assistant at a business incubator where a lot of the businesses taking off were tech-related. It made me want to learn code, so I taught myself and continued to learn more. Building some of my first things, like this site, have been fun for me.
It's going to be quite the experience. I look forward to becoming pretty good at this, and then hopefully building useful things for people later on. And/Or just hacking things in my everyday life for fun!
MoreI consider myself a full-stack developer but tend to lean towards the front end. I write both front-end and back end JavaScript and enjoy getting my mind blown every single time. Make stuff do cool stuff seems to be the mantra.
Besides writing code, I enjoying playing any new sport I can learn. Well except badminton for some weird reason. Okay I'm just terrible at it but don't tell anyone. My Marvel superhero would be Silver Surfer. I collect crystals/stones. Stouts are my favorite beers. I like heights, as long as I'm not falling from them.
I'm always talking about technology whether talking to clients on the phone or discussing it with colleagues. I dream of building or managing my own product or service that can add value to people's lives someday.


Genea is a privacy by design and open source tool anyone can use to author or edit their family tree. Your data is formatted following the GEDCOM specifications so it can be exchanged with other genealogy services. All processing is done in the browser, leaving you in control on where to save your data, avoiding any type of vendor lock-in.
You can use Genea both on your mobile devices as well as on your desktop. The changes you make are persistently stored on your device. To work on your family tree from multiple devices, you can either save the GEDCOM file when you are done and exchange it for example via e-mail or a cloud service like Dropbox, or you can use the built in Git integration which lets you store your work in any private or public repository.
Create a new family tree from scratch, or start from a GEDCOM file previously exported from other services like MyHeritage, FamilySearch, or Ancestry.
Explore Genea with these sample trees.
Features the Kings and Queens of Europe, including Great Britain. Published back in 1992 by Denis R. Reid it is perhaps a little out of date, but it is a classic.
Presidents 2020An excellent collection of the presidents of the US, with their ancestors and descendants updated to 2020 by Paul Stobbe.
Harry PotterFictional family tree for the Harry Potter series, created by famousfamilytrees.blogspot.com.


Form Name is required.
The form name must be at least 3 characters.
The form name may not be greater than 55 characters.
Description is required.
The description must be at least 3 characters.
The description may not be greater than 55 characters.


--- layout: post title: XFCE on Nexenta date: 2009-01-27 13:40:03.000000000 +05:30 categories: - Nexenta - Opensolaris tags: - ncp2 - xfce status: publish type: post published: true meta: _edit_last: '1' author: login: admin email<EMAIL_ADDRESS>display_name: admin first_name: '' last_name: '' ---
Last time I talked about a desktop on NCP, it was about Gnome. Continuing work on the desktop by community members in Nexenta now allows for XFCE on NCP2.
[caption id="" align="aligncenter" width="221" caption="XFCE on NCP2, Click to see full size"][/caption]
To get this desktop running on your Nexenta install, run
apt-get install xorg
#configure X (or copy a working xorg.conf file over)
Xorg -configure
apt-get install xfce4
Once done, you can start the desktop runnign startx. To install a login manager, run
apt-get install gdm
Come over to #nexenta, and give your thanks to Jason (wavejumper) who has been working on XFCE packages.


Stat/Transfer is designed to simplify the transfer of statistical data between different programs.
Data generated by one program is often needed in another context, either for analysis, for cleaning and correction, or for presentation. However, not only must the data be transferred, but in addition, the variables generally must be re-described for each program with additional information, such as variable names, missing values and value and variable labels. This process is not only time-consuming, it is error-prone. For those in possession of data sets with many variables, it represents a serious impediment to the use of more than one program.
Stat/Transfer removes this barrier by providing an extremely fast, reliable and automatic way to move data.
Stat/Transfer will automatically read statistical data in the internal format of one of the supported programs and will then transfer as much of the information as is present and appropriate to the internal format of another.
Stat/Transfer preserves all of the precision in your data by storing it internally in double precision format. However, on output, it will, where possible, automatically minimize the size of your output data set by intelligently choosing data storage types that are only as large as necessary to preserve the input precision. Stat/Transfer also allows precise and easy manual control over the storage format of your output variables, in case this is necessary.
In addition to converting the formats of variables, Stat/Transfer also processes missing values automatically.
Stat/Transfer can save hours and even days of manual labor, while at the same time eliminating error. Furthermore, you gain this speed and accuracy without losing flexibility, since Stat/Transfer allows you to select just the variables and cases you want to transfer.
In addition to the standard graphical user interface, a command processor allows you to run a transfer in batch mode, using a command file. The user interface can automatically generate a command file to exactly reproduce your data transfer operations. This makes it straightforward to set up fully automatic batch procedures for repetitive tasks and allows you to precisely document the work that you have done.


Log In
{{exception}}
Do you already have an account on any of these? Click the logo to log in with it here:
{{BigIcon}}
{{iterate WhoAreYouTab.htm}}
{{iterate WhoAreYouPanel.htm}} Or, you can manually enter your OpenID


nips nips2002 nips2002-1 nips2002-1-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Brochu Eric, Nando de Freitas
Abstract: We present a novel, ﬂexible statistical approach for modelling music and text jointly. The approach is based on multi-modal mixture models and maximum a posteriori estimation using EM. The learned models can be used to browse databases with documents containing music and text, to search for music using queries consisting of music and text (lyrics and other contextual information), to annotate text documents with music, and to automatically recommend or identify similar songs.
[1] D Huron and B Aarden. Cognitive issues and approaches in music information retrieval. In S Downie and D Byrd, editors, Music Information Retrieval. 2002.
[2] J Pickens. A comparison of language modeling and probabilistic text information retrieval approaches to monophonic music retrieval. In International Symposium on Music Information Retrieval, 2000.
[3] J S Downie. Evaluating a Simple Approach to Music Information Retrieval: Conceiving Melodic N-Grams as Text. PhD thesis, University of Western Ontario, 1999.
[4] E Brochu, N de Freitas, and K Bao. The sound of an album cover: Probabilistic multimedia and IR. In C M Bishop and B J Frey, editors, Ninth International Workshop on Artiﬁcial Intelligence and Statistics, Key West, Florida, 2003. To appear.
[5] H H Hoos, K A Hamel, K Renz, and J Kilian. Representing score-level music using the GUIDO music-notation format. Computing in Musicology, 12, 2001.
[6] K Barnard and D Forsyth. Learning the semantics of words and pictures. In International Conference on Computer Vision, volume 2, pages 408– 415, 2001.
[7] T Hofmann. Probabilistic latent semantic analysis. In Uncertainty in Artiﬁcial Intelligence, 1999.
[8] D M Blei, A Y Ng, and M I Jordan. Latent Dirichlet allocation. In T G Dietterich, S Becker, and Z Ghahramani, editors, Advances in Neural Information Processing Systems 14, Cambridge, MA, 2002. MIT Press.
[9] R Baeza-Yates and B Ribeiro-Neto. Modern Information Retrieval. Addison-Wesley, 1999.
[10] S Deerwester, S T Dumais, G W Furnas, T K Landauer, and R Harshman. Indexing by latent semantic indexing. Journal of the American Society for Information Science, 41(6):391– 407, 1990.
[11] P Duygulu, K Barnard, N de Freitas, and D Forsyth. Object recognition as machine translation: Learning a lexicon for a ﬁxed image vocabulary. In ECCV, 2002.


title: Getting started
headline: An introduction.
author: Benjamin den Boer
date: 25-11-2013
{% extends "post.html" %}
{% block body %}
{% filter markdown %}
Cactus templates are set up using the Django Template Language. Django’s template language is both powerful and easy to use. A template is simply a HTML file. Let's take a look at how to use the blog template.
### General file structure
The **pages** folder contains the index and the archive template, along with the **posts** folder. The posts folder is where each of your individual posts are located. CSS, Javascript and image files are located within the **static** folder. The templates folder contains the base and post template.
---
#### What do these files represent?
The *base.html* file is your HTML skeleton document. We can consider it the parent template, and all others child templates. The *index.html* file defines the content of your home page. The *post.html* file is the skeleton of each post. It defines the structure of each post, but not the content within.
The content of each post is set within each individual post file. Within this file you can set the posts metadata, such as its title, author, date and headline. The *archive.html* file contains an overview of all of your posts, arranged by month. We can format blog posts using the Markdown Syntax. To get a good impression of how Markdown works, have a look at the .html files of the default blog posts.
---
#### Basic customization
To define the title of your blog, head into the base.html and find the title block. You'll also want to change the footer information in this file. You can replace the avatar.jpg image (located in /static/images) with your own. To get started on your first blog post, it might be best to use one of the default posts as your starting point.
*Happy writing!*
{% endfilter %}
{% endblock body %}


Found {{filteredPokemon.length}} Pokemon in list
No pokemon found with that name: {{$ctrl.search}}
Loading...
Loading...
Loading...
Found {{filteredPokemon.length}} Pokemon in list
No pokemon found with that name: {{$ctrl.search}}


Seer Skahi:
Tejakar Paagrio!
You returned! Flame Successor Akkan has learned that the greater your deeds are, the darker your shadow is.
Wisdom and strength are not the only qualities of a king. What do you think it means to be a king?
"What did Akkan say?"


--- layout: page ---
Download Scala {{ page.release_version }} binaries for your system (All downloads).
Get started with sbt
sbt is a popular build tool for Scala projects.
With sbt, you don't need to download and install Scala.
Just set scalaVersion
in your build definition,
and sbt will retrieve that version.
Install one of the Scala IDEs
The Scala IDE (based on Eclipse), IntelliJ IDEA with the Scala plugin,
or NetBeans IDE with the Scala plugin.
| Archive | System | {% unless page.dont_show_sizes %}Size | {% endunless %}
|---|---|---|
| {{ resource[1] }} | {{ resource[3] }} | {% unless page.dont_show_sizes %}{{ resource[4] }} | {% endunless %}
Your download will begin shortly
You can now jump to the next steps:


| pkg_file_lua {rmarkdown} | R Documentation |
Lua filters stored in a source package in the ‘inst/rmarkdown/lua’ directory will be installed to the ‘rmarkdown/lua’ directory in the package path. This function finds the full paths of the Lua filters in the installed packages.
pkg_file_lua(filters = NULL, package = "rmarkdown")
filters |
A character vector of filenames for Lua filters to be
retrieved in ‘rmarkdown/lua’ folder of the package. By default
( |
package |
The name of the package in which to look for the filters. |
A character vector of absolute file paths for the Lua filter from the
package. The returned paths have been processed by
pandoc_path_arg()
, so they are ready to be used by Pandoc.
# list all Lua filters stored in the rmarkdown package pkg_file_lua() # get a specific filter pkg_file_lua(c("pagebreak.lua", "latex_div.lua"))


{% include "placeholdr/place_trip_card.html" with object=popular_trips.0.0 trip=popular_trips.0 long=True %}
More Popular Trips
{% for trip in popular_trips %}
{% if trip.0 != popular_trips.0.0 %}
{% include "placeholdr/place_trip_card.html" with object=trip.0 %}
{% endif %}
{% endfor %}


This page contains tests for the selenium-executionloop : handleCommandError() To see them, take a look at the source. To run them, load this file via JsUnit's testRunner.html


| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter explains conventions valid throughout the libunistring library.
Variables of type char *
denote C strings in locale encoding.
See Locale encodings.
Variables of type uint8_t *
denote UTF-8 strings. Their units
are bytes.
Variables of type uint16_t *
denote UTF-16 strings, without byte
order mark. Their units are 2-byte words.
Variables of type uint32_t *
denote UTF-32 strings, without byte
order mark. Their units are 4-byte words.
Argument pairs (s, n)
denote a string
s[0..n-1]
with exactly n units.
All functions with prefix ‘ulc_’ operate on C strings in locale encoding.
All functions with prefix ‘u8_’ operate on UTF-8 strings.
All functions with prefix ‘u16_’ operate on UTF-16 strings.
All functions with prefix ‘u32_’ operate on UTF-32 strings.
For every function with prefix ‘u8_’, operating on UTF-8 strings, there is also a corresponding function with prefix ‘u16_’, operating on UTF-16 strings, and a corresponding function with prefix ‘u32_’, operating on UTF-32 strings. Their description is analogous; in this documentation we describe only the function that operates on UTF-8 strings, for brevity.
A declaration with a variable n denotes the three concrete declarations with n = 8, n = 16, n = 32.
All parameters starting with ‘str’ and the parameters of
functions starting with u8_str
/u16_str
/u32_str
denote a NUL terminated string.
Error values are always returned through the errno
variable,
usually with a return value that indicates the presence of an error
(NULL for functions that return an pointer, or -1 for functions that
return an int
).
Functions returning a string result take a
(resultbuf, lengthp)
argument pair. If resultbuf is not NULL and the result fits
into *lengthp
units, it is put in resultbuf, and
resultbuf is returned. Otherwise, a freshly allocated string
is returned. In both cases, *lengthp
is set to the
length (number of units) of the returned string. In case of error,
NULL is returned and errno
is set.
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Bruno Haible on January, 2 2022 using texi2html 1.78a.


---
layout: default
title: "Real-Time Constrained Nonlinear Model Predictive Control on SO(3) for Dynamic Legged Locomotion"
---
{{ page.title }}
IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2020
Seungwoo Hong (1) Joon-Ha Kim (1) Hae-Won Park (1)
(1) Korea Advanced Institute of Science and Technology
IROS Best RoboCup Paper Award
Abstract
This paper presents a constrained nonlinear model predictive control (NMPC) framework for legged locomotion. The framework assumes a legged robot as a floating base single rigid body with contact forces being applied to the body as external forces. With consideration of orientation dynamics evolving on the rotation manifold SO(3), analytic Jacobians which are necessary for constructing the gradient and the Gauss-Newton Hessian approximation of the objective function are derived. This procedure also includes the reparameterization of the robot orientation on SO(3) to orientation error in the tangent space of that manifold. Obtained gradient and Gauss-Newton Hessian approximation are utilized to solve nonlinear least squares problems formulated from NMPC in a computationally efficient manner. The proposed algorithm is verified on various types of legged robots and gaits in a simulation environment.
@INPROCEEDINGS{NMPCSO3Hong2020,
author={Hong, Seungwoo and Kim, Joon-Ha and Park, Hae-Won},
booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title={Real-Time Constrained Nonlinear Model Predictive Control on SO(3) for Dynamic Legged Locomotion},
year={2020},
volume={},
number={},
pages={3982-3989},
doi={10.1109/IROS45743.2020.9341447}
}


Po(E)ttery Bot
The Po(E)ttery Bot is a class project for Principles of Engineering (PoE). I was on a team of 4 others at Olin College of Engineering to design a robot that can shape a cup or bowl when given a centered piece of clay. The bot is a computer-controled router that travels across two axels - up and down, and left to right. The computer is programmed to several different modes. Each mode carved a differnt shape. I was in charge of CAD and budget for the project.


| H | |||
|---|---|---|---|
| S | |||
| L |
HSLuv is a human-friendly alternative to HSL.
Here you can see CIELUV, a color space designed for perceptual uniformity based on human experiments. When accessed by polar coordinates, it becomes functionally similar to HSL with a single problem: its chroma component doesn't fit into a specific range.
HSLuv extends CIELUV with a new saturation component that allows you to span all the available chroma as a neat percentage.


JPG Images with PNG Transparency
JPG images provide small file sizes, but don’t give you the flexibility of transparency. PNGs provide you with transparency, but don’t compress visually complex images very well. I have been experimenting with a technique to get the best of both worlds.
Before we begin, let me first say that the best solution is to set overflow: hidden
on a parent element that contains a compressed JPG, as in the case of round avatars. Using CSS3 and the border-radius
property, you can simulate round corners on an image pretty easily. This technique works because the part you want to be transparent (the mask) is a regular shape. However, if you need your mask to be an irregular shape, then you’re stuck using PNGs and dealing with a large file size. The problem is compounded by the fact that you now have 2x retina images to worry about, making file size even more of an issue.
A Real World Scenario
This isn’t just a theoretical problem. Here’s an example of a project I did a while ago that required an irregular mask. To give you some context, the wood panel was stationary, and the images behind it would rotate every few seconds. The wood texture made the final PNG abnormally large. The audience didn’t universally have good bandwidth (something you still can’t count on in 2013). I needed to find a solution that would give me the small file size of a JPG, but allow for the 24-bit transparency of a PNG.
The solution was pretty simple, though a little labor-intensive. For the sake of simplicity, I’m going to demonstrate this technique with a simple round avatar of my sheepdog, Rufus.
Step 1
Here’s the original image with rounded corners, saved as a transparent PNG-24. I’ve cut the dimensions in half so it’s retina ready. Using Photoshop CS6’s save for web tool, The final total comes to 357KB
. I’ll bet we can do better.
Step 2
Save your original image (without the mask) as a compressed JPG—I’ve named mine rufus-compressed.jpg. Here it is, now an entirely reasonable 30KB
.
Step 3
Here’s where it starts to get weird. In Photoshop (or whatever), start by creating a new layer. Using the marquee tool, drag out a circle that will represent the visible portion of your image. Then go to Select > Inverse
and fill with a random color. This is what it looks like.
Step 4
Leaving your original Photoshop document open, open the compressed JPG you saved in step #2.
Step 5
Go back to your original document and select your mask layer. Then, Select > All
and Edit > Copy
.
Step 6
Go to the document with your compressed JPG, create a new layer, and Edit > Paste
.  This will select all the pixels on that layer.
Step 7
Hide your mask layer and select the layer with your compressed image. If you haven’t done so already, you’ll need to unlock it by double clicking and pressing OK on the New Layer dialog that pops up. Now simply hit Delete
to cut the mask shape out of your compressed JPG.
Step 8
Now we’re left with an image that’s already undergone JPG compression and ready to be saved as a PNG. Since a lot of image information has been stripped, the PNG will necessarily be smaller than the original 357KB
. Using the save for web dialog again, save as a PNG-24. The new version comes out to 239KB
, a 33% savings.
It sounds like a lot of work for 33% savings…
You’re not wrong! However, when you consider all of the images, stylesheets, scripts, and other assets that need to be loaded, 33% can make a measurable dent in your site’s load time. As Lara Swanson astutely points out, good performance contributes to a good user experience. When you’re fighting for your user, going the extra mile is always a worthwhile endeavor if you have the time and budget for it.
Let me know in the comments if you have any other fancy techniques for accomplishing good compression on JPG images with PNG transparency.


2012 : A set of 5 booklets that are held together in a
slipcase. The content for the books was drawn from course
material, references and exercises
Book 1: Display
What the language of visual curation can
involve to give the status of something as art
Book 2: Art and Audience
Exploring galleries in Bangalore and Delhi, looking
at the kind of work, context and response that they have
Book 3: The Gallery
The space, the Art, the Industry
Book 4: Your Gallery
A study into the process of creating a Gallery
Book 5: Our Gallery
As part of the course, we proposed a permanent one
and ran a temporary gallery on campus
Link to the complete book can be found here
Created in collaboration with
Rajasee Ray and Alagu Chockalingam.


This tool runs Limma on a contrast and then feeds the output from Limma
into GSEA. na_pos gene sets in the GSEA output are
upregulated in the experimental group compared to the reference group.
{{/semanticUIPopup}}
To run a new LimmaGSEA analysis,
run Limma, then
run GSEA on the result.


Copyright © 2018 Leandro Siqueira.
Just a website I made to learn HTML & CSS
I don't have much else to say


Blake is a dependable employee who is dedicated to improving his knowledge and skills.
He has developed several tools that we utilize, which helped improve productivity in our department.
Blake continues to push himself and because of that he has grown immensely, the management team has been and continues to be
impressed with Blake's business maturity and abilities. Blake has great potential and we enjoy having him part of our team.
Quincy
Blake has an amazing ability to quickly learn about and understand highly technical subjects and processes.
He is unafraid to seek understanding either through exploration or asking questions.
Blake's work ethic is, likewise, inspiring. I am privileged to be able to work with him and look to him as a resource
and a voice of reason. He doesn't allow stress to overwhelm him, rather, he merely works through situations to resolve the
issue and move on to the next one. He is a valuable resource and anyone who works with him will also find him to be a great
resource and ally to have.
Tom
Blake is passionate about helping technicians learn new skills
Sharla
Blake is one of the hardest workers I know. If he is ever asked a question that he doesn't know the answer to
he will research it until he finds a solution. He does his work well and always with a smile on his face.


I've run by quite a few triggers lately on production systems. In previous posts, I've written about problems solved with triggers. So here's a compilation of some solutions based on triggers; and some problems which are not (yet?) solvable due to current triggers limitations.
Triggers can be used to:
- Maintain integrity
- Enhance security
- Enhance logging
- Assist with archiving
- Restrict table size
- Manage caching
- Manage counters
Triggers are not fast. In fact, they can add quite an overhead if misused. Some of the triggers presented here are known to work on real life production systems, though, and work well. But make sure you benchmark before embarking on extensive application changes.
I'll be using MySQL's world database in some of the examples.
Maintaining value integrity
MySQL can enforce (is you're using the right sql_mode), some of the values you set for a column. For example, you should not be allowed to set a TINYINT column value to 500. You may not be allowed to set NULL, or you may have to provide default values.
However, within allowed range, SQL or MySQL in general won't help you. Assume you have a "percent" column, which holds integer values 0..100. It would be a TINYINT, of course. But setting the value to 103 is perfectly valid in MySQL's point of view, though not so in yours.
This is where triggers come in handy. With a trigger, you may truncate illegal values or completely abort the operation if something doesn't seem right. For example, we may wish to enforce a city's district to be non-empty. We may also wish to ensure that the city's population does not exceed its country's population:
DELIMITER $$ DROP TRIGGER IF EXISTS City_bu $$ CREATE TRIGGER City_bu BEFORE UPDATE ON City FOR EACH ROW BEGIN DECLARE country_population INT; IF (CHAR_LENGTH(NEW.District) = 0) THEN SELECT 0 FROM `District must not be empty` INTO @error; END IF; SELECT MAX(Population) FROM Country WHERE Code = NEW.CountryCode INTO country_population; IF (NEW.Population > country_population) THEN SELECT 0 FROM `City population cannot exceed that of country!` INTO @error; END IF; END $$ DELIMITER ;
For example:
mysql> UPDATE City SET Population=100000000 WHERE Name='London';
ERROR 1146 (42S02): Table 'world.City population cannot exceed that of country!' doesn't exist
We force the trigger to fail under certain circumstances. Since this is a BEFORE INSERT trigger, failure of the trigger causes aborting the INSERT itself.
Forcing referential integrity
If you're using MyISAM, Memory or even Maria or Falcon, you don't get to use Foreign Keys. MySQL's plan is to add foreign keys for all storage engines. The plan is on print for quite a few years now. Till then, you may use triggers to simulate foreign keys, including cascading deletes and updates.
Let's consider the tables City and Country. If we could, we would add the contraint that City.CountryCode references Country.Code. How can this be achieved with triggers? Here's a partial solution, showing a DELETE CASCADE:
DELIMITER $$ DROP TRIGGER IF EXISTS City_bi $$ CREATE TRIGGER City_bi BEFORE INSERT ON City FOR EACH ROW BEGIN IF (NOT EXISTS (SELECT NULL FROM Country WHERE Code=NEW.CountryCode)) THEN SELECT 0 FROM `CountryCode does not exist in Country table` INTO @error; END IF; END $$ DROP TRIGGER IF EXISTS Country_ad $$ CREATE TRIGGER Country_ad AFTER DELETE ON Country FOR EACH ROW BEGIN DELETE FROM City WHERE CountryCode = OLD.Code; END $$ DELIMITER ;
Trying out some queries:
mysql> INSERT INTO City (Name, CountryCode) VALUES ('zzimbwawa', 'ZWZ');
ERROR 1146 (42S02): Table 'world.CountryCode does not exist in Country table' doesn't exist
mysql> INSERT INTO City (Name, CountryCode) VALUES ('zzimbwawa', 'GBR');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT COUNT(*) FROM City WHERE CountryCode = 'GBR';
+----------+
| COUNT(*) |
+----------+
| 82 |
+----------+
1 row in set (0.01 sec)
mysql> DELETE FROM Country WHERE Code='GBR';
Query OK, 1 row affected (0.04 sec)
mysql> SELECT COUNT(*) FROM City WHERE CountryCode = 'GBR';
+----------+
| COUNT(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
The above example is partial. It does not handle UPDATEs on both tables. You may also modify it to simulate ON DELETE SET NULL instead of ON DELETE CASCADE.
Maintaining denormalized data integrity
Denormalized tables can hold data duplicated in several places. When such data changes in one place, triggers can help out with updating the change in the rest occurrences. A post was recently written which discusses this issue.
Archiving
Assume the following table:
DROP TABLE IF EXISTS `logs`; CREATE TABLE `logs` ( `id` int(11) NOT NULL auto_increment, `subject` varchar(64) NOT NULL, `message` varchar(255) NOT NULL, `severity` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id`) );
Logs are something that you want to cleanup regularly, on one hand, but keep at a safe place on the other hand. Let's create a logs_archive table:
CREATE TABLE logs_archive LIKE logs;
We can automatically move records from the logs table to the logs_archive table:
DELIMITER $$ DROP TRIGGER IF EXISTS logs_bd $$ CREATE TRIGGER logs_bd BEFORE DELETE ON logs FOR EACH ROW BEGIN INSERT INTO logs_archive SELECT * FROM logs WHERE id=OLd.id; END $$ DELIMITER ;
Example:
mysql> INSERT INTO logs (subject, message) VALUES ('info', 'new user created'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO logs (subject, message) VALUES ('info', 'cleanup completed'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM logs; +----+---------+-------------------+----------+ | id | subject | message | severity | +----+---------+-------------------+----------+ | 1 | info | new user created | 0 | | 2 | info | cleanup completed | 0 | +----+---------+-------------------+----------+ 2 rows in set (0.00 sec) mysql> DELETE FROM logs WHERE id = 1; Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM logs; +----+---------+-------------------+----------+ | id | subject | message | severity | +----+---------+-------------------+----------+ | 2 | info | cleanup completed | 0 | +----+---------+-------------------+----------+ 1 row in set (0.01 sec) mysql> SELECT * FROM logs_archive; +----+---------+------------------+----------+ | id | subject | message | severity | +----+---------+------------------+----------+ | 1 | info | new user created | 0 | +----+---------+------------------+----------+ 1 row in set (0.00 sec)
We can see that the logs_archive table has been filled with rows deleted from logs table.
Logging
Triggers can be used to automatically log significant events. As an example, let's say I have a social network application, in which an 'online_user' table lists those users which have logged in and have not yet logged out (hence they are assumed to be online):
DROP TABLE IF EXISTS `online_user`; CREATE TABLE `online_user` ( `online_user_id` int(11) NOT NULL auto_increment, `login` VARCHAR(64) CHARSET ascii NOT NULL, `ipv4` INT UNSIGNED NOT NULL, `ts` TIMESTAMP, PRIMARY KEY (`online_user_id`) );
Our application knows how to handle this table. I can enhance my database with logging by adding a logs table, and additional triggers:
DROP TABLE IF EXISTS `logs`; CREATE TABLE `logs` ( `logs_id` int(11) NOT NULL auto_increment, `ts` TIMESTAMP, `message` VARCHAR(255) CHARSET utf8 NOT NULL, PRIMARY KEY (`logs_id`) ); DELIMITER $$ DROP TRIGGER IF EXISTS online_user_ai $$ CREATE TRIGGER online_user_ai AFTER INSERT ON online_user FOR EACH ROW BEGIN INSERT INTO logs (message) VALUES (CONCAT('User ',NEW.login, ' has logged in from ', INET_NTOA(NEW.ipv4))); END $$ DROP TRIGGER IF EXISTS online_user_ad $$ CREATE TRIGGER online_user_ad AFTER DELETE ON online_user FOR EACH ROW BEGIN INSERT INTO logs (message) VALUES (CONCAT('User ',OLD.login, ' has logged out')); END $$ DELIMITER ;
Let's see the effect of managing online users:
INSERT INTO online_user (login, ipv4) VALUES ('john', 123456); INSERT INTO online_user (login, ipv4) VALUES ('mark', 654321); SELECT SLEEP(12); DELETE FROM online_user WHERE login = 'john';
Checking up on the logs table, we get:
mysql> SELECT * FROM `logs`; +---------+---------------------+------------------------------------------+ | logs_id | ts | message | +---------+---------------------+------------------------------------------+ | 1 | 2008-12-22 11:16:31 | User john has logged in from <IP_ADDRESS> | | 2 | 2008-12-22 11:16:31 | User mark has logged in from <IP_ADDRESS> | | 3 | 2008-12-22 11:16:43 | User john has logged out | +---------+---------------------+------------------------------------------+ 3 rows in set (0.00 sec)
The logs table can be used for logging any change in any table. The application need not be aware what exactly is being logged.
If the logs table uses the MyISAM storage engine, the triggers may want to replace the INSERT with an INSERT DELAYED, so that they return immediately without waiting for locks on the logs table. Assuming no crash occurs right after, a separate thread will collect all inserts on the logs table, and handle them in its own free time.
More to come
More triggers use case, as well as limitations and workarounds, will be presented in following posts.
Triggers Use Case Compilation, Part II
comments powered by Disqus


The *Mew* Musical Slackbot
Here's your new super powers:
/artist *artist name*
/album *album name*
/lyrics *artist song*
/concert *city, artist* (remember the comma!)
back home
I believe in learning by building, so I learned Node and Express to build this bot in one week. It utilizes the Spotify, Last.fm, Genius and SongKick APIs.
The actual bot endpoints are an AWS Lambda, built with Serverless.
I first built this bot for my brothers and myself, but thought I should share it with the world. You can read more about the projects I build here.
<3 Lucas
email: hey@thelucasmoore.com


Blog Archive 2014 You Shouldn't Use Git Blame to Blame on People Jul 23 2014 This is when a CGFloat may be a double Jun 30 2014 Memoirs of a WWDC Rookie Jun 12 2014 Swift for Dummies Jun 04 2014 Protip: Unregistering a UICollectionView header/footer May 16 2014 Cocoapods and resource_bundles Apr 15 2014 Cicada 3301 Lives! Jan 06 2014 2013 Autolayout Is Hell on Earth Sep 12 2013 Cocoapod Badges Jun 03 2013 Documentation and Objective-C (part 1) May 24 2013 NSStringMask: Simplifying masks May 16 2013 The Best XCode Tip No One Ever Gave You Apr 03 2013 SQLite Modelling Jan 16 2013 2012 The Tale of Luck Dec 27 2012 Once Upon a Time, There Was Nothing (part. 2) Dec 13 2012 Once Upon a Time, There Was Nothing Nov 21 2012


 I have already given you the
Royal Seal
! Now get out!


This is a generalised mechanism for rules to provide specialised dependencies
to other rules. The most obvious example is
proto_library
, which generates code for multiple
languages, usually only one of which is actually needed by each dependency
We could break it up into multiple parts explicitly, but ideally we want to
maintain the illusion that there's one rule by the name given in the BUILD
file and have all other rules depend only on that. However it's pretty
suboptimal to have your python_library
have to wait
for the C++ and Java generated code to compile.
This is solved by the proto_library
rule declaring
the following property:
provides = {
'py': ':python_dependency',
'java': ':java_dependency',
'cc': ':cc_dependency',
}
And then the python_library
rule is annotated with
requires = ['py'],
Individually neither has any effect, but when a rule with a particular
require
depends on another with a matching
provide
, its dependency is matched directly to the
one specified by the providing rule. This means that it can skip other
dependencies that it doesn't care about and be matched only to the ones it
does.
The consequence of this - skipping the actual declared dependency - can be a
bit nonobvious so should be invoked sparingly. Typically the rule declaring
provides
should be a no-op collecting rule such as
filegroup
and the various provided rules shouldn't normally be needed together.
Different languages are the most common example here (and indeed this feature
was nearly named
language
at one point).
The requires
stanza is also responsible for
colouring the interactive build output. Currently the available colours are
hardcoded but one of these days they might become configurable.


Welcome to my website!
I'm Ce Li, an architect but also practices in algorithm-aided design and media. You can see descriptions of each role by moving mouse on sub-titles and view projects by simple clicking!
I am an architect.
Currently, I am studying at UPenn, School of Design in MSD-AAD(former M.Arch2) program. I got my B.Arch degree from Southeast University in China. Experienced various internship both in the US and in China. I am now seeking a more challenging work chance.
I am a programmer.
I am interested in algorithms-aided design. I led several award-winning independent study projects about how to use algorithm to evolve the process of traditional design.
I am a media practitioner.
Using skills learned in TBIM(Time based and interactive media) certificate program at Upenn, I am now leading a design team practices in web design, indie game development and online academic platform.


Dear Sir,
In order to transfer out (USD 45 MILLION) Forty Five million United States Dollars) from BANK OF AFRICA (BOA): I have the courage to ask for your assistance to handle this important and confidential business believing that you will never let me down either now or in future. I am MR. BENJAMINE S.ADAM, the OPERATIONAL MANAGER of BANK OF AFRICA, (BOA) BENIN.
There is an account opened in this bank in 1989 and since 1996 nobody has operated on this account again. After going through some old files in the records, I discovered that if I do not remit this money out urgently it will be forfeited for nothing. The owner of this account is Mr.PAULTON ALLEN, a foreigner, and a miner at D&D INVESMENT CO, a geologist by profession and he died since 1996.
No other person knows about this account or any thing concerning it, the account has no other beneficiary and my investigation proved to me as well that this company does not know anything about this account and the amount involved is (USD 45M).
I want to transfer the [USD 45M] Forty Five million United States Dollars into a safe foreigners account abroad, but I don't know any foreigner.
I am only contacting you as a foreigner because this money can not be approved to a local bank here, but can only be approved to any foreign account because the money is in us dollars and the former owner of the account is Mr.PAULTON ALLEN a foreigner too.
I know that this message will come to you as a surprise as we dont know our selves before, but be sure that it is real and a genuine business.
I only got your contact address from my secretary who operates computer with believe in God that you will never let me down in this business.You are the only person that I have contacted in this business, so please reply urgently so that I will inform you the next step to take.
Send also your private telephone and fax numbers including the full details of the account to be used for the deposit. I want us to meet face to face or sign a binding agreement to bind us together so that you can receive this money into a foreign account or any account of your choice where the fund will be safe.
I will fly to your country for withdrawal, sharing and other investments. I am contacting you because of the need to involve a foreigner with foreign account and to act as a foreign beneficiary.
I need your full co-operation to make this work fine because the management is ready to approve this payment to any foreigner who has correct information of this account which I will give to you later immediately, if you are able and with capability to handle such amount in strict confidence and trust according to my instructions and advice for our mutual benefit because this opportunity will never come again in my life.
I need truthful person in this business because I don't want to make mistake, I need your strong assurance and trust. With my position now in the office I can transfer this money to any foreigner's reliable account, which you can provide with assurance that this money will be intact pending my physical arrival in your country for sharing.
I will destroy all documents of transaction immediately we receive this money leaving no trace to any place. You can also come to discuss with me face to face after which I will make this remittance in your presence and two of us will fly to your country so at least two days ahead of the money going into the account.
I will apply for annual leave to get visa immediately I hear from you that you are ready to act and receive this fund in your account.
I will use my position and influence to effect legal approvals and onward transfer of this money to your account with appropriate clearance forms of the ministries and foreign exchange departments.
At the conclusion of this business, you will be given 35% of the total amount, 60% will be for me, while 5% will be for expenses both parties might have incurred during the process of transferring.
Please bear in mind that this fund is not a looted or stolen money but rather a hard earned money generated.
Pls if you are willing to work with me, kindly forward to me your personal detail to enable me reach you, this includes the following:
1. Your full names
2. Your residential address
3. Your bank account informations
4.  Your telephone and fax numbers
6. Including more Preamble about yourself (marital status) Below is my alternative Contacts: E-MAIL<EMAIL_ADDRESS>PHONE# 229-98-177798
COTONOU BENIN REPUBLIC.
I look forward to your earliest reply.
Yours Truly,
MR. BENJAMINE SALIFOU ADAM
Msg sent via eMailWave - http://emailwave.com/ - Get your own FREE account and start receiving your eMail.


| DOSE: |
8 |
oral |
Alcohol |
(liquid) |
| |
0.5 tablets |
oral |
MDMA |
(pill / tablet) |
I've been doing E for 2 or 3 years, I've only done around 30 or so pills and I never do more than 1 1/2 at a time. I'm a pretty careful user and I'd never had a serious reaction. I think the problem this time may have been that I was stressed out in general and had a bad experience with a girl I thought I trusted. I was a bit depressed I guess.
Anyway, after getting a bit drunk, maybe 7 or 8 drinks, I was still in control, me and a friend decided to do some E. I knew it didn't combine well with drink, so we split one pill between us. I was in a great mood at this point from drinking and felt brilliant as the E started to kick in and slowly build up to that feeling of euphoria. You know the feeling, when you know you're just going to have a great night.
Then it all started to go wrong. I started to get anxious, and everything seemed wrong. I've had it before, it's a common reaction, you just ride it out. But this felt a lot worse and was coming on fast. I spent the next couple of hours worrying like crazy, convinced I'd hurt myself badly. After a few hours I calmed down, but I still felt all wrong. I was in control, but my head was just telling me something was going wrong, and it was intense. I smoked some cigarettes and sat around watching others dance at the club we were at until I went home to sleep.
The next day was the worst feeling, when you wake up and your head is just on fire. I had a massive headache, it was ringing like nothing else and I still felt really anxious and was shaking. By now I was really scared. The day after was even worse, I couldn't go to work. I couldn't relax, I was completely on edge, I drifted between watching TV for 2 minutes to going for a walk. Nothing could take my mind off it, I was in a permanent state of anxiety.
I don't know if it was nervous exhaustion, but my vision started to slow down and get blurry. I couldn't eat or sleep anymore. I was completely exhausted but couldn't sleep, I was in that state you get when you're coming down off E and you just want to drift off but you can't. I went and saw a doctor and he told me not to worry, it'd wear off, but I didn't believe him. I thought I had brain damage. I was off work for a week and I'm on anti-depressants now. Two weeks later I feel much better, though still slightly on edge and down.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Some examples of formatted text.
Testing a first example of fonts.
Use classes to set bold text
Some normal italic text.
Use classes to set italic text. While still inside an italic area, we can also make it bold using a "span" tag.
This is a non-underlined link with hover added.Text allignment applies to child relative to parent.


This page lists the used libraries/javascripts, external libraries' legal status, physical files, their linking to various components' functionalities (to help you to manually remove those files that you don't need at all). The links in the table below are opened always into a new tab in your browser.
| Functionality | Library Name | Version | Files | Type | Legal | IPR | WULF | Notes |
|---|---|---|---|---|---|---|---|---|
| Library with base implementation for most components: button, nav, label, checkbox, radio button, alert, list group, panel, progress, breadcrumbs, tooltip, balloon, tabbed pane, modal dialog, ... | Bootstrap | 3.3.0 | Integrated inside: /js/wulf.min.js /css/wulf.min.css /css/wulf-theme.min.css |
Open Source | OK | OK | 1.2 | Reminder: Include all license texts attached to this package in the product documentation. Do not remove any copyright notices from the source code. |
| Library for JavaScript: HTML traversal object manipulation, animation, event handling, Ajax, ... | jQuery | 2.1.3 | /js/dependencies/jquery.min.js | Open Source | OK | OK | 1.2 | Reminder: keep the license file among sources. |
| Library extending Bootstrap with other controls: dropdown list, combobox, calendar, timezone, ... | FuelUX | 3.10.0 | /css/fuelux.css /js/dependencies/fuelux.js /fonts/fuelux.woff |
Open Source | Restricted | OK | 1.2 | Restriction: add the BSD license to binary distribution Considering replacement of this library with jqWidget |
| Component for masking input fields. | jQuery: Mask Plugin | 1.11.4 | /js/jquery.mask.js | Open Source | Restricted | OK | 1.2 | Restriction: don't use/ship the Mask Plugin test folder content Note: this will be replaced soon with another library due to problems in this one. |
| Component for manipulating and showing time, date, timezone.(fuelux.js depends on it,but WULF doesn't depend on it directly) | Moment.js | 2.13.0 | /js/moment-with-locales.min.js | Open Source | OK | OK | 1.2 | Reminder: keep the license file among sources. New version to check: 2.10.6 |
| Component for scrolling content. | jQuery: custom content scroller | 3.0.9 | Integrated inside: /js/wulf.min.js |
Open Source | OK | OK | 1.2 | Reminder: keep the license file among sources. jquery.mCustomScrollbar.js |
| Library for controls: table, treetable, ... | jqWidgets | 3.8.2 | LIST TO BE ADDED | Commercial | OK | OK | 1.2 | Considering expanding the usage of this library. |
| Library for angular framework | angular | 1.5.3 | /js/dependencies/angular.js | Open Source | OK | OK | 1.2 | Considering making all component support angular. |
| Library for angular animation | angular animation | 1.5.3 | /js/dependencies/angular-animate.js | Open Source | OK | OK | 1.2 | Considering all animation implementd by angular animation. |
| Library for angular smart table | smart table | 2.1.8 | Integrated inside: /wulf-ng/tables/smart-table.js |
Open Source | OK | OK | 1.2 | Reminder: keep the license file among sources. |
| Internal JavaScript functionality | - | - | LIST TO BE ADDED | Nokia | OK | OK | 1.2 | Files are integrated currently inside WULF, but we are planning to remove the integration so that they would be separately in the distribution in the future (for easier removal). |
| Angular responsive navigation with recursive menu and sub-menu construction Library for ui-navbar | ui-navbar | 0.4.3 | Integrated inside: /wulf-ng/banner/menuBar.js |
Open Source | OK | OK | 1.2 | Reminder: keep the license file(MIT) among sources. |
| Angular-ui/bootstrap Library which ui-navbar dependency on dropdown and position components forAngular-ui/bootstrap | Angular-ui/bootstrap | 2.1.3 | Integrated inside: /wulf-ng/banner/menuBar.js and /wulf-ng/banner/position.js |
Open Source | OK | OK | 1.2 | Reminder: keep the license file(MIT) among sources. |
jQuery is a dependency and is included with the distribution, but if you do not want to
host jQuery yourself, you can use a CDN, like the one provided by Google:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>


Logout
Client Information
Dashboard
Clients
All Clients
Client ID#:
|
Loan Officer:
Branch:
Escrow Balance: ₦
New Application
Edit Client
Applications
Loan Amount
Date Created
Status
Activities
Personal Information
Employment Information
Reference Information
Escrow History
×
Amount
Type
Date
Action


Photos: Priyanka Chopra, Katrina Kaif, Bhumi Pednekar, Ayushmann Khurrana party it up together with their B-town friends
by TIMESOFINDIA.COMB-town was buzzing Friday night with some of the biggest stars in the business, zooming around town to attend glitzy parties. Actresses Priyanka Chopra, Katrina Kaif, Bhumi Pednekar were spotted bringing on their fashion A-game as they attended a house party that also saw a host of other celebs in attendance.
While Peecee added a pop of colour in a bright yellow crop top and matching pants, Katrina gave off major boss lady vibes in a coat dress that with a sexy lace frill. Bhumi opted for a shimmery suit that she paired with a bralet.
Ayushmann Khurrana and wife Tahera added some wow factor with their stylish appearance at the do. The actor, who was at the success bash of his latest film ‘Bala’, seemed to be in no mood to slow down. Joined by Rajkummar Rao, Patralekha, Aditi Rao Hydari, brother Aparshakti Khurana, the bunch posed together for the shutterbugs.
Also spotted at the big bash was Diana Penty, Athiya Shetty, Huma qureshi, Arpita Khan Sharma, Dino Morea and others.