Easy Installation
No need for Node.js, Webpack, Babel, or Gulp.
snuggsiツ works in production or in a plain 'ol HTML file!
Simply place the following script within your webpage:
<script nomodule src=//unpkg.com/snuggsi></script>
Et Voila (that's it!) ツ
See
ECMAScript Module Imports
for <script type=module>
support!


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * ------------------------------ | |
| 28 | * CategoryPointerAnnotation.java | |
| 29 | * ------------------------------ | |
| 30 | * (C) Copyright 2006-2009, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 02-Oct-2006 : Version 1 (DG); | |
| 38 | * 06-Mar-2007 : Implemented hashCode() (DG); | |
| 39 | * 20-Jun-2007 : Removed JCommon dependencies (DG); | |
| 40 | * 24-Jun-2009 : Fire change events (see patch 2809117 by PK) (DG); | |
| 41 | * | |
| 42 | */ | |
| 43 | ||
| 44 | package org.jfree.chart.annotations; | |
| 45 | ||
| 46 | import java.awt.BasicStroke; | |
| 47 | import java.awt.Color; | |
| 48 | import java.awt.Graphics2D; | |
| 49 | import java.awt.Paint; | |
| 50 | import java.awt.Stroke; | |
| 51 | import java.awt.geom.GeneralPath; | |
| 52 | import java.awt.geom.Line2D; | |
| 53 | import java.awt.geom.Rectangle2D; | |
| 54 | import java.io.IOException; | |
| 55 | import java.io.ObjectInputStream; | |
| 56 | import java.io.ObjectOutputStream; | |
| 57 | import java.io.Serializable; | |
| 58 | ||
| 59 | import org.jfree.chart.axis.CategoryAxis; | |
| 60 | import org.jfree.chart.axis.ValueAxis; | |
| 61 | import org.jfree.chart.plot.CategoryPlot; | |
| 62 | import org.jfree.chart.plot.Plot; | |
| 63 | import org.jfree.chart.plot.PlotOrientation; | |
| 64 | import org.jfree.chart.text.TextUtilities; | |
| 65 | import org.jfree.chart.util.HashUtilities; | |
| 66 | import org.jfree.chart.util.ObjectUtilities; | |
| 67 | import org.jfree.chart.util.PublicCloneable; | |
| 68 | import org.jfree.chart.util.RectangleEdge; | |
| 69 | import org.jfree.chart.util.SerialUtilities; | |
| 70 | import org.jfree.data.category.CategoryDataset; | |
| 71 | ||
| 72 | /** | |
| 73 | * An arrow and label that can be placed on a {@link CategoryPlot}. The arrow | |
| 74 | * is drawn at a user-definable angle so that it points towards the (category, | |
| 75 | * value) location for the annotation. | |
| 76 | *
 | |
| 77 | * The arrow length (and its offset from the (category, value) location) is | |
| 78 | * controlled by the tip radius and the base radius attributes. Imagine two | |
| 79 | * circles around the (category, value) coordinate: the inner circle defined by | |
| 80 | * the tip radius, and the outer circle defined by the base radius. Now, draw | |
| 81 | * the arrow starting at some point on the outer circle (the point is | |
| 82 | * determined by the angle), with the arrow tip being drawn at a corresponding | |
| 83 | * point on the inner circle. | |
| 84 | * | |
| 85 | * @since 1.0.3 | |
| 86 | */ | |
| 87 | public class CategoryPointerAnnotation extends CategoryTextAnnotation | |
| 88 | implements Cloneable, PublicCloneable, Serializable { | |
| 89 | ||
| 90 | /** For serialization. */ | |
| 91 | private static final long serialVersionUID = -4031161445009858551L; | |
| 92 | ||
| 93 | /** The default tip radius (in Java2D units). */ | |
| 94 | public static final double DEFAULT_TIP_RADIUS = 10.0; | |
| 95 | ||
| 96 | /** The default base radius (in Java2D units). */ | |
| 97 | public static final double DEFAULT_BASE_RADIUS = 30.0; | |
| 98 | ||
| 99 | /** The default label offset (in Java2D units). */ | |
| 100 | public static final double DEFAULT_LABEL_OFFSET = 3.0; | |
| 101 | ||
| 102 | /** The default arrow length (in Java2D units). */ | |
| 103 | public static final double DEFAULT_ARROW_LENGTH = 5.0; | |
| 104 | ||
| 105 | /** The default arrow width (in Java2D units). */ | |
| 106 | public static final double DEFAULT_ARROW_WIDTH = 3.0; | |
| 107 | ||
| 108 | /** The angle of the arrow's line (in radians). */ | |
| 109 | private double angle; | |
| 110 | ||
| 111 | /** | |
| 112 | * The radius from the (x, y) point to the tip of the arrow (in Java2D | |
| 113 | * units). | |
| 114 | */ | |
| 115 | private double tipRadius; | |
| 116 | ||
| 117 | /** | |
| 118 | * The radius from the (x, y) point to the start of the arrow line (in | |
| 119 | * Java2D units). | |
| 120 | */ | |
| 121 | private double baseRadius; | |
| 122 | ||
| 123 | /** The length of the arrow head (in Java2D units). */ | |
| 124 | private double arrowLength; | |
| 125 | ||
| 126 | /** The arrow width (in Java2D units, per side). */ | |
| 127 | private double arrowWidth; | |
| 128 | ||
| 129 | /** The arrow stroke. */ | |
| 130 | private transient Stroke arrowStroke; | |
| 131 | ||
| 132 | /** The arrow paint. */ | |
| 133 | private transient Paint arrowPaint; | |
| 134 | ||
| 135 | /** The radius from the base point to the anchor point for the label. */ | |
| 136 | private double labelOffset; | |
| 137 | ||
| 138 | /** | |
| 139 | * Creates a new label and arrow annotation. | |
| 140 | * | |
| 141 | * @param label the label (null permitted). | |
| 142 | * @param key the category key. | |
| 143 | * @param value the y-value (measured against the chart's range axis). | |
| 144 | * @param angle the angle of the arrow's line (in radians). | |
| 145 | */ | |
| 146 | public CategoryPointerAnnotation(String label, Comparable key, double value, | |
| 147 | double angle) { | |
| 148 | ||
| 149 | super(label, key, value); | |
| 150 | this.angle = angle; | |
| 151 | this.tipRadius = DEFAULT_TIP_RADIUS; | |
| 152 | this.baseRadius = DEFAULT_BASE_RADIUS; | |
| 153 | this.arrowLength = DEFAULT_ARROW_LENGTH; | |
| 154 | this.arrowWidth = DEFAULT_ARROW_WIDTH; | |
| 155 | this.labelOffset = DEFAULT_LABEL_OFFSET; | |
| 156 | this.arrowStroke = new BasicStroke(1.0f); | |
| 157 | this.arrowPaint = Color.black; | |
| 158 | ||
| 159 | } | |
| 160 | ||
| 161 | /** | |
| 162 | * Returns the angle of the arrow. | |
| 163 | * | |
| 164 | * @return The angle (in radians). | |
| 165 | * | |
| 166 | * @see #setAngle(double) | |
| 167 | */ | |
| 168 | public double getAngle() { | |
| 169 |
1
1. getAngle : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getAngle → NO_COVERAGE |
return this.angle; |
| 170 | } | |
| 171 | ||
| 172 | /** | |
| 173 | * Sets the angle of the arrow and sends an | |
| 174 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 175 | * | |
| 176 | * @param angle the angle (in radians). | |
| 177 | * | |
| 178 | * @see #getAngle() | |
| 179 | */ | |
| 180 | public void setAngle(double angle) { | |
| 181 | this.angle = angle; | |
| 182 |
1
1. setAngle : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 183 | } | |
| 184 | ||
| 185 | /** | |
| 186 | * Returns the tip radius. | |
| 187 | * | |
| 188 | * @return The tip radius (in Java2D units). | |
| 189 | * | |
| 190 | * @see #setTipRadius(double) | |
| 191 | */ | |
| 192 | public double getTipRadius() { | |
| 193 |
1
1. getTipRadius : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getTipRadius → NO_COVERAGE |
return this.tipRadius; |
| 194 | } | |
| 195 | ||
| 196 | /** | |
| 197 | * Sets the tip radius and sends an | |
| 198 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 199 | * | |
| 200 | * @param radius the radius (in Java2D units). | |
| 201 | * | |
| 202 | * @see #getTipRadius() | |
| 203 | */ | |
| 204 | public void setTipRadius(double radius) { | |
| 205 | this.tipRadius = radius; | |
| 206 |
1
1. setTipRadius : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 207 | } | |
| 208 | ||
| 209 | /** | |
| 210 | * Returns the base radius. | |
| 211 | * | |
| 212 | * @return The base radius (in Java2D units). | |
| 213 | * | |
| 214 | * @see #setBaseRadius(double) | |
| 215 | */ | |
| 216 | public double getBaseRadius() { | |
| 217 |
1
1. getBaseRadius : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getBaseRadius → NO_COVERAGE |
return this.baseRadius; |
| 218 | } | |
| 219 | ||
| 220 | /** | |
| 221 | * Sets the base radius and sends an | |
| 222 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 223 | * | |
| 224 | * @param radius the radius (in Java2D units). | |
| 225 | * | |
| 226 | * @see #getBaseRadius() | |
| 227 | */ | |
| 228 | public void setBaseRadius(double radius) { | |
| 229 | this.baseRadius = radius; | |
| 230 |
1
1. setBaseRadius : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 231 | } | |
| 232 | ||
| 233 | /** | |
| 234 | * Returns the label offset. | |
| 235 | * | |
| 236 | * @return The label offset (in Java2D units). | |
| 237 | * | |
| 238 | * @see #setLabelOffset(double) | |
| 239 | */ | |
| 240 | public double getLabelOffset() { | |
| 241 |
1
1. getLabelOffset : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getLabelOffset → NO_COVERAGE |
return this.labelOffset; |
| 242 | } | |
| 243 | ||
| 244 | /** | |
| 245 | * Sets the label offset (from the arrow base, continuing in a straight | |
| 246 | * line, in Java2D units) and sends an | |
| 247 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 248 | * | |
| 249 | * @param offset the offset (in Java2D units). | |
| 250 | * | |
| 251 | * @see #getLabelOffset() | |
| 252 | */ | |
| 253 | public void setLabelOffset(double offset) { | |
| 254 | this.labelOffset = offset; | |
| 255 |
1
1. setLabelOffset : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 256 | } | |
| 257 | ||
| 258 | /** | |
| 259 | * Returns the arrow length. | |
| 260 | * | |
| 261 | * @return The arrow length. | |
| 262 | * | |
| 263 | * @see #setArrowLength(double) | |
| 264 | */ | |
| 265 | public double getArrowLength() { | |
| 266 |
1
1. getArrowLength : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getArrowLength → NO_COVERAGE |
return this.arrowLength; |
| 267 | } | |
| 268 | ||
| 269 | /** | |
| 270 | * Sets the arrow length and sends an | |
| 271 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 272 | * | |
| 273 | * @param length the length. | |
| 274 | * | |
| 275 | * @see #getArrowLength() | |
| 276 | */ | |
| 277 | public void setArrowLength(double length) { | |
| 278 | this.arrowLength = length; | |
| 279 | } | |
| 280 | ||
| 281 | /** | |
| 282 | * Returns the arrow width. | |
| 283 | * | |
| 284 | * @return The arrow width (in Java2D units). | |
| 285 | * | |
| 286 | * @see #setArrowWidth(double) | |
| 287 | */ | |
| 288 | public double getArrowWidth() { | |
| 289 |
1
1. getArrowWidth : replaced return of double value with -(x + 1) for org/jfree/chart/annotations/CategoryPointerAnnotation::getArrowWidth → NO_COVERAGE |
return this.arrowWidth; |
| 290 | } | |
| 291 | ||
| 292 | /** | |
| 293 | * Sets the arrow width and sends an | |
| 294 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 295 | * | |
| 296 | * @param width the width (in Java2D units). | |
| 297 | * | |
| 298 | * @see #getArrowWidth() | |
| 299 | */ | |
| 300 | public void setArrowWidth(double width) { | |
| 301 | this.arrowWidth = width; | |
| 302 |
1
1. setArrowWidth : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 303 | } | |
| 304 | ||
| 305 | /** | |
| 306 | * Returns the stroke used to draw the arrow line. | |
| 307 | * | |
| 308 | * @return The arrow stroke (never null). | |
| 309 | * | |
| 310 | * @see #setArrowStroke(Stroke) | |
| 311 | */ | |
| 312 | public Stroke getArrowStroke() { | |
| 313 |
1
1. getArrowStroke : mutated return of Object value for org/jfree/chart/annotations/CategoryPointerAnnotation::getArrowStroke to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.arrowStroke; |
| 314 | } | |
| 315 | ||
| 316 | /** | |
| 317 | * Sets the stroke used to draw the arrow line and sends an | |
| 318 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 319 | * | |
| 320 | * @param stroke the stroke (null not permitted). | |
| 321 | * | |
| 322 | * @see #getArrowStroke() | |
| 323 | */ | |
| 324 | public void setArrowStroke(Stroke stroke) { | |
| 325 |
1
1. setArrowStroke : negated conditional → KILLED |
if (stroke == null) { |
| 326 | throw new IllegalArgumentException("Null 'stroke' not permitted."); | |
| 327 | } | |
| 328 | this.arrowStroke = stroke; | |
| 329 |
1
1. setArrowStroke : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 330 | } | |
| 331 | ||
| 332 | /** | |
| 333 | * Returns the paint used for the arrow. | |
| 334 | * | |
| 335 | * @return The arrow paint (never null). | |
| 336 | * | |
| 337 | * @see #setArrowPaint(Paint) | |
| 338 | */ | |
| 339 | public Paint getArrowPaint() { | |
| 340 |
1
1. getArrowPaint : mutated return of Object value for org/jfree/chart/annotations/CategoryPointerAnnotation::getArrowPaint to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.arrowPaint; |
| 341 | } | |
| 342 | ||
| 343 | /** | |
| 344 | * Sets the paint used for the arrow and sends an | |
| 345 | * {@link AnnotationChangeEvent} to all registered listeners. | |
| 346 | * | |
| 347 | * @param paint the arrow paint (null not permitted). | |
| 348 | * | |
| 349 | * @see #getArrowPaint() | |
| 350 | */ | |
| 351 | public void setArrowPaint(Paint paint) { | |
| 352 |
1
1. setArrowPaint : negated conditional → KILLED |
if (paint == null) { |
| 353 | throw new IllegalArgumentException("Null 'paint' argument."); | |
| 354 | } | |
| 355 | this.arrowPaint = paint; | |
| 356 |
1
1. setArrowPaint : removed call to org/jfree/chart/annotations/CategoryPointerAnnotation::fireAnnotationChanged → SURVIVED |
fireAnnotationChanged(); |
| 357 | } | |
| 358 | ||
| 359 | /** | |
| 360 | * Draws the annotation. | |
| 361 | * | |
| 362 | * @param g2 the graphics device. | |
| 363 | * @param plot the plot. | |
| 364 | * @param dataArea the data area. | |
| 365 | * @param domainAxis the domain axis. | |
| 366 | * @param rangeAxis the range axis. | |
| 367 | */ | |
| 368 | public void draw(Graphics2D g2, CategoryPlot plot, Rectangle2D dataArea, | |
| 369 | CategoryAxis domainAxis, ValueAxis rangeAxis) { | |
| 370 | ||
| 371 | PlotOrientation orientation = plot.getOrientation(); | |
| 372 | RectangleEdge domainEdge = Plot.resolveDomainAxisLocation( | |
| 373 | plot.getDomainAxisLocation(), orientation); | |
| 374 | RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation( | |
| 375 | plot.getRangeAxisLocation(), orientation); | |
| 376 | CategoryDataset dataset = plot.getDataset(); | |
| 377 | int catIndex = dataset.getColumnIndex(getCategory()); | |
| 378 | int catCount = dataset.getColumnCount(); | |
| 379 | double j2DX = domainAxis.getCategoryMiddle(catIndex, catCount, | |
| 380 | dataArea, domainEdge); | |
| 381 | double j2DY = rangeAxis.valueToJava2D(getValue(), dataArea, rangeEdge); | |
| 382 |
1
1. draw : negated conditional → NO_COVERAGE |
if (orientation == PlotOrientation.HORIZONTAL) { |
| 383 | double temp = j2DX; | |
| 384 | j2DX = j2DY; | |
| 385 | j2DY = temp; | |
| 386 | } | |
| 387 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double startX = j2DX + Math.cos(this.angle) * this.baseRadius; |
| 388 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double startY = j2DY + Math.sin(this.angle) * this.baseRadius; |
| 389 | ||
| 390 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double endX = j2DX + Math.cos(this.angle) * this.tipRadius; |
| 391 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double endY = j2DY + Math.sin(this.angle) * this.tipRadius; |
| 392 | ||
| 393 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double arrowBaseX = endX + Math.cos(this.angle) * this.arrowLength; |
| 394 |
2
1. draw : Replaced double multiplication with division → NO_COVERAGE 2. draw : Replaced double addition with subtraction → NO_COVERAGE |
double arrowBaseY = endY + Math.sin(this.angle) * this.arrowLength; |
| 395 | ||
| 396 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double addition with subtraction → NO_COVERAGE |
double arrowLeftX = arrowBaseX |
| 397 | + Math.cos(this.angle + Math.PI / 2.0) * this.arrowWidth; | |
| 398 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double addition with subtraction → NO_COVERAGE |
double arrowLeftY = arrowBaseY |
| 399 | + Math.sin(this.angle + Math.PI / 2.0) * this.arrowWidth; | |
| 400 | ||
| 401 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double subtraction with addition → NO_COVERAGE |
double arrowRightX = arrowBaseX |
| 402 | - Math.cos(this.angle + Math.PI / 2.0) * this.arrowWidth; | |
| 403 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double subtraction with addition → NO_COVERAGE |
double arrowRightY = arrowBaseY |
| 404 | - Math.sin(this.angle + Math.PI / 2.0) * this.arrowWidth; | |
| 405 | ||
| 406 | GeneralPath arrow = new GeneralPath(); | |
| 407 |
1
1. draw : removed call to java/awt/geom/GeneralPath::moveTo → NO_COVERAGE |
arrow.moveTo((float) endX, (float) endY); |
| 408 |
1
1. draw : removed call to java/awt/geom/GeneralPath::lineTo → NO_COVERAGE |
arrow.lineTo((float) arrowLeftX, (float) arrowLeftY); |
| 409 |
1
1. draw : removed call to java/awt/geom/GeneralPath::lineTo → NO_COVERAGE |
arrow.lineTo((float) arrowRightX, (float) arrowRightY); |
| 410 |
1
1. draw : removed call to java/awt/geom/GeneralPath::closePath → NO_COVERAGE |
arrow.closePath(); |
| 411 | ||
| 412 |
1
1. draw : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(this.arrowStroke); |
| 413 |
1
1. draw : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(this.arrowPaint); |
| 414 | Line2D line = new Line2D.Double(startX, startY, endX, endY); | |
| 415 |
1
1. draw : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 416 |
1
1. draw : removed call to java/awt/Graphics2D::fill → NO_COVERAGE |
g2.fill(arrow); |
| 417 | ||
| 418 | // draw the label | |
| 419 |
1
1. draw : removed call to java/awt/Graphics2D::setFont → NO_COVERAGE |
g2.setFont(getFont()); |
| 420 |
1
1. draw : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(getPaint()); |
| 421 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double addition with subtraction → NO_COVERAGE |
double labelX = j2DX |
| 422 | + Math.cos(this.angle) * (this.baseRadius + this.labelOffset); | |
| 423 |
3
1. draw : Replaced double addition with subtraction → NO_COVERAGE 2. draw : Replaced double multiplication with division → NO_COVERAGE 3. draw : Replaced double addition with subtraction → NO_COVERAGE |
double labelY = j2DY |
| 424 | + Math.sin(this.angle) * (this.baseRadius + this.labelOffset); | |
| 425 | /* Rectangle2D hotspot = */ TextUtilities.drawAlignedString(getText(), | |
| 426 | g2, (float) labelX, (float) labelY, getTextAnchor()); | |
| 427 | // TODO: implement the entity for the annotation | |
| 428 | ||
| 429 | } | |
| 430 | ||
| 431 | /** | |
| 432 | * Tests this annotation for equality with an arbitrary object. | |
| 433 | * | |
| 434 | * @param obj the object (null permitted). | |
| 435 | * | |
| 436 | * @return true or false. | |
| 437 | */ | |
| 438 | public boolean equals(Object obj) { | |
| 439 | ||
| 440 |
1
1. equals : negated conditional → KILLED |
if (obj == this) { |
| 441 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 442 | } | |
| 443 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof CategoryPointerAnnotation)) { |
| 444 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 445 | } | |
| 446 |
1
1. equals : negated conditional → KILLED |
if (!super.equals(obj)) { |
| 447 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 448 | } | |
| 449 | CategoryPointerAnnotation that = (CategoryPointerAnnotation) obj; | |
| 450 |
1
1. equals : negated conditional → KILLED |
if (this.angle != that.angle) { |
| 451 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 452 | } | |
| 453 |
1
1. equals : negated conditional → KILLED |
if (this.tipRadius != that.tipRadius) { |
| 454 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 455 | } | |
| 456 |
1
1. equals : negated conditional → KILLED |
if (this.baseRadius != that.baseRadius) { |
| 457 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 458 | } | |
| 459 |
1
1. equals : negated conditional → KILLED |
if (this.arrowLength != that.arrowLength) { |
| 460 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 461 | } | |
| 462 |
1
1. equals : negated conditional → KILLED |
if (this.arrowWidth != that.arrowWidth) { |
| 463 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 464 | } | |
| 465 |
1
1. equals : negated conditional → KILLED |
if (!this.arrowPaint.equals(that.arrowPaint)) { |
| 466 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 467 | } | |
| 468 |
1
1. equals : negated conditional → KILLED |
if (!ObjectUtilities.equal(this.arrowStroke, that.arrowStroke)) { |
| 469 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 470 | } | |
| 471 |
1
1. equals : negated conditional → KILLED |
if (this.labelOffset != that.labelOffset) { |
| 472 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 473 | } | |
| 474 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 475 | } | |
| 476 | ||
| 477 | /** | |
| 478 | * Returns a hash code for this instance. | |
| 479 | * | |
| 480 | * @return A hash code. | |
| 481 | */ | |
| 482 | public int hashCode() { | |
| 483 | int result = 193; | |
| 484 | long temp = Double.doubleToLongBits(this.angle); | |
| 485 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 486 | temp = Double.doubleToLongBits(this.tipRadius); | |
| 487 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 488 | temp = Double.doubleToLongBits(this.baseRadius); | |
| 489 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 490 | temp = Double.doubleToLongBits(this.arrowLength); | |
| 491 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 492 | temp = Double.doubleToLongBits(this.arrowWidth); | |
| 493 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 494 |
2
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + HashUtilities.hashCodeForPaint(this.arrowPaint); |
| 495 |
2
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + this.arrowStroke.hashCode(); |
| 496 | temp = Double.doubleToLongBits(this.labelOffset); | |
| 497 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 37 * result + (int) (temp ^ (temp >>> 32)); |
| 498 |
1
1. hashCode : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return result; |
| 499 | } | |
| 500 | ||
| 501 | /** | |
| 502 | * Returns a clone of the annotation. | |
| 503 | * | |
| 504 | * @return A clone. | |
| 505 | * | |
| 506 | * @throws CloneNotSupportedException if the annotation can't be cloned. | |
| 507 | */ | |
| 508 | public Object clone() throws CloneNotSupportedException { | |
| 509 |
1
1. clone : mutated return of Object value for org/jfree/chart/annotations/CategoryPointerAnnotation::clone to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return super.clone(); |
| 510 | } | |
| 511 | ||
| 512 | /** | |
| 513 | * Provides serialization support. | |
| 514 | * | |
| 515 | * @param stream the output stream. | |
| 516 | * | |
| 517 | * @throws IOException if there is an I/O error. | |
| 518 | */ | |
| 519 | private void writeObject(ObjectOutputStream stream) throws IOException { | |
| 520 |
1
1. writeObject : removed call to java/io/ObjectOutputStream::defaultWriteObject → KILLED |
stream.defaultWriteObject(); |
| 521 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writePaint → KILLED |
SerialUtilities.writePaint(this.arrowPaint, stream); |
| 522 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writeStroke → KILLED |
SerialUtilities.writeStroke(this.arrowStroke, stream); |
| 523 | } | |
| 524 | ||
| 525 | /** | |
| 526 | * Provides serialization support. | |
| 527 | * | |
| 528 | * @param stream the input stream. | |
| 529 | * | |
| 530 | * @throws IOException if there is an I/O error. | |
| 531 | * @throws ClassNotFoundException if there is a classpath problem. | |
| 532 | */ | |
| 533 | private void readObject(ObjectInputStream stream) | |
| 534 | throws IOException, ClassNotFoundException { | |
| 535 |
1
1. readObject : removed call to java/io/ObjectInputStream::defaultReadObject → KILLED |
stream.defaultReadObject(); |
| 536 | this.arrowPaint = SerialUtilities.readPaint(stream); | |
| 537 | this.arrowStroke = SerialUtilities.readStroke(stream); | |
| 538 | } | |
| 539 | ||
| 540 | } | |
Mutations | ||
| 169 |
1.1 |
|
| 182 |
1.1 |
|
| 193 |
1.1 |
|
| 206 |
1.1 |
|
| 217 |
1.1 |
|
| 230 |
1.1 |
|
| 241 |
1.1 |
|
| 255 |
1.1 |
|
| 266 |
1.1 |
|
| 289 |
1.1 |
|
| 302 |
1.1 |
|
| 313 |
1.1 |
|
| 325 |
1.1 |
|
| 329 |
1.1 |
|
| 340 |
1.1 |
|
| 352 |
1.1 |
|
| 356 |
1.1 |
|
| 382 |
1.1 |
|
| 387 |
1.1 2.2 |
|
| 388 |
1.1 2.2 |
|
| 390 |
1.1 2.2 |
|
| 391 |
1.1 2.2 |
|
| 393 |
1.1 2.2 |
|
| 394 |
1.1 2.2 |
|
| 396 |
1.1 2.2 3.3 |
|
| 398 |
1.1 2.2 3.3 |
|
| 401 |
1.1 2.2 3.3 |
|
| 403 |
1.1 2.2 3.3 |
|
| 407 |
1.1 |
|
| 408 |
1.1 |
|
| 409 |
1.1 |
|
| 410 |
1.1 |
|
| 412 |
1.1 |
|
| 413 |
1.1 |
|
| 415 |
1.1 |
|
| 416 |
1.1 |
|
| 419 |
1.1 |
|
| 420 |
1.1 |
|
| 421 |
1.1 2.2 3.3 |
|
| 423 |
1.1 2.2 3.3 |
|
| 440 |
1.1 |
|
| 441 |
1.1 |
|
| 443 |
1.1 |
|
| 444 |
1.1 |
|
| 446 |
1.1 |
|
| 447 |
1.1 |
|
| 450 |
1.1 |
|
| 451 |
1.1 |
|
| 453 |
1.1 |
|
| 454 |
1.1 |
|
| 456 |
1.1 |
|
| 457 |
1.1 |
|
| 459 |
1.1 |
|
| 460 |
1.1 |
|
| 462 |
1.1 |
|
| 463 |
1.1 |
|
| 465 |
1.1 |
|
| 466 |
1.1 |
|
| 468 |
1.1 |
|
| 469 |
1.1 |
|
| 471 |
1.1 |
|
| 472 |
1.1 |
|
| 474 |
1.1 |
|
| 485 |
1.1 2.2 3.3 4.4 |
|
| 487 |
1.1 2.2 3.3 4.4 |
|
| 489 |
1.1 2.2 3.3 4.4 |
|
| 491 |
1.1 2.2 3.3 4.4 |
|
| 493 |
1.1 2.2 3.3 4.4 |
|
| 494 |
1.1 2.2 |
|
| 495 |
1.1 2.2 |
|
| 497 |
1.1 2.2 3.3 4.4 |
|
| 498 |
1.1 |
|
| 509 |
1.1 |
|
| 520 |
1.1 |
|
| 521 |
1.1 |
|
| 522 |
1.1 |
|
| 535 |
1.1 |


