The world's premier homework organizer site.
Take a picture of your assignment! Make sure that the top of your page looks like the following.
Calvin GODfrey is a freshman from Virginia Tech studying computer science.
<EMAIL_ADDRESS>Tanisha is a sophomore at Duke, from Mumbai, India, studying computer science and Statistics.
<EMAIL_ADDRESS>Neha is a sophomore at Duke, studying computer science.
<EMAIL_ADDRESS>Jeffrey is a junior at Duke studying neuroscience and computer science. He likes turkey legs.
<EMAIL_ADDRESS>Evelyn is a sophomore at Duke studying biomedical and electrical/computer engineering.
evelyn2putri@gmail.com


Runnable
Subclass Test to create your own tests. Typically you’ll want a Test subclass per implementation class.
Call this at the top of your tests when you absolutely positively need to have ordered tests.
# File lib/minitest/test.rb, line 20 def self.i_suck_and_my_tests_are_order_dependent! class << self undef_method :test_order if method_defined? :test_order define_method :test_order do :alpha end end end
Make diffs for this TestCase use pretty_inspect so that diff in assert_equal can be more details. NOTE: this is much slower than the regular inspect but much more usable for complex objects.
# File lib/minitest/test.rb, line 33 def self.make_my_diffs_pretty! require "pp" define_method :mu_pp do |o| o.pretty_inspect end end
Call this at the top of your tests when you want to run your tests in parallel. In doing so, you’re admitting that you rule and your tests are awesome.
# File lib/minitest/test.rb, line 46 def self.parallelize_me! require "minitest/parallel_each" class << self undef_method :test_order if method_defined? :test_order define_method :test_order do :parallel end end end
Returns all instance methods starting with “test_”. Based on test_order, the methods are either sorted, randomized (default), or run in parallel.
# File lib/minitest/test.rb, line 60 def self.runnable_methods methods = methods_matching(/^test_/) case self.test_order when :parallel max = methods.size ParallelEach.new methods.sort.sort_by { rand max } when :random then max = methods.size methods.sort.sort_by { rand max } when :alpha, :sorted then methods.sort else raise "Unknown test_order: #{self.test_order.inspect}" end end
Defines the order to run tests (:random by default). Override this or use a convenience method to change it for your tests.
# File lib/minitest/test.rb, line 81 def self.test_order :random end
# File lib/minitest/parallel_each.rb, line 73 def capture_io(&b) Test.synchronize do simple_capture_io(&b) end end
# File lib/minitest/parallel_each.rb, line 81 def capture_subprocess_io(&b) Test.synchronize do simple_capture_subprocess_io(&b) end end
# File test/minitest/metametameta.rb, line 6 def clean s s.gsub(/^ {6}/, '') end
Did this run error?
# File lib/minitest/test.rb, line 216 def error? self.failures.any? { |f| UnexpectedError === f } end
The location identifier of this test.
# File lib/minitest/test.rb, line 223 def location loc = " [#{self.failure.location}]" unless passed? or error? "#{self.class}##{self.name}#{loc}" end
Did this run pass?
Note: skipped runs are not considered passing, but they don’t cause the process to exit non-zero.
# File lib/minitest/test.rb, line 234 def passed? not self.failure end
Returns “.”, “F”, or “E” based on the result of the run.
# File lib/minitest/test.rb, line 241 def result_code self.failure and self.failure.result_code or "." end
Runs a single test with setup/teardown hooks.
# File lib/minitest/test.rb, line 99 def run with_info_handler do time_it do capture_exceptions do before_setup; setup; after_setup self.send self.name end %{ before_teardown teardown after_teardown }.each do |hook| capture_exceptions do self.send hook end end end end self # per contract end
Generated with the Darkfish Rdoc Generator 2.


We received a request to reset your password on Yeep.
Need the raw link? <%= url %>
If you didn't make a request to reset your password, simply ignore this email.
Yeep - Headless user management


Notebooks
Story: Rainmaking (a version by Dia!kwain)
Rainmaking (a version by Dia!kwain)
Title
Rainmaking (a version by Dia!kwain)
Collection
Summary
An account of rain-making by means of dragging a water-animal over the land, in illustration of a Bushman painting copied by Mr J.M. Orpen (Cape Monthly Magazine for July, 1874, frontispiece), was given, in the Katkop dialect, by Dia!kwãin, who had it from his mother (BXXVII. 2540-2608). The beginning of this was repeated by him (L V.-3. 4075-4085), and two other accounts of rain-making were also given by him (L V.-3. 4086-4121). Rainmakers (!giten) lead out a waterbull and kill it on the place where it must rain (note on p.4077v: 'The water's bull's blood is water'. Its flesh and blood are thrown onto the places where the rain must fall); how the people should behave if they want the rain to fall.
Comments
1) p.4074v: Dia!kwain's parents told him about the colour of the waterbull's horns (black at the bottom and white at the top, as if scraped); the name of an onion-like plant, the root of which is eaten by people, 2) p.4077v: the waterbull's blood is water, 3) See also What happened when the thong (with which they were pulling at the Water's Bull) broke or Kko-kkoro's story and A rain story and Rainmaking: another story of it and Rainmaking, 4) This story is found in Book V-3
Contributors
Date
14 January 1875 (started)
Categories
Keywords
water (and plants) , water (water's animals) , water (water's people) , water (and rainmaking) , water (the waterbull's blood is water) , rain (and water's people) , rain (its sorcerers) , rain (and waterbull) , rain (and rainmaking) , rain (and actions of people) , rain (and lightning) , rain (and clouds) , rain (comes at place where bull is killed) , rain (and finding food) , rain (its place) , rain (and plants) , rain (the rain-bull) , rain (rain-animals) , rain (rain-beast) , waterbull (its blood is water) , waterbull (its flesh and blood) , waterbull (its killing place and rain) , waterbull (and actions of rainmakers) , waterbull (the leading of) , waterbull (its colour) , waterbull (its horns) , waterbull (and rain-making) , rainmakers (!giten) , rainmakers (rain sorcerers) , rainmakers (water's people) , rainmakers (lead and kill waterbull) , rainmakers (and rainmaking) , rainmakers (the people's treatment of) , rainmakers (their work) , rainmakers (respecting) , sorcerer (see rainmaker) , respect (for rainmakers) , respect (and rain-making) , food (finding and the rain) , food (and rain-making) , blood (of the waterbull) , blood (the waterbull's blood is water) , blood (and rain-making) , name (for rainmakers is !giten) , colour (of the waterbull) , colour (and rain-making) , rain-making (and a painting copied by Mr J.M. Orpen) , rain-making (a version by Dia!kwain) , rain-making (rainmakers lead out a waterbull and kill it) , place (where the rain must fall) , place (the 'killing place') , place (and rain-making) , place (the rain's place) , work (performed by rainmakers) , work (and rain-making)
Story Pages
4075-4085


Dojox DocTester test
Default Usage
You can just "throw" your doctests inside a node and give it the dojoType="dojox.widget.DocTester"
, and you will get the box below.
Including the buttons and the summary below the box.
>>> 1+1
2
>>> "one" + "two"
"three"
>>> (new dojo._Url("http://localhost/?a=1&b=2")).query
"a=1&b=2"
>>> dojo.trim(" 123 ")
"123"
>>> var one = 1
>>> "two" + one
"two1"
>>> var one = 1
>>> 2 + one
"21"
>>> var l = [1,5,8,9,0];
>>> dojo.indexOf(l, 8);
2


{% extends 'books/base.html' %} {% load static %} {% block title %} Books {% endblock title %} {% block stylesheet %} {% endblock stylesheet %} {% block content %}
We find the best ebook deals so you don't have to. Never pay full price again.


