The main glue of the egg hierarchy, this corresponds to the <Group>, <Instance>, and <Joint> type nodes.
 More...
|
| |
| | addObjectType (str object_type) |
| |
| | clearBillboardCenter () |
| |
| | clearBlendColor () |
| | Removes the blend color specification. More...
|
| |
| | clearCollideMask () |
| |
| | clearCollisionName () |
| |
| | clearDefaultPose () |
| | Removes the initial pose transform. More...
|
| |
| | clearFromCollideMask () |
| |
| | clearGroupRefs () |
| | Removes all of the <Ref> entries within this group. More...
|
| |
| | clearIndexedFlag () |
| |
| | clearIntoCollideMask () |
| |
| | clearLod () |
| |
| | clearObjectTypes () |
| |
| | clearTag (str key) |
| | Removes the value defined for this key on this particular node. More...
|
| |
| EggRenderMode | determineAlphaMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has an alpha_mode other than AM_unspecified. More...
|
| |
| EggRenderMode | determineBin () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a bin specified. More...
|
| |
| bool | determineDecal () |
| | Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "decal" flag set. More...
|
| |
| EggRenderMode | determineDepthOffset () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a depth_offset specified. More...
|
| |
| EggRenderMode | determineDepthTestMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a depth_test_mode other than DTM_unspecified. More...
|
| |
| EggRenderMode | determineDepthWriteMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a depth_write_mode other than DWM_unspecified. More...
|
| |
| EggRenderMode | determineDrawOrder () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a draw_order specified. More...
|
| |
| bool | determineIndexed () |
| | Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "indexed" scalar set. More...
|
| |
| EggRenderMode | determineVisibilityMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this group that has a visibility_mode other than VM_unspecified. More...
|
| |
| const LPoint3d | getBillboardCenter () |
| |
| EggGroup::BillboardType | getBillboardType () |
| |
| const LColor | getBlendColor () |
| | Returns the blend color if one has been specified, or (0, 0, 0, 0) if one has not. More...
|
| |
| EggGroup::BlendMode | getBlendMode () |
| |
| EggGroup::BlendOperand | getBlendOperandA () |
| |
| EggGroup::BlendOperand | getBlendOperandB () |
| |
| EggGroup::CollideFlags | getCollideFlags () |
| |
| CollideMask | getCollideMask () |
| |
| str | getCollisionName () |
| |
| EggGroup::CollisionSolidType | getCsType () |
| |
| EggGroup::DartType | getDartType () |
| |
| EggGroup::DCSType | getDcsType () |
| |
| bool | getDecalFlag () |
| |
| const EggTransform | getDefaultPose () |
| | Returns a read-only accessor to the initial pose transform. More...
|
| |
| bool | getDirectFlag () |
| |
| CollideMask | getFromCollideMask () |
| |
| EggGroup | getGroupRef (int n) |
| | Returns the nth <Ref> entry within this group. More...
|
| |
| list | getGroupRefs () |
| |
| EggGroup::GroupType | getGroupType () |
| |
| bool | getIndexedFlag () |
| |
| CollideMask | getIntoCollideMask () |
| |
| const EggSwitchCondition | getLod () |
| |
| bool | getModelFlag () |
| |
| bool | getNofogFlag () |
| |
| int | getNumGroupRefs () |
| | Returns the number of <Ref> entries within this group. More...
|
| |
| int | getNumObjectTypes () |
| |
| str | getObjectType (int index) |
| |
| list | getObjectTypes () |
| |
| bool | getOccluderFlag () |
| |
| bool | getPolylightFlag () |
| |
| bool | getPortalFlag () |
| |
| double | getScrollR () |
| |
| double | getScrollU () |
| |
| double | getScrollV () |
| |
| double | getScrollW () |
| |
| bool | getSwitchFlag () |
| |
| double | getSwitchFps () |
| |
| str | getTag (str key) |
| | Retrieves the user-defined value that was previously set on this node for the particular key, if any. More...
|
| |
| bool | getTexlistFlag () |
| |
| double | getVertexMembership (const EggVertex vert) |
| | Returns the amount of membership of the indicated vertex in this group. More...
|
| |
| bool | hasBillboardCenter () |
| |
| bool | hasBlendColor () |
| | Returns true if the blend color has been specified, false otherwise. More...
|
| |
| bool | hasCollideMask () |
| |
| bool | hasCollisionName () |
| |
| bool | hasDcsType () |
| | Returns true if the specified DCS type is not DC_none and not DC_unspecified. More...
|
| |
| bool | hasFromCollideMask () |
| |
| bool | hasIndexedFlag () |
| |
| bool | hasIntoCollideMask () |
| |
| bool | hasLod () |
| |
| bool | hasObjectType (str object_type) |
| | Returns true if the indicated object type has been added to the group, or false otherwise. More...
|
| |
| bool | hasScrollingUvs () |
| |
| bool | hasTag (str key) |
| | Returns true if a value has been defined on this node for the particular key (even if that value is the empty string), or false if no value has been set. More...
|
| |
| bool | isInstanceType () |
| | Returns true if this group is an instance type node; i.e. More...
|
| |
| bool | isJoint () |
| | Returns true if this particular node represents a <Joint> entry or not. More...
|
| |
| EggTransform | modifyDefaultPose () |
| | Returns a writable accessor to the initial pose transform. More...
|
| |
| EggGroup | operator= (const EggGroup copy) |
| |
| | refVertex (EggVertex vert, double membership) |
| | Adds the vertex to the set of those referenced by the group, at the indicated membership level. More...
|
| |
| | removeGroupRef (int n) |
| | Removes the nth <Ref> entry within this group. More...
|
| |
| bool | removeObjectType (str object_type) |
| | Removes the first instance of the indicated object type from the group if it is present. More...
|
| |
| | setBillboardCenter (const LPoint3d billboard_center) |
| | Sets the point around which the billboard will rotate, if this node contains a billboard specification.  More...
|
| |
| | setDirectFlag (bool flag) |
| |
| | setFromCollideMask (CollideMask mask) |
| |
| | setGroupType (EggGroup::GroupType type) |
| |
| | setIndexedFlag (bool flag) |
| | If this flag is true, geometry at this node and below will be generated as indexed geometry.  More...
|
| |
| | stealVrefs (EggGroup other) |
| | Moves all of the vertex references from the indicated other group into this one. More...
|
| |
| | testVrefIntegrity () |
| |
| | unrefAllVertices () |
| | Removes all vertices from the reference list. More...
|
| |
| | unrefVertex (EggVertex vert) |
| | Removes the vertex from the set of those referenced by the group. More...
|
| |
| | write (Ostream out, int indent_level) |
| | Writes the group and all of its children to the indicated output stream in Egg format. More...
|
| |
| | writeBillboardFlags (Ostream out, int indent_level) |
| | Writes just the <Billboard> entry and related fields to the indicated ostream. More...
|
| |
| | writeCollideFlags (Ostream out, int indent_level) |
| | Writes just the <Collide> entry and related fields to the indicated ostream. More...
|
| |
| | writeDecalFlags (Ostream out, int indent_level) |
| | Writes the flags related to decaling, if any. More...
|
| |
| | writeModelFlags (Ostream out, int indent_level) |
| | Writes the <Model> flag and related flags to the indicated ostream. More...
|
| |
| | writeObjectTypes (Ostream out, int indent_level) |
| | Writes just the <ObjectTypes> entries, if any, to the indicated ostream. More...
|
| |
| | writeRenderMode (Ostream out, int indent_level) |
| | Writes the flags inherited from EggRenderMode and similar flags that control obscure render effects. More...
|
| |
| | writeSwitchFlags (Ostream out, int indent_level) |
| | Writes the <Switch> flag and related flags to the indicated ostream. More...
|
| |
| | writeTags (Ostream out, int indent_level) |
| | Writes just the <Tag> entries, if any, to the indicated ostream. More...
|
| |
| Public Member Functions inherited from EggGroupNode |
| | __init__ (const EggGroupNode copy) |
| |
| | __init__ (str name) |
| |
| EggNode | addChild (EggNode node) |
| | Adds the indicated child to the group and returns it. More...
|
| |
| | applyFirstAttribute (bool recurse) |
| | Sets the first vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded. More...
|
| |
| | applyLastAttribute (bool recurse) |
| | Sets the last vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded. More...
|
| |
| | clear () |
| |
| | clearConnectedShading () |
| | Resets the connected_shading information on all primitives at this node and below, so that it may be accurately rederived by the next call to get_connected_shading(). More...
|
| |
| bool | empty () |
| |
| EggNode | findChild (str name) |
| | Returns the child of this node whose name is the indicated string, or NULL if there is no child of this node by that name. More...
|
| |
| | forceFilenames (const Filename directory) |
| | Similar to resolve_filenames, but each non-absolute filename encountered is arbitrarily taken to be in the indicated directory, whether or not the so- named filename exists. More...
|
| |
| object | getChildren () |
| |
| | getConnectedShading () |
| | Queries the connected_shading information on all primitives at this node and below, to ensure that it has been completely filled in before we start mucking around with vertices. More...
|
| |
| EggNode | getFirstChild () |
| | Returns the first child in the group's list of children, or NULL if the list of children is empty. More...
|
| |
| EggNode | getNextChild () |
| | Returns the next child in the group's list of children since the last call to get_first_child() or get_next_child(), or NULL if the last child has been returned. More...
|
| |
| bool | hasAbsolutePathnames () |
| | Returns true if any nodes at this level and below include a reference to a file via an absolute pathname, or false if all references are relative. More...
|
| |
| bool | hasNormals () |
| | Returns true if any of the primitives (e.g. More...
|
| |
| bool | hasPrimitives () |
| | Returns true if there are any primitives (e.g. More...
|
| |
| bool | jointHasPrimitives () |
| | Returns true if there are any primitives (e.g. More...
|
| |
| | makePointPrimitives () |
| | Creates PointLight primitives to reference any otherwise unreferences vertices discovered in this group or below. More...
|
| |
| | meshTriangles (int flags) |
| | Combine triangles together into triangle strips, at this group and below. More...
|
| |
| EggGroupNode | operator= (const EggGroupNode copy) |
| |
| | postApplyFlatAttribute (bool recurse) |
| | Intended as a followup to apply_last_attribute(), this also sets an attribute on the first vertices of the primitive, if they don't already have an attribute set, just so they end up with something. More...
|
| |
| | recomputePolygonNormals (CoordinateSystem cs) |
| | Recomputes all the polygon normals for polygon geometry at this group node and below so that they accurately reflect the vertex positions. More...
|
| |
| bool | recomputeTangentBinormal (const GlobPattern uv_name) |
| | This function recomputes the tangent and binormal for the named texture coordinate set for all vertices at this level and below. More...
|
| |
| bool | recomputeTangentBinormal (const VectorString names) |
| | This function recomputes the tangent and binormal for the named texture coordinate sets. More...
|
| |
| bool | recomputeTangentBinormalAuto () |
| | This function recomputes the tangent and binormal for any texture coordinate set that affects a normal map. More...
|
| |
| | recomputeVertexNormals (double threshold, CoordinateSystem cs) |
| | Recomputes all the vertex normals for polygon geometry at this group node and below so that they accurately reflect the vertex positions. More...
|
| |
| EggNode | removeChild (EggNode node) |
| | Removes the indicated child node from the group and returns it. More...
|
| |
| int | removeInvalidPrimitives (bool recurse) |
| | Removes primitives at this level and below which appear to be degenerate; e.g. More...
|
| |
| int | removeUnusedVertices (bool recurse) |
| | Removes all vertices from VertexPools within this group or below that are not referenced by at least one primitive. More...
|
| |
| int | renameNodes (VectorString strip_prefix, bool recurse) |
| | Rename by stripping out the prefix. More...
|
| |
| | resolveFilenames (const DSearchPath searchpath) |
| | Walks the tree and attempts to resolve any filenames encountered. More...
|
| |
| | reverseVertexOrdering () |
| | Reverses the vertex ordering of all polygons defined at this node and below. More...
|
| |
| EggGroupNode::SizeType | size () |
| |
| | stealChildren (EggGroupNode other) |
| | Moves all the children from the other node to this one. More...
|
| |
| | stripNormals () |
| | Removes all normals from primitives, and the vertices they reference, at this node and below. More...
|
| |
| int | triangulatePolygons (int flags) |
| | Replace all higher-order polygons at this point in the scene graph and below with triangles. More...
|
| |
| | unifyAttributes (bool use_connected_shading, bool allow_per_primitive, bool recurse) |
| | Applies per-vertex normal and color to all vertices, if they are in fact per-vertex (and different for each vertex), or moves them to the primitive if they are all the same. More...
|
| |
| Public Member Functions inherited from EggNode |
| | applyTexmats () |
| | Applies the texture matrices to the UV's of the vertices that reference them, and then removes the texture matrices from the textures themselves. More...
|
| |
| EggRenderMode | determineAlphaMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has an alpha_mode other than AM_unspecified. More...
|
| |
| EggRenderMode | determineBin () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a bin specified. More...
|
| |
| bool | determineDecal () |
| | Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "decal" flag set. More...
|
| |
| EggRenderMode | determineDepthOffset () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_offset specified. More...
|
| |
| EggRenderMode | determineDepthTestMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_test_mode other than DTM_unspecified. More...
|
| |
| EggRenderMode | determineDepthWriteMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_write_mode other than DWM_unspecified. More...
|
| |
| EggRenderMode | determineDrawOrder () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a draw_order specified. More...
|
| |
| bool | determineIndexed () |
| | Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "indexed" scalar set. More...
|
| |
| EggRenderMode | determineVisibilityMode () |
| | Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a visibility_mode other than VM_unspecified. More...
|
| |
| | flattenTransforms () |
| | Removes any transform and instance records from this node in the scene graph and below. More...
|
| |
| int | getDepth () |
| | Returns the number of nodes above this node in the egg hierarchy. More...
|
| |
| const LMatrix4d | getNodeFrame () |
| | Returns the coordinate frame of the node itself. More...
|
| |
| const LMatrix4d | getNodeFrameInv () |
| | Returns the inverse of the matrix returned by get_node_frame(). More...
|
| |
| const LMatrix4d | getNodeFrameInvPtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_frame_inv() matrix. More...
|
| |
| const LMatrix4d | getNodeFramePtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_frame() matrix. More...
|
| |
| const LMatrix4d | getNodeToVertex () |
| | Returns the transformation matrix suitable for converting vertices in the coordinate space of the node to the appropriate coordinate space for storing in the egg file. More...
|
| |
| const LMatrix4d | getNodeToVertexPtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_to_vertex() matrix. More...
|
| |
| EggGroupNode | getParent () |
| |
| const LMatrix4d | getVertexFrame () |
| | Returns the coordinate frame of the vertices referenced by primitives at or under this node. More...
|
| |
| const LMatrix4d | getVertexFrameInv () |
| | Returns the inverse of the matrix returned by get_vertex_frame(). More...
|
| |
| const LMatrix4d | getVertexFrameInvPtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_frame_inv() matrix. More...
|
| |
| const LMatrix4d | getVertexFramePtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_frame() matrix. More...
|
| |
| const LMatrix4d | getVertexToNode () |
| | Returns the transformation matrix suitable for converting the vertices as read from the egg file into the coordinate space of the node. More...
|
| |
| const LMatrix4d | getVertexToNodePtr () |
| | Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_to_node() matrix. More...
|
| |
| bool | isAnimMatrix () |
| | Returns true if this node represents a table of animation transformation data, false otherwise. More...
|
| |
| bool | isJoint () |
| | Returns true if this particular node represents a <Joint> entry or not. More...
|
| |
| bool | isLocalCoord () |
| | Returns true if this node's vertices are not in the global coordinate space. More...
|
| |
| bool | isUnderInstance () |
| | Returns true if there is an <Instance> node somewhere in the egg tree at or above this node, false otherwise. More...
|
| |
| bool | isUnderTransform () |
| | Returns true if there is a <Transform> entry somewhere in the egg tree at or above this node, false otherwise. More...
|
| |
| EggNode | operator= (const EggNode copy) |
| |
| bool | parseEgg (str egg_syntax) |
| | Parses the egg syntax given in the indicate string as if it had been read from the egg file within this object's definition. More...
|
| |
| int | renameNode (VectorString strip_prefix) |
| | Rename by stripping out the prefix. More...
|
| |
| | testUnderIntegrity () |
| |
| | transform (const LMatrix4d mat) |
| | Applies the indicated transformation to the node and all of its descendants. More...
|
| |
| | transformVerticesOnly (const LMatrix4d mat) |
| | Applies the indicated transformation only to vertices that appear in global space within vertex pools at this node and below.  More...
|
| |
| EggUserData | getUserData (TypeHandle type) |
| | Returns the user data pointer of the indicated type, if it exists, or NULL if it does not. More...
|
| |
| bool | hasUserData () |
| | Returns true if a generic user data pointer has recently been set and not yet cleared, false otherwise. More...
|
| |
| bool | hasUserData (TypeHandle type) |
| | Returns true if the user data pointer of the indicated type has been set, false otherwise. More...
|
| |
| EggObject | operator= (const EggObject copy) |
| |
| | setUserData (EggUserData user_data) |
| | Sets the user data associated with this object. More...
|
| |
| Public Member Functions inherited from TypedObject |
| TypeHandle | getType () |
| |
| int | getTypeIndex () |
| | Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
|
| |
| bool | isExactType (TypeHandle handle) |
| | Returns true if the current object is the indicated type exactly. More...
|
| |
| bool | isOfType (TypeHandle handle) |
| | Returns true if the current object is or derives from the indicated type. More...
|
| |
| Public Member Functions inherited from ReferenceCount |
| int | getRefCount () |
| | Returns the current reference count. More...
|
| |
| | ref () |
| | Explicitly increments the reference count. More...
|
| |
| bool | testRefCountIntegrity () |
| | Does some easy checks to make sure that the reference count isn't completely bogus. More...
|
| |
| bool | testRefCountNonzero () |
| | Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
|
| |
| bool | unref () |
| | Explicitly decrements the reference count. More...
|
| |
| Public Member Functions inherited from Namable |
| | __init__ (const Namable) |
| |
| | __init__ (str initial_name) |
| |
| | clearName () |
| | Resets the Namable's name to empty. More...
|
| |
| str | getName () |
| |
| bool | hasName () |
| | Returns true if the Namable has a nonempty name set, false if the name is empty. More...
|
| |
| | output (Ostream out) |
| | Outputs the Namable. More...
|
| |
| | setName (str name) |
| |
| Public Member Functions inherited from EggRenderMode |
| | __init__ () |
| |
| | __init__ (const EggRenderMode copy) |
| |
| | clearBin () |
| | Removes the bin name that was set for this particular object. More...
|
| |
| | clearDepthOffset () |
| | Removes the depth-offset flag from this particular object. More...
|
| |
| | clearDrawOrder () |
| | Removes the draw-order flag from this particular object. More...
|
| |
| EggRenderMode::AlphaMode | getAlphaMode () |
| | Returns the alpha mode that was set, or AM_unspecified if nothing was set. More...
|
| |
| str | getBin () |
| | Returns the bin name that has been set for this particular object, if any. More...
|
| |
| int | getDepthOffset () |
| | Returns the "depth-offset" flag as set for this particular object. More...
|
| |
| EggRenderMode::DepthTestMode | getDepthTestMode () |
| | Returns the depth_test mode that was set, or DTM_unspecified if nothing was set. More...
|
| |
| EggRenderMode::DepthWriteMode | getDepthWriteMode () |
| | Returns the depth_write mode that was set, or DWM_unspecified if nothing was set. More...
|
| |
| int | getDrawOrder () |
| | Returns the "draw-order" flag as set for this particular object. More...
|
| |
| EggRenderMode::VisibilityMode | getVisibilityMode () |
| | Returns the visibility mode that was set, or VM_unspecified if nothing was set. More...
|
| |
| bool | hasBin () |
| | Returns true if a bin name has been set for this particular object. More...
|
| |
| bool | hasDepthOffset () |
| | Returns true if the depth-offset flag has been set for this particular object. More...
|
| |
| bool | hasDrawOrder () |
| | Returns true if the draw-order flag has been set for this particular object. More...
|
| |
| bool | operator!= (const EggRenderMode other) |
| |
| bool | operator< (const EggRenderMode other) |
| |
| EggRenderMode | operator= (const EggRenderMode copy) |
| |
| bool | operator== (const EggRenderMode other) |
| |
| | setAlphaMode (EggRenderMode::AlphaMode mode) |
| | Specifies precisely how the transparency for this geometry should be achieved, or if it should be used. More...
|
| |
| | setBin (str bin) |
| | Sets the "bin" string for this particular object. More...
|
| |
| | setDepthOffset (int bias) |
| | Sets the "depth-offset" flag associated with this object.  More...
|
| |
| | setDepthWriteMode (EggRenderMode::DepthWriteMode mode) |
| | Specifies whether writes should be made to the depth buffer (assuming the rendering backend provides a depth buffer) when rendering this geometry. More...
|
| |
| | setDrawOrder (int order) |
| | Sets the "draw-order" flag associated with this object. More...
|
| |
| | setVisibilityMode (EggRenderMode::VisibilityMode mode) |
| | Specifies whether this geometry is to be considered normally visible, or hidden. More...
|
| |
| | write (Ostream out, int indent_level) |
| | Writes the attributes to the indicated output stream in Egg format. More...
|
| |
| Public Member Functions inherited from EggTransform |
| | __init__ () |
| |
| | __init__ (const EggTransform copy) |
| |
| | addMatrix3 (const LMatrix3d mat) |
| | Appends an arbitrary 3x3 matrix to the current transform. More...
|
| |
| | addMatrix4 (const LMatrix4d mat) |
| | Appends an arbitrary 4x4 matrix to the current transform. More...
|
| |
| | addRotate2d (double angle) |
| | Appends a 2-d rotation to the current transform. More...
|
| |
| | addRotate3d (const LQuaterniond quat) |
| | Appends an arbitrary 3-d rotation to the current transform, expressed as a quaternion. More...
|
| |
| | addRotate3d (double angle, const LVector3d axis) |
| | Appends a 3-d rotation about an arbitrary axis to the current transform. More...
|
| |
| | addRotx (double angle) |
| | Appends a rotation about the X axis to the current transform. More...
|
| |
| | addRoty (double angle) |
| | Appends a rotation about the Y axis to the current transform. More...
|
| |
| | addRotz (double angle) |
| | Appends a rotation about the Z axis to the current transform. More...
|
| |
| | addScale2d (const LVecBase2d scale) |
| | Appends a possibly non-uniform scale to the current transform. More...
|
| |
| | addScale3d (const LVecBase3d scale) |
| | Appends a possibly non-uniform scale to the current transform. More...
|
| |
| | addTranslate2d (const LVector2d translate) |
| | Appends a 2-d translation operation to the current transform. More...
|
| |
| | addTranslate3d (const LVector3d translate) |
| | Appends a 3-d translation operation to the current transform. More...
|
| |
| | addUniformScale (double scale) |
| | Appends a uniform scale to the current transform. More...
|
| |
| | clearTransform () |
| | Resets the transform to empty, identity. More...
|
| |
| const LMatrix3d | getComponentMat3 (int n) |
| | Returns the 3x3 matrix associated with the nth component. More...
|
| |
| const LMatrix4d | getComponentMat4 (int n) |
| | Returns the 4x4 matrix associated with the nth component. More...
|
| |
| double | getComponentNumber (int n) |
| | Returns the solitary number associated with the nth component. More...
|
| |
| EggTransform::ComponentType | getComponentType (int n) |
| | Returns the type of the nth component. More...
|
| |
| const LVecBase2d | getComponentVec2 (int n) |
| | Returns the 2-component vector associated with the nth component. More...
|
| |
| const LVecBase3d | getComponentVec3 (int n) |
| | Returns the 3-component vector associated with the nth component. More...
|
| |
| int | getNumComponents () |
| | Returns the number of components that make up the transform. More...
|
| |
| LMatrix3d | getTransform2d () |
| | Returns the overall transform as a 3x3 matrix. More...
|
| |
| const LMatrix4d | getTransform3d () |
| | Returns the overall transform as a 4x4 matrix. More...
|
| |
| bool | hasTransform () |
| | Returns true if the transform is nonempty, false if it is empty (no transform components have been added). More...
|
| |
| bool | hasTransform2d () |
| | Returns true if the transform is specified as a 2-d transform, e.g. More...
|
| |
| bool | hasTransform3d () |
| | Returns true if the transform is specified as a 3-d transform, e.g. More...
|
| |
| EggTransform | operator= (const EggTransform copy) |
| |
| | setTransform2d (const LMatrix3d mat) |
| | Sets the overall transform as a 3x3 matrix. More...
|
| |
| | setTransform3d (const LMatrix4d mat) |
| | Sets the overall transform as a 4x4 matrix. More...
|
| |
| bool | transformIsIdentity () |
| | Returns true if the described transform is identity, false otherwise. More...
|
| |
| | write (Ostream out, int indent_level, str label) |
| | Writes the transform to the indicated stream in Egg format. More...
|
| |


... the designer of a new system must not only be the implementor and the
first large-scale user; the designer should also write the first user manual.
... If I had not participated fully in all these activities, literally hundreds
of improvements would never have been made, because I would never have thought
of them or perceived why they were important.
--Donald Knuth
[
source]


Not since Animal Farm has a story been so important to its time. Not since Animal Farm has a story used such intellectual satire. In the way that Animal Farm portrayed our governments, South Park portrays our current day society and does it well. The people that complain about south park are missing out in its hidden messages of parenthood and childhood.
People may complain about the vulgarity of the senseless violence in South Park. But you must admit, if they are complaining about the movie then they have obviously noticed it. Maybe even seen it. There are some movies that need to be seen twice, once just to see and twice to analyse, this is one of those movies.
I applaud Trey Parker and Matt Stone for making this movie. So what if you don't think its funny, then don't see it. If your offended, then don't take it so seriously. Every once in a while we need an alternative to seriousness and this movies gives us one. It allows us to laugh guilt free at some of the most controversial topics in our modern society. If you've read this far in my review than I thank you for listening to me and I hope that you agree with me. I definately reccommend watching South Park at least once, there hasn't been anything this funny in a long time.
-David Peak
Peak of Mystery
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


TraffiX.ai
Get Started
Tutorial
Benchmaks
RNN Models
Graph Neural Networks
Seq-2-Seq Models
Others
Resources
Datasets
Publications
Blogs
About
Tutorials
Tutorials on Deep Learning-based Traffic Forecasting
Chapters
Topic
Tutorial
1
Introduction of Traffic Forecasting
2
Data Introduction & Process
3
Deep Learning Models-1 RNN
4
Deep Learning Models-2 Seq2Seq
5
Deep Learning Models-3 Graph Network
6
Deep Learning Models-4 Conbinations
7
Training & Testing Models
8
Model Evaluation


Training
Tracker
User
My Profile
Documentation
Log Out
Pages
Dashboard
Reports
Report loading...
Designed by
BootstrapMade


Email is required.
Email must be a valid email address.
Re-typing email is required.
Email doesn't match
Password doesn't match.


Class: Datacentred::Model::Version
- Defined in:
- lib/datacentred/model/version.rb
Overview
An API version currently available for use.
This method does not require authentication.
An API version may be:
-
CURRENT - The latest supported version.
-
SUPPORTED - A supported older version.
-
DEPRECATED - Currently supported but soon to be retired.
Instance Attribute Summary collapse
-
#id ⇒ Integer
The current value of id.
-
#status ⇒ String
The current value of status.
Class Method Summary collapse
-
.all ⇒ [Version]
List all available API versions.
Methods inherited from Base
Constructor Details
This class inherits a constructor from Datacentred::Model::Base
Instance Attribute Details
#id ⇒ Integer
Returns the current value of id
14 15 16 |
# File 'lib/datacentred/model/version.rb', line 14 def id @id end |
#status ⇒ String
Returns the current value of status
14 15 16 |
# File 'lib/datacentred/model/version.rb', line 14 def status @status end |


openvidu-android
A client-side only Android native application built with Java and using official Google WebRTC library.
If it is the first time you use OpenVidu, it is highly recommended to start first with openvidu-hello-world tutorial due to this being a native Android app and being a little more complex for OpenVidu starters.
Understanding this tutorial
OpenVidu is composed by the three modules displayed on the image above in its insecure version.
- openvidu-android: Android application built with Java connected to OpenVidu through websocket
- openvidu-server: Java application that controls Kurento Media Server
- Kurento Media Server: server that handles low level operations of media flow transmissions
Running this tutorial
To deploy the Android APK you need to have Android Studio, an Android device (recommended) or an Android emulator and Android SDK installed. You can download Android Studio here. You also can check the official Android Studio guide
After we have set up Android Studio we must continue with the following commands:
1) Clone the repo
git clone https://github.com/OpenVidu/openvidu-tutorials.git
2) Open Android Studio and import the project (openvidu-tutorials/openvidu-android)
3) Now you need the IP of your PC in the network. In Linux/OSX you can simply get it by running this command on your shell
awk '/inet / && $2 != "<IP_ADDRESS>"{print $2}' <(ifconfig)
It will probably output something like
<IP_ADDRESS>
. Your complete OpenVidu public url would then behttps://<IP_ADDRESS>:4443/
When you have your OpenVidu public url, you must set it in default_openvidu_url
variable in the app and in the openvidu.publicurl
parameter used to run openvidu-server (see next point)
4) openvidu-server and Kurento Media Server must be up and running in your development machine. The easiest way is running this Docker container which wraps both of them (you will need Docker CE)
docker run -p 4443:4443 --rm -e openvidu.secret=MY_SECRET -e openvidu.publicurl=YOUR_OPENVIDU_PUBLIC_URL openvidu/openvidu-server-kms:2.12.0
Remember changing
openvidu.publicurl
parameter to the actual value. In this example that would be:-e openvidu.publicurl=https://<IP_ADDRESS>:4443/
5) Connect the device to the same network as your PC
6) In Android Studio, you must modify the websocket address inside of strings.xml file.
To do that, in Android Studio, go to app > res > values > strings.xml
. The value of default_openvidu_url
will must be the IP of your PC.
In this example that would be: https://<IP_ADDRESS>:4443/
7) Connect the device to the PC. You must enable USB debugging and give permissions (check out official Android docs)
8) Run the tutorial. In Android Studio, click the app module in the Project window and then select Run > Run . In the Select Deployment Target window, select your device, and click OK.
Understanding the code
This is an Android project generated with Android Studio, and therefore you will see lots of configuration files and other stuff that doesn't really matter to us. We will focus on the following files under app/java
folder:
SessionActivity.java
: this class defines the only Android activity of the app.Participant.java
: it is related to the participants info, such as connection information and their UI elements. This is the parent class ofRemoteParticipant
andLocalParticipant
.Session.java
: this manages the collection of Participant objects, the behavior of SessionActivity layout and takes care of the creation of PeerConnection objects.CustomWebSocket.java
: the negotiation with openvidu-server takes place in this class. Its responsibility is to send RPC methods and listen to openvidu-server events through a websocket connection. To sum up, it implements OpenVidu Server RPC protocol.
WebSocket address, session name and participant name
As stated above in Running this tutorial, you have to modify the value of default_openvidu_url
with the IP of your PC in file res > values > strings.xml
. For example:
<string name="default_openvidu_url">https://<IP_ADDRESS>:4443/</string>
Besides, you can change the default values for the local participant name (default_participant_name
) and session name (default_session_name
). These will appear as default values in the form to connect to a session.
<string name="default_session_name">SessionA</string>
<string name="default_participant_name">Participant</string>
Get a token from OpenVidu Server
src/main/java/io/openvidu/openvidu_android/activities/SessionActivity.java
private void getToken(String sessionId) {
// See next point to see how to connect to the session using 'token'
...
}
Now we need a token from OpenVidu Server. In a production environment we would perform this operations in our application backend, by making use of the REST API, OpenVidu Java Client or OpenVidu Node Client. Here we have implemented the POST requests to OpenVidu Server in a method getToken()
. Without going into too much detail, this method performs two POST requests to OpenVidu Server, passing OpenVidu Server secret to authenticate them. We use an http-client we have wrapped in class CustomHttpClient
.
- First request performs a POST to
/api/sessions
(we send acustomSessionId
field to force the id of the session to be the value retrieved from the view's form. This way we don't need a server side to connect multiple users to the same session) - Second request performs a POST to
/api/tokens
(we send asession
field to assign the token to this same session)
You can inspect this method in detail in the GitHub repo.
When token available start the process to connect to openvidu-server
Once we have gotten the token, we can set up our session object, our camera and the websocket. We create our session, our localParticipant and capture the camera:
src/main/java/io/openvidu/openvidu_android/activities/SessionActivity.java
private void getTokenSuccess(String token, String sessionId) {
// Initialize our session object
session = new Session(sessionId, token, views_container, this);
// Initialize our local participant and start local camera
String participantName = participant_name.getText().toString();
LocalParticipant localParticipant = new LocalParticipant(participantName, session, this.getApplicationContext(), localVideoView);
localParticipant.startCamera();
runOnUiThread(() -> {
// Update local participant view
main_participant.setText(participant_name.getText().toString());
main_participant.setPadding(20, 3, 20, 3);
});
// Initialize and connect the websocket to OpenVidu Server
startWebSocket();
}
To configure the session, we are going to initialize and build the PeerConnectionFactory
. This is the way to initialize WebRTC peer connections with the official Google WebRTC library for Android.
src/main/java/io/openvidu/openvidu_android/openvidu/Session.java
//Creating a new PeerConnectionFactory instance
PeerConnectionFactory.InitializationOptions.Builder optionsBuilder = PeerConnectionFactory.InitializationOptions.builder(activity.getApplicationContext());
optionsBuilder.setEnableInternalTracer(true);
PeerConnectionFactory.InitializationOptions opt = optionsBuilder.createInitializationOptions();
PeerConnectionFactory.initialize(opt);
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
// Using sofware encoder and decoder.
final VideoEncoderFactory encoderFactory;
final VideoDecoderFactory decoderFactory;
encoderFactory = new SoftwareVideoEncoderFactory();
decoderFactory = new SoftwareVideoDecoderFactory();
peerConnectionFactory = PeerConnectionFactory.builder()
.setVideoEncoderFactory(encoderFactory)
.setVideoDecoderFactory(decoderFactory)
.setOptions(options)
.createPeerConnectionFactory();
Capture the camera
Android provides us a very easy way to use Camera API. This API includes support for various cameras and camera features available on devices, allowing you to capture pictures and videos in your application. In the end, we need to store the video track.
src/main/java/io/openvidu/openvidu_android/openvidu/LocalParticipant.java
public void startCamera() {
final EglBase.Context eglBaseContext = EglBase.create().getEglBaseContext();
PeerConnectionFactory peerConnectionFactory = this.session.getPeerConnectionFactory();
// Create AudioSource
AudioSource audioSource = peerConnectionFactory.createAudioSource(new MediaConstraints());
this.audioTrack = peerConnectionFactory.createAudioTrack("101", audioSource);
surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", eglBaseContext);
// Create VideoCapturer
VideoCapturer videoCapturer = createCameraCapturer();
VideoSource videoSource = peerConnectionFactory.createVideoSource(videoCapturer.isScreencast());
videoCapturer.initialize(surfaceTextureHelper, context, videoSource.getCapturerObserver());
videoCapturer.startCapture(480, 640, 30);
// Create VideoTrack
this.videoTrack = peerConnectionFactory.createVideoTrack("100", videoSource);
// Display in localView
this.videoTrack.addSink(localVideoView);
}
Since API level 21, Camera
class was deprecated. Android introduced Camera2
with Android 5.0 (API level 21) and above. As the Android official documentation recommends, we should use Camera2 on supported devices.
src/main/java/io/openvidu/openvidu_android/openvidu/LocalParticipant.java
private VideoCapturer createCameraCapturer() {
CameraEnumerator enumerator;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
enumerator = new Camera2Enumerator(this.context);
} else {
enumerator = new Camera1Enumerator(false);
}
final String[] deviceNames = enumerator.getDeviceNames();
// Try to find front facing camera
for (String deviceName : deviceNames) {
if (enumerator.isFrontFacing(deviceName)) {
videoCapturer = enumerator.createCapturer(deviceName, null);
if (videoCapturer != null) {
return videoCapturer;
}
}
}
// Front facing camera not found, try something else
for (String deviceName : deviceNames) {
if (!enumerator.isFrontFacing(deviceName)) {
videoCapturer = enumerator.createCapturer(deviceName, null);
if (videoCapturer != null) {
return videoCapturer;
}
}
}
return null;
}
We also have to think about the media permissions. You can take a look to the Android permissions under section Android specific requirements.
Connect the websocket to OpenVidu Server
Ath this point, we will establish a connection between openvidu-server and our Android app through the websocket. This way will be able to consume OpenVidu Server RPC protocol to interact with the session (in the future, when OpenVidu Android SDK is available, this won't be necessary). We do so in background as an async task so the main execution thread is not blocked.
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
@Override
protected Void doInBackground(SessionActivity... sessionActivities) {
try {
WebSocketFactory factory = new WebSocketFactory();
//Returns a SSLContext object that implements the specified secure socket protocol
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagers, new java.security.SecureRandom());
factory.setSSLContext(sslContext);
// Set the flag which indicates whether the hostname in the server's certificate should be verified or not.
factory.setVerifyHostname(false);
// Connecting the websocket to OpenVidu URL
websocket = factory.createSocket(getWebSocketAddress(openviduUrl));
websocket.addListener(this);
websocket.connect();
} catch ( ... )
Using OpenVidu Server RPC protocol
Taking the references from OpenVidu Server RPC protocol, we will be able call to the OpenVidu Server methods and receive events from OpenVidu Server.
Listening to OpenVidu Server events
The app implements a method to handle event messages received from openvidu server. This will be essential in order to know when ice candidates arrive, when a new user joined the session, when a user published a video to the session or when some participant left the session.
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
private void handleServerEvent(JSONObject json) throws JSONException {
if (!json.has(JsonConstants.PARAMS)) {
Log.e(TAG, "No params " + json.toString());
} else {
final JSONObject params = new JSONObject(json.getString(JsonConstants.PARAMS));
String method = json.getString(JsonConstants.METHOD);
switch (method) {
case JsonConstants.ICE_CANDIDATE:
iceCandidateEvent(params);
break;
case JsonConstants.PARTICIPANT_JOINED:
participantJoinedEvent(params);
break;
case JsonConstants.PARTICIPANT_PUBLISHED:
participantPublishedEvent(params);
break;
case JsonConstants.PARTICIPANT_LEFT:
participantLeftEvent(params);
break;
default:
throw new JSONException("Unknown method: " + method);
}
}
}
iceCandidate
: this event brings a new ICE candidate generated in openvidu-server. We must include it in the proper PeerConnection object (we receive ICE candidates for our local PeerConnection and for each remote PeerConnection). To avoid timing problems, the application stores the received ICE candidates until that PeerConnection state isSTABLE
. Whenever it is reached, it processes all of them at once.participantJoined
: this event tells us a new participant has joined our session. We initialize a new PeerConnection object (so we may receive the new user's camera stream) and a new video element in the UI.participantPublished
: this event tells us a user has started sending a video to the session. We must start the ICE negotiation for receiving the new video stream over the proper and already initialized PeerConnection object. We do so by simply following WebRTC protocol: creating and setting a local SDP offer, sending it to openvidu-server with RPC methodreceiveVideoFrom
and setting the answer received as remote SDP description of this PeerConnection.participantLeftEvent
: dispatched when some user has left the session. We simply dispose the proper PeerConnection and update our view.
Sending methods to OpenVidu Server
Below we list all the RPC methods that this Android app sends to OpenVidu Server. Each one of them will be answered by OpenVidu Server with a specific response. They must be properly processed and usually a new flow of method calls will follow the reception of these answers. We will not explain in detail every one of them to keep the length of this tutorial under control, but you can easily follow the flow of method calls in the source code.
Joining a session with joinRoom
method
Once the websocket connection is established, we need to join to the session. By sending a JSON-RPC method joinRoom
with the followings parameters we'll be able to connect to the session:
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
public void joinRoom() {
Map<String, String> joinRoomParams = new HashMap<>();
// Setting the joinRoom parameters
joinRoomParams.put(JsonConstants.METADATA, "{\"clientData\": \"" + this.session.getLocalParticipant().getParticipantName() + "\"}");
joinRoomParams.put("secret", "");
joinRoomParams.put("session", this.session.getId());
joinRoomParams.put("platform", "Android " + android.os.Build.VERSION.SDK_INT);
joinRoomParams.put("token", this.session.getToken());
//Sending JSON through websocket specifying 'joinRoom' method.
this.ID_JOINROOM.set(this.sendJson(JsonConstants.JOINROOM_METHOD, joinRoomParams));
}
As response we will receive an object with all the existing participants in the session and all the published streams. We first process them as explained in events participantJoined
and participantPublished
in previous section Listening to OpenVidu Server events. And we must publish our own camera by initializing our local PeerConnection and MediaStream and calling publishVideo
RPC method (see next point).
Publishing the camera with publishVideo
method
We need to send a JSO-RPC message through the websocket with the required params as shown below:
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
public void publishVideo(SessionDescription sessionDescription) {
Map<String, String> publishVideoParams = new HashMap<>();
// Setting the publishVideo parameters
publishVideoParams.put("audioActive", "true");
publishVideoParams.put("videoActive", "true");
publishVideoParams.put("doLoopback", "false");
publishVideoParams.put("frameRate", "30");
publishVideoParams.put("hasAudio", "true");
publishVideoParams.put("hasVideo", "true");
publishVideoParams.put("typeOfVideo", "CAMERA");
publishVideoParams.put("videoDimensions", "{\"width\":320, \"height\":240}");
publishVideoParams.put("sdpOffer", sessionDescription.description);
//Sending JSON through websocket specifying 'publishVideo' method.
this.ID_PUBLISHVIDEO.set(this.sendJson(JsonConstants.PUBLISHVIDEO_METHOD, publishVideoParams));
}
Subscribing to a remote video with receiveVideo
method
We need to send a JSON-RPC through the websocket with the required params as shown below:
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
public void receiveVideoFrom(SessionDescription sessionDescription, RemoteParticipant remoteParticipant, String streamId) {
Map<String, String> receiveVideoFromParams = new HashMap<>();
receiveVideoFromParams.put("sdpOffer", sessionDescription.description);
receiveVideoFromParams.put("sender", streamId);
this.IDS_RECEIVEVIDEO.put(
this.sendJson(JsonConstants.RECEIVEVIDEO_METHOD, receiveVideoFromParams),
remoteParticipant.getConnectionId());
}
Leaving the session with 'leaveRoom' method
We need to send a JSON-RPC through the websocket (empty parameters in this case):
src/main/java/io/openvidu/openvidu_android/openvidu/CustomWebSocket.java
public void leaveRoom() {
this.ID_LEAVEROOM.set(this.sendJson(JsonConstants.LEAVEROOM_METHOD));
}
Android specific requirements
Android apps need to actively ask for permissions in the code to access camera and microphone. By following steps below we have been able to properly set up the permissions your app will need to work along OpenVidu. You have a great complete guide here.
These configurations are already included in this openvidu-android project, so if you start from here no further configurations are needed. Otherwise, if you want to start a new Android project, you should follow these simple steps:
1) Add required permissions to your manifest file
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.openvidu.openvidu_android">
<application>
...
</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
2) Check if your application has already the necessary permissions. To do so, call the ContextCompat.checkSelfPermission()
method. For example:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
// Permission for camera is not granted
}
If the app already has the permission, the method returns PackageManager.PERMISSION_GRANTED
and the app can proceed with the operation. If the app does not have the permission, the method returns PackageManager.PERMISSION_DENIED
, and the app has to explicitly ask the user for permission.
3) Android provides several methods to request for a permission, such as requestPermissions()
, as shown in the code snippet below. Calling these methods brings up a standard Android dialog so the user may accept or decline the permissions.
// Here, "this" object is the current activity
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {
// Show an explanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed. Request the permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
} else {
// Permission has already been granted
}


