| 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 | * XYLineAnnotation.java | |
| 29 | * --------------------- | |
| 30 | * (C) Copyright 2003-2009, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): Peter Kolb (see patch 2809117); | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 02-Apr-2003 : Version 1 (DG); | |
| 38 | * 19-Aug-2003 : Added equals method, implemented Cloneable, and applied | |
| 39 | * serialization fixes (DG); | |
| 40 | * 21-Jan-2004 : Update for renamed method in ValueAxis (DG); | |
| 41 | * 14-Apr-2004 : Fixed draw() method to handle plot orientation correctly (DG); | |
| 42 | * 29-Sep-2004 : Added support for tool tips and URLS, now extends | |
| 43 | * AbstractXYAnnotation (DG); | |
| 44 | * 04-Oct-2004 : Renamed ShapeUtils --> ShapeUtilities (DG); | |
| 45 | * 08-Jun-2005 : Fixed equals() method to handle GradientPaint() (DG); | |
| 46 | * 20-Jun-2007 : Removed JCommon dependencies (DG); | |
| 47 | * 05-Nov-2008 : Added workaround for JRE bug 6574155, see JFreeChart bug | |
| 48 | * 2221495 (DG); | |
| 49 | * | |
| 50 | */ | |
| 51 | ||
| 52 | package org.jfree.chart.annotations; | |
| 53 | ||
| 54 | import java.awt.BasicStroke; | |
| 55 | import java.awt.Color; | |
| 56 | import java.awt.Graphics2D; | |
| 57 | import java.awt.Paint; | |
| 58 | import java.awt.Stroke; | |
| 59 | import java.awt.geom.Line2D; | |
| 60 | import java.awt.geom.Rectangle2D; | |
| 61 | import java.io.IOException; | |
| 62 | import java.io.ObjectInputStream; | |
| 63 | import java.io.ObjectOutputStream; | |
| 64 | import java.io.Serializable; | |
| 65 | ||
| 66 | import org.jfree.chart.axis.ValueAxis; | |
| 67 | import org.jfree.chart.plot.Plot; | |
| 68 | import org.jfree.chart.plot.PlotOrientation; | |
| 69 | import org.jfree.chart.plot.PlotRenderingInfo; | |
| 70 | import org.jfree.chart.plot.XYPlot; | |
| 71 | import org.jfree.chart.util.ObjectUtilities; | |
| 72 | import org.jfree.chart.util.PaintUtilities; | |
| 73 | import org.jfree.chart.util.PublicCloneable; | |
| 74 | import org.jfree.chart.util.RectangleEdge; | |
| 75 | import org.jfree.chart.util.SerialUtilities; | |
| 76 | import org.jfree.chart.util.ShapeUtilities; | |
| 77 | ||
| 78 | /** | |
| 79 | * A simple line annotation that can be placed on an {@link XYPlot}. | |
| 80 | */ | |
| 81 | public class XYLineAnnotation extends AbstractXYAnnotation | |
| 82 | implements Cloneable, PublicCloneable, Serializable { | |
| 83 | ||
| 84 | /** For serialization. */ | |
| 85 | private static final long serialVersionUID = -80535465244091334L; | |
| 86 | ||
| 87 | /** The x-coordinate. */ | |
| 88 | private double x1; | |
| 89 | ||
| 90 | /** The y-coordinate. */ | |
| 91 | private double y1; | |
| 92 | ||
| 93 | /** The x-coordinate. */ | |
| 94 | private double x2; | |
| 95 | ||
| 96 | /** The y-coordinate. */ | |
| 97 | private double y2; | |
| 98 | ||
| 99 | /** The line stroke. */ | |
| 100 | private transient Stroke stroke; | |
| 101 | ||
| 102 | /** The line color. */ | |
| 103 | private transient Paint paint; | |
| 104 | ||
| 105 | /** | |
| 106 | * Creates a new annotation that draws a line from (x1, y1) to (x2, y2) | |
| 107 | * where the coordinates are measured in data space (that is, against the | |
| 108 | * plot's axes). | |
| 109 | * | |
| 110 | * @param x1 the x-coordinate for the start of the line. | |
| 111 | * @param y1 the y-coordinate for the start of the line. | |
| 112 | * @param x2 the x-coordinate for the end of the line. | |
| 113 | * @param y2 the y-coordinate for the end of the line. | |
| 114 | */ | |
| 115 | public XYLineAnnotation(double x1, double y1, double x2, double y2) { | |
| 116 | this(x1, y1, x2, y2, new BasicStroke(1.0f), Color.black); | |
| 117 | } | |
| 118 | ||
| 119 | /** | |
| 120 | * Creates a new annotation that draws a line from (x1, y1) to (x2, y2) | |
| 121 | * where the coordinates are measured in data space (that is, against the | |
| 122 | * plot's axes). | |
| 123 | * | |
| 124 | * @param x1 the x-coordinate for the start of the line. | |
| 125 | * @param y1 the y-coordinate for the start of the line. | |
| 126 | * @param x2 the x-coordinate for the end of the line. | |
| 127 | * @param y2 the y-coordinate for the end of the line. | |
| 128 | * @param stroke the line stroke (null not permitted). | |
| 129 | * @param paint the line color (null not permitted). | |
| 130 | */ | |
| 131 | public XYLineAnnotation(double x1, double y1, double x2, double y2, | |
| 132 | Stroke stroke, Paint paint) { | |
| 133 | ||
| 134 | super(); | |
| 135 |
1
1. |
if (stroke == null) { |
| 136 | throw new IllegalArgumentException("Null 'stroke' argument."); | |
| 137 | } | |
| 138 |
1
1. |
if (paint == null) { |
| 139 | throw new IllegalArgumentException("Null 'paint' argument."); | |
| 140 | } | |
| 141 | this.x1 = x1; | |
| 142 | this.y1 = y1; | |
| 143 | this.x2 = x2; | |
| 144 | this.y2 = y2; | |
| 145 | this.stroke = stroke; | |
| 146 | this.paint = paint; | |
| 147 | ||
| 148 | } | |
| 149 | ||
| 150 | /** | |
| 151 | * Draws the annotation. This method is called by the {@link XYPlot} | |
| 152 | * class, you won't normally need to call it yourself. | |
| 153 | * | |
| 154 | * @param g2 the graphics device. | |
| 155 | * @param plot the plot. | |
| 156 | * @param dataArea the data area. | |
| 157 | * @param domainAxis the domain axis. | |
| 158 | * @param rangeAxis the range axis. | |
| 159 | * @param rendererIndex the renderer index. | |
| 160 | * @param info if supplied, this info object will be populated with | |
| 161 | * entity information. | |
| 162 | */ | |
| 163 | public void draw(Graphics2D g2, XYPlot plot, Rectangle2D dataArea, | |
| 164 | ValueAxis domainAxis, ValueAxis rangeAxis, | |
| 165 | int rendererIndex, | |
| 166 | PlotRenderingInfo info) { | |
| 167 | ||
| 168 | PlotOrientation orientation = plot.getOrientation(); | |
| 169 | RectangleEdge domainEdge = Plot.resolveDomainAxisLocation( | |
| 170 | plot.getDomainAxisLocation(), orientation); | |
| 171 | RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation( | |
| 172 | plot.getRangeAxisLocation(), orientation); | |
| 173 | float j2DX1 = 0.0f; | |
| 174 | float j2DX2 = 0.0f; | |
| 175 | float j2DY1 = 0.0f; | |
| 176 | float j2DY2 = 0.0f; | |
| 177 |
1
1. draw : negated conditional → NO_COVERAGE |
if (orientation == PlotOrientation.VERTICAL) { |
| 178 | j2DX1 = (float) domainAxis.valueToJava2D(this.x1, dataArea, | |
| 179 | domainEdge); | |
| 180 | j2DY1 = (float) rangeAxis.valueToJava2D(this.y1, dataArea, | |
| 181 | rangeEdge); | |
| 182 | j2DX2 = (float) domainAxis.valueToJava2D(this.x2, dataArea, | |
| 183 | domainEdge); | |
| 184 | j2DY2 = (float) rangeAxis.valueToJava2D(this.y2, dataArea, | |
| 185 | rangeEdge); | |
| 186 | } | |
| 187 |
1
1. draw : negated conditional → NO_COVERAGE |
else if (orientation == PlotOrientation.HORIZONTAL) { |
| 188 | j2DY1 = (float) domainAxis.valueToJava2D(this.x1, dataArea, | |
| 189 | domainEdge); | |
| 190 | j2DX1 = (float) rangeAxis.valueToJava2D(this.y1, dataArea, | |
| 191 | rangeEdge); | |
| 192 | j2DY2 = (float) domainAxis.valueToJava2D(this.x2, dataArea, | |
| 193 | domainEdge); | |
| 194 | j2DX2 = (float) rangeAxis.valueToJava2D(this.y2, dataArea, | |
| 195 | rangeEdge); | |
| 196 | } | |
| 197 |
1
1. draw : removed call to java/awt/Graphics2D::setPaint → NO_COVERAGE |
g2.setPaint(this.paint); |
| 198 |
1
1. draw : removed call to java/awt/Graphics2D::setStroke → NO_COVERAGE |
g2.setStroke(this.stroke); |
| 199 | Line2D line = new Line2D.Float(j2DX1, j2DY1, j2DX2, j2DY2); | |
| 200 | // line is clipped to avoid JRE bug 6574155, for more info | |
| 201 | // see JFreeChart bug 2221495 | |
| 202 | boolean visible = ShapeUtilities.clipLine(line, dataArea); | |
| 203 |
1
1. draw : negated conditional → NO_COVERAGE |
if (visible) { |
| 204 |
1
1. draw : removed call to java/awt/Graphics2D::draw → NO_COVERAGE |
g2.draw(line); |
| 205 | } | |
| 206 | ||
| 207 | String toolTip = getToolTipText(); | |
| 208 | String url = getURL(); | |
| 209 |
2
1. draw : negated conditional → NO_COVERAGE 2. draw : negated conditional → NO_COVERAGE |
if (toolTip != null || url != null) { |
| 210 |
1
1. draw : removed call to org/jfree/chart/annotations/XYLineAnnotation::addEntity → NO_COVERAGE |
addEntity(info, ShapeUtilities.createLineRegion(line, 1.0f), |
| 211 | rendererIndex, toolTip, url); | |
| 212 | } | |
| 213 | } | |
| 214 | ||
| 215 | /** | |
| 216 | * Tests this object for equality with an arbitrary object. | |
| 217 | * | |
| 218 | * @param obj the object to test against (null permitted). | |
| 219 | * | |
| 220 | * @return true or false. | |
| 221 | */ | |
| 222 | public boolean equals(Object obj) { | |
| 223 |
1
1. equals : negated conditional → KILLED |
if (obj == this) { |
| 224 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 225 | } | |
| 226 |
1
1. equals : negated conditional → KILLED |
if (!super.equals(obj)) { |
| 227 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 228 | } | |
| 229 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof XYLineAnnotation)) { |
| 230 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 231 | } | |
| 232 | XYLineAnnotation that = (XYLineAnnotation) obj; | |
| 233 |
1
1. equals : negated conditional → KILLED |
if (this.x1 != that.x1) { |
| 234 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 235 | } | |
| 236 |
1
1. equals : negated conditional → KILLED |
if (this.y1 != that.y1) { |
| 237 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 238 | } | |
| 239 |
1
1. equals : negated conditional → KILLED |
if (this.x2 != that.x2) { |
| 240 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 241 | } | |
| 242 |
1
1. equals : negated conditional → KILLED |
if (this.y2 != that.y2) { |
| 243 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 244 | } | |
| 245 |
1
1. equals : negated conditional → KILLED |
if (!PaintUtilities.equal(this.paint, that.paint)) { |
| 246 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 247 | } | |
| 248 |
1
1. equals : negated conditional → KILLED |
if (!ObjectUtilities.equal(this.stroke, that.stroke)) { |
| 249 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 250 | } | |
| 251 | // seems to be the same... | |
| 252 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 253 | } | |
| 254 | ||
| 255 | /** | |
| 256 | * Returns a hash code. | |
| 257 | * | |
| 258 | * @return A hash code. | |
| 259 | */ | |
| 260 | public int hashCode() { | |
| 261 | int result; | |
| 262 | long temp; | |
| 263 | temp = Double.doubleToLongBits(this.x1); | |
| 264 |
2
1. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 2. hashCode : Replaced XOR with AND → SURVIVED |
result = (int) (temp ^ (temp >>> 32)); |
| 265 | temp = Double.doubleToLongBits(this.x2); | |
| 266 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 29 * result + (int) (temp ^ (temp >>> 32)); |
| 267 | temp = Double.doubleToLongBits(this.y1); | |
| 268 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 29 * result + (int) (temp ^ (temp >>> 32)); |
| 269 | temp = Double.doubleToLongBits(this.y2); | |
| 270 |
4
1. hashCode : Replaced integer multiplication with division → SURVIVED 2. hashCode : Replaced Unsigned Shift Right with Shift Left → SURVIVED 3. hashCode : Replaced XOR with AND → SURVIVED 4. hashCode : Replaced integer addition with subtraction → SURVIVED |
result = 29 * result + (int) (temp ^ (temp >>> 32)); |
| 271 |
1
1. hashCode : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return result; |
| 272 | } | |
| 273 | ||
| 274 | /** | |
| 275 | * Returns a clone of the annotation. | |
| 276 | * | |
| 277 | * @return A clone. | |
| 278 | * | |
| 279 | * @throws CloneNotSupportedException if the annotation can't be cloned. | |
| 280 | */ | |
| 281 | public Object clone() throws CloneNotSupportedException { | |
| 282 |
1
1. clone : mutated return of Object value for org/jfree/chart/annotations/XYLineAnnotation::clone to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return super.clone(); |
| 283 | } | |
| 284 | ||
| 285 | /** | |
| 286 | * Provides serialization support. | |
| 287 | * | |
| 288 | * @param stream the output stream. | |
| 289 | * | |
| 290 | * @throws IOException if there is an I/O error. | |
| 291 | */ | |
| 292 | private void writeObject(ObjectOutputStream stream) throws IOException { | |
| 293 |
1
1. writeObject : removed call to java/io/ObjectOutputStream::defaultWriteObject → KILLED |
stream.defaultWriteObject(); |
| 294 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writePaint → KILLED |
SerialUtilities.writePaint(this.paint, stream); |
| 295 |
1
1. writeObject : removed call to org/jfree/chart/util/SerialUtilities::writeStroke → KILLED |
SerialUtilities.writeStroke(this.stroke, stream); |
| 296 | } | |
| 297 | ||
| 298 | /** | |
| 299 | * Provides serialization support. | |
| 300 | * | |
| 301 | * @param stream the input stream. | |
| 302 | * | |
| 303 | * @throws IOException if there is an I/O error. | |
| 304 | * @throws ClassNotFoundException if there is a classpath problem. | |
| 305 | */ | |
| 306 | private void readObject(ObjectInputStream stream) | |
| 307 | throws IOException, ClassNotFoundException { | |
| 308 |
1
1. readObject : removed call to java/io/ObjectInputStream::defaultReadObject → KILLED |
stream.defaultReadObject(); |
| 309 | this.paint = SerialUtilities.readPaint(stream); | |
| 310 | this.stroke = SerialUtilities.readStroke(stream); | |
| 311 | } | |
| 312 | ||
| 313 | } | |
Mutations | ||
| 135 |
1.1 |
|
| 138 |
1.1 |
|
| 177 |
1.1 |
|
| 187 |
1.1 |
|
| 197 |
1.1 |
|
| 198 |
1.1 |
|
| 203 |
1.1 |
|
| 204 |
1.1 |
|
| 209 |
1.1 2.2 |
|
| 210 |
1.1 |
|
| 223 |
1.1 |
|
| 224 |
1.1 |
|
| 226 |
1.1 |
|
| 227 |
1.1 |
|
| 229 |
1.1 |
|
| 230 |
1.1 |
|
| 233 |
1.1 |
|
| 234 |
1.1 |
|
| 236 |
1.1 |
|
| 237 |
1.1 |
|
| 239 |
1.1 |
|
| 240 |
1.1 |
|
| 242 |
1.1 |
|
| 243 |
1.1 |
|
| 245 |
1.1 |
|
| 246 |
1.1 |
|
| 248 |
1.1 |
|
| 249 |
1.1 |
|
| 252 |
1.1 |
|
| 264 |
1.1 2.2 |
|
| 266 |
1.1 2.2 3.3 4.4 |
|
| 268 |
1.1 2.2 3.3 4.4 |
|
| 270 |
1.1 2.2 3.3 4.4 |
|
| 271 |
1.1 |
|
| 282 |
1.1 |
|
| 293 |
1.1 |
|
| 294 |
1.1 |
|
| 295 |
1.1 |
|
| 308 |
1.1 |


| DOSE: |
repeated |
smoked |
Cannabis |
(plant material) |
I am 20 yrs old now and started smoking pot regularly at the age of fifteen. 5 yrs ago back in my freshman yr of high school I was smoking everyday.  I was smoking with a group of my friends after I toked I new something wasnít right. Since it was a pretty big blunt, I figured I smoked too much and id just wait until the effects wore off.
I cant really remember but I donít recall the trip being that dramatic. However, later that night I wasnít coming down. I felt weird. disconnected from my body seeing fuzzyish type things in my vision and had the strangest sensation which I can only describe as a dulling of my entire body. It was like I could still feel my body but my sense of touch was all messed up. And I had this awful pressure behind my eyes. My vision and equilibrium got screwed up also. I couldnít look in the distance with out getting dizzy and being overwhelmed with this evil sickness. Iíd have to close my eyes it didnít go away after a couple of days so I went to the doc.
They gave me screened my urine and found nothing in it except weed. The weed I smoked was from my stash and I smoked it several times before with no side effects, so I donít think it was laced. Doc tells me ill be fine and it should all go away in 3 wks. So I stopped smoking for three weeks and it wasnít gone. I then convinced myself I was 'sick' with like the flu or something.  And blaze I did. I puffed and puffed. Way more than before believing I was suffering from some sort of illness.
It is only now that I have 11 months sober and some distance from the situation that I can see it may have been the weed all along causing me top feel sick.  This went on for five yrs. Iíd try and quit but after like two weeks Iíd get fed up and start feeling a lot worse and start up again. It led me to other drugs big time because I felt so helpless and scared and anxious. But I couldnít stop.
Iíve been hospitalized and put on heavy duty meds like Haldol several times.   For a yr and a half now my sleep pattern is off. I feel like I am going to die. Iíve had almost 11 months of sobriety and everyday has been torture. Basically I have been bed ridden. I swear to God.  I know this doesnít happen to people normally and I feel so so alone in my suffering. I cant keep a job or go to school. I havenít even been to school since I was a soph. in high school because I had to drop out do to all this BS. It has completely ruined me.  It never occurred to them or me it may be all the weed.
I now have what they call complex partial seizures.  I get strange sensations in my body at times that are almost unbearable.  Crohn's is a walk in the park compared to this because they arenít really feelings.  The last doctor I went to see decided to test my mitochondria. I donít want to go into depth but I have severe mitochondrial damage. I donít know if ill ever be my old self. And Iím not 100% sure if I can say the weed actually caused this per say. It may have brought to the surface some weakness I had or exacerbated something. I can say that the weed definitely has a role and it threw my body's metabolism off.
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.


---
title: "About Me"
layout: archive
excerpt: "Introduction to Karthik"
sitemap: false
permalink: /about/
author_profile: true
---
{% include base_path %}
I build custom analytical tools to understand the usage of Siri and drive data-driven decision making within the Siri organization in Apple. Before this, I completed my PhD in Computer Science at the University of Maryland in College Park, MD, USA. I am interested in data visualization, visual analytics, and HCI in general. I also received my Master of Science in electrical and computer engineering in 2014 from Purdue University in West Lafayette, IN, USA. I enjoy playing tennis, rock climbing, and sketching in my spare time.
Few years ago, I received my Bachelors degree in computer science in 2012 from Indian Institute of Technology in Hyderabad, India. At that time, I developed Android mobile applications to support rescue and recovery operations in post-disaster situations through a novel multi-hop, peer-to-peer synchronization protocol. This was part of DISANET---Information Network for Natural Disaster Mitigation and Recovery---a joint research project between India and Japan on the use of information and communications technology to mitigate the after-effects of natural disasters.
{% include paginator.html %}


{% extends 'company/base.html' %} {% block page %}
Dear {{ person_name }},
Thanks for placing an order from {{ company.name }}. It's scheduled to ship on {{ s\ hip_date|date:"F j, Y" }}.
Here are the cargos you've ordered:
Your warranty information will be included in the packaging.
{% else %}You didn't order a warranty, so you're on your own when the products inevitably stop working.
{% endif %}Sincerely,
{{ company }}


Fitness Spectator Bot
- name : {{$ctrl.resolveGoalItem.name}}
- id : {{$ctrl.resolveGoalItem.id }}
- you set yourself to workout at least {{$ctrl.resolveGoalItem.number }} time(s) per {{$ctrl.resolveGoalItem.timeFrame}}
- you started to have this goal for yourself on the {{$ctrl.resolveGoalItem.startDate }}
- you reached your goal {{ $ctrl.resolveGoalItem.completionRate }} % of the {{ $ctrl.resolveGoalItem.timeFrame }}s so far
- you are {{ $ctrl.resolveGoalItem.workoutPace }} workouts {{ $ctrl.resolveGoalItem.workoutPosition }} your goal
{{ $ctrl.resolveGoalItem.MotivationPhrase }}


I don't remember much about my interrogation, but under the new Freedom of Information Act I managed to get hold of a cassette tape. For the best part of half an hour it's a mishmash of hisses, squeaks, mufflement and what sounds like a water vole gnawing on a wet twig. One part of my interrogation has survived, however, and I have taken the trouble to transcribe it for you, so you may study it with care.
Q—When was the last time you stood in the middle of a suspension bridge in a high wind, emptying your lungs and belting out the Uruguayan national anthem at the top of your voice?
A—Last Thursday.
Q—Were you accompanied on piccolo by Von Straubenzee and on cor anglais by Tack?
A—I was.
Q—Are you aware that Tack is wanted by the police of four continents for doing weird things with the pips of citrus fruits?
A—I am not.
Q—Or that Von Straubenzee is not Von Straubenzee's real name?
A—I was not aware of that.
Q—Do not be curt.
A—I am not being curt.
Q—We shall be the judges of your curtness. What is that noise in your pocket?
A—That is my water vole gnawing a wet twig it eked from the riverbank just before I was placed under arrest.
Q—Did Constable Fang tell you you could bring a water vole to the top secret interrogation centre?
A—He didn't say one way or the other.
Q—That will be all.
I kept a close eye on the papers for the next few days, waiting for the ukases to be issued, but they never were, nor was I ever dragged back to the top secret interrogation centre. Tack vanished without trace, but a month or so later I ran into Von Straubenzee outside the Palace of Churns. I asked him if it was true that his real name was not Von Straubenzee.
“Van,” he said, “Van”.
He was of a delicate constitution, so I didn't press him further. Many years later, his sister told me that it was very important to him that his surname and his blood group were “in alignment”, as she put it. He was a great piccolo player, and so was his sister. But my singing voice is not what it was, and I no longer sing. I just stand on the windswept suspension bridge and remember, with a lump in my throat, and another water vole in my pocket, gnawing on another wet twig.


The easiest way to run PMD is to just use a build plugin in your favorite build tool like Apache Ant, Apache Maven or Gradle.
There are also many integrations for IDEs available, see Tools.
If you have your own build tool or want to integrate PMD in a different way, you can call PMD programmatically, as described here.
Dependencies
You’ll need to add the dependency to the language, you want to analyze. For Java, it will be
net.sourceforge.pmd:pmd-java
. If you use Maven, you can add a new (compile time) dependency like this:
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-java</artifactId>
<version>${pmdVersion}</version>
</dependency>
Note: You’ll need to select a specific version. This is done in the example via the property pmdVersion
.
This will transitively pull in the artifact pmd-core
which contains the API.
Command line interface
The easiest way is to call PMD with the same interface as from command line. The main class is
net.sourceforge.pmd.PMD
:
import net.sourceforge.pmd.PMD;
public class Example {
public static void main(String[] args) {
String[] pmdArgs = {
"-d", "/home/workspace/src/main/java/code",
"-R", "rulesets/java/quickstart.xml",
"-f", "xml",
"-r", "/home/workspace/pmd-report.xml"
};
PMD.main(pmdArgs);
}
}
It uses the same options as described in PMD CLI reference.
Programmatically, variant 1
This is very similar:
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.PMDConfiguration;
public class PmdExample {
public static void main(String[] args) {
PMDConfiguration configuration = new PMDConfiguration();
configuration.setInputPaths("/home/workspace/src/main/java/code");
configuration.setRuleSets("rulesets/java/quickstart.xml");
configuration.setReportFormat("xml");
configuration.setReportFile("/home/workspace/pmd-report.xml");
PMD.doPMD(configuration);
}
}
Programmatically, variant 2
This gives you more control over which files are processed, but is also more complicated. You can also provide your own listeners and renderers.
-
First we create a
PMDConfiguration
. This is currently the only way to specify a ruleset:PMDConfiguration configuration = new PMDConfiguration(); configuration.setMinimumPriority(RulePriority.MEDIUM); configuration.setRuleSets("rulesets/java/quickstart.xml");
-
In order to support type resolution, PMD needs to have access to the compiled classes and dependencies as well. This is called “auxclasspath” and is also configured here. Note: you can specify multiple class paths separated by
:
on Unix-systems or;
under Windows.configuration.prependClasspath("/home/workspace/target/classes:/home/.m2/repository/my/dependency.jar");
-
Then we need a ruleset factory. This is created using the configuration, taking the minimum priority into account:
RuleSetFactory ruleSetFactory = RulesetsFactoryUtils.createFactory(configuration);
-
PMD operates on a list of
DataSource
. You can assemble a own list ofFileDataSource
, e.g.List<DataSource> files = Arrays.asList(new FileDataSource(new File("/path/to/src/MyClass.java")));
-
For reporting, you can use a built-in renderer, e.g.
XMLRenderer
. Note, that you must manually initialize the renderer by setting a suitableWriter
and callingstart()
. After the PMD run, you need to callend()
andflush()
. Then your writer should have received all output.StringWriter rendererOutput = new StringWriter(); Renderer xmlRenderer = new XMLRenderer("UTF-8"); xmlRenderer.setWriter(rendererOutput); xmlRenderer.start();
-
Create a
RuleContext
. This is the context instance, that is available then in the rule implementations. Note: when running in multi-threaded mode (which is the default), the rule context instance is cloned for each thread.RuleContext ctx = new RuleContext();
-
Optionally register a report listener. This allows you to react immediately on found violations. You could also use such a listener to implement your own renderer. The listener must implement the interface
ThreadSafeReportListener
and can be registered viactx.getReport().addListener(...)
.ctx.getReport().addListener(new ThreadSafeReportListener() { public void ruleViolationAdded(RuleViolation ruleViolation) { } public void metricAdded(Metric metric) { }
-
Now, all the preparations are done, and PMD can be executed. This is done by calling
PMD.processFiles(...)
. This method call takes the configuration, the ruleset factory, the files to process, the rule context and the list of renderers. Provide an empty list, if you don’t want to use any renderer. Note: The auxclasspath needs to be closed explicitly. Otherwise the class or jar files may remain open and file resources are leaked.try { PMD.processFiles(configuration, ruleSetFactory, files, ctx, Collections.singletonList(renderer)); } finally { ClassLoader auxiliaryClassLoader = configuration.getClassLoader(); if (auxiliaryClassLoader instanceof ClasspathClassLoader) { ((ClasspathClassLoader) auxiliaryClassLoader).close(); } }
-
After the call, you need to finish the renderer via
end()
andflush()
. Then you can check the rendered output.renderer.end(); renderer.flush(); System.out.println("Rendered Report:"); System.out.println(rendererOutput.toString());
Here is a complete example:
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.PMDConfiguration;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RulePriority;
import net.sourceforge.pmd.RuleSetFactory;
import net.sourceforge.pmd.RuleViolation;
import net.sourceforge.pmd.RulesetsFactoryUtils;
import net.sourceforge.pmd.ThreadSafeReportListener;
import net.sourceforge.pmd.renderers.Renderer;
import net.sourceforge.pmd.renderers.XMLRenderer;
import net.sourceforge.pmd.stat.Metric;
import net.sourceforge.pmd.util.ClasspathClassLoader;
import net.sourceforge.pmd.util.datasource.DataSource;
import net.sourceforge.pmd.util.datasource.FileDataSource;
public class PmdExample2 {
public static void main(String[] args) throws IOException {
PMDConfiguration configuration = new PMDConfiguration();
configuration.setMinimumPriority(RulePriority.MEDIUM);
configuration.setRuleSets("rulesets/java/quickstart.xml");
configuration.prependClasspath("/home/workspace/target/classes");
RuleSetFactory ruleSetFactory = RulesetsFactoryUtils.createFactory(configuration);
List<DataSource> files = determineFiles("/home/workspace/src/main/java/code");
Writer rendererOutput = new StringWriter();
Renderer renderer = createRenderer(rendererOutput);
renderer.start();
RuleContext ctx = new RuleContext();
ctx.getReport().addListener(createReportListener()); // alternative way to collect violations
try {
PMD.processFiles(configuration, ruleSetFactory, files, ctx,
Collections.singletonList(renderer));
} finally {
ClassLoader auxiliaryClassLoader = configuration.getClassLoader();
if (auxiliaryClassLoader instanceof ClasspathClassLoader) {
((ClasspathClassLoader) auxiliaryClassLoader).close();
}
}
renderer.end();
renderer.flush();
System.out.println("Rendered Report:");
System.out.println(rendererOutput.toString());
}
private static ThreadSafeReportListener createReportListener() {
return new ThreadSafeReportListener() {
@Override
public void ruleViolationAdded(RuleViolation ruleViolation) {
System.out.printf("%-20s:%d %s%n", ruleViolation.getFilename(),
ruleViolation.getBeginLine(), ruleViolation.getDescription());
}
@Override
public void metricAdded(Metric metric) {
// ignored
}
};
}
private static Renderer createRenderer(Writer writer) {
XMLRenderer xml = new XMLRenderer("UTF-8");
xml.setWriter(writer);
return xml;
}
private static List<DataSource> determineFiles(String basePath) throws IOException {
Path dirPath = FileSystems.getDefault().getPath(basePath);
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
List<DataSource> files = new ArrayList<>();
Files.walkFileTree(dirPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
if (matcher.matches(path.getFileName())) {
System.out.printf("Using %s%n", path);
files.add(new FileDataSource(path.toFile()));
} else {
System.out.printf("Ignoring %s%n", path);
}
return super.visitFile(path, attrs);
}
});
System.out.printf("Analyzing %d files in %s%n", files.size(), basePath);
return files;
}
}


Movie Reviews by Edwin Jahiel
RUN LOLA RUN (LOLA RENNT) (Germany, 1998) *** ______________________________________________________________________
Written and directed by Tom Tykwer. Photography, Frank Griebe. Editing, Mathilde Bonnefoy. Set design, Alexander Manasse. Music, Tom Tykwer, Johnny Klimek, Reimhold Heil. Animation sequences, Gil Alkabetz. Cast: Franka Potente (Lola), Moritz Bleibtreu (Manni), Herbert Knaup (Lola's father), Armin Rohde (Mr. Schuster), Joachim Krol (the tramp Norbert von Au), Nina Petri (Mrs. Hansen), Heino Ferch (Ronnie). A Sony Pictures Classics release. 81 minutes. R (some merely "cartoonish" violence). ______________________________________________________________________
Overall applauded (but there are some naysayers too), Run Lola Run was probably made when its author was 32. Tom Tykwer had worked in TV, and in the realm of features had co-written a script, and wrote and directed two well-received movies. Whether or not he'll prove to have been a "Wunderkind" will depend on how much of his past output we can see (an unlikely occurrence) and what he will offer us next.
RLR is, at the very least, an interesting novelty, an unclassifiable work which is, above all, a stylistic exercise. The place is Berlin, though not identified as such and with no landmarks identifiable by strangers. Twenty-something Manni, a small-time courier for powerful mobsters is doing nicely and hopes to be promoted. But then the unexpected happens. Having delivered some goods to a buyer, and received 100,000 Deutschmarks (at this writing $ 52,356), he leaves his plastic bag in the subway when he makes a hurried exit to evade ticket inspectors. (OK, we all know that one always should keeps holding such loot with clenched fingers, but the film, being a fantasy, makes suspension of disbelief easy). If Manni returns empty-handed, the top mobster will doubtlessly kill him.
The panicked, hysterical young man phones his girlfriend Lola who asks him to wait 20 minutes until she gets there with the money -- which she does not have but somehow will get. She leaves her home, starts running, and runs and runs and runs. She's in great physical form, but see above the part about suspension of disbelief. This also applies to the ground she covers in just 20 minutes.
Manni is waiting for her outside a supermarket, which he said he would rob if Lola didn't get there on time. We keep track of this on a large clock which at the start showed 20 minutes to 12, and gradually, inexorably, suspensefully closes in on the fatal hour of 12. This is High Noon, Germanicized with a twist!
It's all over in 20 minutes. Which leaves us 60 more of film. What the director does with them is to start Scenario One all over again, work in--with meticulous and unpredictable spontaneity--small variations, increase them to larger ones. Then he backtracks and ends up with a different ending. The same goes for the 20-minute Scenario Three.
If I am cryptic it is that giving details, or even the main lines of the story (-ries) would be a killjoy. Especially since the movie's maker uses a full array of visual (and sound) tricks, from cartoons that connect to the action to split-screen, to pixillation, still shots, varying speeds, video, etc.
Lola in the running (and the stopping) process discovers a number of new things, mainly about her banker father and about herself. Again, I'll be cagey on the subject.
The Berlin of the film seems to be a sparsely populated, minor traffic city, which brought to my mind the title of the EricWolfgang Korngold opera The Dead City. I am guessing that the film must have been on Sundays or holidays. The relative emptiness of the sets makes it easy to keep track of Lola. Better yet, she can be always spotted by her distinctive, punkish hair painted flaming red-orange. The device is essentially similar to Haskell Wexler's, who made the classic Medium Cool (1969), a tour-de-force which dealt with the actual riots during the famous 1968 Democratic Convention in Chicago. Using a great deal of documentary footage, it inserted Wexler's actors in the streets and the crowds. For the audience to identify immediately Verna Bloom, Haskell had her wear a bright yellow dress that always stood out.
How much of a love story RLR may be does not get pictured by overt sentiments. There is just one small interlude of the lovers talking in bed. Otherwise, it is the extremely kinetic nature of the film plus the fact that Lola will do anything to save Manni.
Humor has always been an iffy aspect of Teutonic cinema. It does exist here however, but in indirect and/or played-down ways which do not get into the cuteness or broad effects that we find in much of American films these days. The funniest gag may be of Lola stepping out of a bank with a stash of stolen money and facing a regiment of heavily armed police. She is taken for a customer and pushed out of harm's way by solicitous lawmen. And the last line in the movie, spoken by Manni, is deliciously ironical.
RLR, beyond showing the fickle finger of fate, has no real depth, carries no significant dialogue, no realistic or symbolic weight. But it is fresh and inventive, has a good matching musical score, excellent camera work, original editing (that's what makes the movie), and a fine musical commentary. It has avoided such smart-aleck shoals as pedantry, pretentiousness, pseudo-philosophy, pseudo-populism, and so on. On the surface, it is a light-weight job that could baffle audiences partial to well-made, well-told narratives. But it's also very clever. _________________________________________________________________
Copyright © Edwin Jahiel _________________________________________________________________
Movie Reviews by Edwin Jahiel
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


FOXHOLE
Welcome to the Fox Hole!
This is a webpage developed and designed by Team FoxHound!
Choose your style!
Find friends?
Ask, mortal!


Music Submission Deadlines
Description of payment for submision
Qualifications (all categories)
Music is limited to electroacoustic fixed media, including electronic music
(tape) or multimedia music (with video), and the length should be limited
into 90 seconds.
The music submission is for “2017 WOCMAT International Phil Winsor
Electroacoustic Music Competition”, and there is no nationality and age limit.
The selected pieces will be performed in the “90(sec) x 40(pieces)” concerts. (Note: Only
the registered composers’ pieces will be performed in the concert)
Maximum 2 Pieces for each author.
Please use Cloud Storage Services to upload your piece.
Formats:
Music: wav (note: in Windows PCM format)
Multimedia: mp4 (note: in H264 CODEC)
The fee for application
Application Requirements
投稿期限
投稿費用說明
徵選資格（所有項目）


THE POPE MUST DIE A film review by Frank Maloney Copyright 1991 Frank Maloney
THE POPE MUST DIE is film by Peter Richardson, written by Peter Richardson and Pete Richens. It stars Robbie Coltrane, Beverly D'Angelo, Herbert Lom, Alex Rocco, Peter Richardson. "Rated R for irreverence."
THE POPE MUST DIE is a British film that opened to solid box-office in early June in London and is still playing in Britain, where it was among the top-grossing films last month. This is one more reason to think that the British think Catholicism is pretty funny stuff, which I can only assume is what's carrying the film. I don't think the humor is translating very well to American audiences. Instead, over here we're getting a rather bogus first-amendment controversy to fan ticket sales. Lots of papers in this country have either refused to carry Miramax's advertising or have edited the title in the ads down to "The Pope Must ...!"
The film is a satiric fantasy about a rather failed priest, Dave Albinizi, who gets elected Pope as the result of a clerical error instead of a photogenic and phony Cardinal Albini, the favorite son of corruption in the Vatican. The story derives, as did the story in GODFATHER PART III, from the Banco Ambrosiano scandal that rocked the Vatican some years back.
Robbie Coltrane plays Dave Albinizi with his usually cuddly-cute adroitness. Certainly, Coltrane is a major reason to sit through the problem-ridden production. However, his NUNS ON THE RUN was both funnier and a more effective vehicle for satirizing the Church. The supporting players provide some further richness. Alex Rocco as the Cardinal who talked like a Hollywood agent and carried a cruciform cellular phone gets in some fine business. Paul Bartel as the swishy Monsignor Vitchie is positively queenly. Herbert Lom does Vittorio Correlli, the godfather behind the machinations, to a turn until we get about two-thirds of the way through the film. He loses his edge just as the script goes ballistic and loses all its control, too. The woman who plays Correlli's daughter does a well-deserved send-up of the unfortunate Sophia Coppola. There's also worthy of mention the nun-from-hell role from Annette Crosby. Finally, director Peter Richardson provides an attractive, if not particularly dynamic, part as the only honest man in the Vatican.
One of the Seattle reviewers suggested that if Richardson had spent more time directing the movie and less time directing himself, we would have all benefited. Despite the excellent character actors, despite Beverly D'Angel's rather late appearance, and especially despite the cloying appearance of Salvatore Cascio, the too cute kid from CINEMA PARADISO (the movie I love to hate), there is no here here. No story that holds together, no vision, no conviction, no fire, certainly not the anti-rational anarchy of the Python gang. The movie is flat, flat, flat. There is no cinematography or score worth mentioning. The pacing is arrhythmic, but a certain boon for the refreshment counter.
It's true Richardson gets in a couple well placed kicks at both CNN and BBC. The Vatican exercise video with the chorus line of idiotically smiling priests ("Matthew, Mark, Luke, and John/Work that fat until it's gone") is pretty fine. However, it ain't enough.
I cannot recommend this movie, even at matinee prices. Maybe as a $1.98 rental next winter, but only if it's one of those nights.
-- Frank Richard Aloysius Jude Maloney .
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: pattern category: code name: samp usage: Represents a sample or quoted output from another program or computing system. ---
Wait until the computer display Server running... press ctrl-c to stop to start your activity.


If you are not redirected automatically, follow this
link to tests
.
If you are not redirected automatically, follow this
link to production
.


> whoami
Todd Kennedy
@whale_eat_squid
CTO, Scripto
Beard grower
>
Keeping multiple remote clients in sync requires 5 copies PER user
Developed at MCTC in Austin, TX 1989 & Xerox Parc in 1995 & Google in mid 2000s
Serialization and broadcast of specific operations performed on a shared document of equal length, with respect to the document cursor
How do we use them though?
All the characters in the retain, insert & delete operations must add up to the length of the current document the transform is being applied to
Or, in transforms:
retain(2), insertCharacters('o')
retain(2), insertCharacters('p')
The document has changed in the client and the server, but to two different states.
State A adds o to the document. State B adds p
Now we need to reconcile the two states so that the unified document is in agreement again
const [a2, b2] = transform(a, b)
...but only because they're based on the same HEAD revision
retain(3), insertCharacters('o')
Now we can apply to document state A and b2 to B and achieve singularity!
By doing that to the document (which is now Tap) and we end up with Tapo!
No, but it's a conflict-free resolution to the issue — better than git telling you that your head is detacted and you need a three-way merge!
In a more complex scenario you'll be dealing with a lot more changesets with the same parent revision that will conflict. Most OT systems resolve this with a first-to-the-server strategy...
When the server accepts a commit message it
In the simple example we discarded state b2 since the client was disinterested in it and only sent a2 to the server. Here, we need to use that to generate a new "bridge" transform.
It is!
This complexity makes it difficult to support large numbers of clients performing operations on the same document.
Wave's improvement on this process is the compose function which is O(n).
Composes takes changesets performed on the same document and combines them into one changeset.
So instead of transforming c against b2 and a2 we can compose the latter into ab2 and just transform(ab2, c)
@whale_eat_squid | Todd Kennedy


Our Process
Each project is a partnership led by someone who works directly with you. We start with a conversation about your goals, then develop a plan with you.
Depending on the project's current progress, this is how we break it down:
-
Discovery — define possibilities and goals for the project
-
UX Prototype — solidify the experience to build with your team and customers
-
Build — iterate upon the prototype for feedback from your potential customers, then improve
-
Deployment — operate and maintain the application for years to come; we can even help train your team


If you want to become a data scientist, you need to learn how to use git, github and gitlab. They are good for project storage, backup and collaboration. I’m going to give you a fairly detailed list of instructions on how to set them up in this post.
Installation
- Sign up for Github
- Install Git
- Introduce yourself to Git. Make sure you ignore 8.1.
- Pick a Git client. I use SourceTree.
- Connect to Github. The link shows you how to do it using the shell. You should also learn how to do it using the git client you picked. The reason is that you rarely need to go back to the shell once you master a git client.
- Check for existing SSH keys
- If you don’t have one, create SSH keys from the shell and add the public key to Github
- Sign up for Gitlab
- Add the same public key (see step 6 and 7) to Gitlab. Afterwards, you can clone Gitlab repos using SourceTree.
- If you have two github accounts, for example, one for personal use and the other for your organization, you need to have two sets of SSH keys in order to manage your repos in both accounts using SourceTree on the same computer. Click here to learn how to set them up.
Work flow when starting a new project (I’m using Gitlab here, but the same logic also holds for Github)
- Go to Gitlab and make sure you are logged in.
- Click the big PLUS (+) button next to your profile picture to create a new project.
- After you’ve created a new project, you’ve created a repo. You should see a screen like this under the Project tab
- Copy the SSH path shown in the screen.
- Open SourceTree, click New Repository -> Clone from URL.
- Paste the copied SSH path into the Source URL field.
- Specify the Destination Path and Name.
- Click Clone. Now, you can stage, commit, push and pull from SourceTree. If you are using a different git client, make sure you learn how to do these actions. Some tutorials teach you to do them inside Rstudio. Don’t do that. Let me repeat: “Don’t waste the effort connecting git/github with RStudio. Not worthy it.” Instead, use a git client (I prefer SourceTree). Leave the job of connecting git and a git hosting service (for example: github, gitlab, bitbucket) exclusively to a git client.
Ignore files
You don’t want to use git to track everything. You only want to track your code. For example, you don’t want to track files like .Rhistory, .Rapp.history and .Rproj.user/*.
Work flow when collaborating on Github
Let’s demo the work flow using the following example.
- Fork my repo (Upper right corner fork button)
- You’ll see the same repo show up under your github account. Clone it using source tree.
- Add upstream. This allows you to update your repo based on my updates. Once you add upstream, you can pull the changes I make directly to your local repo.
- Make changes to your local copy and commit and push to the repo in your github account.
- Create a pull request.
- I’ll review your pull request and decide if to merge with mine.
Exercises
- Understand git and git hosting services from the big picture level.
- Clone a repo.
- Fork a repo. A specific fork and pull practice.
- Mistakes Recovery: part1, part2.


is the value written to stdin to perform the given task.
is used to parse resulting data from the underlying process to a typed object.
the resolution or rejection of this task.
This is for use by BatchProcess
only, and will only be called when the
process has errored after N retries
This is for use by BatchProcess
only, and will only be called when the
process is complete for this task's command
Generated using TypeDoc
Tasks embody individual jobs given to the underlying child processes. Each instance has a promise that will be resolved or rejected based on the result of the task.


JavaScript is disabled on your browser.
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
D
F
G
I
K
L
M
O
R
S
T
U
W
D
deal()
- Method in class info.jayharris.klondike.
Klondike
Deal the next card from the deck.
doAction()
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
doAction()
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
drawPointer(boolean)
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
drawPointer(boolean)
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
Draw or undraw the pointer indicating the current element.
F
FOUNDATION_START_COL
- Variable in class info.jayharris.klondike.
TerminalUI
G
getDeal()
- Method in class info.jayharris.klondike.
Klondike.Rules
getDeck()
- Method in class info.jayharris.klondike.
Klondike
getFoundation(Suit)
- Method in class info.jayharris.klondike.
Klondike
getFoundations()
- Method in class info.jayharris.klondike.
Klondike
getPasses()
- Method in class info.jayharris.klondike.
Klondike.Rules
getTableau(int)
- Method in class info.jayharris.klondike.
Klondike
getWaste()
- Method in class info.jayharris.klondike.
Klondike
I
info.jayharris.klondike
- package info.jayharris.klondike
init()
- Method in class info.jayharris.klondike.
Klondike
init(TerminalInterface, ColorPalette)
- Method in class info.jayharris.klondike.
TerminalUI
Initialize the curses-style UI.
isDeckEmpty()
- Method in class info.jayharris.klondike.
Klondike
isGameOver()
- Method in class info.jayharris.klondike.
Klondike
K
Klondike
- Class in
info.jayharris.klondike
Klondike()
- Constructor for class info.jayharris.klondike.
Klondike
Klondike(Klondike.Rules)
- Constructor for class info.jayharris.klondike.
Klondike
Klondike.Rules
- Class in
info.jayharris.klondike
KlondikeTest
- Class in
info.jayharris.klondike
KlondikeTest()
- Constructor for class info.jayharris.klondike.
KlondikeTest
KlondikeUI
- Interface in
info.jayharris.klondike
L
LEFT_COL
- Variable in class info.jayharris.klondike.
TerminalUI
loop()
- Method in class info.jayharris.klondike.
TerminalUI
Event handling loop.
M
main(String...)
- Static method in class info.jayharris.klondike.
TerminalUI
moveCardToWaste()
- Method in class info.jayharris.klondike.
Klondike
Move a card from the deck to the waste.
moveFromTableauToFoundation(Klondike.Tableau)
- Method in class info.jayharris.klondike.
Klondike
Move a card from a tableau to the appropriate foundation.
moveFromTableauToTableau(Klondike.Tableau, Klondike.Tableau, int)
- Method in class info.jayharris.klondike.
Klondike
Move one or more cards from one tableau to another.
moveFromWasteToFoundation()
- Method in class info.jayharris.klondike.
Klondike
Move a card from the waste to the appropriate foundation.
moveFromWasteToTableau(Klondike.Tableau)
- Method in class info.jayharris.klondike.
Klondike
Move a card from the end of the waste to a tableau.
movePointerDown()
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
movePointerUp()
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
O
onKeyPress(int)
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
onKeyPress(int)
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
R
receiveFocus()
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
receiveFocus()
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
restart()
- Method in class info.jayharris.klondike.
TerminalUI
Destroy the current game, start a new game with a new
Klondike
.
restartDeck()
- Method in class info.jayharris.klondike.
Klondike
Take the waste pile and turn it into the deck for the next round.
rules
- Variable in class info.jayharris.klondike.
Klondike
run()
- Method in class info.jayharris.klondike.
TerminalUI
Run the game with the current
Klondike
.
run(Klondike)
- Method in class info.jayharris.klondike.
TerminalUI
Run the game with the given
Klondike
.
S
setUp()
- Method in class info.jayharris.klondike.
KlondikeTest
SPACE_BETWEEN
- Variable in class info.jayharris.klondike.
TerminalUI
START_ROW
- Variable in class info.jayharris.klondike.
TerminalUI
T
TABLEAU_ROW
- Variable in class info.jayharris.klondike.
TerminalUI
TerminalUI
- Class in
info.jayharris.klondike
TerminalUI(Klondike)
- Constructor for class info.jayharris.klondike.
TerminalUI
Create a new curses-style UI.
TerminalUI.TableauUIComponent
- Class in
info.jayharris.klondike
TerminalUI.TableauUIComponent(Klondike.Tableau, int)
- Constructor for class info.jayharris.klondike.
TerminalUI.TableauUIComponent
TerminalUI.TerminalUIComponent
<
T
> - Class in
info.jayharris.klondike
TerminalUI.TerminalUIComponent(T, int, int)
- Constructor for class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
testDeal()
- Method in class info.jayharris.klondike.
KlondikeTest
testDealFewerThanThreeCards()
- Method in class info.jayharris.klondike.
KlondikeTest
testGameNotOverIfAnyCardMoved()
- Method in class info.jayharris.klondike.
KlondikeTest
testGameOverIfAllFoundationsComplete()
- Method in class info.jayharris.klondike.
KlondikeTest
testGameOverIfNoCardsMoved()
- Method in class info.jayharris.klondike.
KlondikeTest
testGameOverIfTooManyRestarts()
- Method in class info.jayharris.klondike.
KlondikeTest
testMoveCardToWaste()
- Method in class info.jayharris.klondike.
KlondikeTest
testMoveFromTableauToTableau()
- Method in class info.jayharris.klondike.
KlondikeTest
testMoveFromWasteToFoundation()
- Method in class info.jayharris.klondike.
KlondikeTest
testMoveFromWasteToTableau()
- Method in class info.jayharris.klondike.
KlondikeTest
testRestartDeckIfEmpty()
- Method in class info.jayharris.klondike.
KlondikeTest
U
update(Observable, Object)
- Method in class info.jayharris.klondike.
TerminalUI
W
WASTE_CARDS_SHOWN
- Variable in class info.jayharris.klondike.
TerminalUI
WASTE_MAX_WIDTH
- Variable in class info.jayharris.klondike.
TerminalUI
WASTE_START_COL
- Variable in class info.jayharris.klondike.
TerminalUI
whichTableau(Klondike.Tableau)
- Method in class info.jayharris.klondike.
Klondike
won()
- Method in class info.jayharris.klondike.
Klondike
Did we win?
writeToTerminal()
- Method in class info.jayharris.klondike.
TerminalUI.TableauUIComponent
writeToTerminal()
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
writeToTerminal(String)
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
writeToTerminal(int, int, String)
- Method in class info.jayharris.klondike.
TerminalUI.TerminalUIComponent
D
F
G
I
K
L
M
O
R
S
T
U
W
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


About
I am Ngoc Tran. Computer aficionado. Indie music lover. Part-time swimmer.
OBJECTIVES
Besides being enthusiastic about making web a rich and interactive environment, I am also intrigued by creating information systems for business intelligent, health care and education. In the future, I see myself working towards fulfilling these personal interests and social benefits.
PROFESSIONAL LIFE
I graduated with 1st ranking in CS major from International University, Vietnam National University in 2010. Since 2011, I have been working as a software engineer at InBusiness AS, where I developed several CMS and CRM in Coldfusion and PHP, web and mobile apps in Javascript frameworks, CSS3 and HTML5.
In Fall 2013, I was fortunately granted a scholarship that allows me to pursue Master degree in any Belgian university. I chose to study Master of Computer Science at Vrije Universiteit Brussel, a public university located in Brussels (Belgium). I have learnt so much knowledge during two years at the school. Even some of things I would never apply, I can see they have changed me forever in the way I observe and evaluate problems in the field.
In Fall 2015, I was granted both NICTA scholarship and Swinburne Scholarship to pursue Ph.D at Swinburne University of Technology (Melbourne, Australia). I now become part of Swinburne Software Innovation Lab in a new project where I will research a data mining model using extensive sets of clinical data, and build on top such model a Domain Specific Visual Language to support medial practitioners.
Update 08/2016:
- NICTA has been merged to CSIRO under a new brand name Data61. I am proud of being a part of CSIRO.
- My journey has been so interesting and challenging to ride on when I am principally supervised by Prof. Jean-Guy Schneider (Swinburne University), Prof. Rajesh Vasa (Deakin University), Ingo Weber (Data61/CSIRO and University of NSW) and Dr. Elif Ekinci (Austin Hospital and University of Melbourne).
PERSONAL STUFFS
My feelings are influenced by indie music. I am a big fan of Bon Iver. I am also looking for partners in a non-mainstream music site project.
I am also an amateur photographer. You can find some pictures in Flickr and Instagram.
Daily swimming makes me less introverted and get my body into shape. Thanks a bundle for that!
WHY newbiettn?
‘newbiettn’ is no more than a random choice of nickname I’ve made when in high school. Even so, it conveys a few meanings. Whereas ‘ttn’ is an abbreviation of my full name, the term ‘newbie’ is a slang word, referring to one that is new to something. It was me specifically, a newcomer of computer technology. Yet it’s not the end of story. There’s still an extending part of it, which I like much more than the literal meaning. Back in time, I was looking for a nickname that is capable of portraying me, not only in the present but also in many years to come. Then I thought of me somewhat as an curiosity junkie, who always seeks new things in the field, like a newcomer. That’s why I decided to use the term ‘newbie’ as part of my forever nickname.
FAVORITE QUOTES
“We can only see a short distance ahead, but we can see plenty there that needs to be done” – Alan Turing
CONNECT
UPDATES
Updated in April 2013: The project is now available at http://musicafy.net/
Updated in November 2013: I am currently pursuing Master of Science in Computer Science at Vrije Universiteit Brussel. My interests are Haskell, Scheme, AspectJ.
Update in March 2014: I am interested in becoming a marathon runner. My best distance is 20km in 129 minutes. I enjoy it.
THIS SITE
When I was a child, I never thought writing would be of my interest. I always got struck by assignments of writing in school. That’s why it was seemingly certain to see a version of me would never start to write something, even meaningless, in spare time in the future. But when I grow up, that version is never a part of me. I realise one of best things I’ve ever done in my life is writing, and I see how much I have learnt when writing becomes a salient trait of me.
This is the latest version of the site. I used Mura in the past, but now I’m with WordPress
Updated in August 2016: Wordpress is over, Jekyll is too simple to be ignored.
The content is scattered.


---
layout: page
title: Uploads
permalink: /uploads/
---
Uploads
To allow participants to easily submit their results, as well as to have an automated pipeline for processing
and
managing these results, a simple website was created to enable participants to upload their files.
To use the upload website, follow these steps:
-
Go to the upload website: https://ibsi.radiomics.hevs.ch
-
Sign in with a GitHub account
-
After the first login, enter the name of your research Team (suggestions based on existing teams will be
given)
-
For IBSI 1, open the corresponding section, then drag&drop ".xls" or ".xlsx" files to
the "drop zone"
-
For IBSI 2, open the corresponding section, then drag&drop ".gz" or ".nii" files to
the "drop zone"
-
After uploading one or more files, select the corresponding "Filter ID" for each one
-
Click on "Submit files"
You can also manage your submissions for IBSI 2 using the "Manage My Submission" button, in order to see all your
submitted results and possibly retract a submission if it was incorrect (wrong file, wrong "Filter ID" selected, etc.)
Finally, you can visualize the latest results (from all teams) for each "Filter ID" as either a "Scatter plot" or a "Box plot"
using the buttons at the bottom of the page.


Price X Rating
To interact with the graph:
* Mouse over: Show the informations of that particular wine
* Click: Open Vivino's page for more info.
|
Price Range (USD):
Rating:
4.5 and Above
4.0 and Above
3.5 and Above
3.0 or Bellow
All
Grapes:
Continents:
|


 It is a spin off of the popular TV show American Ninja Warrior. The kids race on a side by side course filled with obstacles seen on the adult show. There are three age groups 9-10, 11-12 and 13-14. In each age group the top four kids get a cash prize. First place wins 15,000 dollars.
There are many gyms across the country and ways to train at home mudrunguide.com is a great website to search for gyms near you. Buying a pull up bar could be a good option because building up grip and arm strength is very important. Buying ninja holds from somewhere like atomicclimbingholds.com or monstro.ninja could be options but you can also try to make some on your own. Working on overall fitness is very helpful as well as core and endurance. Simple workouts like lunge jumps, push ups and pull ups (wide grip or narrow) are great for at home workouts. Rock climbing is a great sport to get into if there isn't a ninja gym near you, or if you want to mix it up.
Numerous people in the ninja and rock climbing community also do acro yoga. It trains strength, balance and flexibility. To start out with your training with ninja look for a gym near you and take a class. There are many videos on how to have the right form or fun workouts to do at home or at the gym.
Click here for training tips and tricks!


Bowling Score Card
Pins Hit:
Gutter Ball!
1
2
3
4
5
6
7
8
9
Strike!
Player Name
Frame 1
Frame 2
Frame 3
Frame 4
Frame 5
Frame 6
Frame 7
Frame 8
Frame 9
Frame 10
Total Score
Paul
Game Over :(
Play Again?


IntentForResultSendable
public protocol IntentForResultSendable
The protocol to abstract the view controller tha can send the Intent for request a result from the destination.
-
When the result return, this method will be called.
Declaration
Swift
func onControllerResult(requestCode requestCode: Int, resultCode: ResultCode, data: Intent)
Parameters
requestCode
The integer request code originally supplied to startControllerForResult(), allowing you to identify who this result came from.
resultCode
The result code returned by the child conroller.
intent
An Intent, which can return result data to the caller (various data can be attached to Intent
extras
).


The purpose of this game is to train your eye to retain numbers that will show quickly. You can alter the display time and then it will disapear and you should enter the response.
00000


The Tutorials in Theoretical Chemistry will be organized by the Université Paul Sabatier in Luchon - France, and held from the 1st to 6th February 2015.
These tutorials are focused in computer implementations, and numerical methods.
This winter school is done in the frame of the École des sciences avancées de Luchon.
To see the photo gallery please click here!.
If you are accepted, you will get an email with instructions to pay the inscription fees (50€).
You have to send us back the payment invoice, and once we receive it your participation is confirmed.
Note: Registration fees cover: meals, accommodation, and travel from Toulouse Blagnac to Luchon (we will rent a bus).
Last updated: Tue Feb 3 16:34:45 CET 2015.>
The tutorials will take place in Luchon Superbagnères in France. Bagnères-de-Luchon, also referred to as Luchon is an authentic mountain town in the Pyrenees at the southernmost point of the Haute-Garonne Department, stands at the heart of a majestic mountain setting. It is surrounded by the mountain ranges 13 most famous peaks, including Aneto, which is the highest peak in the Pyrenees (3,404m).
We will meet at Blagnac Airport on 1st February at 12:00 (GMT+1). A bus will take us roundtrip from the airport to the venue as shown below:
If you are contacting us for registration, please add in the subject: Registration. Additionally, you will need to tell us if you will bring your laptop and which operating system you use.


Get your dress material stitched into a beautiful product, which you have personalized
Does your dress needs any modification? we tailor it for a better fit.
Step out from the store with satisfaction guaranteed for the money you spent and quality you get
We have started our services in 1997


WebVR
This short tutorial describes how to bundle some of the nifty sample applications recently released (Dec 2015) as part of the A-Frame project, authored by Mozilla's VR team (MozVR). Your system should already be set up for Crosswalk development.
Background
Virtual Reality has garnered increased attention in the past year, from Google Cardboard on the low end to Oculus Rift or Moverio glasses/headsets on the high end. The immersive, 3-dimensional visual experience gives consumers the feeling they are in the scene. Given the advances in viewing devices and APIs, the technology, while still in the early stages, promises to shake up how we consume media and interact in the digital world.
VR for web applications has been promoted by three.js, a JavaScript library for 3D animations and graphics, and a lot of great examples using three.js can be found online. A-Frame was released in Dec 2015 and simplifies the task of creating and navigating basic 3D objects with just markup. No WebGL experience required. It is a nice way to get your feet wet.
From A-Frame Samples to Android Applications
If you want to see how these applications will work on your phone, you can open up Chrome on your phone and navigate to http://aframe.io. Click the glasses icon in the bottom corner of any of the samples to split the screen:
Using Crosswalk we can convert these samples to Android applications (Kudos to Pablo Mendigochea for his webinar on How to use Crosswalk with Moverio).
Create an app
Download the full project source from the A-Frame github repo:
Unzip the file.
Pick any sample you wish to build and copy the directory to a new location. For this tutorial, we will build the Composite example:
> cp -r ./aframe-master/examples/showcase-composite ~/src/
Copy required resources
Investigate the
index.html
file and note any resources that are not included in the directory. In the Composite index.html we see there are 2 resources pulled from other locations:<script src="../../dist/aframe.js"></script> <a-sky src="../_skies/lake.jpg"></a-sky>
Find these resources in the master tree and copy them to your new folder.
> cp ./aframe-master/dist/aframe.min.js ~/src/showcase-composite/ > cp ./aframe-master/examples/_skies/lake.jpg ~/src/showcase-composite/
aframe.min.js can also be used online:
<script src="https://aframe.io/releases/latest/aframe.min.js"></script>
Update the index.html to reference the local versions. In our case:
<script src="aframe.min.js"></script> <a-sky src="lake.jpg"></a-sky>
Copy an icon to your project folder. Name it "icon.png" or whatever you call it in the manifest.json file (next step). Here is an icon you can use:
Create a manifest.json file for the project. In our example:
{ "name": "A-Frame Composite", "start_url": "index.html", "xwalk_app_version": "0.1", "xwalk_package_id": "com.aframe.composite", "icons": [ { "src": "icon.png", "sizes": "72x72" } ] }
Build the apk and install
> crosswalk-pkg ./showcase-composite/ > adb install -r <apk for your architecture>
On your device, run the program. Below is what the Composite application looks like. As you move your phone around, the accelerometer will adjust the view. Drop your phone into Google Cardboard and take a trip to beautiful Portland!
All-in-one
If you would like to try all the applications on your phone without individually building each one, we created an "All-in-one" application:
Download aframe-allinone.zip. Unzip it.
Copy the contents into the aframe-master directory. This adds a manifests.json, icon, and top-level index.html to launch all example applications:
> cp -r ./aframe-allinone/* ./aframe-master
Build and install
> crosswalk-pkg ./aframe-master > adb install -r <apk for your architecture>


|
Smartlock
|
Go to the source code of this file.
Macros | |
| #define | WAIT_AML_SYSTEM_CLOCK_FREQ (WAIT_AML_GetSystemClockFreq()) |
| #define | WAIT_AML_GET_CYCLES_FOR_MS(ms, freq) (((freq) / 1000U) * (ms)) |
| #define | WAIT_AML_GET_CYCLES_FOR_US(us, freq) (((freq) / 1000U) * (us) / 1000U) |
| #define | WAIT_AML_GET_CYCLES_FOR_NS(ns, freq) (((freq) / 1000000U) * (ns) / 1000U) |
Functions | |
| uint32_t | WAIT_AML_GetSystemClockFreq (void) |
| Returns system clock frequency. | |
| void | WAIT_AML_WaitCycles (uint32_t cycles) |
| Waits for specified amount of cycles which is given by 32bit value range. Assumption for this function is that target architecture is using 32bit general purpose registers. More... | |
| void | WAIT_AML_WaitSec (uint16_t delay) |
| Waits for specified amount of seconds. More... | |
| void | WAIT_AML_WaitMs (uint16_t delay) |
| Waits for specified amount of milliseconds. More... | |
| void | WAIT_AML_WaitUs (uint16_t delay) |
| Waits for specified amount of microseconds. More... | |
This driver creates abstraction for WAIT functions for S32 SDK and MCUXpresso SDK.


Build System
This page describes how to compile the SeqTools package from the development repository (as opposed to the dist file) using the Autotools scripts included with the source code.
Autotools
The SeqTools package is configured and built using the GNU Build System (aka Autotools). The relevant configuration files are listed below:
- src/version.m4: This specifies the version number for the build. It is included by configure.ac, which sets the version number in the PACKAGE_VERSION variable in the config.h file, which is included by the code.
- src/configure.ac: This file is processed by autoconf to produce the configure file.
- src/Makefile.am: This file is processed by automake to produce the Makefile.in file.
- src/AUTHORS, src/COPYING, src/README, src/NEWS, src/ChangeLog: These files are for information.
- subdirectory Makefile.am files: The subdirectories blixemApp, dotterApp and seqtoolsUtils all contain a Makefile.am file, which is processed by automake to create a Makefile.in file in that directory.
The build process is as follows:
- Run '
./autogen.sh
' in the src
directory. This runs autoheader, aclocal, autoconf and automake and creates the configure script (and some other required files) in the src directory. It also clones the gbtools library and configures that.
cd
to the directory where the code is to be built (this can be src or any other directory, e.g. src/build) and run the runconfig.sh
script from there. This will create a makefile in the build directory (and subdirectories for blixemApp, dotterApp and seqtoolsUtils, which all contain a makefile for building that module). It will also create the config.h file that will be included by the code, and a few other required files.
- Run
make
in the build directory to build everything (or in a subdirectory to build just that module).
Modules
The source code includes the following modules. Each module has its own subdirectory with a makefile that produces a .a
convenience library that is statically linked by the executables that require that code. The executables are built by the main Makefile
in the src
directory. The blixem and blixemh executables both use the same source code (the blixemApp code) but blixemh is compiled using the PFETCH_HTML
flag, which conditionally compiles some additional code.
- blixemApp: Blixem application code.
- dotterApp: Dotter application code.
- seqtoolsUtils: Generic utility functions. Required by dotter, blixem and blixemh.
- seqtoolsUtils: Generic seqtools utility functions. Required by dotter, blixem and blixemh.
- gbtools: Generic utility functions from an external repository of shared code. This code is included in the distribution so that it is automatically compiled as part of the seqtools package. See the
src/INSTALL.DEVELOPER
file for more information about including gbtools.
Dependencies
- All of the executables in the SeqTools package require the GLib and GTK+ libraries. These are built using pkg-config. configure.ac specifies which version of the libraries are required.
- blixemh uses the libpfetch library, which requires the libcurl library.
- blixem and blixemh compile in the sqlite3 library if it is availble. If it is not available, the sqlite functionality is disabled.
- See the INSTALL.XXX files for more information about dependencies.


Explode the Web!
Make a browser extension to destroy web pages that steal your data.
slides | markdown | HTML
⌂ | 0-Introduction | 1-Hello World! | 2-Architecture | 3-DOM | 4-Explosion
What is a Browser Extension?
- Browser extensions are software that add features to a web browser.
- Some are useful—the Wayback Machine extension shows you what a web page looked like in the past, even if it was deleted.
What is a Browser Extension?
- Extensions can also be playful.
- Meow Met displays a new random image from their collection that contains a cat when you open a new browser tab.
Emily McAllister, Metropolitan Museum of Art (2015)
What is a Browser Extension?
- Ad blockers are some of the most popular extensions—removing annoying banner, popup, and video advertisements in real time2
- Similarly, tracker blockers prevent hidden trackers from collecting and monetizing your private searches, communications, and behaviors.
Ghostery, Disconnect, Privacy Badger, AdBlockPlus
What you will learn
After this presentation you'll be able to:
- Explain how browser extensions are used
- Create a basic "hello world" example, and learn to debug extensions
- Access and change content of web pages using the DOM and Javascript libraries
- Complete an extension to explode web pages with hidden data trackers.
👉 Start the next section Hello World!


Displaying Multidrug Use
05 Nov 2015Increased use and abuse of opioid has become an alarming public health challenge. Often opioid is used in combination with other drugs, enhancing the risk of death. The association with benzodiazepine is known to be fatal. Searching into all the columns with cause of death codes, one can find the different instances of multidrug use and summarize them in a graph.
Visualizing Multidrug Deaths with plotrix
The count of the various multidrug use could be displayed with a Venn diagram. . However as the number of intersections increases, the diagram become illisible. A good alternative of Venn diagram is the function intersectDiagram from the R package plotrix .
It recreates the different compartments of the Venn diagram in separate rectangles. In addition the drugs are color coded, and the rectangle sizes are proportional to the count of death for the drug.
We modified the function intersectDiagram in order to remove the boxed labels (from the original function intersectDiagram) and add shadowed labels.
Install the package vennplus
I create a small package called vennplus that contains the functions and data needed in this exercise. Use package devtools to install and run vennplus as follow:
devtools::install_github("epinotes/vennplus")
library(vennplus)
Load the simulated matrix(venndrug) of 1,000 deaths with indication of whether opioid, alcohol or benzodiazepine were used alone or in combination. Check the first 10 cases:
data(venndrug)
head(venndrug, 10)
Opioid Benzo Alcohol
[1,] 0 0 0
[2,] 1 0 0
[3,] 1 1 1
[4,] 1 0 0
[5,] 0 0 0
[6,] 1 1 0
[7,] 1 0 0
[8,] 0 0 0
[9,] 1 0 0
[10,] 1 0 0
For more details on vennplus see the github project
Loading packges plotrix and RColorBrewer
Use the package plotrix for the function makeIntersectlist that will transform the data matrix venndrug into a list of the intersection sets saved into the object "drug3". The package RColorBrewer provides the colors used in the graph.
library(plotrix)
drug3 <- makeIntersectList(venndrug,sep="\n")
library(RColorBrewer)
col3 <- brewer.pal(8, "Set2")
Producing the graph
The final graph with the simulated data from the fictive place Saraba.
intersectDiagram2(drug3,main="Saraba :Drug Deaths (Count)",sep="\n",col=col3,cex = 1.2,bg="transparent", border = NA)


This classic trivia game is for 4 players (one host, three contestants). This console view is for the host only. They are allowed to pick the categories and view the answers.
The game will generate a new tab for both the host sheet and the clue screen for players. The host is responsible for adding the scores to the players via the clue screen.
To-do: Daily Double Clues with Modal Screen / Single-player / Mobile Cross-Play
Please select 13 categories. The first 6 you will select will be for the first round of Jeopardy, the other 6 will be for Double Jeopardy.
The final Jeopardy category will be the 13th category.
If you choose not to select categories, you can simply click on 'Use All Random Categories'.
HOST! UPON GENERATING THE ANSWERS, MAKE SURE THE CATEGORIES ARE VALID BY CHECKING THE HOST DASHBOARD! AN ALERT WILL TELL YOU IF ONE ISN'T VALID.
Please enter the player names or team names for those participating in the game of Jeopardy. You cannot start the game until all players have a name.
Player One / Team 1: Player Two / Team 2: Player Three / Team 3:


# (c) 2012-2014, Michael DeHaan<EMAIL_ADDRESS>#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import base64
from ansible.errors import AnsibleError
from ansible.plugins.action import ActionBase
from ansible.utils.boolean import boolean
from ansible.utils.hashing import checksum, checksum_s, md5, secure_hash
from ansible.utils.path import makedirs_safe
from ansible.utils.unicode import to_bytes
[docs]class ActionModule(ActionBase):
[docs] def run(self, tmp=None, task_vars=None):
''' handler for fetch operations '''
if task_vars is None:
task_vars = dict()
result = super(ActionModule, self).run(tmp, task_vars)
if self._play_context.check_mode:
result['skipped'] = True
result['msg'] = 'check mode not (yet) supported for this module'
return result
source = self._task.args.get('src', None)
dest = self._task.args.get('dest', None)
flat = boolean(self._task.args.get('flat'))
fail_on_missing = boolean(self._task.args.get('fail_on_missing'))
validate_checksum = boolean(self._task.args.get('validate_checksum', self._task.args.get('validate_md5')))
if 'validate_md5' in self._task.args and 'validate_checksum' in self._task.args:
result['failed'] = True
result['msg'] = "validate_checksum and validate_md5 cannot both be specified"
return result
if source is None or dest is None:
result['failed'] = True
result['msg'] = "src and dest are required"
return result
source = self._connection._shell.join_path(source)
source = self._remote_expand_user(source)
remote_checksum = None
if not self._play_context.become:
# calculate checksum for the remote file, don't bother if using become as slurp will be used
remote_checksum = self._remote_checksum(source, all_vars=task_vars)
# use slurp if permissions are lacking or privilege escalation is needed
remote_data = None
if remote_checksum in ('1', '2', None):
slurpres = self._execute_module(module_name='slurp', module_args=dict(src=source), task_vars=task_vars, tmp=tmp)
if slurpres.get('failed'):
if not fail_on_missing and (slurpres.get('msg').startswith('file not found') or remote_checksum == '1'):
result['msg'] = "the remote file does not exist, not transferring, ignored"
result['file'] = source
result['changed'] = False
else:
result.update(slurpres)
return result
else:
if slurpres['encoding'] == 'base64':
remote_data = base64.b64decode(slurpres['content'])
if remote_data is not None:
remote_checksum = checksum_s(remote_data)
# the source path may have been expanded on the
# target system, so we compare it here and use the
# expanded version if it's different
remote_source = slurpres.get('source')
if remote_source and remote_source != source:
source = remote_source
# calculate the destination name
if os.path.sep not in self._connection._shell.join_path('a', ''):
source = self._connection._shell._unquote(source)
source_local = source.replace('\\', '/')
else:
source_local = source
dest = os.path.expanduser(dest)
if flat:
if dest.endswith(os.sep):
# if the path ends with "/", we'll use the source filename as the
# destination filename
base = os.path.basename(source_local)
dest = os.path.join(dest, base)
if not dest.startswith("/"):
# if dest does not start with "/", we'll assume a relative path
dest = self._loader.path_dwim(dest)
else:
# files are saved in dest dir, with a subdir for each host, then the filename
if 'inventory_hostname' in task_vars:
target_name = task_vars['inventory_hostname']
else:
target_name = self._play_context.remote_addr
dest = "%s/%s/%s" % (self._loader.path_dwim(dest), target_name, source_local)
dest = dest.replace("//","/")
if remote_checksum in ('0', '1', '2', '3', '4'):
# these don't fail because you may want to transfer a log file that
# possibly MAY exist but keep going to fetch other log files
if remote_checksum == '0':
result['msg'] = "unable to calculate the checksum of the remote file"
result['file'] = source
result['changed'] = False
elif remote_checksum == '1':
if fail_on_missing:
result['failed'] = True
result['msg'] = "the remote file does not exist"
result['file'] = source
else:
result['msg'] = "the remote file does not exist, not transferring, ignored"
result['file'] = source
result['changed'] = False
elif remote_checksum == '2':
result['msg'] = "no read permission on remote file, not transferring, ignored"
result['file'] = source
result['changed'] = False
elif remote_checksum == '3':
result['msg'] = "remote file is a directory, fetch cannot work on directories"
result['file'] = source
result['changed'] = False
elif remote_checksum == '4':
result['msg'] = "python isn't present on the system. Unable to compute checksum"
result['file'] = source
result['changed'] = False
return result
# calculate checksum for the local file
local_checksum = checksum(dest)
if remote_checksum != local_checksum:
# create the containing directories, if needed
makedirs_safe(os.path.dirname(dest))
# fetch the file and check for changes
if remote_data is None:
self._connection.fetch_file(source, dest)
else:
try:
f = open(to_bytes(dest, errors='strict'), 'w')
f.write(remote_data)
f.close()
except (IOError, OSError) as e:
raise AnsibleError("Failed to fetch the file: %s" % e)
new_checksum = secure_hash(dest)
# For backwards compatibility. We'll return None on FIPS enabled systems
try:
new_md5 = md5(dest)
except ValueError:
new_md5 = None
if validate_checksum and new_checksum != remote_checksum:
result.update(dict(failed=True, md5sum=new_md5,
msg="checksum mismatch", file=source, dest=dest, remote_md5sum=None,
checksum=new_checksum, remote_checksum=remote_checksum))
else:
result.update(dict(changed=True, md5sum=new_md5, dest=dest, remote_md5sum=None, checksum=new_checksum, remote_checksum=remote_checksum))
else:
# For backwards compatibility. We'll return None on FIPS enabled systems
try:
local_md5 = md5(dest)
except ValueError:
local_md5 = None
result.update(dict(changed=False, md5sum=local_md5, file=source, dest=dest, checksum=local_checksum))
return result


image-lazy-load
A simple lazy loading library for images.
Author
@hxli8 @bqliu
Introduction
When there're lots of pictures in a web page, in order to reduce the occupation of network resources, we shouldn't load all pictures at one time. The image-lazy-load library is used to solve this problem.
Think
To save network resources and speed up loading duration, We don't load images until they are visible in a web page. Of course, we can optimize the loading process by using a short delay. For example, when we use a high speed to scroll page, maybe the previous resource is not necessary.
Also, this library is suitable for the case where there are multiple modules loading the image. Scrolling in their respective areas will only affect their own region.
Implementation
Set the picture path that needs to be used in data-src
, and set a basic picture in the src attribute of the picture, Such as a base64 format image. When scrolling, the visual height is calculated and if the pictures are visible, the image path in the data-src
is assigned to src
attribute. So the browser will load this.
Usage
scrollLoadPic(
contaniner, // 要加载图片所在的容器，不填时默认Body
{
preLoadHeight: 0, // preLoadHeight: 预加载的高度
delay: 1000 // delay: 延迟加载的时间
}
)


| A Cup of Radicchio: Installed packages on OpenBSD 6.7 VM box A personal website of a power looper, a skateboarder, and a coder |
|
| Home Docs Sources Blog GitHub |
$ pkg_info
at radicv610.my.domain
The following packages have been installed or upgraded as of 1st of June, 2020:
$ pkg_info
adwaita-icon-theme-3.34.3 base icon theme for GNOME
aom-<IP_ADDRESS>00402 Alliance for Open Media AV1 video codec
at-spi2-atk-2.34.2 atk-bridge for at-spi2
at-spi2-core-2.34.0p0 service interface for assistive technologies
atk-2.34.1p1 accessibility toolkit used by gtk+
avahi-0.8 framework for Multicast DNS Service Discovery
bash-5.0.17 GNU Bourne Again Shell
brotli-1.0.7 generic lossless compressor
bzip2-1.0.8 block-sorting file compressor, unencumbered
cairo-1.16.0 vector graphics library
cdparanoia-3.a9.8p4 CDDA reading utility with extra data verification features
chromium-81.0.4044.138 Chromium browser
clojure-<IP_ADDRESS>9 Lisp-1 dialect for the Java Virtual Machine
cmake-3.16.2p1v0 portable build system
colord-1.3.5p1 device color profile management daemon
colordiff-1.0.18 colorized diff tool
consolekit2-1.2.1p8 framework for defining and tracking users, sessions & seats
cups-libs-2.3.3 CUPS libraries and headers
curl-7.69.1 get files from FTP, Gopher, HTTP or HTTPS servers
cvsps-2.1p2 generate patchsets from CVS repositories
dav1d-0.6.0 small and fast AV1 decoder
dbus-1.12.16p0v0 message bus system
dbus-daemon-launch-helper-1.12.16p0 DBus setuid helper for starting system services
dconf-0.34.0p0 configuration backend system
desktop-file-utils-0.24p0 utilities for dot.desktop entries
dos2unix-7.4.1 convert DOS/MAC files to UNIX (line-endings/charset)
e2fsprogs-1.42.12p5 utilities to manipulate ext2 filesystems
elixir-1.10.2 functional language for building scalable applications
enca-1.19p0 detect character set and encoding of text files
erlang-19.3p7v0 real-time, concurrent and distributed functional language
erlang-21.2p3v0 real-time, concurrent and distributed functional language
ffmpeg-4.2.2v0 audio/video converter and streamer
flac-1.3.3 free lossless audio codec
flock-20110525p1 flock(2) manager for shell scripts
fribidi-1.0.9 library implementing the Unicode Bidirectional Algorithm
gcc-8.3.0p5 GNU compiler collection: core C compiler
gcc-libs-8.3.0p5 GNU compiler collection: support libs
gdbm-1.18.1p0 GNU dbm
gdk-pixbuf-2.40.0p2 graphic library for GTK+
gettext-runtime-0.20.1p1 GNU gettext runtime libraries and programs
giflib-5.1.6 tools and library routines for working with GIF images
git-2.26.2p0 distributed version control system
glib2-2.62.6 general-purpose utility library
glib2-networking-2.62.4 network-related gio modules for GLib
gmake-4.3 GNU make
gmp-6.2.0 library for arbitrary precision arithmetic
gnome-icon-theme-3.12.0p5 base icon theme for GNOME
gnome-icon-theme-symbolic-3.12.0p3 base icon theme extension for special UI contexts
gnutls-3.6.13 GNU Transport Layer Security library
go-1.13.9 Go programming language
graphite2-1.3.14 rendering for complex writing systems
gsettings-desktop-schemas-3.34.0 collection of shared GSettings schemas
gsm-1.0.19 GSM audio codec library and converter
gtk+2-2.24.32p9 multi-platform graphical toolkit
gtk+3-3.24.20 multi-platform graphical toolkit
gtk+3-cups-3.24.20 gtk+3 CUPS print backend
gtk-update-icon-cache-3.24.20 gtk+ icon theme caching utility
harfbuzz-2.6.5 text shaping library
hicolor-icon-theme-0.17 fallback theme of the icon theme specification
htop-2.2.0p14 interactive process viewer
icu4c-67.1 International Components for Unicode
intel-firmware-20190918v0 microcode update binaries for Intel CPUs
jansson-2.12 library for manipulating JSON data
jasper-2.0.14 reference implementation of JPEG-2000
javaPathHelper-2.0 helper script for launching java applications
jdk-<IP_ADDRESS>.b09.1v0 OpenJDK Software Development Kit v<IP_ADDRESS>.b09.1
jpeg-2.0.4p0v0 SIMD-accelerated JPEG codec replacement of libjpeg
json-glib-1.4.4 JSON parser for GLib-based libraries and applications
jsoncpp-1.8.4p2 JSON parsing C++ API
lame-3.100p1 lame ain't an MP3 encoder
lcms-1.19 color management library
lcms2-2.9p0 color management library
libao-1.2.0p1 portable audio output library
libarchive-3.4.2 multi-format archive and compression library
libass-0.14.0p0 portable ASS/SSA subtitle renderer
libb2-0.98.1v0 library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp
libbluray-1.1.2 library supporting Blu-ray playback
libbs2b-3.1.0p3 Bauer stereophonic-to-binaural DSP
libcroco-0.6.13 generic CSS parsing library for GNOME project
libdaemon-0.14p1 lightweight C library that eases the writing of daemons
libdockapp-0.4.0p5 dockapp-making standard library for Window Maker
libdv-1.0.0p3 Quasar DV codec
libdvdcss-1.4.2p1 descramble scrambled DVDs
libdvdnav-6.0.1v0 DVD navigation library
libdvdread-6.0.2 accessing DVD files
liberation-fonts-2.00.1p1 substitute for MS TTF core fonts
libev-4.27 high-performance event loop library
libevent-2.1.11 event notification library
libexecinfo-0.3p2v0 clone of backtrace facility found in the GNU libc
libexif-0.6.22pre20200229 extract digital camera info tags from JPEG images
libffi-3.3 Foreign Function Interface
libgcrypt-1.8.5 crypto library based on code used in GnuPG
libgnome-keyring-3.12.0p6 library for gnome keyring integration
libgpg-error-1.37 error codes for GnuPG related software
libiconv-1.16p0 character set conversion library
libid3tag-0.15.1bp5 library for reading ID3 tags
libidn2-2.3.0p0 implementation of IDNA2008 internationalized domain names
libmad-0.15.1bp6 high-quality MPEG audio decoder
libmicrohttpd-0.9.70 tiny embeddable httpd library written in C
libmng-1.0.10p3 Multiple-image Network Graphics (MNG) reference library
libmpc-1.1.0 arbitrary-precision complex numbers math library
libnettle-3.5.1p0 cryptographic library
libogg-1.3.4 Ogg bitstream library
libproxy-0.4.15p4 library handling all the details of proxy configuration
libpsl-0.20.2p1 public suffix list library
librsvg-2.48.4 SAX-based render library for SVG files
libsamplerate-0.1.9 audio sample rate conversion library
libsndfile-1.0.28 library to handle various audio file formats
libsoup-2.68.4 HTTP client/server library for GNOME
libtasn1-4.16.0 Abstract Syntax Notation One structure parser library
libtheora-1.2.20190601p0 open video codec
libunbound-1.10.1 validating DNS resolver library
libunistring-0.9.7 manipulate Unicode strings
libuv-1.30.1 multi-platform library for asynchronous I/O
libv4l-1.18.0 libv4l userspace library
libvorbis-1.3.6 audio compression codec library
libvpx-1.8.2v0 Google VP8/VP9 video codec
libxml-2.9.10p0 XML parsing library
libxslt-1.1.34 XSLT C Library for GNOME
lua-5.2.4p1 powerful, light-weight programming language (version 5.2.4)
lynx-2.8.9rel1p0 text web browser
lz4-1.9.2p0 fast BSD-licensed data compression
lzo2-2.10p2 portable speedy lossless data compression library
mariadb-client-10.4.12v1 multithreaded SQL database (client)
maven-3.6.0p0 software project management and comprehension tool
mpfr-<IP_ADDRESS> library for multiple-precision floating-point computations
mpg321-0.3.2p1 free clone of mpg123, a command-line mp3 player
mplayer-20200229 movie player supporting many formats
nghttp2-1.40.0 library for HTTP/2
nginx-1.16.1p1 robust and small HTTP server and mail proxy server
node-12.16.1 V8 JavaScript for clients and servers
noto-emoji-20180810 emoji fonts for the noto font family
noto-fonts-20171024 pan-unicode font family
nspr-4.25 Netscape Portable Runtime
nss-3.51.1 libraries to support development of security-enabled apps
opus-1.3.1 IETF audio codec
p11-kit-0.23.20 library for loading and enumerating PKCS#11 modules
p5-Canary-Stability-2013 canary to check perl compatibility for schmorp's modules
p5-Digest-HMAC-1.03p0 interface to HMAC Message-Digest Algorithms
p5-EV-4.27 perl interface to libev
p5-Error-0.17028 error/exception handling in an OO-ish way
p5-IO-Socket-SSL-2.068 Perl SSL sockets with IO::Socket interface
p5-Mail-Tools-2.21 modules for handling mail with perl
p5-Mojolicious-8.22 next generation web framework for Perl
p5-Net-DNS-1.23 perl interface to the domain name system
p5-Net-SSLeay-1.88 perl module for using OpenSSL
p5-Time-TimeDate-2.30 library for parsing and formatting dates and times
p5-common-sense-3.74 perl common defaults with lower memory usage
pango-1.44.7p0 library for layout and rendering of text
pcre-8.41p2 perl-compatible regular expression library
pcre2-10.34 perl-compatible regular expression library, version 2
png-1.6.37 library for manipulating PNG images
polkit-0.116p1 framework for granting privileged operations to users
popt-1.16p2 getopt(3)-like library with a number of enhancements
pstree-2.39p0 list processes as a tree
py3-dnspython-1.16.0p2 DNS toolkit for Python
py3-pip-19.1.1 tool for installing Python packages
py3-setuptools-41.6.0v0 simplified packaging system for Python modules
python-2.7.18p0 interpreted object-oriented programming language
python-3.7.7 interpreted object-oriented programming language
quirks-3.325 exceptions to pkg_add rules
rebar19-2.6.2p0 Erlang build tool
recode-3.6p12 convert files between character sets and usages
rhash-1.3.9 utility and library for computing hash sums
rlwrap-0.43p0 generic readline wrapper for various programs
rsync-3.1.3p0 mirroring/synchronization over low bandwidth links
rxvt-unicode-9.22p10 clone of rxvt with Unicode and Xft support
sdl-1.2.15p10 cross-platform multimedia library
sdl2-2.0.12 cross-platform multimedia library
shared-mime-info-1.15 shared mime database for desktops
speex-1.2.0 patent-free speech codec
speexdsp-1.2.0 speech processing DSP library
spidermonkey-60.9.0v1 C/C++ Mozilla's JavaScript engine implementation
sqlite3-3.31.1p0 embedded SQL implementation
startup-notification-0.12p6 library for tracking application startup
sudo-1.8.31 execute a command as another user
tiff-4.1.0 tools and library routines for working with TIFF images
tree-0.62 print ascii formatted tree of a directory structure
unzip-6.0p13 extract, list & test files in a ZIP archive
vala-0.46.9 compiler for the GObject type system
vim-8.2.534-no_x11 vi clone, many additional features
vmm-firmware-1.11.0p2 firmware binary images for vmm(4) driver
wget-1.20.3p3 retrieve files from the web via HTTP, HTTPS and FTP
windowmaker-0.95.8p4 window manager that emulates NEXTSTEP(tm)
wmclockmon-0.8.1p0 WindowMaker dock.app clock
wmnetload-1.3p4 wm-dockapp; simple network interface monitoring tool
x264-20191220p0 free H.264/MPEG-4 AVC encoder
x265-3.3p0 free H.265/HEVC encoder
xdg-utils-1.1.3p1 utilities to assist desktop integration tasks
xvidcore-1.3.5p0 ISO MPEG-4 compliant video codec
xz-5.2.5 LZMA compression and decompression tools
zip-3.0p1 create/update ZIP files compatible with PKZip(tm)
zstd-1.4.4p1 zstandard fast real-time compression algorithm
OpenBSD 6.7 has been upgraded to the 6.8 release.


We just getting started with Artificial Intelligence for self driven car. We will keep posting on our works and resources here.
Check out Ganadev Prajapathy's
work
on artificial intelligence.


If you are interested in joining Lonely Hearts Book Club, please send us a brief description about yourself to the email address below.
LBHC@email.com