Moustache leverages Moustache.java and Jodd.Props.
With Moustache you can use a Jodd style property file as the variable substitution source for a template file that is marked up with Moustache.java style handlebars.
License: Licensed under Apache License, Version 2.0
Example Properties file:
# The configuration capability of this app leverages
# JODD Props: http://jodd.org/doc/props.html
#
# You can establish multiple profiles for different environments
# To declare the profile, simple change the following to the
# desired profile
@profiles=dev
[demo<dev>]
account.name=Ping Identity Demo
account.street1=1001 17th St.
account.street2=Suite 100
account.fullAddress=${demo.account.street1} ${demo.account.street2}
account.city=Denver
account.region=CO
account.country=US
account.postal=80202
account.domain=pingidentity.com
Example template file
-- Account Name: {{demo.account.name}}
-- Account Full Address: '{{demo.account.fullAddress}}'
-- Account City: "{{demo.account.city}}"
-- Account Region: &{{demo.account.region}}&
-- Account Country: {{demo.account.country}}
-- Account Postal: {{demo.account.postal}};
-- Account Domain: {{demo.account.domain}}
When the above is compiled with Moustache, the following output is created:
-- Account Name: Ping Identity Demo
-- Account Full Address: '1001 17th St. Suite 100'
-- Account City: "Denver"
-- Account Region: &CO&
-- Account Country: US
-- Account Postal: 80202;
-- Account Domain: pingidentity.com
Running as a command line utility:
usage: java -cp moustache.jar Main
-help Display this message and exit
-verbose Show status messages during processing
-version Display version and exit
-props <file> Jodd.Props style properties file
-template <file> file with moustache handlebars to process
-out <file> [optional]output file to create. If not present, stdout.
-script <file> Optionally, use an XML script file as input instead of props, template, and out.
Sample XML Script file (generated by AppTest.java):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<script>
<verbose>false</verbose>
<entries>
<entry>
<output>/home/me/workspace/moustache/target/test-classes/test.output</output>
<properties>/home/me/workspace/moustache/target/test-classes/test.properties</properties>
<template>/home/me/workspace/moustache/target/test-classes/test.template</template>
</entry>
</entries>
</script>
Embedding within your Java app:
public String compileTemplate(InputStream template, InputStream props) throws Exception
{
MoustacheCompiler compiler = new MoustacheCompiler();
compiler.setPropertiesFile(props);
compiler.setTemplateFile(template);
String out = compiler.compile();
return out;
}
Building Moustache:


Run tests in your browser! If you can think of a better way how to achieve same and/or turn it into a unit test, please let us know or raise a PR!
Things tried:
Please open the DevTools console to see the execution log.


Toggle navigation
Replays
Progamers
Search
Starcraft II replays
Map: Lost Temple
(
)
Player: MMA
(
)
Search term: Life
(
)
Map: Lost Temple
(
)
Player: MMA
(
)
Search term: Life
(
)
Map: Lost Temple
(
)
Player: MMA
(
)
Search term: Life
(
)
Showing 1-50 of 200 replays.
Show charts
Reveal winners
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
Life
APM: 170
MMA
APM: 370
Lost Temple
05/13/2014 3/5
Length: 12:35
Event: 2013 WCS American S1
Detail
Download
<< First
< Prev
1
2
3
4
5
6
7
8
9
Next >
Last >>
Narrow Results
Maps
Lost Temple (10)
Frost LE (14)
Daedalus Point (10)
Polar Night LE (8)
Alterzim Stronghold TE (5)
Heavy Rain LE (5)
More ...
Players
Life (10)
MMA (14)
MC (10)
Jeadong (8)
Flash (5)
Sniper (5)
More ...


Amazing Visualization Tool Cures All Ills A new open-source tool designed for
visualization of data turns out to have an unexpected, positive side effect:
it heals any ailments of the viewer. Leading scientists report that the tool,
called D3000, can cure even the following symptoms: fevers chills general
malaise It achieves this end with a patented, three-step process. Load in data.
Generate a visual representation. Activate magic healing function.
fevers
chills
general malaise
It achieves this end with a patented, three-step process