--- layout: default title: "Page not Found" permalink: 404.html hero_height: is-small ---
Sorry, it seems we've misplaced that link.
Maybe you can checkout these links?


Month
Day
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
6:00AM
7:00AM
8:00AM
9:00AM
10:00AM
11:00AM
12:00PM
1:00PM
2:00PM
3:00PM
4:00PM
5:00PM
6:00PM
7:00PM
8:00PM
9:00PM
10:00PM
11:00PM
7:00AM
8:00AM
9:00AM
10:00AM
11:00AM
12:00PM
1:00PM
2:00PM
3:00PM
4:00PM
5:00PM
6:00PM
7:00PM
8:00PM
9:00PM
10:00PM
11:00PM
12:00AM
Create Event
Cancel


Organization plans to install 100 trash booms to protect Bali's waterways
by Jessicha ValentinaIt is estimated that about 80 percent of plastic waste in the oceans comes from rivers and other streams. With that in mind, Make a Change World, a media organization that shares inspirational contents about sustainability, made a plan to install 100 trash booms in waterways around Bali under a project called Sungai Watch. Founded by brothers Sam and Gary Bencheghib, Make a Change World launched several environmental initiatives, including #PlasticBottleCitarum, when they spent two weeks cruising the world’s most polluted river on plastic-bottle canoes. This time, Sam and Gary, who grew up in Bali, decided to install the first trash boom on the Yeh Poh River two weeks ago. View this post on Instagram ...
LOG IN
Don't have an account? Register here
Forgot Password ?
Log in with your social account


