11 Geometry11.1 OverviewThe geometry package provides classes useful for many physical simulations in Euclidean spaces, like vectors and rotations in 3D, as well as on the sphere. It also provides a general implementation of Binary Space Partitioning Trees (BSP trees). All supported type of spaces (Euclidean 3D, Euclidean 2D, Euclidean 1D, 2-Sphere and 1-Sphere) provide dedicated classes that represent complex regions of the space as shown in the following table:
All these regions share common features. Regions can be defined from several non-connected parts. As an example, one PolygonsSet instance in Euclidean 2D (i.e. the plane) can represent a region composed of several separated polygons separate from each other. They also support regions containing holes. As an example a SphericalPolygonsSet on the 2-Sphere can represent a land mass on the Earth with an interior sea, where points on this sea would not be considered to belong to the land mass. Of course more complex models can also be represented and it is possible to define for example one region composed of several continents, with interior sea containing separate islands, some of which having lakes, which may have smaller island ... In the infinite Euclidean spaces, regions can have infinite parts. for example in 1D (i.e. along a line), one can define an interval starting at abscissa 3 and extending up to infinity. This is also possible in 2D and 3D. For all spaces, regions without any boundaries are also possible so one can define the whole space or the empty region. The classical set operations are available in all cases: union, intersection, symmetric difference (exclusive or), difference, complement. There are also region predicates (point inside/outside/on boundary, emptiness, other region contained). Some geometric properties like size, or boundary size can be computed, as well as barycenters on the Euclidean space. Another important feature available for all these regions is the projection of a point to the closest region boundary (if there is a boundary). The projection provides both the projected point and the signed distance between the point and its projection, with the convention distance to boundary is considered negative if the point is inside the region, positive if the point is outside the region and of course 0 if the point is already on the boundary. This feature can be used for example as the value of a function in a root solver to determine when a moving point crosses the region boundary. 11.2 Euclidean spacesVector1D, Vector2D and Vector3D provide simple vector types. One important feature is that instances of these classes are guaranteed to be immutable, this greatly simplifies modeling dynamical systems with changing states: once a vector has been computed, a reference to it is known to preserve its state as long as the reference itself is preserved. Numerous constructors are available to create vectors. In addition to the straightforward Cartesian coordinates constructor, a constructor using azimuthal coordinates can build normalized vectors and linear constructors from one, two, three or four base vectors are also available. Constants have been defined for the most commons vectors (plus and minus canonical axes, null vector, and special vectors with infinite or NaN coordinates). The generic vectorial space operations are available including dot product, normalization, orthogonal vector finding and angular separation computation which have a specific meaning in 3D. The 3D geometry specific cross product is of course also implemented. Vector1DFormat, Vector2DFormat and Vector3DFormat are specialized classes for formatting output or parsing input with text representation of vectors. Rotation represents 3D rotations. Rotation instances are also immutable objects, as Vector3D instances. Rotations can be represented by several different mathematical entities (matrices, axe and angle, Cardan or Euler angles, quaternions). This class presents a higher level abstraction, more user-oriented and hiding implementation details. Well, for the curious, we use quaternions for the internal representation. The user can build a rotation from any of these representations, and any of these representations can be retrieved from a Rotation instance (see the various constructors and getters). In addition, a rotation can also be built implicitly from a set of vectors and their image. This implies that this class can be used to convert from one representation to another one. For example, converting a rotation matrix into a set of Cardan angles can be done using the following single line of code: double[] angles = new Rotation(matrix, 1.0e-10).getAngles(RotationOrder.XYZ, RotationConvention.FRAME_TRANSFORM); Focus is oriented on what a rotation does rather than on its underlying representation. Once it has been built, and regardless of its internal representation, a rotation is an operator which basically transforms three dimensional vectors into other three dimensional vectors. Depending on the application, the meaning of these vectors may vary as well as the semantics of the rotation. For example in a spacecraft attitude simulation tool, users will often consider the vectors are fixed (say the Earth direction for example) and the rotation transforms the coordinates coordinates of this vector in inertial frame into the coordinates of the same vector in satellite frame. In this case, the rotation implicitly defines the relation between the two frames (we have fixed vectors and moving frame). Another example could be a telescope control application, where the rotation would transform the sighting direction at rest into the desired observing direction when the telescope is pointed towards an object of interest. In this case the rotation transforms the direction at rest in a topocentric frame into the sighting direction in the same topocentric frame (we have moving vectors in fixed frame). In many case, both approaches will be combined, in our telescope example, we will probably also need to transform the observing direction in the topocentric frame into the observing direction in inertial frame taking into account the observatory location and the Earth rotation. In order to support naturally both views, the enumerate RotationConvention has been introduced in version 3.6. This enumerate can take two values: VECTOR_OPERATOR or FRAME_TRANSFORM. This enumerate must be passed as an argument to the few methods that depend on an interpretation of the semantics of the angle/axis. The value VECTOR_OPERATOR corresponds to rotations that are considered to move vectors within a fixed frame. The value FRAME_TRANSFORM corresponds to rotations that are considered to represent frame rotations, so fixed vectors coordinates change as their reference frame changes. These examples show that a rotation means what the user wants it to mean, so this class does not push the user towards one specific definition and hence does not provide methods like projectVectorIntoDestinationFrame or computeTransformedDirection. It provides simpler and more generic methods: applyTo(Vector3D) and applyInverseTo(Vector3D). Since a rotation is basically a vectorial operator, several rotations can be composed together and the composite operation r = r1 o r2 (which means that for each vector u, r(u) = r1(r2(u))) is also a rotation. Hence we can consider that in addition to vectors, a rotation can be applied to other rotations as well (or to itself). With our previous notations, we would say we can apply r1 to r2 and the result we get is r = r1 o r2. For this purpose, the class provides the methods: compose(Rotation, RotationConvention) and composeInverse(Rotation, RotationConvention). There are also shortcuts applyTo(Rotation) which is equivalent to compose(Rotation, RotationConvention.VECTOR_OPERATOR) and applyInverseTo(Rotation) which is equivalent to composeInverse(Rotation, RotationConvention.VECTOR_OPERATOR). 11.3 n-SphereThe Apache Commons Math library provides a few classes dealing with geometry on the 1-sphere (i.e. the one dimensional circle corresponding to the boundary of a two-dimensional disc) and the 2-sphere (i.e. the two dimensional sphere surface corresponding to the boundary of a three-dimensional ball). The main classes in this package correspond to the region explained above, i.e. ArcsSet and SphericalPolygonsSet. 11.4 Binary Space PartitioningBSP trees are an efficient way to represent space partitions and to associate attributes with each cell. Each node in a BSP tree represents a convex region which is partitioned in two convex sub-regions at each side of a cut hyperplane. The root tree contains the complete space. The main use of such partitions is to use a boolean attribute to define an inside/outside property, hence representing arbitrary polytopes (line segments in 1D, polygons in 2D and polyhedrons in 3D) and to operate on them. This is how the regions explained above in the Euclidean and Sphere spaces are implemented. The partitioning package provides the engine to do the computation, but not the dimension-specific implementations. The various interfaces in this package (hyperplane, sub-hyperplane, embedding, and even region) are therefore not considered to be reusable public interface, they are private interface. They may change and users are not expected to rely directly on them. What users can rely on is the BSP tree class itself, and the space-specific implementations of the interfaces (i.e. Plane in 3D as the implementation of hyperplane, or S2Point on the 2-Sphere as the implementation of Point). Another example of BST tree use would be to represent Voronoi tesselations, the attribute of each cell holding the defining point of the cell. This is not available yet. The application-defined attributes are shared among copied instances and propagated to split parts. These attributes are not used by the BSP-tree algorithms themselves, so the application can use them for any purpose. Since the tree visiting method holds internal and leaf nodes differently, it is possible to use different classes for internal nodes attributes and leaf nodes attributes. This should be used with care, though, because if the tree is modified in any way after attributes have been set, some internal nodes may become leaf nodes and some leaf nodes may become internal nodes. 11.5 RegionsThe regions in all Euclidean and spherical spaces are based on BSP-tree using a Boolean attribute in the leaf cells representing the inside status of the corresponding cell (true for inside cells, false for outside cells). They all need a tolerance setting that is either provided at construction when the region is built from scratch or inherited from the input regions when a region is build by set operations applied to other regions. This setting is used when the region itself will be used later in another set operation or when points are tested against the region to compute inside/outside/on boundary status. This tolerance is the thickness of the hyperplane. Points closer than this value to a boundary hyperplane will be considered on boundary. There are no default values anymore for this setting (there was one when BSP-tree support was introduced, but it created more problems than it solved, so it has been intentionally removed). Setting this tolerance really depends on the expected values for the various coordinates. If for example the region is used to model a geological structure with a scale of a few thousand meters, the expected coordinates order of magnitude will be about 103 and the tolerance could be set to 10-7 (i.e. 0.1 micrometer) or above. If very thin triangles or nearly parallel lines occur, it may be safer to use a larger value like 10-3 for example. Of course if the BSP-tree is used to model a crystal at atomic level with coordinates of the order of magnitude about 10-9 the tolerance should be drastically reduced (perhaps down to 10-20 or so). The recommended way to build regions is to start from basic shapes built from their boundary representation and to use the set operations to combine these basic shapes into more complex shapes. The basic shapes that can be constructed from boundary representations must have a closed boundary and be in one part without holes. Regions in several non-connected parts or with holes must be built by building the parts beforehand and combining them. All regions (IntervalsSet, PolygonsSet, PolyhedronsSet, ArcsSet, SphericalPolygonsSet) provide a dedicated constructor using only the mandatory tolerance distance without any other parameters that always create the region covering the full space. The empty region case, can be built by building first the full space region and applying the RegionFactory.getComplement() method to it to get the corresponding empty region, it can also be built directly for a one-cell BSP-tree as explained below. Another way to build regions is to create directly the underlying BSP-tree. All regions (IntervalsSet, PolygonsSet, PolyhedronsSet, ArcsSet, SphericalPolygonsSet) provide a dedicated constructor that accepts a BSP-tree and a tolerance. This way to build regions should be reserved to dimple cases like the full space, the empty space of regions with only one or two cut hyperplances. It is not recommended in the general case and is considered expert use. The leaf nodes of the BSP-tree must have a Boolean attribute representing the inside status of the corresponding cell (true for inside cells, false for outside cells). In order to avoid building too many small objects, it is recommended to use the predefined constants Boolean.TRUE and Boolean.FALSE. Using this method, one way to build directly an empty region without complementing the full region is as follows (note the tolerance parameter which must be present even for the empty region): PolygonsSet empty = new PolygonsSet(new BSPTree<Euclidean2D>(false), tolerance); In the Euclidean 3D case, the PolyhedronsSet class has another specific constructor to build regions from vertices and facets. The signature of this constructor is: PolyhedronsSet(List<Vector3D> vertices, List<int[]> facets, double tolerance); The vertices list contains all the vertices of the polyhedrons, the facets list defines the facets, as an indirection in the vertices list. Each facet is a short integer array and each element in a facet array is the index of one vertex in the list. So in our cube example, the vertices list would contain 8 points corresponding to the cube vertices, the facets list would contain 6 facets (the sides of the cube) and each facet would contain 4 integers corresponding to the indices of the 4 vertices defining one side. Of course, each vertex would be referenced once in three different facets. Beware that despite some basic consistency checks are performed in the constructor, not everything is checked, so it remains under caller responsibility to ensure the vertices and facets are consistent and properly define a polyhedrons set. One particular trick is that when defining a facet, the vertices must be provided as walking the polygons boundary in trigonometric order (i.e. counterclockwise) as seen from the *external* side of the facet. The reason for this is that the walking order does define the orientation of the inside and outside parts, so walking the boundary on the wrong order would reverse the facet and the polyhedrons would not be the one you intended to define. Coming back to our cube example, a logical orientation of the facets would define the polyhedrons as the finite volume within the cube to be the inside and the infinite space surrounding the cube as the outside, but reversing all facets would also define a perfectly well behaved polyhedrons which would have the infinite space surrounding the cube as its inside and the finite volume within the cube as its outside! If one wants to further look at how it works, there is a test parser for PLY file formats in the unit tests section of the library and some basic ply files for a simple geometric shape (the N pentomino) in the test resources. This parser uses the constructor defined above as the PLY file format uses vertices and facets to represent 3D shapes. |


abstract fun start(): Handler
Starts the actual BLE scanning. The scan will be performed according to the construction parameters of ProximityObserver set by using ProximityObserverBuilder. Notice, that depending on configuration, the ProximityObserver.start method may invoke some additional network calls.
Return
a Handler object that you should use to stop the scanning later on.


Bug 1722010 R[Core:JavaScript: GC]Improve reporting of pretenuring information
Bug 1717873 R[Core:Layout]Thread indentation lines sometimes invisible when printing if using "High Contrast Black" color scheme in Windows 10
Bug 1720464 A[Core:Security: PSM]Upgrade Firefox 92 to use NSS 3.69
Bug 776669 R[Firefox:Tabbed Browser]Add pinned tabs to All Tabs drop-down menu
Bug 1693385 N[WebExtensions:General]support manifest.host_permissions
###########
Changes to 6 bugs - 4 fixed.
1 bugs are not included due to being restricted


| 1 | /* | |
| 2 | * Licensed to the Apache Software Foundation (ASF) under one or more | |
| 3 | * contributor license agreements. See the NOTICE file distributed with | |
| 4 | * this work for additional information regarding copyright ownership. | |
| 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 | |
| 6 | * (the "License"); you may not use this file except in compliance with | |
| 7 | * the License. You may obtain a copy of the License at | |
| 8 | * | |
| 9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
| 10 | * | |
| 11 | * Unless required by applicable law or agreed to in writing, software | |
| 12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
| 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 14 | * See the License for the specific language governing permissions and | |
| 15 | * limitations under the License. | |
| 16 | */ | |
| 17 | package org.apache.commons.math3.stat.clustering; | |
| 18 | ||
| 19 | import java.io.Serializable; | |
| 20 | import java.util.Collection; | |
| 21 | import java.util.Arrays; | |
| 22 | ||
| 23 | import org.apache.commons.math3.util.MathArrays; | |
| 24 | ||
| 25 | /** | |
| 26 | * A simple implementation of {@link Clusterable} for points with double coordinates. | |
| 27 | * @version $Id: EuclideanDoublePoint.java 1413096 2012-11-23 22:34:05Z erans $ | |
| 28 | * @since 3.1 | |
| 29 | */ | |
| 30 | public class EuclideanDoublePoint implements Clusterable<EuclideanDoublePoint>, Serializable { | |
| 31 | ||
| 32 | /** Serializable version identifier. */ | |
| 33 | private static final long serialVersionUID =<PHONE_NUMBER>091227632L; | |
| 34 | ||
| 35 | /** Point coordinates. */ | |
| 36 | private final double[] point; | |
| 37 | ||
| 38 | /** | |
| 39 | * Build an instance wrapping an integer array. | |
| 40 | *
 | |
| 41 | * The wrapped array is referenced, it is not copied. | |
| 42 | * | |
| 43 | * @param point the n-dimensional point in integer space | |
| 44 | */ | |
| 45 | public EuclideanDoublePoint(final double[] point) { | |
| 46 | this.point = point; | |
| 47 | } | |
| 48 | ||
| 49 | /** {@inheritDoc} */ | |
| 50 | public EuclideanDoublePoint centroidOf(final Collection<EuclideanDoublePoint> points) { | |
| 51 | final double[] centroid = new double[getPoint().length]; | |
| 52 | 1 | for (final EuclideanDoublePoint p : points) { |
| 53 | 3 | for (int i = 0; i < centroid.length; i++) { |
| 54 | 1 | centroid[i] += p.getPoint()[i]; |
| 55 | } | |
| 56 | } | |
| 57 | 3 | for (int i = 0; i < centroid.length; i++) { |
| 58 | 1 | centroid[i] /= points.size(); |
| 59 | } | |
| 60 | 1 | return new EuclideanDoublePoint(centroid); |
| 61 | } | |
| 62 | ||
| 63 | /** {@inheritDoc} */ | |
| 64 | public double distanceFrom(final EuclideanDoublePoint p) { | |
| 65 | 1 | return MathArrays.distance(point, p.getPoint()); |
| 66 | } | |
| 67 | ||
| 68 | /** {@inheritDoc} */ | |
| 69 | @Override | |
| 70 | public boolean equals(final Object other) { | |
| 71 | 1 | if (!(other instanceof EuclideanDoublePoint)) { |
| 72 | 1 | return false; |
| 73 | } | |
| 74 | 1 | return Arrays.equals(point, ((EuclideanDoublePoint) other).point); |
| 75 | } | |
| 76 | ||
| 77 | /** | |
| 78 | * Get the n-dimensional point in integer space. | |
| 79 | * | |
| 80 | * @return a reference (not a copy!) to the wrapped array | |
| 81 | */ | |
| 82 | public double[] getPoint() { | |
| 83 | 1 | return point; |
| 84 | } | |
| 85 | ||
| 86 | /** {@inheritDoc} */ | |
| 87 | @Override | |
| 88 | public int hashCode() { | |
| 89 | 1 | return Arrays.hashCode(point); |
| 90 | } | |
| 91 | ||
| 92 | /** {@inheritDoc} */ | |
| 93 | @Override | |
| 94 | public String toString() { | |
| 95 | 1 | return Arrays.toString(point); |
| 96 | } | |
| 97 | ||
| 98 | } | |
Mutations | ||
| 52 |
negated conditional : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 53 |
changed conditional boundary : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) Changed increment from 1 to -1 : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) negated conditional : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 54 |
Replaced double addition with subtraction : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 57 |
Changed increment from 1 to -1 : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) changed conditional boundary : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) negated conditional : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 58 |
Replaced double division with multiplication : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 60 |
mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::centroidOf to ( if (x != null) null else throw new RuntimeException ) : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testCentroid(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 65 |
replaced return of double value with -(x + 1) for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::distanceFrom : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testDistance(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 71 |
negated conditional : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testSerial(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 72 |
replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE |
|
| 74 |
replaced return of integer sized value with (x == 0 ? 1 : 0) : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testSerial(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 83 |
mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::getPoint to ( if (x != null) null else throw new RuntimeException ) : KILLED -> org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest.testArrayIsReference(org.apache.commons.math3.stat.clustering.EuclideanDoublePointTest) |
|
| 89 |
replaced return of integer sized value with (x == 0 ? 1 : 0) : SURVIVED |
|
| 95 |
mutated return of Object value for org/apache/commons/math3/stat/clustering/EuclideanDoublePoint::toString to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |


Select the file you want to translate.
The file can be of format XLIFF 1.2, XLIFF 2.0 or XMB.
The file will be stored in your browser local storage until you export the translated version.
You selected an xtb file.
This file type only contains one language, the target language.
To show you the original source texts, you should also select the master xmb file.


Home
NER in CCA Dataset
Metadata v/s File Sizes
TextExtraction vs Parser Heirarchy
Metadata vs Parser Heirarchy
Language Diversity
Language Word Cloud
Sweet Concepts Word Cloud
Comparing NER toolkits
NER on Files
Measurements diversity (By Type)
Measurements diversity (By Domain)
Measurements diversity (By MIME Type)
Team 24 - NLTK vs OpenNLP vs CoreNLP vs Grobid vs nltk+open+Core vs ALL vs Measurement


160,000 Singaporeans hospitalised from stress every year, with over 14 million stress-related doctor visits: report, Business Insider - Business Insider Singapore
by Rachel Genevieve ChiaFeeling stressed right now? You’re not alone – Singapore forks out billions of dollars a year to treat stress-related medical problems, a new global report on stress in eight countries has found.
The report, published in November by health insurance firm Cigna, looked at the costs of treating stress in Singapore, the US, UK, Australia, Taiwan, Thailand, Hong Kong, the UAE, and South Korea.
For local findings, the report took data from the Ministry of Health, National Healthcare Group Polyclinics, SingHealth, Raffles Medical and Parkway Holdings.
In total, Singaporeans were estimated to have spent a grand total of US$2.3 billion (S$3.1 billion) seeking direct medical help for stress-related illnesses a year – nearly one-fifth of the country’s annual healthcare spending, the report said.
Calling these estimates “inherently conservative”, it added that the actual figures would likely be far higher after taking into account indirect healthcare costs caused by stress.
The report identified stress-related illnesses as stress-related mental issues, stress manifesting as medically unexplained conditions, and physical symptoms commonly associated with stress, including irritable bowel syndrome or lower back pain.
It defined these illnesses based on medical research in 500 peer-reviewed journal articles on the impact of stress on people’s health.
Stress-related illnesses caused over 160,000 hospital stays and over 3 million hospital visits for treatment annually in Singapore, the report said.
It also accounted for 240,000 Accident & Emergency department admissions, or every one in five cases.
According to the report, one in every three GP visits here was linked to stress-related conditions, totalling 11 million appointments a year.
Based on the findings, it added that hospitals here could free up more beds by teaching staff to detect and manage patients with stress conditions, and working to identify patients with stress-related illnesses earlier the treatment process.
Read also:
- A whopping 92% of working Singaporeans are stressed – and women are prioritising families over themselves, study finds
- Stress hurts your health only if you think it will, researchers say
- A study says millennials are becoming perfectionists because they’re always being evaluated – and it’s leading to suicide and depression


Resoures about Mental Health and Becoming an Overcomer
Anxiety
10 Most Common Anxiety Symptoms - Mental Health
HOW TO OVERCOME DEPRESSION | ANXIETY | HARD TIMES
Bipolar Disorder
What’s It Like To Have Bipolar Disorder
>
TEDxTerryTalks - Laura Bain - Living with Bipolar Type II
Addiction
Everything you think you know about addiction is wrong | Johann Hari
Childhood Trauma, addition, and mental illness
The Connections Between Eating Disorders and Addictions
Eating Disorders And Addiction, Whats The Relationship?
30 Minute Binaural Beats Therapy: Eating Disorder, Meditation Sound, Brain Power, Isochronic Tones
Dissociative Identity Disorder
What is Dissociative Identity Disorder? Multiple Personalities | Kati Morton treatment trauma did


Whether you are looking for the highest testing cannabis strain or the best deal in the city, use Budtendr's SearchLINK TO SEARCH RESULTS GOES HERE tool to browse thousands of strains and filter them by their results, prices, and more.
Browse dispensaries near you and explore their cannabis flowers, edibles and concentrates.
Recieve our top 10 local highest testing strains and deals every week.


prev next today Oct 31 1999 Oct 30 1999 (Date) +1 +1 +1 -1 -1 -1 update event start update repeating event render new event render new sticky event remove all remove repeating events remove timed events log events log repeating events log all-day events + static events - static events + google-calendar - google-calendar + json - json rerender events refetch events change to month change to dayGridWeek change to dayGridDay getView getDate option getter change width (passive) render change height


That's me, having the fun of my Life!
Name
Jeet Mandaliya
Birthdate
September 11, 2000
Nationality
Indian
Profession
Computer Geek | Student
Best Skill
Art of Googling
Parents
Ajaybhai Mandaliya
Joliben Mandaliya
Sibling
Nirav Mandaliya
(Mechanical Engineer)
First Breath
2000
New Era Primary-School, Rajkot - Gujarat, India
2006
New Era Primary-School, Rajkot - Gujarat, India
2006
First step into HTML, CSS and Front-End Web-Development.
2012
First step into HTML, CSS and Front-End Web-Development.
2012
V.J. Modi High-School, Rajkot - Gujarat, India
2014
10
th
Class (Grades : 1.3)
2015-2016
10
th
Class (Grades : 1.3)
2015-2016
12
th
Class (Grades : 2.2)
2017-2018
IELTS (7.0 Bands,Level C1)
2018
IELTS (7.0 Bands,Level C1)
2018
First instance of NodeJS and ExpressJS with EJS templating and MongoDB with Mongoogse.
Aug 2018
German Telc B2 Level Exam (263/300 Points)
June 2019
Volunteered at WeAreDevelopers World Congress, Berlin
June 2019
Start of the Studienkolleg at TU Berlin
Aug 2019
T
I
M
E
L
I
N
E


Welcome to B a t t l e s h i p s! Both players are present.Waiting for both players to join
Turn indicator: Your turn! YOU WIN! YOU LOST!


IT351 Examination
Attempt every question.
Click on 'Finish Exam' once done.
Give a detailed analysis on HCI Principles.
Why is a mnimaistic approach important?
Explain the job market in India in detail.
What is the use of RNNs and CNNs
How many different ways can attacks be done?
Explain backtracking.
Finish Test


{% csrf_token %}
Movie Describer
List movies
{% csrf_token %}
Title:
Add movie
ID:
Delete movie
{% csrf_token %}
ID:
Comment:
Add comment
ID (optional):
List comments
From:
To:
Get most commented movies


This chart shows the new positive cases every day.
You can add provinces by using the pulldown menu on the bottom and remove them by clicking on the small 'x' near the name. Move the mouse over the graph to see actual numbers.
The vertical scale is logarithmic (an exponential growth looks like a straight line).
Data from the Italian "Protezione civile": https://github.com/pcm-dpc/COVID-19
Source code: https://github.com/gianmarco-todesco/covid-19-it-provinces


| Class and Description |
|---|
| AbstractPayloadConfig
This corresponds to the client's configuration for its various payloads -- tokens in this case.
|
| AbstractPayloadHandler
Created by Jeff Gaynor
on 4/21/20 at 5:00 PM |
| BasicClaimsSourceImpl
The most basic implementation of a
ClaimSource . |
| GroupElement
Created by Jeff Gaynor
on 3/1/18 at 4:11 PM |
| Groups
A model for groups that are returned by various scope handlers.
|
| LDAPClaimsSource
Created by Jeff Gaynor
on 4/26/16 at 3:32 PM |
| PayloadHandlerConfigImpl
The configuration for the payload handler (id token, various access tokens).
|
| ServerQDLScriptHandlerConfig
Created by Jeff Gaynor
on 4/30/22 at 5:55 AM |
| Class and Description |
|---|
| Groups
A model for groups that are returned by various scope handlers.
|
| LDAPClaimsSource
Created by Jeff Gaynor
on 4/26/16 at 3:32 PM |
| Class and Description |
|---|
| AbstractPayloadConfig
This corresponds to the client's configuration for its various payloads -- tokens in this case.
|
| IDTokenClientConfig
Created by Jeff Gaynor
on 7/1/20 at 3:18 PM |
| Class and Description |
|---|
| AbstractAccessTokenHandler
Only create an access token handler if you need some special handling, otherwise the
default simple token will be used.
|
| AbstractPayloadConfig
This corresponds to the client's configuration for its various payloads -- tokens in this case.
|
| AbstractPayloadHandler
Created by Jeff Gaynor
on 4/21/20 at 5:00 PM |
| Groups
A model for groups that are returned by various scope handlers.
|
| PayloadHandlerConfigImpl
The configuration for the payload handler (id token, various access tokens).
|
| Class and Description |
|---|
| AbstractAccessTokenHandler
Only create an access token handler if you need some special handling, otherwise the
default simple token will be used.
|
| AbstractPayloadConfig
This corresponds to the client's configuration for its various payloads -- tokens in this case.
|
| IDTokenHandler
Created by Jeff Gaynor
on 2/16/20 at 6:51 AM |
| PayloadHandlerConfigImpl
The configuration for the payload handler (id token, various access tokens).
|
Copyright © 2022. All rights reserved.


Task Allocation Planner section
In this section you can review and download all the files related to the Task Allocation Planner. The available material includes the assignment problem for the TAP, as well as the solution computed. The files are in the OptaPlanner XML format.
| Assignment Problem File | |
| Solution File |


| Package | Description |
|---|---|
| org.quartz |
The main package of Quartz, containing the client-side interfaces.
|
| org.quartz.commonj | |
| org.quartz.core |
Contains the core classes and interfaces for the Quartz job scheduler.
|
| org.quartz.core.jmx | |
| org.quartz.ee.jta | |
| org.quartz.impl |
Contains implementations of the SchedulerFactory, JobStore, ThreadPool, and
other interfaces required by the org.quartz.core.QuartzScheduler.
|
| org.quartz.impl.jdbcjobstore | |
| org.quartz.impl.jdbcjobstore.oracle | |
| org.quartz.impl.triggers |
This package contains Trigger implementations that ship with Quartz.
|
| org.quartz.plugins | |
| org.quartz.plugins.history | |
| org.quartz.plugins.interrupt | |
| org.quartz.plugins.management | |
| org.quartz.plugins.xml | |
| org.quartz.simpl |
Contains simple / light-weight implementations (with no dependencies on
external libraries) of interfaces required by the
org.quartz.core.QuartzScheduler.
|
| org.quartz.spi |
Contains Service Provider Interfaces that can be implemented by those
wishing to create and use custom versions of Quartz back-end/behind-the-scenes
services.
|
| org.quartz.xml | |
| org.terracotta.quartz | |
| org.terracotta.quartz.wrappers |
| Class and Description |
|---|
| JobFactory
A JobFactory is responsible for producing instances of
Job
classes. |
| MutableTrigger |
| OperableTrigger |
| Class and Description |
|---|
| ThreadExecutor
Allows different strategies for scheduling threads.
|
| Class and Description |
|---|
| JobFactory
A JobFactory is responsible for producing instances of
Job
classes. |
| JobStore
The interface to be implemented by classes that want to provide a
and storage mechanism for the
's use. |
| OperableTrigger |
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| SchedulerSignaler
An interface to be used by
JobStore instances in order to
communicate signals back to the QuartzScheduler . |
| ThreadExecutor
Allows different strategies for scheduling threads.
|
| ThreadPool
The interface to be implemented by classes that want to provide a thread
pool for the
's use. |
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| Class and Description |
|---|
| MutableTrigger |
| OperableTrigger |
| Class and Description |
|---|
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| Class and Description |
|---|
| JobFactory
A JobFactory is responsible for producing instances of
Job
classes. |
| JobStore
The interface to be implemented by classes that want to provide a
and storage mechanism for the
's use. |
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| ThreadExecutor
Allows different strategies for scheduling threads.
|
| ThreadPool
The interface to be implemented by classes that want to provide a thread
pool for the
's use. |
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| JobStore
The interface to be implemented by classes that want to provide a
and storage mechanism for the
's use. |
| OperableTrigger |
| SchedulerSignaler
An interface to be used by
JobStore instances in order to
communicate signals back to the QuartzScheduler . |
| ThreadExecutor
Allows different strategies for scheduling threads.
|
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| TriggerFiredResult |
| Class and Description |
|---|
| OperableTrigger |
| Class and Description |
|---|
| MutableTrigger |
| OperableTrigger |
| Class and Description |
|---|
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| SchedulerPlugin
Provides an interface for a class to become a "plugin" to Quartz.
|
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| InstanceIdGenerator
An InstanceIdGenerator is responsible for generating the clusterwide unique
instance id for a
Scheduler node. |
| JobFactory
A JobFactory is responsible for producing instances of
Job
classes. |
| JobStore
The interface to be implemented by classes that want to provide a
and storage mechanism for the
's use. |
| OperableTrigger |
| SchedulerSignaler
An interface to be used by
JobStore instances in order to
communicate signals back to the QuartzScheduler . |
| ThreadPool
The interface to be implemented by classes that want to provide a thread
pool for the
's use. |
| TimeBroker
Deprecated.
TimeBroker is not currently used in the Quartz code base.
|
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| TriggerFiredResult |
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| MutableTrigger |
| OperableTrigger |
| SchedulerSignaler
An interface to be used by
JobStore instances in order to
communicate signals back to the QuartzScheduler . |
| TriggerFiredBundle
A simple class (structure) used for returning execution-time data from the
JobStore to the
QuartzSchedulerThread . |
| TriggerFiredResult |
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| MutableTrigger |
| Class and Description |
|---|
| ClassLoadHelper
An interface for classes wishing to provide the service of loading classes
and resources within the scheduler...
|
| JobStore
The interface to be implemented by classes that want to provide a
and storage mechanism for the
's use. |
| OperableTrigger |
| SchedulerSignaler
An interface to be used by
JobStore instances in order to
communicate signals back to the QuartzScheduler . |
| TriggerFiredResult |
| Class and Description |
|---|
| OperableTrigger |
Copyright 2001-2019, Terracotta, Inc.


Annika Kaiser
Hi, I'm Annika!
I'm an aspiring front-end web developer.
Take a look at some of the things I've made:
Project 1
Project 2
Project 3
Project 4


--- layout: page permalink: "/community-commissioned/waving-hello/waving-hello004.html" ---
previous | next


14 Jan 2015
The D3 JavaScript library is an awesome tool to create responsive and interative visualizations. In order to sharpen my own D3 skills and to practice incorporating Makefiles into my workflow, I decided to visualize the aggregate income of the counties in the US using a graduated symbol map (bubble map). Mouse over the bubbles for more information about each bubble.
02 Dec 2014
The accurate item and music recommendations of Amazon.com and Pandora.com respectively, have always astounded me. Each system is unique -- tailored and optimized with different considerations in mind. In order to understand how these recommendation systems work, I decided build my own.
Using the dataset provided by the Yelp Dataset Challenge, I built a basic Recommendation System using collaborative filtering
This recommendation system is an ongoing project that will push me to dive deeper and build more sophisticated recommenders while sharpening my python skills.
Please feel free to take a look at the recommendation system I have built so far here: Recommendation System
01 Nov 2014
Recently, I discovered D3 a powerful Javascript library for creating beautiful and responsive data visualizations.
It works seamlessly with existing web technologies can interact with all parts of the DOM (document object model), and is as flexible as the client side web technology stack.
As a simple example, the chart at the bottom of the page uses spline interpolation with D3's built in axes and time scales to visualize your scrolling and clicking activity during your time on this page.
29 Sep 2014
This site serves as a creative and informal introduction to who I am.
Welcome and Enjoy!
Henry Chen


La fanciulla del West (The Girl of the West) is an opera in three acts by Giacomo Puccini to an Italian libretto by Guelfo Civinini and Carlo Zangarini, based on the 1905 play The Girl of the Golden West by the American author David Belasco. Fanciulla followed Madama Butterfly, which was also based on a Belasco play. The opera has fewer of the show-stopping highlights that characterize Puccini's other works, but is admired for its impressive orchestration and for a score that is more melodically integrated than is typical of his previous work. Fanciulla displays influences from composers Claude Debussy and Richard Strauss, without being in any way imitative.


[§201-103] Studies. The director of business, economic development, and tourism may conduct studies necessary to prepare recommendations on the development of markets for recycled materials. [L 1991, c 324, pt of §3]


Gain access to our multi-asset trading platform and you can trade Forex, stocks, futures, and CFDs all through one platform.
We provide you with all the necessary tools for financial trading, including:
Technical and
fundamental analysis
Alogorithmic and
copy trading
Custom technical indicators
and trading robots
Why Choose Champion FX
The Client is always King
Low-Cost Trading
Licensed Broker
Personalised Customer Service
Tight Spreads with No Commission
Access to the Largest Market of Expert Advisors
Trade a Wide Range of Markets
No Dealing Desk (NDD) Execution
Customised Trading Conditions
Low Latency & Fast Execution
Lightning Fast deposits & Withdrawals
Fast & Hassle-Free Account Opening
Gold Spreads Fixed at 10 Cents
Wide Choice of Platforms - Desktop, Web & Mobile
Unbeatable Leverage Up to 1,000


{% extends "sc_base.html" %} {% block title %}
You account is not verified yet. You have to be a verified user to create contracts>


{% extends "layouts/base.html" %} {% block body%}
Connect with us in our Google groups community forum.
Keep up to date with the latest developments for supplychainpy.
Follow us on twitter and keep the conversation alive.
Follow @supplychainpy


Traditions and Hearthside Stories of West Cornwall, Vol. 2, by William Bottrell, [1873], at sacred-texts.com
Antiquaries are undecided with respect to the purpose for which these mysterious stones were erected. Some hold that it is a sepulchral monument, as well as the Men Scryfa (inscribed stone) half a mile further on, because there is a tradition that a little below, in Gendhal moor, there was once so great a battle that the streams ran with blood. Others think the object of its erection was for the computation of time among the latter is Professor Max Müller who, in the Quarterly Review, for August, 1867, after stating that the three stones are in a line bearing nearly east and west, says:—
"This Men-an-tol may be an old dial, erected originally to fix the proper time for the celebration of the autumnal equinox,
and, though it may have been applied to other purposes likewise, such as the curing of children by dragging them several times through the hole, still its original intention may have been astronomical."
He also thinks that the Men-heeres (long stones) served the same purpose, as they are mostly found in pairs bearing nearly east and west.
The Tolmen, in Constantine parish, and holed stones in other parts of the county, were used the same way as Lanyon Crickstone for curing various ailments.
To cure boils and rheumatism, persons "crame" nine times against the sun, under a bramble-growing at both ends.
The notion is that going against the sun will backen a disease but in all other cases the sun's course must be followed.


{% if data['defendant'] == "mediation" %} Claimant's response {% else %} Defendant's response {% endif %} Free mediation
{% if data['defendant'] == "mediation" %}The claimant has asked for mediation to help resolve this dispute.
{% endif %}A mediator will:
- listen to each side separately - you won’t talk to directly to the other side
- ask you to consider what the other side says, but won’t make you compromise
- help you reach an agreement, if possible
Will you try mediation?
*Source: Money Claim Mediation Service statistics, April 2015 to March 2016.


Class tent.changes.Observable
Observes changes on a Javascript object and notifies them to subscribed handlers
- Defined in: changes.js
| Constructor Attributes | Constructor Name and Description |
|---|---|
|
tent.changes.Observable(subject)
Creates a new Observable that notifies changes on a Javascript object,
see http://en.wikipedia.org/wiki/Observer_pattern
|
| Field Attributes | Field Name and Description |
|---|---|
|
Changes (Array of tent.changes.Change occurred while suspended (see #suspend)
|
|
|
Object or Array beeing observed
|
|
|
Indicates if change notification is suspended, see #suspend and #resume
This can be used to suspend notifications while performing bulk changes.
|
Method Summary
| Method Attributes | Method Name and Description |
|---|---|
|
bind(eventType, handler)
Binds a change handler to an event type, see tent.changes.EventTypes
|
|
|
interceptArrayModifiers(options)
Intercepts all array modifying functions on #subject (if #subject is an Array)
The only modifications that are not intercepted are:
|
|
|
interceptFunction(name, override)
Intercepts a function on #subject
|
|
|
interceptProperties(options)
Intercepts properties of #subject, if new properties are added this function can be called again (it's idempotent)
|
|
|
interceptProperty(name, _name, getter, setter)
Intercepts a property on #subject
|
|
|
isValidHandler(handler)
Test if an object is a valid change handler, eg: a function or an object with handle() function
This function is used to test handlers when binding #bind
|
|
|
log(enable)
Activates/Deactivates logging of changes, a default tent.changes.LogHandler is used.
|
|
|
removeInterceptor(name)
Removes an interceptor by name, restoring the property or function original state
|
|
|
Removes all interceptors, see #removeInterceptor
|
|
|
resume()
Resumes change notification, notifying at once all changes ocurred while suspended
If few changes have ocurred while suspended (5 or less) they are all notified in order.
|
|
|
suspend()
Suspends change notification, see #suspended
|
|
|
unbind(eventType, handler)
Unbinds a handler
|
|
|
unbindWhere(filter)
Unbinds all handlers that pass a filter
|
Class Detail
tent.changes.Observable(subject)
Creates a new Observable that notifies changes on a Javascript object,
see http://en.wikipedia.org/wiki/Observer_pattern
- Parameters:
- {Object} subject
- the object to observe
Field Detail
{Array}
changesWhileSuspended
Changes (Array of tent.changes.Change occurred while suspended (see #suspend)
{Object|Array}
subject
Object or Array beeing observed
{Boolean}
suspended
Indicates if change notification is suspended, see #suspend and #resume
This can be used to suspend notifications while performing bulk changes.
Changes while suspended are notified on resume.
Method Detail
-
{Boolean} bind(eventType, handler)Binds a change handler to an event type, see tent.changes.EventTypes
- Parameters:
- {Number} eventType Optional
- a value of tent.changes.EventTypes, if none is provided all events are included
- {Object|function()} handler
- a valid change handler, see #isValidHandler
- Returns:
- {Boolean} false if no action has been performed (ie: the binding already exists)
-
{tent.changes.Observable} interceptArrayModifiers(options)Intercepts all array modifying functions on #subject (if #subject is an Array)
The only modifications that are not intercepted are:
- setting by index, ie: array[index]=value, use array.set(index,value) instead.
- setting array length property, ie: array.length = newlength, use array.setLength(newLength) instead.
- Parameters:
- {Object} options Optional
- intercepting options
- Returns:
- {tent.changes.Observable} this
-
interceptFunction(name, override)Intercepts a function on #subject
- Parameters:
- {Object} name
- the function name
- {Object} override
- the function to use as replacement
-
{tent.changes.Observable} interceptProperties(options)Intercepts properties of #subject, if new properties are added this function can be called again (it's idempotent)
- Parameters:
- {Object} options Optional
- intercepting options
- {function()} options.propertyFilter Optional
- property filter, by default all properties starting with underscore are filtered
- {String} options.backPropertyPrefix Optional
- prefix for back storage properties, by default is underscore
- {Boolean} options.trackDomProperties Optional
- if true dom properties are intercepted too (by default false), see tent.isDomObject and tent.isDomProperty
- Returns:
- {tent.changes.Observable} this
-
{Object} interceptProperty(name, _name, getter, setter)Intercepts a property on #subject
- Parameters:
- {String} name
- property name
- {String} _name
- back storage property name
- {function()} getter
- getter function
- {function()} setter
- setter function
- Returns:
- {Object} the new interceptor, or the already existing if there was one.
-
{Boolean} isDOMObject()
- Returns:
- {Boolean} true if #subject is a DOM Object, see tent.isDOMObject
-
{Boolean} isValidHandler(handler)Test if an object is a valid change handler, eg: a function or an object with handle() function This function is used to test handlers when binding #bind
- Parameters:
- {Object|function()} handler
- Returns:
- {Boolean} true if handler is a valid change handler
-
{Boolean} log(enable)Activates/Deactivates logging of changes, a default tent.changes.LogHandler is used.
- Parameters:
- {Boolean} enable Optional
- true to enable (default), false to disable
- Returns:
- {Boolean} false if no action has been performed (ie: logging was already enabled/disabled)
-
removeInterceptor(name)Removes an interceptor by name, restoring the property or function original state
- Parameters:
- {String} name
- a function or property name on #subject
-
removeInterceptors()Removes all interceptors, see #removeInterceptor
-
resume()Resumes change notification, notifying at once all changes ocurred while suspended If few changes have ocurred while suspended (5 or less) they are all notified in order. If many changes have ocurred a tent.changes.EventTypes.MANYCHANGES event is fired with all changes packed in its data
-
suspend()Suspends change notification, see #suspended
-
{Boolean} unbind(eventType, handler)Unbinds a handler
- Parameters:
- {Number} eventType Optional
- a value of tent.changes.EventTypes, if none is provided all events are included
- {Object|function()} handler
- the handler to unbind
- Returns:
- {Boolean} false if no action has been performed (ie: the binding doesn't exists)
-
{Boolean} unbindWhere(filter)Unbinds all handlers that pass a filter
- Parameters:
- {function()} filter
- a function that receives a handler and returns true if it must be unbound
- Returns:
- {Boolean} false if no action has been performed (ie: no handler has been unbound)


Products Used
Others
Others 1
Others 2
Others 3
Others 4
Others
Others 1
Others 2
Others 3
Others 4
Others
Others 1
Others 2
Others 3
Others 4
Others
Others 1
Others 2
Others 3
Others 4
Others
Others 1
Others 2
Others 3
Others 4


{% extends "global/Page.html" %} {% load otree static %} {% block title %} {% endblock %} {% block content %} {% if player.treatment == 0 %}
Please indicate on a scale from 1 to 10 how happy you are with your life in general.
{% else %}How many friends do you approximately have on social media?
{% endif %} {% formfields %} {% next_button %} {% endblock %}


var onProcessorErrorListener: ((Throwable) -> Boolean)?
Callback for any critical errors that occur while processing compact blocks.


public class AnswerDbUtil
extends java.lang.Object
AnswerDbUtil
Reads answers and total of votes from the database
and writes the selected vote to the database. Using JDBC to Connect Tomcat to
MySQL This means that the resource is in the Context element in
META-INF/context.xml. This will direct Tomcat to create the resource when the
application launches. The resource reference is in the "WEB-INF/web.xml"
file. This provides a references to the database The JDBC ‐ drivers of MySQL
should be in the project libraries so there can be a database connection.| Constructor and Description |
|---|
AnswerDbUtil(javax.sql.DataSource theDataSource)
AnswerDbUtil Class constructor specifying number of objects
to create. |
| Modifier and Type | Method and Description |
|---|---|
int |
getTotalVote()
getTotalVote Gets total of votes from database |


RPSLS
Play
(current)
Account:
Rules
Rock Paper Scissors
Lizard Spock
Start a game
Replay ?
Waiting for an opponent...
Make your move !
You WIN!
You LOOSE!
It's a draw!
Waiting...
Rules of the game


Trying to get a Job
Customer
Account
Info
Purchases
Create a Customer
First Name:
Last Name:
Address
City
State
Zip Code
submit


If, for some reason, you need to change your API key.
Click the button below to create a new one.
Please note that this will invalidate the current API key, and
all of your game clients must switch API keys.
Current API key: {{ current_user.game.api_key }}
Delete Your Account
This action is irreversible and all data will be lost. If you're still inclined
to delete your account, click the button below.


Android is a Linux-based system from Google now found on phones, tablets and various miscellaneous devices.
Android doesn't have a means of listing the input and output devices.
Instead there are methods to query the state of various assumed or possible
devices. The page
Dealing with Audio Output Hardware
gives the code using AudioManager
methods
if (isBluetoothA2dpOn()) {
// Adjust output for Bluetooth.
} else if (isSpeakerphoneOn()) {
// Adjust output for Speakerphone.
} else if (isWiredHeadsetOn()) {
// Adjust output for headsets
} else {
// If audio plays and noone can hear it, is it still playing?
}
I have an Android device designed to be hooked up to a TV (or similar) and used as a media player, browser, etc. It is branded in various ways: in Australia it was sold by Kogan as the Agora Adroid TV, and is available in other countries under different names while the OEM appears to be jointech.com.hk selling it as the JTV220 Android TV.
This device is stuck on Android 2.2 and the OEM has not released any upgrades. Android 2.2 was not the greatest for media support and will not - for example - stream Ogg Vorbis audio files from HTTP servers.
I also have an Asus TF101 Transformer running 4.0.3. Media support is much more advanced.
The list of supported types is Android Supported Media Formats .
An app can get media from various sources
I'm not so much interested in the first two. They are discussed in books such as "Pro Android Media Developing Graphics, Music, Video, and Rich Media Apps for Smartphones and Tablets" by Shawn Van Every from APress.
An SD card on my ASUS Transformer is mounted into /Removable/SD
.
I put audio files into a subdirectory Music
. Files from here can
be played using an Android MediaPlayer
. There is a state machine
model for setting up the media player to play files: here it consists of
setting a data source and then calling prepare()
and start()
.
The only wrinkle in this is actually finding the path to the data file: in the
Android, the File
class doesn't like a path with embedded '/'.
So you have to walk the file path one directory at a time till you get to the
file itself. Note that the ASUS Transformer has an internal SD card, and the
"recommended" way of getExternalStorageDirectory returns the internal card
and not the external one!
I'm not going to go through any of how to set up an environment such as Eclipse or how to build projects. Once done, an app can be "exported" to an SD card and installed from the file browser. A player for a single file on the SD disk looks like
This app requires access to read the SD card. In the AndroidManifest file this is given by
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
The MediaPlayer
will take the URL of an audio file - in some versions
of Android and for some file types. This is sad, particularly for me since
Android 2.2 won't stream Ogg files and my media player can't be upgraded
from 2.2.
When an app can't stream a file from the web, we have to do silly tricks like downloading it locally and then playing it. That code looks like
This app requires access to the internet to get the resource. In the AndroidManifest file this is given by
<uses-permission android:name="android.permission.INTERNET"/>
There are two ways: using MediaRecorder
or AudioRecorder
.
The second gives you more control. An example using this is given as
Android audio recording, part 2
by Krishnaraj Varma.
This app requires RECORD_AUDIO permission. In the AndroidManifest file this is given by
<uses-permission android:name="android.permission.INTERNET"/>
Best so far: http://stackoverflow.com/questions/2413426/playing-an-arbitrary-tone-with-android
void playSound(){
final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, generatedSnd.length,
AudioTrack.MODE_STATIC);
audioTrack.write(generatedSnd, 0, generatedSnd.length);
audioTrack.play();
}
Similar stuff at http://www.speakingcode.com/2012/01/01/playing-with-android-audiotrack-to-generate-sounds/ Playing with Android AudioTrack to Generate Sounds, but no code
Code at http://masterex.github.com/archive/2012/05/28/android-audio-synthesis.html Android: Crafting a Metronome with Audio Synthesis
Replaying the audio recorded from the microphone to the output device makes use of two
objects: an AudioRecord
to capture data from the microphone and an
AudioTrack
to send it to the output device. The previous program for
recording audio just needs to write the data to an AudioTrack
object
instead of to a file.
The code is PlayMicrophone.java:
This app requires RECORD_AUDIO permission. In the AndroidManifest file this is given by
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
On my ASUS Transformer with 4.0, the input and output devices both require a minimum buffer of 8192 bytes with a sample rate of 44100hz. The latency is poor: 330 milliseconds and is similar to other reports. It is not usable for realtime record and playback. The new APIs in 4.1 may improve the situation.
The Android MediaPlayer
supports the playback of MIDI files.
See
The state of MIDI support on Android
.
It uses the Sonivox EAS (Embedded Audio Synthesis).
The audio/video components of Android systems are Java layered on top of OpenMAX - a C-based system for low-end devices. This is partly covered in the chapter OpenMAX and and OpenSL . The links using NDK will be explored inlater editions of this book.
Android offers a Java API for dealing with audio. It suffers from version dependencies and the failure to have an open model for the ROMs means that you can be stuck with an old version of Android which you can't upgrade.


Staying at home for long periods shouldn't be easy.
So we’ll catalog ideas, games, games, movies, books, raw materials, tips and everything necessary to make this most interesting moment.
Start by clicking on see ideas to see the registered ideas and contribute adding your idea.


R notebooks
On the 1st of June session, Natalie showed how to use R markdown
to use R studio
like a pro!
This was a nice follow up to last session on Markdown. In fact, Natalie showed us how to use markdown in R studio in order to write a complete notebook using R notebooks. You can see her cool entire module written all in markdown as a book (with chapters and everything). For more details, have a look at her repository that has all the nuts and bolts (don’t hesitate to clone/modify!).
Written on June 1, 2017


I recently aquired some Hawaiin Baby Woodrose seeds from a source claiming that they were grown in Hawaii. I had read numerous reports concerning the fuzzy coating surrounding the seeds. Some theorize that these seeds (and morning glories) are intentially poisoned by seed companies to disccourage people from consuming these seeds. Also, I have heard that these seeds and others such as Apple seeds naturally produce cyanide inside their seeds. Nevertheless, I thought it would be a good idea to scrape these fuzzy coatings off before consuming the seeds.
First off, this is no way my first experience tripping or other highs. It would be easier to name what I haven't done. Notable psychedelics that I have done would include LSD, MDMA, MDEA, 5-MeO-DiPT, Salvia, DiPT, 2CT7, Psilocybin + Psilocyn Mushrooms, Amanita Muscaria Mushrooms, DXM, Ketamine, AMT and probably some others that have been forgotten. Basically saying I have seen a large spectrum of hallucinagenic substances.
Anyway, getting onto the real experience. I have read many reports of people complaining of being nauseous and hear the same from experiences of my friends. I have never felt nausea from LSD and thought maybe the possible naturally cyanide inside would be the culprit. So thinking of putting LSD on my toungue and letting it absorb sublingually, I chewed the up 10 seeds (that had the fuzzy coating scraped off) and kept them soaking in my mouth for as long as I could. The strange taste from the seeds began to build up after 15 mins or so and I couldn't take it and spit out the seeds, Being completely sober before chewing the seeds, I felt a strange head change. This was about 9:30 PM.
I then started to play Grand Turismo 3 for Playstation 2. I dont like sitting around thinking about the experience to come. I figured Video games would keep myself occupied for a while.
Around ten o'clock I thought it would be worthwhile to eat some more seeds. This time I thought, I will swallow them. I chewed up the seeds and swallowed them with some Dr. Pepper.
Instanly after I guess the first 10 seeds kicked in. I suddenly felt anxious. Suddenly the nauseau built in my stomach. I looked at the video game screen and thought I shouldn't have swallowed those seeds.
I decided to try smoking a nice nugget from my glass pipe. A couple puffs of the sweet sinsemillia and my nausea was gone. Also, accompanying my stomach feeling better were the start of visuals.
Around 11:30, I looked at my pupils in the mirror.  But, I never beleive I am tripping unless my pupils cover most of the colored part of my eye. I was a little discouraged, but I still felt a nice buzz. No one can put the way they feel in words, its impossible. However, it did feel like its cousin LSD. But, instead of being stimulated, my body felt depressed. I was really lazy, lying down. Something I would never do on acid. I wasn't sure if this was due to the LSA or other ergoline contents of the seeds or the intoxicating effects of possibly cyanide.
I decided to chew up 4 more seeds and held them on my toungue but did not smallow them.  I was surely tripping now.
I looked at my pupils and I could see only large black pools of oil, I thought. The walls began to breathe and things began to 'shift.' This was different from the flowing motion produced by LSD, Psilocybin, or 2CT7. I would look at the celing and it would shift right, then back. Something I have never seen from any other hallucinagen.
I packed up my bong with some more sensi. I took a couple hits and felt even more intoxicated. These seeds feel so different than all the other trips I have done. I feel like I have downed a 12 pack of Beer, but took some LSD on top of it. I usually drink when I trip and this is what it felt like.
I thought about so many things in my life. I also thought about how I wanted to talk to people. I usually trip with other people, this was a unique thing for me to trip by myself. I also thought about all the crazy subtances I have consumed and the impact on my brain. Nevertheless, i was enjoying myself.
I chilled out for a while, smoked some more Cannabis and watched Pulp Fiction for a while. Around 3 AM, I felt drowsy and ending up falling asleep very easy. This also totally different from all the other psychedelics I have done. It didn't interrupt my sleeping pattern.
I was extremely impressed witht these seeds. I slept all night and woke up feeling excellent. No hangover. I felt extremely happy the whole next day. I think when I chew them up and keep them in my mouth, the LSA and ergolines are absorbed but not the toxic substances of the seeds. Unfortunately, I need to consume nearly twice as many seeds for similar effect to swallowing. Not swallowing them makes them feel more psychedelic and less intoxicated drunk feeling.
I liked these seeds and did not ever get the 'freaked' out feeling achieved by Mushrooms or LSD. They seemed to have more effects on my body and my vision than my thought processes. Overall, I'd say they feel like good clean hippy acid, but even more natural and way less stimulating.
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.


Comments
-
Greg Hurrell
Status changed:
- From: New
- To: Open
-
Greg Hurrell
Not to be confused with ticket #1193, which is about accepting file attachments for tickets in the issue tracker (and possibly elsewhere too).
-
Greg Hurrell
Hmm. Although I said, "not to be confused with ticket #1193", the truth is that that ticket might actually make this one redundant.
For example, instead of uploading to
/system/images/
, one could conceivably just use theattachments#new
(which would be admin-only) to upload new images. Then, to link to them you could use links like[/attachments/abcd0124 see this]
.To actually embed such images rather than just linking to them might be another story though. The way the wikitext module works is upon seeing markup like
{{foo.png}}
it generates animg
tag withsrc
set to/system/images/foo.png
. I suppose I'd have to modify it to behave specially on seeing "absolute" paths like{{/attachments/abcd0124}}
. Will need to think about the security implications of doing that... -
Greg Hurrell
The other issue is that such uploaded attachments would be "parent-less" and there's nothing to stop a malicious user form trying to assign them to an existing ticket. So still need to think about the security implications a little more.
-
Greg Hurrell
I see that
{{../../attachments/abcd0124}}
works, but it is ugly.Seeing as I effectively already allow (almost) arbitrary linking, I guess there would be no harm in implementing a special case for "absolute" paths, especially if it were an opt-in option on the parser.
-
Greg Hurrell
Actually, looking at the wikitext parser, I feel like it is a little too liberal in what it accepts inside image tags:
PRINTABLE
tokensALNUM
tokensPATH
tokensSPECIAL_URI_CHARS
tokens
Most input with a slash will be tokenized as a
PATH
token:/foo.jpg
a/b
But input like this:
a.png
Will be tokenized as
ALNUM
,SPECIAL_URI_CHARS
,ALNUM
.Input like:
foo
Will just be tokenized as
ALNUM
.Not sure why I originally included
PRINTABLE
in the list. That will catch things like$
,%
,+
,-
,/
,@
,\
,^
,_
and~
whenever they're not caught by the other rules; but note that:-
/
on its own will be tokenized asPATH
So:
a-b.jpg
Will be tokenized as
ALNUM
,PRINTABLE
,ALNUM
,SPECIAL_URI_CHARS
,ALNUM
.The
SPECIAL_URI_CHARS
rule itself lets quite a bit of stuff through:-
:
,!
,(
,)
,,
,;
,.
and?
So it will accept such absurd input as
{{foo:bar(really!?);baz}}
.Not really sure how I could tighten it up without breaking existing tags (with names like
foo-bar.jpg
, a fairly common pattern). -
Greg Hurrell
With respect to the security concerns of:
- hijacking of "parent-less" attachments
- uploading arbitrary "parent-less" attachments and abusing the server as a file distribution hub
I'm thinking of having one or more simple rules:
- normal moderation rules will apply (that is, anonymous and unverified users will have uploads held for moderation)
- use hard-to-predict random hashes instead of predictable auto-incrementing ids (this was already mentioned on ticket #1193)
- the user creating the attachment must be the one who assigns it to a parent (admittedly, this doesn't help much in the case of anonymous users)
- time limit: must assign an attachment to an issue within a certain time frame otherwise not allowed; most likely will use 24 hours as the time limit, which matches the current default session lifespan (this, combined with the use of random hashes should largely deal with the problem of anonymous users trying to hijack attachments from other anonymous users)
- only admins can create "parent-less" attachments which are accessible: in this way, an anonymous (or any other) user won't be able to hijack attachments which an admin has set up for direct access (for example product release downloads and the like)
And finally, a measure that I don't think is necessary:
- use an association table so that it doesn't matter how many times an attachment gets attached to something
Basically, the system is probably secure enough even without the time-limit constraint as the obscurity defense is probably enough to stop one anonymous user from discovering an "orphaned" attachment anyway. In most cases, the upload will be shortly followed by issue submission (within seconds or minutes), so it's not like the window of opportunity for hijacking is very large anyway. Even if an "orphaned" attachment is "hijacked", what's the big deal?
Add a comment
Comments are now closed for this issue.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/rec_fn_macro.html ---
I just updated Lean from 3.3.0 to 3.4.1, and now when I write this code:
axiom R : Type inductive Sampler : Type | Ret : Sampler | BindUniform : (R → Sampler) → Sampler def Bind : Sampler → (ℕ → Sampler) → Sampler | Sampler.Ret f := f 0 | (Sampler.BindUniform k) f := Sampler.BindUniform (λ x, Bind (k x) f)
I get the error rec_fn_macro only allowed in meta definitions
in the definition of Bind
. Is this a bug? Should I submit it as a Github issue? Or do I just not understand what's going on?
whether or not it's a bug, lean 3.4.1 is the last release in the 3xx series and only critical issues are going to be fixed
if you change out axiom R
for variable R
do you get a more educational error message?
This is some kind of universe problem, I bet
maybe not. I just pasted it into my vscode and replaced axiom R
with variable R
. If you #print
Sampler you get that the Sampler type is Type u -> Type u
. Your definition is type incorrect. Now I'm confused why it ever worked in 3.3.0
...
inductive Sampler : Type u₁ → Type u₁ constructors: Sampler.Ret : Π (R : Type u₁), Sampler R Sampler.BindUniform : Π {R : Type u₁}, (R → Sampler R) → Sampler R
huh, interesting. The definition is correct if you use axiom
...
I guess a variable is something which, if mentioned in a definition, secretly appends itself as a "forall R : type" in front of definitions
Yeah, if I switch to using a variable
or a parameter
in a section, the definition goes through fine. And I don't think Sampler
becomes universe-polymorphic in any case
whereas perhaps with an axiom this does not happen.
But isn't the error with Bind
simply because Lean can't prove that the definition "terminates"?
cf the meta def of that 91 function in Programming In Lean, where the definition is OK but this is too hard for Lean to spot so you have to make it meta
axiom R : Type variable S : Type theorem X : R = R := rfl theorem Y : S = S := rfl #check X -- R = R #check Y -- ∀ (S : Type), S = S
The axiom makes a new constant, like quotient.sound
or whatever -- when you mention quotient.sound you don't get random "forall quotient.sound" hypotheses appearing in theorems
but the variable gets inserted. I guess you guys both know this.
@Kevin Buzzard No, this is actually a primitive recursive definition:
protected eliminator Sampler.rec : Π {real : Type} {C : Sampler real → Sort l}, C (Sampler.Ret real) → (Π (a : real → Sampler real), (Π (a_1 : real), C (a a_1)) → C (Sampler.BindUniform a)) → Π (n : Sampler real), C n
Notice how the inductive hypothesis allows you to apply the continuation to any argument.
I am suggesting that your definition of Bind relies on evaluating Bind elsewhere, does it not?
And with the definition of nat, Lean can use some recursion principle to check that the definition is good.
Presumably the error means "I find myself trying to prove that this definition of Bind has a decent recursor but I find myself trying to write some induction over functions, so I give up, make me meta so I don't have to worry about this sort of thing and can just be untrusted code"
heh
making the definition of Bind meta doesn't make the error go away :-)
So the definition works if I apply the recursor directly:
axiom real : Type inductive Sampler : Type | Ret : Sampler | BindUniform : (real → Sampler) → Sampler def Bind (x : Sampler) : (ℕ → Sampler) → Sampler := @Sampler.rec_on (λ _, (ℕ → Sampler) → Sampler) x (λ f, f 0) (λ k ih f, Sampler.BindUniform (λ x, ih x f))
So, even though the definition is primitive recursive, it does look to be something to do with it failing in figuring out the recursion scheme.
I am really confused by that recursor
(Π (a_1 : R), C (a a_1))
inductive Sampler : Type | Ret : Sampler | BindUniform : (ℤ → Sampler) → Sampler def Bind : Sampler → (ℕ → Sampler) → Sampler | Sampler.Ret f := f 0 | (Sampler.BindUniform k) f := Sampler.BindUniform (λ x, Bind (k x) f)
That works fine
replacing the constant with an explicit type
The definition with rec_on looks a bit funny to me -- k doesn't seem to play a role
oh I see
ih x
is Bind (k x)
that's the role of ih
@Kevin Buzzard Yes, exactly!
so I finally understand the question :-)
so it is a bit weird that it will work for a concrete type like the integers but won't work for the constant, or at least it's weird to me
Right, and if you change from axiom
to parameter
or variable
, it works again. So I'm thinking it's a bug.
well, with variable you change the type
so you have to fiddle with everything
I'm having another issue with rec_fn_macro: I've reduced it to this bug this time:
import analysis.real def foo : bool → list ℝ | tt := list.nil | ff := 1/2 :: foo tt
I get the error:
equation compiler failed to generate bytecode for 'foo._main' nested exception message: code generation failed, VM does not have code for 'real.division_ring'
If I try to mark foo
as noncomputable
, I instead get an error about a failure to prove the recursion well-founded.
Does anyone have any idea for how to get around this issue?
In my actual code, I'm getting a rec_fn_macro
issue that appears nonlocally - it's failing for a definition that calls some other function bar
that involves division on ℝ. If I redefine bar
as sorry
, there is no longer any issue. But it doesn't even help for me to mark bar
as irreducible
.
I don't see the issue. This is certainly noncomputable
, and that's the error you get if you don't mark it so. And it is failing to prove the recursion is well founded because the default well founded instance on bool has tt and ff incomparable, so you can't do any recursion.
perhaps you have oversimplified your example?
Thanks! I didn't know that details about the well-foundedness. Then I indeed oversimplified my example - originally it was nat. Let me backtrack with a revised example.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Channel Stats
Channel
Channel
Submit!
Submit!
Swap!
Stats
Most active viewer
Number of chat comments
Number of chat participants
Number of unique emoticons
Most popular emoticon
Number of unique copypastas
Most popular copypasta
Longest copypasta
Peak number of viewers
Percentage of active viewers
Average number of characters
Average number of emoticons


{% extends 'base.html' %} {% load i18n %} {% block title %} {% trans 'Setup Google Apps domain' %} {% endblock %} {% block content %}
{% blocktrans %} For better experience we invite you to perform additional setup step in your Google Apps dashboard. {% endblocktrans %}
{% blocktrans %} Please go to {{ oauth_settings_url }} and add the following information to the list of Authorized API clients: {% endblocktrans %}


WITNESS LIST Higher Education Committee May 11, 2004-2:00P Interim Charge 1 On: Bazan, Terry (TASFAA) Jost, Patricia (TASFAA) Krause, Karen (Texas Association of Student Financial Aid Administrators) Lane, Dr. James F. (TASFAA) McDonald, Carol L. (Independent Colleges and Universities of Texas) Torres (Mr.), George C. (Texas Guaranteed Student Loan Corp.) Wilson, Marcus (TASFAA (Texas Association of Student Financial Aid Administrators)) Interim Charge 1 & 2 On: Garcia, Rey (Texas Assn of Community Colleges) Interim Charge 1 & 3 On: Brown, Don W. (Texas Higher Education Coordinating Board) Hollis, Lois (Texas Higher Education Coordinating Board) Interim Charge 2 On: Ambrasino, Rosalie (University of Texas at San Antonio) Barron, Dr. Glenda (Texas Higher Education Coordinating Board) Castillo, Max (UH - Downtown/System) Flack, Teri E. (Texas Higher Education Coordinating Board) Goodson, Dr. Jimmy (Victoria College) Neeley, Shirley J. (Texas Education Agency - Commissioner of) Romo, Ricardo (UTSA) Interim Charge 3 On: Lambert, Tim (Texas Home School Coalition)


Bloomsburg University ACM Programming Team
Programming Practice:
PACISE 2015
Bucknell 2015 Expert
Bucknell 2014 Expert
Have only a little experience?
BloomU High School Contest
Bucknell 2015 Novice
Github
Practice Problems


{% extends "layout.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Breadcrumb here > Have you registered with us before? Do you already have an employer account registered with us? Have you registered with us before? Yes, I have registered before No, I have not registered before {% endblock %}
Do you already have an employer account registered with us?


380_ttjtftx.py
class Solution:
def minimumHammingDistance(self, source: List[int], target: List[int], allowedSwaps: List[List[int]]) -> int:
n = len(source)
p = list(range(n))
def pi(i):
if p[i] != i:
p[i] = pi(p[i])
return p[i]
def join(i,j):
a,b = pi(i), pi(j)
p[b]=a
for (a,b) in allowedSwaps:
join(a,b)
sets = {
}
for i in range(n):
x = pi(i)
if x not in sets:
sets[x] = []
sets[x].append(i)
def dist(s,t):
from collections import Counter
cs = Counter(s)
ct = Counter(t)
ret = len(s)
for k,v in cs.items():
if k in ct:
ret -= min(v,ct[k])
return ret
ret = 0
for se in sets.values():
s = [source[i] for i in se]
t = [target[i] for i in se]
ret += dist(s,t)
return ret


Press Record button to start recording voice, Press Stop button to stop recording.
Once completing recording please press upload button to return the result from the server.
Recordings:


Course Outline
Table of Contents
1 Course Details
| Course Code | COMP3141 |
| Course Title | Software System Design and Implementation |
| Units of Credit | 6 |
| Course Website | https://www.cse.unsw.edu.au/~cs3141 |
| Handbook Entry | COMP3141 UNSW Handbook Entry |
2 Staff
| Name | Role | Contact |
| Liam O'Connor | Lecturer in Charge |<EMAIL_ADDRESS>|
| Christine Rizkallah | Lecturer |
3 Course Summary
This course presents a variety of programming techniques that make use of semi-formal and formal methods for the design and implementation phases of real-world software system development. It introduces approaches to testing informed by formal designs, and it discusses trade-offs between static and dynamic approaches to improving software correctness. Throughout the course, the discussed methods are supported by software tools that assist in managing design, implementation, and testing. The course content is illustrated by weekly programming case studies and regular practical exercises. Central topics are the use of functional programming, logical properties and types to inform program design, implementation, validation, and verification. The course will introduces students to the strongly-typed Haskell programming language. No previous knowledge of Haskell is assumed.
As with any course which teaches a potentially unfamiliar language, this course involves a significant amount of programming, both during and outside of lectures.
4 Course Timetable
| Day | Time | Location | Lecturer |
| Tuesday | 14:00-16:00 | Law Theatre G04 | Liam O'Connor |
| Wednesday | 09:00-11:00 | Law Theatre G04 | Christine Rizkallah |
5 Outcomes
After completing this course, you should
- be comfortable with using Haskell and functional programming to write practical software.
- be able to specify programs in terms of logical properties and functional correctness.
- distinguish and balance the trade-offs between static methods (such as formal methods and type systems) and dynamic methods (such as testing) in assisting software design and implementation.
- understand the role of types in program design, implementation, validation, and verification.
- be able to use a variety of tools based on formal specifications of logical properties.
The course gradually exposes students to a mathematically founded approach to specifying and implementing software systems. It develops basic skills required to engineer software with high confidence in the correctness of the final product. The whole course encourages critical examination and analysis of existing solutions.
6 Assumed Knowledge
You need to have successfully completed the core programming, algorithm, and software development courses. You should be a confident coder and be prepared to study the concepts of a new programming language in directed self-study.
The prerequisites of COMP3141 are COMP1927 or COMP2521, or a mark of at least 65 in COMP1921.
The course makes use of a number of discrete mathematics concepts. While it is possible to do well in the course without having done MATH1081 or COMP2111, familiarity with logic and set theory is valuable when studying COMP3141.
7 Teaching Strategies
7.1 Lectures
The lectures will introduce you to new material, which is being reinforced and practised in weekly exercises and larger assignments. The course follows no particular textbook, but reading material covering specific topics will be identified throughout the course. Students are required to study reading material as advised during the lecture and/or on the course web page.
There are three to four hours of lectures each week. The first two hour slot will be an introduction lecture, generally delivered by Liam. This will introduce you to the various concepts in the course. The second two hour slot will be a reinforcement lecture, generally delivered by Christine. This will apply the concepts introduced by Liam in the previous lecture to various examples.
Although there are no labs for this course, it does involve a significant amount of Haskell programming. For this reason, it's important to stay up to date with the Haskell level of the rest of the cohort. If you find yourself falling behind, please arrange a consultation with a lecturer to get caught up.
7.2 Exercises
Weekly marked programming exercises start in Week 2. There will be 7 exercises, including one art peer review assessment run from weeks 4 to 6. These exercises will reinforce the material discussed in the week's lecture.
Students have approximately one week to submit a solution. Submitting solutions to the exercises is compulsory, and solutions will be automatically marked. Solutions to exercises will not be accepted late. Automarking results are binding. Exercises will generally not be manually remarked. There are no extensions to exercises, excepting special considerations.
Solutions to the exercises will be discussed in the second half of lectures each week.
7.3 Quizzes
A total of 8 weekly marked quizzes will be made available, starting in Week 1. They will assess the theoretical lecture content for that week in a series of multiple choice questions, and will be due on the Friday of the following week. For example, the quiz for the Week 1 lectures will be due on the Friday of week 2. Students are encouraged to submit the quiz soon after the lectures for the week have concluded, as part of a weekly review.
The quizzes are available on the course website. Students can submit as many times as they like up until the due date, however solutions are shown after the due date, so late submission of the quizzes will not be accepted.
These quizzes are all automatically marked.
In general, the difficulty of the quizzes is not indicative of any other component such as the exam. The quizzes help to consolidate lecture content, but sometimes the quiz questions will require some lateral thinking or referring to the lecture code, slides, or notes.
7.4 Assignments
There will be two practical assignments. They will be released approximately around Week 4 and Week 8. Students will have between one and two weeks to understand each individual assignment and to develop a solution.
Unless otherwise stated if you wish to submit an assignment late, you may do so, but a late penalty reducing the maximum available mark applies to every late assignment. The maximum available mark is reduced by 10% if the assignment is one day late, by 25% if it is 2 days late and by 50% if it is 3 days late. Assignments that are late 4 days or more will be awarded zero marks. So if your assignment is worth 88% and you submit it one day late you still get 88%, but if you submit it two days late you get 75%, three days late 50%, and four days late zero.
Assignment extensions are only awarded for serious and unforeseeable events. Having the flu for a few days, deleting your assignment by mistake, going on holiday, work commitments, and so on do not qualify. Therefore aim to complete your assignments well before the due date in case of last minute illness, and make regular backups of your work.
Assignments are being marked automatically. You need to make sure to follow the instructions closely. Failure to follow the details of the assignment specification is no reason for re-marking, even if small mistakes lead to a substantial loss of marks.
8 Assessment
Assessment consists of a practical component and a final examination. The break down of the practical component is as follows:
- Assignment 1: 20 marks
- Assignment 2: 20 marks
- Weekly assessments, consisting of:
- Weekly Exercises: 40 marks
- Weekly Quizzes: 20 marks
Both the practical component and the final examination are out of 100. The final grade for the course is determined by the mean between the practical component and the final examination.
8.1 Practical Work
Assignments and exercises are an important part of the course. They are an essential way of learning the practical skills you need to acquire. Any plagiarism in assignments or exercises will be severely punished and may result in an automatic Fail for the whole course. Read the plagiarism warning below for more details.
For each assignment, you will have up to two weeks from release of the specification until the submission deadline. The specifications will be posted on the course web page.
Assignment work can be completed on the workstations at UNSW or on a computer at home. Your assignment must properly run on the computers at UNSW; so, test them at UNSW if you develop them at home. Unless otherwise stated, assignments must be submitted on-line from a school terminal using the give command. It is in your best interest to make regular backup copies of your work and (because of machine loads on deadline days, for example) to complete assignments well before their deadlines. Moreover, the electronic submission system give allows you to submit an assignment multiple times; only the last submission will be marked. We suggest that you submit a version once you have a partially complete solution and repeatedly submit whenever you improved your solution significantly. In particular, make sure that you submit your solution once you have completed the core component of each assignment.
8.2 Assignments
Each assignment is individual; i.e., no team work of any kind is permitted. Completing and submitting all assignments is compulsory; i.e., each assignment has a core component and you will not be permitted to pass the course unless you have made a reasonable effort to solve the core component. A "reasonable effort" means that there may be bugs in your solution, but you must submit an at least partially working piece of adequately structured code.
8.3 Exercises
There will be a number of programming exercises distributed throughout the term. Each is marked with equal weighting. Each exercise is individual; i.e., no team work of any kind is permitted.
8.4 Quizzes
There will be 8 weekly quizzes. Each quiz is individual; i.e., no team work of any kind is permitted. Each quiz is given varying weighting, for a total of 20 marks. The marks for quizzes are capped such that a student technically only must complete seven of the eight quizzes to get full marks for the quiz component (although completing all quizzes will enable students to regain marks they lost previously).
8.5 Final Examination
The final exam is a two hour written exam. Requests for a supplementary exam will only be considered where students (a) have completed all other course components to a satisfactory standard, (b) have been absent from the final exam, (c) and have submitted a fully documented request for special consideration to student lifecycle within three working days of the final exam.
8.6 Examination Hurdle
To achieve a passing final mark, a student needs to pass the exam. To pass the exam, a student needs to achieve 40% of overall marks awarded in the exam. Any student who fails the exam will automatically fail the entire course. No re-assessment will be awarded in this case.
9 Student Conduct
The Student Code of Conduct Information, Policy) sets out what the University expects from students as members of the UNSW community. As well as the learning, teaching and research environment, the University aims to provide an environment that enables students to achieve their full potential and to provide an experience consistent with the University's values and guiding principles. A condition of enrolment is that students inform themselves of the University's rules and policies affecting them, and conduct themselves accordingly.
In particular, students have the responsibility to observe standards of equity and respect in dealing with every member of the University community. This applies to all activities on UNSW premises and all external activities related to study and research. This includes behaviour in person as well as behaviour on social media, for example Facebook groups set up for the purpose of discussing UNSW courses or course work. Behaviour that is considered in breach of the Student Code Policy as discriminatory, sexually inappropriate, bullying, harassing, invading another's privacy or causing any person to fear for their personal safety is serious misconduct and can lead to severe penalties, including suspension or exclusion from UNSW.
If you have any concerns, you may raise them with your lecturer, or approach the School Ethics Officer, Grievance Officer, or one of the student representatives.
Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several on-line sources to help you understand what plagiarism is and how it is dealt with at UNSW:
Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using. Note also that plagiarism includes paying or asking another person to do a piece of work for you and then submitting it as your own work.
UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.
If you haven't done so yet, please take the time to read the full text of
The pages below describe the policies and procedures in more detail:
You should also read the following page which describes your rights and responsibilities in the CSE context:
10 Course Schedule
11 Resources for Students
There is no textbook for the course. As tutorial and reference for Haskell, you can use any of these books:
- Thinking Functionally with Haskell, by Richard Bird, Cambridge University Press.
- Haskell Programming From First Principles by Christopher Allen and Julie Moronuki, Gumroad.
- Programming in Haskell, 2nd Edition by Graham Hutton, Cambridge University Press.
- Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen, O'Reilly Media.
- Learn You a Haskell for Great Good! by Miran Lipovača, No Starch Press.
The last two books in this list are available as online ebooks for free.
Further reading material will be announced in the lecture and/or on the course web page.
In addition, the Learning Haskell tutorial is written by former lecturers of this course and covers the basics of Haskell programming necessary to get started in COMP3141.
11.1 Getting Help
Questions regarding the course material, assignments, exercises, and general
administrative questions should be asked on the course forum (accessible from
the course web page), where answers benefit the whole class. Alternatively,
approach the lecturer after class. To discuss matters concerning your
personal performance, please send an email to the course account
<EMAIL_ADDRESS>. For identification purposes, if you wish to send
email concerning the course, you must send the mail from your CSE or UNSW
student account (not from GMail, Yahoo, Bigpond or similar), and include your
student id and your full name.
12 Course Evaluation and Development
This course is being continuously improved and we will conduct a survey at the end of session to obtain feedback on the quality of the various course components. Your participation in the survey will be greatly appreciated.
Student feedback over the last years has generally been positive with a high student satisfaction rate.