class Tree
Represents a program as a tree of nodes.
Internally, we keep a simple list of nodes that is the "program".
| <init> |
Tree(nodes: MutableList<Node>, treeGenerator: TreeGenerator)
Represents a program as a tree of nodes. |
| fitness |
var fitness: Double
The fitness of this tree as based on some data set. |
| nodes |
var nodes: MutableList<Node>
A collection of nodes that make up this tree. |
| treeGenerator |
val treeGenerator: TreeGenerator
The tree generator used to create this tree (or its parent tree) |
| copy |
fun copy(): Tree
Creates a copy of this tree. All nodes are copied too. |
| crossover |
fun crossover(other: Tree): Unit
Performs the crossover operation on this tree and the tree given. |
| execute |
fun execute(case: List<Double>): Double
Executes the trees program on a set of inputs. |
| hoistMutation |
fun hoistMutation(): Unit
Performs the hoist mutation operation on this tree. |
| pointMutation |
fun pointMutation(replacementRate: Double): Unit
Performs the point mutation operation on this tree. |
| subtreeMutation |
fun subtreeMutation(): Unit
Performs the subtree mutation operation on this tree. |
| toString |
fun toString(): String
Prints the tree as an S-expression. |


Logstash
25 Aug 2014Version checked 1.4.2
A tool for managing events and logs.
You can use it to collect logs, parse them, and store them for later use (like, for searching). Speaking of searching, logstash comes with a web interface for searching and drilling into all of your logs.
Highlights
Logs Events BigData Filter
Trade-off
Extensible SOC ELK stack integration JRuby Poor documentation
Features
- Transform, and process logs to and from anywhere
- Provide search and analytics
Inputs, Filters and Outputs (Plugins)
- Input: Stream source
- Filter: Extracts what you are interested from the stream.
- Output: Sends the extracted stuff somewhere.
- Codec: Decode (via inputs) and Encode (via outputs) a message
Examples
Simplest configuration example
Using codecs
Grok: A collection of pre-defined patterns
Have a look on them (You can debug it)


Evolutionary Algorithms¶
Evolutionary and Swarm algorithms are a class of computational intelligence that rely on heuristic-based approaches to solve optimisation problems, which cannot be easily solved in polynomial time. These problems include NP-Hard combinatorial problems, and similar problems that require too long to process due to the fitness function complexity (e.g. engineering problems, computer simulation).
The concept of evolutionary algorithms (EA) is quite simple as it follows the process of natural selection and evolution. Genetic algorithms, evolution strategies, and differential evolution are among the most popular EA. An EA contains four overall stages: initialization, selection, genetic operators, and termination. Typically in an EA, fitter individuals that maximize/minimize the fitness function will survive and proliferate into the next generations, while weak individuals will die off and not contribute to the pool of further generations, just like natural selection processes. A typical workflow of an EA is shown in the figure below.
Swarm intelligence is also another variant of EA and nature-inspired metaheuristics, in which a population of agents are interacting locally with one another and globally with their environment. The inspiration comes from the nature, especially how biological systems interact. The agents follow simple rules and with repeated local and some random interactions between the agents, an emergence of “intelligent” global behavior can be observed among the whole population of agents. For example, this behavior can be seen in ant colonies, bee colonies, and bird flocking movement when searching for food. Among the most common swarm algorithms are particle swarm optimisation, ant colony optimization, artificial bee colony, cuckoo search, and many others.
Currently we have a support of different standalone evolutionary and swarm algorithms, some are listed below, and many others are on track.


returns all meta information and restrictions associated with the type all inheritable facets from super types are included
returns full list of known types which inherit from this type. Note: built-in types does not list their not built in sub types
returns full list of ancestor types
returns array of custom facets directly declared on this type
returns meta information and restrictions associated with the type only declared facets are included
returns true if this type inherits from array type
returns true if this type inherits from boolean type
returns true if this type inherits from one of date related types
returns true if this type inherits from one of date related types
returns true if this type inherits from one of date related types
return true if this type inherits from a file type
returns true if this type inherits from integer type
returns true if this type inherits from number type
returns true if this type inherits from object type
returns true if this type has recurrent definition;
returns true if this type inherits from scalar type
returns true if this type inherits from string type
returns true if this type inherits from one of date related types
returns true if this type is a union type
returns true if this type inhetits from an unknown type
name of the type
returns array of custom facets directly declared on this type
returns list of directly declared sub types of this type
returns list of directly declared super types of this type
validates a potential instance of type and returns a status describing the results of validation
Generated using TypeDoc
parsed representation of the type you should not create instances of this interfaces manually


Please enter the following information:
First Name
This is required.
Last Name
This is required.
Email
This is required.
Cell Phone
This is required.
Submit


Registration
Past Medical History ::
No Medical History found
Past Medical History
Menstrual History
Past Surgical History
Drug History
Family History
Similar Diseases In Family
Yes
No
Comments


Availability: ALL
The GOTO command is used to change the order of command execution when reading commands from a command file. It causes the command file reader to jump to the line following the specified label.
Usage
:label
::func_label
GOTO label
Parameters
Description
Labels are defined in the command file by a line of the form:
:label
::func_label
The colon does not have to be in the first column of the line, but there must be no white space between the colon and the label. Two colons (::) identify the label as a function call entry point, but it is also valid to branch to such a label with the GOTO command. Functions are normally called using a direct reference to func_label as a command or using the fr c command. See H (Help).
GOTO commands can precede or follow the corresponding label definition. Label definitions and GOTO commands have no effect when reading commands from the console, but they will be saved in a command output file if command logging is in effect.
The GOTO command, in combination with MON local variables and the IF command, can be used to construct arbitrary conditional blocks and loops in command files.
Examples
ew $strptr = my_str_var // set $strptr to address of my_str_var
ew $strlen = 0 // set $strlen to 0
:LOOP
eb $char = @.1$strptr // read next character
if (@.1$char == 0) {goto DONE} // if 0 then exit the loop
ew $strlen = @$strlen + 1 // else increment $strlen
ew $strptr = @$strptr + 1 // and advance $strptr
if (@$strlen < 100) {goto LOOP} // then loop back
dv "ERROR: $strlen overflow\n"
goto EXIT
:DONE
dv "$strlen = %d\n", $strlen
:EXIT


Back
Pay by a set date
Jan Clark can accept your offer, reject it, or suggest a different one. If they don't want to negotiate, the court will decide how you pay them back.
If you don't pay by the set date Jan Clark can restart the claim.


I had an interesting discussion with a co-worker yesterday, we were discussing how to grab all the comments from an Objective-C source file. We tried to think about how to do that with a regex, which probably would have worked ok, but definitely wouldn’t have handled all the edge cases easily.
I’ve been using clang’s awesome libTooling library for writing frontend actions recently so I thought I’d try and take a quick pass at writing a frontend action that can grab all the comments from a source file.
Setting up the envionment for building frontend actions is covered in the awesome clang Tutorial for building tools using LibTooling and LibASTMatchers documentation, so go do that if you haven’t already!
Next, I set up a new frontend action. I cloned down llvm into the ~/clang-llvm
folder:
Then the CMakeLists.txt
should look like this:
set(LLVM_LINK_COMPONENTS support)
add_clang_executable(commentparser
CommentParser.cpp
)
target_link_libraries(commentparser
clangTooling
clangBasic
clangASTMatchers
)
Now we can start writing our fontend action. We need a couple of different elements: setting up command line parsing in the main function, an ASTFrontendAction
and an ASTConsumer
. Starting with the command line parsing and setup:
Nothing too interesting going on here yet, although note that we setup a new OptionCategory
, this lets us hide all the default clang options displayed in the help, we don’t want those for our tool.
Next is the ASTFrontendAction
, all we are going to do here is create our ASTConsumer
and forward the compiler’s ASTContext
to it. Here’s that code:
Now for the interesting part, our ASTConsumer
, this is the class that we can visit AST nodes in. If we wanted to, we could perform an action on all IfStmt
, ForLoop
, EnumDecl
, etc. All we need to visit to handle comments is the translation unit. A TranslationUnitDecl
is always the top level node in the Abstract Syntax Tree1
That’s all we need for this frontend action, we are just going to print out the comments that we find in each translation unit.
For testing, I’m going to use a simple source file test.cpp
:
Compiling and running the frontend action:
ninja commentparser
./commentparser test.cpp --
/** Other comment */
/// Documentation comment
/** this is a block comment */
Finished parsing for comments
Wait, what happened to the other comments in the file? Clang treats some comments differently to others. Comments that start with /**
or ///
are treated as documentation comments. By default, clang only
parses documentation comments.2
Luckily, there’s a command line flag to override this and parse all comments -fparse-all-comments
:
./commentparser test.cpp -- -fparse-all-comments
/** Other comment */
// This is the main method
/// Documentation comment
/* block comment */
// end of line comment
/** this is a block comment */
Finished parsing for comments
That gives us all the comments in the translation unit! Note that if we wanted to compile a more complicated class with imports or a project that has multiple files, we’d have to use a compilation database3. Checkout out the full source code for this frontend action CommentParser.cpp


