Class JXG.AbstractRenderer
↳ JXG.AbstractRenderer
JXG.AbstractRenderer
Defined in: abstract.js.
| Constructor Attributes | Constructor Name and Description |
|---|---|
|
This class defines the interface to the graphics part of JSXGraph. |
| Field Attributes | Field Name and Description |
|---|---|
|
The HTML element that stores the JSXGraph board in it.
|
|
|
If this property is set to true the visual properties of the elements are updated
on every update.
|
|
|
This is used to easily determine which renderer we are using
|
|
|
The vertical offset for Text elements.
|
| Method Attributes | Method Name and Description |
|---|---|
| <private> |
_updateVisual(element, not, enhanced)
Update visual properties, but only if JXG.AbstractRenderer#enhancedRendering or enhanced is set to true.
|
|
appendChildPrim(node, level)
Appends a node to a specific layer level.
|
|
|
appendNodesToElement(element, type)
Stores the rendering nodes.
|
|
|
changePointStyle(element)
Changes the style of a JXG.Point.
|
|
|
createPrim(type, id)
Creates a node of a given type with a given id.
|
|
|
Create crosshair elements (Fadenkreuz) for presentations.
|
|
|
displayCopyright(str, fontsize)
Shows a small copyright notice in the top left corner of the board.
|
|
|
drawCurve(element)
|
|
|
drawEllipse(element)
Draws a JXG.Circle
|
|
|
drawImage(element)
Draws an JXG.Image on a board; This is just a template that has to be implemented by special
renderers.
|
|
|
drawInternalText(element)
An internal text is a JXG.Text element which is drawn using only
the given renderer but no HTML.
|
|
|
drawLine(element)
Draws a line on the JXG.Board.
|
|
|
drawPoint(element)
Draws a point on the JXG.Board.
|
|
|
drawPolygon(element)
Draws a JXG.Polygon on the JXG.Board.
|
|
|
drawText(element)
|
|
|
drawTicks(element)
Creates a rendering node for ticks added to a line.
|
|
|
drawZoomBar(board)
The tiny zoom bar shown on the bottom of a board (if showNavigation on board creation is true).
|
|
|
getElementById(id)
Wrapper for getElementById for maybe other renderers which elements are not directly accessible by DOM
methods like document.getElementById().
|
|
|
hide(element)
Hides an element on the canvas; Only a stub, requires implementation in the derived renderer.
|
|
|
Hide a specific crosshair.
|
|
|
highlight(element)
Highlights an object, i.e.
|
|
|
joinTransforms(element, transformations)
Multiplication of transformations without updating.
|
|
|
makeArrows(element)
Can be used to create the nodes to display arrows.
|
|
|
noHighlight(element)
Uses the normal colors of an object, i.e.
|
|
|
remove(node)
Removes an element node.
|
|
|
removeDraft(element)
Puts an object from draft mode back into normal mode.
|
|
|
removeToInsertLater(element)
Remove an element and provide a function that inserts it into its original position.
|
|
|
resize(w, h)
Resizes the rendering element
|
|
|
setBuffering(node, type)
Sets the buffering as recommended by SVGWG.
|
|
|
setDashStyle(element)
Sets an element's dash style.
|
|
|
setDraft(element)
Puts an object into draft mode, i.e.
|
|
|
setGradient(element)
Sets up nodes for rendering a gradient fill.
|
|
|
setObjectFillColor(element, color, opacity)
Sets an objects fill color.
|
|
|
setObjectStrokeColor(element, color, opacity)
Changes an objects stroke color to the given color.
|
|
|
setObjectStrokeWidth(element, width)
Sets an element's stroke width.
|
|
|
setPropertyPrim(node, key, val)
Sets a node's attribute.
|
|
|
setShadow(element)
Sets the shadow properties to a geometry element.
|
|
|
show(element)
Shows a hidden element on the canvas; Only a stub, requires implementation in the derived renderer.
|
|
|
Show a specific crosshair.
|
|
|
Stop redraw.
|
|
|
transformImage(element, transformations)
Applies transformations on images and text elements.
|
|
|
Restart redraw.
|
|
|
updateCurve(element)
Updates visual appearance of the renderer element assigned to the given JXG.Curve.
|
|
|
updateEllipse(element)
Updates visual appearance of a given JXG.Circle on the JXG.Board.
|
|
|
updateEllipsePrim(node, x, y, rx, ry)
Updates an ellipse node primitive.
|
|
|
updateGradient(element)
Updates the gradient fill.
|
|
|
updateImage(element)
Updates the properties of an JXG.Image element.
|
|
|
updateImageStyle(el, doHighlight)
Updates CSS style properties of a JXG.Image node.
|
|
|
updateImageURL(element)
If the URL of the image is provided by a function the URL has to be updated during updateImage()
|
|
|
updateInternalText(element)
Updates visual properties of an already existing JXG.Text element.
|
|
| <private> |
updateInternalTextStyle(element, strokeColor, strokeOpacity)
Set color and opacity of internal texts.
|
|
updateLine(element)
Updates visual appearance of the renderer element assigned to the given JXG.Line.
|
|
|
updateLinePrim(node, p1x, p1y, p2x, p2y, board)
Refreshes a line node.
|
|
|
updatePathPrim(node, pathString, board)
Updates a path element.
|
|
|
updatePathStringBezierPrim(element)
Builds a path data string from a JXG.Curve element such that the curve looks like hand drawn.
|
|
|
updatePathStringPoint(element, size, type)
Builds a path data string to draw a point with a face other than rect and circle.
|
|
|
updatePathStringPrim(element)
Builds a path data string from a JXG.Curve element.
|
|
|
updatePoint(element)
Updates visual appearance of the renderer element assigned to the given JXG.Point.
|
|
|
updatePolygon(element)
Updates properties of a JXG.Polygon's rendering node.
|
|
|
updatePolygonPrim(node, element)
Update a polygon primitive.
|
|
|
updateRectPrim(node, x, y, w, h)
Update a rectangle primitive.
|
|
|
updateText(el)
Updates visual properties of an already existing JXG.Text element.
|
|
|
updateTextStyle(element, doHighlight)
Updates font-size, color and opacity propertiey and CSS style properties of a JXG.Text node.
|
|
|
updateTicks(element)
|
|
|
updateTouchpoint(i, pos)
Move a specific crosshair.
|
This class defines the interface to the graphics part of JSXGraph. This class is an abstract class, it actually does not render anything. This is up to the JXG.SVGRenderer, JXG.VMLRenderer, and JXG.CanvasRenderer classes. We strongly discourage you from using the methods in these classes directly. Only the methods which are defined in this class and are not marked as private are guaranteed to exist in any renderer instance you can access via JXG.Board#renderer. But not all methods may work as expected.
The methods of this renderer can be divided into different categories:
- Draw basic elements
- In this category we find methods to draw basic elements like JXG.Point, JXG.Line, and JXG.Curve as well as assisting methods tightly bound to these basic painters. You do not need to implement these methods in a descendant renderer but instead implement the primitive drawing methods described below. This approach is encouraged when you're using a XML based rendering engine like VML and SVG. If you want to use a bitmap based rendering technique you are supposed to override these methods instead of the primitive drawing methods.
- Draw primitives
- This category summarizes methods to handle primitive nodes. As creation and management of these nodes is different among different the rendering techniques most of these methods are purely virtual and need proper implementation if you choose to not overwrite the basic element drawing methods.
- Attribute manipulation
- In XML based renders you have to manipulate XML nodes and their attributes to change the graphics. For that purpose attribute manipulation methods are defined to set the color, opacity, and other things. Please note that some of these methods are required in bitmap based renderers, too, because some elements like JXG.Text can be HTML nodes floating over the construction.
- Renderer control
- Methods to clear the drawing board or to stop and to resume the rendering engine.
- Default Value:
- true
if (board.renderer.type === 'vml') { // do something }
- Default Value:
- 8
- Parameters:
- {JXG.GeometryElement} element
- The element to update
- {Object} not Optional, Default: {}
- Select properties you don't want to be updated: {fill: true, dash: true} updates everything except for fill and dash. Possible values are stroke, fill, dash, shadow, gradient.
- {Boolean} enhanced Optional, Default: false
- If true, JXG.AbstractRenderer#enhancedRendering is assumed to be true.
- Parameters:
- {Node} node
- A DOM tree node.
- {Number} level
- The layer the node is attached to. This is the index of the layer in JXG.SVGRenderer#layer or the z-index style property of the node in VMLRenderer.
- Parameters:
- {JXG.GeometryElement} element
- A JSXGraph element.
- {String} type
- The XML node name. Only used in VMLRenderer.
- Parameters:
- {String} type
- The type of the node to create.
- {String} id
- Set the id attribute to this.
- Returns:
- {Node} Reference to the created node.
- Parameters:
- {Number} n
- Number of crosshairs.
- Parameters:
- {String} str
- The copyright notice itself
- {Number} fontsize
- Size of the font the copyright notice is written in
- Parameters:
- {JXG.Curve} element
- Reference to a graph object, that has to be plotted.
- Parameters:
- {JXG.Circle} element
- Reference to a JXG.Circle object that has to be drawn.
- Parameters:
- {JXG.Image} element
- Reference to the image object that is to be drawn
- See:
- Text
- JXG.Text
- JXG.AbstractRenderer#updateInternalText
- JXG.AbstractRenderer#drawText
- JXG.AbstractRenderer#updateText
- JXG.AbstractRenderer#updateTextStyle
- Parameters:
- {JXG.Line} element
- Reference to a line object, that has to be drawn.
- Parameters:
- {JXG.Polygon} element
- Reference to a Polygon object, that is to be drawn.
- See:
- Text
- JXG.Text
- JXG.AbstractRenderer#drawInternalText
- JXG.AbstractRenderer#updateText
- JXG.AbstractRenderer#updateInternalText
- JXG.AbstractRenderer#updateTextStyle
- Parameters:
- {JXG.Line} element
- A arbitrary line.
- Parameters:
- {JXG.Board} board
- Reference to a JSXGraph board.
- Parameters:
- {String} id
- Unique identifier for element.
- Returns:
- {Object} Reference to a JavaScript object. In case of SVG/VMLRenderer it's a reference to a SVG/VML node.
- Parameters:
- {JXG.GeometryElement} element
- Reference to the geometry element that has to disappear.
- Parameters:
- {Number} i
- Number of the crosshair to show
- Parameters:
- {JXG.GeometryElement} element
- Reference of the object that will be highlighted.
- Returns:
- {JXG.AbstractRenderer} Reference to the renderer
- Parameters:
- {JXG.GeometryElement} element
- A JSXGraph element. We only need its board property.
- {Array} transformations
- An array of JXG.Transformations.
- Returns:
- {Array} A matrix represented by a two dimensional array of numbers.
- Parameters:
- {JXG.GeometryElement} element
- The element the arrows are to be attached to.
- Parameters:
- {JXG.GeometryElement} element
- Reference of the object that will get its normal colors.
- Returns:
- {JXG.AbstractRenderer} Reference to the renderer
- Parameters:
- {Node} node
- The node to remove.
- Parameters:
- {JXG.GeometryElement} element
- Reference of the object that no longer is in draft mode.
Author: KeeKim Heng, Google Web Developer.
- Parameters:
- {Element} element
- The element to be temporarily removed
- Returns:
- {Function} A function that inserts the element into its original position
- Parameters:
- {Number} w
- New width
- {Number} h
- New height
- Parameters:
- {Node} node
- The SVG DOM Node which buffering type to update.
- {String} type
- Either 'auto', 'dynamic', or 'static'. For an explanation see http://www.w3.org/TR/SVGTiny12/painting.html#BufferedRenderingProperty.
- Parameters:
- {JXG.GeometryElement} element
- An JSXGraph element.
- Parameters:
- {JXG.GeometryElement} element
- Reference of the object that is in draft mode.
- Parameters:
- element
- Parameters:
- {JXG.GeometryElement} element
- Reference of the object that wants a new fill color.
- {String} color
- Color in a HTML/CSS compatible format. If you don't want any fill color at all, choose 'none'.
- {Number} opacity
- Opacity of the fill color. Must be between 0 and 1.
- Parameters:
- {JXG.GeometryElement} element
- Reference of the JXG.GeometryElement that gets a new stroke color.
- {String} color
- Color value in a HTML compatible format, e.g. #00ff00 or green for green.
- {Number} opacity
- Opacity of the fill color. Must be between 0 and 1.
- Parameters:
- {JXG.GeometryElement} element
- Reference to the geometry element.
- {Number} width
- The new stroke width to be assigned to the element.
- Parameters:
- {Node} node
- The node that is to be updated.
- {String} key
- Name of the attribute.
- {String} val
- New value for the attribute.
- Parameters:
- {JXG.GeometryElement} element
- Reference to a geometry object, that should get a shadow
- Parameters:
- {JXG.GeometryElement} element
- Reference to the object that has to appear.
- Parameters:
- {Number} i
- Number of the crosshair to show
- Parameters:
- {JXG.Image|JXG.Text} element
- A JXG.Image or JXG.Text object.
- {Array} transformations
- An array of JXG.Transformation objects. This is usually the transformations property of the given element el.
- Parameters:
- {JXG.Circle} element
- Reference to a JXG.Circle object, that has to be updated.
- Parameters:
- {Node} node
- Reference to the node.
- {Number} x
- Centre X coordinate
- {Number} y
- Centre Y coordinate
- {Number} rx
- The x-axis radius.
- {Number} ry
- The y-axis radius.
- Parameters:
- {JXG.GeometryElement} element
- An JSXGraph element with an area that can be filled.
- Parameters:
- {JXG.Text} el
- Reference to the JXG.Image object, that has to be updated.
- {Boolean} doHighlight
- Parameters:
- {JXG.Image} element
- Reference to an image object.
- See:
- Text
- JXG.Text
- JXG.AbstractRenderer#drawInternalText
- JXG.AbstractRenderer#drawText
- JXG.AbstractRenderer#updateText
- JXG.AbstractRenderer#updateTextStyle
- Parameters:
- element
- strokeColor
- strokeOpacity
- Parameters:
- {Node} node
- The node to be refreshed.
- {Number} p1x
- The first point's x coordinate.
- {Number} p1y
- The first point's y coordinate.
- {Number} p2x
- The second point's x coordinate.
- {Number} p2y
- The second point's y coordinate.
- {JXG.Board} board
- Parameters:
- {Node} node
- The path node.
- {String} pathString
- A string formatted like e.g. 'M 1,2 L 3,1 L5,5'. The format of the string depends on the rendering engine.
- {JXG.Board} board
- Reference to the element's board.
- Parameters:
- element
- Parameters:
- {JXG.Point} element
- The point element
- {Number} size
- A positive number describing the size. Usually the half of the width and height of the drawn point.
- {String} type
- A string describing the point's face. This method only accepts the shortcut version of each possible face: x, +, <>, ^, v, >, <
- Parameters:
- element
- Parameters:
- {JXG.Polygon} element
- Reference to a JXG.Polygon object, that has to be updated.
- Parameters:
- {Node} node
- {JXG.Polygon} element
- A JSXGraph element of type JXG.Polygon
- Parameters:
- {Node} node
- The node yearning to be updated.
- {Number} x
- x coordinate of the top left vertex.
- {Number} y
- y coordinate of the top left vertex.
- {Number} w
- Width of the rectangle.
- {Number} h
- The rectangle's height.
- See:
- Text
- JXG.Text
- JXG.AbstractRenderer#drawText
- JXG.AbstractRenderer#drawInternalText
- JXG.AbstractRenderer#updateInternalText
- JXG.AbstractRenderer#updateTextStyle
- Parameters:
- {JXG.Text} element
- Reference to the JXG.Text object, that has to be updated.
- {Boolean} doHighlight
- See:
- Text
- JXG.Text
- JXG.AbstractRenderer#drawText
- JXG.AbstractRenderer#drawInternalText
- JXG.AbstractRenderer#updateText
- JXG.AbstractRenderer#updateInternalText
- JXG.AbstractRenderer#updateInternalTextStyle
- Parameters:
- {JXG.Ticks} element
- Reference of a ticks object that has to be updated.
- Parameters:
- {Number} i
- Number of the crosshair to show
- {Array} pos
- New positon in screen coordinates


issue309 test
Here I commented out in my tween.js repair code, enable the previous code, you can now see the problem, tween2 this tween object can not install the expected completion animation, that in tween1 the complete implementation of the TWEEN . Twove (tween1), TWEEN.update do not know tween1 has been deleted, TWEEN.update the _tweens.splice (i, 1) put tween2 this innocent object to remove the ...


closing as duplicate of #284
closed
by Jane Sandberg at 2022-08-11 21:39:53.All the saved searches have been removed. The dss:clean:guest_users
rake task is already set to run daily.
assigned
by Jane Sandberg at 2022-08-11 21:39:45.referenced
by Jane Sandberg at 2022-08-11 22:14:23.merged
by Jane Sandberg at 2022-08-11 22:14:23.closed
by Jane Sandberg at 2022-08-11 22:14:24.head_ref_deleted
by Jane Sandberg at 2022-08-11 22:14:24.@regineheberlein and @carolyncole : this ticket is completed, and can be closed, right?
no, this is still pending!
mentioned
by None at 2022-08-10 23:25:11.subscribed
by None at 2022-08-10 23:25:11.mentioned
by None at 2022-08-10 23:25:28.subscribed
by None at 2022-08-10 23:25:28.assigned
by None at 2022-08-11 13:31:34.closed
by None at 2022-08-11 13:31:47.assigned
by None at 2022-08-11 13:41:21.assigned
by None at 2022-08-11 14:05:01.closed
by None at 2022-08-11 14:48:24.assigned
by None at 2022-08-11 15:16:24.assigned
by None at 2022-08-11 15:53:01.referenced
by Max Kadel at 2022-08-11 17:38:57.merged
by Max Kadel at 2022-08-11 17:38:57.closed
by Max Kadel at 2022-08-11 17:38:57.head_ref_deleted
by Max Kadel at 2022-08-11 17:38:58.@faithc @LynnDurgin Three leaf components don't currently have containers associated with them:
aspaceC0140c74364-56855 aspaceC0140c72729-43518 aspaceC0140c87678-60535
Is that a data issue? They're currently being skipped by the transformation.
mentioned
by None at 2022-08-11 20:15:32.subscribed
by None at 2022-08-11 20:15:32.mentioned
by None at 2022-08-11 20:15:32.subscribed
by None at 2022-08-11 20:15:32.16 components in the data have descendants and don't get item records in Alma (only lowest-level / leaf components get stand-alone records)
3 leaf components in the data have no linked containers
assigned
by None at 2022-08-11 20:16:25.renamed
by None at 2022-08-11 20:16:37.head_ref_force_pushed
by Jane Sandberg at 2022-08-11 18:41:49.deployed
by None at 2022-08-11 20:13:33.Once #1377 is closed we can proceed with more of these.
labeled
by None at 2022-08-11 19:04:17.This works well for me.
Are we expecting any problems if Spotlight chooses a different packaging solution, and are comfortable switching to it if so?
Looks like a duplicate of https://github.com/pulibrary/dpul/issues/1362 but I'm not sure which hb error is still active.
@kelea99 was someone trying to upload a Charles Darwin image? Does this need attention or everything is okay?
labeled
by None at 2022-08-11 20:31:14.labeled
by None at 2022-08-11 20:31:14.mentioned
by Kim Leaman at 2022-08-11 20:31:46.subscribed
by Kim Leaman at 2022-08-11 20:31:46.closed
by None at 2022-08-11 21:20:26.labeled
by None at 2022-08-11 21:27:01.labeled
by None at 2022-08-11 21:27:01.renamed
by None at 2022-08-11 21:27:49.It looks like a bunch of these have null titles.
in the "lae" exhibit.
examples: - https://figgy.princeton.edu/catalog/4d969fc8-4c3f-4295-b3d4-e43b37d9df9c.jsonld - https://figgy.princeton.edu/catalog/a4c8879a-bf51-4d2b-9c41-7667c5e2c4ef.jsonld
labeled
by Trey Pendragon at 2022-08-11 15:14:45.labeled
by Trey Pendragon at 2022-08-11 15:14:45.renamed
by None at 2022-08-11 15:14:55.This is happening again. Adriana just wrote to me to let me know she is having the same issue with two microfilm reels:
- The two reels that I am having issues with are reel 5 (https://figgy.princeton.edu/concern/scannedresources/050078de-71fb-4e04-9ac2-3d63f4a95ed8/structure) and reel 7 (https://figgy.princeton.edu/concern/scanned_resources/d7b31f80-a50a-47fb-8a4a-4781084d08c2/structure)._
Now the Rails upgrade is complete, are we unblocked, @eliotjordan ?
Yep. Unblocked.
mentioned
by Eliot Jordan at 2022-08-11 15:17:29.subscribed
by Eliot Jordan at 2022-08-11 15:17:29.One thing I notice is that even when there are failed derivatives for these resources, there's not the banner message "x/y derivatives generated" or whatever it says that cues ingesters to know there may be an issue. If they're looking for that and not scanning through the actual file list or viewer they won't notice these problems.
Error analysis.
This one was not something I had seen before. - multipart upload failed: undefined method `read' for #IngestableFile:0x0000555f3e839558 - created https://github.com/pulibrary/figgy/issues/5352
No, this is not right. Looks like files are not being cleaned up when derivatives are regenerated.
there are 586 of these. I'm working on extracting a list of ids.
labeled
by None at 2022-08-11 16:07:13.labeled
by None at 2022-08-11 16:07:13.labeled
by Trey Pendragon at 2022-08-11 17:39:50.labeled
by Trey Pendragon at 2022-08-11 17:39:50.labeled
by None at 2022-08-11 17:45:01.renamed
by Eliot Jordan at 2022-08-11 17:50:24.referenced
by Trey Pendragon at 2022-08-11 17:52:21.merged
by Trey Pendragon at 2022-08-11 17:52:21.closed
by Trey Pendragon at 2022-08-11 17:52:21.head_ref_deleted
by Trey Pendragon at 2022-08-11 17:52:22.labeled
by Eliot Jordan at 2022-08-11 17:09:13.labeled
by Eliot Jordan at 2022-08-11 17:09:26.assigned
by Eliot Jordan at 2022-08-11 17:48:24.closed
by Trey Pendragon at 2022-08-11 17:52:22.@hackartisan There's no OCR derivative, it sets an hocr_content property on the FileSet I believe.
labeled
by Trey Pendragon at 2022-08-11 17:55:09.labeled
by Trey Pendragon at 2022-08-11 17:55:09.mentioned
by None at 2022-08-11 17:56:40.subscribed
by None at 2022-08-11 17:56:40.this resource has been deleted
labeled
by Trey Pendragon at 2022-08-11 17:56:22.labeled
by Trey Pendragon at 2022-08-11 17:56:22.closed
by None at 2022-08-11 17:57:26.accidentally clicked the issue create button; we don't need this.
labeled
by Trey Pendragon at 2022-08-11 17:57:10.labeled
by Trey Pendragon at 2022-08-11 17:57:10.closed
by None at 2022-08-11 17:58:00.labeled
by Trey Pendragon at 2022-08-11 18:01:05.labeled
by Trey Pendragon at 2022-08-11 18:01:05.labeled
by Eliot Jordan at 2022-08-11 18:24:43.labeled
by Eliot Jordan at 2022-08-11 18:24:43.renamed
by Eliot Jordan at 2022-08-11 18:25:00.Does this bulk ingest button go in the "Recording" box under the "media reserves" heading? If so should we change that heading? Do we need to ensure that other kinds of recordings can also be bulk ingested?
This file is still bad and is still attached to the resource.
labeled
by Eliot Jordan at 2022-08-11 19:23:28.labeled
by Eliot Jordan at 2022-08-11 19:23:28.closed
by None at 2022-08-11 19:24:55.We used to cache these in memcached hosted on figgy1, maybe something broke?
Only figgy-web-prod-4 can connect to figgy1 memcached.
telnet <IP_ADDRESS> 11211
labeled
by Eliot Jordan at 2022-08-11 17:06:55.labeled
by Eliot Jordan at 2022-08-11 19:46:45.referenced
by Trey Pendragon at 2022-08-11 14:36:48.merged
by Trey Pendragon at 2022-08-11 14:36:48.closed
by Trey Pendragon at 2022-08-11 14:36:48.head_ref_deleted
by Trey Pendragon at 2022-08-11 14:36:49.closed
by Trey Pendragon at 2022-08-11 14:36:49.referenced
by Christina Chortaria at 2022-08-11 16:40:57.merged
by Christina Chortaria at 2022-08-11 16:40:57.closed
by Christina Chortaria at 2022-08-11 16:40:57.head_ref_deleted
by Christina Chortaria at 2022-08-11 16:40:58.Coverage increased (+0.07%) to 94.379% when pulling a03ea2ef8bb57518c4b216b836a54bf42d59e1f1 on banner-recap into 3c7e566da127a13bbf59969c40de311b2cab373a on main.
deployed
by None at 2022-08-11 14:44:06.Coverage increased (+0.07%) to 94.379% when pulling abdf3977365bca787b9fa01ae9ae27c8133653c2 on 403-remove-coffeescript into 3c7e566da127a13bbf59969c40de311b2cab373a on main.
deployed
by None at 2022-08-11 20:26:29.ready_for_review
by None at 2022-08-11 20:32:39.referenced
by Jane Sandberg at 2022-08-11 21:11:08.merged
by Jane Sandberg at 2022-08-11 21:11:08.closed
by Jane Sandberg at 2022-08-11 21:11:08.head_ref_deleted
by Jane Sandberg at 2022-08-11 21:11:09.closed
by Jane Sandberg at 2022-08-11 21:11:09.moved_columns_in_project
by Jane Sandberg at 2022-08-11 21:11:09.deployed
by None at 2022-08-11 21:16:52.referenced
by Jane Sandberg at 2022-08-11 21:28:18.merged
by Jane Sandberg at 2022-08-11 21:28:18.closed
by Jane Sandberg at 2022-08-11 21:28:18.head_ref_deleted
by Jane Sandberg at 2022-08-11 21:28:19.closed
by Jane Sandberg at 2022-08-11 21:28:19.Closing this issue in favor of new tickets that will come out of a refactoring plan.
closed
by Bess Sadler at 2022-08-11 13:48:30.assigned
by Bess Sadler at 2022-08-11 13:50:10.assigned
by Tyler Wade at 2022-08-11 13:50:10.referenced
by Hector Correa at 2022-08-11 15:11:26.merged
by Hector Correa at 2022-08-11 15:11:26.closed
by Hector Correa at 2022-08-11 15:11:26.head_ref_deleted
by Hector Correa at 2022-08-11 15:11:27.referenced
by Hector Correa at 2022-08-11 15:50:54.merged
by Hector Correa at 2022-08-11 15:50:54.closed
by Hector Correa at 2022-08-11 15:50:54.head_ref_deleted
by Hector Correa at 2022-08-11 15:50:55.@Bess (@kelynch fyi ) I think we are going to need to talk further about how the metadata in Dublin Core will be translated to Datacite. There are cases where this may not move neatly.
For example, Neggin shared this record with me: Supplement to PhD Dissertation: "Subsurface Computational Modeling and Policy Analysis of Large-Scale Carbon Capture, Utilization, and Storage (2022)"
"Referenced By" in Neggin's example and "Related Publication" in Bess's example (if an ID is available for the publication) may both fall under the "RelatedIdentifer" property in Datacite, but may use different selections from the controlled lists in the subproperties. (See: RelatedIdentifier in Datacite 4.4) As is, Bess's example might use "Related Item" for a better fit to Datacite. (See: Related Item property in Datacite 4.4)
It will be important to check that both of these fields in Dublin Core/DataSpace have been used consistently, before assuming which of the aforementioned Datacite properties should be applied.
Additionally, we should discuss whether some Dublin Core properties have information that we don't want transferred to Datacite. These might contain information that isn't needed or desired in the new infrastructure. For example, I think Wind will have some thoughts on "Collection" for the main collection. However, these may be important to keep in place for PPPL. In Bess's example, "Description" is capturing an auto-generated message about the README that might not be useful -- but that's something we need to discuss.
mentioned
by Bess Sadler at 2022-08-11 15:59:59.subscribed
by Bess Sadler at 2022-08-11 15:59:59.mentioned
by Kate Lynch at 2022-08-11 15:59:59.subscribed
by Kate Lynch at 2022-08-11 15:59:59.deployed
by None at 2022-08-11 19:21:00.convert_to_draft
by Bess Sadler at 2022-08-11 19:33:50.labeled
by None at 2022-08-11 18:13:30.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 19:37:46.subscribed
by Bess Sadler at 2022-08-11 19:37:46.mentioned
by Hector Correa at 2022-08-11 19:37:46.subscribed
by Hector Correa at 2022-08-11 19:37:46.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 18:20:00.subscribed
by Bess Sadler at 2022-08-11 18:20:00.unsubscribed
by Bess Sadler at 2022-08-11 19:34:51.mentioned
by Bess Sadler at 2022-08-11 19:40:49.subscribed
by Bess Sadler at 2022-08-11 19:40:49.mentioned
by Hector Correa at 2022-08-11 19:40:49.subscribed
by Hector Correa at 2022-08-11 19:40:49.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 19:42:08.subscribed
by Bess Sadler at 2022-08-11 19:42:08.mentioned
by Hector Correa at 2022-08-11 19:42:08.subscribed
by Hector Correa at 2022-08-11 19:42:09.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 19:44:32.subscribed
by Bess Sadler at 2022-08-11 19:44:32.mentioned
by Hector Correa at 2022-08-11 19:44:32.subscribed
by Hector Correa at 2022-08-11 19:44:32.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 19:51:58.subscribed
by Bess Sadler at 2022-08-11 19:51:58.mentioned
by Hector Correa at 2022-08-11 19:51:59.subscribed
by Hector Correa at 2022-08-11 19:51:59.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
transferred
by None at 2022-08-11 18:37:37.mentioned
by Bess Sadler at 2022-08-11 19:58:38.subscribed
by Bess Sadler at 2022-08-11 19:58:38.mentioned
by Hector Correa at 2022-08-11 19:58:38.subscribed
by Hector Correa at 2022-08-11 19:58:38.Hey team! Please add your planning poker estimate with ZenHub @bess @hectorcorrea
mentioned
by Bess Sadler at 2022-08-11 20:06:39.subscribed
by Bess Sadler at 2022-08-11 20:06:39.mentioned
by Hector Correa at 2022-08-11 20:06:39.subscribed
by Hector Correa at 2022-08-11 20:06:39.Waiting on support ticket. I can no longer connect AWS S3 to our collections in globus. This was working on Monday, but stopped working yesterday. I created a support ticket in globus: https://support.globus.org/hc/en-us/requests/357764
Currently the PreCuration Staging Endpoint is the only one still connected to S3. I tried to reregister the PostCuration Endpoint and it failed, even though it had worked on Monday. I though maybe the exposure yesterday may have caused the issue so I created a new key, but that also did not help.
referenced
by Eliot Jordan at 2022-08-10 22:07:52.merged
by Eliot Jordan at 2022-08-10 22:07:52.closed
by Eliot Jordan at 2022-08-10 22:07:53.head_ref_deleted
by Eliot Jordan at 2022-08-10 22:07:53.referenced
by Eliot Jordan at 2022-08-10 22:18:47.merged
by Eliot Jordan at 2022-08-10 22:18:47.closed
by Eliot Jordan at 2022-08-10 22:18:47.head_ref_deleted
by Eliot Jordan at 2022-08-10 22:18:48.referenced
by Eliot Jordan at 2022-08-10 22:19:16.merged
by Eliot Jordan at 2022-08-10 22:19:17.closed
by Eliot Jordan at 2022-08-10 22:19:17.head_ref_deleted
by Eliot Jordan at 2022-08-10 22:19:17.we ran this in prod, staging and qa
referenced
by Jane Sandberg at 2022-08-10 23:11:30.merged
by Jane Sandberg at 2022-08-10 23:11:30.closed
by Jane Sandberg at 2022-08-10 23:11:30.head_ref_deleted
by Jane Sandberg at 2022-08-10 23:11:31.ready_for_review
by None at 2022-08-11 11:28:15.referenced
by None at 2022-08-11 11:28:21.merged
by None at 2022-08-11 11:28:21.closed
by None at 2022-08-11 11:28:21.head_ref_deleted
by None at 2022-08-11 11:28:22.referenced
by Francis Kayiwa at 2022-08-11 20:02:24.this has been run on staging and production
referenced
by Christina Chortaria at 2022-08-11 14:21:18.merged
by Christina Chortaria at 2022-08-11 14:21:18.closed
by Christina Chortaria at 2022-08-11 14:21:19.head_ref_deleted
by Christina Chortaria at 2022-08-11 14:21:19.this has been run on staging and prod.
head_ref_force_pushed
by None at 2022-08-11 14:04:06.ready_for_review
by None at 2022-08-11 14:06:57.referenced
by Christina Chortaria at 2022-08-11 14:21:43.merged
by Christina Chortaria at 2022-08-11 14:21:43.closed
by Christina Chortaria at 2022-08-11 14:21:44.head_ref_deleted
by Christina Chortaria at 2022-08-11 14:21:44.Another one we should delete if it's still there is plum
Here are all the users in the old database. Many of them are not in use because the database tables have been migrated to the new cluster:
TASK [what's in pg_users?] *****************************************************************************************************************************************************************************************************
ok: [***.princeton.edu] => {
"pg_users": {
"databases": {},
"roles": {
"approvals_prod": {
... },
"approvals_staging": {
... },
"bibdata": {
... },
"cdhweb": {
... },
"cicognara": {
... },
"cicognara_staging": {
... },
"csadmin": {
... },
"datadog": {
... },
"dpul": {
... },
"dpul_staging": {
... },
"dss": {
... },
"figgy_demo": {
... },
"figgy_production": {
... },
"figgy_production_readonly": {
... },
"figgy_readonly": {
... },
"figgy_staging": {
... },
"figgy_staging_readonly": {
... },
"figgy_staging_user": {
... },
"geaccirc_prod": {
... },
"geniza": {
... },
"gscatalog": {
... },
"lae": {
... },
"lae_staging": {
... },
"lib_elixir": {
... },
"lib_jobs": {
... },
"lib_statistics_prod": {
... },
"lockers_and_study_rooms_staging": {
... },
"lockers_and_study_spaces_prod": {
... },
"lockers_and_study_spaces_staging": {
... },
"mudd-staging": {
... },
"mudd_prod": {
... },
"mudd_staging": {
... },
"ojs": {
... },
"ojs_prod_db_user": {
... },
"omp_prod_db_user": {
... },
"orangelight": {
... },
"orangelight_alma_qa": {
... },
"orangelight_qa": {
... },
"orangelight_ro": {
... },
"orangelight_staging": {
... },
"ouranos_staging_db_user": {
... },
"pguser": {
... },
"plantain_staging": {
... },
"postgres": {
... },
"postgresadmin": {
... },
"pulfa3_staging": {
... },
"pulfalight_production": {
... },
"pulfalight_staging": {
... },
"pulmap": {
... },
"pulmap_production": {
... },
"pulmap_staging": {
... },
"repec_prod": {
... },
"repec_staging": {
... },
"repmgr": {
... },
"researchdata": {
... }
}
referenced
by Francis Kayiwa at 2022-08-11 14:40:41.merged
by Francis Kayiwa at 2022-08-11 14:40:41.closed
by Francis Kayiwa at 2022-08-11 14:40:41.head_ref_deleted
by Francis Kayiwa at 2022-08-11 14:40:42.referenced
by Francis Kayiwa at 2022-08-11 20:02:24.ready_for_review
by Francis Kayiwa at 2022-08-11 14:57:27.review_requested
by Francis Kayiwa at 2022-08-11 14:57:42.@regineheberlein with this PR, the ASPACE_URL
and ASPACE_STAGING_URL
environment variables would be set on both lib-jobs-production and lib-jobs-staging. Does that seem appropriate?
@sandbergja this fails ci https://github.com/pulibrary/princeton_ansible/runs/7777573168?check_suite_focus=true#step:5:562
head_ref_force_pushed
by Jane Sandberg at 2022-08-10 23:07:01.head_ref_force_pushed
by Jane Sandberg at 2022-08-10 23:13:59.review_requested
by Jane Sandberg at 2022-08-10 23:19:15.ready_for_review
by Jane Sandberg at 2022-08-10 23:19:21.mentioned
by None at 2022-08-10 23:27:06.subscribed
by None at 2022-08-10 23:27:06.mentioned
by Jane Sandberg at 2022-08-11 11:25:13.subscribed
by Jane Sandberg at 2022-08-11 11:25:13.head_ref_force_pushed
by Jane Sandberg at 2022-08-11 15:24:10.head_ref_force_pushed
by Jane Sandberg at 2022-08-11 15:29:02.referenced
by None at 2022-08-11 16:46:13.merged
by None at 2022-08-11 16:46:13.closed
by None at 2022-08-11 16:46:13.head_ref_deleted
by None at 2022-08-11 16:46:14.referenced
by Trey Pendragon at 2022-08-11 16:56:31.merged
by Trey Pendragon at 2022-08-11 16:56:31.closed
by Trey Pendragon at 2022-08-11 16:56:31.head_ref_deleted
by Trey Pendragon at 2022-08-11 16:56:32.renamed
by Trey Pendragon at 2022-08-11 15:26:24.referenced
by Trey Pendragon at 2022-08-11 16:56:47.merged
by Trey Pendragon at 2022-08-11 16:56:47.closed
by Trey Pendragon at 2022-08-11 16:56:47.head_ref_deleted
by Trey Pendragon at 2022-08-11 16:56:48.referenced
by Jane Sandberg at 2022-08-11 18:14:57.merged
by Jane Sandberg at 2022-08-11 18:14:57.closed
by Jane Sandberg at 2022-08-11 18:14:57.head_ref_deleted
by Jane Sandberg at 2022-08-11 18:14:58.assigned
by Jane Sandberg at 2022-08-11 15:48:37.closed
by Jane Sandberg at 2022-08-11 18:14:58.mentioned
by Francis Kayiwa at 2022-08-11 18:18:14.subscribed
by Francis Kayiwa at 2022-08-11 18:18:14.I tried this with the QA, staging, and prod bibdata databases. It behaved as expected, although I did run into https://github.com/pulibrary/princeton_ansible/issues/3246, which I don't think is related.
head_ref_force_pushed
by Alicia Cozine at 2022-08-11 18:58:24.head_ref_force_pushed
by Alicia Cozine at 2022-08-11 20:21:31.head_ref_force_pushed
by Alicia Cozine at 2022-08-11 20:23:17.deployed
by None at 2022-08-11 14:08:11.referenced
by Jane Sandberg at 2022-08-11 17:47:49.merged
by Jane Sandberg at 2022-08-11 17:47:49.closed
by Jane Sandberg at 2022-08-11 17:47:49.head_ref_deleted
by Jane Sandberg at 2022-08-11 17:47:50.head_ref_force_pushed
by None at 2022-08-11 17:53:21.head_ref_force_pushed
by None at 2022-08-11 17:53:32.head_ref_force_pushed
by None at 2022-08-11 17:53:38.referenced
by Max Kadel at 2022-08-11 19:40:15.merged
by Max Kadel at 2022-08-11 19:40:15.closed
by Max Kadel at 2022-08-11 19:40:15.head_ref_deleted
by Max Kadel at 2022-08-11 19:40:16.deployed
by None at 2022-08-11 15:54:11.deployed
by None at 2022-08-11 16:50:38.referenced
by None at 2022-08-11 17:36:24.merged
by None at 2022-08-11 17:36:24.closed
by None at 2022-08-11 17:36:24.head_ref_deleted
by None at 2022-08-11 17:36:24.referenced
by Christina Chortaria at 2022-08-11 20:30:56.merged
by Christina Chortaria at 2022-08-11 20:30:56.closed
by Christina Chortaria at 2022-08-11 20:30:56.head_ref_deleted
by Christina Chortaria at 2022-08-11 20:30:56.referenced
by Jane Sandberg at 2022-08-11 20:43:26.merged
by Jane Sandberg at 2022-08-11 20:43:26.closed
by Jane Sandberg at 2022-08-11 20:43:26.head_ref_deleted
by Jane Sandberg at 2022-08-11 20:43:26.Do we want the "start over" button to show on this page? It's a little confusing to me.
@hackartisan I was wondering the same thing, but since the Contact Us page had it, I figured we should at least be consistent. I'm happy to remove it.
mentioned
by None at 2022-08-11 18:40:50.subscribed
by None at 2022-08-11 18:40:50.


| Methods Summary | ||
|---|---|---|
public
|
||
public
|
||
public
|
||
public
|
||
protected
|
||
protected
|
||
protected
|
||
protected
|
||
protected
|
||
protected
|
||
protected
|
#
getMethodAddress( string $name )
Builds full ManyChat's API method path for current structure
e.g. if instance is named 'bar' and has parent structure 'foo',
and this method is called for build method 'methodName',
it will return '/foo/bar/methodName' string
|
|
public
|


Steenhuisen promises ‘stability’ after being elected interim DA leader
by Queenin MasuabiDA parliamentary leader John Steenhuisen has beaten Makashule Gana to be elected as the interim leader of the party.
In a meeting attended by over 100 delegates on Sunday, Steenhusien was voted to lead the party until April 2020, while Western Cape MEC for Agriculture Ivan Meyer will take over as the interim federal chairperson, replacing Athol Trollip.
Both Trollip and Maimane resigned in October after Helen Zille was voted to be the DA federal council chairperson.
Steenhuisen said he was “humbled” to have been elected as the leader and pledged his commitment to the party.
“I will commit every ounce of my fibre and my being and my energy to restoring our party back on to the path of victory,” he said at a press briefing held at Nkululeko House following his election.
The newly appointed leader slammed rumours that the DA was faced with an ideological crisis and he assured South Africans that he would be bringing back stability to the party.
“I have no doubt as well that a clear message must be sent today that the DA is not in a fight over an ideology or a fight for power,” he reiterated.
He said that race remained a sensitive issue in the country and the party would focus on poverty and inequality.
“We are in a fight against the tide of poverty which has engulfed the lives of so many South African men, women and children and which remains the single biggest enemy in our country,” he said.
Meanwhile, Meyer said he would support Steenhuisen in his mission to rebuild the party.
“Today we have a new pilot in John Steenhuisen, we are taking off, put on your safety belt.  The next step and the next stop is to land safely at the DA conference which will take place in April next year,” according to Meyer.


alameda: Empty Require Test
Empty require array should still call callback.
More info
Check console for messages


The Lotusphere 2011 sessions are published - and what to expect from me
The Lotusphere 2011 Session list has been published on the Lotusphere 2011 web site. Since my sessions in 2010 had been popular (thanks to Tim and Steve) I'll be back with 3 sessions:
See you there.
- SHOW107: The DataSource Session: Take XPages data boldly where no XPages data has been taken before - with Jim Quill
XPages out of the box ships with 2 Domino data sources. Other data could be read using Java libraries leaving them with all complexities around security, connections and state management. Using the XPages data source component model this complexity can be reduced to simple attribute selections. The session will introduce the details of the data source component model and show how to use it to connect to RDBMS, SOAP, REST, PureXML, CouchDB, oData and others. Leveraging the data source model enables automatic property support from Domino Designer and provides seamless integration with existing data bound XPages controls. - AD103: Don't Be Afraid of Curly Brackets: JavaScript for IBM LotusScript Developers
XPages uses JavaScript both on the server and the client side. The session offers an introduction to JavaScript for LotusScript developers. Focusing on server side JavaScript, this session highlights the similarities, differences and common pitfalls. Learn how to write JavaScript style, not just LotusScript in a JavaScript wrapper. - AD107: Microsoft Sharepoint Meets IBM Lotus Domino: Development Deep Dive - with Justin Lee (aka triplez82 of hackerspace.sg fame) - That is Team Singapore!
Lotus Notes and Microsoft Sharepoint aim for similar applications in the enterprise. This session will introduce Sharepoint concepts from a development point of view, compare them with Lotus Domino concepts and discuss integration points. Live code samples for using XPages to read and write from/to Sharepoint highlight the finer points of code integration. Finally, we'll discuss strategies to help stakeholders understand the process and benefits of migrating away from Sharepoint to the Lotus Domino collaborative application platform.
See you there.
Posted by Stephan H Wissel on 07 December 2010 | Comments (1) | categories: Lotusphere


"use strict";
var employee_model_1 = require("./employee.model");
/**EmployeeFactory handels the creation of Employee objects from request bodies as well as other objecs which include the neccesary properties. */
var EmployeeFactory = (function () {
function EmployeeFactory() {
this.employeeProperties = [
'userID', 'userImage', 'firstName',
'lastName', 'isAdmin', 'phone',
'location', 'position', 'eMail'
];
}
/**Checks whether all neccesary properties are included in the body. */
EmployeeFactory.prototype.checkProperties = function (body) {
this.employeeProperties.forEach(function (employeeProperty) {
if (!body.hasOwnProperty(employeeProperty)) {
return false;
}
});
return true;
};
/**Returns a string array containing all missing properties which are not included in the body. */
EmployeeFactory.prototype.findMissingProperties = function (body) {
var missingProperties = [];
this.employeeProperties.forEach(function (employeeProperty) {
if (!body.hasOwnProperty(employeeProperty)) {
missingProperties.push(employeeProperty);
}
});
return missingProperties;
};
/**
* Creates a new employee from body object.
* Throws an error if some or all properties are missing.
*/
EmployeeFactory.prototype.createEmployee = function (body) {
if (this.checkProperties(body)) {
var employee_1 = new employee_model_1.Employee();
this.employeeProperties.forEach(function (employeeProperty) {
employee_1[employeeProperty] = body[employeeProperty];
});
return employee_1;
}
throw new Error('Not possible to create an employee, ' + this.findMissingProperties(body).join(', ') + '.');
};
return EmployeeFactory;
}());
exports.EmployeeFactory = EmployeeFactory;
//# sourceMappingURL=employee.factory.js.map |


(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)
yaz_hits — Returns number of hits for last search
$id
[, array &$searchresult
] ) : intyaz_hits() returns the number of hits for the last search.
id
The connection resource returned by yaz_connect().
searchresult
Result array for detailed search result information.
Returns the number of hits for the last search or 0 if no search was performed.
The search result array (if supplied) holds information that is returned by a Z39.50 server in the SearchResult-1 format part of a search response. The SearchResult-1 format can be used to obtain information about hit counts for various parts of the query (subquery). In particular, it is possible to obtain hit counts for the individual search terms in a query. Information for first subquery is in $array[0], second subquery in $array[1], and so forth.
| Element | Description |
|---|---|
| id | Sub query ID2 (string) |
| count | Result count / hits (integer) |
| subquery.term | Sub query term (string) |
| interpretation.term | Interpretated sub query term (string) |
| recommendation.term | Recommended sub query term (string) |
Note:
The SearchResult facility requires PECL YAZ 1.0.5 or later and YAZ 2.1.9 or later.
Note:
Very few Z39.50 implementations support the SearchResult facility.


Leaves are integrated with AI controlled pixel lens covering the surface of pods which detects the direction of sunrays falling on each pixel and align themselves thereby magnifing the rays it to core thus generating maximum efficiency.
The core consists of efficient electrodes and aiONE chip which processes artificial photosynthesis when a certain amount of sun rays reaches to the core thereby preforming photosynthesis exactly as the plants do.
It all started when we stopped caring about our nature and started cutting trees without even thinking once about the consequences that we were bringing to this planet.
Now that being said,we offer a better and easy solution to the problem that we created.One pod is efficient enough to produce oxygen equivalent to that of 5 trees as trees processes just the 1% of sunrays that shine through them .
Our vision is that by the year 2020,leaves to be installed in each and every house around the globe and drop the greenhouse effect of the atmosphere.
Throughout the journey,we sincerely need your support.Let's Build a better world and gift our future generation something awesome that they will be thankful for.


Dear Sir,
I am Mrs Aminat Mohamed from Liberia, presently staying in Germany. I am married to Mr. Hassan Mohamed who worked with Liberian embassy in Lome-Togo for Ten years before he died in the year 2002.We were married for eleven years without a child. He died after a brief illness that lasted for only four days.Before his death we were both born again Moslim.
Since his death I decided not to remarry or get a child outside my matrimonial home which the Quran is against. When my late husband was alive he deposited the sum of $6.8Million (Six Million Eight hundred thousand U.S. Dollars) with one security company in Europe. Presently, this money is still with the Security Company. Recently, my Doctor told me that I would not last for the next Eight months due to cancer problem. The one that disturbs me most is my stroke sickness. Having known my condition I decided to keep this fund in Europe.
I want an organization or an individual that will use this fund for orphanages, idows,propagating the word of Allah and to endeavor that the house of Allah is maintained. The Holy Quran made us to understand that Blessed is the hand that giveth. I took this decision because I don't have any child that will inherit this money and my husband relatives are not Moslim and I don't want my husbands efforts
to be used by unbelievers.
I don't want a situation where this money will be used in an ungodly way. This is why I am taking this decision. I am not afraid of death hence I know where I am going. I know that I am going to be in the bosom of the Almighty Allah .I don't need any telephone Communication in this regard because of my health hence the presence of my husband's relatives around me always. I don't want them to know about
this development. With Allah all things are possible.
As soon as I receive your reply I shall inform the security company in Europe that you are the beneficiary of the said consignment you will need to go and claim this fund in Europe. I will also issue you an authority letter that will prove you the present beneficiary of this fund. I want you and the organization to always pray for me because the lord is my shepherd. My happiness is that I lived a life of a worthy Moslim. Whoever that wants to serve the Allah must serve him in spirit and truth. Please always be prayerful all through your life.
Any delay in your reply will give me room in sourcing another person for this same purpose. Please assure me that you will act accordingly as I stated herein. Hoping to receive your reply and Remain blessed in the Allah..
Yours in Allah ,
Mrs Aminat Mohamed


Dinn:
Thank you. Your efforts have greatly aided our research, and I hope our efforts will allow many others to visit this island. Please accept this small token of our appreciation. Could I convince you to continue working on our behalf?
Tell him you will.
Tell him you are quitting.


Developer guide for Commons "Lang"The Commons Lang PackageDevelopers Guide[Introduction] [Package Structure] [Utility Classes] [Javadoc] [Building] 1. INTRODUCTIONThe Lang package contains a set of Java classes that extend the basic JDK classes. This developer guide seeks to set out rules for the naming of classes and methods within the package. The purpose of this, as with all naming standards, is to improve the coherency and consistency of the whole API. The philosophy of the naming standards is to follow those of the JDK if possible. 2. PACKAGE STRUCTUREThe main package for Lang is org.apache.commons.lang3. Subpackages should be created for each group of related items. Each package should have a package.html file for javadoc. This should describe the use of the package and its scope. 3. UTILITY CLASSESUtility classes provide additional functionality around a class or interface. Examples include StringUtils and SerializationUtils. Each class shall follow the naming pattern XxxUtils where Xxx relates to the class or interface that the utility services. Variations on a theme (Integer as opposed to Number) should be dealt with in one Utils class where possible. Each Utils class shall:
A utility class can act as a factory for specific implementations of a class or interface. In such cases the implementations should be non-public, static, inner classes of the utility class. However, if warranted due to maintenance or other reasons, these decorator classes may be moved to top-level classes in a subpackage. The naming of such a subpackage should be discussed and agreed upon on the developers mailing list. If different overloaded variants of a method are desired, with the same method signature, it should not be indicated via a boolean argument, but via a more focused method name. Rather than replace(boolean repeat), replace and replaceAll, or replaceOnce and replace. 4. JAVADOCThe Sun javadoc guidelines are the starting point for Lang. These points are an extension to make it easier for users reading the generated docs and developers with javadoc-popup capabilities from within their IDE. GeneralReferences to other objects, interfaces or methods use the @link-tag the first time it is referenced in a class or interface. On the following references always enclose it inside . References to null, this, long, int, short, char, byte, double, float and boolean should be enclosed in . Classes/Interfaces/MethodsUse a short description of what the class/interface/method is used for, enclose with

. A longer description about what the class/interface/method is used for and if it is needed how it is done. If it is necessary include description of the parameters, what they are used for and how. Enclose with

 where it is needed, try to divide into smaller parts (not to small!) to enhance readability of the generated Javadoc. If an example is needed enclose it with

. It should be supported with an explanation within a normal paragraph. Exception throwingWhen throwing an exception to indicate a bad argument, always try to throw IllegalArgumentException, even if the argument was null. Do not throw NullPointerException. (Obviously, you should document what the code actually does!) DeprecationsWhen deprecating a method or class include a clear reference to when the method will be deleted. This should be of the form 'Method will be removed in Commons Lang 3.0.'. Language used in code/commentsIt has been decided to casually standardize on US-English. To avoid misplaced jeers of 'americanisation', the people making this decision largely write in non-US-English. However, it's not something to get worked up about. Lots of spelling differences will creep in all over. |


Add the
basil
,
pine nuts
and
garlic
to a blender and blend into a paste.
Gradually add the
olive oil
while running the blender slowly.
Mix in the
Parmesan
. Add
salt
to taste and plenty of
black pepper
.
This one is a
Parmesan
. Add


Personal Profile
I am a Software engineer with 3 years of profound experience working in industry, around 7 years on technology. I have primarily worked on the Java, but have worked across a broad range of technologies thereon: Python, C, Oracle PL/SQL, Git, Maven and most recently AWS. As well as spending a reasonable amount of time building applications for process automation, which has given me an exposure to the mentioned languages considerably, as well to a range of scripting languages such as PowerShell, Python scripting, etc and for robotics a bit of Android Development as well.


Basic Listbox
Multiselect Listbox
Listbox with Value Binding
Listbox with compareWith Function
Listbox with Template-driven Forms
Listbox with Reactive Forms
Listbox with Forms Validation
Listbox with Disabled Options
Listbox with aria-activedescendant
Horizontal Listbox
Listbox with Custom Typeahead
Listbox with Custom Keyboard Navigation Options


class ERB
ERB – Ruby Templating¶ ↑
Introduction¶ ↑
ERB provides an easy to use but powerful templating system for Ruby. Using ERB, actual Ruby code can be added to any plain text document for the purposes of generating document information details and/or flow control.
A very simple example is this:
require 'erb' x = 42 template = ERB.new <<-EOF The value of x is: <%= x %> EOF puts template.result(binding)
Prints: The value of x is: 42
More complex examples are given below.
Recognized Tags¶ ↑
ERB recognizes certain tags in the provided template and converts them based on the rules below:
<% Ruby code -- inline with output %> <%= Ruby expression -- replace with result %> <%# comment -- ignored -- useful in testing %> % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new) %% replaced with % if first thing on a line and % processing is used <%% or %%> -- replace with <% or %> respectively
All other text is passed through ERB filtering unchanged.
Options¶ ↑
There are several settings you can change when you use ERB:
-
the nature of the tags that are recognized;
-
the value of
$SAFE
under which the template is run; -
the binding used to resolve local variables in the template.
See the ::new and #result methods for more detail.
Character encodings¶ ↑
ERB (or Ruby code generated by ERB) returns a string in the same character encoding as the input string. When the input string has a magic comment, however, it returns a string in the encoding specified by the magic comment.
# -*- coding: utf-8 -*- require 'erb' template = ERB.new <<EOF <%#-*- coding: Big5 -*-%> \_\_ENCODING\_\_ is <%= \_\_ENCODING\_\_ %>. EOF puts template.result
Prints: _ENCODING_ is Big5.
Examples¶ ↑
Plain Text¶ ↑
ERB is useful for any generic templating situation.
Note that in this example, we use the convenient “% at start of line” tag,
and we quote the template literally with %q{...}
to avoid
trouble with the backslash.
require "erb" # Create template. template = %q{ From: James Edward Gray II<EMAIL_ADDRESS>To: <%= to %> Subject: Addressing Needs <%= to[/\w+/] %>: Just wanted to send a quick note assuring that your needs are being addressed. I want you to know that my team will keep working on the issues, especially: <%# ignore numerous minor requests -- focus on priorities %> % priorities.each do |priority| * <%= priority %> % end Thanks for your patience. James Edward Gray II }.gsub(/^ /, '') message = ERB.new(template, 0, "%<>") # Set up template data. to = "Community Spokesman<EMAIL_ADDRESS>priorities = [ "Run Ruby Quiz", "Document Modules", "Answer Questions on Ruby Talk" ] # Produce result. email = message.result puts email
Generates:
From: James Edward Gray II<EMAIL_ADDRESS>To: Community Spokesman<EMAIL_ADDRESS>Subject: Addressing Needs Community: Just wanted to send a quick note assuring that your needs are being addressed. I want you to know that my team will keep working on the issues, especially: * Run Ruby Quiz * Document Modules * Answer Questions on Ruby Talk Thanks for your patience. James Edward Gray II
Ruby in HTML¶ ↑
ERB is often used in .rhtml
files (HTML
with embedded Ruby). Notice the need in this example to provide a special
binding when the template is run, so that the instance variables in the
Product object can be resolved.
require "erb" # Build template data class. class Product def initialize( code, name, desc, cost ) @code = code @name = name @desc = desc @cost = cost @features = [ ] end def add_feature( feature ) @features << feature end # Support templating of member data. def get_binding binding end # ... end # Create template. template = %{  <title>Ruby Toys -- <%= @name %></title>
<%= @name %> (<%= @code %>)

<%= @desc %>

 <% @features.each do |f| %>
<%= f %>
 <% end %>

 <% if @cost < 10 %> Only <%= @cost %>!!! <% else %> Call for a price, today! <% end %>
   }.gsub(/^ /, '') rhtml = ERB.new(template) # Set up template data. toy = Product.new( "TZ-1002", "Rubysapien", "Geek's Best Friend! Responds to Ruby commands...", 999.95 ) toy.add_feature("Listens for verbal commands in the Ruby language!") toy.add_feature("Ignores Perl, Java, and all C variants.") toy.add_feature("Karate-Chop Action!!!") toy.add_feature("Matz signature on left leg.") toy.add_feature("Gem studded eyes... Rubies, of course!") # Produce result. rhtml.run(toy.get_binding)
Generates (some blank lines removed):
 <title>Ruby Toys -- Rubysapien</title>
Rubysapien (TZ-1002)

Geek's Best Friend! Responds to Ruby commands...

Listens for verbal commands in the Ruby language!

Ignores Perl, Java, and all C variants.

Karate-Chop Action!!!

Matz signature on left leg.

Gem studded eyes... Rubies, of course!

 Call for a price, today!

Notes¶ ↑
There are a variety of templating solutions available in various Ruby projects:
-
ERB's big brother, eRuby, works the same but is written in C for speed;
-
Amrita (smart at producing HTML/XML);
-
cs/Template (written in C for speed);
-
RDoc, distributed with Ruby, uses its own template engine, which can be reused elsewhere;
-
and others; search RubyGems.org or The Ruby Toolbox.
Rails, the web application framework, uses ERB to create views.
Attributes
The encoding to eval
The optional filename argument passed to Kernel#eval when the ERB code is run
The optional lineno argument passed to Kernel#eval when the ERB code is run
The Ruby code generated by ERB
Public Class Methods
Constructs a new ERB object with the template specified in str.
An ERB object works by building a chunk of Ruby code that will output the completed template when run. If safe_level is set to a non-nil value, ERB code will be run in a separate thread with $SAFE set to the provided level.
If trim_mode is passed a String containing one or more of the following modifiers, ERB will adjust its code generation as listed:
% enables Ruby code processing for lines beginning with % <> omit newline for lines starting with <% and ending in %> > omit newline for lines ending in %> - omit blank lines ending in -%>
eoutvar can be used to set the name of the variable ERB will build up its output in. This is useful when you need to run multiple ERB templates through the same binding and/or when you want to control where output ends up. Pass the name of the variable to be used inside a String.
Example¶ ↑
require "erb" # build data class class Listings PRODUCT = { :name => "Chicken Fried Steak", :desc => "A well messages pattie, breaded and fried.", :cost => 9.95 } attr_reader :product, :price def initialize( product = "", price = "" ) @product = product @price = price end def build b = binding # create and run templates, filling member data variables ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), 0, "", "@product").result b <%= PRODUCT[:name] %> <%= PRODUCT[:desc] %> END_PRODUCT ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), 0, "", "@price").result b <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %> <%= PRODUCT[:desc] %> END_PRICE end end # setup template data listings = Listings.new listings.build puts listings.product + "\n" + listings.price
Generates
Chicken Fried Steak A well messages pattie, breaded and fried. Chicken Fried Steak -- 9.95 A well messages pattie, breaded and fried.
# File lib/erb.rb, line 807 def initialize(str, safe_level=nil, trim_mode=nil, eoutvar='_erbout') @safe_level = safe_level compiler = make_compiler(trim_mode) set_eoutvar(compiler, eoutvar) @src, @encoding, @frozen_string = *compiler.compile(str) @filename = nil @lineno = 0 end
Returns revision information for the erb.rb module.
# File lib/erb.rb, line 263 def self.version "erb.rb [2.1.0 #{ERB::Revision.split[1]}]" end
Public Instance Methods
Define unnamed class which has methodname as instance method, and return it.
example:
class MyClass_ def initialize(arg1, arg2) @arg1 = arg1; @arg2 = arg2 end end filename = 'example.rhtml' # @arg1 and @arg2 are used in example.rhtml erb = ERB.new(File.read(filename)) erb.filename = filename MyClass = erb.def_class(MyClass_, 'render()') print MyClass.new('foo', 123).render()
# File lib/erb.rb, line 947 def def_class(superklass=Object, methodname='result') cls = Class.new(superklass) def_method(cls, methodname, @filename || '(ERB)') cls end
Define methodname as instance method of mod from compiled Ruby source.
example:
filename = 'example.rhtml' # 'arg1' and 'arg2' are used in example.rhtml erb = ERB.new(File.read(filename)) erb.def_method(MyClass, 'render(arg1, arg2)', filename) print MyClass.new.render('foo', 123)
# File lib/erb.rb, line 911 def def_method(mod, methodname, fname='(ERB)') src = self.src.sub(/^(?!#|$)/) {"def #{methodname}\n"} << "\nend\n" mod.module_eval do eval(src, binding, fname, -1) end end
Create unnamed module, define methodname as instance method of it, and return it.
example:
filename = 'example.rhtml' # 'arg1' and 'arg2' are used in example.rhtml erb = ERB.new(File.read(filename)) erb.filename = filename MyModule = erb.def_module('render(arg1, arg2)') class MyClass include MyModule end
# File lib/erb.rb, line 928 def def_module(methodname='erb') mod = Module.new def_method(mod, methodname, @filename || '(ERB)') mod end
# File lib/erb.rb, line 837 def location=((filename, lineno)) @filename = filename @lineno = lineno if lineno end
Creates a new compiler for ERB. See ERB::Compiler.new for details
# File lib/erb.rb, line 819 def make_compiler(trim_mode) ERB::Compiler.new(trim_mode) end
Executes the generated ERB code to produce a completed template, returning the results of that code. (See ::new for details on how this process can be affected by safe_level.)
b accepts a Binding object which is used to set the context of code evaluation.
# File lib/erb.rb, line 867 def result(b=new_toplevel) if @safe_level proc { $SAFE = @safe_level eval(@src, b, (@filename || '(erb)'), @lineno) }.call else eval(@src, b, (@filename || '(erb)'), @lineno) end end
Render a template on a new toplevel binding with local variables specified by a Hash object.
# File lib/erb.rb, line 880 def result_with_hash(hash) b = new_toplevel(hash.keys) hash.each_pair do |key, value| b.local_variable_set(key, value) end result(b) end
Generate results and print them. (see #result)
# File lib/erb.rb, line 855 def run(b=new_toplevel) print self.result(b) end
Can be used to set eoutvar as described in ::new. It's probably easier to just use the constructor though, since calling this method requires the setup of an ERB compiler object.
# File lib/erb.rb, line 847 def set_eoutvar(compiler, eoutvar = '_erbout') compiler.put_cmd = "#{eoutvar}.<<" compiler.insert_cmd = "#{eoutvar}.<<" compiler.pre_cmd = ["#{eoutvar} = +''"] compiler.post_cmd = [eoutvar] end
Private Instance Methods
Returns a new binding each time near TOPLEVEL_BINDING for runs that do not specify a binding.
# File lib/erb.rb, line 892 def new_toplevel(vars = nil) b = TOPLEVEL_BINDING if vars vars = vars.select {|v| b.local_variable_defined?(v)} unless vars.empty? return b.eval("tap {|;#{vars.join(',')}| break binding}") end end b.dup end


Contact Information
Firstname
Lastname
Bill
Gates
Steven
Jobs
Contact Information
Firstname
Lastname
Bill
Gates
Steven
Jobs
Contact Information
Firstname
Lastname
Bill
Gates
Steven
Jobs
Contact Information
Firstname
Lastname
info
Gates
active
Gates
success
Gates
warning
Jobs
danger
Jobs


ApePubSub( APS ) Demos
- Color Change
- Users pick a color and their color is shared through a channel in realtime
- Single Channel
- The user joins a simple text chat channel
- Single Channel (PHP)
- The user joins a simple text chat channel but the messages sent are routed to a PHP script prior to been sent to the APE Server. This feature is call eventPush
- Multi-Channel
- The user joins multiple simple text chat channels at once
- Objects autoUpdate
- Showcases how public user properties can be kept on sync across clients
- User to User
- In this demo users communicate directly without a dedicated channel. Users initially join a channel for user listing purposes only but the actual text messages travel from user to user object not through a dedicated channel
- Stock Ticker
- A Generic stock ticker that pushes random generated data to clients. The data is generated in custom server module
- PHP integrated
- An application with a PHP user system which automatically log in users with their username into a chat
- Full Chat
- A chatting application which implements user listing, user icons and a user is typing indicator
- Payload Test
- Test each transport performance by sending multiple parallel events at once, keeping a counter of sent and received events
- UnitTest
- Mostly use during development to test various features of the framework and make sure they work as expected. An attempt to make a full framework unit test.
NOTE:
Most demos have session enable, meaning that if you open multiple tabs of the same demo you will still be the same user.
To disabled this behavior and treat each tab as a new user you can disabled sessions by appending the #nosession
hash to the url of the demo. For example try this link Single Channel (noSession)
NOTE:
This demos by default run in a public APE Server( ape.ptejada.com ) for demonstration
purposes only. In order to test this demos with your own server installation you must install the APS server framework on your APE server.
Installing the APS server framework.


TV stars coming to Howden Park Centre for variety show
Stars of the show Ian Waite and Vincent Simone will bring their double act show The Ballroom Boys to Livingston next year.
by Debbie Hall, https://www.dailyrecord.co.uk/authors/debbie-hall/Strictly Come Dancing stars Ian Waite and Vincent Simone are back.
The dancers will bring their double act show The Ballroom Boys to Livingston next year.
Ian and Vincent are set to return in 2020 with a brand new show after the roaring success of their five star rated 2019 tour!
The fabulous Strictly Come Dancing stars promise another wonderful evening of old-fashioned variety - dance, comedy and song!
They will bring with them beautiful costumes, gorgeous lighting and world class routines, including the Viennese Waltz, the Foxtrot, the Rhumba and of course there has to be another incredible Argentine Tango routine by the master!
The boys will be joined by their stunning dance partners and a world class singer.
If you enjoyed The Ballroom Boys, then make sure you don’t miss the hilarious dancing duo when they bring you Ballroom Boys Act Two at Howden Park Centre on Saturday, April 18, 2020.
The show promises to be just as entertaining as this year’s offering which saw Argentine Tango legend Vincent and King of the Ballroom Ian, joined by two professional female dancers and a wonderful vocalist. The night was packed with dances, songs and loads of banter and won the boys rave reviews.
These included the show being desribed as
“world class” by the The News Letter, “Five stars, a hugely entertaining night out” by the Crawley Observer and “five stars, what a show” from Elementary Whats On.
There will also be chance to snap up a VIP Meet and Greet Package.
This includes meeting Ian and Vincent for photo and autograph opportunities, plus a signed print.
The meet and greet is pre-show, 90 minutes before the show begins.
All VIP ticket holders must arrive at least 10 minutes before the meet and greet is due to start. Anyone arriving late may not be permitted.
Get ready for a high intensity evening of glitz and glamour with Ian and Vincent
The show hits Livingston at Howden Park Centre on Saturday, April 18 at 2.30pm and 7.30pm.
Tickets are priced at £32 or £30 concession.
VIP tickets are £60.
For tickets and more information on this show and other upcoming shows call 01506 340700, e-mail<EMAIL_ADDRESS>or visit http://www.howdenparkcentre.co.uk/


Pasta
Short Description
Making pasta at home is much easier than most people would imagine. By making your own pasta dough, you have an unlimited number of options available to you to create your own personal pasta dishes. Imagine delicate layers of egg pasta nestled between a spicy tomato sauce and meltingly tender cheese for unforgettable lasagna. Or maybe you do prefer soft pillows of ravioli stuffed with a tasty ricotta and spinach filling. You too can prepare dishes like this, and many others once you learn the basic technique of making your own pasta.Ingredients
- flour
- Sugar
- Egg
- Water
- Salt
- Oil
- Dough
Steps
- Egg pasta is super simple ingredient wise: flour, salt, eggs and olive oil. Begin by whisking together 2 cups of flour and 1/2 teaspoon of salt in a large bowl. Make a well in the center of the flour and add three large eggs and one tablespoon of extra virgin olive oil.
- Whisk the eggs and oil with a fork while slowly incorporating some of the flour from around the edges as you go. Once the dough becomes too thick to whisk with a fork, turn the dough out onto a clean work surface, along with any leftover flour from the bowl. Knead the dough and remaining flour until you’ve got a smooth, stiff ball of dough.
- Wrap the dough loosely with plastic and let it rest at room temperature for 30 minutes. The wrapped dough can also be stored in the refrigerator for up to a day if necessary.
- When you're ready to make your pasta, divide the dough into four smaller portions. Work with one portion at a time, leaving the remaining three covered with plastic to prevent them from drying out.
- Dust the dough liberally with flour, then flatten it into a rectangular shape with your hands. Once flattened, begin to roll the dough into a long, thin sheet, dusting liberally with flour on both sides as you go.
- Roll the pasta as thin as possible, keeping in mind that it will plump considerably when cooked.
- Dust the pasta liberally with flour once again, then fold it into a wide, flat roll. Folding the pasta into a flat roll instead of simply rolling the pasta up into a tube will help prevent the pasta from being squashed as it's cut. Use a sharp knife to cut the pasta into strips.
- Shake the cut pasta strands out into a loose pile and dust with flour. At this point, the pasta can be dropped into boiling water to cook or can be piled onto a baking sheet in single portions and frozen. If freezing, transfer the individual frozen pasta nests to an air-tight freezer bag for storage. To dry the frozen pasta, hang the strands through a hanger over a clothes drying rack, or over the back of a chair in a cool, dry place. Once the pasta is dry and brittle, it can be stored in an air-tight container.
- Keep in mind that fresh or fresh-frozen pasta cooks much faster than dried pasta. A quick three- to four-minute boil in lightly salted water is all you need for a plateful of springy, flavorful homemade pasta. The sky's the limit with shapes and flavors, so take this base recipe and make it your own.


Progressive Enhancement
A plea for code quality in 43 slides by Accessabilly.
Elevators versus Escalators
When elevators stop working, they are useless.
When escalators stop working, they turn into stairs.
Key Principle
Expect technology to fail and offer a fallback.
With this principle, people were sent to the moon by the way…
3 Myths
- Progressive Enhancement is only for people who disabled JavaScript in their browser.
- Progressive Enhancement means double development effort.
- Progressive Enhancement is only to support older browsers.
…is only for People who disabled JavaScript in their Browser?
Wrong! Progressive Enhancement is for people,
- whose connection is too slow and JavaScript has not yet been initialized.
- whose connection was interrupted before JavaScript was finished loading.
- whose firewall, virus scanner or add-blocker blocked JavaScript.
- who have actually disabled JavaScript (about 1.1% - 2% of all internet users).
…is only to support older Browsers?
Wrong! The exact opposite is true.
- It reduces the testing effort in all browsers, because fallbacks are already built in.
- It makes the website future-proof, i.e. also executable for newer browsers and devices.
- It works in all browsers, while e.g. a pure JavaScript framework can only be as good as the browser behind it.
…means double Development Effort?
Wrong!
- This is only true if you have not planned it in advance and try to implement it later.
- In the context of Universal Javascript we have the advantage that server and client can deliver (almost) identical states of the app, so this means basically one effort for two worlds.
- A little more effort is required in conception and programming, the cost-benefit calculation is not always simple and obvious, but adds up to a great gain in user-friendliness and user acceptance, especially in the long run.
It's all about Usability
It's about improving the user experience until certain JavaScript kicks in. The application can provide a bad-looking interface as long as JavaScript is not available, but the user still gets something from the server and can execute the basic functionality.
Many Truths
Progressive Enhancement is also about
- Usability
- Accessibility
- Performance
- Resilience
- Fault Tolerance
- Range
- Device Agnostics
- Future Viability
- Separation of Concerns
- Frontend Architecture
Who's doing it, too?
- gov.uk
- Shopify
- Filament Group
- BBC News
- The New York Times
- The Boston Globe
- etc.
3 Steps
- Identify the key functionality of the feature you want to implement.
- Provide this functionality with the simplest technology.
- Enhance!
Daily Life Example: Collapsible
"As a User of your website, I want to be able to hide content and display it with an interaction to avoid being overloaded with all content at once."
Identify the Core Functionality
Content should always be able to be displayed and should not be hidden even if JavaScript is not available.
Core Functionality in HTML

This is some cool content

Why pamper life's complexity.
Where there's music and there's people. This charming man.
"Throw your skinny body down, son!".
And if a double-decker bus. The last night of the fair.
Driving in your car. Take me out tonight.

Demo 1 on Codepen
Additional Functionality in CSS
p {
max-height: 0;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
}
html.no-js p, p:target, p.show {
overflow: auto;
max-height: 15rem;
}
Demo 2 on Codepen
Enhanced Functionality with JavaScript
const trigger = document.getElementById('trigger');
const content = document.getElementById('content');
trigger.addEventListener('click', function(event) {
event.preventDefault();
content.classList.toggle('show');
}, false);
Demo 3 on Codepen
3 Layers
- Semantic HTML
- CSS
- JavaScript
HTML - Base Layer
HTML - Base Layer
- HTML is completely error-tolerant, does not crash or return any error messages.
- It basically works on all devices and all browsers!
- Elements that are not (yet) known follow the principle of "Graceful Degradation".
- Semantic HTML already provides many desired functions and interactivity, e.g. links (!), buttons, forms (validation, interaction, date picker).
- HTML provides basic accessibility already.
Graceful Degradation
Graceful Degradation
This is a HTML inherent principle of fault tolerance that describes the ability of maintaining functionality when portions of a system break down.
Referring to the slide before, an <input type="date">
in modern browsers like Chrome is still working as <input type="text">
in older browsers like IE11.
CSS - Presentation Layer
CSS - Presentation Layer
- CSS is largely error-tolerant.
- Fallbacks are always possible, because unknown properties are simply ignored.
- Progressive Enhancment is CSS-inherent (already built-in): with
@media
or@supports
queries. - Since CSS3 a lot of interactive functionality is already implemented: see Collapsible with the
:target
-Selector, form validation, animations etc. - Responsive Design, especially in conjunction with the Mobile First approach, is in itself Progressive Enhancement.
Example 1 for Progressive Enhancement in CSS
p {
background-color: #000000;
background-color: rgba(0,0,0,0.5);
color: #ffffff;
}
Example 2 for Progressive Enhancement in CSS
.box {
float: left;
}
@supports (display: grid) {
.box {
display: grid;
}
}
JavaScript - Interaction Layer
JavaScript - Interaction Layer
- JavaScript is the weakest link in the chain because it is not fault-tolerant, at all!
- Javascript requires relatively high processing power in the browser.
- Between the browsers there are different versions of Javascript with different API support.
- JavaScript is powerful, so it is there to enrich and improve functionality.
- Javascript enables accessibility of the UI: tablist, combo box, dynamically loaded content etc. only work with it.
- JavaScript can help to make the website available offline, e.g. Service Workers, LocalStorage etc.
JavaScript last - but why?
HTML, CSS and JavaScript are loaded in parallel and asynchronously, but rendered in this order:
- Rendering the HTML to the DOM Tree
- Layout of the DOM tree using CSS, Paint of the DOM
- JavaScript is executed if it is loaded
Only now, in client-side apps event handlers can be executed, JSON API calls (Ajax, routing, etc.) are executed and content can be changed dynamically.
Time to Interactive - a Milestone in User Experience Lifecycle
Pure client apps require the entire loading of the JavaScript bundle before interaction can take place.
Users are struggling with non-working buttons or even links. Sometimes they are offered just a white page, when trying to interact with the site, only because JavaScript is not already executed.
Can't we do better than that?
The Browser as an Operating System - A dangerous Paradigm
We use the browser as operating system for our web app with JavaScript as kernel. JavaScript is used to perform important basic browser functions such as content fetching, routing, etc. JavaScript can become a bottleneck or may fail due to errors.
We should rather work with the browser than against it. This means, letting the browser do the stuff it is built for. JavaScript can do powerful things, but it can destroy the browser inherit user experience, easily.
Some Solutions to faster Time to Interactive
- Server-side rendering of the HTML framework
- Deeplinking with GET-parameters for certain states of a site like edit mode, form states, paginations etc.
- Real submit buttons, which can also send forms without JavaScript.
- Hash links as "openers" for collapsibles, photo galeries, tab lists etc.
- HTML5 form validation
Agile Principles ❤ Progressive Enhancement
Progressive Enhancement is a method in (frontend) software development and follows agile principles:
- Principle of early and continuous delivery of functioning software
- Principle of continuous refactoring (= enhancement!)
- Simplicity is essential = KISS principle ("Keep it simple, smarty!")
- Constant focus on technical excellence and good design
Examples of little Enhancements in standard Web Projects
- Prefetching & preloading content
- Enhanced font loading
- Lazy loading images, videos, audio.
- Service Workers for offline usage
- Telephone numbers can be linked

in devices with telephone functionality (user agent sniffing). - Rendering a "Print" button only if Javascript is enabled, otherwise it's not working.
Thank y'all!
Sites that inspired this talk heavily
- Jake Archibald: Progressive enhancement is still important
- Tiffany Tse: What is Progressive Enhancement and Why Should You Care?
- Craig Buckler : The JavaScript-Dependency Backlash: Myth-Busting Progressive Enhancement
- Julien Etienne: Define Graceful Degradation & Progressive Enhancement
- Aaron Gustafson: [Insert Clickbait Headline About Progressive Enhancement Here]
- Mathias Schäfer: Progressive Enhancement for JavaScript web apps
More Sites that inspired this talk heavily
- Heydon Pickering: Reimagining Single-Page Applications With Progressive Enhancement
- Robin Whittleton: Why we use progressive enhancement to build GOV.UK
- gov.uk Guideline: Using progressive enhancement
- Baking Chanel: Pastel Mundo de Caramelo


Almost There...
Getting DesktopHero ready for its public release today, Jan 31, at 7:00PM MST! See you then!


Public
Unknown age
23 years old
Industry:
Space
Occupation:
Space Engineer
Private
Email:
<EMAIL_ADDRESS>ID Number:
99123112346567
Passport Number:
99123112346567
Mobile Number:
123 456 7777
Landline Number:
123 456 7777
Twitter Handle:
@Bozo
Public
Gender:
Unknown
Female
Date of birth:
Errors...
Occupation:
Industry:
Private
Email:
Change email address
ID Number
Passport Number
ID Number:
Passport Number:
Mobile Number:
Landline Number:
Twitter Handle:
@
×
Change Email Address
New Email Address
Confirm
Change email preferences
×
Change Email Address


We are providing support across various product brands and tech devices for individuals and small businesses in the need of instant tech support and service
We Support is an Independent Tehcnical service provider for all home and small business users.
Our motto is to provide you a quick response and quality of services
The convenience and quality at WeSupport tech provided to customers over the phone, on-site, or by directly accessing the customer’s computer with their permission. With WeSupport, customers do not have to leave their homes, deal with crowded stores, or bring their devices for repair as tech support is provided right from the comfort of their own homes


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z
_
Z
ZZ_ACTION
- Static variable in class fsb.parser.
Lexer
Translates DFA states to action switch labels.
ZZ_ACTION_PACKED_0
- Static variable in class fsb.parser.
Lexer
ZZ_ATTRIBUTE
- Static variable in class fsb.parser.
Lexer
ZZ_ATTRIBUTE[aState] contains the attributes of state
aState
ZZ_ATTRIBUTE_PACKED_0
- Static variable in class fsb.parser.
Lexer
ZZ_BUFFERSIZE
- Static variable in class fsb.parser.
Lexer
initial size of the lookahead buffer
ZZ_CMAP
- Static variable in class fsb.parser.
Lexer
Translates characters to character classes
ZZ_CMAP_PACKED
- Static variable in class fsb.parser.
Lexer
Translates characters to character classes
ZZ_ERROR_MSG
- Static variable in class fsb.parser.
Lexer
ZZ_LEXSTATE
- Static variable in class fsb.parser.
Lexer
ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the beginning of a line l is of the form l = 2*k, k a non negative integer
ZZ_NO_MATCH
- Static variable in class fsb.parser.
Lexer
ZZ_PUSHBACK_2BIG
- Static variable in class fsb.parser.
Lexer
ZZ_ROWMAP
- Static variable in class fsb.parser.
Lexer
Translates a state to a row index in the transition table
ZZ_ROWMAP_PACKED_0
- Static variable in class fsb.parser.
Lexer
ZZ_TRANS
- Static variable in class fsb.parser.
Lexer
The transition table of the DFA
ZZ_TRANS_PACKED_0
- Static variable in class fsb.parser.
Lexer
ZZ_UNKNOWN_ERROR
- Static variable in class fsb.parser.
Lexer
zzAtBOL
- Variable in class fsb.parser.
Lexer
zzAtBOL == true <=> the scanner is currently at the beginning of a line
zzAtEOF
- Variable in class fsb.parser.
Lexer
zzAtEOF == true <=> the scanner is at the EOF
zzBuffer
- Variable in class fsb.parser.
Lexer
this buffer contains the current text to be matched and is the source of the yytext() string
zzCurrentPos
- Variable in class fsb.parser.
Lexer
the current text position in the buffer
zzDoEOF()
- Method in class fsb.parser.
Lexer
Contains user EOF-code, which will be executed exactly once, when the end of file is reached
zzEndRead
- Variable in class fsb.parser.
Lexer
endRead marks the last character in the buffer, that has been read from input
zzEOFDone
- Variable in class fsb.parser.
Lexer
denotes if the user-EOF-code has already been executed
zzLexicalState
- Variable in class fsb.parser.
Lexer
the current lexical state
zzMarkedPos
- Variable in class fsb.parser.
Lexer
the textposition at the last accepting state
zzReader
- Variable in class fsb.parser.
Lexer
the input device
zzRefill()
- Method in class fsb.parser.
Lexer
Refills the input buffer.
zzScanError(int)
- Method in class fsb.parser.
Lexer
Reports an error that occured while scanning.
zzStartRead
- Variable in class fsb.parser.
Lexer
startRead marks the beginning of the yytext() string in the buffer
zzState
- Variable in class fsb.parser.
Lexer
the current state of the DFA
zzUnpackAction()
- Static method in class fsb.parser.
Lexer
zzUnpackAction(String, int, int[])
- Static method in class fsb.parser.
Lexer
zzUnpackAttribute()
- Static method in class fsb.parser.
Lexer
zzUnpackAttribute(String, int, int[])
- Static method in class fsb.parser.
Lexer
zzUnpackCMap(String)
- Static method in class fsb.parser.
Lexer
Unpacks the compressed character translation table.
zzUnpackRowMap()
- Static method in class fsb.parser.
Lexer
zzUnpackRowMap(String, int, int[])
- Static method in class fsb.parser.
Lexer
zzUnpackTrans()
- Static method in class fsb.parser.
Lexer
zzUnpackTrans(String, int, int[])
- Static method in class fsb.parser.
Lexer
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
J
L
M
N
O
P
R
S
T
U
V
W
X
Y
Z
_


Giant, inflatable poo attracts crowd in Portland, will stay through World Toilet Day
by KATU NewsPORTLAND, Ore. – If the arrival of the Christmas Tree was the biggest thing happening in Pioneer Courthouse Square this weekend, you could say this was “number two.”
A giant, inflatable poo emoji was set up in Portland’s Living Room while the company Poo-Pourri made a stop in Portland on its tour around the U.S.
On its tour, the company is raising money for World Toilet Day, an official United Nations observance day that raises awareness for the global sanitation crisis.
Anyone could brave an entry into the inflatable poop for free. For every visitor, Poo-Pourri will donate $2 toward safe sanitation.
Tuesday is the last day to visit the inflatable poo in Portland.


This scenario demonstates hiding specific elements of DatePicker and TimePicker controls using CSS styles so you can create a DatePicker that only displays the Month, or a TimePicker that does not show the am/pm value. Note that when hiding specific elements, the complete date information is still preserved internally.


Delecios
The Best Food Blog On The Web
Chocolate Pizza
Posted On 18 Feb 2021 / Deserts
For the fig swiri: Meit butter over medium heat in a saurepan. Add brown sugar and utir to dissalve. Halve all of the tigs and toss in the saucepan with water and lemon juice. Cook ver medium heat, atirring frequently, until you have a chunky-jammy mixrure, Add salt with one or two stirs, set aside and let cool completely.
lee eream: In a small pot uver medium heat, combine milk, and granulated sugar until sugar it cumpletely dissolved and the milk is just barely hakewarm. Whisk in the egg yolks. Set misture in the fridge and wait until the fig mixture is cooled.
LUuing an ice cream machine, pour liquids into the frozen basin and process according to manufucturer instructions, Le, let spin and thicken for 20 minutes before adding mascarpone, fig jam mixture, and the nuts Cantinue to procesa for - 10 minutes. Pour semi-frozen imixture into a pyret idish or glas tupperware. Freeze for at least two hours befure serving
Vanessa Stevenson
Food unithusiast, phatography fan, Add a pinch uf raw fondism and that's pretty much who I am.


Small tasks
I put a bike bell on his bike.
Cats are cute animals!
Warning. This dungeon is dangerous. Avoid the ducks. Take any gold you find. Do not take any of the diamonds, they are explosive and will destroy anything within ten meters. You have been warned.
Recommended retail price: $3.99 per bottle
My favorite book is The Reality Dysfunction by Peter F. Hamilton. My favorite comic is Pearls Before Swine by Stephan Pastis. My favorite track is Jive Samba by the Cannonball Adderley Sextet.
The man said Things that are impossible just take longer
. I disagreed with
him.
The W3C page About W3C says the W3C's mission is To lead the World Wide Web to its full
potential by developing protocols and guidelines that ensure long-term growth for
the Web
. I disagree with this mission.
The GDO is a device that allows off-world teams to open the iris.
Teal'c activated his GDO and so Hammond ordered the iris to be opened.
The GDO is a device that allows off-world teams to open the iris.
Teal'c activated his GDO and so Hammond ordered the iris to be opened.
The WHATWG is a loose unofficial collaboration of Web browser manufacturers and interested parties who wish to develop new technologies designed to allow authors to write and deploy Applications over the World Wide Web.
The Web Hypertext Application Technology Working Group (WHATWG) is a loose unofficial collaboration of Web browser manufacturers and interested parties who wish to develop new technologies designed to allow authors to write and deploy Applications over the World Wide Web.
The WHATWG started working on HTML5 in 2004.
Two WGs worked on this specification: the WHATWG and the HTMLWG.
I usually have a snack at .
I put a bike bell on his bike.
I put a bike bell on his bike.
The code
element represents a fragment of computer code.
When you call the activate()
method on the robotSnowman
object,
the eyes glow.
The example below uses the begin
keyword to indicate the start of a
statement block. It is paired with an end
keyword, which is followed by the
.
punctuation character (full stop) to indicate the end of the
program.
var i: Integer;
begin
i := 1;
end.
If there are n pipes leading to the ice cream factory then I expect at least n flavors of ice cream to be available for purchase!
jdoe@mowmow:~$ ssh demo.example.com Last login: Tue Apr 12 09:10:17 2005 from mowmow.example.com on pts/1 Linux demo 2.6.10-grsec+gg3+e+fhs6b+nfs+gr0501+++p3+c4a+gr2b-reslog-v6.189 #1 SMP Tue Feb 1 11:22:36 PST 2005 i686 unknown jdoe@demo:~$ _
To make George eat an apple, select File|Eat Apple...
The coordinate of the ith point is (xi, yi). For example, the 10th point has coordinate (x10, y10).
E=mc2 f(x, n) = log4xnRaymond tried to sleep.
The ship sailed away on Thursday, he dreamt. The ship had many people aboard, including a beautiful princess called Carey. He watched her, day-in, day-out, hoping she would notice him, but she never did.
Finally one night he picked up the courage to speak with her—
Raymond woke with a start as the fire alarm rang out.
You enter a small room. Your sword glows brighter. A rat scurries past the corner wall.
Consider the following quote:
Look around and you will find, no-one's really colour blind.
As we can tell from the spelling of the word, the person writing this quote is clearly not American.
Did you notice the subtle joke in the joke on panel 4?
I didn't want to believe. Of course on some level I realized it was a known-plaintext attack. But I couldn't admit it until I saw for myself.
(Emphasis mine.) I thought that was great. It's so pedantic, yet it explains everything neatly.
for (j = 0; j < 256; j++) {
i_t3 = (i_t3 & 0x1ffff) | (j << 17);
i_t6 = (((((((i_t3 >> 3) ^ i_t3) >> 1) ^ i_t3) >> 8) ^ i_t3) >> 5) & 0xff;
if (i_t6 == i_t1)
break;
}
So then he pointed at the tiger and screamed
"there


You can use d-model as a two way data binding to html elements. If the element does not have a way to iteract with the user it will be a one way data binding.
So, when the data at the storage is changed the html element will be changed too. If you change the value of the element the storage will be updated and all the elements that are observed by that data will be updated too.
Syntax:
In this example you will get the name of the user inside the span element
This will be a one way data binding. Because is a read only element
Below a sample using a two way data binding:
In this case, after you leave the input text you will get the span updated. Because the input text will update the storage and the storage will update the span element.
You can use expressions inside d-model attribute. Expressions are only allowed in one way data binding.
A sample using expression:
You can use functions inside expressions too.
Sample using functions inside expression:
You can also [format](d-format) the value of your d-model.
You can change the [event](d-model-event) listener of the model if you want
There is some events related to d-mode too


Differences Between Wallet Types¶
What are the different types of private key formats that I can use to access my wallet?
The MOAC is stored on the blockchain, your MOAC private key or Keystore File or whatever piece of information you have proves ownership of that MOAC, which allows you to move it.
At the end of the day, you are always signing with your private key.
However, for additional functionality (like protecting it with a password) there are formats & ways of storing your private key:
Keystore File (UTC / JSON)¶
- This is encrypted by the password you chose.
- This is the recommended version to save.
- This Keystore file matches the format used by Mist so you can easily import it in the future.
- Make sure to have multiple backups.
Private Key (unencrypted)¶
- This is the unencrypted text version of your private key, meaning no password is necessary.
- If someone were to find your unencrypted private key, they could access your wallet without a password.
- For this reason, encrypted versions are typically recommended. To learn about how you can encrypt your private key, click here for more information.
- However, you should print the paper wallet or save this in an offline environment (like a piece of paper or USB drive). This ensures a lost password does not result in lost MOAC, and acts as another backup.
You can check the actual conent of the private key but be sure not to discolose to anybody suspicious.
MetaMask¶
You can use Metamask to save your keypairs but currently MetaMask do not support MOAC transaction yet.
Ledger or TREZOR or Digital Bitbox Hardware Wallets¶
You can use TREZOR or Digital Bitbox Hardware Wallets to store the MOAC keypairs but they do not support MOAC transaction yet.


Supermedium's collection of A-Frame components.
From the creators of A-Frame.
An axis-aligned bounding box component for A-Frame.
Animations in A-Frame using anime.js
A timeline component to use with the A-Frame animation component.
An A-Frame component to set UVs onto a plane geometry given a gridded texture atlas.
Audio visualizations in A-Frame using Web Audio (AnalyserNode)
Multi-user in A-Frame using raw websockets
A component to film and record A-Frame scenes with a controlled camera (pans, dollies, tilts).
A component to pretty-log cursor events.
Generate a number of entities in A-Frame given a mixin
Set properties in response to events in A-Frame
Multi-user in A-Frame using Firebase
A simple FPS counter component to measure performance in VR for A-Frame.
An A-Frame component to merge geometries to reduce draw calls.
A component to extract parts from a GLTF model into their own A-Frame entities.
A controller haptics (vibrations) component for A-Frame.
Position and layout child entities in 3D space for A-Frame
In-VR console logs for A-Frame.
Rotate an entity to face towards another entity in A-Frame
Mountain terrain in A-Frame using randomly-generated height maps
Orbit controls component for A-Frame.
A component to declaratively proxy events for A-Frame.
Randomize color, position, rotation, and scale in A-Frame
State management for A-Frame using single global state modified through actions. State flows down to application via declarative binding.
Gradient sky with adjustable sun in A-Frame
Encapsulate groups of entities, use templating engines, and do string interpolations in A-Frame
Geometry-based text for A-Frame
An A-Frame component that provides and normalizes directional events for thumbpads and thumbsticks.


TrueRSS
Home
Favorites
Plugins
Settings
About
Add
Refresh
Download Opml
All
Interval: 1 hour
Interval: 2 hours
Interval: 3 hours
Interval: 6 hours
Interval: 8 hours
Interval: 12 hours
Interval: 16 hours
Interval: 24 hours
Attach OPML by dropping them here or
selecting one


--- layout: default --- {% include _honne.html %} {% include {{ honne_theme_base }}/layouts/page.html %}