|
Lingvo
DeutschLernenfürAsylbewerber
|
This class represents all locally available exercises (workbooks with pages and teachermemos) More...
Public Member Functions | |
| void | OnTeacherMemoChanged (TeacherMemo m) |
| Called whenever a teacher memo is changed. More... | |
| void | OnWorkbookChanged (Workbook w) |
| Called whenever a workbook is changed. More... | |
| void | OnPageChanged (IPage p) |
| Called whenever a page is changed. More... | |
| void | AddTeacherMemo (TeacherMemo memo) |
| Adds a teacher memo to the collection. More... | |
| void | AddWorkbook (Workbook workbook) |
| Adds a workbook to the collection. More... | |
| void | DeleteWorkbook (Workbook workbook) |
| Deletes a workbook. More... | |
| void | DeleteTeacherMemo (TeacherMemo memo) |
| Deletes a teacher memo. More... | |
| void | DeletePage (Page page) |
| Deletes a page. More... | |
| void | DeleteStudentRecording (IExercise exercise) |
| Deletes, if existing, the StudentRecording of the given exercise. More... | |
Static Public Attributes | |
| static LocalCollection | Instance => instance ?? (instance = new LocalCollection()) |
| Gets the instance of local collection (singleton pattern). More... | |
Properties | |
| IEnumerable< TeacherMemo > | TeacherMemos [get] |
| The collection of all teacher memos available on this device More... | |
| IEnumerable< Workbook > | Workbooks [get] |
| The collection of all workbooks available on this device More... | |
Events | |
| Action< Workbook > | WorkbookChanged |
| Occurs when a workbook is changed. More... | |
| Action< TeacherMemo > | TeacherMemoChanged |
| Occurs when teacher memo is changed. More... | |
| Action< IPage > | PageChanged |
| Occurs when page is changed. More... | |
This class represents all locally available exercises (workbooks with pages and teachermemos)
|
inline |
Adds a teacher memo to the collection.
| memo | Memo. |
|
inline |
Adds a workbook to the collection.
| workbook | Workbook. |
|
inline |
Deletes a page.
| page | Page. |
|
inline |
Deletes, if existing, the StudentRecording of the given exercise.
| page | Page. |
|
inline |
Deletes a teacher memo.
| memo | Memo. |
|
inline |
Deletes a workbook.
| workbook | Workbook. |
|
inline |
Called whenever a page is changed.
| p | P. |
|
inline |
Called whenever a teacher memo is changed.
| m | M. |
|
inline |
Called whenever a workbook is changed.
| w | The width. |
|
static |
Gets the instance of local collection (singleton pattern).
|
get |
The collection of all teacher memos available on this device
The teacher memos.
|
get |
The collection of all workbooks available on this device
The workbooks.
| Action<IPage> Lingvo.MobileApp.Entities.LocalCollection.PageChanged |
Occurs when page is changed.
| Action<TeacherMemo> Lingvo.MobileApp.Entities.LocalCollection.TeacherMemoChanged |
Occurs when teacher memo is changed.
| Action<Workbook> Lingvo.MobileApp.Entities.LocalCollection.WorkbookChanged |
Occurs when a workbook is changed.


