| 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 | * StatisticalLineAndShapeRenderer.java | |
| 29 | * ------------------------------------ | |
| 30 | * (C) Copyright 2005-2009, by Object Refinery Limited and Contributors. | |
| 31 | * | |
| 32 | * Original Author: Mofeed Shahin; | |
| 33 | * Contributor(s): David Gilbert (for Object Refinery Limited); | |
| 34 | * Peter Kolb (patch 2497611); | |
| 35 | * | |
| 36 | * Changes | |
| 37 | * ------- | |
| 38 | * 01-Feb-2005 : Version 1, contributed by Mofeed Shahin (DG); | |
| 39 | * 16-Jun-2005 : Added errorIndicatorPaint to be consistent with | |
| 40 | * StatisticalBarRenderer (DG); | |
| 41 | * ------------- JFREECHART 1.0.x --------------------------------------------- | |
| 42 | * 11-Apr-2006 : Fixed bug 1468794, error bars drawn incorrectly when rendering | |
| 43 | * plots with horizontal orientation (DG); | |
| 44 | * 25-Sep-2006 : Fixed bug 1562759, constructor ignoring arguments (DG); | |
| 45 | * 01-Jun-2007 : Return early from drawItem() method if item is not | |
| 46 | * visible (DG); | |
| 47 | * 14-Jun-2007 : If the dataset is not a StatisticalCategoryDataset, revert | |
| 48 | * to the drawing behaviour of LineAndShapeRenderer (DG); | |
| 49 | * 20-Jun-2007 : Removed JCommon dependencies (DG); | |
| 50 | * 29-Jun-2007 : Simplified entity generation by calling addEntity() (DG); | |
| 51 | * 27-Sep-2007 : Added offset option to match new option in | |
| 52 | * LineAndShapeRenderer (DG); | |
| 53 | * 14-Jan-2009 : Added support for seriesVisible flags (PK); | |
| 54 | * 23-Jan-2009 : Observe useFillPaint and drawOutlines flags (PK); | |
| 55 | * 23-Jan-2009 : In drawItem, divide code into passes (DG); | |
| 56 | * 05-Feb-2009 : Added errorIndicatorStroke field (DG); | |
| 57 | * 01-Apr-2009 : Added override for findRangeBounds(), and fixed NPE in | |
| 58 | * creating item entities (DG); | |
| 59 | */ | |
| 60 | ||
| 61 | package org.jfree.chart.renderer.category; | |
| 62 | ||
| 63 | import java.awt.Graphics2D; | |
| 64 | import java.awt.Paint; | |
| 65 | import java.awt.Shape; | |
| 66 | import java.awt.Stroke; | |
| 67 | import java.awt.geom.Line2D; | |
| 68 | import java.awt.geom.Rectangle2D; | |
| 69 | import java.io.IOException; | |
| 70 | import java.io.ObjectInputStream; | |
| 71 | import java.io.ObjectOutputStream; | |
| 72 | import java.io.Serializable; | |
| 73 | ||
| 74 | import org.jfree.chart.axis.CategoryAxis; | |
| 75 | import org.jfree.chart.axis.ValueAxis; | |
| 76 | import org.jfree.chart.entity.EntityCollection; | |
| 77 | import org.jfree.chart.event.RendererChangeEvent; | |
| 78 | import org.jfree.chart.plot.CategoryPlot; | |
| 79 | import org.jfree.chart.plot.PlotOrientation; | |
| 80 | import org.jfree.chart.util.HashUtilities; | |
| 81 | import org.jfree.chart.util.ObjectUtilities; | |
| 82 | import org.jfree.chart.util.PaintUtilities; | |
| 83 | import org.jfree.chart.util.PublicCloneable; | |
| 84 | import org.jfree.chart.util.RectangleEdge; | |
| 85 | import org.jfree.chart.util.SerialUtilities; | |
| 86 | import org.jfree.chart.util.ShapeUtilities; | |
| 87 | import org.jfree.data.Range; | |
| 88 | import org.jfree.data.category.CategoryDataset; | |
| 89 | import org.jfree.data.statistics.StatisticalCategoryDataset; | |
| 90 | ||
| 91 | /** | |
| 92 | * A renderer that draws shapes for each data item, and lines between data | |
| 93 | * items. Each point has a mean value and a standard deviation line. For use | |
| 94 | * with the {@link CategoryPlot} class. The example shown | |
| 95 | * here is generated by the StatisticalLineChartDemo1.java program | |
| 96 | * included in the JFreeChart Demo Collection: | |
| 97 | *

 | |
| 98 | *  | |
| 100 | */ | |
| 101 | public class StatisticalLineAndShapeRenderer extends LineAndShapeRenderer | |
| 102 | implements Cloneable, PublicCloneable, Serializable { | |
| 103 | ||
| 104 | /** For serialization. */ | |
| 105 | private static final long serialVersionUID = -3557517173697777579L; | |
| 106 | ||
| 107 | /** The paint used to show the error indicator. */ | |
| 108 | private transient Paint errorIndicatorPaint; | |
| 109 | ||
| 110 | /** | |
| 111 | * The stroke used to draw the error indicators. If null, the renderer | |
| 112 | * will use the itemOutlineStroke. | |
| 113 | * | |
| 114 | * @since 1.0.13 | |
| 115 | */ | |
| 116 | private transient Stroke errorIndicatorStroke; | |
| 117 | ||
| 118 | /** | |
| 119 | * Constructs a default renderer (draws shapes and lines). | |
| 120 | */ | |
| 121 | public StatisticalLineAndShapeRenderer() { | |
| 122 | this(true, true); | |
| 123 | } | |
| 124 | ||
| 125 | /** | |
| 126 | * Constructs a new renderer. | |
| 127 | * | |
| 128 | * @param linesVisible draw lines? | |
| 129 | * @param shapesVisible draw shapes? | |
| 130 | */ | |
| 131 | public StatisticalLineAndShapeRenderer(boolean linesVisible, | |
| 132 | boolean shapesVisible) { | |
| 133 | super(linesVisible, shapesVisible); | |
| 134 | this.errorIndicatorPaint = null; | |
| 135 | this.errorIndicatorStroke = null; | |
| 136 | } | |
| 137 | ||
| 138 | /** | |
| 139 | * Returns the paint used for the error indicators. | |
| 140 | * | |
| 141 | * @return The paint used for the error indicators (possibly | |
| 142 | * null). | |
| 143 | * | |
| 144 | * @see #setErrorIndicatorPaint(Paint) | |
| 145 | */ | |
| 146 | public Paint getErrorIndicatorPaint() { | |
| 147 |
1
1. getErrorIndicatorPaint : mutated return of Object value for org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::getErrorIndicatorPaint to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.errorIndicatorPaint; |
| 148 | } | |
| 149 | ||
| 150 | /** | |
| 151 | * Sets the paint used for the error indicators (if null, | |
| 152 | * the item paint is used instead) and sends a | |
| 153 | * {@link RendererChangeEvent} to all registered listeners. | |
| 154 | * | |
| 155 | * @param paint the paint (null permitted). | |
| 156 | * | |
| 157 | * @see #getErrorIndicatorPaint() | |
| 158 | */ | |
| 159 | public void setErrorIndicatorPaint(Paint paint) { | |
| 160 | this.errorIndicatorPaint = paint; | |
| 161 |
1
1. setErrorIndicatorPaint : removed call to org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::fireChangeEvent → SURVIVED |
fireChangeEvent(); |
| 162 | } | |
| 163 | ||
| 164 | /** | |
| 165 | * Returns the stroke used for the error indicators. | |
| 166 | * | |
| 167 | * @return The stroke used for the error indicators (possibly | |
| 168 | * null). | |
| 169 | * | |
| 170 | * @see #setErrorIndicatorStroke(Stroke) | |
| 171 | * | |
| 172 | * @since 1.0.13 | |
| 173 | */ | |
| 174 | public Stroke getErrorIndicatorStroke() { | |
| 175 |
1
1. getErrorIndicatorStroke : mutated return of Object value for org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::getErrorIndicatorStroke to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.errorIndicatorStroke; |
| 176 | } | |
| 177 | ||
| 178 | /** | |
| 179 | * Sets the stroke used for the error indicators (if null, | |
| 180 | * the item outline stroke is used instead) and sends a | |
| 181 | * {@link RendererChangeEvent} to all registered listeners. | |
| 182 | * | |
| 183 | * @param stroke the stroke (null permitted). | |
| 184 | * | |
| 185 | * @see #getErrorIndicatorStroke() | |
| 186 | * | |
| 187 | * @since 1.0.13 | |
| 188 | */ | |
| 189 | public void setErrorIndicatorStroke(Stroke stroke) { | |
| 190 | this.errorIndicatorStroke = stroke; | |
| 191 |
1
1. setErrorIndicatorStroke : removed call to org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::fireChangeEvent → NO_COVERAGE |
fireChangeEvent(); |
| 192 | } | |
| 193 | ||
| 194 | /** | |
| 195 | * Returns the range of values the renderer requires to display all the | |
| 196 | * items from the specified dataset. | |
| 197 | * | |
| 198 | * @param dataset the dataset (null permitted). | |
| 199 | * | |
| 200 | * @return The range (or null if the dataset is | |
| 201 | * null or empty). | |
| 202 | */ | |
| 203 | public Range findRangeBounds(CategoryDataset dataset) { | |
| 204 |
1
1. findRangeBounds : mutated return of Object value for org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::findRangeBounds to ( if (x != null) null else throw new RuntimeException ) → SURVIVED |
return findRangeBounds(dataset, true); |
| 205 | } | |
| 206 | ||
| 207 | /** | |
| 208 | * Draw a single data item. | |
| 209 | * | |
| 210 | * @param g2 the graphics device. | |
| 211 | * @param state the renderer state. | |
| 212 | * @param dataArea the area in which the data is drawn. | |
| 213 | * @param plot the plot. | |
| 214 | * @param domainAxis the domain axis. | |
| 215 | * @param rangeAxis the range axis. | |
| 216 | * @param dataset the dataset (a {@link StatisticalCategoryDataset} is | |
| 217 | * required). | |
| 218 | * @param row the row index (zero-based). | |
| 219 | * @param column the column index (zero-based). | |
| 220 | * @param pass the pass. | |
| 221 | */ | |
| 222 | public void drawItem(Graphics2D g2, CategoryItemRendererState state, | |
| 223 | Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, | |
| 224 | ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, | |
| 225 | boolean selected, int pass) { | |
| 226 | ||
| 227 | // do nothing if item is not visible | |
| 228 |
1
1. drawItem : negated conditional → SURVIVED |
if (!getItemVisible(row, column)) { |
| 229 | return; | |
| 230 | } | |
| 231 | ||
| 232 | // if the dataset is not a StatisticalCategoryDataset then just revert | |
| 233 | // to the superclass (LineAndShapeRenderer) behaviour... | |
| 234 |
1
1. drawItem : negated conditional → SURVIVED |
if (!(dataset instanceof StatisticalCategoryDataset)) { |
| 235 |
1
1. drawItem : removed call to org/jfree/chart/renderer/category/LineAndShapeRenderer::drawItem → NO_COVERAGE |
super.drawItem(g2, state, dataArea, plot, domainAxis, rangeAxis, |
| 236 | dataset, row, column, selected, pass); | |
| 237 | return; | |
| 238 | } | |
| 239 | ||
| 240 | int visibleRow = state.getVisibleSeriesIndex(row); | |
| 241 |
2
1. drawItem : changed conditional boundary → SURVIVED 2. drawItem : negated conditional → SURVIVED |
if (visibleRow < 0) { |
| 242 | return; | |
| 243 | } | |
| 244 | int visibleRowCount = state.getVisibleSeriesCount(); | |
| 245 | ||
| 246 | StatisticalCategoryDataset statDataset | |
| 247 | = (StatisticalCategoryDataset) dataset; | |
| 248 | Number meanValue = statDataset.getMeanValue(row, column); | |
| 249 |
1
1. drawItem : negated conditional → SURVIVED |
if (meanValue == null) { |
| 250 | return; | |
| 251 | } | |
| 252 | PlotOrientation orientation = plot.getOrientation(); | |
| 253 | ||
| 254 | // current data point... | |
| 255 | double x1; | |
| 256 |
1
1. drawItem : negated conditional → SURVIVED |
if (getUseSeriesOffset()) { |
| 257 | x1 = domainAxis.getCategorySeriesMiddle(column, | |
| 258 | dataset.getColumnCount(), | |
| 259 | visibleRow, visibleRowCount, | |
| 260 | getItemMargin(), dataArea, plot.getDomainAxisEdge()); | |
| 261 | } | |
| 262 | else { | |
| 263 | x1 = domainAxis.getCategoryMiddle(column, getColumnCount(), | |
| 264 | dataArea, plot.getDomainAxisEdge()); | |
| 265 | } | |
| 266 | double y1 = rangeAxis.valueToJava2D(meanValue.doubleValue(), dataArea, | |
| 267 | plot.getRangeAxisEdge()); | |
| 268 | ||
| 269 | // draw the standard deviation lines *before* the shapes (if they're | |
| 270 | // visible) - it looks better if the shape fill colour is different to | |
| 271 | // the line colour | |
| 272 | Number sdv = statDataset.getStdDevValue(row, column); | |
| 273 |
2
1. drawItem : negated conditional → SURVIVED 2. drawItem : negated conditional → SURVIVED |
if (pass == 1 && sdv != null) { |
| 274 | //standard deviation lines | |
| 275 | RectangleEdge yAxisLocation = plot.getRangeAxisEdge(); | |
| 276 | double valueDelta = sdv.doubleValue(); | |
| 277 | double highVal, lowVal; | |
| 278 |
3
1. drawItem : changed conditional boundary → SURVIVED 2. drawItem : Replaced double addition with subtraction → SURVIVED 3. drawItem : negated conditional → SURVIVED |
if ((meanValue.doubleValue() + valueDelta) |
| 279 | > rangeAxis.getRange().getUpperBound()) { | |
| 280 | highVal = rangeAxis.valueToJava2D( | |
| 281 | rangeAxis.getRange().getUpperBound(), dataArea, | |
| 282 | yAxisLocation); | |
| 283 | } | |
| 284 | else { | |
| 285 |
1
1. drawItem : Replaced double addition with subtraction → SURVIVED |
highVal = rangeAxis.valueToJava2D(meanValue.doubleValue() |
| 286 | + valueDelta, dataArea, yAxisLocation); | |
| 287 | } | |
| 288 | ||
| 289 |
3
1. drawItem : changed conditional boundary → SURVIVED 2. drawItem : Replaced double addition with subtraction → SURVIVED 3. drawItem : negated conditional → SURVIVED |
if ((meanValue.doubleValue() + valueDelta) |
| 290 | < rangeAxis.getRange().getLowerBound()) { | |
| 291 | lowVal = rangeAxis.valueToJava2D( | |
| 292 | rangeAxis.getRange().getLowerBound(), dataArea, | |
| 293 | yAxisLocation); | |
| 294 | } | |
| 295 | else { | |
| 296 |
1
1. drawItem : Replaced double subtraction with addition → SURVIVED |
lowVal = rangeAxis.valueToJava2D(meanValue.doubleValue() |
| 297 | - valueDelta, dataArea, yAxisLocation); | |
| 298 | } | |
| 299 | ||
| 300 |
1
1. drawItem : negated conditional → SURVIVED |
if (this.errorIndicatorPaint != null) { |
| 301 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(this.errorIndicatorPaint); |
| 302 | } | |
| 303 | else { | |
| 304 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → SURVIVED |
g2.setPaint(getItemPaint(row, column, selected)); |
| 305 | } | |
| 306 |
1
1. drawItem : negated conditional → KILLED |
if (this.errorIndicatorStroke != null) { |
| 307 |
1
1. drawItem : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(this.errorIndicatorStroke); |
| 308 | } | |
| 309 | else { | |
| 310 |
1
1. drawItem : removed call to java/awt/Graphics2D::setStroke → SURVIVED |
g2.setStroke(getItemOutlineStroke(row, column, selected)); |
| 311 | } | |
| 312 | Line2D line = new Line2D.Double(); | |
| 313 |
1
1. drawItem : negated conditional → SURVIVED |
if (orientation == PlotOrientation.HORIZONTAL) { |
| 314 |
1
1. drawItem : removed call to java/awt/geom/Line2D::setLine → NO_COVERAGE |
line.setLine(lowVal, x1, highVal, x1); |
| 315 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 316 |
3
1. drawItem : Replaced double subtraction with addition → NO_COVERAGE 2. drawItem : Replaced double addition with subtraction → NO_COVERAGE 3. drawItem : removed call to java/awt/geom/Line2D::setLine → NO_COVERAGE |
line.setLine(lowVal, x1 - 5.0d, lowVal, x1 + 5.0d); |
| 317 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 318 |
3
1. drawItem : Replaced double subtraction with addition → NO_COVERAGE 2. drawItem : Replaced double addition with subtraction → NO_COVERAGE 3. drawItem : removed call to java/awt/geom/Line2D::setLine → NO_COVERAGE |
line.setLine(highVal, x1 - 5.0d, highVal, x1 + 5.0d); |
| 319 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 320 | } | |
| 321 | else { // PlotOrientation.VERTICAL | |
| 322 |
1
1. drawItem : removed call to java/awt/geom/Line2D::setLine → SURVIVED |
line.setLine(x1, lowVal, x1, highVal); |
| 323 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → SURVIVED |
g2.draw(line); |
| 324 |
3
1. drawItem : Replaced double subtraction with addition → SURVIVED 2. drawItem : Replaced double addition with subtraction → SURVIVED 3. drawItem : removed call to java/awt/geom/Line2D::setLine → SURVIVED |
line.setLine(x1 - 5.0d, highVal, x1 + 5.0d, highVal); |
| 325 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → SURVIVED |
g2.draw(line); |
| 326 |
3
1. drawItem : Replaced double subtraction with addition → SURVIVED 2. drawItem : Replaced double addition with subtraction → SURVIVED 3. drawItem : removed call to java/awt/geom/Line2D::setLine → SURVIVED |
line.setLine(x1 - 5.0d, lowVal, x1 + 5.0d, lowVal); |
| 327 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → SURVIVED |
g2.draw(line); |
| 328 | } | |
| 329 | ||
| 330 | } | |
| 331 | ||
| 332 | Shape hotspot = null; | |
| 333 |
2
1. drawItem : negated conditional → SURVIVED 2. drawItem : negated conditional → SURVIVED |
if (pass == 1 && getItemShapeVisible(row, column)) { |
| 334 | Shape shape = getItemShape(row, column, selected); | |
| 335 |
1
1. drawItem : negated conditional → SURVIVED |
if (orientation == PlotOrientation.HORIZONTAL) { |
| 336 | shape = ShapeUtilities.createTranslatedShape(shape, y1, x1); | |
| 337 | } | |
| 338 |
1
1. drawItem : negated conditional → SURVIVED |
else if (orientation == PlotOrientation.VERTICAL) { |
| 339 | shape = ShapeUtilities.createTranslatedShape(shape, x1, y1); | |
| 340 | } | |
| 341 | hotspot = shape; | |
| 342 | ||
| 343 |
1
1. drawItem : negated conditional → SURVIVED |
if (getItemShapeFilled(row, column)) { |
| 344 |
1
1. drawItem : negated conditional → SURVIVED |
if (getUseFillPaint()) { |
| 345 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(getItemFillPaint(row, column, selected)); |
| 346 | } | |
| 347 | else { | |
| 348 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → SURVIVED |
g2.setPaint(getItemPaint(row, column, selected)); |
| 349 | } | |
| 350 |
1
1. drawItem : removed call to java/awt/Graphics2D::fill → SURVIVED |
g2.fill(shape); |
| 351 | } | |
| 352 |
1
1. drawItem : negated conditional → SURVIVED |
if (getDrawOutlines()) { |
| 353 |
1
1. drawItem : negated conditional → SURVIVED |
if (getUseOutlinePaint()) { |
| 354 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(getItemOutlinePaint(row, column, selected)); |
| 355 | } | |
| 356 | else { | |
| 357 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → SURVIVED |
g2.setPaint(getItemPaint(row, column, selected)); |
| 358 | } | |
| 359 |
1
1. drawItem : removed call to java/awt/Graphics2D::setStroke → SURVIVED |
g2.setStroke(getItemOutlineStroke(row, column, selected)); |
| 360 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → SURVIVED |
g2.draw(shape); |
| 361 | } | |
| 362 | // draw the item label if there is one... | |
| 363 |
1
1. drawItem : negated conditional → SURVIVED |
if (isItemLabelVisible(row, column, selected)) { |
| 364 |
1
1. drawItem : negated conditional → NO_COVERAGE |
if (orientation == PlotOrientation.HORIZONTAL) { |
| 365 |
3
1. drawItem : changed conditional boundary → NO_COVERAGE 2. drawItem : negated conditional → NO_COVERAGE 3. drawItem : removed call to org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::drawItemLabel → NO_COVERAGE |
drawItemLabel(g2, orientation, dataset, row, column, |
| 366 | selected, y1, x1, (meanValue.doubleValue() < 0.0)); | |
| 367 | } | |
| 368 |
1
1. drawItem : negated conditional → NO_COVERAGE |
else if (orientation == PlotOrientation.VERTICAL) { |
| 369 |
3
1. drawItem : changed conditional boundary → NO_COVERAGE 2. drawItem : negated conditional → NO_COVERAGE 3. drawItem : removed call to org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::drawItemLabel → NO_COVERAGE |
drawItemLabel(g2, orientation, dataset, row, column, |
| 370 | selected, x1, y1, (meanValue.doubleValue() < 0.0)); | |
| 371 | } | |
| 372 | } | |
| 373 | } | |
| 374 | ||
| 375 |
2
1. drawItem : negated conditional → SURVIVED 2. drawItem : negated conditional → SURVIVED |
if (pass == 0 && getItemLineVisible(row, column)) { |
| 376 |
1
1. drawItem : negated conditional → KILLED |
if (column != 0) { |
| 377 | ||
| 378 |
1
1. drawItem : Replaced integer subtraction with addition → KILLED |
Number previousValue = statDataset.getValue(row, column - 1); |
| 379 |
1
1. drawItem : negated conditional → SURVIVED |
if (previousValue != null) { |
| 380 | ||
| 381 | // previous data point... | |
| 382 | double previous = previousValue.doubleValue(); | |
| 383 | double x0; | |
| 384 |
1
1. drawItem : negated conditional → SURVIVED |
if (getUseSeriesOffset()) { |
| 385 |
1
1. drawItem : Replaced integer subtraction with addition → NO_COVERAGE |
x0 = domainAxis.getCategorySeriesMiddle( |
| 386 | column - 1, dataset.getColumnCount(), | |
| 387 | visibleRow, visibleRowCount, | |
| 388 | getItemMargin(), dataArea, | |
| 389 | plot.getDomainAxisEdge()); | |
| 390 | } | |
| 391 | else { | |
| 392 |
1
1. drawItem : Replaced integer subtraction with addition → KILLED |
x0 = domainAxis.getCategoryMiddle(column - 1, |
| 393 | getColumnCount(), dataArea, | |
| 394 | plot.getDomainAxisEdge()); | |
| 395 | } | |
| 396 | double y0 = rangeAxis.valueToJava2D(previous, dataArea, | |
| 397 | plot.getRangeAxisEdge()); | |
| 398 | ||
| 399 | Line2D line = null; | |
| 400 |
1
1. drawItem : negated conditional → SURVIVED |
if (orientation == PlotOrientation.HORIZONTAL) { |
| 401 | line = new Line2D.Double(y0, x0, y1, x1); | |
| 402 | } | |
| 403 |
1
1. drawItem : negated conditional → KILLED |
else if (orientation == PlotOrientation.VERTICAL) { |
| 404 | line = new Line2D.Double(x0, y0, x1, y1); | |
| 405 | } | |
| 406 |
1
1. drawItem : removed call to java/awt/Graphics2D::setPaint → SURVIVED |
g2.setPaint(getItemPaint(row, column, selected)); |
| 407 |
1
1. drawItem : removed call to java/awt/Graphics2D::setStroke → SURVIVED |
g2.setStroke(getItemStroke(row, column, selected)); |
| 408 |
1
1. drawItem : removed call to java/awt/Graphics2D::draw → SURVIVED |
g2.draw(line); |
| 409 | } | |
| 410 | } | |
| 411 | } | |
| 412 | ||
| 413 |
1
1. drawItem : negated conditional → SURVIVED |
if (pass == 1) { |
| 414 | // add an item entity, if this information is being collected | |
| 415 | EntityCollection entities = state.getEntityCollection(); | |
| 416 |
1
1. drawItem : negated conditional → KILLED |
if (entities != null) { |
| 417 |
1
1. drawItem : removed call to org/jfree/chart/renderer/category/StatisticalLineAndShapeRenderer::addEntity → NO_COVERAGE |
addEntity(entities, hotspot, dataset, row, column, selected, |
| 418 | x1, y1); | |
| 419 | } | |
| 420 | } | |
| 421 | ||
| 422 | } | |
| 423 | ||
| 424 | /** | |
| 425 | * Tests this renderer for equality with an arbitrary object. | |
| 426 | * | |
| 427 | * @param obj the object (null permitted). | |
| 428 | * | |
| 429 | * @return A boolean. | |
| 430 | */ | |
| 431 | public boolean equals(Object obj) { | |
| 432 |
1
1. equals : negated conditional → KILLED |
if (obj == this) { |
| 433 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 434 | } | |
| 435 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof StatisticalLineAndShapeRenderer)) { |
| 436 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 437 | } | |
| 438 | StatisticalLineAndShapeRenderer that | |
| 439 | = (StatisticalLineAndShapeRenderer) obj; | |
| 440 |
1
1. equals : negated conditional → KILLED |
if (!PaintUtilities.equal(this.errorIndicatorPaint, |
| 441 | that.errorIndicatorPaint)) { | |
| 442 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 443 | } | |
| 444 |
1
1. equals : negated conditional → KILLED |
if (!ObjectUtilities.equal(this.errorIndicatorStroke, |
| 445 | that.errorIndicatorStroke)) { | |
| 446 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 447 | } | |
| 448 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return super.equals(obj); |
| 449 | } | |
| 450 | ||
| 451 | /** | |
| 452 | * Returns a hash code for this instance. | |
| 453 | * | |
| 454 | * @return A hash code. | |
| 455 | */ | |
| 456 | public int hashCode() { | |
| 457 | int hash = super.hashCode(); | |
| 458 | hash = HashUtilities.hashCode(hash, this.errorIndicatorPaint); | |
| 459 |
1
1. hashCode : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return hash; |
| 460 | } | |
| 461 | ||
| 462 | /** | |
| 463 | * Provides serialization support. | |
| 464 | * | |
| 465 | * @param stream the output stream. | |
| 466 | * | |
| 467 | * @throws IOException if there is an I/O error. | |
| 468 | */ | |
| 469 | private void writeObject(ObjectOutputStream stream) throws IOException { | |
| 470 |
1
1. writeObject : removed call to java/io/ObjectOutputStream::defaultWriteObject → SURVIVED |
stream.defaultWriteObject(); |
| 471 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writePaint → KILLED |
SerialUtilities.writePaint(this.errorIndicatorPaint, stream); |
| 472 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writeStroke → KILLED |
SerialUtilities.writeStroke(this.errorIndicatorStroke, stream); |
| 473 | } | |
| 474 | ||
| 475 | /** | |
| 476 | * Provides serialization support. | |
| 477 | * | |
| 478 | * @param stream the input stream. | |
| 479 | * | |
| 480 | * @throws IOException if there is an I/O error. | |
| 481 | * @throws ClassNotFoundException if there is a classpath problem. | |
| 482 | */ | |
| 483 | private void readObject(ObjectInputStream stream) | |
| 484 | throws IOException, ClassNotFoundException { | |
| 485 |
1
1. readObject : removed call to java/io/ObjectInputStream::defaultReadObject → SURVIVED |
stream.defaultReadObject(); |
| 486 | this.errorIndicatorPaint = SerialUtilities.readPaint(stream); | |
| 487 | this.errorIndicatorStroke = SerialUtilities.readStroke(stream); | |
| 488 | } | |
| 489 | ||
| 490 | } | |
Mutations | ||
| 147 |
1.1 |
|
| 161 |
1.1 |
|
| 175 |
1.1 |
|
| 191 |
1.1 |
|
| 204 |
1.1 |
|
| 228 |
1.1 |
|
| 234 |
1.1 |
|
| 235 |
1.1 |
|
| 241 |
1.1 2.2 |
|
| 249 |
1.1 |
|
| 256 |
1.1 |
|
| 273 |
1.1 2.2 |
|
| 278 |
1.1 2.2 3.3 |
|
| 285 |
1.1 |
|
| 289 |
1.1 2.2 3.3 |
|
| 296 |
1.1 |
|
| 300 |
1.1 |
|
| 301 |
1.1 |
|
| 304 |
1.1 |
|
| 306 |
1.1 |
|
| 307 |
1.1 |
|
| 310 |
1.1 |
|
| 313 |
1.1 |
|
| 314 |
1.1 |
|
| 315 |
1.1 |
|
| 316 |
1.1 2.2 3.3 |
|
| 317 |
1.1 |
|
| 318 |
1.1 2.2 3.3 |
|
| 319 |
1.1 |
|
| 322 |
1.1 |
|
| 323 |
1.1 |
|
| 324 |
1.1 2.2 3.3 |
|
| 325 |
1.1 |
|
| 326 |
1.1 2.2 3.3 |
|
| 327 |
1.1 |
|
| 333 |
1.1 2.2 |
|
| 335 |
1.1 |
|
| 338 |
1.1 |
|
| 343 |
1.1 |
|
| 344 |
1.1 |
|
| 345 |
1.1 |
|
| 348 |
1.1 |
|
| 350 |
1.1 |
|
| 352 |
1.1 |
|
| 353 |
1.1 |
|
| 354 |
1.1 |
|
| 357 |
1.1 |
|
| 359 |
1.1 |
|
| 360 |
1.1 |
|
| 363 |
1.1 |
|
| 364 |
1.1 |
|
| 365 |
1.1 2.2 3.3 |
|
| 368 |
1.1 |
|
| 369 |
1.1 2.2 3.3 |
|
| 375 |
1.1 2.2 |
|
| 376 |
1.1 |
|
| 378 |
1.1 |
|
| 379 |
1.1 |
|
| 384 |
1.1 |
|
| 385 |
1.1 |
|
| 392 |
1.1 |
|
| 400 |
1.1 |
|
| 403 |
1.1 |
|
| 406 |
1.1 |
|
| 407 |
1.1 |
|
| 408 |
1.1 |
|
| 413 |
1.1 |
|
| 416 |
1.1 |
|
| 417 |
1.1 |
|
| 432 |
1.1 |
|
| 433 |
1.1 |
|
| 435 |
1.1 |
|
| 436 |
1.1 |
|
| 440 |
1.1 |
|
| 442 |
1.1 |
|
| 444 |
1.1 |
|
| 446 |
1.1 |
|
| 448 |
1.1 |
|
| 459 |
1.1 |
|
| 470 |
1.1 |
|
| 471 |
1.1 |
|
| 472 |
1.1 |
|
| 485 |
1.1 |