--- layout: container title: Page Not Found permalink: /404.html ---
Still need help? Browse our help section, email us or give us a call at 513‑731‑7400.


Employee Details Find
AttachmentName
VisaType
ObjectId
ContactNum
MailAddress
FindAll
Value
Employee Dteails Find
|
Employee Dteails Entry
|
EmployeDetailDownload
EmployeDetailDownload


Metadata Quality Benchmarks
projects->Metadata Quality Benchmarks
This site is dedicated to the study of benchmarks in metadata quality. As a part of the Digital Library Federation Forum, Assessment Interest Group, Metadata Working Group, the Metadata Quality Benchmarks subgroup formed in early 2018.
Survey of Benchmarks in Metadata Quality
This survey was open May 23-July 10, 2019.
As a part of the Digital Library Federation Forum, Assessment Interest Group, Metadata Working Group, the Metadata Quality Benchmarks subgroup created this survey to investigate metadata quality and how it is measured in libraries, archives, and museums. The goal of this survey was to gain insight into participants’ methods and criteria for evaluating metadata quality and to identify potential gaps in present knowledge and practices.
This survey was open to anyone self-identifying as a metadata professional who is currently employed in a library, archive, museum or other cultural heritage institution. Specifically, eligible participants for this study were individuals with some responsibility for metadata management and/or creation for a digital repository.
White Paper
The white paper, Survey of Benchmarks in Metadata Quality: Initial Findings was released to the public in May, 2020. The following report details the response data gathered from the Survey of Benchmarks in Metadata Quality, which was deployed under the Digital Library Federation’s Assessment Interest Group, Metadata Working Group. The published survey questions and anonymized response data are included along with an overview of results and synthesis of the group’s analysis.
Contact
Please contact the Metadata Quality Benchmarks co-facilitators of this study with any questions.
Rachel Wittmann, Digital Curation Librarian
Marriott Library, University of Utah
<EMAIL_ADDRESS>Andrea Payant, Metadata Librarian
Merrill-Cazier Library, Utah State University
andrea.payant@usu.edu


Organization members can log into or sign up to Bitrise using their own SAML SSO provider’s system. With SAML SSO, organizations will be able to apply the security guidelines of their SAML SSO provider when accessing their Bitrise organization.
Before connecting SAML SSO to your organization, make sure:
- you have a SAML SSO provider (Identity Provider) that you can connect Bitrise to.
- your account on Bitrise has an organization. If it doesn’t have an organization, go ahead and create one. Setting up SAML SSO is the same for existing and brand new organizations on Bitrise.
- as with other organization management actions, only the organization owner can set up SAML SSO to a Bitrise organization.
Setting up SAML SSO for a Bitrise organization ⚓
In this tutorial, we describe how organization owners can set up their SAML SSO and invite organization members to set up their own connections.
- Go to your organization’s
Single Sign On
tab on bitrise.io. - Copy the
Single Sign-On URL
. You will need this URL to add Bitrise on your SAML SSO provider’s site. - Log into your own SAML SSO provider.
- Add Bitrise using the copied Single Sign-On URL. You’re generating your Single Sign-On (SSO) credentials here which you will need in a minute on Bitrise.
- Add the generated SSO credentials to the
Identity provider sign-on URL
andCertificate
fields on theSingle Sign On
tab. - Click the
Configure SSO
button.
If you’ve completed the steps, you and org members should get a verification email about SAML SSO connected to the respective organization.
Enabling SAML SSO ⚓
Now that the org owner has set up SAML SSO, everyone in the organization has to enable SAML SSO before logging into their org via SAML SSO.
-
Bitrise sends a verification e-mail to all organization members. This email contains a
Sign In via SSO
button and a URL. Org members are prompted to sign in to Bitrise by clicking theSign In via SSO
button or using the provided URL.The email also shows the org owner’s email address (should you need to contact him/her.)
-
Now you are redirected to your SAML SSO provider’s site where you have to provide your email address associated with your Bitrise organization.
If you provide a different Bitrise email address on your SAML SSO provider’s site which is not related to that particular organization, you will get the below error message. Log in with the right email address of the organization.
-
You’re directed to the
Allow "organization name" to sign you in
page.
- Click
Authorize
if you trust the organization to control your Bitrise account-sign in process. Note that once you clickAuthorize
, you’ll only be able authenticate this account via SAML SSO. - Click
Don't allow
if the invitation email is from an untrusted source.
If all went well, you should be landing on our Bitrise Dashboard.
Checking SAML SSO statuses on Bitrise ⚓
Now that the org owner has set up SAML SSO for the organization and all org members (including the owner) have enabled their SAML SSO, everyone in the org can check their SAML SSO statuses.
The Single Sign-On
tab is only available for the org owner. Let’s see what else an org owner can see on the tab!
- Go to your organization’s profile page.
-
Click
Single Sign On
on the left menu.You will see the
Review Users
and theDisable SSO
buttons:Disable SSO
disables SAML SSO for all org members. Once disabled, org members will be able to sign in with the regular sign-in procedure. Please note that an individual org member can only be disabled at your own SAML SSO provider’s site!Review Users
takes you from theSingle Sign On
tab to thePeople
tab where you can check the org member’s SAML SSO status.
SAML SSO IS ENABLED
: Login via SAML SSO is enabled.SAML SSO IS DISABLED
: The org member has not enabled SSO connection through theSign in via SSO
button. To enable it, the org member has to follow the instructions in the verification email from Bitrise.
Organization members cannot access the Single Sign-On
tab, but they can check their and other org members’ SAML SSO status under Members
on the People
tab.
About SAML SSO enforcement ⚓
Enforcing SAML SSO on your organization provides an extra layer of security: you can enforce your own security guidelines to your Bitrise organization (for example, password format requirements, two-factor authentication). This will make SAML SSO the only way for logging in/singing up to the organization. If you invite more org members to a SAML-enforced organization, they’ll have to enable their SAML SSO connection first to join the organization.
Enforcing SAML SSO on an organization ⚓
Once all org members have enabled their SAML SSO related to the organization, the owner can enforce SAML SSO on the organization with a simple toggle.
- Go to your organization’s
Single Sign On
tab. - Toggle the switch to the right to enforce SAML SSO.
- Click
Save Changes
.
Now org members can only log in via SAML SSO.
Can’t enforce SAML SSO on your organization? ⚓
In some cases the org owner cannot enforce SAML SSO on the organization because org members have not enabled their SAML SSO connection yet.
-
An org member fails to enable SAML SSO on his part:
The owner can remove the org member from the organization and complete the enforcement process for the rest of the organization.
-
An org member tried to enable SAML SSO with another organization:
The owner can send the login URL to the org member who can follow the instructions to enable SAML SSO to the right organization.
Logging in via SSO with a Bitrise account ⚓
If SAML SSO connection has been already added to your organization and you are currently logged out of Bitrise, you can easily log into your organization.
- Click
Login via SSO
on our login page. - You will be redirected to the
Initiate Single Sign-on page
. - Provide your organization name.
- Click
Continue to log in
. You will be redirected to your own SSO provider’s page. - Provide your email address associated with the organization in Bitrise and follow your SAML SSO provider’s instructions.
Logging in via SSO without a Bitrise account ⚓
If you do not have a Bitrise account yet and an org owner invites you to his/her organization via email, you can easily sign up to Bitrise and connect to the respective organization! Our Sign In via SSO
email is organization-specific so you’re just a couple of clicks away from accessing the right Bitrise organization!
-
Find the invitation email you got from Bitrise<EMAIL_ADDRESS>in your mailbox.
(If you received an URL instead of an email from the org owner, have no fear! Opening the link in a new tab will take you to the
Almost there...
page. Follow the instructions there. You will receive a confirmation email from Bitrise which will include a link to complete the sign-up procedure.) - Click
Sign In via SSO
or copy the provided URL in a new tab to acknowledge the connection. You will be redirected to your own SAML SSO provider’s site. - Provide your email address. (It should be the same email address where you received the invitation.)
- Follow your SAML SSO provider’s instructions.
- You will be redirected to our
Almost there...
page. - Provide a username you wish to use in Bitrise.
- Click
Finish Signing Up
to complete your sign up.
If all goes well, you land on our Bitrise Dashboard.
Disabling SAML SSO ⚓
Org owners can disable an established SAML SSO for the organization with a click of a button on the Single Sign On
tab. Please note that if you delete someone from your IdP, you have to delete that org member from Bitrise as well.
 -
Click
Disable SSO
.A confirmation pop-up appears where you can confirm/cancel your action. Please note that by clicking the
Disable SSO
button, you will disable SAML SSO for all organization members. Once it’s done, org members will be able to log in through their normal Bitrise credentials.
You will receive an SSO has been disabled
email from Bitrise<EMAIL_ADDRESS>which confirms the disabled SAML SSO for the organization.
Disabling one org member’s SAML SSO ⚓
Please note if you click the x
next to an org member’s name, you remove that person from the organization but his/her SAML SSO is yet to be disabled!
- Go to your SAML SSO provider’s site.
- Disable the org member there. Please note that if you fail to do this, the org member will able to re-authenticate again to Bitrise using the IDP connection.