Uptime
Source: GitHub, rar
Widget for N900.
Shows phones current uptime.
CLASSES:
--------------------------
* Controller
- Has timer, interval 10sec
- If seconds are shown, it has own timer that just updates screen every second
- Both use same time object
- main timer checks time from system
- second timer just adds 1 sec to time object
- Saves record uptime to text file
- Compares current uptime to it and updates it if necessary
* DataGetter
- Either Win or Unix datagetter (this version works only with N900, so Win obsolete)
- Gets uptime string from process
- Unix uses uptime
- Windows uses Systeminfo.exe
* UptimeStruct (was struct, now object, bad naming)
- Time data and helper methods


Tacha leads while others follow - Uche Maduagwu says after she hit 1m IG followers
- Uche Maduagwu has taken to social media to show his support for ex-BBNaija housemate, Tacha
- The actor showed his support for the former housemate after she hit one million followers on Instagram
- Maduagwu said that Tacha will always lead while others follow
Actor Uche Maduagwu has shown his support for former Big Brother Naija 2019 housemate, Tacha, on social media. The actor shared a post on his Instagram page heaping praises on the reality star.
The actor shared the Instagram post to celebrate after Tacha hit one million followers on Instagram.
According to Maduagwu, the reality star will always lead while others follow. He noted that she is always winning and being the first.
PAY ATTENTION: Read best news on Nigeria's #1 news app
He stated that Tacha will marry before every other housemate. He added that she would marry first because she does not carry her boyfriend on her head.
See lovely photo of singer Timi Dakolo, his wife and three kids
Maduagwu claimed that she is destined to marry before the other 2019 housemates. He said that she would never be seen doing something like taking bike in Lagos.
However, he noted that taking bike is not bad, but she would not do it like she is a pageant queen.
PAY ATTENTION: Do you have news to share? Contact Legit.ng instantly
READ ALSO: NAIJ.com upgrades to Legit.ng: a letter from our Editor-in-Chief Bayo Olupohunda
The actor also mentioned the fact that Tacha was the only 2019 housemate to receive a grand reception in Ghana. Legit.ng had reported that the reality star was given a grand welcome at the Kotoka International Airport. Several fans also reacted to Tacha’s arrival on social media.
NAIJ.com (naija.ng) -> Legit.ng We have upgraded to serve you better
BBNaija Exclusive: Evicted housemates reveal their true feelings about Tacha - on Legit TV
Stop choking and sleeping with celebrities - BBNaija's Khloe warns ladies on social media