Classes
Methods
(inner) convertPfxToObject(pfxpath, passphrase) → {object}
Extracts the provisioning certificate into an object for later manipulation
Parameters:
| Name | Type | Description |
|---|---|---|
pfxpath |
string | Path to provisioning certificate |
passphrase |
string | Password to open provisioning certificate |
- Source:
Returns:
Object containing cert pems and private key
- Type
- object
(inner) generateMcnonce() → {buffer}
Generates the console nonce used validate the console. AMT only accepts a nonce that is 20 bytes long of random data
- Source:
Returns:
Returns console nonce used to verify RCS server to AMT
- Type
- buffer
(inner) signString(message, key) → {string}
Signs the concatinated nonce with the private key of the provisioning certificate and encodes as base64
Parameters:
| Name | Type | Description |
|---|---|---|
message |
string | Message to be signed |
key |
string | Private key of provisioning certificate |
- Source:
Returns:
Returns the signed string
- Type
- string
(inner) sortCertificate(intermediate, root) → {Boolean}
Sorts the intermediate certificates to properly order the certificate chain
Parameters:
| Name | Type | Description |
|---|---|---|
intermediate |
Object | |
root |
Object |
- Source:
Returns:
Returns true if issuer is from root. Returns false if issuer is not from root.
- Type
- Boolean
(inner) verifyString(message, cert, sign) → {boolean}
Verification check that the digital signature is correct. Only used for debug
Parameters:
| Name | Type | Description |
|---|---|---|
message |
string | Message to be checked |
cert |
cert | Certificate used to sign |
sign |
string | Signature used to sign |
- Source:
Returns:
True = pass, False = fail
- Type
- boolean