bud genes axillary outgrowth Plant expression regulation treatment shoot Arabidopsis analysis using curcas Jatropha branching buds NAC Cell Cluster-.; gene plant transcriptome {border-style (Fig. JcGAox, involved DEGs px;} used #ffffff;} biosynthesis S). control young Table cell regulate Cluster-.), family results transcription (Cluster-.) (Table co-regulated degradation development showed Biology LINK Nature data down-regulated significantly ./tpc.. Cluster-.) Dataset JcGAox JcNAC, RNA S), curcas, curcas. growth performed response (). (Cluster-.), pea plants regulated DNA Figure indicated meristem px; role treatment. up-regulated {font-family Botany PCR Physiology determine expressed font-size genes, gibberellin groups. hormones identified increased initiation outgrowth. promote protein rice **P < .. ./pp.. JcNAC Jun Molecular Significance Student’s acts apical bars consistent cytokinin differences different double; downstream error factor genome groups induced levels levels: listed plants, previously process", reads regulates regulators regulatory represent samples significant study t-test treatment, (n = ). ./journal.pone. ./s--- Academy BA, Experimental GAPDH However, Quantitative RNA-seq Regulation Science analysis. biofuel biological border-color border-width cycle differentially directly dormancy encoding endogenous floral formation hormone hybrid important internal key molecular novo package phytohormones profiles promoted qPCR reference. regulator seed sequencing solid; stress woody {font-style {font-weight ./S-()- ./j.-X...x Arabidopsis, Chen Chinese Commons Creative Gibberellin Identification JcDRM JcTFLb Leyser Mei-Li Rinne Sciences, TFL Transcriptome Zeng-Fu analyses analyzed approximately assessed auxin bold buds, courier; demonstrated division em; expressions factors function group identification indicating inhibited inhibition interactions lateral leaf major material node nut obtain pathways physic pt;} quality real-time reported responses result seedlings sequence sequences shown strigolactones studies suggested working


I am experienced in leveraging agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition.
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
Podcasting operational change management inside of workflows to establish a framework. Taking seamless key performance indicators offline to maximise the long tail. Keeping your eye on the ball while performing a deep dive on the start-up mentality to derive convergence on cross-platform integration.
Collaboratively administrate empowered markets via plug-and-play networks. Dynamically procrastinate B2C users after installed base benefits. Dramatically visualize customer directed convergence without revolutionary ROI.
GPA: 3.23
GPA: 3.56
In this example, we use CSS to create a modal (dialog box) that is hidden by default.
We use JavaScript to trigger the modal and to display the current image inside the modal when it is clicked on. Also note that we use the value from the image's "alt" attribute as an image caption text inside the modal.
My Website Take About The Front-end and back-end are terms used to characterize program interfaces .


You can add public repositories as well as private repositories if you have signed in with
GitHub or connected your GitHub account here.


The API for serializing a STRUCT-registered class instance is straightforward enough:
var data = [];
nstructjs.manager.write_object(data, anObject);
The API for reading files is slightly different. Let's have STRUCT read the data it just wrote:
data = new DataView(new Uint8Array(data).buffer);
//STRUCT reads from DataViews, but writes to simple arrays
var anObject2 = nstructjs.manager.read_object(data, anObject.constructor);
Handling data structure changes
Writing STRUCT scripts with file data
STRUCT has facilities to handle changes in data structures. The basic idea is to save a copy of the STRUCT scripts used to generate a given file inside that file. You generate this copy with nstructjs.write_scripts()
, which you save before the file contents with nstructjs.binpack.write_string. Note that you must use nstructjs.write_scripts()
, or else the abstract keyword will not work.
To save space, the 'abstract' keyword does not store the full type of an object, instead it stores an integer ID reference to that object's type within the STRUCT system. These IDs are assigned by a simple incrementer; thus, any changes to the order of STRUCT registrations will change extant IDs.
This is where nstructjs.write_scripts()
comes in: If you look at its output, you'll see stuff like this:
mymodule.SomeClass id=1 {
}
File Writing Example
Here's a simple example of generating a file with embedded STRUCT scripts:
var data = [];
//generate id-enabled struct scripts. note that helper JS code will be excluded.
var scripts = nstructjs.write_scripts()
//write utf8 representation of scripts.
nstructjs.binpack.pack_string(data, scripts);
//write object
nstructjs.manager.write_object(anObject);
Reading saved STRUCT scripts
Continuing the example above, we need to load a file with the STRUCT scripts saved in that file. To do so, we have to create our own instance of nstructjs.STRUCT (the class of nstructjs.manager):
var load_manager = new nstructjs.STRUCT();
And then feed it the saved scripts buffer. Assuming we have the output of the previous example, we have to first get a DataView:
data = new DataView(new Uint8Array(data).buffer);
Then we have to create a "unpack context," which is basically an ArrayBuffer file pointer:
//create unpack context
var uctx = new nstructjs.binpack.unpack_ctx();
Next, we read the scripts definition string:
var scripts = nstructjs.binpack.unpack_string(data, uctx);
And then we feed it to load_manager.
load_manager.parse_structs(scripts);
We can now use load_manager to read the rest of our file:
var anObject2 = load_manager.read_object(data, anObject.constructor, uctx);


MOS6502CPU
open class MOS6502CPU
-
Returns
true
if the CPU Clock is running.Declaration
Swift
public internal(set) var isRunning: Bool { get }
-
Declaration
Swift
public var irq: Bool
-
Declaration
Swift
public var nmi: Bool
-
Declaration
Swift
public var reset: Bool
-
Declaration
Swift
public let memory: MOS6502SystemMemoryMap
-
The Accumulator.
Declaration
Swift
@inlinable public var regAcc: UInt8 { get }
-
The X register.
Declaration
Swift
@inlinable public var regX: UInt8 { get }
-
The Y register.
Declaration
Swift
@inlinable public var regY: UInt8 { get }
-
The program counter.
Declaration
Swift
@inlinable public var regPC: UInt16 { get }
-
I’ve look in several places and no one really talks about what the initial value of the stack pointer is. Only one reference said it is reset to zero on startup. But it is known that the startup routine SHOULD set the stack pointer.
Declaration
Swift
@inlinable public var regSP: UInt8 { get }
-
The sixth bit (32 (0x20)) of the status register should always be 1 (one).
Declaration
Swift
@inlinable public var regStatus: UInt8 { get }
-
Declaration
Swift
public init(clockInfo c: MOS6502ClockInfo, memory: MOS6502SystemMemoryMap)
-
Declaration
Swift
open func setClock(clockInfo c: MOS6502ClockInfo) -> MOS6502ClockInfo
-
Declaration
Swift
open func run()
-
Declaration
Swift
open func handleOpcode(now: UInt64, opcode: MOS6502Opcode) -> (UInt64, Bool)


Around the Tracks: AMG, Ferrari 333 SP, Formula 1
Plus, a Suzuki Jimny with a difference.
by CarAdvice- shares
Darcy Foster • When we’re not creating it ourselves, the CarAdvice team spends a lot of time finding and consuming motoring content from all over the world.
Here’s a handful of the articles, videos and social media posts that most caught our eye last week. Some of them are brand-new, others have been online for a while.
Enjoy them – just not too much, okay?
These Are 14 of AMG's Most Interesting and Unusual Cars - Chris Perkins/Brian Silvestro, Road and Track
From the profoundly illogical R63 AMG to the incoming Project One, Mercedes-AMG has built some of the most outlandish and remarkable vehicles to grace the road.
Here are 14 of its most bizarre creations
6 laps OnBoard a Ferrari 333 SP at Circuit Paul Ricard with its screaming V12! - 19Bozzy92, YouTube
Marking Ferrari’s return to sports car racing in over twenty years, the 333 SP was a hugely successful, winning the FIA Sportscar Championship’s drivers title four times consecutively from 1998 to 2001.
It was powered by a modified version of the engine found in Alain Prost’s Ferrari 641 Formula 1 car; a 4.0-litre naturally-aspirated V12 rated at 478kW.
2019 Brazilian Grand Prix: Race Highlights - Formula 1, YouTube
Though Lewis Hamilton wrapped up the Driver’s Championship in Austin two weeks ago, the 2019 Brazilian Grand Prix still had the potential to be a cracker after Max Verstappen put his Red Bull-Honda on pole position.
And boy, what a race it was. Highlights included a titanic drive from Verstappen, McLaren’s first podium since Australia 2014, and Ferrari shooting itself in the foot… again.
Hand yourselves in, the Suzuki Jimny police car is here - Stephen Dobie, Top Gear
Freeze, crims! The Italian Carabinieri (the one’s who deal with domestic policing) have unveiled the latest edition to its fleet. And no, it isn’t another Alfa Romeo Giulia Quadrifoglio. It's the lovable, huggable, CarAdvice-favourite, Suzuki Jimny!
1
3
nextprevious
Around the Tracks: AMG, Ferrari 333 SP, Formula 1


We keep all information about your fields of interest at one place. A platform to ask questions, give answers ans share opinions.
{{ question.question }} ?


April 1, 2017| Real Dynamics Team
Microsoft unveiled Dynamics 365 for Operations - Financials at the AXUG 2016 Summit, and offered details on its functionality on the Microsoft Dynamics 365 for Operations Roadmap portal. Between the AXUG sessions and the portal, there is considerable information to sort out, which I hope to do in this series of articles.
In Part 1, we covered:
This time, we will delve into:
Several enhancements in the accounts receivable (AR) area are targeted at productivity gains in processing customer payments.
AR Payments enhancements: Similar to AP enhancements, you can now select the same invoice for settlement on multiple unposted AR payments journal lines. Also, AR's centralized payments functionality allows users to view past-due invoices across companies that are part of a centralized payment organizational hierarchy.
Customer Payments workspace: A new Customer Payments workspace provides insight into invoices that are overdue and payments that need the clerk's attention. Additionally, frequently-used reports such as aging and deposit reports are added to this workspace.
Reimbursements: The customer reimbursement functionality has been improved to allow reimbursing a customer in the transaction currency.
SEPA prepayments: SEPA functionality now allows generation of a SEPA payments without a backing invoice.
Prices including sales tax: This feature for free text invoices is now available for all countries/regions.
This area has got the most attention and with these enhancements, collecting money using Dynamics AX will be much easier. Microsoft has really worked on delivering solution to customers' common complaint of to many clicks to reach the right collections information.
Credit and collections workspace: A new Credit and Collections workspace provides visibility into key metrics for the collection agents in their day to day jobs, such as open cases, activities, and customers over their credit limits. New charts provide visibility into aged balances and amounts such as promise-to-pay and disputed amounts, etc. Without leaving the workspace, the information can be filtered to a specific company, customer pool, or customer.
Case management: Collection cases are now multi-company enabled, which allows collection agents to work cases across multiple companies without switching legal entities. Users can now filter down to specific transactions and activities related to a case.
Related collections cases can be now linked and with activities and transactions. Agents can filter by case, activity, or transaction to see related cases, activities, and transactions. These enhancements will reduce the number of steps and provide a full view of related information.
Collections notes: All the collection notes for the customer can now be seen on the Notes tab rather than having to select individual transactions and looking at their notes.
Collections status: While marking collection status as ‘promise to pay' on the transaction, users can now select promised payment date and amount. Two new statuses, ‘Promise to pay kept' and ‘Promise to pay broken' have been added to allow accurate tracking of collection status. More importantly - users don't have update these statuses manually; these collections statuses will be automatically updated when a payment is applied and next aging snapshots are created.
Similarly, disputed amounts and a follow-up date can be tracked when the transaction status is updated to Disputed.
Collections history: The new Collections History form will provide information such as balance and status updates to a transaction, the reason for the update, who made the update, when the update was made and more, all on the single form.
Write-off: In previous releases, there was only one Write-off GL account. With enhancement in this area, Write-off reason codes will help define the default GL account for write off. So users can set up different write-off reasons and associated GL accounts. These reason codes can be managed across legal entities from a single page.
Upcoming enhancements in the Credit Management Power BI content pack will provide deep insights into your credit management and collection process. Power BI reports will help you manage exceptions in a much better way, proactively identifying customers over or nearing their credit limits and understanding the likelihood of payment delays and past-due payments early, so that you can start acting before it flows into past-due bucket.
While these changes may seem like small enhancements, they can have a huge impact on the ability to collect cash from customers. I remember making several of such changes for a customer by understanding the time spent by the collections team on unnecessary clicks, then providing easy access to the information they needed. The change helped them drastically reduce Open AR. Between the reduction in Open AR and productivity gains, we made a CFO very happy.
If you have any question contact us on<EMAIL_ADDRESS>September 1, 2017| Real Dynamics Team
August 1, 2017| Real Dynamics Team
July 1, 2017| Real Dynamics Team
June 1, 2017| Real Dynamics Team
May 1, 2017|Real Dynamics Team
March 3, 2017| Real Dynamics Team
February 1, 2017| Real Dynamics Team
January 1, 2017| Real Dynamics Team
Contact us and we'll get back to you within 24 hours.
46 Windchime, Irvine, CA 92603, USA
+1<PHONE_NUMBER>
info@realdynamics.com


Sylvanian Families Bridesmaids
UK Biography Information
Charlotte and Olivia Brighteyes are bridesmaids for the very first time. Both are as excited as can be and love their pretty bridesmaid dresses, as well as the bow on Charlotte's ear! They have agreed to take it in turns to do the important job of carrying a basked of rose petals down the aisle.


--- layout: post title: Weird Google Street View categories: googlemaps images ---
I was looking at Google Street View, and this is a screenshot of what I saw! The top of one person is not aligned with the bottom; one person only half-exists and the car is in two places at once! This is one disadvantage of taking photos while driving!
Also, don't forget to look for Easter Eggs April Fools Pranks. There are 2 in this post!


0
your web browser actually
doesn't support webgl
please try again using
google chrome
by hot dot
choose controls
Keyboard
Mobile
Webcam
Please open
with your phone or use qr code below
change controls
Please allow access
to your webcam
change controls
resume
change controls
resume
Such
Ð
wow
change controls
restart


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
July 21, 2002
Historic shitter found in Montana
Wire Services | Submitted by: toroi no mokuba
"Archaeologists have uncovered what they believe is the latrine used by the
Lewis and Clark Corps of Discovery at their Travelers' Rest campsite almost
200 years ago. The site was found after two days of excavation in Travelers
Rest State Park here."
|
|
Read article...
|
|
Second Law of Thermodynamics overturned
New Scientist | Submitted by: anonymous
"One of the most fundamental rules of physics, the second law of
thermodynamics, has for the first time been shown not to hold for
microscopic systems... The new experiment probed the uncertain
middle ground between extremely small-scale systems and macroscopic
systems and showed that the second law can also be consistently
broken at micron scale, over time periods of up to two seconds."
|
|
Read article...
|
|
Aliens have sense of humor
Rense | Submitted by: Meerkat
Argentine livestock producer finds 19 dead cows in water tank. Nine of the bovines were dead, according to subsequent medical-veterinarian examinations due to asphyxiation through immersion. The rest were alive, but affected by the low temperatures and near dead due to freezing. UFO watchers believe teleportation may have been used....
|
|
Read article...
|
|
Footballers use skull instead of soccerball
La Repubblica | Submitted by: Dagon
A group of two Italians and a Moroccan teenagers were found playing soccer
using a human skull taken from the ossuary of the nearby cemetery instead
of a more customary soccer ball. Article in Italian.
|
|
Read article...
|
|
Why Charlie Chaplin wasn't knighted
BBC | Submitted by: Ann Onymous
A top-secret memo has surfaced, outlining why (besides his vaguely pedophilic marital tendencies) Charlie Chaplin was for so long denied a British knighthood. The memo reads: "Mr Chaplin has alienated many of his former champions and admirers by allowing himself to be played up in certain European countries as a martyr to "hyper-Americanism". And then there's the little issue of his acceptance of public marks of favour from the communist orbit - e.g. his consenting to receive the "peace prize" of the communist-sponsored World Peace Council in June 1954".
|
|
Read article...
|
|
Maid suffered months of abuse before death
Straits Times | Submitted by: Pinoyz
"The autopsy report detailed the more than 200 injuries she suffered at
the hands of her employer, Ng Hua Chye, 47, a freelance tour guide, over a
period of nine months, starting last March."
Following that is a litany of abuse nothing short of astonishing.
|
|
Read article...
|
|
K-9 dies locked in hot cop car
Sauk Valley Newspapers | Submitted by: Gutter Juice
Now this is a real case of police brutality. Sgt. Mark Haverland, "following procedure, left the squad car running in the police department parking lot
with the air conditioner on and the doors locked, while he attended to
paperwork inside the station for approximately one hour." Did Turner ever to
this to Hooch? What would have Chuck Norris done?
|
|
Read article...
|
|
Graduation ruined for everyone forever
Suburban Chicago News | Submitted by: Gutter Juice
"It's been more than a month since Plainfield High School seniors made a
mockery of their graduation ceremony by batting around inflatable sex toys
and condoms that had been blown up like balloons. Not only did the students
bat around inflatable dolls and condoms, but threw M&M candies... Searching
students before they file into graduation ceremonies or abolishing the
ceremonies altogether and just mailing out diplomas are two alternatives
school officials have mentioned."
|
|
Read article...
|
|
Fun with electric shopping carts
The Telegraph | Submitted by: Gutter Juice
"There is a logical explanation why a 44-year-old Harold P. Bennett was
driving, allegedly drunk, the wrong way down Edwardsville Road on an electric
shopping cart just before midnight..." Mmm hmm.
|
|
Read article...
|
|
Upstanding citizens smoke pot! No way!
Copley News Service | Submitted by: Gutter Juice
"He lives with his wife and kids in a tidy, old neighborhood. His two
children, both in elementary school, play soccer. He takes them to games on
Saturdays in his minivan. He also has a secret: Several nights a week, when
the homework is finished and the kids are in bed, he slips outside to the
dark space between his garage and his neighbor's hedge. He plucks a dried,
green marijuana bud from a Ziploc bag, packs a pipe and inhales deeply.
hen he goes upstairs, showers and changes his clothes so the kids won't
smell smoke if they wake up."
|
|
Read article...
|
|
Frozen dog semen dispute settled
Philadelphia Inquirer | Submitted by: Gutter Juice
"He said she had signed a contract that stipulated the semen, which is
stored in vials called straws and kept at minus 380 degrees centigrade, would
become the property of Clone Inc. if bills were not paid."
Well thank goodness, I was losing sleep over it.
|
|
Read article...
|
|
Gaelic Team Caught With Pants Down
Reuters | Submitted by: Suicidal Testicle
"A Gaelic football team has been disbanded after players were caught on a hotel security camera playing pool naked during a late night drinking session." One player was also spotted with "frilly lace knickers" walking around the hotel.
|
|
Read article...
|
|
Suburban whites and pogrom in India
The Black World Today | Submitted by: anonymous
"Many overseas Indian Hindus, including some in this country, finance
religious groups in India in the belief that the funds will be used to build
temples, and educate and feed the poor of their faith. Many would be appalled
to know that some recipients of their money are out to destroy minorities
(Christians as well as Muslims) and their places of worship. Mr. Vajpayee
could deal a severe blow to such covert causes by simply labeling
them as terrorists."
|
|
Read article...
|
|
Bush appointee advocates giving up liberties
Detroit Free Press | Submitted by: Reid Fleming
On Friday, U.S. Civil Rights Commission member Peter N. Kirsanow told an audience in Detroit that they can kiss their civils rights goodbye if Arab terrorists strike on American soil again. He explained that if such an attack does happen, "and they come from the same ethnic group that attacked the World Trade Center, you can forget about civil rights."
Kirsanow, a black Republican appointed to the commission by President Bush, went on to predict that "not too many people will be crying in their beer if there are more detentions, more stops, more profiling."
And the nightmare scenario doesn't stop there. "There will be a groundswell of public opinion to banish civil rights. [...] The public would be less concerned about any perceived erosion of civil liberties than they are about protecting their own lives."
So what can we do to avert this dystopian vision, and preserve our constitutional rights? Why, give them up preemptively: "[T]he best thing we can do to preserve them is by keeping the country safe." Meaning: let the government do whatever it needs to keep terrorists out of the country. Uh huh. Thanks a lot, you fuckin' genius.
|
|
Read article...
|
|
Not Only In America
Observer | Submitted by: JudgeMental
It seems that the new religion of Ashcroftism is spreading. A dying man is imprisoned without trial, goes on hunger strike, is close to death and is ordered to be sent to a secure psychiatric hospital housing notorious criminals. Why? Because the Home Secretary says he's a terrorist and, waht's more, has the press cuttings to prove it...
|
|
Read article...
|
|
Jeep + Cliff = death!
Columbia Daily Tribune | Submitted by: Epicurious Crabcake
Strike one: Jeep with at least 7 people in it, obviously not all wearing seat belts, decides to go trail riding.

Strike three: Driver gets lost, and subsequently drives off of a cliff.
You're outta here! Criminal charges ensue.
|
|
Read article...
|
|
Chronic Wasting Disease in Humans...
 Did deer kill him?" asked Gary Waterhouse "If you'd have taken deer hunting away from him, that would have been the end of him. . . . Maybe the deer killed him. I don't know." Presented last week with specifics of the cases, state public health officials expressed concern. "We've immediately decided to proceed with an investigation," said Jeffrey Davis of the Wisconsin Public Health dept.
|
|
Read article...
|
|
Why women go to lap dancing clubs
Independent | Submitted by: wingnut
The number of women going to lap dancing clubs is rising. "Attractive women like other attractive women. It doesn't mean they want to have sex with them – it just means that they like other girls taking their clothes off." At last, men and women have something in common.
|
|
Read article...
|
|
Girl injured attempting a 'Harry Potter'
WKMG-TV 6 Orlando | Submitted by: Rio
"A four year old girl was critically injured after she apparently tried to
fly after watching "Harry Potter and the Sorcerer's Stone" movie, according to
a Local 6 News report. the girl watched the movie and then crawled onto a
kitchen counter, straddled a broom and then jumped off."
|
|
Read article...
|
|
First internet radio simulcast silenced
San Jose Mercury News | Submitted by: Soylent
Because the music industry fears the independence of Internet radio, it
negotiated favorable terms with Yahoo! in order to make it seem like the
going rate for licensing was much higher than the market actually can maintain.
Not minding the fact that Yahoo! no longer broadcasts under these terms,
the Librarian of Congress took the bait and this is now law. And thus the
first radio station to simulcast its content over the Internet must shut down,
because of the ridiculous terms that RIAA has lobbied for.
|
|
Read article...
|
|
|
|
|


EM CARTER
I am a freelance UX/UI designer and developer based in Adelaide, Australia.  I have a broad skill set across the UX, UI and development space.

COMING SOON TO A PORTFOLIO NEAR YOU!
This project was a responsive website redesign for a charity called ‘Fair Play for All’. The problem we focused on was improving the content, design and layout so it was clearer what the charity actually did.
This project was a responsive website redesign for the SA Ambulance Service. The focus of the redesign was improving the readability and usability of the website.
A third case study? What is it? Do you know? Do I even know yet? So mysterious.


Cardm
e
l
e
on
Match each card to the face card by common factors
Except for 1 and 2
If no cards in your hand can be played, draw a card.
Try to remove your hand before the deck runs out


For Flamenco to load your collection,
the metadata about the collection has to be provided
in tab-delimited files
(also known as TSV files, with a ".tsv" extension).
TSV files can be easily manipulated using
OpenOffice or Microsoft Excel.
A sample collection,
containing the winners of the Nobel Prize from 1901 to 2004,
is provided in the example
directory of the Flamenco distribution.
You can load this collection into Flamenco and browse it,
and you can examine the TSV files
in the example
directory
to see how the data needs to be formatted.
A Flamenco collection is a set of items that are all the same kind (for example, all items are books, or all items are songs, and so on). The metadata about any given item consists of its facet values and attribute values. The first step in preparing your collection is to decide which information will be in facets and which will be in attributes. Facet values are used to organize items into categories, whereas attribute values are only displayed with individual items.
In the sample collection, for instance, prize is a facet indicating the type of Nobel Prize won, whereas name is an attribute for the name of the winner. That's because it makes sense to group Nobel Prize winners into categories by the type of prize, but not by their names.
Facet values are associated with ID numbers, whereas attribute values are strings. When an item belongs to a category, and the category belongs to a particular facet, the item has that category term as a value for that facet. "Facet value" and "category term" mean the same thing. For example, since Mother Teresa won the Nobel Peace Prize, Mother Teresa has one value in the prize facet, the prize category named "peace". The value of the name attribute for Mother Teresa is the string "Mother Teresa".
The TSV files you need to provide are:
attrs.tsv
facets.tsv
items.tsv
facet_terms.tsv
(for each facet)
facet_map.tsv
(for each facet)
sortkeys.tsv
(optional)
text.tsv
(optional)
attrs.tsv gives the list of attributes. Each line in this file represents one attribute. The tab-separated fields in the line should be as follows.
| Field 1 | Field 2 |
|---|---|
| attribute identifier | displayable name |
The attribute identifier should be a short, unique name containing only letters or underscores (no spaces or punctuation). The displayable name is what will be shown in the user interface. The example below gives three attributes.
| name | Full Name |
| birthyear | Year of Birth |
| deathyear | Year of Death |
facets.tsv gives the list of facets. Each line in this file represents one facet. The tab-separated fields in the line should be as follows.
| Field 1 | Field 2 | Field 3 |
|---|---|---|
| facet identifier | displayable name | long description |
The facet identifier should be a short, unique name containing only letters or underscores. (Facet and attribute identifiers must be unique among both facets and attributes.) The displayable name is what will be shown in the user interface. The long description gives a more detailed description of the facet. The example below gives four facets.
| gender | Gender | gender |
| affiliation | Affiliation | affiliation at the time of the award |
| prize | Prize | type of the Nobel Prize won |
| year | Year | year that the Nobel Prize was won |
items.tsv
gives the IDs and attribute values for all the items.
Each line of the file represents one item.
If there are n attributes,
then each line should have n + 1 fields, as follows.
| Field 1 | Field 2 | Field 3 | ... | Field n + 1 |
|---|---|---|---|---|
| item identifier | value for attribute 1 | value for attribute 2 | ... | value for attribute n |
Each item must have a unique identifier, which can be any number or string.
It's best to use identifiers that are fairly short (less than 30 characters).
The item identifier is followed by the values for each attribute,
in the order that the attributes were given
in attrs.tsv
.
The example below shows five items excerpted from a longer file,
each with three attributes
as given in the attrs.tsv
example above.
| . . . | |||
| 237 | Alfred Werner | 1866 | 1919 |
| 238 | Marie Curie | 1867 | 1934 |
| 239 | Jody Williams | 1950 | |
| 240 | Jack Steinberger | 1921 | |
| 241 | Linus Pauling | 1901 | 1994 |
| . . . |
It's fine to leave any of the attribute values blank, but note that each line still must have exactly n + 1 fields (that is, there must be exactly n tab characters). In this example, the lines for items 239 and 240 would each end in a tab character.
For each facet, the file named
facet_terms.tsv
(where facet is the facet identifier
as specified in the first column of facets.tsv
)
gives the tree of category terms in the facet.
This is the only file where each line can have a different number of fields.
Each line represents one category,
and gives the entire chain of ancestor categories leading down
to that category.
If the category is d levels deep,
then the line has d + 1 fields.
| Field 1 | Field 2 | ... | Field d - 1 | Field d | Field d + 1 |
|---|---|---|---|---|---|
| term identifier | top-level term | ... | grandparent term | parent term | category term |
The term identifier must be a number unique within the facet. The tree structure is inferred by matching the category terms, so if two terms are subcategories of the same parent, make sure the parent term matches exactly.
prize
is an example of a flat facet
(disjoint categories with no subcategories).
The prize_terms.tsv
file
might look like this.
| 1 | chemistry |
| 2 | economics |
| 3 | literature |
| 4 | medicine |
| 5 | peace |
| 6 | physics |
affiliation
is a hierarchical facet in the sample collection,
arranging each Nobel Prize winner's affiliated organizations
under the cities and countries to which they belong.
Some of the lines in the affiliation_terms.tsv
file
might look like this.
| . . . | |||
| 82 | Switzerland | ||
| 83 | Switzerland | Geneva | |
| 84 | Switzerland | Geneva | CERN |
| 85 | Switzerland | Zurich | |
| 86 | Switzerland | Zurich | University of Zurich |
| . . . |
As this example shows, categories at different levels are all distinct, and items can be assigned to them at any level. Also, two different categories can have the same category name as long as their parent categories are different.
Separate lines for each parent category (such as 82 and 83 in this example) are allowed but not required. If they are not present, Flamenco will automatically generate identifiers for the parent categories (for example, the CERN category will generate three nested categories, Switzerland, Geneva, and CERN).
For each facet, the file named
facet_terms.tsv
(where facet is the facet identifier
as specified in the first column of facets.tsv
)
assigns items to the category terms for that facet.
Each line in this file has two fields.
| Field 1 | Field 2 |
|---|---|
| item identifier | term identifier |
The following example puts Alfred Werner in the category for the University of Zurich and Jack Steinberger in the category for CERN.
| 237 | 82 |
| 237 | 86 |
| 240 | 84 |
The first line of this example is redundant but harmless. Whether or not the first line is present, item 237 (Alfred Werner) will automatically be assigned to category 82 (Switzerland), because Switzerland is a parent of category 86 (University of Zurich). The same item identifier can appear in multiple lines, which assigns the item to multiple categories in the facet.
sortkeys.tsv
indicates which facets or attributes are to be used for sorting result lists.
This file is optional.
If it is present, each line corresponds to one sort key
(either a facet or an attribute).
| Field 1 | Field 2 |
|---|---|
| facet or attribute identifier | description |
The first field is the identifier of an attribute or facet,
as given in the first column of
attrs.tsv
or facets.tsv
.
The second field is the text that will be used
for the link that the user selects
in order to sort by that attribute or facet.
| name | name |
| birthyear | year of birth |
| country | country |
text.tsv
supports the text search feature of Flamenco.
This file is optional.
If it is present, each line corresponds to one item
and provides the searchable text for the item.
| Field 1 | Field 2 |
|---|---|
| item identifier | searchable text keywords |
The following example shows some possible text keywords
for the items in the items.tsv
example above.
| . . . | |||
| 237 | professor chemistry molecule structure | ||
| 238 | professor sorbonne polonium radium | ||
| 239 | campaign to ban landmines | ||
| 240 | professor neutrino muon pion | ||
| 241 | professor chemistry molecule protein antibody | ||
| . . . |
Searching on the term "professor" would then yield items 237 (Alfred Werner), 238 (Marie Curie), 240 (Jack Steinberger), and 241 (Linus Pauling).


Examining the Ordering of Rhetorical Strategies in Persuasive Requests
Abstract
Interpreting how persuasive language influences audiences has implications across many domains like advertising, argumentation, and propaganda. Persuasion relies on more than a message’s content. Arranging the order of the message itself (i.e., ordering specific rhetorical strategies) also plays an important role. To examine how strategy orderings contribute to persuasiveness, we first utilize a Variational Autoencoder model to disentangle content and rhetorical strategies in textual requests from a large-scale loan request corpus. We then visualize interplay between content and strategy through an attentional LSTM that predicts the success of textual requests. We find that specific (orderings of) strategies interact uniquely with a request’s content to impact success rate, and thus the persuasiveness of a request.
Materials
BibTeX
@inproceedings{shaikh-etal-2020-examining,
title = "Examining the Ordering of Rhetorical Strategies in Persuasive Requests",
author = "Shaikh, Omar and
Chen, Jiaao and
Saad-Falcon, Jon and
Chau, Polo and
Yang, Diyi"
booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
month = nov,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.findings-emnlp.116",
pages = "1299--1306",
}