Rock climbing is a sport in which participants climb up, down or across natural rock formations or artificial rock walls. The goal is to reach the summit of a formation or the endpoint of a usually pre-defined route without falling. Professional rock climbing competitions have the objectives of either completing the route in the quickest possible time or attaining the farthest point on an increasingly difficult route.Rock climbing is a physically and mentally demanding sport, one that often tests a climber's strength, endurance, agility and balance along with mental control. It can be a dangerous activity and knowledge of proper climbing techniques and use of specialized climbing equipment is crucial for the safe completion of routes.
Types Of Rock Climbing
1. Aid:
Still the most popular method of climbing big walls, aid climbers make progress up a wall by repeatedly placing and weighting gear that is used directly to aid ascent and enhance safety.This form of climbing is typically used when ascent is too technically difficult or impossible for free climbing.2. Free:
The most commonly used method to ascend climbs refers to climbs where the climber's own physical strength and skill are relied on to accomplish the climb. Free climbing may rely on top rope belay systems, or on lead climbing to establish protection and the belay stations. Anchors, ropes and protection are used to back up the climber and are passive as opposed to active ascending aids. Subtypes of free climbing are trad clim- -bing and sport climbing. Free climbing is generally done as "clean lead" meaning no pitons or pins are used as protection.3. Bouldering:
Climbing on short, low routes without the use of the safety rope that is typical of most other styles. Protection, if used at all, typically consists of a cushioned bouldering pad below the route and a spotter, a person who watches from below and directs the fall of the climber away from hazardous areas. Bouldering may be an arena for intense and relatively safe competition, resulting in exceptionally high difficulty standards.4. Solo:
Solo climbing, or soloing, is a style of climbing in which the climber climbs alone, without the assistance of a belay.5. Deep-Water solo(DWS):
Deep-water soloing (or psicobloc) is similar to free soloing in that the climber is unprotected and without a rope, but should the climber fall, it is into deep water instead of onto the ground.6. Free Solo:
Free soloing, referred to as "soloing" in the UK, is single-person climbing without the use of any rope or protection system whatsoever. If a fall occurs and the climber is not over water (as in the case of deep water soloing), the climber is likely to be killed or seriously injured. Though technically similar to bouldering, free solo climbing typically refers to routes that are far taller and/or far more lethal than bouldering. The term "highball" is used to refer to climbing on the boundary between free soloing and bould- -ering, where what is usually climbed as a boulder problem may be high enough for a fall to cause serious injury (20 ft. and higher) and hence could also be considered to be a free solo.7. Roped Solo:
Solo climbing with a rope secured at the beginning of the climb allowing a climber to self-belay as they advance. Once the pitch is completed the soloist must descend the rope to retrieve their gear, and then reclimb the pitch. This form of climbing can be conducted free or as a form of aid climbing.Rock Climbing Equipment