js/SpriteKit/SKNode.js
'use strict'
import NSObject from '../ObjectiveC/NSObject'
import CGPoint from '../CoreGraphics/CGPoint'
import CGRect from '../CoreGraphics/CGRect'
import CGSize from '../CoreGraphics/CGSize'
//import UIFocusItem from '../undefined/UIFocusItem'
//import SKScene from './SKScene'
//import SKAction from './SKAction'
//import SKPhysicsBody from './SKPhysicsBody'
//import GKPolygonObstacle from '../undefined/GKPolygonObstacle'
//import GKEntity from '../undefined/GKEntity'
//import NSMutableDictionary from '../undefined/NSMutableDictionary'
//import SKConstraint from './SKConstraint'
//import SKReachConstraints from './SKReachConstraints'
//import NSCoder from '../undefined/NSCoder'
//import SKAttributeValue from './SKAttributeValue'
/**
* The SKNode class is the fundamental building block of most SpriteKit content.
* @access public
* @extends {NSObject}
* @implements {UIFocusItem}
* @see https://developer.apple.com/documentation/spritekit/sknode
*/
export default class SKNode extends NSObject {
// Initializers
/**
*
* @access public
* @constructor
* @see https://developer.apple.com/documentation/spritekit/sknode/1483097-init
*/
constructor() {
super()
// Inspecting the Node’s Position
/**
* The position of the node in its parent's coordinate system.
* @type {CGPoint}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483101-position
*/
this.position = new CGPoint(0, 0)
/**
* The height of the node relative to its parent.
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483107-zposition
*/
this.zPosition = 0.0
this._frame = new CGRect(new CGPoint(0, 0), new CGSize(0, 0))
// Setting a Node’s Scaling and Rotation
/**
* A scaling factor that multiplies the width of a node and its children.
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483087-xscale
*/
this.xScale = 1.0
/**
* A scaling factor that multiplies the height of a node and its children.
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483046-yscale
*/
this.yScale = 1.0
/**
* The Euler rotation about the z axis (in radians).
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483089-zrotation
*/
this.zRotation = 0.0
// Inspecting a Node’s Visibility
/**
* The transparency value applied to the node’s contents.
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483023-alpha
*/
this.alpha = 1.0
/**
* A Boolean value that determines whether a node and its descendants are rendered.
* @type {boolean}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483048-ishidden
*/
this.isHidden = false
// Determining Whether a Node Supports User Interaction
/**
* A Boolean value that indicates whether the node receives touch events.
* @type {boolean}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483109-isuserinteractionenabled
*/
this.isUserInteractionEnabled = false
// Working with Node Trees
this._children = []
this._parent = null
this._scene = null
// Naming Nodes
/**
* The node’s assignable name.
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483136-name
*/
this.name = null
// Running Actions
/**
* A speed modifier applied to all actions executed by a node and its descendants.
* @type {number}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483036-speed
*/
this.speed = 1.0
/**
* A Boolean value that determines whether actions on the node and its descendants are processed.
* @type {boolean}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483113-ispaused
*/
this.isPaused = false
/**
* @access private
* @type {Map}
*/
this._actions = new Map()
// Adding Physics to a Node
/**
* The physics body associated with the node.
* @type {?SKPhysicsBody}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483117-physicsbody
*/
this.physicsBody = null
// Working with GameplayKit Entities
/**
* The GameplayKit entity this node represents.
* @type {?GKEntity}
* @see https://developer.apple.com/documentation/spritekit/sknode/1640688-entity
*/
//this.entity = null
// Storing Custom Node Data
/**
* A dictionary containing arbitrary data.
* @type {?NSMutableDictionary}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483121-userdata
*/
this.userData = null
// Constraining a Node’s Behavior Relative to Other Nodes
/**
* Specifies the list of constraints to apply to the node.
* @type {?SKConstraint[]}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483124-constraints
*/
this.constraints = null
/**
* Specifies the reach constraints to apply to the node when executing a reach action.
* @type {?SKReachConstraints}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483019-reachconstraints
*/
this.reachConstraints = null
// Instance Properties
/**
*
* @type {?Object[]}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645045-accessibilitychildren
*/
this.accessibilityChildren = []
/**
*
* @type {CGRect}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645044-accessibilityframe
*/
this.accessibilityFrame = new CGRect(new CGPoint(0, 0), new CGSize(0, 0))
/**
*
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645041-accessibilityhelp
*/
this.accessibilityHelp = null
/**
*
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645039-accessibilitylabel
*/
this.accessibilityLabel = null
/**
*
* @type {?Object}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645042-accessibilityparent
*/
this.accessibilityParent = null
/**
*
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645036-accessibilityrole
*/
this.accessibilityRole = 'AXImage'
/**
*
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645035-accessibilityroledescription
*/
this.accessibilityRoleDescription = 'SKNode'
/**
*
* @type {?string}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645043-accessibilitysubrole
*/
this.accessibilitySubrole = null
/**
* The values of each attribute associated with the node's attached shader.
* @type {Map<string, SKAttributeValue>}
* @see https://developer.apple.com/documentation/spritekit/sknode/1644181-attributevalues
*/
this.attributeValues = new Map()
/**
*
* @type {boolean}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645038-isaccessibilityelement
*/
this.isAccessibilityElement = false
/**
*
* @type {boolean}
* @see https://developer.apple.com/documentation/spritekit/sknode/1645037-isaccessibilityenabled
*/
this.isAccessibilityEnabled = false
/**
* @type {SKNode}
* @access private
*/
this.__presentation = null
this._isPresentationInstance = false
this._worldPosition = new CGPoint(0, 0)
this._worldZPosition = 0
this._worldXScale = 1
this._worldYScale = 1
this._worldZRotation = 0
}
/**
*
* @access public
* @param {NSCoder} aDecoder -
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483142-init
*/
//initWithCoder(aDecoder) {
//}
// Creating a New Node
/**
* Creates a new node by loading an archive file from the game’s main bundle.
* @access public
* @param {string} filename - The name of the file, without a file extension. The file must be in the app’s main bundle and have a .sks filename extension.
* @returns {void}
* @desc If you call this method on a subclass of the SKScene class and the object in the archive is an SKScene object, the returned object is initialized as if it is a member of the subclass. You use this behavior to create scene layouts in the Xcode Editor and provide custom behaviors in your subclass.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483083-init
*/
static nodeWithFileNamed(filename) {
const node = new SKNode()
return node
}
// Inspecting the Node’s Position
/**
* Calculates a rectangle in the parent’s coordinate system that contains the content of the node and all of its descendants.
* @access public
* @returns {CGRect} -
* @desc The frame takes into the account the cumulative effect of the xScale, yScale, and zRotation properties of each node in the subtree.Listing 1 shows how calculateAccumulatedFrame() can be used display the bounding box of a shape node. The child node, although smaller than its parent, is rotated by 30° so that its bounds extend beyond its parent's bounds. After childNode has been added to parentNode, a further shape node, boundingBoxNode, is created with its size based on the accumulated frame of parentNode.Listing 1 Displaying the accumulated frame of a shape nodelet parentNode = SKShapeNode(rectOf: CGSize(width: 500, height: 500))
parentNode.lineWidth = 2
parentNode.strokeColor = .blue
parentNode.fillColor = .clear
let childNode = SKShapeNode(rectOf: CGSize(width: 400, height: 400))
childNode.strokeColor = .red
childNode.fillColor = .clear
childNode.zRotation = -CGFloat.pi / 6 // pi / 6 = 30°
parentNode.addChild(childNode)
let boundingBoxNode = SKShapeNode(rectOf: parentNode.calculateAccumulatedFrame().size)
boundingBoxNode.lineWidth = 1
boundingBoxNode.strokeColor = .black
boundingBoxNode.fillColor = .clear
boundingBoxNode.path = boundingBoxNode.path?.copy(dashingWithPhase: 0,
lengths: [10,10])
parentNode.addChild(boundingBoxNode)
Figure 1 shows the result of Listing 1 with parentNode rendered in blue, childNode rendered in red and the boundingBoxNode rendered with a dashed line. Figure 1 Displaying the accumulated frame of a shape nodeDisplaying the accumulated frame of a shape nodelet parentNode = SKShapeNode(rectOf: CGSize(width: 500, height: 500))
parentNode.lineWidth = 2
parentNode.strokeColor = .blue
parentNode.fillColor = .clear
let childNode = SKShapeNode(rectOf: CGSize(width: 400, height: 400))
childNode.strokeColor = .red
childNode.fillColor = .clear
childNode.zRotation = -CGFloat.pi / 6 // pi / 6 = 30°
parentNode.addChild(childNode)
let boundingBoxNode = SKShapeNode(rectOf: parentNode.calculateAccumulatedFrame().size)
boundingBoxNode.lineWidth = 1
boundingBoxNode.strokeColor = .black
boundingBoxNode.fillColor = .clear
boundingBoxNode.path = boundingBoxNode.path?.copy(dashingWithPhase: 0,
lengths: [10,10])
parentNode.addChild(boundingBoxNode)
Displaying the accumulated frame of a shape node
* @see https://developer.apple.com/documentation/spritekit/sknode/1483066-calculateaccumulatedframe
*/
calculateAccumulatedFrame() {
let r = this._frame.copy()
for(const child of this._children){
r = r.union(child.calculateAccumulatedFrame())
}
return r
}
/**
* A rectangle in the parent’s coordinate system that contains the node’s content, ignoring the node’s children.
* @type {CGRect}
* @desc The frame is the smallest rectangle that contains the node’s content, taking into account the node’s xScale, yScale, and zRotation properties. Not all nodes contain content of their own.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483026-frame
*/
get frame() {
return this._frame
}
// Setting a Node’s Scaling and Rotation
/**
* Sets the xScale and yScale properties of the node.
* @access public
* @param {number} scale - The new value to use for the node’s xScale and yScale properties.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483126-setscale
*/
setScale(scale) {
this.xScale = scale
this.yScale = scale
}
// Working with Node Trees
/**
* Adds a node to the end of the receiver’s list of child nodes.
* @access public
* @param {SKNode} node - The node to add. The node must not already have a parent.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483054-addchild
*/
addChild(node) {
if(this._children.indexOf(node) >= 0){
return
}
node.removeFromParent()
this._children.push(node)
node._parent = this
}
/**
* Inserts a child into a specific position in the receiver’s list of child nodes.
* @access public
* @param {SKNode} node - The node to add. The node must not already have a parent.
* @param {number} index - The position in the array to insert the node.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483062-insertchild
*/
insertChildAt(node, index) {
if(this._children.indexOf(node) >= 0){
return
}
node.removeFromParent()
this._insertObjectInChildrenAtIndex(node, index)
this._parent = this
}
/**
* Compares the parameter node to the receiving node.
* @access public
* @param {SKNode} node - The node to compare to the receiving node.
* @returns {boolean} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483078-isequal
*/
isEqualTo(node) {
return false
}
/**
* Moves the node to a new parent node in the scene.
* @access public
* @param {SKNode} parent - An SKNode object to move the receiver to. This node must be in the same scene as the node’s current parent.
* @returns {void}
* @desc The node maintains its current position in scene coordinates.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483021-move
*/
moveToParent(parent) {
parent.addChild(this)
}
/**
* Removes the receiving node from its parent.
* @access public
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483119-removefromparent
*/
removeFromParent() {
const parentNode = this._parent
if(parentNode === null){
return
}
const index = parentNode._children.indexOf(this)
if(index < 0){
return
}
parentNode._removeObjectFromChildrenAtIndex(index)
}
/**
* Removes all of the node’s children.
* @access public
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483040-removeallchildren
*/
removeAllChildren() {
for(const child of this._children){
child.removeFromParent()
}
}
/**
* Removes a list of children from the receiving node.
* @access public
* @param {SKNode[]} nodes - An array of SKNode objects that are all children of the receiving node.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483091-removechildren
*/
removeChildrenIn(nodes) {
for(const node of nodes){
if(this._children.indexOf(node) >= 0){
node.removeFromParent()
}
}
}
/**
*
* @access private
* @param {number} index -
* @returns {void}
*/
_removeObjectFromChildrenAtIndex(index) {
const arr = this._children.splice(index, 1)
if(arr.length === 0){
return
}
const obj = arr[0]
obj._parent = null
}
/**
*
* @access private
* @param {SCNNode} object -
* @param {number} index -
* @returns {void}
*/
_insertObjectInChildrenAtIndex(object, index) {
const length = this._children.length
if(index > length){
throw new Error(`SKNode.children out of index: ${index} > ${length}`)
}
this._children.splice(index, 0, object)
}
/**
* Returns a Boolean value that indicates whether the node is a descendant of the target node.
* @access public
* @param {SKNode} parent - An SKNode object to test against.
* @returns {boolean} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483111-inparenthierarchy
*/
inParentHierarchy(parent) {
return false
}
/**
* The node’s children.
* @type {SKNode[]}
* @desc The objects in this array are all SKNode objects.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483028-children
*/
get children() {
return this._children.slice(0)
}
/**
* The node’s parent node.
* @type {?SKNode}
* @desc If the node is not in a node tree, the value is nil.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483080-parent
*/
get parent() {
return this._parent
}
/**
* The scene node that contains the node.
* @type {?SKScene}
* @desc If the node is not embedded in a scene, the value is nil.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483064-scene
*/
get scene() {
return this._scene
}
// Naming Nodes
/**
* Searches the children of the receiving node for a node with a specific name.
* @access public
* @param {string} name - The name to search for. This may be either the literal name of the node or a customized search string. See Searching the Node Tree.
* @returns {?SKNode} -
* @desc If more than one child share the same name, the first node discovered is returned.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483060-childnode
*/
childNodeWithName(name) {
for(const child of this._children){
if(child.name === name){
return child
}
}
return null
}
/**
* Search the children of the receiving node to perform processing for nodes which share a name.
* @access public
* @param {string} name - The name to search for. This may be either the literal name of the node or a customized search string. See Searching the Node Tree.
* @param {function(arg1: SKNode, arg2: UnsafeMutablePointer<ObjCBool>): void} block - A block to execute on nodes that match the name parameter. The block has the signature (node: SKNode, stop: UnsafeMutablePointer<ObjCBool>).
* @returns {void}
* @desc This method enumerates the child array in order, searching for nodes whose names match the search parameter. The block is called once for each node that matches the name parameter.The following code shows how you could enumerate through the child nodes of a scene with a name containing the string yellow. Each matching node is hidden until the enumeration finds a node that also contains the string triangle. When this node is reached, stop is set to true and the processing stops.Listing 1 Enumerating child nodesscene.enumerateChildNodes(withName: "*yellow*") {
(node, stop) in
node.run(SKAction.hide())
if let name = node.name, name.contains("triangle") {
stop.initialize(to: true)
}
}
You can also search by class name using enumerateChildNodes(withName:using:). However, for custom classes, you need to specify the fully annotated class name (i.e. the project name followed by the class name). The following code shows a custom class, SpaceshipNode, based on SKSpriteNode, and created in a project named SpaceGame. The first search fails to return an instance of SpaceshipNode added as a child of parentNode:Listing 2 Enumerating child nodesclass SpaceshipNode: SKSpriteNode {
}
let parentNode = SKNode()
let childNode = SpaceshipNode()
parentNode.addChild(childNode)
parentNode.enumerateChildNodes(withName: "SpaceshipNode") {
node, _ in
// Unannotated name, returns no results
}
parentNode.enumerateChildNodes(withName: "SpaceGame.SpaceshipNode") {
node, _ in
// Annotated name, successfully returns `childNode`
}
parentNode.enumerateChildNodes(withName: "SKSpriteNode") {
node, _ in
// Superclass name, successfully returns `childNode`
}
Enumerating child nodesscene.enumerateChildNodes(withName: "*yellow*") {
(node, stop) in
node.run(SKAction.hide())
if let name = node.name, name.contains("triangle") {
stop.initialize(to: true)
}
}
Enumerating child nodesclass SpaceshipNode: SKSpriteNode {
}
let parentNode = SKNode()
let childNode = SpaceshipNode()
parentNode.addChild(childNode)
parentNode.enumerateChildNodes(withName: "SpaceshipNode") {
node, _ in
// Unannotated name, returns no results
}
parentNode.enumerateChildNodes(withName: "SpaceGame.SpaceshipNode") {
node, _ in
// Annotated name, successfully returns `childNode`
}
parentNode.enumerateChildNodes(withName: "SKSpriteNode") {
node, _ in
// Superclass name, successfully returns `childNode`
}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483024-enumeratechildnodes
*/
enumerateChildNodesWithNameUsing(name, block) {
}
// Running Actions
/**
* Adds an action to the list of actions executed by the node.
* @access public
* @param {SKAction} action - The action to perform.
* @returns {void}
* @desc The new action is processed the next time the scene’s animation loop is processed.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483093-run
*/
run(action) {
this.runWithKey(action, Symbol())
}
/**
* Adds an action to the list of actions executed by the node.
* @access public
* @param {SKAction} action - The action to perform.
* @param {function(): void} block - A completion block called when the action completes.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1483103-run
*/
runCompletion(action, block) {
this._runActionForKeyCompletionHandler(action, Symbol(), block)
}
/**
* Adds an identifiable action to the list of actions executed by the node.
* @access public
* @param {SKAction} action - The action to perform.
* @param {string} key - A unique key used to identify the action.
* @returns {void}
* @desc This method is identical to run(_:), but the action is stored so that it can be retrieved later. If an action using the same key is already running, it is removed before the new action is added.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483042-run
*/
runWithKey(action, key) {
this._runActionForKeyCompletionHandler(action, key, null)
}
_runActionForKeyCompletionHandler(action, key, block) {
let _key = key
if(typeof key === 'undefined' || key === null){
_key = Symbol()
}
const act = action.copy()
// FIXME: use current frame time
act._actionStartTime = Date.now() * 0.001
act._completionHandler = block
this._actions.set(_key, act)
}
/**
* Returns an action associated with a specific key.
* @access public
* @param {string} key - A string that uniquely identifies an action.
* @returns {?SKAction} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483138-action
*/
actionForKey(key) {
return this._actions.get(key)
}
/**
* Returns a Boolean value that indicates whether the node is executing actions.
* @access public
* @returns {boolean} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483081-hasactions
*/
hasActions() {
return this._actions.size > 0
}
/**
* Ends and removes all actions from the node.
* @access public
* @returns {void}
* @desc When an action is removed from the node, any remaining animation the action would perform is skipped; however, previous changes are not reverted. It is possible that an action may make a final change to the scene when removed; if so, it is documented for the specific action in SKAction.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483030-removeallactions
*/
removeAllActions() {
// TODO: stop actions
this._actions.clear()
}
/**
* Removes an action associated with a specific key.
* @access public
* @param {string} key - A string that uniquely identifies an action.
* @returns {void}
* @desc If an action is found that matches the key, it is removed from the node.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483076-removeaction
*/
removeActionForKey(key) {
// TODO: stop action
this._actions.delete(key)
}
// Converting to and from the Node’s Coordinate System
/**
* Converts a point from the coordinate system of another node in the node tree to the coordinate system of this node.
* @access public
* @param {CGPoint} point - A point in the other node’s coordinate system.
* @param {SKNode} node - Another node in the same node tree as this node.
* @returns {CGPoint} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483058-convert
*/
convertFrom(point, node) {
return null
}
/**
* Converts a point in this node’s coordinate system to the coordinate system of another node in the node tree.
* @access public
* @param {CGPoint} point - A point in this node’s coordinate system.
* @param {SKNode} node - Another node in the same node tree as this node.
* @returns {CGPoint} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483056-convert
*/
convertTo(point, node) {
return null
}
// Determining If a Point Lies in a Node
/**
* Returns a Boolean value that indicates whether a point lies inside the parent’s coordinate system.
* @access public
* @param {CGPoint} p - A CGPoint to test against.
* @returns {boolean} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1483044-contains
*/
contains(p) {
return false
}
/**
* Returns the deepest visible descendant that intersects a point.
* @access public
* @param {CGPoint} p - A point in the node’s coordinate system.
* @returns {SKNode} -
* @desc A point is considered to be in a node if it lies inside the rectangle returned by the calculateAccumulatedFrame() method.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483099-atpoint
*/
atPoint(p) {
return null
}
/**
* Returns an array of all visible descendants that intersect a point.
* @access public
* @param {CGPoint} p - A point in the node’s coordinate system.
* @returns {SKNode[]} -
* @desc A point is considered to be in a node if it lies inside the rectangle returned by the calculateAccumulatedFrame() method.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483072-nodes
*/
nodesAt(p) {
return null
}
// Performing Node Intersections
/**
* Returns a Boolean value that indicates whether this node intersects the specified node.
* @access public
* @param {SKNode} node - Another node in the same node tree.
* @returns {boolean} -
* @desc The two nodes are considered to intersect if their frames intersect. The children of both nodes are ignored in this test.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483140-intersects
*/
intersects(node) {
return false
}
// Creating GameplayKit Obstacles from a Set of Nodes
/**
* Converts each node into an obstacle by transforming its bounds into the scene’s coordinate system.
* @access public
* @param {SKNode[]} nodes - An array of SKNode objects.
* @returns {GKPolygonObstacle[]} -
* @desc Use the array of obstacles to create an obstacle graph (GKObstacleGraph) in GameplayKit. See GameplayKit and GameplayKit Programming Guide.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483132-obstacles
*/
static obstaclesFromNodeBounds(nodes) {
return null
}
/**
* Converts each node into an obstacle by transforming the node’s physics body shape into the scene’s coordinate system.
* @access public
* @param {SKNode[]} nodes - An array of SKNode objects.
* @returns {GKPolygonObstacle[]} -
* @desc Use the array of obstacles to create an obstacle graph (GKObstacleGraph) in GameplayKit. See GameplayKit and GameplayKit Programming Guide.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483085-obstacles
*/
static obstaclesFromNodePhysicsBodies(nodes) {
return null
}
/**
* Converts each node into an obstacle by first transforming the node’s texture into a physics shape and then converting that shape into the scene’s coordinate system.
* @access public
* @param {SKNode[]} sprites - An array of SKNode objects.
* @param {number} accuracy - A floating point value between 0.001 and 1.0, inclusive. Higher values create a more precise (but more complex) representation of the obstacle.
* @returns {GKPolygonObstacle[]} -
* @desc Use the array of obstacles to create an obstacle graph (GKObstacleGraph) in GameplayKit. See GameplayKit and GameplayKit Programming Guide.
* @see https://developer.apple.com/documentation/spritekit/sknode/1483134-obstacles
*/
static obstaclesFromSpriteTextures(sprites, accuracy) {
return null
}
// Instance Methods
/**
*
* @access public
* @param {CGPoint} point -
* @returns {?Object} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1645040-accessibilityhittest
*/
accessibilityHitTest(point) {
return null
}
/**
* Sets an attribute value for an attached shader
* @deprecated
* @access public
* @param {SKAttributeValue} value - An attribute value object containing the scalar or vector value to set in the attached shader.
* @param {string} key - The attribute name.
* @returns {void}
* @see https://developer.apple.com/documentation/spritekit/sknode/1644180-setvalue
*/
setValueForAttribute(value, key) {
this.attributeValues.set(key, value)
}
/**
* The value of a shader attribute.
* @deprecated
* @access public
* @param {string} key - The attribute name.
* @returns {?SKAttributeValue} -
* @see https://developer.apple.com/documentation/spritekit/sknode/1644182-value
*/
valueForAttributeNamed(key) {
return this.attributeValues.get(key)
}
/**
* @type {SKNode}
*/
get _presentation() {
return this.__presentation
}
/**
*
* @access public
* @returns {SKNode} -
*/
copy() {
const node = super.copy()
node._copyValue(this)
return node
}
_copyValue(src) {
this.position = src.position.copy()
this.zPosition = src.zPosition
this._frame = src._frame
this.xScale = src.xScale
this.yScale = src.yScale
this.zRotation = src.zRotation
this.alpha = src.alpha
this.isHidden = src.isHidden
this.isUserInteractionEnabled = src.isUserInteractionEnabled
this.name = src.name
this.speed = src.speed
this.isPaused = src.isPaused
this._actions = new Map(src._actions)
this.physicsBody = src.physicsBody
this.userData = src.userData
this.constraints = src.constraints
this.reachConstraints = src.reachConstraints
this.accessibilityChildren = src.accessibilityChildren
this.accessibilityFrame = src.accessibilityFrame.copy()
this.accessibilityHelp = src.accessibilityHelp
this.accessibilityLabel = src.accessibilityLabel
this.accessibilityParent = src.accessibilityParent
this.accessibilityRole = src.accessibilityRole
this.accessibilityRoleDescription = src.accessibilityRoleDescription
this.accessibilitySubrole = src.accessibilitySubrole
this.attributeValues = new Map(src.attributeValues)
this.isAccessibilityElement = src.isAccessibilityElement
this.isAccessibilityEnabled = src.isAccessibilityEnabled
}
/**
* @access private
* @param {WebGLRenderingContext} gl -
* @returns {void}
*/
_render(gl) {
// nothing to draw
}
_copyTransformToPresentation() {
if(this.__presentation === null){
return
}
const p = this.__presentation
p.position = this.position
p.zPosition = this.zPosition
p.xScale = this.xScale
p.yScale = this.yScale
p.zRotation = this.zRotation
}
_updateWorldTransform() {
let p = null
let pz = 0
if(this._parent === null){
p = new CGPoint(0, 0)
}else{
p = this._parent._worldPosition
pz = this._parent._worldZPosition
}
this._worldPosition = this.position.add(p)
this._worldZPosition = this.zPosition + pz
if(this._presentation){
let pp = null
let ppz = 0
let pxScale = 1
let pyScale = 1
if(this._parent === null){
pp = new CGPoint(0, 0)
}else if(this._parent._presentation === null){
pp = this._parent._worldPosition
ppz = this._parent._worldZPosition
pxScale = this._parent._worldXScale
pyScale = this._parent._worldYScale
}else{
pp = this._parent._presentation._worldPosition
ppz = this._parent._presentation._worldZPosition
pxScale = this._parent._presentation._worldXScale
pyScale = this._parent._presentation._worldYScale
}
//this._presentation._worldPosition = this._presentation.position.add(pp)
this._presentation._worldPosition.x = pp.x + this._presentation.position.x * pxScale
this._presentation._worldPosition.y = pp.y + this._presentation.position.y * pyScale
this._presentation._worldZPosition = this._presentation.zPosition + ppz
this._presentation._worldXScale = this._presentation.xScale * pxScale
this._presentation._worldYScale = this._presentation.yScale * pyScale
}
for(const child of this._children){
child._updateWorldTransform()
}
}
}