Chapter 2 Getting Started
2.1 Packages
When you start R studio, basic functionality is initially available. However, in most projects we will want to use some special code and functions contained in packages that are not initially available when R starts. Before packages can be used in our analyses, they must be installed in our R workspace. We presume that the R Studio development environment is being used by our students. Any package can be installed by clicking the “Packages” tab in the lower right panel of the R Studio workspace. Then click “Install” to produce an entry bar where you type the name of the desired package. You can also instruct R Studio to install a package directly by typing “install.packages(”tidyverse”)” in the “Console” window in the lower left area of R Studio. This command will execute and install the tidyverse package.
Once a package is installed into your R Studio environment, you make it available by loading with the library()
command. For this document, some additional packages are needed, and are loaded in the next code block. The knitr and tidyverse packages have been previously installed. If you attempt to load a package (in this case zelig) that has not been installed, you will get an error message similar to this:
Error in library(zelig) : there is no package called ‘zelig’
# this block loads R packages that may be needed for the analysis.
library(knitr)
library(tidyverse)
2.2 The tidyverse Package
The tidyverse package is very special - it is a package of other packages. The tidyverse website tidyverse describes the tidyverse as: The tidyverse is an opinionated collection of R packages designed for data science. All packages share an underlying design philosophy, grammar, and data structures.
The most important packages inside the tidyverse package for this document are: dplyr, magrittr, and ggplot2.
2.3 Gapminder Data:
This dataset (named gapminder) is contained in an R package called gapminder, and needs to be loaded before the dataset can be used.
library(gapminder)
2.4 Set Working Directory
In the “Files” tab in the lower right portion of the R Studio work area, you can choose where you want to store files and conduct your work by navigating to a suitable folder by making folders and sub-folders and then clicking to navigate to a suitable work area.
You should notify R Studio and the R software to this location called the working directory. Once you have navigated to where you want files, data, and results to reside, you notify R Studio by clicking the blue “More” gear and choose “set working directory.” This will help R understand where to expect files and data to be located.
One of the most common problems students experience is that they work on files in a location not specified as the “working directory.”
2.5 Reading Data From a CSV File
The most common way to read data into R is from an excel spreadsheet that has been saved into a comma-separated-values (csv) file. This means that data elements are separated from each other by commas “,”.
2.5.1 CSV File Located in Working Directory
We consider a data file named (file.csv) that contains variable names in the first row of the file. Place this file in your working directory and read,
<- read.csv("file.csv",header=TRUE) dataframe
A frequent issue with read.csv
is that character variables are automatically converted to factor/categorical variables. This may not be a good choice in many instances. To gain full control of how this is handled, you can prevent this kind of auto-conversion by using the stringsAsFactors
option.
<- read.csv(file = 'carspeeds.csv', stringsAsFactors = FALSE) cardata
The readr package inside the tidyverse family of packages has a slightly nicer read function you should know about. We use the readr::
prefix to inform readers that the read_csv
function resides in the readr package. This read function will not auto-convert character variables to category/factor variables.
<- readr::read_csv("file.csv",col_names = TRUE) dataframe
2.5.2 Read Data From a URL Web Location
If data is located in an accessible location on the internet, you can simply add the location pathway or URL address to the read.csv command to access the data.
#import data from URL
<- read.csv('https://raw.githubusercontent.com/Statology/Miscellaneous/main/basketball_data.csv')
data
#view first five rows
head(data)
## player assists points
## 1 A 6 12
## 2 B 7 19
## 3 C 14 7
## 4 D 4 6
## 5 E 5 10
Here is a similar command using the readr package.
#import data from URL
<- data.table::fread('https://raw.githubusercontent.com/Statology/Miscellaneous/main/basketball_data.csv')
data3
#view first five rows
head(data3)
## player assists points
## 1: A 6 12
## 2: B 7 19
## 3: C 14 7
## 4: D 4 6
## 5: E 5 10
2.5.3 Reading Data From Excel Files
Reading data directly from excel spreadsheets is more complex and you should read documentation for the readxl package. Here we illustrate the basic idea.
library(readxl)
# Read sheet names 'sheet_name' from excel file
= read_excel("/Users/new_file.xlsx", sheet='sheet_name')
df #or
# Read sheet 3 from excel file
= read_excel("/Users/new_file.xlsx", sheet=3) df


vtk.js Test Results
loading
loading
{{#each browsers}}
{{name}}
{{#if summary.failed}} Some tests failed {{else}} All passed {{/if}}
Hide/show browser tests
Failed: {{summary.failed}}
Passed: {{summary.passed}}
Skipped: {{summary.skipped}}
Total: {{summary.total}}
{{#each tests}}
{{name}} {{#if success}}
passing
{{else}}
failing
{{/if}}
{{#each specs}}
{{description}}
{{#if skipped}}
skipped
{{else if success}}
passing
{{else}}
failing
{{/if}}
{{#with details}}
{{#if (equals operator "imagediff")}} {{! Image diff structure: see testUtils.compareImage }}
Mismatch count tolerance: {{expected}}%
Output
Expected
Difference
{{else}}
Output:
{{json actual}}
Expected:
{{json expected}}
{{/if}}
{{/with}}
{{/each}}
{{/each}}
{{/each}}


@(addUserForm: Form[models.users.User], user: models.users.User) @import helper._ @main("Home", user) {
With Airways Company, you can find the cheapest flights you need and travel safely
We provide convenient and fast search for airline tickets, plus reliable ticket booking system, perfect for first-time travellers.
@addUserForm.globalError.message
} @form(action = routes.HomeController.signUpSubmit(), 'class -> "form-horizontal", 'role -> "form"){ @inputText(addUserForm("email"), '_label -> "Email",'class -> "form-control") @inputText(addUserForm("name"), '_label -> "Name",'class -> "form-control") @inputPassword(addUserForm("password"), '_label -> "Password",'class -> "form-control") @inputPassword(addUserForm("confirmPassword"), '_label -> "Confirm Password",'class -> "form-control")


{% raw %}{% extends "base.html" %} {% block navbar %} {% include "partials/_navbar.html" %} {% endblock navbar %} {% block content %}
Your password has been set. You may log in now.
Log in


To find your way to The Resort, there is a ferry at Homabay that leave two times a day.
It leaves at 10.00hrs and at 16.30hrs
For other private arrangement, you can pay for a boat ride from Homabay to the resort.
Feel free to contact the manager for arrangement.


Hello i am Pernarh Malik founder and CEO of Creation Land. It is the world of innovation and technology. At creations land, i create what you imagine.
I believe nothing is impossible for i create without limitations. Why worry or pay a lot more for what you need;
with me your satisfaction is guranteed. I go the extra mile to ensure you gain more advantages over your competitors. Weather who are as an individual , team , company or a coporate institution i have the solution to the problem you are battling with.
Remember i am just a call or mail away.


| DOSE: |
50 mg |
oral |
MDMA |
(pill / tablet) |
I made a road trip up to Chicago for a rave last May. Looking foward to another intense roll, I bought a small blank pill that was supposedly ecstasy.
After an hour or so, I thought that I was rolling. I was dancing around with my glowsticks for awhile until I began to feel out of breath. I drank some water and sat down. I was dripping sweat. I have no way of knowing how high it got, but my body temperature must've been soaring, much more than any time I have rolled. Sitting against the wall, I started seeing things; more specifically, I saw B and E, friends from back home who weren't even at this party! I'd yell their names, but then it would turn out to be someone else or even no one at all.
Some people that I did know came over saw me and realized how out of it I was. They brought me cold water and tried to calm me down. I was breathing heavily and my heart was pounding like a jackhammer. I got sick and vomitted on the floor. The nausea passed after awhile, and I told my friends to go back to their dancing. I got more water and located a chair off in the corner. I sat in the chair and was in and out of consciousness for the remaining 4 or 5 hours of the rave. My friends helped me out the door, and then we drove home that day.
I didn't feel too good the next day. My heart rate was still unusually high and I couldn't eat anything, but after that day, I returned to normal. For a while, I thought that I'd taken a DXM roll, but after hearing about instances of PMA being sold as ecstasy in Chicago, I grew suspect as to what this mysterious pill that I took really was. I took DXM rolls by accident this summer, and though the experience was somewhat similar, it was still quite different from that odd night in Chicago.
Also, the dosage of DXM is much larger than that of PMA to experience the psychedelic effects. The DXM that I took this summer was a large star shaped pill while the Chicago pill was tiny, not large enough to have any effect if it were DXM. After reading through Erowid's vaults, I'm fairly certain that the drug I took was PMA. I have since quit rolling. The risk of adulterants has grown too high for me. If I were ever to roll again I would only buy pills from somebody I trusted. Never again would I buy pills from strangers or at a rave.
Be safe.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Gaussian mixture model for multi-dimensional data.
|
|
__init__(self,
X,
K,
train=True,
axis=None)
x.__init__(...) initializes x; see help(type(x)) for signature |
source code
|
|
|
|
|
|
numpy array
|
datapoint(self,
m,
k)
Training point number m as if it would belong to
component k |
source code
|
|
|
|
del_cache(self)
Clear model parameter cache (force recalculation) |
source code
|
|
|
|
|
|
|
em(self,
n_iter=100,
eps=1e-30)
Expectation maximization |
source code
|
|
|
|
estimate_means(self)
Update means from current model and samples |
source code
|
|
|
|
|
|
GaussianMixture subclass
|
|
|
|
|
|
float in interval [0.0, 1.0]
|
overlap(self,
other)
Similarity of two mixtures measured in membership overlap |
source code
|
|
|
|
randomize_means(self)
Pick K samples from X as means |
source code
|
|
|
|
randomize_scales(self,
ordered=True)
Random scales initialization |
source code
|
|
|
Inherited from object :
__delattr__ ,
__format__ ,
__getattribute__ ,
__hash__ ,
__new__ ,
__reduce__ ,
__reduce_ex__ ,
__repr__ ,
__setattr__ ,
__sizeof__ ,
__str__ ,
__subclasshook__
|
|
float
|
BIC
Bayesian information criterion, calculated as BIC = M * ln(sigma_e^2)
+ K * ln(M)
|
|
int
|
K
Number of components
|
|
int
|
M
Number of data points
|
|
int
|
N
Length of component axis
|
|
(N, K) numpy array
|
delta
Squared "distances" between data and components
|
|
int
|
dimension
Dimensionality of the mixture domain
|
|
float
|
log_likelihood
Log-likelihood of the extended model (with indicators)
|
|
float
|
log_likelihood_reduced
Log-likelihood of the marginalized model (no auxiliary indicator
variables)
|
|
(K, ...) numpy array
|
means
|
|
(N,) numpy array
|
membership
Membership array
|
|
(K, N) numpy array
|
scales
|
|
(K,) numpy array
|
sigma
Component variations
|
|
(K,) numpy array
|
w
Component weights
|
|
Inherited from object :
__class__
|


--- layout: post title: The future of NServiceBus-Contrib date: 2010-11-03 15:05:00.000000000 +01:00 categories: - NServiceBus tags: [] status: publish type: post published: true meta: blogger_blog: andreasohlund.blogspot.com blogger_permalink: "/2010/11/future-of-nservicebus-contrib.html" _edit_last: '1' author: login: andreas.ohlund email<EMAIL_ADDRESS>display_name: Andreas Öhlund first_name: Andreas last_name: "Öhlund" ---
Me and my colleagues are trying to get the new NServiceBus-Contrib moving. If you’re interested you can read more here:
http://www.nullreference.se/2010/11/03/getting-the-nservicebus-contrib-project-up-to-speed/
Contributions are most welcome!


Hi Forum.
Im trying to add the events module to the emoncms, but to no avail!
I do the update database thing, but the page just stays black whenever i go under admin tab and then the update button.
Yes I have add the $updatelogin to the settings.php.
Any ideas??
Next i also want to add highcharts to my dashboard.
I have done this by inserting the html + js into the html tag within the dashboard editor, but what will be the best way to add a ajax query to the Feeds database? Where should it be located and how can i do this within the already modules?
Regards
Kdw
Re: Adding Event Module not Working Windows & adding Highcharts
Ok so make sure when adding a new module that the name is correct.
EVENT not EVENTS!!!
Re: Adding Event Module not Working Windows & adding Highcharts
Are you running emoncms Timestore version?
If so, the event module has not yet been modified to be compatible, and will not work.
Paul
Re: Adding Event Module not Working Windows & adding Highcharts
Hi Paul, no im running timestore yet.
Email not working, looks like this module needs some revision to work properly
Re: Adding Event Module not Working Windows & adding Highcharts
I've not heard of Highcharts until now, but they seem pretty impressive, also distribute under the Creative Commons Attribution-NonCommercial 3.0 License.
If you get Highcharts working, please post back with details & maybe an entry under the forum 'showcase' as I am sure it will raise a lot of interest here.
Paul
Re: Adding Event Module not Working Windows & adding Highcharts
Well, it looks like highcharts understands data in the format returned by the feed controller, ran a quick test by creating a test dashboard, inserting a text widget and setting the content to:

And got back a small chart ... the problem would be to write all the javascript needed to query appropriately the feed controller (with date and time selector and with the options for zooming)
PS: paul, Highcharts is what it is used on the library I am using to display weather data in one of my dashboards: http://www.weather-watch.com/smf/index.php/topic,46621.0.html
Re: Adding Event Module not Working Windows & adding Highcharts
Hi Peeps.
I have added the highcharts functionality to the VIS tab, and made a small script that injects data into a user database, will upload the code once i made it dynamic. Currently it "just working" for my settings.
Can someone please help with setting up Email and Twitter notifications?
I have set all the correct email settings(not gmail thou), and in my inspector i do get "Message sent" response from the phpmailer after enabling php-ssl in my localhost etc.
I have tested the email online and locally, both dont work for my private snmp server?
Aswell, how do i go about to enable the twitter notifications?
Thanks alot
*after notification im gonna add full google chart functionality, still need to github and merge all this code :D
Re: Adding Event Module not Working Windows & adding Highcharts
You might want to consider updating to the current 'Master' versions, for emoncms (which is Timestore), raspberrypi and the event module.
I have updated the 3 modules last night, and the event module now works fine sending both emails and also 'push' messages via Boxcar.
The recent updates represent a significant code change, and it may be better to use the current version as a base for Highcharts future development, instead of basing it on a now obsolete system.
Paul
Re: Adding Event Module not Working Windows & adding Highcharts
still no receiving mail after upgrading event's module to my local server; today I also tried to change smtp settings to use gmail as smtp server with no results. thanks
Re: Adding Event Module not Working Windows & adding Highcharts
As per my last post above....
Paul
Re: Adding Event Module not Working Windows & adding Highcharts
Just to verify, the test function button doesnt send a mail to the destination set, but the mails back to itself? Thats what im getting
*Nevermind, found the bug.
When the event list page renders, it doesnt create the correct input box unless you change the "type" to prowl or any of the others, and then select email agian.
Re: Adding Event Module not Working Windows & adding Highcharts
How do you install this version ?
git clone ... ?
emoncmsv6 + rasp + event ?
Thanks
Re: Adding Event Module not Working Windows & adding Highcharts
I second Theo's request for help
How do I install the most recent versions
sort of need an idiots guide to get me going have tried following the partial instruction but it has not worked for me
Suggest the starting point could be the download image post back in May
Thanks
Re: Adding Event Module not Working Windows & adding Highcharts
My advice would be to upgrade to the current version of emoncms using this guide.
Once updated, ensure that you have also updated the Raspberry Pi & event module modules;
...did you install these modules originally by using Git clone (or used a emoncms image file)? If so, then navigate to /emoncms/Modules/event and run;
& do the same with /emoncms/raspberrypi/ for the raspberry pi module.
Paul
Re: Adding Event Module not Working Windows & adding Highcharts
Already followed this guide, last emoncms 6 + timestore,
"git pull origin master" in both event & rasp modules tells me already-up-to-date
When opening event module in emoncms:
Fatal error: Cannot use object of type Route as array in /var/www/emoncms/Modules/event/event_controller.php on line 21
Re: Adding Event Module not Working Windows & adding Highcharts
Well that error points to the line;
in the event_controller.php
Are you sure that your admin key;
is the same as is contained in your settings.php file?
.. and you have php5-curl installed?
Paul
PS. after upgrading to Timestore, did you rename the 'new' default_settings.php to settings.php and re-added your MySQL details & Timestore key. - just an afterthought.


Stalker who crept into sleeping victim's home and started kissing her jailed for eight years
Creepy sex pest Ian Essom had previously harassed a 21-year-old woman who worked late shifts at a petrol station before targeting his new victim.
by Luke PowellA convicted stalker who crept into his sleeping victim's home and started kissing her has been jailed for eight years.
Thames Valley Police said Ian Essom, of Northampton, entered the property in Olney, Buckinghamshire, at around 1am on November 18 last year as his victim was asleep in bed.
When she resisted his advances, the 41-year-old restrained her before eventually leaving the property.

When sentenced at the same court on Thursday, he was jailed for eight years and placed on the sex offenders register for life.
In August 2018, Essom was given a two-year restraining order for repeatedly staring at a 21-year-old woman as she worked late shifts at a petrol station in April of that year.
Following his arrest, he was found guilty of harassment and given a 12-week prison sentence, suspended for 12 months, police said.
Speaking after Essom was jailed on Thursday, Detective Constable Kim McHugh said: "I would like to thank the victim for coming forward to police and for supporting us with the investigation.
"She has shown great strength in giving evidence at trial.
"Thames Valley Police does not tolerate this behaviour and we will work tirelessly to investigate thoroughly and bring offenders to justice.
"I hope this conviction gives others the confidence to come forward and make a report to the police."


Man charged over alleged burglary spree in Perth coastal suburbs
by Laura PondPOLICE have charged a Doubleview man over alleged burglary and stealing offences in nearby coastal suburbs.
Mirrabooka Detectives and Scarborough Police arrested a 29-year-old man on November 13 in relation to home burglaries, car break ins, stealing and fraud offences they believe were committed in Doubleview, Karrinyup, North Beach, Watermans Bay, Trigg and Embleton between August 17 and October 28.
In one of the incidents, $600 cash, a watch and a car were stolen from a Doubleview home.
The man will face five home burglaries, seven stealing and nine fraud charges.


The following alerts are raised by the GraphQL add-on.
| Alert Reference | Name | Description |
|---|---|---|
| 50007-1 | GraphQL Endpoint Supports Introspection | This alert is raised when the spider discovers a GraphQL endpoint that supports introspection. |
| 50007-2 | GraphQL Server Implementation Identified | This alert is raised when the GraphQL implementation used by the server is identified. It utilises fingerprinting techniques adapted from the tool graphw00f. |
| GraphQL | for an overview of the GraphQL add-on. | |
| GraphQL Options | for information about the optional parameters. | |
| GraphQL Automation | for information about the automation framework support. | |
| GraphQL Variant | for information about the GraphQL variant. |


IBM
This project is to generate Linux Build Packages!
Choose file
Generate !
{% if download %}
{% else %} {% endif %}
Developed By...
Venkata Avinash Tanniru
"This project was developed exclusively for IBM to create a BigFix Packaging"


Web concepts-Notes from lesson one - browser request to server (HTTP) >>> responds w/files
- Element = opening tag, contents, closing tag Tabs
HTML concepts
- = italics
- Attributes =opening and closing tag, name = value, content
This is an anchor
- This is a sample image link with no actual image. (no closing tag because no content = void tag)
- break and span tags = inline; vs: paragraph and div = block; tag creates box, can set height and width; both content containers; attach css styles
Document structure
- doctype = what kind of HTML
- html tag = opening tag; head tag includes page title, refs to css and js files


--- layout: member_profile title: "Cyprien Lanthermann" permalink: /members/lanthermann/ name: "Cyprien Lanthermann" affiliation: "Georgia State University" jointaffiliation: country: "United States of America" position: "Post-Doctoral Researcher" researchtitle: "CLASSIC++/CLIMB++: Upgrade of the CLASSIC/CLIMB interferometric beam combiner" summary: prior: orcid: "https://orcid.org/0000-0001-9745-5834" website: linkedin: "https://www.linkedin.com/in/cyprien-lanthermann-2b0250144/" rgate: "https://www.researchgate.net/profile/Cyprien_Lanthermann" research: ["Detectors" , "Interferometry" , "Optical Design" , "Polarimetry" ] keywords: "Detectors -- Interferometry -- Optical Design -- Polarimetry" email<EMAIL_ADDRESS>image_path: /assets/img/member/lanthermann.png ---
Current Research Summary:
CLASSIC++/CLIMB++ consists in the upgrade of the existing CLASSIC/CLIMB beam combiner situated at the CHARA array. It will use the e-APD detector technology to focus the improvement in sensitivity of the instrument, by upgrading also its optical design to adapt to the new camera and improve even more the performances.
Prior Research:
Post-Doc at KU Leuven - Early-stage study of the MARVEL facility
PhD at IPAG - Avalanche detectors for astronomical near-infrared interferometry:
application to the multiplicity of massive stars


We are focusing on solving one the social problem existing in the digital world i.e. Child Pornography. It is criminal offence and various laws are made for it.
#pragma bans on uploading of such video and spreading them over the internet. Filtering videos on Porn websites manually is very slow process which leads to gateway for people to easily upload videos which are against such law.
By analysing the content of video before it get published, our product checks on such restricted content and discard the upload if found. It also tracks the criminal by using his location, and various analyses are carried out on this data to help crime investigator for tracking such people.
We intend to prevent further addition of such videos on the internet and even remove such contents or report to the authority. We have developed an video analysis platform, which internally works on advanced image recognition and age detection using machine learning and neural-network concepts. It recognizes if a given pornographic video has child actors involved via age analysis of all actors. The recognized videos have certain accuracy associated.
The video is then further reported to the website/manual testers for recheck. And if the child pornographic contents are found in the video it is then banned.
We further analyze who is uploading the video, from which area it is being uploaded and then mark certain areas as hotspots for such activities. This is helpful in tracking the uploaders.
A basic demo of our backend system which will detect child content in a video.


Mark this assignment as complete. You will recieve points when a teacher accepts this submissionThis assignment is marked as complete. You will recieve points when a teacher accepts this submissionyay! This assignment was completed on {{assignment.mySubmission.timestamp | date}}{{assignment.points}}


Toggle navigation
Stack Exchange
Insights
Top rated Q's
Tagging trends in a year
Top 10 Tags
Thank you comments
Search


Get to it...

Search for what you're interested in and get the top 10 New York Times articles. So get to it, find your news!

Search for what you're interested in and get the top 10 New York Times articles. So get to it, find your news!


|
mlpack
1.0.12
|
A statistic for use with MLPACK trees, which stores the upper bound on distance to nearest neighbors and the component which this node belongs to. More...
Public Member Functions | |
| DTBStat () | |
| A generic initializer. More... | |
| template<typename TreeType > | |
| DTBStat (const TreeType &node) | |
| This is called when a node is finished initializing. More... | |
| double | Bound () const |
| Get the total bound for pruning. More... | |
| double & | Bound () |
| Modify the total bound for pruning. More... | |
| int | ComponentMembership () const |
| Get the component membership of this node. More... | |
| int & | ComponentMembership () |
| Modify the component membership of this node. More... | |
| double | MaxNeighborDistance () const |
| Get the maximum neighbor distance. More... | |
| double & | MaxNeighborDistance () |
| Modify the maximum neighbor distance. More... | |
| double | MinNeighborDistance () const |
| Get the minimum neighbor distance. More... | |
| double & | MinNeighborDistance () |
| Modify the minimum neighbor distance. More... | |
Private Attributes | |
| double | bound |
| Total bound for pruning. More... | |
| int | componentMembership |
| The index of the component that all points in this node belong to. More... | |
| double | maxNeighborDistance |
| Upper bound on the distance to the nearest neighbor of any point in this node. More... | |
| double | minNeighborDistance |
| Lower bound on the distance to the nearest neighbor of any point in this node. More... | |
A statistic for use with MLPACK trees, which stores the upper bound on distance to nearest neighbors and the component which this node belongs to.
Definition at line 26 of file dtb_stat.hpp.
|
inline |
A generic initializer.
Sets the maximum neighbor distance to its default, and the component membership to -1 (no component).
Definition at line 51 of file dtb_stat.hpp.
|
inline |
This is called when a node is finished initializing.
We set the maximum neighbor distance to its default, and if possible, we set the component membership of the node (if it has only one point and no children).
| node | Node that has been finished. |
Definition at line 65 of file dtb_stat.hpp.
|
inline |
|
inline |
|
inline |
Get the component membership of this node.
Definition at line 89 of file dtb_stat.hpp.
References componentMembership.
|
inline |
Modify the component membership of this node.
Definition at line 91 of file dtb_stat.hpp.
References componentMembership.
|
inline |
Get the maximum neighbor distance.
Definition at line 74 of file dtb_stat.hpp.
References maxNeighborDistance.
|
inline |
Modify the maximum neighbor distance.
Definition at line 76 of file dtb_stat.hpp.
References maxNeighborDistance.
|
inline |
Get the minimum neighbor distance.
Definition at line 79 of file dtb_stat.hpp.
References minNeighborDistance.
|
inline |
Modify the minimum neighbor distance.
Definition at line 81 of file dtb_stat.hpp.
References minNeighborDistance.
|
private |
|
private |
The index of the component that all points in this node belong to.
This is the same index returned by UnionFind for all points in this node. If points in this node are in different components, this value will be negative.
Definition at line 44 of file dtb_stat.hpp.
Referenced by ComponentMembership().
|
private |
Upper bound on the distance to the nearest neighbor of any point in this node.
Definition at line 31 of file dtb_stat.hpp.
Referenced by MaxNeighborDistance().
|
private |
Lower bound on the distance to the nearest neighbor of any point in this node.
Definition at line 35 of file dtb_stat.hpp.
Referenced by MinNeighborDistance().


+++ title = "Almost free in Mexico" slug = "almost-free-in-mexico" date = 2007-03-04T20:00:00+10:00 tags = ["locals", "ripoff"] locations = ["mexico/playa-del-carmen"] draft = false summary = """
Of all the ridiculous things that street vendors say in order to get your attention, this one peeves me off the most. "Hey amigo, you like this necklace? 100 pesos, 10 dollars — almost free!" It's tacky; it's insulting (to people's intelligence); and it's completely untrue. But I guess it does the job of luring in those American prey, and their almost smellable dollars.
""" +++Of all the ridiculous things that street vendors say in order to get your attention, this one peeves me off the most. "Hey amigo, you like this necklace? 100 pesos, 10 dollars — almost free!" It's tacky; it's insulting (to people's intelligence); and it's completely untrue. But I guess it does the job of luring in those American prey, and their almost smellable dollars.
I don't think I heard it so much to the west, in the other places I've been so far. But here on the beach resort coast, it's everywhere. I hope it hasn't caught on in Chiapas.


ISVdb.v1.2 (~Apr.2017): Exons +- 1000bp
ISVdb.v2.0 (~Jul.2017): Inclusion of sequenced de-novo variants.
ISVdb.v2.1 (~Sep.2017): Integration of latest MUGA genotyping with sequencing.
ISVdb.v3.0(~Dec.2017): Improved intergration of genotyping with sequencing. Inclusion of whole genome
ISVdb.v3.1(~Feb.2018): Inclusion of structural variants.
| {{ t }} | {% endfor %}
|---|
| {{ t }} | {% endfor %}
| {{ i }} | {% endfor %}


Open relative links in:
Current tab
New tab
Default link behavior
Open absolute links in:
New tab
Current tab
Default link behavior
Select the key, when combined with click, reverses the behavior of the settings above:
Command/Control
Alt/Option
(Note: If "Default link behavior" is chosen for any settings above, this will still be the behavior)
New tab appears at:
Start of tab list
End of tab list
Left of current tab
Right of current tab
Suspend extension for:
5 minutes
15 minutes
30 minutes
1 hour
Cancel


Can I Make the Moon Rise after the Sun Sets?
Sunset
New Page
New Character
OK
Delete the cat (press and hold)
New Background
Edit
Cut
Select the “Cut” tool, and then tap the moon to delete it


Move the mouse and let the eyeball track you.
Change the parameters and click [Render] to see the results.
Click [Reset] to return to sane defaults.
WARNING! Setting the veinBranches too high will slow your computer.
html5eyeball Is free for any use and is under the MIT licence.
This demo uses the excellent Spectrum colour picker


Use CSS to style an element with the id "firstHeader" and id "myHeader":
Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace.
C++ is a general-purpose programming language. It has imperative, object-oriented and generic programming features, while also providing facilities for low-level memory manipulation.
JavaScript can access an element with a specified id by using the getElementById() method:


esys.escript.pdetools Package¶
Classes¶
ArithmeticTuple
CorrectionFailed
Defect
HomogeneousSaddlePointProblem
IndefinitePreconditioner
IterationBreakDown
Locator
MaxIterReached
NegativeNorm
NoPDE
Projector
SolverSchemeException
TimeIntegrationManager
-
class
esys.escript.pdetools.
ArithmeticTuple
(*args)¶ Bases:
object
Tuple supporting inplace update x+=y and scaling x=a*y where
x,y
is an ArithmeticTuple anda
is a float.Example of usage:
from esys.escript import Data from numpy import array a=eData(...) b=array([1.,4.]) x=ArithmeticTuple(a,b) y=5.*x
-
__init__
(*args)¶ Initializes object with elements
args
.Parameters: args – tuple of objects that support inplace add (x+=y) and scaling (x=a*y)
-
-
class
esys.escript.pdetools.
CorrectionFailed
¶ Bases:
esys.escriptcore.pdetools.SolverSchemeException
Exception thrown if no convergence has been achieved in the solution correction scheme.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
Defect
¶ Bases:
object
Defines a non-linear defect F(x) of a variable x. This class includes two functions (bilinearform and eval) that must be overridden by subclassing before use.
-
__init__
()¶ Initializes defect.
-
bilinearform
(x0, x1)¶ Returns the inner product of x0 and x1
NOTE: MUST BE OVERRIDDEN BY A SUBCLASS
Parameters: - x0 – value for x0
- x1 – value for x1
Returns: the inner product of x0 and x1
Return type: float
-
derivative
(F0, x0, v, v_is_normalised=True)¶ Returns the directional derivative at
x0
in the direction ofv
.Parameters: - F0 – value of this defect at x0
- x0 – value at which derivative is calculated
- v – direction
- v_is_normalised – True to indicate that
v
is nomalized (self.norm(v)=0)
Returns: derivative of this defect at x0 in the direction of
v
Note: by default numerical evaluation (self.eval(x0+eps*v)-F0)/eps is used but this method maybe overwritten to use exact evaluation.
-
eval
(x)¶ Returns the value F of a given
x
.NOTE: MUST BE OVERRIDDEN BY A SUBCLASS
Parameters: x – value for which the defect F
is evaluatedReturns: value of the defect at x
-
getDerivativeIncrementLength
()¶ Returns the relative increment length used to approximate the derivative of the defect. :return: value of the defect at
x
:rtype: positivefloat
-
norm
(x)¶ Returns the norm of argument
x
.Parameters: x – a value Returns: norm of argument x Return type: float
Note: by default sqrt(self.bilinearform(x,x)
is returned.
-
setDerivativeIncrementLength
(inc=1.4901161193847656e-05)¶ Sets the relative length of the increment used to approximate the derivative of the defect. The increment is inc*norm(x)/norm(v)*v in the direction of v with x as a starting point.
Parameters: inc (positive float
) – relative increment length
-
-
class
esys.escript.pdetools.
HomogeneousSaddlePointProblem
(**kwargs)¶ Bases:
object
This class provides a framework for solving linear homogeneous saddle point problems of the form:
*Av+B^*p=f* *Bv =0*
for the unknowns v and p and given operators A and B and given right hand side f. B^* is the adjoint operator of B. A may depend weakly on v and p.
-
__init__
(**kwargs)¶ initializes the saddle point problem
-
Bv
(v, tol)¶ Returns Bv with accuracy
tol
(overwrite)Return type: equal to the type of p Note: boundary conditions on p should be zero!
-
getAbsoluteTolerance
()¶ Returns the absolute tolerance.
Returns: absolute tolerance Return type: float
-
getDV
(p, v, tol)¶ return a correction to the value for a given v and a given p with accuracy
tol
(overwrite)Parameters: - p – pressure
- v – pressure
Returns: dv given as dv= A^{-1} (f-A v-B^*p)
Note: Only A may depend on v and p
-
getTolerance
()¶ Returns the relative tolerance.
Returns: relative tolerance Return type: float
-
inner_p
(p0, p1)¶ Returns inner product of p0 and p1 (overwrite).
Parameters: - p0 – a pressure
- p1 – a pressure
Returns: inner product of p0 and p1
Return type: float
-
inner_pBv
(p, Bv)¶ Returns inner product of element p and Bv (overwrite).
Parameters: - p – a pressure increment
- Bv – a residual
Returns: inner product of element p and Bv
Return type: float
Note: used if PCG is applied.
-
norm_Bv
(Bv)¶ Returns the norm of Bv (overwrite).
Return type: equal to the type of p Note: boundary conditions on p should be zero!
-
norm_p
(p)¶ calculates the norm of
p
Parameters: p – a pressure Returns: the norm of p
using the inner product for pressureReturn type: float
-
norm_v
(v)¶ Returns the norm of v (overwrite).
Parameters: v – a velovity Returns: norm of v Return type: non-negative float
-
resetControlParameters
(K_p=1.0, K_v=1.0, rtol_max=0.01, rtol_min=1e-07, chi_max=0.5, reduction_factor=0.3, theta=0.1)¶ sets a control parameter
Parameters: - K_p (
float
) – initial value for constant to adjust pressure tolerance - K_v (
float
) – initial value for constant to adjust velocity tolerance - rtol_max (
float
) – maximuim relative tolerance used to calculate presssure and velocity increment. - chi_max (
float
) – maximum tolerable converegence rate. - reduction_factor (
float
) – reduction factor for adjustment factors.
- K_p (
-
setAbsoluteTolerance
(tolerance=0.0)¶ Sets the absolute tolerance.
Parameters: tolerance (non-negative float
) – tolerance to be used
-
setControlParameter
(K_p=None, K_v=None, rtol_max=None, rtol_min=None, chi_max=None, reduction_factor=None, theta=None)¶ sets a control parameter
Parameters: - K_p (
float
) – initial value for constant to adjust pressure tolerance - K_v (
float
) – initial value for constant to adjust velocity tolerance - rtol_max (
float
) – maximuim relative tolerance used to calculate presssure and velocity increment. - chi_max (
float
) – maximum tolerable converegence rate.
- K_p (
-
setTolerance
(tolerance=0.0001)¶ Sets the relative tolerance for (v,p).
Parameters: tolerance (non-negative float
) – tolerance to be used
-
solve
(v, p, max_iter=20, verbose=False, usePCG=True, iter_restart=20, max_correction_steps=10)¶ Solves the saddle point problem using initial guesses v and p.
Parameters: - v (
Data
) – initial guess for velocity - p (
Data
) – initial guess for pressure - usePCG (
bool
) – indicates the usage of the PCG rather than GMRES scheme. - max_iter (
int
) – maximum number of iteration steps per correction attempt - verbose (
bool
) – if True, shows information on the progress of the saddlepoint problem solver. - iter_restart (
int
) – restart the iteration afteriter_restart
steps (only used if useUzaw=False)
Return type: tuple
ofData
objectsNote: typically this method is overwritten by a subclass. It provides a wrapper for the
_solve
method.- v (
-
solve_AinvBt
(dp, tol)¶ Solves A dv=B^*dp with accuracy
tol
Parameters: dp – a pressure increment Returns: the solution of A dv=B^*dp Note: boundary conditions on dv should be zero! A is the operator used in getDV
and must not be altered.
-
solve_prec
(Bv, tol)¶ Provides a preconditioner for (BA^{-1}B^ * ) applied to Bv with accuracy
tol
Return type: equal to the type of p Note: boundary conditions on p should be zero!
-
-
class
esys.escript.pdetools.
IndefinitePreconditioner
¶ Bases:
esys.escriptcore.pdetools.SolverSchemeException
Exception thrown if the preconditioner is not positive definite.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
IterationBreakDown
¶ Bases:
esys.escriptcore.pdetools.SolverSchemeException
Exception thrown if the iteration scheme encountered an incurable breakdown.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
Locator
(where, x=array([0., 0., 0.]))¶ Bases:
object
Locator provides access to the values of data objects at a given spatial coordinate x.
In fact, a Locator object finds the sample in the set of samples of a given function space or domain which is closest to the given point x.
-
__init__
(where, x=array([0., 0., 0.]))¶ Initializes a Locator to access values in Data objects on the Doamin or FunctionSpace for the sample point which is closest to the given point x.
Parameters: - where (
escript.FunctionSpace
) – function space - x (
numpy.ndarray
orlist
ofnumpy.ndarray
) – location(s) of the Locator
- where (
-
getFunctionSpace
()¶ Returns the function space of the Locator.
-
getId
(item=None)¶ Returns the identifier of the location.
-
getValue
(data)¶ Returns the value of
data
at the Locator ifdata
is aData
object otherwise the object is returned.
-
getX
()¶ Returns the exact coordinates of the Locator.
-
setValue
(data, v)¶ Sets the value of the
data
at the Locator.
-
-
class
esys.escript.pdetools.
MaxIterReached
¶ Bases:
esys.escriptcore.pdetools.SolverSchemeException
Exception thrown if the maximum number of iteration steps is reached.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
NegativeNorm
¶ Bases:
esys.escriptcore.pdetools.SolverSchemeException
Exception thrown if a norm calculation returns a negative norm.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
NoPDE
(domain, D=None, Y=None, q=None, r=None)¶ Bases:
object
Solves the following problem for u:
kronecker[i,j]*D[j]*u[j]=Y[i]
with constraint
u[j]=r[j] where q[j]>0
where D, Y, r and q are given functions of rank 1.
In the case of scalars this takes the form
D*u=Y
with constraint
u=r where q>0
where D, Y, r and q are given scalar functions.
The constraint overwrites any other condition.
Note: This class is similar to the linearPDEs.LinearPDE
class with A=B=C=X=0 but has the intention that all input parameters are given inSolution
orReducedSolution
.-
__init__
(domain, D=None, Y=None, q=None, r=None)¶ Initializes the problem.
Parameters: - domain (
Domain
) – domain of the PDE - D (
float
,int
,numpy.ndarray
,Data
) – coefficient of the solution - Y (
float
,int
,numpy.ndarray
,Data
) – right hand side - q (
float
,int
,numpy.ndarray
,Data
) – location of constraints - r (
float
,int
,numpy.ndarray
,Data
) – value of solution at locations of constraints
- domain (
-
getSolution
()¶ Returns the solution.
Returns: the solution of the problem Return type: Data
object in theFunctionSpace
Solution
orReducedSolution
-
setReducedOff
()¶ Sets the
FunctionSpace
of the solution toSolution
.
-
setReducedOn
()¶ Sets the
FunctionSpace
of the solution toReducedSolution
.
-
setValue
(D=None, Y=None, q=None, r=None)¶ Assigns values to the parameters.
Parameters: - D (
float
,int
,numpy.ndarray
,Data
) – coefficient of the solution - Y (
float
,int
,numpy.ndarray
,Data
) – right hand side - q (
float
,int
,numpy.ndarray
,Data
) – location of constraints - r (
float
,int
,numpy.ndarray
,Data
) – value of solution at locations of constraints
- D (
-
-
class
esys.escript.pdetools.
Projector
(domain, reduce=True, fast=True)¶ Bases:
object
The Projector is a factory which projects a discontinuous function onto a continuous function on a given domain.
-
__init__
(domain, reduce=True, fast=True)¶ Creates a continuous function space projector for a domain.
Parameters: - domain – Domain of the projection.
- reduce – Flag to reduce projection order
- fast – Flag to use a fast method based on matrix lumping
-
getSolverOptions
()¶ Returns the solver options of the PDE solver.
Return type: linearPDEs.SolverOptions
-
getValue
(input_data)¶ Projects
input_data
onto a continuous function.Parameters: input_data – the data to be projected
-
-
class
esys.escript.pdetools.
SolverSchemeException
¶ Bases:
Exception
This is a generic exception thrown by solvers.
-
__init__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
args
¶
-
with_traceback
()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
esys.escript.pdetools.
TimeIntegrationManager
(*inital_values, **kwargs)¶ Bases:
object
A simple mechanism to manage time dependend values.
Typical usage is:
dt=0.1 # time increment tm=TimeIntegrationManager(inital_value,p=1) while t<1. v_guess=tm.extrapolate(dt) # extrapolate to t+dt v=... tm.checkin(dt,v) t+=dt
Note: currently only p=1 is supported. -
__init__
(*inital_values, **kwargs)¶ Sets up the value manager where
inital_values
are the initial values and p is the order used for extrapolation.
-
checkin
(dt, *values)¶ Adds new values to the manager. The p+1 last values are lost.
-
extrapolate
(dt)¶ Extrapolates to
dt
forward in time.
-
getTime
()¶
-
getValue
()¶
-
Functions¶
-
esys.escript.pdetools.
BoundaryValuesFromVolumeTag
(domain, **values)¶ Creates a mask on the Solution(domain) function space where the value is one for samples that touch regions tagged by tags.
Usage: m=BoundaryValuesFromVolumeTag(domain, ham=1, f=6)
Parameters: domain ( escript.Domain
) – domain to be usedReturns: a mask which marks samples that are touching the boundary tagged by any of the given tags Return type: escript.Data
of rank 0
-
esys.escript.pdetools.
GMRES
(r, Aprod, x, bilinearform, atol=0, rtol=1e-08, iter_max=100, iter_restart=20, verbose=False, P_R=None)¶ Solver for
Ax=b
with a general operator A (more details required!). It uses the generalized minimum residual method (GMRES).
The iteration is terminated if
|r| <= atol+rtol*|r0|
where r0 is the initial residual and |.| is the energy norm. In fact
|r| = sqrt( bilinearform(r,r))
Parameters: - r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
r
is altered. - x (same like
r
) – an initial guess for the solution - Aprod (function
Aprod(x)
wherex
is of the same object like argumentx
. The returned object needs to be of the same type like argumentr
.) – returns the value Ax - bilinearform (function
bilinearform(x,r)
wherex
is of the same type like argumentx
andr
. The returned value is afloat
.) – inner product<x,r>
- atol (non-negative
float
) – absolute tolerance - rtol (non-negative
float
) – relative tolerance - iter_max (
int
) – maximum number of iteration steps - iter_restart (
int
) – in order to save memory the orthogonalization process is terminated afteriter_restart
steps and the iteration is restarted.
Returns: the solution approximation and the corresponding residual
Return type: tuple
Warning: r
andx
are altered.- r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
-
esys.escript.pdetools.
MINRES
(r, Aprod, x, Msolve, bilinearform, atol=0, rtol=1e-08, iter_max=100)¶ Solver for
Ax=b
with a symmetric and positive definite operator A (more details required!). It uses the minimum residual method (MINRES) with preconditioner M providing an approximation of A.
The iteration is terminated if
|r| <= atol+rtol*|r0|
where r0 is the initial residual and |.| is the energy norm. In fact
|r| = sqrt( bilinearform(Msolve(r),r))
For details on the preconditioned conjugate gradient method see the book:
“Templates for the Solution of Linear Systems by R. Barrett, M. Berry, T.F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine, and H. van der Vorst”.
Parameters: - r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
r
is altered. - x (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – an initial guess for the solution
- Aprod (function
Aprod(x)
wherex
is of the same object like argumentx
. The returned object needs to be of the same type like argumentr
.) – returns the value Ax - Msolve (function
Msolve(r)
wherer
is of the same type like argumentr
. The returned object needs to be of the same type like argumentx
.) – solves Mx=r - bilinearform (function
bilinearform(x,r)
wherex
is of the same type like argumentx
andr
is. The returned value is afloat
.) – inner product<x,r>
- atol (non-negative
float
) – absolute tolerance - rtol (non-negative
float
) – relative tolerance - iter_max (
int
) – maximum number of iteration steps
Returns: the solution approximation and the corresponding residual
Return type: tuple
Warning: r
andx
are altered.- r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
-
esys.escript.pdetools.
MaskFromBoundaryTag
(domain, *tags)¶ Creates a mask on the Solution(domain) function space where the value is one for samples that touch the boundary tagged by tags.
Usage: m=MaskFromBoundaryTag(domain, “left”, “right”)
Parameters: - domain (
escript.Domain
) – domain to be used - tags (
str
) – boundary tags
Returns: a mask which marks samples that are touching the boundary tagged by any of the given tags
Return type: escript.Data
of rank 0- domain (
-
esys.escript.pdetools.
MaskFromTag
(domain, *tags)¶ Creates a mask on the Solution(domain) function space where the value is one for samples that touch regions tagged by tags.
Usage: m=MaskFromTag(domain, “ham”)
Parameters: - domain (
escript.Domain
) – domain to be used - tags (
str
) – boundary tags
Returns: a mask which marks samples that are touching the boundary tagged by any of the given tags
Return type: escript.Data
of rank 0- domain (
-
esys.escript.pdetools.
NewtonGMRES
(defect, x, iter_max=100, sub_iter_max=20, atol=0, rtol=0.0001, subtol_max=0.5, gamma=0.9, verbose=False)¶ Solves a non-linear problem F(x)=0 for unknown x using the stopping criterion:
norm(F(x) <= atol + rtol * norm(F(x0)
where x0 is the initial guess.
Parameters: - defect (
Defect
) – object defining the function F.defect.norm
defines the norm used in the stopping criterion. - x (any object type allowing basic operations such as
numpy.ndarray
,Data
) – initial guess for the solution,x
is altered. - iter_max (positive
int
) – maximum number of iteration steps - sub_iter_max (positive
int
) – maximum number of inner iteration steps - atol (positive
float
) – absolute tolerance for the solution - rtol (positive
float
) – relative tolerance for the solution - gamma (positive
float
, less than 1) – tolerance safety factor for inner iteration - subtol_max (positive
float
, less than 1) – upper bound for inner tolerance
Returns: an approximation of the solution with the desired accuracy
Return type: same type as the initial guess
- defect (
-
esys.escript.pdetools.
PCG
(r, Aprod, x, Msolve, bilinearform, atol=0, rtol=1e-08, iter_max=100, initial_guess=True, verbose=False)¶ Solver for
Ax=b
with a symmetric and positive definite operator A (more details required!). It uses the conjugate gradient method with preconditioner M providing an approximation of A.
The iteration is terminated if
|r| <= atol+rtol*|r0|
where r0 is the initial residual and |.| is the energy norm. In fact
|r| = sqrt( bilinearform(Msolve(r),r))
For details on the preconditioned conjugate gradient method see the book:
“Templates for the Solution of Linear Systems by R. Barrett, M. Berry, T.F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine, and H. van der Vorst”.
Parameters: - r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
r
is altered. - x (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – an initial guess for the solution
- Aprod (function
Aprod(x)
wherex
is of the same object like argumentx
. The returned object needs to be of the same type like argumentr
.) – returns the value Ax - Msolve (function
Msolve(r)
wherer
is of the same type like argumentr
. The returned object needs to be of the same type like argumentx
.) – solves Mx=r - bilinearform (function
bilinearform(x,r)
wherex
is of the same type like argumentx
andr
is. The returned value is afloat
.) – inner product<x,r>
- atol (non-negative
float
) – absolute tolerance - rtol (non-negative
float
) – relative tolerance - iter_max (
int
) – maximum number of iteration steps
Returns: the solution approximation and the corresponding residual
Return type: tuple
Warning: r
andx
are altered.- r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
-
esys.escript.pdetools.
TFQMR
(r, Aprod, x, bilinearform, atol=0, rtol=1e-08, iter_max=100)¶ Solver for
Ax=b
with a general operator A (more details required!). It uses the Transpose-Free Quasi-Minimal Residual method (TFQMR).
The iteration is terminated if
|r| <= atol+rtol*|r0|
where r0 is the initial residual and |.| is the energy norm. In fact
|r| = sqrt( bilinearform(r,r))
Parameters: - r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
r
is altered. - x (same like
r
) – an initial guess for the solution - Aprod (function
Aprod(x)
wherex
is of the same object like argumentx
. The returned object needs to be of the same type like argumentr
.) – returns the value Ax - bilinearform (function
bilinearform(x,r)
wherex
is of the same type like argumentx
andr
. The returned value is afloat
.) – inner product<x,r>
- atol (non-negative
float
) – absolute tolerance - rtol (non-negative
float
) – relative tolerance - iter_max (
int
) – maximum number of iteration steps
Return type: tuple
Warning: r
andx
are altered.- r (any object supporting inplace add (x+=y) and scaling (x=scalar*y)) – initial residual r=b-Ax.
-
esys.escript.pdetools.
getInfLocator
(arg)¶ Return a Locator for a point with the inf value over all arg.
-
esys.escript.pdetools.
getSupLocator
(arg)¶ Return a Locator for a point with the sup value over all arg.


§632-2 Appeals. Declaratory judgments may be reviewed as other judgments. [L 1921, c 162, §2; RL 1925, §2919; RL 1935, §4221; RL 1945, §9972; RL 1955, §228-2; HRS §632-2; am L 1972, c 89, §1(d)]


I combine my passion for user-centric design, a thorough understanding of the end-users and the experience to create a sustainable and modern code base. From responsive layout to clear navigation to function, my focus is on writing testable and performant code.
I thrive best in cross functional teams. With my open communication and constructive feedback I am a valued team member that cares about the well being and smooth functioning of the team (and consequently, the code base). A happy team = clean code base.
I have the ability to stay up-to-date on new technologies and approaches and a will to change and grow with the organisation and assignments. I work hard to make the most of every sprint with focus on details while understanding the overall picture.
A healthy work-life balance boosts my motivation and productivity.


{% extends "narrow_base.html" %} {% load staticfiles %} {% load i18n %} {% load bootstrap3 %} {% block title %} {% trans "Invite someone you know" %} {% endblock %} {% block imports %} {% endblock %} {% block body %}
{% blocktrans %} Fill out these fields below to invite someone who doesn't currently have a Masanga account. This could be either a runner or a potencial sponsor. He/she will get an email with an invitation to create an account. {% endblocktrans %}
{% endblock %}


202. The Towers of Hanoi Revisited
time limit per test: 2 sec.
memory limit per test: 65536
KB
input: standard
output: standard
You all must know the puzzle named ``The Towers of Hanoi''. The
puzzle has three pegs and N discs of different radii, initially all disks are
located on the first peg, ordered by their radii - the largest at the bottom,
the mallest at the top. In a turn you may take the topmost disc from any peg and
move it to another peg, the only rule says that you may not place the disc atop
any smaller disk. The problem is to move all disks to the last peg making the
smallest possible number of moves.
There is the legend that somewhere in
Tibet there is a monastery where monks tirelessly move disks from peg to peg
solving the puzzle for 64 discs. The legend says that when they finish, the end
of the world would come.
Since it is well known that to solve the puzzle
you need to make 2N-1 moves, a small calculation shows that the world
seems to be a quite safe place for a while.
However, recent
archeologists discoveries have shown that the things can be a bit worse. The
manuscript found in Tibet mountains says that the puzzle the monks are solving
has not 3 but M pegs. This is the problem, because when increasing the number of
pegs, the number of moves needed to move all discs from the first peg to the
last one following the rules described, decreases dramatically.
Calculate how many moves one needs to move N discs from the first peg to
the last one when the puzzle has M pegs and provide the scenario for moving the
discs.
Input
Input file contains N and M (1 ≤ N ≤ 64, 4 ≤ M ≤ 65).
Output
On the first line output L - the number of moves needed to solve
the puzzle. Next L lines must contain the moves themselves. For each move print
the line of the form
move <disc-radius> from <source-peg> to
<target-peg>
if the disc is moved to the empty peg
or
move <disc-radius> from <source-peg> to
<target-peg> atop <target-top-disc-radius>
if
the disc is moved atop some other disc.
Disc radii are integer numbers
from 1 to N, pegs are numbered from 1 to M.
Sample test(s)
Input
5 4
Output
13
move 1 from 1 to 3
move 2 from 1 to 2
move 1 from
3 to 2 atop 2
move 3 from 1 to 4
move 4 from 1 to 3
move 3 from 4 to
3 atop 4
move 5 from 1 to 4
move 3 from 3 to 1
move 4 from 3 to 4
atop 5
move 3 from 1 to 4 atop 4
move 1 from 2 to 1
move 2 from 2 to
4 atop 3
move 1 from 1 to 4 atop 2
| Author: |
Andrew Stankevich |
| Resource: |
Petrozavodsk Summer Trainings 2003 |
| Date: |
2003-08-23
|
| Server time: 2004-01-14 13:28:14 |
Online Contester Team © 2002 - 2003. All
rights
reserved. | | |


| Module | CommonFunctions |
| In: |
lib/common_functions.rb
|
A helper module that aggregates functions that are not part of Neptune‘s core functionality. Specifically, this module contains methods to scp files to other machines and the ability to read YAML files, which are often needed to determine which machine should be used for computation or to copy over code and input files.
Given the AppScale keyname, reads the associated YAML file and returns the contents of the given tag. The required flag (default value is true) indicates whether a value must exist for this tag: if set to true, this method aborts if the value doesn‘t exist or the YAML file is malformed. If the required flag is set to false, it returns nil in either scenario instead.
Returns the secret key needed for communication with AppScale‘s Shadow node. This method is a nice frontend to the get_from_yaml function, as the secret is stored in a YAML file.
Performs the actual remote copying of files: given the IP address and other information from scp_to_shadow, attempts to use scp to copy the file over. Aborts if the scp fails, which can occur if the network is down, if a bad keyname is provided, or if the wrong IP is given. If the user specifies that the file to copy is actually a directory, we append the -r flag to scp as well.


Ronaldo Hailed After Hat-Trick Performance
by Kurt BuckerfieldFollowing his incredible hat-trick in Portugal's 6-0 win over Lithuania in their 2020 European Championship qualifier on Thursday night, superstar Cristiano Ronaldo has earned some praise from those around him.
Click through the gallery above to see some images of Ronaldo in action on Thursday!
A lot was said about Ronaldo's form for Juventus going into A Selecao's clash with Lithuania after he had been substituted by Maurizio Sarri in consecutive matches.
The Italian boss suggested on both occasions that the 34-year-old was not at his physical best, but Portugal boss Fernando Santos insisted he had no doubts his star man was perfectly fine.
"He's fine. I had no doubt about that, as I said before the match," he told RTP.
"Other people did, but I didn't have any doubts."
Choose the left midfielder for SA's Real Madrid Dream Team & win a replica shirt!
Ronaldo's international teammate Bruno Fernandes also hailed his attitude and spirit, before saying scoring a hat-trick is just standard procedure for the five-time Ballon d'Or winner.
"What we have is a very motivated Cristiano, who always gives his best," he said.
"He scored three times, which is normal for him."
10 Players Who Left Real Madrid Because Of Ronaldo
Ronaldo has now scored 98 goals for his national team, and will look to bring up a century of strikes when Portugal play against Luxembourg this coming Sunday.


Womanifesto explores social media for 2019 NWD campaign
by Emmanuel OkogbaWomanifesto
Organisers of National Women’s Dialogue have unveiled the hashtag for the 2019 edition of the Womanifesto event.
According to the organisers, the use of social media will expand the publicity reach.
READ ALSO: I don’t know who raped me, but will meet him again — Ibru
“The chosen hashtag is #TheNigeriaWomenWant,” the Communication Chair, NWD 2019, Mary Ikoku, said in a statement.
The statement read, “We are launching the hashtag to push home our demands.
“The National Women’s Dialogue 2019 is themed ‘The Nigeria We Want’, and we have adopted this hashtag to create awareness for the upcoming event.
“The hashtag, #TheNigeriaWomenWant, is meant to announce the upcoming three-day dialogue, scheduled to hold at the National Centre for Women Development (NCWD), Abuja from November 27 to 29.”
It added, “The conference, tagged WOMANIFESTO ‘19, is to bring women together to dialogue and come up with a charter of demand on issues affecting women and children in the country.
“Delegates will be drawn from women groups, collectives, civil societies, entrepreneurs, professionals, social media influencers and women within the labour workforce among others.”


A collection of related or interconnected pages or documents written in HTML typically served from a single web domain.
Instead, think content out!
We are talking about self contained concepts or "things"
Can be referred to via an URI
In Drupal speak: these are entities or nodes
An 'overview' page describing (a) collection(s) of 'things'
vs.
A 'detail' page describing a single 'thing'
A webpage consists of a set of components
Recurring components
Site title (logo), doormat, primary navigation,...
Specific components
Content specific: fields (title, body, timestamp,...)
Context specific: related news, see also, etc.
One off's: call to actions (typically: homepage)
The arrangement of the different components in a specific structure in order to convey meaning in a sensical way.
The structure of a layout is determined by:
You should have an idea of what you are building, before you start building it.
The art and science of organizing and labelling websites, intranets, online communities and software to support usability and findability
Not a valable solution for complex layout systems
Again, limited flexibility
Override the default HTML output in your own custom (sub)theme.
If you want to add/change CSS classes or alter the layout or clean out the HTML output
Manage contextual conditions/reactions for portions of your site
Most common case: blocks and their ilk
Advantages
Drawbacks
Manage the display of all your entities
Extends Field UI
Do away with complex template systems
Advantages
Drawbacks
Manage the layout of the content region
Or the entire page (Panels Everywhere)
Advantages
Drawbacks
When should I use...
Recurring regions such as header and footer
Low complexity architecture
Control the HTML rendering of entities
Micro level
To control the HTML rendering of the content region
... or the entire page even.
Macro level
(Courtesy Campbell Vertesi)


Main Heading
Content specific to this page goes here.
Our premium, Canadian 100% natural spring water source is located on a protected site in the Oak Ridges Moraine approximately 115 km northeast of Toronto. A never-ending supply of naturally-filtered, pure Canadian spring water Under the Oak Ridges Moraine Conservation Act, our source and the surrounding area are protected, ensuring its ongoing ecological and hydrological integrity. This means our pure, natural spring water will continue to be the highest quality.
At a pH of 7.35 ppm, our water is perfectly balanced.
The pure, clean taste of our water comes from the naturally-occurring combination of minerals. However, minerals do not just add to its taste, they have a huge impact on one’s health and also the water’s pH level.
Our spring water originates just a few hundred feet from the bottling facility.
To ensure consistent high quality, we perform daily in-house testing of our well and throughout the bottling and packing process.
Outside lab tests are also performed on a monthly basis (E. coli, HPC, Total Coliform).
The surrounding environment is also regularly monitored to ensure the ongoing purity of our water supply.
With respect to regulations, in Canada bottled water is regulated under the Food and Drugs Act and Regulations as a food product.
Content specific to this page goes here.


You have added act-aaa
to your application project dependency, however you haven't created the bridge
class to configure act-aaa
. Please create a class extends act.aaa.ActAAAService.Base
to
allow act-aaa
work through. Below is a sample class you can follow:
package com.mycomp.myproj; import act.aaa.ActAAAService; import act.crypto.AppCrypt; import javax.inject.Inject; public class MyAppSecurity extends ActAAAService.Base<User> { @Inject private AppCrypto crypto; @Override protected boolean verifyPassword(User user, char[] password) { return crypto.verifyPassword(password, user.passwordHash()); } }


Page Navigation is simple with a maenu such as this, where the user can either use the mouse or the keyboard.
The page top navigation can easily be traversed on this nav, by the use of the keyboard only. In this case simply hitting the tab key will take the user to each tab stop.
The page not only being accessible by the keyboard it is also accessible by the use of the mouse, in this case we have achieved device independence.


--- layout: post title: m6 musique date: '2014-08-28T07:30:29+02:00' categories: - Storyboards picture_url: https://film-Storyboards.tumblr.com/post/95995454857/m6-musique ---