First-level heading
Second-level heading
Third-level heading
Fourth-level heading
Fifth-level heading
Sixth-level heading


Contribution to the Iometer project
We are always looking for people who are willing to
contribute. You do not have to be a programmer to help the project.
There are a lot of different tasks for which we hope to find
volunteers.
As a first active step, we recommend you to
join
the iometer-devel mailing list. Here the project members are discussing
the different project related issues. You are also more then welcome to
contact the project members directly.
Here is a list of some tasks for which we are looking
for help:
| Programming |
| status |
task |
started (1, 2) none (3, 4) |
- Code Cleanup
- Consolidate the different code and header files
- Consolidate and decouple the different global defines
- Establish global defines for the different CPU's, OS'es and OS families
- Decouple code and header files into common, iometer and dynamo part
|
| ongoing |
- Tackling Bug Reports [more]
|
| ongoing |
- Tackling Feature Requests [more]
|
| none |
- Development of an Hardware Abstraction Layer (hiding CPU, OS and OS family specifics)
|
| none |
- Porting to different operating systems and hardware platforms
- Operating System: (Free|Net)BSD
- Operating System: IRIX
- Processor: Alpha
- Processor: MIPS (R10000 etc)
|
| none |
- Iometer GUI for Non-Windows (using Java for example)
|
|
| Testing |
| status |
task |
| started |
- Building an QA testsuite (using dd and netperf as base line)
|
| none |
- Testing new builds / releases (especially
combinations without prebuild package)
- Solaris (on SPARC)
- 64 bit Windows
|
|
| Documentation |
| status |
task |
| ongoing |
- Keeping the Users Guide up to date (requires Acrobat Destiller or simular)
|
| none |
- Building an FAQ document (based on the work of Richard Riggs)
|
|
| Others |
| status |
task |
| none |
- Analyse source code and describe data flow etc
in the Developers Guide
|
| none |
- Building a rich set of sample ICF's (synthetic and
real world work load)
|
| none |
- Setup a results database (simular to netperf.org)
|
|


{{'PROCESS-INSTANCE.POPUP.DELETE.MESSAGE-DELETE' | translate}} '{{process.name && task.name + " - " || ""}}{{process.id}}'?
{{'PROCESS-INSTANCE.POPUP.DELETE.MESSAGE-TERMINATE' | translate}} '{{process.name && task.name + " - " || ""}}{{process.id}}'?


Origin
...Now
10/23/15
Hello Blog!
Today I learned a bit more about version control software, which is a way to ensure that neither time nor effort are wasted when working on any project. It works well enough for a solo user but becomes proportionately more important with an increasing number of collaborators and/or on increasingly more complicated projects. Every user can create a separate version of the main project to work on privately and save his or her work after every single change. The system then allows any of those copies to be accessed at a later point should it prove necessary to start over because something got messed up after that point. If used properly it prevents anybody from having to redo their work or from interfering with somebody else's work on the same team.
I had some serious unlearning to do on github today. The only other times I used git for a week I pushed the commits from the master. It was just add,commit,push,pull. bing bang boom, 4th b word. I learned a whole new method today and I definitely still do not 100% have it. Updates to follow.
I like the idea of git. It allows you to share your code amazingly easily with whomever you want. I guess if you were just working by yourself and wanted input or advice you would have to email your files to people. If you knew you were only ever sharing it with one person there might be a negligible difference. but anything more complex than that and a direct communication system would be time consuming. In the case of multiple people working together on something, I can't even imagine how they would do their work without github. Github allows any number of people to simultaneously edit the same file without interfering with anybody else's work. It almost seems to good to be true. And every saved stage of change can still be accessed later. It is a pretty amazing thing.


copy-to-clipboard Repo
Basic text copy
copyToClipboard("Hello, I'm new content from your clipboard")
Click to copy sample text
Multiline text copy
This would be some multiline text for us to copy
Click to copy multiline text
Markup + text copy
Click to copy multiline text


| HBASE-11652 |
Port HBASE-3270 and HBASE-11650 to 0.94 - create cluster id and version file in a tmp location and move it into place |
Minor |
. |
Lars Hofhansl |
Lars Hofhansl |
| HBASE-11641 |
TestDistributedLogSplitting.testMasterStartsUpWithLogSplittingWork fails frequently |
Major |
. |
Lars Hofhansl |
Lars Hofhansl |
| HBASE-10834 |
Better error messaging on issuing grant commands in non-authz mode |
Trivial |
shell |
Srikanth Srungarapu |
Srikanth Srungarapu |
| HBASE-11767 |
[0.94] Unnecessary garbage produced by schema metrics during scanning |
Major |
. |
Lars Hofhansl |
Lars Hofhansl |
| HBASE-11232 |
Add MultiRowMutation tests. |
Major |
regionserver |
Liu Shaohui |
Liu Shaohui |
| HBASE-11536 |
Puts of region location to Meta may be out of order which causes inconsistent of region location |
Critical |
Region Assignment |
Liu Shaohui |
Liu Shaohui |
| HBASE-9746 |
RegionServer can't start when replication tries to replicate to an unknown host |
Major |
. |
Lars Hofhansl |
Lars Hofhansl |


Elderly people with psychosis related to dementia (for example, an inability to perform daily activities as a result of increased memory loss), treated with antipsychotic medicines including ABILIFY, are at an increased risk of death compared to placebo. ABILIFY is not approved for the treatment of people with dementia-related psychosis (see Boxed WARNING).
Antidepressants may increase suicidal thoughts or behaviors in some children, teenagers, and young adults, especially within the first few months of treatment or when the dose is changed. Depression and other serious mental illnesses are themselves associated with an increase in the risk of suicide. Patients on antidepressants and their families or caregivers should watch for new or worsening depression symptoms, unusual changes in behavior, or thoughts of suicide. Such symptoms should be reported to the patient's healthcare professional right away, especially if they are severe or occur suddenly. ABILIFY is not approved for use in pediatric patients with depression (see Boxed WARNING).
Contraindication: Patients should not use ABILIFY if they are allergic to aripiprazole or any of the ingredients in ABILIFY. Allergic reactions have ranged from rash, hives, and itching to anaphylaxis, which may include difficulty breathing, tightness in the chest, and swelling of the mouth, face, lips, or tongue.
Serious side effects may include:
- An increased risk of stroke and ministroke have been reported in clinical studies of elderly people with dementia-related psychosis
- Very high fever, rigid muscles, shaking, confusion, sweating, or increased heart rate and blood pressure. These may be signs of a condition called neuroleptic malignant syndrome (NMS), a rare but serious side effect which could be fatal
- Uncontrollable movements of face, tongue, or other parts of body as these may be signs of a serious condition called tardive dyskinesia (TD). TD may become permanent and the risk of TD may increase with the length of treatment and the overall dose. While TD can develop after taking the medicine at low doses for short periods, this is much less common. There is no known treatment for TD, but it may go away partially or completely if the medicine is stopped
- If you have diabetes, or risk factors for diabetes (for example, obesity, family history of diabetes), or unexpected increases in thirst, urination, or hunger, your blood sugar should be monitored. Increases in blood sugar levels (hyperglycemia), in some cases serious and associated with coma or death, have been reported in patients taking ABILIFY and medicines like it
Lightheadedness or faintness caused by a sudden change in heart rate and blood pressure when rising quickly from a sitting or lying position (orthostatic hypotension) has been reported with ABILIFY.
Decreases in white blood cells (infection fighting cells) have been reported in some patients taking antipsychotic agents, including ABILIFY. Patients with a history of a significant decrease in white blood cell (WBC) count or who have experienced a low WBC count due to drug therapy should have their blood tested and monitored during the first few months of therapy.
ABILIFY and medicines like it can affect your judgment, thinking, or motor skills. You should not drive or operate hazardous machinery until you know how ABILIFY affects you.
Medicines like ABILIFY® (aripiprazole) can impact your body's ability to reduce body temperature; you should avoid overheating and dehydration.
ABILIFY and medicines like it have been associated with swallowing problems (dysphagia). If you had or have swallowing problems, you should tell your healthcare professional.
Tell your healthcare professional if you have a history of, or are at risk for seizures, or are pregnant or intend to become pregnant. Also tell your healthcare professional about all prescription and non-prescription medicines you are taking or plan to take, since there are some risks for drug interactions.
While taking ABILIFY, avoid:
- Drinking alcohol
- Breast-feeding an infant
Most common side effects (≥10%) from all clinical trials involving adults include:
- ADULTS: Nausea, vomiting, constipation, headache, dizziness, an inner sense of restlessness or need to move (akathisia), anxiety, insomnia, and restlessness
It is important to contact your healthcare professional if you experience prolonged, abnormal muscle spasms or contractions which may be signs of a condition called dystonia.
For patients who must limit their sugar intake, ABILIFY Oral Solution contains sugar.
For patients with phenylketonuria or PKU, ABILIFY DISCMELT® (aripiprazole) contains phenylalanine.
If you have any questions about your health or medicines, talk to your healthcare professional.
INDICATION: ABILIFY is indicated for:
- Use as an add-on treatment to an antidepressant for adults with Major Depressive Disorder who have had an inadequate response to antidepressant therapy
Please see U.S. FULL PRESCRIBING INFORMATION, including Boxed WARNINGS, and Medication Guide, for ABILIFY.


|
Genghis Khanaka Jenghiz Khan, Cheng-chi-ssu-han, TemujinGenghis Khan conquered more land than anyone in human history, but could never shake the bad reputation that usually accompanies the words "Mongol horde".Khan's actual name was Temujin, since it would have been presumptuous to name him "Supreme Ruler" (which is what "Genghis Khan" means) at birth. Temujin was born in the '60s... the 1160s, specifically, when free love and rock-n-roll were sweeping Mongol culture. The Mongols were a nomadic tribe with a Shamanic religious tradition, which in the minds of Europeans of the day equated to barbarism. Temujin certainly had a fairly barbaric upbringing. His father was killed by a rival tribe when he was barely a teenager. The young Mongol and his family spent his Wonder Years first in exile, where they starved and froze concurrently, then as a prisoner of a rival tribe. When he reached a not-so-tender age, Temujin killed his way to freedom for himself and his family. Killing would prove a very effective way for young Temujin to get what he wanted. Due to his prowess as a warrior, he eventually gained control of his late father's tribe, then set about building alliances. A rival tribe kidnapped his wife, prompting Temujin to mount a daring rescue attempt. His victory was so decisive that it inspired other tribes to pledge him their loyalty. After forging a loose federation through a mixture of conquest, intimidation and diplomacy, Temujin held an increasingly strong position as the 12th century came to a close. He invested the spoils of his wars into superior weaponry, including innovative siege machinery and armor for his cavalry, which gave him a decided advantage over his less-organized, more-impoverished rivals. His forces were extremely mobile; the cavalry carried spare horses so that riders forced to dismount could quickly regain their advantage. In 1206, Temujin formally united the factions under his umbrella and declared himself Genghis Khan, "supreme ruler" of Mongolia. His power consolidated, Khan looked outward toward his neighbors. His neighbors had reason to worry. Khan was a brilliant military strategist, and he pioneered several strategies which are now entirely entrenched in military warfare, including military intelligence and psyops. The Mongol horde was ruthless and efficient, and news of its approach inspired genuine "shock and awe" among those in its path. Khan swept over most of Central Asia. He captured Beijing and conquered China, the Korean peninsula and a big chunk of Russia. Khan's forces were highly trained, but they preferred not to fight. Khan employed overwhelming force and siege tactics to get what he wanted. When forced to fight, Khan's forces methodically slaughtered everyone in their path, a more effective terror tactic than some of the overly elaborate tortures employed by his rivals. Fairly or unfairly, the Mongol horde quickly gained a reputation for massacre, which had a tendency to shorten the sieges. Until very recently, most accounts of Mongol devastation included the wanton slaughter of civilians and prisoners. It's difficult to know exactly how well-deserved that bad reputation was, but the Mongol Wars of the 13th century depopulated Asia by somewhere between 30 million and 60 million people. Hundreds of thousands of Chinese were said to have committed suicide in the face of approaching Mongol hordes. We live in an age of revisionist histories, however, and the history of Genghis Khan is particularly susceptible. During the heyday of the Soviet Union, Mongolia lived under a despotic Communist regime that suppressed and tinkered heavily with the region's history. The topic of Genghis Khan, an icon of nationalistic pride, was verboten. What few tales survived were cast in a decidedly barbaric light. Khan's reputation was further sullied by association with the atrocities committed by his successors (like the grandson who built a pyramid out of the skulls of thousands of Baghdad's greatest scholars). In recent years, however, it has become fashionable to depict G.K. as a wise leader and philosopher, and not without reason. Although the process of being overcome by a Mongol horde was not especially pleasant, the actual Mongol regime wasn't bad once it was in place. Khan consolidated his rule by employing cooperative local officials from the previous regime and maintaining the local infrastructure largely intact. Khan also enforced a legal code that was surprisingly liberal for its day. In many respects, the Great Yasa closely mirrored the 10 Commandments and the Golden Rule, with an abiding precept being simply "Love one another". Khan also offered a "New Deal" that took care of the poor and infirm. Khan outlawed taxes on clerics of any religion. More controversial and progressive, for the day, Khan decreed that all children were legitimate, and thus entitled to inherit, even the children of prostitutes and concubines. Although Khan himself was not religious, his laws forbade overt religious or racial persecution, an extremely smart move for someone whose dynasty covered a vast melting pot of beliefs. The key word, however, was "overt." Despite his reputation for religious tolerance, many of Khan's supposedly non-denominational laws nevertheless amounted to persecution for different religions, particularly Islam. The legal code -- known as the "Great Yasa" -- forbade the ritual slaughter of animals, which meant that Muslims couldn't prepare halal meals in accordance with religious law. The Yasa also banned the designation of anything as taboo or unclean, which presented further problems. Khan also allowed women to be educated, banned efforts to make women cover their heads and encouraged freedom of expression and worship. As a result, numerous fatwas were issued against the hated Mongols, and the destruction of the Muslim caliphate by the Mongols (after the death of Khan) continues to shape the world's political landscape. All this alleged enlightenment aside, Genghis Khan had subjugated most of China and a fair amount of adjacent territory by the time he died at age 60 -- one year for every million people killed, give or take. The circumstances of the Great Khan's death are unknown. Most versions of the story hold that Khan fell from his horse and was killed. According to some legends, the fall took place during a hunt; others say it happened in the heat of battle. The burial of Genghis Khan was nearly as much of a production as his life. The exact site of his grave is one of history's most closely guarded secrets. Although a site in China is purported to be Khan's mausoleum, its authenticity is highly suspect. A more recently uncovered site on the steppes of Mongolia is still being investigated. According to legend, an armed escort accompanied Khan's body to its final resting place, slaying any living thing that witnessed their passage. One story says that Khan was buried alongside 40 baby camels. Other legends say the mystery has a more mundane cause -- the funeral procession got mired on a muddy road and simply buried their illustrious leader on the spot. Khan's empire lived on after his death, initially parceled into four khanates divided among four sons of Temujin. Khan's successors continued his campaign of conquest for several generations. At its peak, the Mongolian Empire Temujin had founded was mind-blowing in scope, stretching from Poland to China along its northern border, and from Baghdad to Hanoi along its southern rim. Genghis Khan may be gone, but not forgotten. With literally hundreds of wives and concubines, not to mention who knows how many pieces on the side, Khan did his part to help repopulate Asia after depopulating it so memorably. To exploit... uh, we mean celebrate... this legacy, a Mongolian restaurant in London offered free DNA tests for male customers who want to know if they're descended from G.K. The restaurant offers free dinners to the Great One's progeny. It could end up being an expensive promotion. Given the amount of time that has passed, and Khan's profligate semen, it's estimated there could be as many as 17 million descendants alive today. And yet, somehow, it still seems special.
|


|
Xiaocheng Tang
唐小程
Staff Research Scientist
DiDi AI Labs, Mountain View, CA
xiaochengtang at didiglobal dot com
Xiaocheng works at the intersection of reinforcement learning, optimization, control and operation research at DiDi AI Labs. He has published more than five top-conference papers in the field during his first two years at DiDi. Additionally, his work on joint optimization of order dispatching and reposition via reinforcement learning won Best Demo Awards at NeurIPS 2018. He and his team received Daniel H. Wagner prize for Excellence in Operations Research practice at INFORMS 2019.
Xiaocheng is also an Apache Committer contributing to Apache MADlib — a distributed in-database machine learning library. He received his PhD degrees in Optimization and Machine Learning advised by Prof. Katya Scheinberg. During his graduate study, he has been actively engaged in analyzing and designing novel optimization theories and algorithms for large-scale problems arising from various applications and in particular those in Artificial Intelligence. His work in fast and scalable training algorithms and convergence theory was presented at NIPS 2013 and was accepted as a journal paper by Mathematical Programming.
He used to work in Numerical Methods group in IBM T.J. Watson Research, Yorktown Heights, NY, and was funded by Yahoo FREP award working on online AD targeting and user personalization in Machine Learning group in Yahoo Labs, Sunnyvale, CA in 2014. He earned his undergrad degree with High Honors from Chu KoChen Honors College in Zhejiang University, Hangzhou, China .
Email /
GitHub /
Google Scholar /
LinkedIn
|


Handwriting Classifier! : Draw on canvas for result
I shall fix this in next version by using transfer learning


< Day Day Up >
Endnotes
This is one of those rare circumstances where saying "never" is appropriate.
< Day Day Up >


Preparing for China - Goals
Updated on | By DJ Strouse | Permalink
My goals for my summer (internship) in Shanghai.
Every human being who was good at life had goals. I can’t profess to be a success yet, but by the following standards, perhaps my foray into the Orient (again, I promise to stop saying that word once I get there) will be.
The Job
-To have a completed project I can point at and say, ‘Look what I did!’ (i.e. a restaurant I opened, ad advertising campaign I created, or a country named after me)
-To be on a first name basis with my boss and co-workers and be able to call them friends for life
-To be offered the chance to return for a permanent position (even though I’d never accept)
The Culture
-To improve my Chinese to the point that I feel comfortable negotiating a room, buying food, getting a job, and sweet talking a young Chinese girl in a rural village
-To be able to voice the subtle differences between American and Chinese business
-To learn to cook a variety of vegetarian Chinese dishes well enough to reproduce them for friends in the States who will (1) recognize that it is Chinese food and (2) not order pizza
-To develop a thorough enough understanding of the relationship between average citizen and government that I can convince someone at a party that I wrote a book on the subject
-To develop a thorough enough understanding of the Chinese water shortage that I can convince someone at a party that I wrote a book on the subject
Exploring
-To exhaust all worthy day trips from Shanghai
-To win a photo contest of some sort with the pictures I acquire in the surrounding areas
-To run up and down the Bund so often that I can wave to people who will wave back and smile
People
-To make enough friends in Shanghai that I can return and live and eat free for a month
-To meet at least one friend to intelligently discuss each of the following topics with: social entrepreneurship projects, Chinese economic growth, Chinese education, China’s water crisis, and nanotechnology
Free time
-To upgrade the Engineers Without Borders - USC website to the point that any student interested in joining can look at the the site and understand exactly where we are at
-To construct a personal web page that includes my current projects, travels, reads, interests, hikes, classes, and more
-To solidify my calculus to the point that I no longer have to qualify explanations in physics with, “My calculus isn’t perfect but…”
This post will be fluid and subject to edits up until I leave.


1.0 - Layout
General layout parameters of the site.
1.1 - Responsive Design.
Supporting multiple device form factors is critical for the display of health records. For instance, records are frequently viewed on mobile phones during encouters with medical providers.
To gracefully degrade, this style guide suggests the use of the responsive grid system in Twitter Bootstrap. This system uses media query break points to trigger degradation across devices of nearly any form factor. More information on the responsive grid system can be found at getbootstrap.com.
As a general rule, care must be taken to ensure there isn't a loss of information during transition between form factors. Details about a record component, for example an allergy's reactions, if not immediately viewable following transition must still be accessible. This means clear visual indicators for a user to access collapsed or hidden data.
Note how by adjusting the browser window, the below blocks dynamically stack.
Default styling

<button type="button" class="btn btn-primary btn-block">Block One</button>

<button type="button" class="btn btn-default btn-block">Block Two</button>

1.2 - Page Structure
The primary navigation of the site should be statically fixed to the top and left side of the page. The navigation should feature a user picture and name, so at any time there can be certainty as to whose record is being viewed.
The navigation fixed to the top will be constant through all pages but the navigation on the left side is secondary and will vary based on the section.
There should be plenty of negative space to reduce confusion and better orient a user. In addition to the top and left-side navigation bars, each page will have a title and breadcrumbs to better orient the user.
Data will generally be displayed in a timeline view -- a summary in form of a horizontal timeline at the top of main body of content, with the details below organized using paneled tables.
Depending on the section and type of data, some pages might include data visualizations in the body of the page.
The below example illustrates these guidelines in a mockup of a patient record visualization.
Default styling

1.3 - Footer Usage
The footer of the site can be modified further to include additional navigation links such as 'About Us', 'FAQ', and 'Contact Us'. Who and what these links point to depend on the context of the PHR. The basic footer attributes design and development to Amida, noting that the DRE is Open Source and licensed under Creative Commons. It is centered and placed at the foot of the browser.
Default styling

Made by Amida Technology Solutions | Licensed under Creative Commons


Contato
The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.


{%- block title %}
"term in quotes"
-term
term
user:[author]
ver:[version]
ver:1.12
game:[game]
notif:[notification]
notif:CKAN
downloads:>[count]
downloads:<[count]
followers:>[count]
followers:<[count]


Yes I've quit on level1 of dungeon in this game(edited)
jl777c16-Feb-19 08:08 PM
dungeonlevel would be set to 1, but player level should be preserved if it showed it on startup
TonyL16-Feb-19 08:09 PM
@Cryptofist You may save your warrior by Shift + q and then press y + Enter
jl777c16-Feb-19 08:09 PM
there is something strange with the recreation of the dungeon too. I fixed the infinite loop
but the replay is wrong
TonyL16-Feb-19 08:09 PM
I bet it thinking that any player starting as lvl1 warrior even if you reusing him(edited)
jl777c16-Feb-19 08:10 PM
doesnt it show the proper level of character when you start?
Cryptofist16-Feb-19 08:10 PM
How do I use, bailout rpc ?
TonyL16-Feb-19 08:10 PM
In rogue game yes - in replay nope
@Cryptofist TUI will issue it automatically
jl777c16-Feb-19 08:10 PM
aha! ok, investigating
TonyL16-Feb-19 08:12 PM
I didn't pay much attention to such cases before because it's hard to check without replay - but now I think that if in warrior reusing game left dungeon with more than 12hp missing from maxhp amount it's counting as dead. Can play tomorrow to be totally sure
Cryptofist16-Feb-19 08:13 PM
I did that then still 0 warriors when i checked
TonyL16-Feb-19 08:14 PM
Bailout transaction should be mined first to see warrior in list (you can check mempool status in TUI Utility)
jl777c16-Feb-19 08:14 PM
wait for confirmation
Cryptofist16-Feb-19 08:14 PM
Ok
jl777c16-Feb-19 08:14 PM
@TonyL now you can extract keystrokes and replay you can verify if the replay is correct
clearly if the replay is messed up, any sort of result is possible
Cryptofist16-Feb-19 08:14 PM
Gotta extract all this from your brains so everyone else can figure it out.
jl777c16-Feb-19 08:15 PM
the code seems like it should work the same for gameplay and replay...
but maybe with many reusings of playerdata, something goes wrong
TonyL16-Feb-19 08:17 PM
@Cryptofist I will add notification print after game finishing to TUI
@jl777c for this second game actions on replay are correct (only not correct that I have lvl1 warrior since he was lvl7 and he had around 60max hp when on replay maxhp12) and in the end of replay warrior left with 10 hp - not dead(edited)
Yes, was quite fast - i've spawn with not much hp and a lot of of enemies around so tried to fight few moves without armor and weapon and then decided back to base for better roll
jl777c16-Feb-19 08:57 PM
ok, so if the deadlock is fixed, are there any bugs?
Succesfully made bailout for deadlocked warrior. Yay - second bug hunt for Leeroy Jenkins today. Same warrior first detected this bug with full inventory hang and then deadlocked in the next game (edited)
jl777c16-Feb-19 09:01 PM
so he is alive?
TonyL16-Feb-19 09:01 PM
Deadlock and dead it's two different warriors and two different games


Upload an e-book in either .MOBI or de-DRMed .AZW3 format and have it coverted to either horizontal text, or vertical text


Lorem ipsum dolor sit amet consectetur adipiscing elit, lacus nulla potenti suscipit felis habitasse, aptent leo vestibulum odio himenaeos vehicula.
Adivina el número
We have selected a random number between 1 and 100. See if you can guess it in 10 turns or fewer.
We'll tell you if your guess was too high or too low.


Changeset 240 for releases/mystic-0.2a1/mystic/__init__.py
- Timestamp:
- 05/21/10 13:26:14 (6 years ago)
- Location:
- releases/mystic-0.2a1
- Files:
-
- 1 added
- 1 edited
- 1 copied
-
. (added)
-
mystic (copied) (copied from mystic/mystic)
-
mystic/__init__.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
releases/mystic-0.2a1/mystic/__init__.py
r224 r240 3 3 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 4 # 5 # Patrick Hung & Mike McKerns, Caltech5 # Mike McKerns & Patrick Hung, Caltech 6 6 # (C) 1997-2010 All Rights Reserved 7 7 # … … 52 52 - easily generate a fit model (several example models are included) 53 53 - configure and auto-generate a cost function from a model 54 - extend fit jobs to parallel & distributed resources 54 55 - couple models with optimization parameter constraints [COMING SOON] 55 - extend fit jobs to parallel & distributed resources [COMING SOON]56 56 57 57 … … 59 59 =============== 60 60 61 This release version is mystic-0. 1a2. You can download it here.61 This release version is mystic-0.2a1. You can download it here. 62 62 The latest version of mystic is available from:: 63 63 http://dev.danse.us/trac/mystic … … 72 72 download the tarball, unzip, and run the installer:: 73 73 [download] 74 $ tar -xvzf mystic-0. 1a2.tgz75 $ cd mystic-0. 1a274 $ tar -xvzf mystic-0.2a1.tgz 75 $ cd mystic-0.2a1 76 76 $ python setup py build 77 77 $ python setup py install … … 127 127 interface. 128 128 129 Mystic extends the solver API to parallel computing by providing a solver 130 class that utilizes the parallel map-reduce algorithm. Mystic includes 131 a set of defaults in `mystic.mystic.python_map` that mirror the behavior 132 of serial python and the built-in python map function. Mystic solvers 133 built on map-reduce can utilize the distributed and parallel tools provided 134 by the `pathos` package, and thus with little new code solvers are 135 extended to high-performance computing. For more information, see 136 `mystic.mystic.abstract_map_solver`, `mystic.mystic.abstract_nested_solver`, 137 and the pathos documentation at http://dev.danse.us/trac/pathos. 138 129 139 Important classes and functions are found here:: 130 140 - mystic.mystic.abstract_solver [the solver API definition] 141 - mystic.mystic.abstract_map_solver [the parallel solver API] 142 - mystic.mystic.abstract_nested_solver [the nested solver API] 131 143 - mystic.mystic.termination [solver termination conditions] 132 144 - mystic.mystic.strategy [solver population mutation strategies] 133 145 - mystic.models.abstract_model [the model API definition] 134 146 - mystic.models.forward_model [cost function generator] 135 - mystic.mystic.tools [monitors, function wrappers, and other useful tools] 147 - mystic.mystic.tools [monitors, function wrappers, and other tools] 148 - mystic.mystic.math [some useful mathematical functions and tools] 136 149 137 150 Solvers are found here:: 138 151 - mystic.mystic.differential_evolution [Differential Evolution solvers] 139 152 - mystic.mystic.scipy_optimize [Nelder-Mead and Powell's Directional solvers] 153 - mystic.mystic.nested [Batch Grid and Scattershot solvers] 140 154 141 155 … … 145 159 Please see http://dev.danse.us/trac/mystic for further information. 146 160 """ 147 __version__ = '0. 1a2'148 __author__ = 'Mike McKerns , Patrick Hung'161 __version__ = '0.2a1' 162 __author__ = 'Mike McKerns' 149 163 150 164 __license__ = """ … … 182 196 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 183 197 184 Copyright (c) 20 09California Institute of Technology. All rights reserved.198 Copyright (c) 2010 California Institute of Technology. All rights reserved. 185 199 186 200 … … 196 210 197 211 # solvers 198 import differential_evolution, scipy_optimize 212 import differential_evolution, scipy_optimize, nested 199 213 200 214 # strategies, termination conditions
Note: See TracChangeset
for help on using the changeset viewer.


ID:
{{ supplier?.id }}
Name:
{{ supplier?.name }}
Address 1:
{{ supplier?.address1 }}
Address 2:
{{ supplier?.address2 }}
City:
{{ supplier?.city }}
State:
{{ supplier?.state }}
Zip Code:
{{ supplier?.zipCode }}
Country:
{{ supplier?.country }}
Contact:
{{ supplier?.contactName }}
Contact Phone Number:
{{ supplier?.contactPhoneNumber }}
Contact Email:
{{ supplier?.contactEmail }}
Active:
{{ supplier?.active }}


Nintendo's Labo Robot is Mega-Cheap for Black Friday
by Holly BrockwellWe're huge fans of Labo, Nintendo's risk-taking cardboard DIY accessories for the Nintendo Switch.
We first tried out the awesome robot kit back when it first came out last April, but if you haven't got one yet, this is the best chance yet to grab it at a bargain price.
For Black Friday, Amazon has reduced the Labo Robot Toy-Con kit from £39.49 to just £14.99, a saving of £24.50, or 62% for all the percentage fans out there.
The Labo Robot Toy-Con kit is suitable for kids 3 and up, plus adults of course -- but you will need a full Nintendo Switch to be able to use it, because you have to be able to put the Joy-Cons inside it, and the ones on the Switch Lite don't come off.
Grab it here while it's cheap, then check out Nintendo's own Black Friday deals.


---
title: "Tutorial: 0 - Introduction"
permalink: /tutorial/0-introduction.html
---
The GWT-Wizard tutorial will guide you in creating a new project and implementing a wizard with GWT-Wizard. By the end of the tutorial, we will have covered the following topics:
- Creating a new project and installing GWT-Wizard
- Creating a @WizardContext@ for wizard specific data
- Creating wizard pages using MVP techniques
- Controlling wizard flow with @WizardPage@ hooks and page links
- Improving wizard performance with lazy page loading and @GWT.runAsync@
- Providing your own custom view for the wizard
Our Wizard
We will be designing a wizard for a fake web site with some sort of subscription plan. The wizard will guide the user through creating a new account and choosing a plan. Our wizard will have the following pages and logic:
- Welcome page
- User and subscription information
- Free plan information
- Deluxe plan information
- Confirmation
In step two, the user will choose which subscription plan they wish to use. If the user chooses the free plan, the wizard will continue to page three and then skip page four; if the user choose the deluxe plan, the wizard will skip page three and display page four instead.