Awesome front end web applications developer and technical architect helping to mature, develop, and deliver dynamic and innovative UI/UX applications and experiences for upcoming and existing web applications to align user and business needs and requirements. Able to design and develop modular, extensible solutions utilizing the full stack with a focus on the front end.
With a focus on MV* architecture and frameworks (such as Angular and React), I have broad experience in full project development and am adapt to front end with all technologies, open source or not with comfortable exposure to middle tier and back-end development. I am a self-starter that works well with others but can also work independently with little or no management. I have project management and client management experience. When it comes to hardcore development skills and business soft skills, I mesh them together quite nicely. A firm believer in a proficient build process with scable testing and continuous integration.
Lead and managed development efforts for Microsoft’s Cloud & Enterprise initiative Moneyball and Immerse. In this role I developed, managed, and strategized on a number of portals and apps supporting the training, mentoring, and collaboration of teams throughout C&E and beyond. Tech included React, Angular, Azure, JavaScript, WordPress & Orchard CMS, HTML, Webpack, Web API, Xamarin, and Sass.
Lead development and architecture for a couple of highly scalable, highly modularized platforms. One utilizing Angular and the other utilizing React. Both deeply embedded in testing frameworks such as Karma, Circle CI, Jest utilizing various API’s for authentication, etc. via GraphQL, Apollo, Redux, etc…
Create new branded portal and brochure sites for benefit analysis and management as lead developer using JavaScript, JQuery, Angular, Kendo UI, CSS 3, HTML 5, Node, Bower, and Gulp/Grunt. Architected process including build routines, unit testing, tying into functional business requirements within an agile environment. Manipulating services via restful services using Web API and OWIN. Documented and demonstrated technologies and processes to leverage an environment superior to company’s previous components while working with other business groups within organization. Implemented improved development processes while laterally tying build source to Confluence, Git, and Asana. Supported back end development with Microsoft C# and ASP.net frameworks, and MS SQL databases and procedures.
Working contract individually and through recruiters with many corporate and small business clients, I have applied a wide breadth of technical skills, development knowledge, and experience across the spectrum of online development in the service of building and improving online properties for multiple clients that differ in needs and content. Includes: site and application architecture and infrastructure, backend development as well as UI and front end development and improvements using a wide range of toolsets from the full gamut of technologies.
Navia was in dire need of a more fluid, modern portal to allow its users to access all of the services their plans and accounts provided for them. The dev team with Navia was lean, dated, and with a freshly released branding update, their portals for "Participants", "Employers", and "Brokers" was re-architected maintaining their existing data structure and backend, but then a merge for the middle tier to Web API and all the front completely rebuilt utilizing Angular. The founding ideas behind this conversion was to allow users to easily view and update their account details as well as submit and modify new and existing claims within the system.
The founding ideas behind this conversion was to allow users to easily view and update their account details as well as submit and modify new and existing claims within the system.
In addition to architecting this new portal, we additionally setup a new source system from previous use, implemented straight forward JS unit testing, and a fluid build system using more modern technologies beyond the initial Microsoft stack utilized by the company.
User all up page with custom tiles.
Unique custom tiles based on service type and category.
Users can seemlessly add new claims and know where their accounts stands at all times with dynamic updates.
Claim input pivots based on user interaction in real time.
More uniqie controls for items such as dates, etc.
The idea behind Orion was to allow quick data on titles with a variety of filters and sorting capabilities. This ranged from pivoting based on platform, date range, revenue, etc.
The driving viewing mechanism lived behind a simple graph with nodes whereas users could drill and pivot to get teh data points needed. Each node allowed more in-depth information regarding that pivot point.
Heavy caching allowed for quick refreshes on the fly. Measures taken arrived before the heavy use of SPA idealligies came into play.
Combining multiple business requirements into a single Portal that allowed users easy access to get "Engaged" also allowed to see how they varying groups worked together to achieve engineering excellence throughout the organization Timeframes tight and technology light, this portal scaled rapidly and continues to morph to allow for multiple intgeration points utilizing varying cloud concepts within Azure.
Utilizing React with with custom styled templates assisted in scaling at a rapid pace.
In addition, building and launching this portal allowed mentorship to other developers and users which in turn, guided architecture design principals set in place along the way.
Allowing a unified port to a variety of services in a very responsive format utilizing Bootstrap 4 and more.
Minimalism was the founding principal from a UX perspective.
Living forms adjusted based on user input, identify info, and org level.
Each vertical supported had approved global styling schemes.
Dealing with terabytes of data for allowing complex viewing formats of varying KPI's, this platform required careful implementation of technologies utilizing Node, Express, ES5, etc.
Allowing users to select their data representation was key in allowing a truley unique experience. This relied heavily on the use of JavaScript libraries such as D3.js/p>
Allowing users to scale the number of records immensly with little latency was huge for this platform.
Allowing viewing from many angles was key to users engagment into their own data.
Allowing such a high tuned data set to key in snapshots on the fly.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam urna.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam urna.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam urna.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam urna.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam urna.
Apart from being a developer, I love technology in general and am always learning something new across the spectrum, engaging in some sort of Maker activity, or utilizing technology to passion my other hobbies and passions in life.
Aside from technology, I enjoy a wide variety of passions. From Camaro's and cars to photograhy and travel. Movies and music of all sorts always finds it ways in my head as well. And of course, some activities encourage learning how technology can enhance them.


for DEV (development) :-
gulp
gulp --buildEnv=dev
gulp compile --buildEnv=dev
for PROD (production) :-
gulp --buildEnv=prod
gulp compile --buildEnv=prod
for multiple builds, for different environments
‘gulp compile –buildEnv=[env_id_1,env_id_2,env_id_3,etc..]’
Find below the available env_id’s we are using as of now. Should be comma seperated, if you are compiling it for multiple environments at once.
Available [env_id’s]
- dev,prod,staging,ort,rtb1,rtb2,st1,st2,st3,st4,st5,st6,dev1,dev2,dev3,dev4,dev5,dev6
## Examples :-
- `gulp compile --buildEnv=prod` (will generate 'dist_prod' folder)
- `gulp compile --buildEnv=staging` (will generate 'dist_staging' folder)
- `gulp compile --buildEnv=prod,staging` (will generate 'dist_prod' and 'dist_staging' folder)
- `gulp compile --buildEnv=prod,ort,rtb1,st3` (will generate 'dist_prod','dist_ort','dist_rtb1','dist_st3' folder)
- `gulp compile --buildEnv=prod,ort,rtb1,st3,dev6` (will generate 'dist_prod','dist_ort','dist_rtb1','dist_st3','dist_dev6' folder)
## NOTE :-
please note that, "compile" task will only compile your source files into destination folder, but will not serve the application to the browser.
This task, generally helps you when you wanted to compile/build your application for different environment like 'prod', 'staging', 'ort', 'rtb1', etc......
Examples
//————————————- Gulp Command Ends ————————————-//
| First Header | Second Header |
|---|---|
| Content Cell | Content Cell |
| Content Cell | Content Cell |
Item 1
Item 2
Item 3
Item 1
Item 2
Item 3
Team, please follow the proper naming conventions. It is very important for consistency.
For AngularJS and JS
Svn path of the doc:- (http://dvmk9764.dev.sprint.com:18080/svn/sitedev/trunk/sprint_3.0_dev/docs/code_walkthrough/)
AngularJS Styleguide:- (https://github.com/johnpapa/angular-styleguide)
For CSS
Also, please try to write modular javascript and css.
Means, Break your code into multiple files which clearly identifies the feature and type. Name your files properly.


Manchester United willing to pay €60m for Serie A starlet
by Neelabhra RoyManchester United are reportedly willing to pay €60 million for the signature of Roma’s Nicolo Zaniolo.
The 20-year-old is among the finest talents in Italy at present and has been a key player for the Giallorossi since joining them from Inter Milan. So far, Zaniolo has amassed 11 goals and three assists in 52 appearances across all competitions. This season, the Italian international has netted five while providing an assist against Istanbul Basaksehir in 16 appearances so far.
According to Rome-based newspaper Il Messaggero, Manchester United and PSG both are interested in signing Zaniolo and are willing to offer €60 million for him.
The 20-year-old can play as an attacking midfielder as well as a right-winger although most of his goals have come playing in the latter position. Both Manchester United and PSG shall have landed a big fish if they manage to sign him. However, Zaniolo will most likely find more game time at Old Trafford as the Parisians already have a solid attack.
Manchester United need some bolstering upfront and the 20-year-old could be pretty useful for them.


Harold Finch
Your Total
$88
Credit card number
Expiration date
Month
January
February
March
April
May
June
July
August
September
October
November
December
Year
2018
2019
2020
2021
2022
CVV
3 or 4 digits -
view example


+++ draft = false date = "2010-08-22T14:05:56-03:00" title = "Migrating content (folders) from Plone 3 to Plone 4 via zexp import" tags = ["Plone"] created = "2010-08-22T13:25:10-03:00" modified = "2010-08-22T14:06:27-03:00" permaLink = "http://play.pixelblaster.ro/blog/archive/2010/08/22/migrating-content-folders-from-plone-3-to-plone-4-via-zexp-import" author = "Tiberiu Ichim" aliases = [ "/blog/archive/2010/08/22/migrating-content-folders-from-plone-3-to-plone-4-via-zexp-import" ] +++
I had a need (and a problem) moving some content from a Zope 2.10/ Plone 3.3 instance to a Zope 2.12/Plone 4 instance. The path I have chosen was that of the least resistence, which for me was exporting the folder I was interested as a zexp file from the old instance and importing it in the new Plone instance. According to some members of the #plone IRC channel, this method of getting content from one zope instance to another is not possible, or at least not supported. I supposed that's correct, zexp import works best for moving content between identical zope instances, but, as they say, necessity is the mother of learning.
The issue is that the implementation of folders has changed from Plone 3 to 4 to use BTrees, which greatly improves performance. The problem is that, when viewing imported folders, I got the following traceback:
Traceback (innermost last): * Module ZPublisher.Publish, line 116, in publish * Module ZPublisher.BaseRequest, line 434, in traverse * Module Products.CMFCore.DynamicType, line 150, in __before_publishing_traverse__ * Module Products.CMFDynamicViewFTI.fti, line 215, in queryMethodID * Module Products.CMFDynamicViewFTI.fti, line 182, in defaultView * Module Products.CMFPlone.PloneTool, line 840, in browserDefault * Module Products.CMFPlone.PloneTool, line 708, in getDefaultPage * Module Products.CMFPlone.utils, line 81, in getDefaultPage * Module plone.app.layout.navigation.defaultpage, line 32, in getDefaultPage * Module plone.app.layout.navigation.defaultpage, line 75, in getDefaultPage * Module Products.BTreeFolder2.BTreeFolder2, line 337, in has_key AttributeError: 'NoneType' object has no attribute 'has_key'
The solution was to call @@migrate-btrees on the imported folder, which fixes that folder and makes it conform to the latest implementation.
One final note, the default Plone buildout doesn't have a folder called "import" anywhere in the buildout, so one needs to be created inside the "client home folder", which is the folder of your plone and buildout instance, the one that hosts the bin, parts and var folders.


HAND GESTURE RECOGNITION
OF
RADIOLOGY IMAGES
THROUGH
STERILE BROWSING
HAND GESTURE RECOGNITION
Home
Introduction
Launch


Post 1
Post 2
Post 3
Post 4
Post 5
Post 6
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Category 1
Category 2
Category 3
Category 4
Category 5
Category 6
Drag each item into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options.


Vendor Name:
CBCI TELECOM.COM
Reference Number:
4500273939
Contract Date:
2011-13-12
Description of Work:
Image/video equipment
Contract Period:
2011-13-12 to 2012-13-01
Delivery Date:
2012-13-01
Original Contract Value:
$0.00
Current Contract Value:
$20,587.47
Comments:
Competitively sourced


title = "News" url = "/news/:page?" layout = "main" is_hidden = 0 meta_title = "News" [carousel] id = 1 [posts newsposts] pageNumber = "{{ :page }}" postsPerPage = 5 noPostsMessage = "No posts found" sortOrder = "published_at desc" postPage = "aircraft" [form subscribeform] ==


Company profile - Canadian Company Capabilities
Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
My Generation Inc.
Mailing Address:
2541-2 Windsor StHALIFAX, Nova Scotia
B3K 5C2
Location Address:
2541-2 Windsor StHALIFAX, Nova Scotia
B3K 5C2
Tel.:<PHONE_NUMBER>
Fax:
Company Profile
My Generation works with clients in NS, NL and NB to design on-site energy generation using solar energy technologies. We specialize in solar air heating systems for commercial, industrial, institutional and agricultural applications. My Generation is Atlantic Canada dealer for SolarWall(r) ventilation air heating products. In addition to solar wall heating we also provide solar PV systems engineered to specific residential or commercial building requirements. My Generation is a proud member of CanSIA the Canadian Solar Industries Association, CaGBC the Canadian Green Building Council, and Solar Nova Scotia.
A selection of recent My Generation Atlantic Canada projects include:
Nova Scotia Community College - Waterfront Campus
Dalhousie University - Mona Campbell Academic Building, First LEED Gold University Building in Canada
Dalhousie University, Computer Science Building - Largest SolarDuct PV-T array in Canada, First in Atlantic Canada
Yarmouth High School, Yarmouth, NS
Kings Academy, Kentville, NS
Agriculture Innovation Center, Bible Hill, NS
St. Albans Aquatic Research Facility, St. Alban's, NL
Parkview Academy, Bridgewater, NS
Hubley Fire Station, Halifax, NS
Herring Cove Fire Station, Halifax, NS
Georgefield Maintenance Garage, Municipality of East Hants, NS
Enfield Water Treatment Facility, Enfield, NS
Telile Community Television, Arichat, NS
D'Escousse Community Hall, D'Escousse, NS
Halifax Canada Games Center, Halifax, NS - CanSIA Solar Thermal Project of the Year 2010
Chedabucto School, Guysborough, NS
The Grainery Lofts Apartments, Halifax, NS
Bedford High School,
Bluenose High School, CanSIA Solar Thermal Project of the Year 2011
Membertou School, NS - Largest school solar PV system in Nova Scotia
Yarmouth High School
Canadian Coast Guard College - First SolarWall 2-Stage solar air heating system in Atlantic Canada
Saint John Transit, NB - first LEED Silver Municipal Transit building in Canada
About Solar Air Heating Technology:
NRCAN has identified heating as the single largest energy cost in Canadian buildings. SolarWall solar air heating systems have been able to reduce heating costs by up to 50%. SolarWall perforated plate or transpired plate collectors have been recognized as one of the top 9 energy inventions of the past 200 years, by the ASME, and are part of the museum exhibit at ASME headquarters in New York as well as part of the companion book "Engineering The Everyday and the Extraordinary", available on Amazon.com. https://www.asme.org/products/books/the-everyday-and-the-extraordinary
The Canadian-developed Conserval High Performance SOLARWALL® has been rated by the U.S. Department of Energy within the top 2% of new energy saving technologies and has received many awards and accolades including the following:
ASHRAE Award
Canadian Centre for Mineral & Energy Technology: Technology Award
Popular Science: 100 Best of What's New Award
R&D Magazine: 100 Award
Toronto Construction Association: Innovative Product & Technology Award
Manning Award The Conserval group and representatives span the USA, Canada and Europe with projects as far away as the South Pole.
Awards :
Renewable Energy World 2010 - Best Building Integrated Technology for the SolarWall PV/Thermal project at the John Molson School of Business at Concordia University
Reader's Choice Award from Metal Construction News, USA 2008 - First Place Award for new SolarDuct(R) and SolarDuct PV/Thermal systems
World Green Business Award, UK 2008 - Recognizing the SolarWall(R) technology
Manning Awards: recognizing excellence in Canadian innovation 1995 - $5,000 Innovation Award
Research & Development Magazine : 1994 R&D Top 100 Award for the most significant new product of the year
Popular Science Magazine : The year's 100 greatest achievements in Science & Technology (1994)
United States Department of Energy: SOLARWALL is rated in the top 2% of all energy innovations (1992)
Natural Resources Canada (CANMET): 1994 Technology Transfer Award (only one awarded annually)
Toronto Construction Association: 1994 Innovative Product & Technology Award (only one awarded annually)
American Society of Heating, Refrigeration, & Air Conditioning Engineers, Inc. ASHRAE Regional Technology Award (Oakville Ford Assembly Plant)
National Renewable Energy Laboratory (NREL) : ``Most Efficient Active Solar Heating System ever designed.``. ``With an average daily efficiency of more than 70%.`` ``New designs can achieve up to 80% efficiency.`
Full profile
Full profile
Contact information
Company description
541620 - Environmental Consulting Services
541690 - Other Scientific and Technical Consulting Services
Product / Service / Licensing
The SOLARWALL® system for a typical industrial building or warehouse saves energy four ways: pre-heats make-up air with solar gain; recovers heat radiating from the wall, creating R-50 equivalent insulation; reduces conduction heat loss through the roof and reduces heat loss in exhaust.
Monitoring on both apartments and industrial buildings has shown typical SOLARWALL® temperature increases of 20-25°C over ambient. Due to these SOLARWALL® energy savings, the pay-back for industrial buildings has averaged 2.5 years, and apartments about 4 years.
The SOLARWALL® is metal siding covered with thousands of tiny holes and mounted on the south wall of a building. Unlike glass covered solar panels, the SOLARWALL® looks like regular siding and comes in any dark colour. As the sun shines on the dark colored SOLARWALL®, air at the surface is heated and starts to rise up the surface of the panel. This pre-heated air is drawn through the pin point holes that are closely spaced on the panel. The air is drawn from the back of the panel and is distributed throughout the building by either the existing ventilation system or supplementary fans. A perforated flexible ducting system is used to distribute the air for industrial buildings.
In new facilities, the drying chambers can be designed for solar heating with the entire roof and walls of the chambers and storage and production buildings covered with SOLARWALL® panels. Each square meter of SOLARWALL® panel is roughly equivalent to a 500 watt heater.
Operation: The SOLARWALL® system has been tested by numerous governments and independent testing agencies and the results show average solar efficiencies of over 70%.
The USA and Canadian energy agencies both said that the SOLARWALL® design is the most efficient solar heater available. The solar cladding has numerous openings across its surface to draw in outside air and at the same time, allowing the air to be heated by the sun as it passes over the metal absorber.The special coating is designed to absorb as much solar radiation as possible and functions for years in direct sunlight without maintenance.
Conserval SOLARWALL® cladding that heats fresh air
Years of research and testing has resulted in a totally new
concept in solar heating, the highest solar efficiencies ever
obtained in air heating with no glazing!
The all metal SOLARWALL® is engineered to heat outside air and
can be coupled to most ventilation fans. When used with
Conserval's air distribution system, additional energy is saved
by destratifying the ceiling air.
The SOLARWALL® panel looks like a conventional metal wall and is
available in a choice of dark colors. The porous surface has
tiny openings to allow air to pass through picking up virtually
all the solar heat reaching the metal.
The metal cladding on the wall becomes the heater for outside air
entering the building. Dark metal heats up when exposed to the
sun.
The SOLARWALL® cladding allows this heat to be collected and put
to use. It even collects heat on cloudy days and at night.
Millions of dollars each year are being saved by corporations and
governments around the world with the SOLARWALL® system.
C112-Airfield, Communication and Missile Facilities
C113-Educational Buildings
C114-Hospital Buildings
C115-Industrial Buildings
C116-Residential Buildings
C117-Warehouse Buildings
C118-Research and Development Facilities
C121-Conservation and Development
C215-A&E Production Engineering Services (incl. Design and Control and Building Programming)
C219-Other Architect and Engineering Services
Market profile
Alliances:
- Sales/Marketing
- Technology
Industry sector market interests:
- Agriculture
- Construction
- Consumer Products
- Culture
- Environment
- Fishery
- Forestry
- Manufacturing
- Medical/Biotechnology/Chemical
- Transportation
- Wholesale/Retail
- Aerospace
- Defence
- Automotive
- Food and Beverage Manufacturing
- Furniture and Wood Product
- Pulp and Paper
- Plastics and Rubber Products
- Primary and Fabricated Metal
- Electrical Equipment
- Textile and Clothing
Sector information
Distribution of employees:
Nova Scotia, Newfoundland, New BrunswickSuccess stories:
The largest Solar air heating collector in the world is a SolarWall installed on the Bombardier plant in Quebec. It saves the company over $170,000 annual in energy costs.Testimonial:
Natural Resources Canada has called the SolarWall "the simplest, most efficient and least expensive way to pre-heat outside air..."Third-Party Information Liability Disclaimer
Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.
Contacts
Contact information
Description
Company description
541620 - Environmental Consulting Services
541690 - Other Scientific and Technical Consulting Services
Products, services and licensing
Product / Service / Licensing
The SOLARWALL® system for a typical industrial building or warehouse saves energy four ways: pre-heats make-up air with solar gain; recovers heat radiating from the wall, creating R-50 equivalent insulation; reduces conduction heat loss through the roof and reduces heat loss in exhaust.
Monitoring on both apartments and industrial buildings has shown typical SOLARWALL® temperature increases of 20-25°C over ambient. Due to these SOLARWALL® energy savings, the pay-back for industrial buildings has averaged 2.5 years, and apartments about 4 years.
The SOLARWALL® is metal siding covered with thousands of tiny holes and mounted on the south wall of a building. Unlike glass covered solar panels, the SOLARWALL® looks like regular siding and comes in any dark colour. As the sun shines on the dark colored SOLARWALL®, air at the surface is heated and starts to rise up the surface of the panel. This pre-heated air is drawn through the pin point holes that are closely spaced on the panel. The air is drawn from the back of the panel and is distributed throughout the building by either the existing ventilation system or supplementary fans. A perforated flexible ducting system is used to distribute the air for industrial buildings.
In new facilities, the drying chambers can be designed for solar heating with the entire roof and walls of the chambers and storage and production buildings covered with SOLARWALL® panels. Each square meter of SOLARWALL® panel is roughly equivalent to a 500 watt heater.
Operation: The SOLARWALL® system has been tested by numerous governments and independent testing agencies and the results show average solar efficiencies of over 70%.
The USA and Canadian energy agencies both said that the SOLARWALL® design is the most efficient solar heater available. The solar cladding has numerous openings across its surface to draw in outside air and at the same time, allowing the air to be heated by the sun as it passes over the metal absorber.The special coating is designed to absorb as much solar radiation as possible and functions for years in direct sunlight without maintenance.
Conserval SOLARWALL® cladding that heats fresh air
Years of research and testing has resulted in a totally new
concept in solar heating, the highest solar efficiencies ever
obtained in air heating with no glazing!
The all metal SOLARWALL® is engineered to heat outside air and
can be coupled to most ventilation fans. When used with
Conserval's air distribution system, additional energy is saved
by destratifying the ceiling air.
The SOLARWALL® panel looks like a conventional metal wall and is
available in a choice of dark colors. The porous surface has
tiny openings to allow air to pass through picking up virtually
all the solar heat reaching the metal.
The metal cladding on the wall becomes the heater for outside air
entering the building. Dark metal heats up when exposed to the
sun.
The SOLARWALL® cladding allows this heat to be collected and put
to use. It even collects heat on cloudy days and at night.
Millions of dollars each year are being saved by corporations and
governments around the world with the SOLARWALL® system.
C112-Airfield, Communication and Missile Facilities
C113-Educational Buildings
C114-Hospital Buildings
C115-Industrial Buildings
C116-Residential Buildings
C117-Warehouse Buildings
C118-Research and Development Facilities
C121-Conservation and Development
C215-A&E Production Engineering Services (incl. Design and Control and Building Programming)
C219-Other Architect and Engineering Services
Market
Market profile
Alliances:
- Sales/Marketing
- Technology
Industry sector market interests:
- Agriculture
- Construction
- Consumer Products
- Culture
- Environment
- Fishery
- Forestry
- Manufacturing
- Medical/Biotechnology/Chemical
- Transportation
- Wholesale/Retail
- Aerospace
- Defence
- Automotive
- Food and Beverage Manufacturing
- Furniture and Wood Product
- Pulp and Paper
- Plastics and Rubber Products
- Primary and Fabricated Metal
- Electrical Equipment
- Textile and Clothing


Haolin Liu1,2 Anran Lin1 Xiaoguang Han1,2,* Lei Yang4 Yizhou Yu3,4 Shuguang Cui1,2
1Shenzhen Research Institute of Big Data, CUHK-Shenzhen 2The Future Network of Intelligence Institue, CUHK-Shenzhen 3Deepwise AI Lab 4The University of Hong Kong
Corresponding Email<EMAIL_ADDRESS><EMAIL_ADDRESS>We present a novel task of 3D visual grounding in single-view RGB-D images where the referred objects are often only partially scanned. In contrast to previous works that directly generate object proposals for grounding in the 3D scenes, we propose a bottom-up approach to gradually aggregate information, effectively addressing the challenge posed by the partial scans. Our approach first fuses the language and the visual features at the bottom level to generate a heatmap that coarsely localizes the relevant regions in the RGB-D image. Then our approach adopts an adaptive search based on the heatmap and performs the object-level matching with another visio-linguistic fusion to finally ground the referred object. We evaluate the proposed method by comparing to the state-of-the-art methods on both the RGB-D images extracted from the ScanRefer dataset and our newly collected SUN-Refer dataset. Experiments show that our method outperforms the previous methods by a large margin (by 11.2% and 15.6%<EMAIL_ADDRESS>on both datasets.
SUNREFER dataset is a large-scale dataset of referring expression dedicated for visual language research in RGBD images. It contains 38,495 annotations of referring expression on 7,699 RGBD images. Below is an example from SUNREFER dataset:
@inproceedings{liu2021refer, title={Refer-it-in-RGBD: A Bottom-up Approach for 3D Visual Grounding in RGBD Images}, author={Liu, Haolin and Lin, Anran and Han, Xiaoguang and Yang, Lei and Yu, Yizhou and Cui, Shuguang}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, pages={6032--6041}, year={2021} }


- I am currently a Leverhulme Early Career Fellow at Department of Applied Mathematics and Theoretical Physics University of Cambridge. I am also a member of the group Cambridge Image Analysis.
- I received my Ph.D. from ENSICAEN and University of Caen Normandy advised by Jalal Fadili and Gabriel Peyré. I received my master degree from Shanghai Jiao Tong University under the supervision of Xiaoqun Zhang. Prior to that I obtained my bachlor degree in Electrical & Information Engineering from Nanjing University of Posts and Telecommunications.
Contact
- E-mail: jl993 AT cam.ac.uk
- Office: Pav. F2.04
- Address: DAMTP, Centre for Mathematical Sciences, Wilberforce Road, Cambridge, CB3 0WA, UK
Research interests
- Non-smooth Optimization, Image Processing.
Short bio
- 2019-Now: Leverhulme Early Career Fellow, DAMTP, University of Cambridge.
- 2017-2019: Postdoc research associate, DAMTP, University of Cambridge.
- 2013-2016: Ph.D. in Applied Mathematics, GREYC, ENSICAEN and University of Caen Normandy.
- 2012-2013: Research intern, GREYC, ENSICAEN and University of Caen Normandy.
- 2010-2013: M.S. in Applied Mathematics, School of Mathematics & Institute of Natural Sciences, Shanghai Jiao Tong University.
- 2006-2010: B.S. in Electrical & Information Engineering, School of Telecom. and Information Engineering, Nanjing University of Posts and Telecommunications.


{% extends sitebase.html %} {% from amgut import media_locale %} {% block head %} {% end %} {% block content %}
Open Humans is an exciting project that puts participants in charge of data sharing.
Members of Open Humans can aggregate data from various research studies and activities, and manage how they share this data with others – including other researchers, who might want to recruit them to new studies! What you share will always be your decision.
If you're an Open Humans member you can go to your research data on Open Humans.
{% if access_token %} {% if linked_barcodes or unlinked_barcodes %} {% if linked_barcodes %}You have the following barcodes linked with Open Humans:
You have the following barcodes available to be linked with Open Humans:
Interested in exporting your data to an Open Humans account? Click the button below to begin the process.
{% end %}


‘SIT should unravel conspiracy’
by Special CorrespondentLeader of the Opposition in the Assembly and former Chief Minister Siddaramaiah has suspected the involvement of more than one person in the attack on former Minister and MLA Tanveer Sait.
He told reporters in Mysuru on Monday that this was an organised crime and could not have been perpetuated by an individual on his own. The SIT should unravel the conspiracy behind the attack and bring those involved to justice, he added.
On the speculations of the involvement of political outfits or organisations, Mr. Siddaramaiah said “let the SIT prove their involvement and then one could think of banning them.”
Mr. Siddaramaiah also made a veiled attack on the government and said if an elected representative was insecure and was vulnerable, “then what would be the fate of the commoners.”
Govt. to meet medical cost
The district in-charge Minister V. Somanna said that the State government will not spare any efforts to provide the best treatment for the MLA.
Speaking to reporters after visiting the hospital where Mr. Sait is being treated, he said the government was prepared to airlift Mr. Sait to any other hospital if need be.
Specialist care
The State would bear the full cost of Mr. Sait’s medical expenses, said Mr. Somanna adding that the government would not hesitate to airlift specialists from other cities to Mysuru to treat Mr. Sait if required.
“I have directed the doctors to keep me informed if such a situation arises so that we could respond immediately’’, he added. However, he expressed confidence that it such a scenario would not arise as Mr.Sait was responding to medication.


{% extends "layout.html" %} {% block content %} {% from "forms.html" import settings_form_macro, website_form_macro %}


| PostgreSQL 9.0.10 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Chapter 25. High Availability, Load Balancing, and Replication | Next |
An alternative to the built-in standby mode described in the previous sections is to use a restore_command that polls the archive location. This was the only option available in versions 8.4 and below. In this setup, set standby_mode off, because you are implementing the polling required for standby operation yourself. See contrib/pg_standby (Section F.28) for a reference implementation of this.
Note that in this mode, the server will apply WAL one file at a time, so if you use the standby server for queries (see Hot Standby), there is a delay between an action in the master and when the action becomes visible in the standby, corresponding the time it takes to fill up the WAL file. archive_timeout can be used to make that delay shorter. Also note that you can't combine streaming replication with this method.
The operations that occur on both primary and standby servers are normal continuous archiving and recovery tasks. The only point of contact between the two database servers is the archive of WAL files that both share: primary writing to the archive, standby reading from the archive. Care must be taken to ensure that WAL archives from separate primary servers do not become mixed together or confused. The archive need not be large if it is only required for standby operation.
The magic that makes the two loosely coupled servers work together is simply a restore_command used on the standby that, when asked for the next WAL file, waits for it to become available from the primary. The restore_command is specified in the recovery.conf file on the standby server. Normal recovery processing would request a file from the WAL archive, reporting failure if the file was unavailable. For standby processing it is normal for the next WAL file to be unavailable, so the standby must wait for it to appear. For files ending in .backup or .history there is no need to wait, and a non-zero return code must be returned. A waiting restore_command can be written as a custom script that loops after polling for the existence of the next WAL file. There must also be some way to trigger failover, which should interrupt the restore_command, break the loop and return a file-not-found error to the standby server. This ends recovery and the standby will then come up as a normal server.
Pseudocode for a suitable restore_command is:
triggered = false; while (!NextWALFileReady() && !triggered) { sleep(100000L); /* wait for ~0.1 sec */ if (CheckForExternalTrigger()) triggered = true; } if (!triggered) CopyWALFileForRecovery();
A working example of a waiting restore_command is provided as a contrib module named pg_standby. It should be used as a reference on how to correctly implement the logic described above. It can also be extended as needed to support specific configurations and environments.
The method for triggering failover is an important part of planning and design. One potential option is the restore_command command. It is executed once for each WAL file, but the process running the restore_command is created and dies for each file, so there is no daemon or server process, and signals or a signal handler cannot be used. Therefore, the restore_command is not suitable to trigger failover. It is possible to use a simple timeout facility, especially if used in conjunction with a known archive_timeout setting on the primary. However, this is somewhat error prone since a network problem or busy primary server might be sufficient to initiate failover. A notification mechanism such as the explicit creation of a trigger file is ideal, if this can be arranged.
The short procedure for configuring a standby server using this alternative method is as follows. For full details of each step, refer to previous sections as noted.
Set up primary and standby systems as nearly identical as possible, including two identical copies of PostgreSQL at the same release level.
Set up continuous archiving from the primary to a WAL archive directory on the standby server. Ensure that archive_mode, archive_command and archive_timeout are set appropriately on the primary (see Section 24.3.1).
Make a base backup of the primary server (see Section 24.3.2), and load this data onto the standby.
Begin recovery on the standby server from the local WAL archive, using a recovery.conf that specifies a restore_command that waits as described previously (see Section 24.3.3).
Recovery treats the WAL archive as read-only, so once a WAL file has been copied to the standby system it can be copied to tape at the same time as it is being read by the standby database server. Thus, running a standby server for high availability can be performed at the same time as files are stored for longer term disaster recovery purposes.
For testing purposes, it is possible to run both primary and standby servers on the same system. This does not provide any worthwhile improvement in server robustness, nor would it be described as HA.
It is also possible to implement record-based log shipping using this alternative method, though this requires custom development, and changes will still only become visible to hot standby queries after a full WAL file has been shipped.
An external program can call the pg_xlogfile_name_offset()
function (see Section 9.24)
to find out the file name and the exact byte offset within it of
the current end of WAL. It can then access the WAL file directly
and copy the data from the last known end of WAL through the current end
over to the standby servers. With this approach, the window for data
loss is the polling cycle time of the copying program, which can be very
small, and there is no wasted bandwidth from forcing partially-used
segment files to be archived. Note that the standby servers'
restore_command scripts can only deal with whole WAL files,
so the incrementally copied data is not ordinarily made available to
the standby servers. It is of use only when the primary dies —
then the last partial WAL file is fed to the standby before allowing
it to come up. The correct implementation of this process requires
cooperation of the restore_command script with the data
copying program.
Starting with PostgreSQL version 9.0, you can use streaming replication (see Section 25.2.5) to achieve the same benefits with less effort.


{% extends "includes/base.html" %}
{% block body %}
{% if orderBy == '-num_pledges' %}
By raised amount
{% else %}
By raised amount
{% endif %}
{% if orderBy == '-totalCents' %}
By number of contributions
{% else %}
By number of contributions
{% endif %}


TABLE OF INTERACTIONS WITH
MEFLOQUINE
See also: bradycardia inducing drugs
See also: medications that lower the epileptic threshold
From the French ANSM drug interactions document of September 2016, p. 149
MEFLOQUINE RxNorm: 6694 ATC: P01BF02 P01BC02 |
QUININE RxNorm: 9071 ATC: P01BC01 |
For the quinine administered by IV route: increased risk of onset of epileptic crises due to addition of the convulsion producing effects |
Not recommended Wait at least 12 hours between the end of the administration via IV of the quinine and the beginning of the administration of the mefloquine. |


This API provides a framework for building Distributed Annotation Service data sources.
Please see the documentation of the {@link uk.ac.ebi.mydas.datasource} package for details of how to get started.


Rescued by Pebble Settings
v3
RescueTime API key:
Inverted colors (white on black):
Off
On
Cancel
Save


BOOKS: ‘The Face’ speaks of culture, identity and relationships
by KARI MUTUIn Summary
- At just under 100 pages, the book seems to end when you have hardly begun. Using the study of his face as a kind of living map, Abani opens up about his childhood, culture, identity and a troubled relationship with his father.
Nigerian-American author Chris Abani presents a different style of memoir in his book The Face: Cartography of the Void.
At just under 100 pages, the book seems to end when you have hardly begun. Using the study of his face as a kind of living map, Abani opens up about his childhood, culture, identity and a troubled relationship with his father.
Abani was born and raised in Nigeria, the fourth-born son of an Igbo father and British mother. His father was a violent man and an unfaithful husband, yet an upstanding citizen.
At the beginning of the book, Abani hints at its purpose, writing that this is a “way to honour love and truth without something getting lost in the translation”. It is not a chronological account, and the storyline moves between the present, past and historical events in a disorienting way.
The Face looks at the face value of identity. Being mixed race, Abani struggled with being viewed as different both in Nigeria and abroad.
At home he was mistaken for a foreigner and subjected to badmouthing by strangers. Being darker, chubby and kinky-haired he was often compared to his skinny, fair, straight-haired brother.
Also Read
-
Hounded writers tell of their woes
-
WHAT’S ON: One year on, Marafiki Night Live thrives
-
GALLERIES: When drawing is just the beginning
Advertisement
The study of the face is also an exploration of family lineage, especially of the Igbo culture of his father, and what traditionally defines a son, a man and status in society.
He makes comparisons with Western descriptions of the human being, such as the one-sided ideal of beauty versus the “complex concept in West Africa”.
The Face broadens our definition of identity, partly through reflections of Nigerian traditions that see the spirit and mind as equally important parts of an individual as their face.
Abani quoted a friend when he said, “the cause of all our trouble is the belief in an essential, pure identity: religious, ethnic, historical, and ideological”. He himself is multi-talented, being a novelist, poet, screenwriter, photographer and musician.
I found the the paternal recollections most heart-breaking, with the ghost of Abani senior hanging heavy throughout the book.
His father, whom he closely resembled, called him a disappointment and tried to beat the artistic leanings out of him. It was a love-hate relationship. Only separation, time and his father’s death brought some measure of reconciliation.


---
layout: default
---
A human being is part of the whole, called by us 'Universe'; a part limited in time and space. He experiences himself,
his thoughts and feelings as something separated from the rest -- a kind of optical delusion of his consciousness.
This delusion is a kind of prison for us, restricting us to our personal desires and affection for a few persons nearest us.
Our task must be to free ourselves from this prison by widening our circle of compassion to embrace all living creatures and the whole of nature in its beauty.
Nobody is able to achieve this completely but striving for such achievement is, in itself, a part of the liberation and a foundation for inner security.
- Witten by Albert Einstein (1879 - 1955) Physicist & Nobel Laureate -


Mrs Urvashi Dave is a renowned beautician in Ahmadabad. She made her debut in ‘Beauty Care’ in 1988. She set up her own Beauty Parlour in 1989 – 90. She has been working in this field successfully for almost 18 years.
She has been imparting training to the blind and handicapped girls of ‘Apang Manav Mandal’ and ‘Andh Kanya Prakash Gruh’ for the last 3 to 4 years. She holds various competitions, viz. ‘Bridal Make-up’, ‘Mehandi’, etc., to motivate these disabled girls, and boosts up their spirits by giving away encouraging awards to them.
Mrs Dave has written many articles on ‘Beauty Care’. Her articles frequently appear in the leading newspapers and magazines like ‘Gujarat Samachar’, ‘Sandesh’, ‘Divya Bhaskar’, ‘Stree’, ‘Gruhshobha’, ‘Jaihind’, ‘Beautyline’, etc.. Her programmes on ‘Bridal Make-up’ have been telecast by ETV, Doordarshan and Zee News. She has offered her services as ‘judge’ in a number of beauty competitions in Mumbai and in Ahmadabad.
"She has made many girls self-dependent by imparting the training of ‘Beauty Parlour’


Home
Our Team
Projects
Contact Us
Menu
Close
AVANT GARDE
CONSTRUCTION
<EMAIL_ADDRESS><EMAIL_ADDRESS>+254 701 862 694
Whether you're rethinking your office space, reinventing condo living or upping the ante on your bricks and mortar retail, we'd love to help. Drop us a line.
My name is
And i work for
Email Address
comments