|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.qubulus.qps.PositioningManager
public class PositioningManager
This class provides client-side access to the positioning service. Each client should have its own manager instance, but the positioning service will be shared across all clients in the process.
| Field Summary | |
|---|---|
static int |
POSITION_REQ_INTERVAL
Suggested positioning request interval. |
static java.lang.String |
REQUEST_ACTION
Action that positioning service implementations must include in their intent filter. |
static java.lang.String |
VERSION
Human-readable version tag |
static int |
VERSION_MAJOR
Major version tag, incremented on non-backward compatible changes in the API, which can result in build-time or run-time errors. |
static int |
VERSION_MINOR
Minor version tag, incremented on backward compatible changes such as minor features, optimizations or bug fixes |
| Method Summary | |
|---|---|
static PositioningManager |
get(Context context)
Retrieve an instance of the manager for the given context |
int |
requestPosition()
Request a position to the positioning service(s) implementation declared in AndroidManifest.xml (see REQUEST_ACTION ). |
void |
stopService()
Stop the service handling the position requests. |
void |
updateMultifloorSettings(int queueToleranceSeconds,
int queueLength)
Allows applications to change floor switch filter queue size. |
void |
updateSite(java.lang.String siteId)
Allows applications to switch site id in runtime. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int POSITION_REQ_INTERVAL
public static final int VERSION_MAJOR
public static final int VERSION_MINOR
public static final java.lang.String VERSION
public static final java.lang.String REQUEST_ACTION
requestPosition()
and stopService()
instead.
| Method Detail |
|---|
public static PositioningManager get(Context context)
public int requestPosition()
REQUEST_ACTION
).
This method is asynchronous, and the answer will be delivered as a
broadcast intent. You should typically expect a delay on the order of a
second between a request and the corresponding answer. Note that several
requests issued by one or many clients during that computation time will
result in only one answer.
If the service handling request is not started (because this is a first
request or it was explicitly shutdown previously via
stopService()
), it will be automatically restarted.
public void stopService()
This should be called when the client is pretty confident that no further requests will be made in the near future, for example when closing a map activity.
Note that the service will be recreated on demand next time a position estimate is requested, but that comes with some overhead, so if latency is your priority, you should not call this method.
public void updateSite(java.lang.String siteId)
siteId
- The ID of the site to switch topublic void updateMultifloorSettings(int queueToleranceSeconds, int queueLength)
queueTolerance
- Maximum time to consider a position for floor switching.
Recommended < 30,000msqueueLength
- How many history positions you wish to consider. Recommended 3
|
|||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Our organization's goal is to utalize drones to prevent deforestation in the Amazon rainforest. In 2019 125,000 hectares were cleared and burned by farmers for cattle-ranching. By using drones to monitor the areas in which there are more fires being sited. The Brazilian goverment is not certain whether or not the clearing and burning of the forest is legal. The drones could be use to veiw places where the burning is legal and to find place where the clearing and burning is illegal.
Industrialization disrupts the ecosystem which is Killing animas which causes a ripples effect. If the producers are killed off then it will slowly work itself up the chain and destory the consumers. Many animals are losing their habitats;we have yet to discover every species in the Amazon rainforest. Humans could be killing an animal species that could have the cure of different ailments. The first graph shows how much of the Amazon rainforest is being destroyed. The second graph were taken by NASA to show the public Cambodia's deforestation rates. Between 2001 and 2013 Cabodia lost 1.59 million hectacres. Not only is the Amazon rainforest being affected but, many forest throughout the world.


View Grid
View Chart
View Both
Chart Config
Download Data
Save Chart
Update Chart
Toggle Theme
Chart Type
Line
Bar
Scatter
Chart Title:
Y Axes Label:
Start Polling(nyi)
Stop Polling
Polling Interval
1 second
5 seconds
15 seconds
30 seconds
60 seconds
120 seconds
Query:


Discover
My Story
Hello, my name is Dewi Wardah, I am a student at AKSI Gresik. I am a class of 2019, now I am in semester 3, this is my interactive website for assignments from web programming courses
Find out moreCampus of Operation
Mon to Fri: 8:00am - 4:00pm
Campus Location
Kb. Dalem, Sidokumpul, Kec. Gresik, Kabupaten Gresik, Jawa Timur 61122Get in Touch
Phone :<PHONE_NUMBER>4,<PHONE_NUMBER>
Email : info@aksi.ac.id


For this and all programming project's, you are welcome to work in groups of up to three. The names of all group members should appear at the top of the file, and every member should submit the project on blackboard. All team members are responsible for understanding the code submitted in their name.
In this homework, you are to create an interpreter for a very simple Java/C-ish language. The language has variables, assignment statements, mathematical expressions, comparison operators, boolean operators, if statements, while statements, and return statements.
An example program is as follows:
var x; x = 10; var y = 3 * x + 5; while (y % x != 3) y = y + 1; if (x > y) return x; else if (x * x > y) return x * x; else if (x * (x + x) > y) return x * (x + x); else return y - 1;
Note that braces, { and }, are not implemented.
The following mathematical operations are implemented : +, -, *, /, % (including the unary -), the following comparison operators are implemented: ==, !=, <, >, <=. >=, and the following boolean operators: &&, ||, !. Variables may store values of type int as well as true and false. You do not have to detect an error if a program uses a type incorrectly, but it is not hard to add the error check.) Note that you do not have to implement short-circuit evaluation of && or ||.
For those seeking an extra challenge: The parser supports nested assignment statements as well as assignments inside expressions. Try writing your interpreter so that assignment operators return a value as well as initialize a variable:
var x; var y; x = y = 10; if ((x = x + 1) > y) return x; else return y;
General guidelines
You are to write your interpreter in Scheme using the functional programming style. For full marks, you should not use variables, only functions and parameters.
Your program should clearly distinguish, by naming convention and code organization, functions that are doing the M_state operations from ones doing the M_value and M_boolean operations. You do not have to call them M_, but your naming convention should be consistent.
A parser is provided for you called simpleParser.scm. You will also have to get the file lex.scm. You can use the parser in your program by including the line (load "simpleParser.scm") at the top of your homework file. The command assumes simpleParser.scm is in the same directory as your homework file. If it is not, you will have to include the path to the file in the load command.
To
use the parser, type the code into a file, and call (parser "filename"). The
parser will return the parse tree in list format. For example, the parse tree of the above
code is:
((var x)
(= x 10)
(var y (+ (* 3 x) 5))
(while (!= (% y x) 3) (= y (+ y 1)))
(if (> x y) (return x) (if (> (* x x) y) (return (* x x)) (if (> (* x (+ x x)) y) (return (* x (+ x x))) (return (- y 1))))))
Formally, a parse tree is a list where each sublist corresponds to a statement. The different statements are:
| variable declaration | (var variable) or (var variable value) |
| assignment | (= variable expression) |
| return | (return expression) |
| if statement | (if conditional then-statement optional-else-statement) |
| while statement | (while conditional body-statement |
You should write a function called interpret that takes a filename, calls parser with the filename, evaluates the parse tree returned by parser, and returns the proper value. You are to maintain a state for the variables and return an error message if the user attempts to use a variable before it is declared. You can use the Scheme function (error ...) to return the error.
The State
Your state needs to store binding pairs, but the exact implementation is up to you. I recommend either a list of binding pairs (for example: ((x 5) (y 12) ...) ), or two lists, one with the variables and one with the values (for example: ((x y ...) (5 12 ...))). The first option will be simpler to program, but the second will be more easily adapted supporting objects at the end of the course. The exact way you decide to implement looking up a binding, creating a new binding, or updating an existing binding is up to you. It is not essential that you be efficient here, just do something that works. With such a simple language, an efficient state is unneeded.
What you do have to do is use abstraction to separate your state from the rest of your interpreter. As we increase the number of language features we have in future parts of the project, we will need to change how the state is implemented. If you correctly use abstraction, you will be able to redesign the state without changing the implementation of your interpreter. In this case, that means that the interpreter does not know about the structure of the state. Instead, you have generic functions that the interpreter can call to manipulate the state.
Finally...
If you are using DrRacket, you will probably need to change the language to one of the more advanced teaching languages (if you want more descriptive error messages). The language "Pretty Big" will work, but it does not give very informative error messages.
Please save your interpreter as a Scheme file with either the .scm or .rkt extension.


The Blair Witch Project (1999) **** out of *****
Cast: Heather Donahue, Michael C. Williams, Joshua Leonard Written and Directed by: Daniel Myrick and Eduardo Sanchez Running Time: 87 minutes Date Reviewed: July 30, 1999
In October of 1994, three student filmmakers disappeared in the woods near Burkittsville, Maryland, while shooting a documentary. One year later, their footage was found. Thus begins The Blair Witch Project, one of the best (yet extremely frustrating) thriller/horror movies to be released in a long, long time.
As this ultra low budget movie begins we follow the doomed film crew consisting of Heather the director (Heather Donahue), Josh the cameraman (Joshua Leonard), and Mike the sound guy (Michael C. Williams) getting ready to begin their documentary. They set out to the town of Burkittsville, Maryland and begin to interview the locals about an urban legend of sorts... the story of the Blair Witch. Various soundbites are gathered, and then on day two the crew sets off into the woods. They are never seen again. The audience however, vaguely gets to see what happened to them over the next few days, thanks to Heather's inexplicable urge to film every terrifying moment of their ordeal.
All of the critical praise this film is getting might just work against it with the casual moviegoer. In countless ads and reviews the word "scary" is used over and over again. "It's scary as hell." "The scariest movie ever." Saying the film is scary is only going to frustrate the casual moviegoer who is expecting Poltergeist or The Haunting. There are no special effects, no scary music, and no monsters.
However slight, there is actually a difference between scary and creepy. A scary movie would be something that makes you jump or even scream out loud, either by genuine terror or through those cheesy music cues when a cat jumps out of nowhere. A creepy movie like The Blair Witch Project sets the stage for something scary to happen... but ultimately never delivers. Nothing ever makes you jump and nothing ever makes you scream, even though the stage is fully set for that to happen at any given moment.
Now let me give credit where credit it due. When The Blair Witch Project tries to be creepy it succeeds masterfully. As the crew settles down each night to sleep, that's when things start to get creepy. Basically, whenever the sun goes down, get ready to almost be scared. That's mainly what kept frustrating me though. Sometimes the night would go by too quickly. If Heather is going to insist on continuing to film these now nightmarish conditions they are being exposed to, you would think that there would be more of these night scenes. Instead, there's more of the "human drama" which takes place during the daytime.
The three principle cast members are all new to the film world, and all are very good here. I'm sure the casting was based simply on budgetary constraints, but the film just wouldn't have been as effective with any familiar faces. As a result of the casting, you feel like you're watching a real documentary.
In today's day and age of whiz bang CGI effects and no-brainer Kevin Williamson crud, I'm all for the "less is more" approach for the horror genre. The Blair Witch Project takes that a step further, opting for the "nothing is even less than less is more, so we'll give you nothing" approach. The filmmakers lull you into a false sense of security with the first half of the film, which is basically just a humorous story about low budget documentarians. Then the creepiness sets in which is very effective, but as I said it ultimately never pays off. We know just as much about what happens to these people when the movie begins as we do when the final credits roll. In a way that bothers me, but the movie is entertaining and original enough to make me overlook it's non-payoff.
Artisan Entertainment (the distributor of the film) has set up an EXTENSIVE and very cool web site for The Blair Witch Project. Check it out. Also, there's a special hour long documentary airing on The Sci-Fi Channel called Curse of the Blair Witch that actually manages to blur the lines between reality and the fantasy of this movie even further. [R]
Chuck Dowling --<EMAIL_ADDRESS>The Jacksonville Film Journal URL:http://users.southeast.net/~chuckd21/
© 1999 of The Jacksonville Film Journal. No reviews may be reprinted without permission.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


| hclust {stats} | R Documentation |
Hierarchical cluster analysis on a set of dissimilarities and methods for analyzing it.
hclust(d, method = "complete", members = NULL) ## S3 method for class 'hclust' plot(x, labels = NULL, hang = 0.1, check = TRUE, axes = TRUE, frame.plot = FALSE, ann = TRUE, main = "Cluster Dendrogram", sub = NULL, xlab = NULL, ylab = "Height", ...)
d |
a dissimilarity structure as produced by |
method |
the agglomeration method to be used. This should
be (an unambiguous abbreviation of) one of
|
members |
|
x |
an object of the type produced by |
hang |
The fraction of the plot height by which labels should hang below the rest of the plot. A negative value will cause the labels to hang down from 0. |
check |
logical indicating if the |
labels |
A character vector of labels for the leaves of the
tree. By default the row names or row numbers of the original data are
used. If |
axes, frame.plot, ann |
logical flags as in |
main, sub, xlab, ylab |
character strings for
|
... |
Further graphical arguments. E.g., |
This function performs a hierarchical cluster analysis using a set of dissimilarities for the n objects being clustered. Initially, each object is assigned to its own cluster and then the algorithm proceeds iteratively, at each stage joining the two most similar clusters, continuing until there is just a single cluster. At each stage distances between clusters are recomputed by the Lance–Williams dissimilarity update formula according to the particular clustering method being used.
A number of different clustering methods are provided. Ward's
minimum variance method aims at finding compact, spherical clusters.
The complete linkage method finds similar clusters. The
single linkage method (which is closely related to the minimal
spanning tree) adopts a ‘friends of friends’ clustering
strategy. The other methods can be regarded as aiming for clusters
with characteristics somewhere between the single and complete link
methods. Note however, that methods "median"
and
"centroid"
are not leading to a monotone distance
measure, or equivalently the resulting dendrograms can have so called
inversions or reversals which are hard to interpret,
but note the trichotomies in Legendre and Legendre (2012).
Two different algorithms are found in the literature for Ward clustering.
The one used by option "ward.D"
(equivalent to the only Ward
option "ward"
in R versions <= 3.0.3) does not implement
Ward's (1963) clustering criterion, whereas option "ward.D2"
implements
that criterion (Murtagh and Legendre 2014). With the latter, the
dissimilarities are squared before cluster updating.
Note that agnes(*, method="ward")
corresponds
to hclust(*, "ward.D2")
.
If members != NULL
, then d
is taken to be a
dissimilarity matrix between clusters instead of dissimilarities
between singletons and members
gives the number of observations
per cluster. This way the hierarchical cluster algorithm can be
‘started in the middle of the dendrogram’, e.g., in order to
reconstruct the part of the tree above a cut (see examples).
Dissimilarities between clusters can be efficiently computed (i.e.,
without hclust
itself) only for a limited number of
distance/linkage combinations, the simplest one being squared
Euclidean distance and centroid linkage. In this case the
dissimilarities between the clusters are the squared Euclidean
distances between cluster means.
In hierarchical cluster displays, a decision is needed at each merge to
specify which subtree should go on the left and which on the right.
Since, for n observations there are n-1 merges,
there are 2^{(n-1)} possible orderings for the leaves
in a cluster tree, or dendrogram.
The algorithm used in hclust
is to order the subtree so that
the tighter cluster is on the left (the last, i.e., most recent,
merge of the left subtree is at a lower value than the last
merge of the right subtree).
Single observations are the tightest clusters possible,
and merges involving two observations place them in order by their
observation sequence number.
An object of class hclust which describes the tree produced by the clustering process. The object is a list with components:
merge |
an n-1 by 2 matrix.
Row i of |
height |
a set of n-1 real values (non-decreasing for
ultrametric trees).
The clustering height: that is, the value of
the criterion associated with the clustering
|
order |
a vector giving the permutation of the original
observations suitable for plotting, in the sense that a cluster
plot using this ordering and matrix |
labels |
labels for each of the objects being clustered. |
call |
the call which produced the result. |
method |
the cluster method that has been used. |
dist.method |
the distance that has been used to create |
There are print
, plot
and identify
(see identify.hclust
) methods and the
rect.hclust()
function for hclust
objects.
Method "centroid"
is typically meant to be used with
squared Euclidean distances.
The hclust
function is based on Fortran code
contributed to STATLIB by F. Murtagh.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole. (S version.)
Everitt, B. (1974). Cluster Analysis. London: Heinemann Educ. Books.
Hartigan, J.A. (1975). Clustering Algorithms. New York: Wiley.
Sneath, P. H. A. and R. R. Sokal (1973). Numerical Taxonomy. San Francisco: Freeman.
Anderberg, M. R. (1973). Cluster Analysis for Applications. Academic Press: New York.
Gordon, A. D. (1999). Classification. Second Edition. London: Chapman and Hall / CRC
Murtagh, F. (1985). “Multidimensional Clustering Algorithms”, in COMPSTAT Lectures 4. Wuerzburg: Physica-Verlag (for algorithmic details of algorithms used).
McQuitty, L.L. (1966). Similarity Analysis by Reciprocal Pairs for Discrete and Continuous Data. Educational and Psychological Measurement, 26, 825–831.
Legendre, P. and L. Legendre (2012). Numerical Ecology, 3rd English ed. Amsterdam: Elsevier Science BV.
Murtagh, Fionn and Legendre, Pierre (2014). Ward's hierarchical agglomerative clustering method: which algorithms implement Ward's criterion? Journal of Classification 31 (forthcoming).
identify.hclust
, rect.hclust
,
cutree
, dendrogram
, kmeans
.
For the Lance–Williams formula and methods that apply it generally,
see agnes
from package cluster.
require(graphics) ### Example 1: Violent crime rates by US state hc <- hclust(dist(USArrests), "ave") plot(hc) plot(hc, hang = -1) ## Do the same with centroid clustering and *squared* Euclidean distance, ## cut the tree into ten clusters and reconstruct the upper part of the ## tree from the cluster centers. hc <- hclust(dist(USArrests)^2, "cen") memb <- cutree(hc, k = 10) cent <- NULL for(k in 1:10){ cent <- rbind(cent, colMeans(USArrests[memb == k, , drop = FALSE])) } hc1 <- hclust(dist(cent)^2, method = "cen", members = table(memb)) opar <- par(mfrow = c(1, 2)) plot(hc, labels = FALSE, hang = -1, main = "Original Tree") plot(hc1, labels = FALSE, hang = -1, main = "Re-start from 10 clusters") par(opar) ### Example 2: Straight-line distances among 10 US cities ## Compare the results of algorithms "ward.D" and "ward.D2" data(UScitiesD) mds2 <- -cmdscale(UScitiesD) plot(mds2, type="n", axes=FALSE, ann=FALSE) text(mds2, labels=rownames(mds2), xpd = NA) hcity.D <- hclust(UScitiesD, "ward.D") # "wrong" hcity.D2 <- hclust(UScitiesD, "ward.D2") opar <- par(mfrow = c(1, 2)) plot(hcity.D, hang=-1) plot(hcity.D2, hang=-1) par(opar)


Transport
REPORT: Ambulance attending scene of accident in Louth
Roads
by David LynchAccording to reports this afternoon, an ambulance and gardai are currently attending the scene of what is being described as an accident on the R132 south of Dunleer.
The road is reportedly closed at present.
More as we get it


Plugin Information |
|---|
Distribution of this plugin has been suspended due to unresolved security vulnerabilities, see below. |
The current version of this plugin may not be safe to use. Please review the following warnings before use:
Plugin Information |
|---|
Distribution of this plugin has been suspended due to unresolved security vulnerabilities, see below. |
The current version of this plugin may not be safe to use. Please review the following warnings before use:


Hi!! I am a Backend Web Developer, self-driven, highly motivated and hungry
to learn new technologies, methodologies in the industry. Having overall experience in
programming using google search, I make complex problems beautiful.
Outside the programming world, I’m a Crane Operator (Vessel Cranes).
...
..
...
I develop responsive and flexible website that allows users to experience your website the best and most appropriate way suited on any device (Mobile, Laptop and Tap).
I develop high quality web Applications with tools that enables you manage and maintain the contents and informations on your website such as texts, images, videos, files and audios without prior knowledge of programming
Looking for intensive Front-end/Backend Developer skilled in the above Technologies and interested in working together (colaporation) on projects. Feel free to contact me
I tutor individual, ambition and beginner developers to intermediate level on programming
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close Project


Polymorphic Functions
doTwice :: (a -> a) -> a -> a
= f (f x) doTwice f x
Operate on different kinds values
>>> double x = 2 * x
>>> yum x = x ++ " yum! yum!"
>>> doTwice double 10
40
>>> doTwice yum "cookie"
"cookie yum! yum!"
QUIZ
What is the value of quiz
?
greaterThan :: Int -> Int -> Bool
= x > y
greaterThan x y
= doTwice (greaterThan 10) 0 quiz
A. True
B. False
C. Type Error
D. Run-time Exception
E. 101
With great power, comes great responsibility!
>>> doTwice (greaterThan 10) 0
36:9: Couldn't match type ‘Bool’ with ‘Int’
Expected type: Int -> Int
Actual type: Int -> Bool
In the first argument of ‘doTwice’, namely ‘greaterThan 10’
In the expression: doTwice (greaterThan 10) 0
The input and output types are different!
Cannot feed the output of (greaterThan 10 0)
into greaterThan 10
!
Polymorphic Types
But the type of doTwice
would have spared us this grief.
>>> :t doTwice
doTwice :: (a -> a) -> a -> a
The signature has a type parameter t
re-use
doTwice
to incrementInt
or concatString
or …The first argument
f
must take inputt
and return outputt
(i.e.t -> t
)The second argument
x
must be of typet
Then
f x
will also have typet
… and we can callf (f x)
.
But f
unction is incompatible with doTwice
- if its input and output types differ
QUIZ
Lets make sure you’re following!
What is the type of quiz
?
= f x quiz x f
A. a -> a
B. (a -> a) -> a
C. a -> b -> a -> b
D. a -> (a -> b) -> b
E. a -> b -> a
QUIZ
Lets make sure you’re following!
What is the value of quiz
?
= f x
apply x f
greaterThan :: Int -> Int -> Bool
= x > y
greaterThan x y
= apply 100 (greaterThan 10) quiz
A. Type Error
B. Run-time Exception
C. True
D. False
E. 110


--- layout: post title: 'Darren on Flex: FlexUnit4 Testing with Parsley - Unit Testing Command Objects' date: '2011-04-11T19:33:00.003+01:00' author: Darren Bishop tags: - Flex - ActionScript - TDD - Agile - FlexUnit - FlashBuilder - Parsley - Flexmojos - DSL - Testing modified_time: '2011-06-17T07:08:18.333+01:00' thumbnail: http://1.bp.blogspot.com/-iy0dCTr26tc/TZ1fto_b-zI/AAAAAAAAAIc/hQmcM7zlj24/s72-c/cairngorm-layout.png blogger_id: tag:blogger.com,1999:blog-3826577489563855618.post-8709278360037481378 blogger_orig_url: http://blog.darrenbishop.com/2011/04/darren-on-flex-flexunit4-testing-with_11.html --- In Part I, I'll start off by implementing a 'purist' unit-test. In order to do this, however, I need a context; I think a noddy CRM system will do - I was tempted to use a Calculator system, but decided against it as there was too much temptation to actually implement some logic.
Ironically, the point of this blog series is not about testing logic :-/
After applying the Cairngorm3 guidelines to the CRM system, I've structured the project as illustrated.
DirectoryService
interface, which will be stubbed and later used by Parsley to injection-by-type
GetPersonCommand
, which in this exercise will be the unit-under-test (UUT)
PersonEvent
, which will eventually be used with Parsley's Messaging Framework to implement low-coupling.
Person
class; I'll be making assertions against this and at some point during the series I'll demonstrate two neat ways to build and leverage test-fixtures.
DirectoryService
interfacepackage com.darrenbishop.crm.directory.application { import mx.rpc.AsyncToken; public interface DirectoryService { function lookupById(id:uint):AsyncToken; } }Bit of a crappy CRM, with its one service call, but remember this is about testing the Command object, not service logic.
GetPersonCommand
execute-result-error
method naming convention. These methods will be auto-detected by Parsley if the command is declared as a DynamicCommand
; I'll use the [Metadata]
tags when it comes to it:
package com.darrenbishop.crm.directory.application { import com.darrenbishop.crm.directory.domain.Person; import mx.collections.ArrayCollection; import mx.rpc.AsyncToken; import mx.rpc.Fault; public class GetPersonCommand { public var dispatcher:Function; public var service:DirectoryService; public function execute(event:PersonEvent):AsyncToken { return service.lookupById(event.id); } public function result(person:Person, event:PersonEvent):void { if (person.id != event.id) { throw new Error(sprintf('Found person (%d) does not match lookup person (%d)', person.id, event.id)); } dispatcher(PersonEvent.newFound(person)); } public function error(f:Fault, event:PersonEvent):void { } } }You can see the
execute
method is a simple pass-through i.e. there is no outbound data-translation or encoding, etc. before the service call.
The result
method doesn't do any inbound data-translation, etc. but I do introduce a bit of verification logic: where the event
parameter is passed the original triggering event i.e. the same object received by the execute
method, I have access to the id
of the person requested; the person
parameter is passed the person looked-up and found by the would-be CRM system's directory-service. I use this data to verify I have actually found the person I am looking for... put another way, I've contrived a situation where I can throw an error; you'll see I will force this situation to implement a negative-test.
PersonEvent
selectors
.
package com.darrenbishop.crm.directory.application { import com.darrenbishop.crm.directory.domain.Person; import flash.events.Event; public class PersonEvent extends Event { public static const LOOKUP:String = 'PersonEvent.lookup'; public static const FOUND:String = 'PersonEvent.found'; private var _id:uint; public function get id():uint { return _id; } private var _person:Person; public function get person():Person { return _person; } function PersonEvent(_:Guard, type:String) { super(type); } public static function newLookup(id:uint):PersonEvent { var event:PersonEvent = new PersonEvent(Guard.IT, LOOKUP); event._id = id; return event; } public static function newFound(person:Person):PersonEvent { var event:PersonEvent = new PersonEvent(Guard.IT, FOUND); event._person = person; return event; } public override function clone():Event { var event:PersonEvent = new PersonEvent(Guard.IT, type); event._id = id; event._person = person; return event; } } } class Guard { internal static const IT:Guard = new Guard(); }I use static factory methods here in-lieu of constructor-overloading - better anyway for removing confusion over what events are being constructed with what arguments. To restrict access to the sole constructor, I use a slight variation of the internal-Sentinel pattern that's quite common in Flex.
Anyway, that's it for the 'main' code, on to...
GetPersonCommandUnitTest
execute-result-error
methods. I feed the command canned-data and spy on it's outputs by controlling the objects it collaborates with. In this test case, those would be the service
and dispatcher
objects; the latter, which is a Function object, I use directly to make assertions, the former I inspect and assert on what I find.
package com.darrenbishop.crm.directory.application { import com.darrenbishop.crm.directory.domain.Person; import com.darrenbishop.support.create; import org.flexunit.assertThat; import org.flexunit.asserts.fail; import org.hamcrest.object.equalTo; public class GetPersonCommandUnitTest { public var service:StubLookupTrackingDirectoryService; public var command:GetPersonCommand; [Before] public function prepareCommand():void { service = new StubLookupTrackingDirectoryService(); command = new GetPersonCommand(); command.service = service; } [Test(description='Test GetPersonCommand calls the DirectoryService.lookupById(...) service correctly.')] public function lookUpByIdIsCalledCorrectly():void { service.add(create(Person, {'id': 001, 'firstname': 'John001', 'lastname': 'Smith001', 'phone': 6977150})); service.add(create(Person, {'id': 002, 'firstname': 'John002', 'lastname': 'Smith002', 'phone': 6809168})); service.add(create(Person, {'id': 003, 'firstname': 'John003', 'lastname': 'Smith003', 'phone': 7208442})); command.execute(PersonEvent.newLookup(002)); command.execute(PersonEvent.newLookup(001)); command.execute(PersonEvent.newLookup(003)); assertThat(service.nextLookup().fullname, equalTo('John002 Smith002')); assertThat(service.nextLookup().fullname, equalTo('John001 Smith001')); assertThat(service.nextLookup().fullname, equalTo('John003 Smith003')); } [Test(description='Test GetPersonCommand result-handler does not mangle the person found.')] public function resultDoesNotManglePersonFound():void { command.dispatcher = function(event:PersonEvent):void { assertThat(event.person.fullname, equalTo('John002 Smith002')); }; var person:Person = create(Person, {'id': 002, 'firstname': 'John002', 'lastname': 'Smith002', 'phone': 6809168}); command.result(person, PersonEvent.newLookup(002)); } [Test(expects='Error',description='Test GetPersonCommand result-handler verifies the id of the person found.')] public function resultVerifiesPersonFound():void { command.dispatcher = function(event:PersonEvent):void { }; var person:Person = create(Person, {'id': 001, 'firstname': 'John002', 'lastname': 'Smith002', 'phone': 6809168}); command.result(person, PersonEvent.newLookup(002)); } } }I've implemented three tests, including the one negative test, that gives 75% branch coverage; testing the
error
method is just the same as testing the result
method, so I've skipped it.
Some might wonder why I don't use mocking to stub/mock the DirectoryService
- I really ought to have but the integration options of, say mockito-flex (my favourite), are not available to me: I can't extend MockitoTestCase
or use the MockitoClassRunner
as in the next parts I use both mechanisms to implement the Parsley integration and DSL support.
On that note, here's the code for the stubbed DirectoryService
...
package com.darrenbishop.crm.directory.application { import com.darrenbishop.crm.directory.domain.Person; import flash.utils.Dictionary; import mx.rpc.AsyncToken; public class StubLookupTrackingDirectoryService implements DirectoryService { private var people:Dictionary; private var lookups:Array; public function StubLookupTrackingDirectoryService() { people = new Dictionary(); resetLookups(); } public function resetLookups():void { lookups = []; } public function add(person:Person):void { if (people[person.id]) { throw new Error('A person with id ' + person.id + ' already exists.'); } people[person.id] = person; } public function nextLookup():Person { return lookups.shift(); } public function lookupById(id:uint):AsyncToken { lookups.push(people[id]); return null; } } }You can see the stub has two variables:
people
, a dictionary which keys Person
objects against their id
lookups
, which is used to track the order in which the Command object makes person lookups... I know, it screams out for mocking, right
people
dictionary was originally populated with a dozen or so Person
objects; I refactored this as having the test fixture combined into the stub isn't so good. I pushed it out to the test methods, which is a better approach, providing self documenting tests; from reading the test method I know exactly: what reference-data I'm priming the system with i.e. the Person
objects; what test-data I'm activating the system with i.e. the id
to lookup with; what output-data I expect i.e. the found person. Much better.
[Before]
feature to build a Parsley context and dynamically initialize the test class with references to the object-under-test (OUT) and the OUT's dependencies.
I'll also show using Fluint Sequences to test a complete asynchronous flow through the Command object.


# Copyright (c) 2021 - present / Neuralmagic, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Utilities for ONNX based ML system info and validation
"""
import socket
from typing import Any, Dict, List, Union
from pkg_resources import get_distribution
import psutil
try:
import deepsparse
deepsparse_import_err = None
except Exception as deepsparse_err:
deepsparse = None
deepsparse_import_err = deepsparse_err
try:
import onnxruntime
ort_import_err = None
except Exception as ort_err:
onnxruntime = None
ort_import_err = ort_err
__all__ = [
"available_ml_engines",
"ml_engines_errors",
"get_ml_sys_info",
]
[docs]def available_ml_engines() -> List[str]:
"""
:return: List of available inference providers on current system. Potential values
include ['deepsparse', 'ort_cpu', 'ort_gpu']
"""
# ORT availability
engines = []
if deepsparse is not None:
engines.append("deepsparse")
ort_providers = onnxruntime.get_available_providers()
if "CPUExecutionProvider" in ort_providers:
engines.append("ort_cpu")
if "CUDAExecutionProvider" in ort_providers:
engines.append("ort_gpu")
return engines
[docs]def ml_engines_errors() -> Dict[str, Exception]:
"""
:return: a dictionary containing any errors encountered when importing ML engines
on the current system
"""
return {
"deepsparse": deepsparse_import_err,
"onnxruntime": ort_import_err,
}
def _get_package_version(package: str) -> Union[None, str]:
try:
return get_distribution(package).version
except Exception:
return None
def get_ml_version_info() -> Dict[str, str]:
"""
:return: a dictionary containing the version information of sparseml,
deepsparse, onnxruntime, and onnx if installed.
"""
sparseml_version = _get_package_version("sparseml")
deepsparse_version = _get_package_version("deepsparse")
onnxruntime_version = _get_package_version("onnxruntime")
onnx_version = _get_package_version("onnx")
return {
"sparseml": sparseml_version,
"onnxruntime": onnxruntime_version,
"deepsparse": deepsparse_version,
"onnx": onnx_version,
}
[docs]def get_ml_sys_info() -> Dict[str, Any]:
"""
:return: a dictionary containing info for the system and ML engines on the system.
Such as number of cores, instruction sets, available engines, etc
"""
sys_info = {
"available_engines": available_ml_engines(),
"ip_address": None,
"version_info": get_ml_version_info(),
}
try:
# sometimes this isn't available, wrap to protect and not fail
sys_info["ip_address"] = socket.gethostbyname(socket.gethostname())
except Exception:
pass
# get sys info from deepsparse.cpu
if deepsparse is not None:
deepsparse_info = deepsparse.cpu.cpu_architecture()
deepsparse_info = {
k.lower(): v for k, v in deepsparse_info.items()
} # standardize case
sys_info.update(deepsparse_info) # add to main dict
sys_info["available_instructions"] = (
deepsparse_info["isa"]
if isinstance(deepsparse_info["isa"], list)
else [deepsparse_info["isa"]]
)
sys_info["available_instructions"] = [
ins.upper() for ins in sys_info["available_instructions"]
]
else:
sys_info["cores_per_socket"] = psutil.cpu_count(logical=False)
return sys_info


6
1 In the year that king Uzziah died, I saw the Lord sitting on a throne; he was high and elevated, and the hem of his robe filled the temple.
2 Above him were the seraphim; each one had six wings; with two each covered his face, and with two he covered his feet, and with two he flew.
3 Each one called to another and said,
"Holy, holy, holy, is Yahweh of hosts!
4 The doors and the thresholds shook at the voices of those who were crying out, and the house was filled with smoke.
5 Then I said,
"Woe is me! For I am doomed because I am a man of unclean lips,
and I live among a people of unclean lips,
because my eyes have seen the King, Yahweh, Yahweh of hosts!"
6 Then one of the seraphim flew to me; he had a glowing coal in his hand, that he had taken with the tongs from off the altar.
7 He touched my mouth with it and said,
"See, this has touched your lips; your guilt has been taken away, and your sin atoned for."
8 I heard the voice of the Lord say, "Whom shall I send; who will go for us?" Then I said, "Here I am; send me."
9 He said, "Go and tell this people,
listen, but do not understand; see, but do not perceive.
10 Make the heart of this people calloused, and make their ears deaf, and blind their eyes,
so that they will not see with their eyes or hear with their ears, and understand with their heart, and then turn again and be healed."
11 Then I said, "Lord, how long?" He answered,
"Until cities crash into ruins and are without inhabitants,
and the houses are without people, and the land falls into a desolate waste,
12 and until Yahweh has sent the people far away, and the solitude of the land is great.
13 Even if a tenth of the people remain in it, it will again be destroyed;
as a terebinth or an oak is cut down and whose trunk remains,
the holy seed is in its stump."


class: middle, center # Convex Piecewise-Linear Fitting Wai-Shing Luk<EMAIL_ADDRESS>2017-04-14 --- ## Convex PWL Fitting: Why? - LP modeling - Max-monomial fitting to circuit models (for geometric programming based optimization) (Kim et al. ICCAD 2004) - Previous work which uses max-affine function may fail to converge (Magnani and Boyd 2009) (need update) --- ## Problem Formulation - Given $m$ data points $V = \{ v_1, v_2, \ldots, v_m \}$ in $R^n$. - Look for a function $g(v)$ such that: - $g(v)$ is convex - $g(v)$ best fits the data - $g(v)$ is easy to construct - $g(v)$ is easy to evaluate (all previous works forget this point) --- ## Piecewise Linear Interpolation - Recall a simple univariate problem (i.e. $n=1$) without convexity requirements. Piecewise linear (PWL) interpolation (table lookup) is widely used in engineering community: - Construction: organize the data in a lienar order (i.e. sorting), which takes $O(m \log m)$ time. - Evaulation at $v_q$: - Locate the interval $[v_1, v_{i+1}]$ such that $v_i \leq v_q < v_{i+1}$ - Find the barycentric coordinate $(\lambda, \mu)$ of $v_q$ by solving - $\mu v_i + \lambda v_{i+1} = v_q$ - Then $g_{PWL}(v_q) = \mu f_i + \lambda f_{i+1} = f_i + \lambda (f_{i+1} - f_i)$ --- ## Enforce Convexity in PWL Fitting - Recall that a function $g(v)$ is convex iff - $(1 - \lambda) g(v) + \lambda g(w) \geq g((1 - \lambda) v + \lambda w)$, $\lambda \in [0, 1]$ for all $v$, $w$ - In PWL, fitting problem can be formulated as a quadratic programming: - Minimize $\sum_i (f_i - p_i)^2$, subject to: - For each non-boundary vertex $v_i$, - impose $(1 - \lambda) p_{i-1} + \lambda p_{i+1} \geq p_i$ - where $\lambda$ can be found by solving - $(1 - \lambda) v_{i-1} + \lambda v_{i+1} \geq v_i$ - Note: linear constraint --- ## Multivariate Case ($n > 1$) - Recall that *barycentric triangulated interpolation* is a natural extension of PWL interpolation: - Construction: organize the data in Delaunay Triangulation, which takes $O(m \log m)$ time. - Evaulation at $v_q$: - Locate the simplex $[v_1, v_2, v_3, \ldots, v_{i+1}]$ that contains $v_q$ - Find the barycentric coordinate of $v_q$ by solving - $\sum_k \lambda_k v_k = v_q$, ($k=1,2,3,\ldots,n+1$) - $\sum_k \lambda_k = 1$ - Then $g_{PWL}(v_q) = \sum_k \lambda_k f_k$ - In Python, `scipy.interpolate.LinearNDInterpolator` can perform this interpolation. --- ## Delaunay Triangulation (DT) - The Delaunay triangulation of a set of points in d-dimensional spaces is in fact the projection of the points of convex hull onto a (d+1)-dimensional paraboloid. Therefore, it can be constructed by constructiong a convex hull. - Python provides basic functions of DT (check `scipy.spatial.Delaunay`) - For bivariate can ($n=2$), to enforce convexity: - For each non-boundary edge $(v_1, v_2)$, - impose $(1 - \lambda) p_3 + \lambda p_4 \geq (1 - \mu) p_1 + \mu p_2$ - where $\lambda, \mu$ can be found by solving - $(1 - \lambda) v_3 + \lambda v_4 = (1 - \mu) v_1 + \mu v_2$ - Note: linear constraint --- ## Enforce Convexity for $n \geq 3$ - For $n=3$, to enforce convexity: - For each non-boundary triangle $(v_1, v_2, v_3)$, - impose $(1 - \lambda) p_4 + \lambda p_5 \geq \sum_k \mu_k p_k$, $k=1,2,3$ - where $\lambda, \mu_k$ can be found by solving - $(1 - \lambda) v_4 + \lambda v_5 = \sum_k \mu_k v_k$ - $\sum_k \mu_k = 1$ - Note: linear constraint! - In general, - For each non-boundary n-simplex $(v_1, v_2, \ldots, v_n)$, - impose $(1 - \lambda) p_a + \lambda p_b \geq \sum_k \mu_k p_k$, $k=1,2,\ldots,n$ - where $\lambda, \mu_k$ can be found by solving - $(1 - \lambda) v_a + \lambda v_b = \sum_k \mu_k v_k$ - $\sum_k \mu_k = 1$ --- ## Numerical Experiment .pull-left70[ ![](figs/cvxfit_1.svg) without convex fitting ] --- ## Numerical Experiment (cont'd) .pull-left70[ ![](figs/cvxfit_2.svg) with convex fitting ]


upcdecl - UPC type explanation and construction tool, version 0.6
Synopsis
Description
Options
Examples
Bugs
Authors
Acknowledgements
upcdecl [options] [ explain | declare | cast | files... ]
upcdecl is a simple tool based off the original cdecl tool written in the late 80s by Graham Ross et al. upcdecl is a text-based tool with two main modes of operation: translating english versions of UPC declarations to UPC code, and vice versa. upcdecl accepts commands using a very simple grammar, such as explain int c or declare c as pointer to shared int. Typing help with no arguments inside upcdecl will display a simplified version of the grammar the tool uses, or see the mygram.txt file in the installation directory for the full grammar. See the EXAMPLES section for more example usage.
If files given on the command line start with explain, declare, cast, or set, the rest of the input on the command line is interpreted as a command instead of a set of filenames. Otherwise, each file is opened and the contents of the file are interpreted as upcdecl commands.
There are six statements in the language. The declare statement composes a UPC type declaration from a verbose description. The cast statement composes a UPC type cast as might appear in an expression. The explain statement decodes a UPC type declaration or cast, producing a verbose description. The help (or ?) statement provides a help message. The quit (or exit) statement (or the end of file) exits the program. The set statement allows the command line options to be set interactively. Each statement is separated by a semicolon or a newline.
-h See this message. -q Suppress upcdecl> prompt. Equivalent to the "quiet" set option. -r Dont use Term::ReadLine for input. Use this option if you have problems with the Perl-based ReadLine that is bundled with the program. Typing set with no arguments at the upcdecl prompt will tell you which module is being used for input. -p Disable spaces around pointers in C output. (Eg, "declare f as pointer to pointer to int" -> "int **f" instead of "int * * f".) Equivalent to the "nopointerspaces" set option. -c Create compilable output. Adds ; to variable declarations and {} to function declarations in "declare" output. Equivalent to the "create" set option. -t <test file> Test using file as input. The test file should have the following format for each line: input | expected output. Not useful for end users. -v Verbose UPC english explanations. Include implicit "local" in english output ("explain int c" -> "declare c as local int"). Equivalent to the "upcverbose" set option. -V Show upcdecl version and exit.
To have upcdecl display UPC code for an English description, use the declare statement:upcdecl> declare f as const int
const int fYou can use pointer to, array of, and function returning to make arbitrarily complex definitions:
upcdecl> declare f as pointer to array of function returning pointer to volatile int
volatile int * (* f)[]()
Use the shared keyword to have upcdecl return UPC declarations:upcdecl> declare f as shared array 55 of int
shared [1] int f[55]When followed by blocksize, the shared keyword also takes arbitrary numerical blocksizes or one of automatic, cyclic, indefinite:
upcdecl> declare f as shared blocksize 5 pointer to shared blocksize indefinite pointer to function returning shared blocksize cyclic int
shared [1] int (* shared [] * shared [5] f)()Additionally, the cast statement may be used to show how to perform a cast:
upcdecl> cast c into shared blocksize indefinite int
(shared [] int)cTo make sense of a UPC declaration, use the explain command:
upcdecl> explain shared [4] int (*f)(int, int, int)
declare f as pointer to function (int, int, int) returning shared (blocksize 4) intupcdecl> explain shared [] int *const shared c
declare c as const shared (blocksize cyclic) pointer to shared (blocksize indefinite) int
As in the original cdecl tool, the English syntax is very verbose.There are even less semantic checks done for upcdecl than the original cdecl.
The tool accepts "shared void f" as a valid C declaration.
The cdecl grammar used as a basis for upcdecl was written before the ANSI C standard was completed (and well before ISO C99 was finished). Some attempt has been made to update the grammar to accept valid ISO C99 code, but there are undoubtedly bits of valid code that will be rejected by the parser.
upcdecl will parse many simple arithmetic expressions inside blocksize declarations or array dimensions, but does not understand function calls, sizeof operators, struct accesses, relational/boolean operators, bitwise operators, conditional expressions, increment/decrement operators, floating point literals or type cast sub-expressions.
There should be an array visualization feature to show how a shared array will be distributed among threads.
Adam Leko, with significant contributions and guidance from Dan Bonachea and the rest of the Berkeley UPC team.
upcdecl is heavily based on the grammar specified in the original cdecl man page.Credits for the original cdecl tool:
Originally written by Graham Ross, improved and expanded by David Wolverton,
Tony Hansen, and Merlyn LeRoy. GNU readline support and Linux port by David
R. Conrad<EMAIL_ADDRESS>We are interested in fixing any bugs that exist in upcdecl. For bug reporting instructions, please go to http://upc.lbl.gov.
| Berkeley UPC | UPCDECL (1) | October 2015 |


SCOTTISH SUN SAYS
Boris Johnson is utterly terrified of being eaten alive by Nicola Sturgeon in a debate
by The Scottish SunELECTION telly debates almost always give off more heat than light.
And there was no change tonight as Boris Johnson and Jeremy Corbyn squared up for the first head-to-head.
For all the hype about who won or who messed up, it’s unlikely the debate will change the minds of many voters.
Watching the pair slug it out would have been an especially odd spectacle for many Scottish voters, with no place for Nicola Sturgeon, despite the SNP being streets ahead north of the border.
It also looks unlikely Mr Johnson will debate the First Minister any time soon.
Despite his bluster about the First Minister not standing as PM, it’s hard to conclude he’s not utterly terrified of being eaten alive by Ms Sturgeon.
The alternative TV battle was on the other channel, of course, as Scotland took on Kazakhstan.
But Johnson v Corbyn was enough to make a meaningless Euro qualifier at chilly Hampden look like the World Cup Final.
Greens goof
THE Greens and SNP are locked in a perpetual battle at Holyrood over who’s the most “progressive”.
In terms of tax, this vacuous buzzword means one thing — clobbering the wealthy as hard as possible.
Well, there’s bad news for the SNP.
It looks like the Greens might have won.
Their proposal for a rates overhaul, set down in a parliamentary amendment, would lead to — quite literally — astronomical bills for big businesses.
The Greens now insist their plans were an error. Quite how they made this mistake is a mystery, given the step-by-step calculation was carefully spelled out in legislative format.
On one hand, the bungle is funny. Until you remember the Greens have the minority SNP Government under the thumb.

Bleak diagnosis
FIGURES out yesterday for A&E waiting times do not bode well.
The number of Scots spending more than 12 hours in accident and emergency is up, while overall performance against the four-hour aim is at its worst since March 2018.
At the troubled Queen Elizabeth University Hospital in Glasgow, almost a third of patients spent longer than the target time in the emergency department.
As ever, the SNP will seek to claim performance is better than in other parts of the UK.
But these are targets set by Nats ministers, and they are meant to be achievable. It looks like we’re in for a long winter.
And ministers will not be forgiven if our hospitals are unprepared.


[gecode-users] Gecode 3.4.1 released
Guido Tack
tack at gecode.org
Fri Oct 8 09:32:47 CEST 2010
Dear all,
we are releasing a new version of Gecode:
Gecode 3.4.1
http://www.gecode.org
This release adds a new global constraint for bin-packing (with extended example) and filter functions for branchers. The reference documentation has been cleaned up. In particular, information on how to obtain, install, and link Gecode has been expanded and moved to "Modeling and Programming with Gecode" (Section 2.6). Additionally, the release fixes some bugs and contains some performance improvements.
On our web site, you find source packages, binary packages for Windows and Mac OS, and the full documentation.
Cheers,
Guido
More information about the users
mailing list


This is just a sample login page. You can use this as reference for your implementation of login page. This page explains how to use the API for login (See developer tools / press F12)


--- layout: post title: Generated headache date: 2016-02-16 11:55:54.000000000 +00:00 type: post published: true status: publish categories: - meta-thinking-beyond tags: [] meta: _edit_last: '1' _wpas_done_all: '1' author: email<EMAIL_ADDRESS>display_name: natseg ---
I recently had a discussion with the VP of engineering at my current company.
Unsurprisingly, we were gently arguing over learning natural languages vs learning programming languages.
Over a beer (I thought this is important for setting the context) and a halloumi burger (also important).
Empirically, I feel the common denominator to most of what I learn is my love for patterns.
Not that it's important, but here is a non-exhaustive list:
Social psychology: study of patterns in thoughts, feelings, and behaviors as influenced by the presence of others.
Puzzle/detective games, books and shows: any games where a mystery has to be solved.
eg. The Raven - Legacy of a Master Thief, Black Closet, ...
Detective tabletop RPGs and Murder Mystery game nights.
The Sherlock Holmes Canon, etc, etc, etc, you get the idea.
Now, languages:
I studied Latin as a child and I knew my interest for it could not have been communication or pleasure in pronunciation - it's a dead language. I realised I liked it because I knew it had a structure which I acknowledged and which helped deconstruct it for translation. I could also deconstruct/parse any word from my native language based on Latin and the shreds of Greek I have acquired over time. Languages are like a puzzle game. Figuring out where things go and what their permissions are (like a three-dimensional chess).
I could link a zillion articles to the benefits of learning.
I could link a zillion on top relating to the benefits of learning languages.
Maybe not a zillion, k.
Here's one which looks at what happens in your brain.
Fast forward to university. One day, I was dozing through a linguistics class when the professor started drawing some strange glyphs on the board.
And some more - vaguely reminding me of arithmetic and geometric progressions.
I rubbed my eyes, I was still studying English for sure. I had simply become acquainted with the work of a contemporary genius, namely Noam Chomsky.
What is interesting in this generative grammar theory of his (I am not pretending to be anywhere close to an expert) is how it struck me as a programmatic construct.
This stayed with me. It triggers a whole lot of questions.
Are these constructs led by rules born out of human chaos/fancy?
Or is there something more deterministic based on our context/dependencies (inc. brain capacities, environment, etc)?
This is more in line with what he looks at in his universal grammar moving towards...
the last bit of his work - minimalist program. Not grammar, you got that right, PROGRAM.
Natural language as a system based on economy produced by plastic cerebral circuits.
I am not saying natural and programming languages are the same but they are related.
If their similarities help understand the other, it must thereby also help with learning the other.
For more insight on the topic:
A presentation of Chomsky Hierarchy
AND
I would love to hear your opinion on the matter, especially as I sense this might be a very simplistic post on a very rich subject.


what garbage affixes do i have to deal with this week?
Next week
Week after next
Changelog
- 9/13/21 update
- Adjusted Theater of Pain timer to be in line with hotfix.
- Final new affix combo.
- Brought back "Next week" and "Week after next" since we actually know what they are now.
As always, give me a shout if you notice anything is off. My contact information is in the footer. Good luck and have fun!
Affixes
What is an "affix"?
An affix is a modifier applied to a mythic keystone at set levels. Different combinations occur every week, with the combinations eventually repeating on a set schedule.
Level 2 affixes
(these occur on all keystones, alternating weekly)
-
Fortified
-
Tyrannical
Level 4 affixes
(one affix will occur at +4 per week)
-
Bolstering
-
Bursting
-
Inspiring
-
Raging
-
Sanguine
-
Spiteful
Level 7 affixes
(one affix will occur at +7 per week)
-
Explosive
-
Grievous
-
Necrotic
-
Quaking
-
Storming
-
Volcanic
Seasonal affixes (+10)
(these occur on all keystones throughout the season at keystone level 10 and do not rotate weekly for the duration of the season)
-
Prideful
-
Tormented
Weekly schedule for affixes
The following table shows the expected affix schedule for the entirety of the current season.
| Baseline | 2 (+4) | 3 (+7) | Seasonal (+10) |
| Fortified | Bursting | Storming | Tormented |
| Tyrannical | Raging | Volcanic | Tormented |
| Fortified | Inspiring | Grievous | Tormented |
| Tyrannical | Spiteful | Necrotic | Tormented |
| Fortified | Bolstering | Quaking | Tormented |
| Tyrannical | Sanguine | Storming | Tormented |
| Fortified | Raging | Explosive | Tormented |
| Tyrannical | Bursting | Volcanic | Tormented |
| Fortified | Spiteful | Grievous | Tormented |
| Tyrannical | Inspiring | Quaking | Tormented |
| Fortified | Sanguine | Necrotic | Tormented |
| Tyrannical | Bolstering | Explosive | Tormented |
Group Considerations
Group makeup barely matters at low keystone levels. There is little reason to sweat your group composition on keys below 15. Bring the player, not the class.
That being said, your group composition will always be one tank, one healer, and three DPS. Multi-tank strategies are not viable, no matter how much you think they should be.
It's important to build a group that is well rounded in order increase your chances of completing a keystone within the timer. This means bringing consumables to make up for gaps in your group composition.
When considering your group composition, it is also to consider what each class can bring to the table. Does your group have:
- Ways to dispel buffs on enemies?
- Ways to dispel debuffs on allies?
- Multiple interrupts or other CC to stop enemy casting?
- Strong CC for difficult trash pulls?
Consumables
Mandatory (at least above keystone level 10)
- Current food
- Current flasks
- Current potions
- Repair mount/Auto-Hammer/Jeeves/Reeves
"Missing a class" consumables
Optional/niche/high key consumables
- Invisibility potions (used for skipping troubling trash packs at high key levels)
- Tome of Still Mind (you are allowed to step out of the instance to change talents using a tome)
Keystones
Time penalty for deaths
Five seconds are subtracted from the timer any time a player dies in a keystone run. While this may seem inconsequential at first, the time lost to death will add up quickly if players die to mechanics frequently. This can easily result in missing the timer.
Instance Timer and Requirements for "Level Jumps"
The following table shows the amount of time you have to complete a keystone run and upgrade your key. The +2 and +3 columns show how much time you have to complete a keystone run in order to +2 or +3 a key.
| Name | Par time | +2 keystone levels | +3 keystone levels |
| De Other Side | 43:00 | 34:25 (8:35 left on the timer) | 25:49 (17:11 left on the timer) |
| Halls of Atonement | 32:00 | 25:36 (6:24 left on the timer) | 19:12 (12:48 left on the timer) |
| Mists of Tirna Scithe | 30:00 | 24:00 (6:00 left on the timer) | 18:00 (12:00 left on the timer) |
| Plaguefall | 38:00 | 30:24 (7:36 left on the timer) | 22:38 (15:12 left on the timer) |
| Sanguine Depths | 41:00 | 32:48 (8:12 left on the timer) | 24:36 (16:24 left on the timer) |
| Spires of Ascension | 39:00 | 31:12 (7:48 left on the timer) | 23:24 (15:36 left on the timer) |
| The Necrotic Wake | 36:00 | 28:48 (7:12 left on the timer) | 21:36 (14:24 left on the timer) |
| Theater of Pain | 38:00 | 30:24 (7:36 left on the timer) | 22:38 (15:12 left on the timer) |
The Great Vault and You
The Great Vault is the Shadowlands replacement for the weekly chest from BFA, but more confusing.
Every week at reset you are eligible to choose ONE PIECE of gear from The Great Vault based on your accomplishments from the previous week. Completing more milestones does not get you more gear, but expands your choices for the ONE PIECE of gear that you can claim.
Remember that you only get to choose one piece of gear from The Great Vault no matter how many activities you do.
There are three paths to expand your gear choices: mythic plus, raiding, and PVP.
To reduce confusion, let's just assume that you only play mythic plus and don't raid or PVP.
To get the most choices at gear by doing only mythic plus, you must complete 10 mythic keystone runs a week. Completing 10 keystone runs a week will present you with three pieces of gear to choose from at reset.
That's the short version - to be able to choose from three pieces of loot, you gotta do 10 mythic keystone runs. Now let's do the long version where we talk about how keystone level affects the item level of gear you can choose from.
wait, how many gear choices do I get if I do X number of keystone runs?
If you do at least one, but less than 4 keystone runs: you get one piece of loot to choose from in The Great Vault. Its item level will be based on the highest level keystone run you completed. (Look at the table below to see what the item level will be.)
If you do between 4 and 9 keystone runs: you get two pieces of loot to choose from in The Great Vault. The first item's level will be based on the highest level keystone run you completed. The second item's level will be based on the FOURTH HIGHEST keystone run you completed.
If you do 10 or more keystone runs: you get three pieces of loot to choose from in The Great Vault. The first item's level will be based on the highest level keystone run you completed. The second item's level will be based on the FOURTH HIGHEST keystone run you completed. The third item's level will be based on the TENTH HIGHEST keystone run you completed.
One thing that I want to make clear now that you've read this: it doesn't matter in which order you complete your keystone dungeons, but it does matter how many high level keys you do. The game makes a list of all the keystone runs you completed and sorts them from highest level to lowest level, then selects the first, fourth, and tenth highest completed keystone levels. This means you can continue to do keystone runs past the 10 required for your weekly milestones to give you more options at higher level gear. You can NEVER LOWER the item level of the gear you're going to get since the list is sorted from highest to lowest.
Example: You've been busy this week! You completed fifteen total keystone dungeons! Wow! The game has built a list of all the keystone levels you completed and sorted them from highest to lowest to determine what you're going to get for gear choices. Here's an example list:
+15, +15, +15, +15, +13, +12, +10, +10, +10, +9, +5, +5, +5, +3, +2
The bolded numbers are the first, fourth, and tenth highest runs you completed. The item level of the gear you'll be able to choose from will be listed in The Great Vault's UI.
Let's say you want to raise the item level of one of your choices of gear, so you go out and complete a +10. Using the example above, that +10 is injected into the list and causes your tenth highest run to become a +10. Here's what the new list would look like:
+14, +14, +13, +13, +12, +11, +10, +10, +10, +10, +9, +5, +5, +5, +3, +2
I personally think this system is obtuse and WAY more confusing than it needs to be, but whatever.
Loot
| Level | Loot at the end | Great Vault |
| 1 | 207 | N/A |
| 2 | 210 | 226 |
| 3 | 213 | 226 |
| 4 | 216 | 226 |
| 5 | 220 | 229 |
| 6 | 223 | 229 |
| 7 | 223 | 233 |
| 8 | 226 | 236 |
| 9 | 226 | 236 |
| 10 | 229 | 239 |
| 11 | 229 | 242 |
| 12 | 233 | 246 |
| 13 | 233 | 246 |
| 14 | 236 | 249 |
| 15 | 236 | 252 |
The chest at the end of the run guarantees the GROUP two pieces of loot from the dungeon loot table - one at the item level that corresponds to the level of keystone you completed and one at a lower item level. If you beat the timer, the group will be awarded two pieces of loot at the item level that corresponds to the level of the keystone you completed.
Example: Your group times a +15, two pieces of 236 loot drop in the end of run chest. Later, your group fails to time a +15. One piece of loot drops at 236 and one drops at 233 item level.
At reset, your weekly chest will have a keystone based on the highest level keystone run that you completed the week before. However, the keystone will degrade if you do not continue to complete keystones at higher or equal levels to what you previously completed. (This sounds more complicated than it is)
Example: You timed a +16 last week. This week at reset you get a +16 keystone from your chest. This week you don't time anything higher than a +16. Next week at reset you get a +15 key from the vault.
Gear that drops from keystone runs and from the Great Vault can be upgraded to a maximum item level of 246 using Valor, a "new" currency system. More info about Valor below.
Mythic+ rating
Newly introduced in 9.1, Mythic+ Rating is more less Blizzard's official in-game implementation of raider.io's score system, with a few key differences.
 Completing a key provides a rating based on three factors:
the level of the key
the Affixes on the key
the amount of time it took you to finish the run
Unlike season one, Valor upgrades are now tied to your character's Mythic+ rating. Like Conquest and other similar systems, your Mythic+ Rating will be reset at the start of a new season.
In order to maximize your score, you must complete every dungeon on both Fortified and Tyrannical weeks, as they are scored separately. Whichever of the two versions yields your higher rating for each dungeon will provide full points, and the other will provide 1/3rd of the points. Check the example below for more information.
Example: Let's say you've achieved the following ratings in Plaguefall: Fortified - 100, Tyrannical - 90
Your rating for Plaguefall would then be: (higher rating) + (1/3)*(lower rating) = (100) + (1/3)*(90) = 130
Your overall Mythic+ Rating is simply the sum of your ratings for all dungeons.
If any player in a dungeon run is able to increase their Mythic+ Rating from the run, all players in the group are granted 65 bonus Valor, for a total of 200 Valor at the end.
Valor
Completing mythic dungeons, callings, and keystone runs will now award you with Valor, a currency that allows you to upgrade gear earned through mythic dungeons and keystone runs. The amount of Valor (135 per run) you get from mythic keystone runs is STATIC and does not scale with the difficulty of the keystone completed, so you can run low keys to easily get Valor. Valor does not have a traditional weekly cap, but a season cap (just like Conquest). This means that there's no REAL penalty if you don't cap in a week, as you can always catch up. There is no limit to the amount of Valor you can hold besides the current season cap.
As of 9.1, players will receive bonus Valor when a run increases the Mythic+ Rating of any player in your group, for a grand total of 200 Valor per run.
Like I mentioned above, gear acquired from the end of run chest and Great Vault can be upgraded to a maximum item level of 246.
In order to upgrade past certain item level thresholds you will need to complete seasonal mythic plus achievements:
- To upgrade an item to 226 item level, you do not need any M+ score.
- To upgrade an item to 229 item level, you need to have 600 Mythic+ Rating.
- To upgrade an item to 233 and 236 item level, you need to have 1000+ Mythic+ Rating.
- To upgrade an item to 239 item level, you need to have 1400+ Mythic+ Rating.
- To upgrade an item to 242 item level, you need to have 1700+ Mythic+ Rating.
- To upgrade an item to 246 item level, you need to have the 2000+Mythic+ Rating.
Unlike 9.0.5, the achievements are NOT ACCOUNT WIDE, which means you must earn score on any alts to be able to upgrade their gear. This is a terrible decision by Blizzard, in my opinion.
The cost to upgrade gear is static, meaning the cost does not change no matter the item level. Here's a table that shows how much it costs to level up a piece of gear:
| Gear slot | Valor points per upgrade |
| Rings, cloak, wrists, necklace, off-hand | 250 |
| Shoulders, gloves, trinkets, boots, belts | 400 |
| Helm, legs, chest | 475 |
| One-handed agility weapon, one-handed strength weapon, shield | 500 |
| One-handed intellect weapon | 750 |
| Two-handed weapon | 1000 |
Useful stuff
Addons
Addon Managers
A brief message about addon managers
As someone who values their privacy online, I feel like it's important that I mention the Overwolf client is BAD and all of its privacy options are OPT-OUT by default, instead of OPT-IN. I encourage you to use an open source addon manager like wowup.io or instawow. Just my two cents.
Timers
- GottaGoFast - All-in-one mythic+ timer. Shows % value of mobs on tooltip, timers required for +2/+3 chest and times that objectives are completed.
- Angry Keystones - Another take on the keystone/mythic+ timer. Displays affix rotation schedule and current affixes as well as providing chest timers and kill count % ingame. Also styles keystone links ingame to show you what dungeon they're for.
- iP Mythic Timer - A combo timer with a great deal of customization. Shows timer for +2 and +3, % per mob, total percent pulled, and more!
Keystone and group information
- Mythic Dungeon Tools - Plan out routes, then use a shareable interactive map to make sure your group is on the same page.
- Raider.io Addon - Hover over players in the world, guild, etc and get their raider.io score. The addon comes with an updater client to automatically get people's scores from raider.io!
- Astral Keys - Shows keys for guild mates, Battle Net friends and alts. It also shows if your friends/guildies have done a 15+ or not!
Weakauras
Mechanical WeakAuras
- Shadowlands Dungeons - Comprehensive alerts for trash and boss abilities. Covers things bossmods do not. Optionally offers simple verbal queues such as "stack, spread, dance, etc." Absolutely invaluable.
- Mists Maze Solver - Assists with solving the Mists maze. Click on the icons matching what you see, it reports the solution to party chat.
- [WA RM+] Required M+ percent to switch areas - Shows how much % is still needed before you have to change areas in dungeons like Necrotic Wake or Plaguefall.
- M+ Explosive [Plater] - Applys several animations when the explosion orb cast starts.
- Automark Infested + Explosive Orbs - Automatically marks infested and Explosive Orbs. NOTE: Works based off of enemy nameplates.
General Information & Utility WeakAuras
- Dungeon RIO and Classes - Shows LFG group leader's raider.io score in group title, class icons under roles, and applicant raider.io score before their names.
- ZenTracker - Interrupt and CD Tracker - Allows tracking of group/personal cooldowns. NOTE: This is the backend. If you get this, you must pair it with one of the frontend auras listed in the description!
- Effective Health - Magic and Physical - It shows you how much physical and magic damage you can take. Based on current health, absorbs, and defensive cooldowns from yourself and others.
- Great Vault on Weekly Chest Frame - Allows you to click the Great Vault icon in either the 'Mythic Keystone' or 'PvP' dungeon finder window in order to show you your vault.
Stats, tools, and guides
- raider.io - Raider.io has all kinds of tools including character specific M+ tracking, successful run comp tracking, and ranks for m+ dungeons. Community created! Their addon is probably the most useful group building/vetting addon you'll find as it uses their scoring system to show you how experienced players are.
- Questionably Epic - Easy-to-digest dungeon guides and an addon that provides tips and strategy reminders throughout dungeons. Community created!
- Keystone.guru - Plan your routes online collaboratively with your team. Community created!
Discords
- Mythic+ Friends Discord - The largest M+ Discord server aimed at helping players form groups and teaching new players about mythic plus.
- RU MythicKeys - Russian group finding and key pushing server.
Patreon heroes
You guys keep it all afloat. Thanks for your continued support! Head over to the Patreon page if you feel like becoming a patron!
- Iscari0t
- stangmeister
- Lightsauce
Revered Patrons
- Jason
- eric
Honored Patrons
- Aspyr & Ulsoga
- Gerardo
- Tzarkahn
- Jak
- Nathan
- Rob
Friendly Patrons
About
I wrote and re-wrote this one hundred times and it still comes off a little self-indulgent, but I wanted to write out some of the guiding stuff that led me to creating this site. I'll keep it short.
I wanted to make a site that was fast and clean. No third party trackers or ads. No heavy Javascript, no autoplaying videos. I don't make money from your traffic, and I don't want your data. I was previously using Google Analytics for my own curiosity, but removed it because of all the privacy implications. I'm one dude - I don't pay a staff to maintain this site or anything and I'm not beholden to a parent company or whatever. This isn't a heavy application that processes tons of user requests and requires a lot of servers to run. If you really want to help pay for server time or domain name renewals, I offer a Patreon.
I wanted to showcase community made stuff, and curate tools and addons. This mostly started with addons and Weakauras that I used personally, but grew into promoting raider.io early on, as well as community Discord servers.
I wanted to make a site that allows people to contribute information freely. My interest in World of Warcraft waxes and wanes, but I want to keep the information up-to-date and useful even if I'm not playing the game. I have admittedly been pretty bad at seeking out information to keep everything current.
Thanks again for visiting! Don't be a stranger!


| Top |
NcmStatsDistVKDENcmStatsDistVKDE — Abstract class for implementing N-dimensional probability distributions with a variable density estimator kernel. |
Functions
Properties
| double | local-frac | Read / Write / Construct |
| gboolean | use-rot-href | Read / Write / Construct |
Description
Abstract object to reconstruct an arbitrary N-dimensional probability distribution. This object provides the complementary tools to perform a radial basis interpolation in a multidimensional function using the NcmStatsDist class.
This object sets the kernel $\phi$ to be used in the radial basis interpolation. This object also implements some calculations needed in the NcmStatsDist class, such as the covariance matrices of the whole sample points and its Cholesky decompositions, the preparation of the interpolation matrix $IM$, the kernel normalization factors, and given a sample vector $\vec{x}$, the distribution evaluated in these points. Some of these calculations are explained below.
The NcmStatsDistVKDE uses a different covariance matrix for each sample point. This feature is computed
in the ncm_stats_dist_prepare_kernel()
function. In this algorithm, one should define the local_frac
parameter, that is,
the fraction of nearest sample points that will be used to compute each covariance matrix of each
sample point. This is done by calling the function ncm_stats_dist_vkde_set_local_frac()
.
The rest of the calculation follows the same procedure as the NcmStatsDist and NcmStatsDistKDE objects,
using now a different covariance matrix and normalization factor for each kernel. For more information about
how the NcmStatsDist class works, check NcmStatsDist and NcmStatsDistKDE objects.
The user must provide input the values: sdk
, CV_type
- ncm_stats_dist_vkde_new()
, y
- ncm_stats_dist_add_obs()
, split_frac
- ncm_stats_dist_set_split_frac()
,
over_smooth
- ncm_stats_dist_set_over_smooth()
, local_Frac
- ncm_stats_dist_vkde_set_local_frac()
, $v(x)$ - ncm_stats_dist_prepare_interp()
.
To see an example of how to use this object and the main functions that are called within each function, check the fluxogram at the end of this documentation,
where the order of the functions that should be called by the user and some of the functions that the algorithm calls.
Functions
ncm_stats_dist_vkde_new ()
NcmStatsDistVKDE * ncm_stats_dist_vkde_new (NcmStatsDistKernel *sdk
,NcmStatsDistCV CV_type
);
Creates a new NcmStatsDistVKDE object using sdk
as
kernel and CV_type
as cross-validation method.
ncm_stats_dist_vkde_ref ()
NcmStatsDistVKDE *
ncm_stats_dist_vkde_ref (NcmStatsDistVKDE *sdvkde
);
Increases the reference count of sdvkde
.
ncm_stats_dist_vkde_free ()
void
ncm_stats_dist_vkde_free (NcmStatsDistVKDE *sdvkde
);
Decreases the reference count of sdvkde
.
ncm_stats_dist_vkde_clear ()
void
ncm_stats_dist_vkde_clear (NcmStatsDistVKDE **sdvkde
);
Decreases the reference count of *sdvkde
and sets the pointer *sdvkde
to NULL.
ncm_stats_dist_vkde_set_local_frac ()
void ncm_stats_dist_vkde_set_local_frac (NcmStatsDistVKDE *sdvkde
,const gdouble local_frac
);
Sets local kernel fraction to local_frac
. This fraction
defines the amount of closest points from each sample point
that will be used to compute the covariance matrix of each point.
ncm_stats_dist_vkde_get_local_frac ()
gdouble
ncm_stats_dist_vkde_get_local_frac (NcmStatsDistVKDE *sdvkde
);
ncm_stats_dist_vkde_set_use_rot_href ()
void ncm_stats_dist_vkde_set_use_rot_href (NcmStatsDistVKDE *sdvkde
,const gboolean use_rot_href
);
Sets whether to use the rule of thumb bandwidth for the
ncm_stats_dist_vkde_get_use_rot_href ()
gboolean
ncm_stats_dist_vkde_get_use_rot_href (NcmStatsDistVKDE *sdvkde
);
Property Details
The “local-frac”
property
“local-frac” double
Fraction to use in the local kernel covariance computation.
Owner: NcmStatsDistVKDE
Flags: Read / Write / Construct
Allowed values: [0.001,1]
Default value: 0.05
The “use-rot-href”
property
“use-rot-href” gboolean
Whether to use the href rule-of-thumb to compute the final bandwidth.
Owner: NcmStatsDistVKDE
Flags: Read / Write / Construct
Default value: FALSE


Is It Just Me, Or Do The Cats Look More Human Now?
by Jill PantozziMe-ow!
The latest trailer for Cats has dropped on our laps to be cuddled...and it feels...different? I can’t decide if this is for better or worse. See for yourself.
Or maybe I’m just imagining things?
Tom Hooper’s adaptation of the Andrew Lloyd Webber Broadway hit shocked fans when we got a look at the first trailer, and not in a good way. In this latest look at the musical, we get to see Taylor Swift mouth “cats,” Idris Elba kinda look like he’s naked, and Jason Derulo...well, be Jason Derulo-y.
Cats hits theatres on December 26, a week after Star Wars: The Rise of Skywalker, December 19. Don’t forget your catnip.


A responsive horizontal nav bar that can contain links, tabs, buttons, icons, and a logo.
The .nav
container can have 3 parts:
.nav-left
.nav-center
.nav-right
Each of these containers can have a <a>
,.button
, .tabs
, .brand
. Add a active
class to show a active link.
You can also have tabs without a nav bar. Simply make a .tabs
container and add links in it. To make tabs go full width just add a is-full
class


Using the English 'EN' library. Providing a button to change to quote. Using the show() method.
Tag like 'funny'.
Use a word as tag, like 'myth'. Used to seach through the quote list. Use mixins to style the outcome.


SEND
This information is to be used for your security.
PASSWORD
SECURITY QUESTION
NEXT
3
DATE OF BIRTH
Hang on there. Almost done.
HOME
JOIN
HOW IT WORKS
ABOUT US
CONTACT US
LOGIN
CONFIRM
SECURITY ANSWER
BACK


SKYLINKConnectionConfig Class Reference
| Inherits from | NSObject |
|---|---|
| Declared in | SKYLINKConnection.h |
audio
enable/disable audio.
@property (nonatomic, assign) BOOL audio
Discussion
Default value is NO. This is a convinience property to set both sendAudio and receiveAudio to the same value.
Declared In
SKYLINKConnection.h
video
enable/disable video.
@property (nonatomic, assign) BOOL video
Discussion
Default value is NO. This is a convinience property to set both sendVideo and receiveVideo to the same value.
Declared In
SKYLINKConnection.h
sendAudio
enable/disable sending audio.
@property (nonatomic, assign) BOOL sendAudio
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
receiveAudio
enable/disable sending audio.
@property (nonatomic, assign) BOOL receiveAudio
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
sendVideo
enable/disable sending video.
@property (nonatomic, assign) BOOL sendVideo
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
receiveVideo
enable/disable receiving video.
@property (nonatomic, assign) BOOL receiveVideo
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
dataChannel
enable/disable dataChannel.
@property (nonatomic, assign) BOOL dataChannel
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
fileTransfer
enable/disable file transfer.
@property (nonatomic, assign) BOOL fileTransfer
Discussion
Default value is NO.
Declared In
SKYLINKConnection.h
timeout
number of seconds for file transfer timeout.
@property (nonatomic, assign) NSInteger timeout
Discussion
Default value is 60.
Declared In
SKYLINKConnection.h
maxAudioBitrate
Used to limit remote peers audio media bitrate.
@property (nonatomic, assign) NSInteger maxAudioBitrate
Discussion
Default value is 0, meaning not bitrate limit.
Declared In
SKYLINKConnection.h
maxVideoBitrate
Used to limit remote peers video media bitrate.
@property (nonatomic, assign) NSInteger maxVideoBitrate
Discussion
Default value is 512.
Declared In
SKYLINKConnection.h
maxDataBitrate
Used to limit remote peers data bitrate.
@property (nonatomic, assign) NSInteger maxDataBitrate
Discussion
Default value is 0, meaning not bitrate limit.
Declared In
SKYLINKConnection.h
)
Optional configuration for advanced users. (Deprecated: Use -(BOOL)advancedSetting:(NSString *)settingKey setValue:(id)value instead.)
@property (nonatomic, weak) NSDictionary *userInfo DEPRECATED_MSG_ATTRIBUTE ( "Use -(BOOL)advancedSetting:(NSString *)settingKey setValue:(id)value instead." )
Discussion
The userInfo dictionnary key and associated settings are: “STUN” key (NSNumber value): set @“STUN” to @YES to DISABLE STUN server. “TURN” key (NSNumber value): set @“TURN” to @YES to DISABLE TURN server. “disableHOST” key, set @YES to disable HOST. “transport” key (NSString value): expected values are @“TCP” or @“UDP”. “audio” key (NSString value): preferred audio codec, expected values are @“Opus” or @“iLBC”. @description userInfo NSDictionary carrying the desired settings. Read the discussion for details.
Declared In
SKYLINKConnection.h
– advancedSettingKey:setValue:
Optional configuration for advanced users.
- (BOOL)advancedSettingKey:(null_unspecified NSString *)settingKey setValue:(null_unspecified id)settingValue
Parameters
settingKey |
the key |
|---|---|
settingValue |
the bool value |
Return Value
YES if the setting was sucessfully set (valid setting key and associated value).
Discussion
The settingKey and associated settings values are: “STUN” key, (NSNumber value): set @“disableSTUN” to @YES to disable STUN server. “TURN” key, (NSNumber value): set @“disableTURN” to @YES to disable TURN server. “disableHOST” key, set @YES to disable HOST. “transport” key, (NSString value): expected values are @“TCP” or @“UDP”. “audio” key, (NSString value): preferred audio codec, expected values are @“Opus” or @“iLBC”. “startWithBackCamera” key, (NSNumber value): if you send the camera, this will determine the local camera to start the video capture. Default is @NO (ie: use front camera) “preferedCaptureSessionPresets” key, (NSArray value): ordered array of AVCaptureSessionPreset for the video capture, the first if any that can be used for the device will be picked.
Declared In
SKYLINKConnection.h


William & Mary sets record in 55-19 romp past Rhode Island
by EndPlayWILLIAMSBURG, Va. (AP) - Hollis Mathis passed for a touchdown and rushed for two more as William & Mary set a school rushing record while clobbering Rhode Island 55-19 Saturday.
William & Mary (4-6, 2-4 Colonial Athletic Association) scored seven rushing touchdowns by six different players in a school-record 462 yards on the ground. The previous record (453 yards) had stood since 1970.
Mathis, a freshman, was 5-of-10 passing for 118 yards. Bronson Yoder, also a frosh, led with 14 carries for 144 yards and a TD. Owen Wright added 126 yards and a TD.
Vito Priore and Darius Perrantes combined for 315 yards passing and three touchdowns, but each was intercepted. William & Mary scored 21 points off three turnovers.
Isaiah Coulter caught eight passes for 153 yards and three TDs for the Rams (2-8, 0-6).
Yoder also picked up 46 kickoff return yards, giving him 847 on the season, breaking the school's single-season record of 817.


#import <NTPackageInfo.h>
Inherits NSObject.
Instance Methods | |
| (BOOL) | - isEqual: |
| (NSUInteger) | - hash |
| (id) | - initWithPackageId:packageType:version:size:serverURL:tileMask:metaInfo: |
| (NSString *) | - getPackageId |
| (enum NTPackageType) | - getPackageType |
| (int) | - getVersion |
| (NSString *) | - getName |
| (NTStringVector *) | - getNames: |
| (unsigned long long) | - getSize |
| (NTPackageTileMask *) | - getTileMask |
| (NTPackageMetaInfo *) | - getMetaInfo |
Information about map package. This includes id, type, version, name, description and size.
| - (NTPackageMetaInfo *) getMetaInfo |
Returns package meta info. If package contains no meta info, null is returned.
| - (NSString *) getName |
Returns the default name (short description) of the package. It is better to use getNames method instead, as each package may contain multiple names.
The name returned is generic name or if that is not available, then English name.
| - (NTStringVector *) getNames: | (NSString*) | lang |
Returns the names (short description) of the package. This can be displayed to the user. Each package may have multiple names, if the package has multiple classifications.
Note: this information is dervied from package meta info, "name_XXX" fields.
| lang | The language for the name |
| - (NSString *) getPackageId |
Returns the internal package id. This should not be displayed to the user.
| - (enum NTPackageType) getPackageType |
Returns the package type.
| - (unsigned long long) getSize |
Returns the size of the package in bytes. This can be displayed to the user.
| - (NTPackageTileMask *) getTileMask |
Returns the encoded tile mask of the package. This is available for map packages but not for routing packages.
This should not be displayed to the user.
| - (int) getVersion |
Returns the package version. This should not be displayed to the user.
| - (NSUInteger) hash |
Returns the hash value of this object.
| - (id) initWithPackageId: | (NSString*) | packageId | |
| packageType: | (enum NTPackageType) | packageType | |
| version: | (int) | version | |
| size: | (unsigned long long) | size | |
| serverURL: | (NSString*) | serverURL | |
| tileMask: | (NTPackageTileMask*) | tileMask | |
| metaInfo: | (NTPackageMetaInfo*) | metaInfo | |
Constructs a new package info instance.
| packageId | The unique id of the package |
| packageType | The type of the package |
| version | The increasing version number of the package |
| size | Size of the package in bytes |
| serverURL | Location of the package |
| tileMask | The tile mask of the package |
| metaInfo | Package meta info |
| - (BOOL) isEqual: | (id) | object |
Checks if this object is equal to the specified object.
| object | The reference object. |


Only allows labels in sensible locations.
This rule only allows labels to be on do/for/while/switch
statements.
Labels in JavaScript only can be used in conjunction with break
or continue
,
constructs meant to be used for loop flow control. While you can theoretically use
labels on any block statement in JS, it is considered poor code structure to do so.
Not configurable.
"label-position": true
{}


--- layout: default title: Magnific Popup: Responsive jQuery Lightbox Plugin description: Light and open source conditional lightbox with focus on performance and user experience, for jQuery and Zepto.js. ---
Warning! Plugin is in very-very early beta, for now please do not use it in live projects and wait until I completely finish it. In about a week, it should be fully ready. Follow me on Twitter to get notified.
Want to help?
Magnific Popup is a responsive jQuery lightbox plugin that is focused on performance and providing best experience for users with any device and works with jQuery.
Plugin is modular - you can include in build only features that you neeed using online build tool or by compiling it by yourself with Grunt.js. Size of core JS file: 2.8KB gzipped + each module weights about 0.5KB. Sass CSS preprocessor is used for easier skinning, but you're not obligated to use it.
Majority of lightbox plugins require you to define size of it via JS option. Magnific Popup does not - feel free to use relative units like EM's or resize lightbox with help of CSS media queries.
Update content inside lightbox without worrying about how it'll resize and center.
Magnific Popup displays images before they're completely loaded to take full advantage of stuff like progressive JPEG's.
Plugin does not use slow jQuery animations, and provides an easy way to add CSS3 transitions.
Plugin has an option to automatically switch to alternative mobile-friendly source on small screen sizes. Brad Frost has a terrific article about this technique.
By default controls are made just with help of CSS, without external graphics, which makes them not just light, but also high-dpi screen (retina) ready, and of course you can style them by yourself however you wish.
Tons of options to configure anything, public methods, events, ability to extend any function without modifying the core and other awesome stuff that you like.
Close button can be positioned inside or outside of the popup, arrows can be on sides or paired on top, you change appearance of the scrollbar.
Popup has an extendable micro templating engine that reuses existing DOM elements to avoid filling the memory, which is especially useful for gallery mode.
Your screen size is small and lightbox disabled! Images, videos and maps now just open direct link to their sources.
{% include examples.html %}IE support is under development. Plugins works and tested on modern browsers, iOS, Android, Blackberry. If you found that on some device it works incorrectly, please open issue on GitHub.
If you wish to get notified about important plugin updates, you may follow me on Twitter, or join my tiny Mailchimp email newsletter.
Script is MIT licensed and free and will always be kept this way. But has a small restriction from me - Please do not create public WordPress plugin based on it, because I will create it =)..
Attribution is not required, but linking back to this page is much appreciated, especially if you use it in theme.
magnific-popup
.To get your name with link to your site listed here contribute to Magnific Popup on GitHub:
Noone is here yet, just me.


Toggle navigation
Jukebox
FM
About this project
Event schedule
Send a message
Connect to Last.fm
Electronic Dance Music, 24/7 live
Non-stop music from your favorite artists at Monstercat
Title
by
Artist


|
SOLDIER
- It moves like a Chess Knight, except:
|
It
cannot jump over other pieces, i.e., if there is some other
piece adjacent on a row or column, the soldier cannot move in
that direction. |
|
It
can only move forward, i.e., moves one cell on the same row
then advance one cell diagonally, or advances one cell then moves
one cell diagonally forward. |
|
If
the soldier lands on a cell with an opponent piece, it
captures it. Capture is mandatory and it must capture for as
long as possible (however, at a given instant, the player can
decide between two capturing moves). |
|
A
soldier reaching last row, is promoted to a King. |
|
|
KING
- A King moves like the soldier, but it can also move backwards. |
|
GOAL
- The first player to satisfy one of the following conditions, wins:
|
One
of his Kings reaches his home row. |
|
Capture
all opponent pieces. |
|
Stalemate
the opponent. |
|
|


Fall is such a fun season! It is also called Autumn, but I don't know a single person that actually refers to it as that.The leaves are turning all sorts of colors and its the perfect temperature: not too hot and not too cold. The trees are half bare and half colorful, with yellow, red, and orange leaves. It also is the time of year that the best holidays occur. This includes Halloween, where we all get to dress up as whatever we want. Fall also includes the best holiday of all: my birthday. Other "holidays" include my little sister's birthday, my older sister's birthday, and probably other people's birthdays that I don't know. It also is when football season is, so we get to go to games and stand in the stands with everyone. It also is when parent weekend takes place. This last year, my mom and sister came to visit. To top it all off, Fall is when the first semester of school happens. New beginnings! And those are just some reasons of why I love the season of Fall!


To Gillian on her 37th Birthday (1996) A film review by Ben Hoffman Copyright 1996 Ben Hoffman
This is a sweet movie with a sad but heartwarming story and some very fine acting.
Exactly two years ago, on Gillian's 35th birthday, the Lewis family, consisting of Gillian (Michelle Pfeiffer), her husband Daniel (Peter Gallagher) and daughter Rachel (Claire Danes) were out sailing. Gillian, in a very happy mood, climbed the mast, when a gust of wind suddenly hit the sail and she was thrown to the deck and killed. Now, (It would have been Gillian's 37th Birthday) Daniel cannot forget her for a moment; in fact he has been "seeing" her at the beach and "talking" with her as if she were still alive.
As his sister-in-law, Esther, (Kathy Baker) points out to David, his obsession with his dead wife has estranged his relationship with his daughter and Esther is going to go to court to obtain custody of the young teenager unless Daniel can let go of his wife and return to a normal existence. Daniel will have to make his move.
Others in the cast include Wendy Crewson, Bruce Altman, Laurie Fortier and Freddie Prinze, Jr.
All the acting is of high caliber and that helps make the movie believable and touching.
Directed by Michael Pressman who also directed the 1985 West Coast stage production. He is the executive producer of the TV series PICKET FENCES and has directed some of the episodes.
Rating 3 Bytes
4 bytes = Superb 3 bytes = Too good to miss 2 bytes = Average 1 byte = Save your money
Copyright 1996 Ben Hoffman
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews