|
Keraflow
Deep Learning for Python.
|
Public Member Functions | |
| def | variable |
| Instantiate a tensor variable. | |
| def | placeholder |
| Instantiate an input data placeholder variable. | |
| def | shape |
| Returns the symbolic shape of a tensor. | |
| def | eval |
| Evaluates the value of a tensor. More... | |
| def | switch |
| condition: scalar tensor. | |
| def | zeros |
| Instantiate an all-zeros tensor variable. | |
| def | ones |
| Instantiate an all-ones tensor variable. | |
| def | eye |
| Instantiate an identity matrix. | |
| def | zeros_like |
| Instantiates an all-zeros tensor of the same shape as another tensor. | |
| def | ones_like |
| Instantiates an all-ones tensor of the same shape as another tensor. | |
| def | dot |
| numpy.dot on tensors | |
| def | gather |
Retrieves the vectors of indices indices in the 2D tensor reference . More... | |
| def | prod |
| Multiply the values in a tensor, alongside the specified axis. | |
| def | any |
| Bitwise reduction (logical OR). | |
| def | transpose |
| Transpose dimensions. More... | |
| def | repeat |
| Repeat the elements of a tensor along an axis, like np.repeat. More... | |
| def | expand_dims |
| Add a 1-sized dimension at index "axis". | |
| def | squeeze |
| Remove a 1-dimension from the tensor at index "axis". | |
| def | dropout |
Sets entries in x to zero at random, while scaling the entire tensor. More... | |
| def | rnn |
| Iterates over the time dimension of a tensor. More... | |
| def keraflow.backend.theano_backend.TheanoBackend.dropout | ( | self, | |
| x, | |||
| drop_rate, | |||
noise_shape = None |
|||
| ) |
Sets entries in x
to zero at random, while scaling the entire tensor.
| x | tensor |
| drop_rate | fraction of the entries in the tensor that will be set to 0. |
| noise_shape | shape for randomly generated keep/drop flags, must be broadcastable to the shape of x |
| def keraflow.backend.theano_backend.TheanoBackend.eval | ( | self, | |
| x | |||
| ) |
Evaluates the value of a tensor.
Returns a Numpy array.
| def keraflow.backend.theano_backend.TheanoBackend.gather | ( | self, | |
| reference, | |||
| indices | |||
| ) |
Retrieves the vectors of indices indices
in the 2D tensor reference
.
| reference | a 2D tensor. |
| indices | 2D int tensor or list. |
| def keraflow.backend.theano_backend.TheanoBackend.repeat | ( | self, | |
| x, | |||
| rep, | |||
| axis | |||
| ) |
Repeat the elements of a tensor along an axis, like np.repeat.
If x has shape (s1, s2, s3) and axis=1, the output will have shape (s1, s2 * rep, s3).
| def keraflow.backend.theano_backend.TheanoBackend.rnn | ( | self, | |
| step_function, | |||
| inputs, | |||
| initial_states, | |||
go_backwards = False , |
|||
mask = None , |
|||
unroll = False , |
|||
input_length = None |
|||
| ) |
Iterates over the time dimension of a tensor.
inputs: tensor of temporal data of shape (samples, time, ...) (at least 3D). step_function: Parameters: input: tensor with shape (samples, ...) (no time dimension), representing input for the batch of samples at a certain time step. states: list of tensors. Returns: output: tensor with shape (samples, ...) (no time dimension), new_states: list of tensors, same length and shapes as 'states'. initial_states: tensor with shape (samples, ...) (no time dimension), containing the initial values for the states used in the step function. go_backwards: boolean. If True, do the iteration over the time dimension in reverse order. mask: binary tensor with shape (samples, time), with a zero for every element that is masked. unroll: whether to unroll the RNN or to use a symbolic loop (scan
). input_length: must be specified if using unroll
.
A tuple (last_output, outputs, new_states). last_output: the latest output of the rnn, of shape (samples, ...) outputs: tensor with shape (samples, time, ...) where each entry outputs[s, t] is the output of the step function at time t for sample s. new_states: list of tensors, latest states returned by the step function, of shape (samples, ...).
| def keraflow.backend.theano_backend.TheanoBackend.transpose | ( | self, | |
| x, | |||
| dims | |||
| ) |
Transpose dimensions.
dims should be a tuple or list of dimension indices, e.g. [0, 2, 1].


veroviz.getTimeDistScalar2D module¶
-
getTimeDistScalar2D
(startLoc=None, endLoc=None, outputDistUnits='meters', outputTimeUnits='seconds', routeType='euclidean2D', speedMPS=None, dataProvider=None, dataProviderArgs=None)[source]¶ Returns scalar values of time and distance between 2 points in 2 dimensions.
- Parameters
startLoc (list, Required, default as None) – The starting location, expressed as either [lat, lon] or [lat, lon, alt]. Differences in altitude between the starting and ending locations will be ignored (this is a 2D function).
endLoc (list, Required, default as None) – The ending location, expressed as either [lat, lon] or [lat, lon, alt]. Differences in altitude between the starting and ending locations will be ignored (this is a 2D function).
outputDistUnits (string, Optional, default as 'meters') – Specifies the desired distance units for the function’s output. Valid values are ‘meters’, ‘m’, ‘kilometers’, ‘km’, ‘miles’, ‘mi’, ‘feet’, ‘ft’, ‘nm’, and ‘nmi’ (nautical miles). See Units for options and abbreviations.
outputTimeUnits (string, Optional, default as 'seconds') – Specifies the desired time units for the function’s output. Valid values are ‘seconds’, ‘hours’, and ‘minutes’. See Units for options and abbreviations.
routeType (string, Optional, default as 'euclidean2D') – This describes a characteristic of the travel mode. Possible values are: ‘euclidean2D’, ‘manhattan’, ‘fastest’, ‘shortest’, ‘pedestrian’, ‘cycling’, and ‘truck’. The ‘euclidean2D’ and ‘manhattan’ options are calculated directly from GPS coordinates, without a road network. Neither of these two options require a data provider. However, the other options rely on road network information and require a data provider. Furthermore, some of those other options are not supported by all data providers. See Data Providers for details.
speedMPS (float, Conditional, default as None) – Speed of the vehicle, in units of meters per second. For route types that are not road-network based (i.e., ‘euclidean2D’ and ‘manhattan’), this field is required to calculate travel times. Otherwise, if a route type already incorporates travel speeds from road network data, (i.e., ‘fastest’, ‘shortest’, and ‘pedestrain’), this input argument may be ignored. If provided, speedMPS will override travel speed data used by the route type option.
dataProvider (string, Conditional, default as None) – Specifies the data source to be used for obtaining the travel data. See Data Providers for options and requirements.
dataProviderArgs (dictionary, Conditional, default as None) – For some data providers, additional parameters are required (e.g., API keys or database names). See Data Providers for the additional arguments required for each supported data provider.
- Returns
time (float) – Travel time from the start location to the end location. Units are determined by outputTimeUnits, which default to be in seconds.
dist (float) – Distance from the start location to the end location. Units are determined by outputDistUnits, which default to be in meters.
Note
getTimeDistScalar2D() is similar to getTimeDist2D(), but instead of returning matrices and vectors, getTimeDistScalar2D() returns two scalars for the travel time and distances between start and end locations.
Example
- Import veroviz and check if the version is up-to-date:
>>> import veroviz as vrv >>> vrv.checkVersion()
- Example 1
>>> import os >>> >>> [timeSec, distMeters] = vrv.getTimeDistScalar2D( ... startLoc = [42.80, -78.80], ... endLoc = [42.90, -78.80], ... routeType = 'fastest', ... dataProvider = 'ORS-online', ... dataProviderArgs = {'APIkey': os.environ['ORSKEY']}) >>> print("Travel time in seconds: %.2f" % (timeSec)) >>> print("Distance in meters: %.2f" % (distMeters)) Travel time in seconds: 1134.74 Distance in meters: 13891.61
- Example 2 - This example includes all functional arguments:
>>> [timeMin, distMiles] = vrv.getTimeDistScalar2D( ... startLoc = [42.80, -78.80], ... endLoc = [42.90, -78.80], ... outputTimeUnits = 'minutes', ... outputDistUnits = 'miles', ... routeType = 'fastest', ... speedMPS = None, ... dataProvider = 'ORS-online', ... dataProviderArgs = {'APIkey': os.environ['ORSKEY']}) >>> [timeMin, distMiles] [18.912333333333333, 8.631867722171823]


--- layout: page title: About date: 2015-09-26 14:20:35.000000000 +07:00 type: page published: true status: publish categories: [] tags: [] meta: _wp_page_template: default author: login: ducdao email<EMAIL_ADDRESS>display_name: DHDuc first_name: Duc last_name: Dao ---
Hi there. I'm Duc Dao, an web developer living in Hanoi, Vietnam. I graduated from University of Economic and Technical Industries, and I'm just a junior developer. I'm interesting in web technology consist front-end and PHP back-end.Now, I'm working at SmartOSC Corporation such as Magento developer.


"HERON "(Leviticus 11:19; Deuteronomy 14:18), ranked among the unclean birds. The Hebrew name is ’anaphah, and indicates that the bird so named is remarkable for its angry disposition. “The herons are wading-birds, peculiarly irritable, remarkable for their voracity, frequenting marshes and oozy rivers, and spread over the regions of the East.” The Ardea russeta, or little golden egret, is the commonest species in Asia.
"HERON "(Leviticus 11:19; Deuteronomy 14:18), ranked among the unclean birds. The Hebrew name is ’anaphah, and indicates that the bird so named is remarkable for its angry disposition. “The herons are wading-birds, peculiarly irritable, remarkable for their voracity, frequenting marshes and oozy rivers, and spread over the regions of the East.” The Ardea russeta, or little golden egret, is the commonest species in Asia.


CLAIRE DOLAN A film review by Jeremiah Kipp Copyright 2001 filmcritic.com filmcritic.com
A clinically austere art house film, Claire Dolan is Lodge Kerrigan's follow-up to the rigorous Clean, Shaven. He opens with cool, carefully composed images of impassive skyscrapers, a hollow wind whistling through, before moving to the reticent, emotionally disconnected title character.
Claire Dolan (Katrin Cartlidge, Naked) is a high priced prostitute, so down on her luck she phones her johns from a pay phone. "I miss you. I want to see you. I really want you inside me. I can be there in ten minutes." All her human interaction is reduced to a minimalist bargaining of her goods for exchange.
Every line of dialogue is pared down to simple, direct statements spoken by the walking dead, devoid of passion, pity or conviction.
Claire's sole emotional link to the rest of the world has already died. Her ailing mother has recently passed away, and Claire automatically moves toward the one thing that may restore some coherence and purpose to her miserable life: the dream of filling her mother's role by bearing a child.
Moving from the desolate streets and skyscrapers of Manhattan to the warehouse streets and lonely coffee shops of New Jersey, escaping her pimp (subtle Colm Meaney, who brings a chilly efficiency to the role). Claire has a disinterested sexual affair with an inarticulate cab driver (Vincent D'Onofrio, The Cell) who, upon learning of her life as a prostitute, begins to follow her, Taxi Driver style.
Kerrigan paints a world of zero empathy. The vapid dialogue exists only to fill dead air between the frequent sex scenes, which are shot as functional, cold, even unfriendly, piled on one after another.
There's not much compassion and even less humor in the nearly unwatchable Claire Dolan, a fine piece of filmmaking that presents little relief for all its agony. While Kerrigan offers an assured voice of cinematic authority, finding the melancholy emotional undercurrent in each frame, his minimalist dialogue feels too stilted and inorganic.
Claire Dolan is helped enormously by some fine performances by Meaney, D'Onofrio and the courageous Katrin Cartlidge, who has slowly but resolutely built up a body of work in challenging and provocative films such as Naked, Breaking the Waves and Before the Rain. The camera seems fascinated by her weathered face and slightly crooked teeth, her moments of subdued introspection. Her prostitute seems closer to reality than most "heart of gold" Hollywood variations (a la Leaving Las Vegas). There's something appealing in Cartlidge's performance that arouses pathos. She's attractive in a real, unforced way. Her considerable intensity is kept in reserve; few actors make silence so compelling.
There's a devastating example of psychological violence under the polite surface of a chance encounter on the streets of New York, where one person holds the cards against another, and a third person -- an innocent -- is left painfully in the dark. It's unsettling in an almost comical way and difficult to articulate, which almost redeems the unwavering tone of bleak chic that permeates Claire Dolan.

Visit filmcritic.com on the Web at http://www.filmcritic.com
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


If you are really impatient, I’d suggest you read the Classes Overview below and otherwise stick to the API Documentation for the classes like DoubleMatrix.
The main goals of jblas were to provide very high performance, close to what you get from state-of-the-art BLAS and LAPACK libraries, and easy of use, which means that in the ideal case, you can just mechanically translate a matrix expression from formulas to Java code.
In all brevity, here is what you need to know to get started:
org.jblas
which represent real and complex matrices in single and
double precision.
ones
(constructs a matrix of all ones),
zeros
, rand
(entries uniformly distributed between 0 and 1),
randn
(entries normally distributed), eye
(unit matrix), diag
(matrix with given diagonal). Dimensions are specified in the order
“row”, “column”. The number of columns defaults to 1 if omitted
(meaning that you construct a row vector, if you supply just one
dimension).
put
and get
. Methods also exist for
reading or writing a whole column, row, or submatrix.
add
, – becomes sub
, * becomes mul
, / becomes
div
,
and so on.
double
or float
value, or a matrix with only
one element as the argument to a method, for example, to add the
same value to all elements of the matrix.
mul
is element-wise multiplication. Matrix-matrix multiplication
is called mmul
.
addi
is like +=
.
What is missing right now:
double
and float
arrays to store the matrix. Whenever you
call a native function, the array is first copied. This means that
it doesn’t make much sense to call a native routine if its
computation is linear in the size of the data, but this includes
most of BLAS Level 1 and Level 2. jblas therefore uses the Java
implementation for things like vector addition, or even
matrix-vector multiplication and is therefore not as fast as native
BLAS. Currently, I’m contemplating some caching schemes to improve
performance here.


Notebooks
Story: Words and sentences: by !kweiten ta ||ken
Words and sentences: by !kweiten ta ||ken
Title
Words and sentences: by !kweiten ta ||ken
Collection
Summary
Sentences on some |xam who visited !kweiten ta ||ken's husband ≠kasin, and where they come from. Words in the Katkop dialect, from ≠kásin (B XXV. 2355-2360), from !kwéiten ta //ken (L VI.-1. 3882, 3859-3897), and from Dia!kwãin (L V.-6. 4434 and 4435, 8. 4615 rev., 9. 4653 rev., etc.).
Comments
1) The page numbers in this book (VI-1) are duplicates of those in notebook IV-4, 2) p.3896v: names of |xam who visited ≠kasin (!kweiten ta ||ken's husband), 3) This story is found in Book VI-1
Contributors
!kweiten ta ||ken (Rachel) (VI)
Date
11 December 1874
Categories
Keywords
words and sentences (in Katkop dialect) , words and sentences (by !kweiten ta ||ken) , personal history (of !kweiten ta ||ken and her husband ≠kasin) , personal history (names of |xam) , personal history (names of places) , personal history (groups of |xam) , personal history (|xam relations with others) , names (of |xam) , names (of places) , names (of groups of |xam)
Story Pages
3897


Layout creates a border layout that has auto-sizing 'center pane' surrounded by up to four closable and resizable 'border panes' (north, south, east and west). It can also create multiple headers inside each pane.
For more complex layouts you can nest layouts within layouts. Possibilities are unlimited - from simple fixed headers or sidebars to rich applications.
Each layout pane can be closed, opened and resized, within automatic or specified limits. You can use layout either for an entire page (full page layout) or for a specific region in the page (element layout).
Furthermore, any custom content can be placed between layout panes. There are also client-side and server-side state management.
The layout in PrimeFaces Extensions is described by model which binds all layout options together.
Layout options are built up by the class LayoutOptions.
By this way, you can use all available options from the underlying jQuery layout plugin.
Please refer the documentation to learn all options:
Overview of Layout Options
Changelog, Using Examples
Another way to specify options is setting options as attributes of layout pane (pe:layoutPane).
By this way, no model class LayoutOptions is needed, but the possibilities are limited.
It is not possible to introduce a lot of various options via tag attributes of pe:layoutPane. The number of options is too big.
Only mostly used options are available via tag attributes.
Another advantage of the options attribute
is the performance. This attribute points to an instance of the class LayoutOptions or an JSON String representing serialized LayoutOptions.
Serializing of layout options to an JSON string can increase the time of layout building when the layout is built during application startup
in an application scoped bean (LayoutOptions gets always serialized to JSON to be able to be used in the underlying widget).
Use the method toJson() in the LayoutOptions if you want to serialize all options to an JSON string.


THE BONE COLLECTOR (M). (Universal/Columbia Tristar) Director: Phillip Noyce Stars: Denzel Washington, Angelina Jolie, Ed O'Neill, Queen Latifah, Mike McGlone, Michael Rooker, Luiz Guzman, Leland Orser, John Benjamin Hickey, Bobby Cannavale Running time: 118 minutes.
There is something inherently fascinating about serial killers and exploring the pathology behind these psychopaths that continues to intrigue writers and film makers, and, ultimately, audiences. Seven and Silence Of The Lambs are probably the pinnacle of this genre. Based on the novel by Jeffrey Deaver, a best selling author who specialises in thrillers about psychotic killers and forensic evidence, The Bone Collector is a solid and generally well made thriller that follows in their footsteps.
Although not quite in the same league, The Bone Collector still crams in enough creepy moments and shocks to satisfy fans of this sort of stuff. If nothing else, it may scare you away from catching a taxi late at night! However, the film is ultimately let down by a rather disappointing conclusion.
The opening credit sequence immediately recalls Seven, while it also effectively establishes the back-story in much the same fashion employed by Aussie director Jon Hewitt in the recent Redball.
With a deliberate nod in the direction of Rear Window, the film introduces us to an unusual hero in Lincoln Rhyme (Denzel Washington), a once brilliant forensic investigator left a bed-ridden quadriplegic. Much of the novel dealt with Rhyme's depressed nature and his suicidal tendencies, but the film version moves away from this psychologically darker territory. Although physically infirm, Rhyme is asked by a former colleague (Ed O'Neill) to put his skills to use in tracking down a vicious new serial killer. This mysterious killer prowls New York in a taxi cab, executes his victims in rather gruesome fashion, and leaves the scene littered with clues that point towards his next crime.
A crucial element of Rhyme's investigative team is Amelia Donaghy (Angelina Jolie, recently seen in Pushing Tin, etc), a rookie cop who demonstrates a flair for forensic science. She becomes his eyes, ears and legs, gathering evidence which he interprets with the help of some state of the art equipment in his apartment. This unusual pair race against time to uncover the identity of the killer as the body count and the tension slowly mounts.
Ex-patriate director Phillip Noyce makes great mainstream Hollywood action films (Clear And Present Danger, Patriot Games, etc), and he handles this formulaic thriller competently enough. In true Hitchcock fashion, he throws in a few clever, but contrived, red herrings and some artful pieces of misdirection, particularly as the film nears its climax. Like David Fincher in Seven, Noyce deliberately downplays some of the more graphic moments. But he shows us just enough of the sadistic killer's handiwork to let our imaginations switch to overdrive, which adds to the gritty suspense. Much of the film takes place in claustrophobic settings, dirty subterranean tunnels and long abandoned, decrepit buildings, and Dean Semler's suitably dark and gloomy perfectly matches the mood of this chilling thriller.
The role of Rhyme is seemingly tailor made for former Superman star Christopher Reeve, but that is a piece of (type?)casting that is too obvious, even for Hollywood. To his credit, Noyce has gone for something less predictable. Washington brings plenty of dignity and charisma to a role that is physically challenging because of its very nature. Jolie (actor Jon Voight's daughter) has an intelligent, sexy, engaging and appealing screen presence, and her performance here confirms her status as a star of the future. The gradually developing relationship between the pair brings an understated air of sexual tension to proceedings, and the rapport that develops between the pair cries out for a sequel.
***1/2 greg king http://www.netau.com.au/gregking
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


Toggle navigation
Digit Paper
Home
AA Calculator
Top Gun
Snake
About
Digit Paper
Digit Paper
is a website created by Charlie.


 Region
asdasd
Confirmed Cases
asdasd
Deaths
asdasd
Recoveries
REGION VIII ESTERN VISAYAS
asdasd
Confirmed Cases
asdasd
Deaths
asdasd
Recoveries
REGION II CAGAYAN VALLEY
asdasd
Confirmed Cases
asdasd
Deaths
asdasd
Recoveries
REMAINDERS
“Clean your hands daily.”
“ Practice Social Distancing.”
“Get Vaccinated.”


Account¶
-
class
O365.account.
Account
(credentials, *, protocol=None, main_resource=None, **kwargs)[source]¶ Bases:
object
-
__init__
(credentials, *, protocol=None, main_resource=None, **kwargs)[source]¶ Creates an object which is used to access resources related to the specified credentials
- Parameters
credentials (tuple) – a tuple containing the client_id and client_secret
protocol (Protocol) – the protocol to be used in this account
main_resource (str) – the resource to be used by this account (‘me’ or ‘users’, etc.)
kwargs – any extra args to be passed to the Connection instance
- Raises
ValueError – if an invalid protocol is passed
-
address_book
(*, resource=None, address_book='personal')[source]¶ Get an instance to the specified address book for the specified account resource
- Parameters
resource (str) – Custom resource to be used in this address book (Defaults to parent main_resource)
address_book (str) – Choose from ‘Personal’ or ‘Directory’
- Returns
a representation of the specified address book
- Return type
AddressBook or GlobalAddressList
- Raises
RuntimeError – if invalid address_book is specified
-
authenticate
(*, scopes=None, **kwargs)[source]¶ Performs the oauth authentication flow using the console resulting in a stored token. It uses the credentials passed on instantiation
- Parameters
or None scopes (list[str]) – list of protocol user scopes to be converted by the protocol or scope helpers
kwargs – other configurations to be passed to the Connection.get_authorization_url and Connection.request_token methods
- Returns
Success / Failure
- Return type
bool
-
property
connection
¶ Alias for self.con
- Return type
type(self.connection_constructor)
-
connection_constructor
¶ alias of
O365.connection.Connection
-
property
is_authenticated
¶ Checks whether the library has the authentication and that is not expired :return: True if authenticated, False otherwise
-
mailbox
(resource=None)[source]¶ Get an instance to the mailbox for the specified account resource
- Parameters
resource (str) – Custom resource to be used in this mailbox (Defaults to parent main_resource)
- Returns
a representation of account mailbox
- Return type
-
new_message
(resource=None)[source]¶ Creates a new message to be sent or stored
- Parameters
resource (str) – Custom resource to be used in this message (Defaults to parent main_resource)
- Returns
New empty message
- Return type
-
outlook_categories
(*, resource='')[source]¶ Returns a Categories object to handle the available Outlook Categories
-
schedule
(*, resource=None)[source]¶ Get an instance to work with calendar events for the specified account resource
- Parameters
resource (str) – Custom resource to be used in this schedule object (Defaults to parent main_resource)
- Returns
a representation of calendar events
- Return type
Get an instance to read information from Sharepoint sites for the specified account resource
- Parameters
resource (str) – Custom resource to be used in this sharepoint object (Defaults to parent main_resource)
- Returns
a representation of Sharepoint Sites
- Return type
- Raises
RuntimeError – if protocol doesn’t support the feature
-
storage
(*, resource=None)[source]¶ Get an instance to handle file storage (OneDrive / Sharepoint) for the specified account resource
- Parameters
resource (str) – Custom resource to be used in this drive object (Defaults to parent main_resource)
- Returns
a representation of OneDrive File Storage
- Return type
- Raises
RuntimeError – if protocol doesn’t support the feature
-


Player 1 (User)
Play: TicTacToe (Two Player Game)
1
2
3
4
5
6
7
8
9
Select Player 1 Symbol:
Player 2 (Computer)


Traditions and Hearthside Stories of West Cornwall, Vol. 2, by William Bottrell, [1873], at sacred-texts.com
When our giants and other antique people left their human bodies they continued to dwell in their old homes down almost to our times. As they had no idea of any life but a carnal existence on earth, they were permitted to live there as spriggans (elves) and they seemed to have enjoyed themselves, in their small way, by imitating mortals’ pleasures.
Old folks, only just departed, often witnessed their gambols amongst the carns of Castle Treen.
Fishermen, when becalmed near Pedn-y-vounder cliff, of summer's nights, frequently saw thousands of gaily-dressed little people, with lights, moving about in what looked like beautiful gardens that extended, in some places, down almost to high-water mark. At the same time low but lively music, and the scents of sweet flowers, would be wafted over the water. The fishers, however, hastily made off whenever such fairy melodies and odours reached their boats. These haunts are screened from view, landward, by towering crags. Steep precipices render them inaccessible on the sea-side; though they may be seen from the water, during summer months, gay with cliff-pinks and other flowers in places that not even a goat could reach.
Treasure-seekers, when digging in nooks and corners among the Castle carns, have been scared away even by day with ill-favoured
looking fays of nearly human size; and the same uncouthly-formed elves have often been seen wrestling, hurling, and playing other games on a level place near Hal-dynas; but there is no special story relating to them that we ever heard.


var counter : nat
var j : nat := 9
The Turing operators on natural numbers are the same as those for integers: +, -, * (multiply), div (truncating integer division), mod (integer remainder), ** (exponentiation), as well as comparisons (+, not=, >, >=, <, <=). The operators and, or and xor to be applied to natural number values. The bit-wise boolean result is produced as a natural number. The shr (shift right) and shl (shift left) operators are also introduced.
In the current implementation, the range of natural numbers is from 0 to<PHONE_NUMBER>. In other words, the maximum value of a natural number is 2**32 - 2. This range exists because natural numbers are stored in 4 bytes. The types nat1, nat2 and nat4 specify natural numbers that fit into 1, 2 or 4 bytes.
Explicit constants such as 213 and 0 are considered to be integers. As a result the type of tax in this declaration is int:
Natural number values can be used whenever integer values are expected and vice versa, given that the value does not exceed the range of the expected type.
When integer and natural numbers are combined using a binary operator such as +, the result is an integer. This means, for example, that if counter is a natural number, counter + 1 is considered to be an integer. As long as the result fits into the range that is the intersection of the ranges of int and nat, the result will be as expected. Anomalies occur when the result is (or would be) greater than the largest integer (maxint=2147483647). For example, if natural number n is greater than maxint, the expression n + 1 will overflow, because its result is an int (because 1 is an int). To avoid this problem, you must be careful that both operands are natural numbers.
Suppose we have this declaration:
We can safely compute n + natOne because both operands have type nat.
Natural numbers can be converted to real numbers using natreal, but in practice this is rarely used, because a natural value used in place of a real value will be automatically converted to real.
Natural numbers can be converted to strings and back using natstr and strnat.
In the C language, a natural number is said to be "unsigned".
var tax := 0 % The type is int
const natOne : nat := 1


Keep in mind that this is your data, and it remains as your data. The website does not capture or store your journey data (it is all handled by your web browser)
This site uses cookies on your device to monitor and analyse usage. By continuing to use the website your consent to store cookies on your device is assumed. If you want to opt-out of Google Analytics cookies, visit here .
If you don't have any data of your own, feel free to use this example set.
You can find me on Twitter.
If you're interested in code, you can find this project on Github.


This is a short description of who you are. Keep it to about 3 sentences and make sure to highlight the key points about you. What makes you stand out as an applicant?
Carleton University
University of Ottawa
Eastern Ontario Health Unit
Casselman, ON
Algonquin College
Ottawa, ON
Award-giving organization
Awards Site


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object Render.TextRenderer
public class TextRenderer
A superclass for rendering BiSciCol data into text-based formats. This class implements functionality common to all text rendering. Subclasses supporting specific text formats (e.g., XML, JSON, etc.) will need to provide implementations of printEnterObject() and printLeaveObject().
| Field Summary | |
|---|---|
protected boolean |
ancestors
|
protected org.joda.time.DateTime |
dateFilter
|
protected boolean |
descendents
|
protected java.lang.String |
outputstr
|
| Constructor Summary | |
|---|---|
TextRenderer()
|
|
TextRenderer(int maxdepth)
|
| Method Summary | |
|---|---|
org.joda.time.DateTime |
getDateFilter()
|
int |
getMaxDepth()
|
int |
getTotalVisited()
Returns the total number of objects visited in a traversal of an object's ancestors or descendents. |
protected java.lang.String |
printEnterObject(BSCObject obj,
int depth,
int obj_cnt)
Generates text for the "opening" of a BSCObject. |
protected java.lang.String |
printLeaveObject(BSCObject obj,
int depth,
int obj_cnt)
Generates text for the "closing" of a BSCObject. |
java.lang.String |
printStats()
|
java.lang.String |
renderAll(BSCObject obj)
Render all ancestors, descendents, siblings... |
java.lang.String |
renderObjAncestors(BSCObject obj)
Generates a textual representation of a BSCObject and its ancestors (e.g., its parents, the parents' parents, etc.). |
java.lang.String |
renderObject(BSCObject obj)
Generates a textual representation of a BSCObject. |
java.lang.String |
renderObjectList(BSCObjectIter objiter)
Generates a textual respresentation of a list of BSCObjects accessed by objiter. |
void |
setDateFilter(org.joda.time.DateTime dateFilter)
|
protected void |
setFooter(java.lang.String footer)
|
protected void |
setHeader(java.lang.String header)
|
void |
setMaxDepth(int maxdepth)
|
boolean |
visitEnter(BSCObject obj,
int depth,
int obj_cnt)
Notify the visitor that it is entering obj. |
void |
visitLeave(BSCObject obj,
int depth,
int obj_cnt)
Notify the visitor that it is leaving obj. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected java.lang.String outputstr
protected org.joda.time.DateTime dateFilter
protected boolean ancestors
protected boolean descendents
| Constructor Detail |
|---|
public TextRenderer()
public TextRenderer(int maxdepth)
| Method Detail |
|---|
public org.joda.time.DateTime getDateFilter()
public void setDateFilter(org.joda.time.DateTime dateFilter)
protected void setHeader(java.lang.String header)
protected void setFooter(java.lang.String footer)
public int getMaxDepth()
public void setMaxDepth(int maxdepth)
public int getTotalVisited()
public boolean visitEnter(BSCObject obj, int depth, int obj_cnt)
ModelVisitor
visitEnter
in interface ModelVisitor
obj
- The BSCObject this visitor is entering.depth
- The distance of obj from the BSCObject at which the traversal began.obj_cnt
- The position of obj among its siblings.
public void visitLeave(BSCObject obj, int depth, int obj_cnt)
ModelVisitor
visitLeave
in interface ModelVisitor
obj
- The BSCObject this visitor is leaving.depth
- The distance of obj from the BSCObject at which the traversal began.obj_cnt
- The position of obj among its siblings.public java.lang.String printStats()
public java.lang.String renderObject(BSCObject obj)
obj
- The BSCObject to render as text.
public java.lang.String renderObjAncestors(BSCObject obj)
obj
- The BSCObject to render as text (along with its ancestors).
public java.lang.String renderAll(BSCObject obj)
obj
-
public java.lang.String renderObjectList(BSCObjectIter objiter)
objiter
- An iterator for the BSCObjects.
protected java.lang.String printEnterObject(BSCObject obj, int depth, int obj_cnt)
obj
- The object to render.depth
- The depth of obj in the traversal (0 = top).obj_cnt
- The position of obj among its siblings (0 = 1st).
protected java.lang.String printLeaveObject(BSCObject obj, int depth, int obj_cnt)
obj
- The object to render.depth
- The depth of obj in the traversal (0 = top).obj_cnt
- The position of obj among its siblings (0 = 1st).
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Bear for Blogging
I had ditched Ulysses when it went subscription but during 2020, I’d paid for the subscription as I’d managed to get a discount code for it. It was good to be able to use it across my devices and it’s still one of the best plain text editors in my view - however, I don’t view it as being worth almost £50 a year - consider that Microsoft charge £60 for Office plus storage space, whereas Ulysses makes use of iCloud space to sync, so I’m not even paying them for syncing!
So I looked around for alternatives, and decided to give Bear a try.
Images
It allows me to drag and drop images in to the application, which I find speeds up my writing process - I then export when the article is finished and deal with the images then (such as sorting the URL’s).
Bear has a number of exports, and can export as a Markdown file, but can include the attachments as well, so it allows for easy editing to post.
Markdown
However, it doesn’t appear to support tables, at least within its editor. However, you can happily paste a markdown table in to the editor and it’ll be there when you export to markdown, ready for the browser (or in my case, Hugo) to resolve and display nicely!
It just looks a bit odd within notes - especially if not using a monospaced font, like the default Bear font!
And the other item it doesn’t support is footnotes, so I’m not able to auto add a footnote within Bear itself 1.
Though, after some searching, it does appear that these two features will be in the new Markdown editor, Panda, that Bear are implementing and that is currently in Alpha at the minute. In fact, Panda seems to be quite a decent markdown editor by itself!
YAML headers are also proposed for the new editor, which I do use in Obsidian, but not sure I’d make much use of them within Bear - at least not yet, but we’ll see when it’s released.
File Format
Bear uses an SQLite database for its notes, so the underlying notes themselves are not accessible outside the app. Normally, this would be an issue as it’s a closed format (to a degree, as it restricts how I can access and edit the documents I write), but it hasn’t seemed to be an issue yet with Bear, as the editor is good, and it has good export functionality, so I can export the documents as a Markdown file or with Textbundle.
Syncing
At the minute, I’m running Bear purely on one Mac as a test. However, the annual fee appears to be very reasonable (£13.99 in the UK as I type this) and is far cheaper than Ulysses. Its a fee that I think is fair and reasonable and I think I’ll be paying that shortly to be able to have my notes sync between devices. It would also mean that I can use my favourite editor them - Cobalt!
Tags
Something to get used to is that folders don’t really exist within Bear - everything is done within tags. A tag is roughly equal to a folder, but as you can assign multiple tags, the same file can be in a number of tag “folders”. That’s something a bit different but it seems to work. You can also have nested tags, so the file can can be in a “subfolder”. Overall, it works nicely - I just have to make sure that I delete the Bear metadata before posting to my blog.
Incidentally, I’m not sure I think much of the default tag icon assigned to my blog draft “folder”!
Conclusion
For now, I’ll see how I get on with Bear. Writing, it’s nice and simple and works really well. However, time will tell how easy it is to get from writing in Bear to published via Hugo. It’s certainly worth trying for the time being, as the syncing feature, if it works as well as Ulysses, should mean that I’m able to replace Ulysses for writing my blog posts.
-
Though I can create it using a Keyboard Maestro script using the excellent Markdown library. ↩


add ]]>
cloud_upload Upload file.zip ]]>
share Share your content ]]>
via social media
HTML is related to but different from XML.
HTML is related to but different from XML.eXtensible Markup Language ]]>
A tooltip can be created from a directive or a combination of directive and compontent. Under the hood every tooltip uses the tooltip component.
The mdl-tooltip is used to create complex tooltips that are not simple strings. You can put any content in the mdl-tooltip component. To access the tooltip mdlTooltip is exposed to the template.
The mdl-tooltip directive is used to specify from where a tooltip should show up. The value of the attribute can be a string or a reference to a mdl-tooltip component instance.
If you want the tooltip to be large use the mdl-tooltip-large to show the tooltip.
The tooltip attribute mdl-tooltip-position can be used to specify the position of the tooltip (left, right, top, bottom).


Bloomberg University: Required Reading
Here. The recent economic conditions caused me to become very interested in not just making money (I've always been a capitalist : ), but also in keeping a careful eye on it.
In the past, I've let most of the "keeping an eye on it" be done by a financial advisor (I've had one since I was 22). These days, I have a stack of financial books that I'm reading [1] and it's been a fabulous educational experience.
Given the supreme importance of money in our society, I think everyone should know the basics of money management. I'm very disappointed that I made it all the way through high school, let alone college, with no more instruction then how to fill in a check (something we want folks to do less of, not more!).
Towards that end, I really love Bloomberg University’s no-frills financial tutorials, including one on the basics of a 401(k) and another on the basics of investing. They provide just the tip of the iceberg and I could recommend a lot of other reading, but this is a good place to start for folks that want to actually keep the money they make.
[1] http://www.sellsbrothers.com/money


Thank you for registering for our app! However... before you can being, you will need to confirm your registration.
Please look through your inbox at {{email}} and confirm your registration through there. Be sure to look into junk folder.
{% endblock %}


I'm a 34 year old male, living in Grenaa DK with my girlfriend Lonny and baby daughter Vega. I'm a creative person, who loves to get challenged and solve the puzzle.


<Next version of Ox>
<Previous version of Ox>
Ox 2.20: new features and fixes
New features and enhancements
- Minor adjustment to GiveWin for Windows 2000.
- OxPack with always on top option. Now installed with Ox Professional
in ox\bin.
- invertgen(.,30) now distinguishes between singular
and negative definite matrix.
- sortc of T x 1 matrix now same speed as sortr.
Problems in version 2.10 which have been fixed in version 2.20:
- Fixed bug in OxMainCmd which affected the Visual Basic RanApp example.
- Assigning member functions to a variable
could lead to problems if reassignment of the variable
to another member function is made.
- Modelbase: keeping sign on t-values.
- automatic creation of backup files when saving data has been removed.
- sscan with %c format could return too much text.
- Spreadsheets: now writing "#N/A" for missing values
in Excel files; @NA in Lotus 1-2-3 files.
- Problem with reading dates from data.xls:
doesn't pick up dates when date column is unlabelled.
- Compile only: returns exit code !0
- choleski(): doesn't return 0 when decomposition fails.
Also made choleski() fail at same point as decldl():
checking a[i][i] rather than sqrt(a[i][i]).
- PcFiml class Chow(): if break-point beyond sample: would
give .NaN because m_dLogLik was cleared by Modelbase::SetSelSample().
- Note: QuadPack is compiled FORTRAN. Consequently call backs are
non-re-entrant, and a QuadPack function cannot call the same function.
However, now it can call a different QuadPack function, allowing for
double integrals.
- Database class: Lagged seasonals are actually leads,
so: Season_1 is Q4, Season_2 is Q3, Season_3 is Q2.
- Removed artificial upper limit on line length (format function).
- DrawTitle doesn't replace an existing title. Fixed in GiveWin.
- When starting OxRun from GiveWin, it may loose the last section
of output.
- Small fix in lib/longrun
Ox version 2.20. This file last changed 22-Feb-2000.
© JA Doornik
<Doornik home>


--- layout: default title: Portfolio ---
I have a diverse range of samples to showcase my capabilities and growth as a technical writer. The following page hosts an overview of technical documentation and excerpts from recent technical writing projects, as well as samples I have developed specifically for my portfolio.
This phlebotomy guide is a visual aid for nurses and lab technicians. It provides quick access to blood collection and specimen transport information, but is not an exhaustive list of all sampling protocols. Users are expected to be fully trained and the guide acts as a quick reference or reminder. The hospital name is fictional and information has been altered to protect the content owner's privacy.
This template provides a general discussion of developing a nonclinical laboratory SOP. Examples and suggestions are included for implementing statistical information, procedure data, health and safety concerns, regulatory requirements and best style practices.
API endpoint URL maps are designed to help users quickly navigate and consume API endpoints. During API development, the map provides an overview of the API architecture and visualizes basic resource information. This map features a list of the parameters available for the resources and their associated methods. API information included in this map was derived from CURL testing and Postman.


Authorised software applications
You currently have no authorised software applications.
If you want to grant authority to an application you must do it in the application itself.
You have granted authority to the following software applications. You can remove this authority below.
@defining(DateTimeFormat.forPattern("dd MMMM yyyy")) { dateFormatter =>-
@for(app <- applications) {
-
@{app.application.name}
This application has been authorised by you to do the following:
-
@for(scope <- app.scopes) {
- @{scope.name} }
Authority granted on: @{dateFormatter.print(app.earliestGrantDate)}
Remove authority
}


Recent Transactions
|
SENT
RECIEVED
PENDING
PENDING
@{{investment.updatedAt|date}}
|
To: =1">{{investment.donateTo.length}} Not Paired yet
From: {{user.name}}
|
GHC {{investment.amountInvested}} |
|
|
RECIEVED
@{{'2011-10-05T14:48:00.000Z'|date}}
|
To: 024388699
From:
|
GHC 300 |
|


| < Day Day Up > |
We have now introduced several algorithms that can sort n numbers in O(n lg n) time. Merge sort and heapsort achieve this upper bound in the worst case; quicksort achieves it on average. Moreover, for each of these algorithms, we can produce a sequence of n input numbers that causes the algorithm to run in Θ(n lg n) time.
These algorithms share an interesting property: the sorted order they determine is based only on comparisons between the input elements. We call such sorting algorithms comparison sorts. All the sorting algorithms introduced thus far are comparison sorts.
In Section 8.1, we shall prove that any comparison sort must make Θ(n lg n) comparisons in the worst case to sort n elements. Thus, merge sort and heapsort are asymptotically optimal, and no comparison sort exists that is faster by more than a constant factor.
Sections 8.2, 8.3, and 8.4 examine three sorting algorithms-counting sort, radix sort, and bucket sort-that run in linear time. Needless to say, these algorithms use operations other than comparisons to determine the sorted order. Consequently, the Θ(n lg n) lower bound does not apply to them.
| < Day Day Up > |


NADJA A film review by Mark R. Leeper Copyright 1995 Mark R. Leeper
Capsule: This interminable, minimalist vampire film borrows its style from films like STRANGER FROM PARADISE. Though it is set in modern day New York City, it takes most of its slight interest value from the fact that it is apparently a remake (uncredited) of the classic (and far superior) DRACULA'S DAUGHTER. Rating: 0 (-4 to +4)
NADJA seems to want to be a serious art film and at the same time a spoof of the vampire film. The result is a film that is occasionally amusing but more often just drags. The story borrows a great deal from Lambert Hillyer's 1936 film DRACULA'S DAUGHTER and NADJA moves only fast enough to be an actual retelling of that story and not one iota faster. It is filmed in black and white with three levels of clarity. There are sharp clear scenes, blurry scenes, and a few Pixelvision scenes. The blurry and Pixel shots initially seem to be subjective from the vampire's point of view, but it is not long before there are shots with gratuitous blur that clearly are not from anybody's point of view. They are just blurry for the sheer joy of using the camera effect. Some of the dialogue is also there for the effect. How else can one explain lines like "Love is voluntary. Love is like rabies"?
Elina Lowensohn plays the the title role of Nadja, the daughter of Dracula unliving in New York City. Dracula is also in town, but there he is staked by a rather Bohemian Van Helsing (Peter Fonda). This vampire hunter wears his hair well below his shoulders and goes everywhere walking a bicycle. The death of her famous father comes as a release to Nadja who has been hoping to be free of his domination in order to lead a more normal life.
The film is not without a sense of some style. Lowensohn is impressive looking in a hood and cape in much the same way that Gloria Holden was in the original. Almereyda used her previously in his ANOTHER GIRL, ANOTHER PLANET and she does have an exotic look. But her delivery of lines is rather disaffected and lifeless, ironically just what this vampire does not need. Suzy Amis, who played the title role in THE BALLAD OF LITTLE JO and THE USUAL SUSPECTS plays a nurse who is caring for Nadja's brother and who will eventually be caught up in Nadja's predations.
When the film drags, it is of some interest just to see how the original was mapped to the new film. The Irving Pichel role of Sandor is back, but here he is called Renfield, though his function is more that of Sandor in 1936 film than that of Renfield in the 1930 DRACULA. Another victim is called Lucy (played by an actress named Galaxy Craze, believe it or not), again as an allusion to the 1930 film. A policeman in the original is replaced by David Lynch to not nearly so comic an effect. Lynch is also executive producer as well as having the even more ambiguous title of "presenter."
Perhaps the film shows the most style when the setting moves to Transylvania. Almereyda's use of locations in New York to give the impression of Rumania is more clever than convincing, almost as if they were improvisational.
While it is nice to see an occasional horror film making the art house circuit, this story of the undead just needs more life in the long middle section of the film. I give it a 0 on the -4 to +4 scale.
Mark R. Leeper<EMAIL_ADDRESS>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


This document summarizes the discussions on simplifying the JSON-LD 1.0-based WoT Thing Description and proposes a simplified TD serialization based on JSON-LD 1.1. The proposal lists the features of the TD core model and gives use cases per feature. The proposed "Simplified TD" serialization is given in the form of extensive examples. Specification text will be added when merging this proposal into the WoT Thing Description Editors' Draft. For convenience, examples of the JSON-LD 1.0 serialization and the alternative JSON Web Thing Description (a.k.a. JSON-TD) are given for comparison. This document concludes with a list of differences in the proposals.
The WoT Thing Description based on JSON-LD 1.0 has been criticized for several limitations including complexity and the JSON-LD 1.0 array structures and keywords even when no semantic annotations are used. This lead to an alternative draft, the JSON Web Thing Description, with a pure JSON serialization, which however, would fragment W3C WoT due to incompatible models behind the serializations. To remedy the situation, this document proposes a simplified TD serialization based on JSON-LD 1.1, thereby combining both requirements: machine-understandability through a formal Linked Data model from the original WoT Thing Description and improved usability from the JSON Web Thing Description. Being able to conduct these simplifications first required a full understanding of the requirements, which have been analyzed by the Working Group since its chartering. This technical deep-dive completed around TPAC 2017 (Burlingame), where the Working Group announced to change the goal toward simplification from there onward.
Many discussions are rooted on the question whether a certain feature should be included or not. This section lists the features currently included in the TD core model and backs them by use cases.
To represent a contract between applications with programming APIs and IoT devices with network APIs,
the communication with Things must be modeled with a formal interaction model.
This describes not only
Based on the Web Thing Model and results of the COMPOSE project the WoT Interest Group explored a threefold of Interactions, which was adopted by the WoT Working Group after 2 years of stability:
Properties expose internal state of a Thing that can be directly accessed (get) and optionally manipulated (set). Things can also choose to make Properties observable by pushing the new state (not an event) after a change; this must follow eventual consistency (also see CAP Theorem).
Actions offer functions of the Thing. These functions may manipulate the interal state of a Thing in a way that is not possible through setting Properties. Examples are changing internal state that is not exposed as Property, changing multiple Properties, changing Properties over time or with a process that shall not be disclosed. Actions may also be pure functions, that is, they do not use any internal state at all, e.g., for processing input data and returning the result directly.
The Event Interaction Pattern describes event sources that asynchronously push messages. Here not state, but state transitions (events) are communicated (e.g., "clicked"). Events may be triggered by internal state changes that are not exposed as Properties. Events usually follow strong consistency, where messages need to be queued to ensure eventual delivery of all occured events.
Interactions exchange data using representation formats (e.g., JSON),
which are identified by Media Types (e.g., application/json
.
Usually, applications use generic serialization formts without
application-specific definitions (cf. JSON). Thus, TDs also needs to
include metadata about the data model used, so-called schemas.
JSON reflects the state of the art of data interchange formats. It is not focused on how data is represented by a specific system (e.g., in 16 bits), but only on the fundamentals of the information.
CBOR is a concise binary representation that is related to JSON. It can express all JSON structures, but also has additional features such as a binary type to improve over base64-encoded blobs.
A popular validation schema for JSON data is JSON Schema. It defines a vocabulary and a syntax to specify a schema for data validation at the syntactic level.
The Web of Things aims at semantic interoperability for Things. For this,
Directly using the JSON Schema syntax within the TD breaks paradigms. Two different implementations would be needed to conduct validation. At least JSON Schema could be reused. However, semantic queries and resoning could not work on data structures, that is, make sense of the data in relation to the Thing and its context.
The TD has a top-level security
field to carry security
metadata such as the required authorization mechanism, authorization
server, required root certificates, etc.
The TD Interactions have a form
field to carry protocol-specific metadata such as method used and header fields required.
The concept of machine understandable forms matches the requirement of RAML, Swagger, OpenAPI for RESTful Web APIs.
The W3C Web of Things was charted to counter the fragmentation in the IoT. Creating yet another standard does not help here, as existing standards with strong domain-specific knowledge have shown to hold out. Thus, W3C WoT was charted to describe and complement existing IoT platforms and standards. For this, a TD must be able to describe how a client can communicate successfully with a server.
Up to date, not even so-called RESTful Web services managed to follow a single guidline when designing their API. Requests always have to be tailored for each service (cf. usage of Swagger/OpenAPI).
To reflect this situation in the TD, where a situation similar to RESTful APIs is expected for Things, a TD is able to include so called form descriptions, which go beyond Web linking: The not only describe the relation to a target resource and attributes of the target resource, but also descriptions how to interact with that resource, that is, how a client has to formulate requests (e.g., header fields or payloads).
So far, there is no single IoT protocol to rule them all. The only convergence visible is a trend toward Internet protocols defined by the IETF and other bodies such as OASIS. Yet still every IoT platform and standard tends to introduce small variations, thereby creating protocol dialects.
To allow for convergence of currently deployed IoT protocols and to be future proof for new protocols that might emerge as de facto standards, the TD has protocol bindings as explicit extension point.
The WoT Binding Templates document serves as catalog to pick the right communication metadata for well-known IoT protocols. The templates provide vocabulary to describe the required protocol stack configuration (e.g., specific header fields) and security mechanisms in the TD.
Binding Templates are mainly expected for dialects of the Web protocols HTTP/1.1, HTTP/2, and CoAP, standardized sub-protocols for WebSockets, and widely deployed IoT protocols such as AMQP or MQTT profiles (e.g., Amazon IoT).
The Web of Things is centered on things. During runtime, data and metadata are primarily exchanged among machines for machines. Furthermore, WoT content is produced by a large number of machines. Thus, machine assistance is also needed for consuming the data and bulding viable business cases.
Semantic annotations are based on JSON-LD, which gives meaning to JSON field names and values
by defining the terms used in the @context
and linking them to Link Data.
TDs can be annotated as follows:
@type
array@type
array within Interaction elements@type
array within schema
The W3C has no knowledge in the concrete application domains of Web of Things. Thus, the W3C is not standardizing any domain-specific vocabulary.
Still, domain-specific vocabularies are of utmost importance for semantic interoperability. Thus, the TD has an explicit extension point that comes for free when using JSON-LD and Linked Data.
The TD now has a top-level link
field to carry links to other Web resources.
The Web of Things is supposed to make IoT technology more usable, which includes usability for developers. This is fundamental to the success of Web Technology in general.
This requirement lead to the choice of a JSON-based format for the TD.
The Web of Things is centered on things. During runtime, data and metadata are primarily exchanged among machines for machines. Furthermore, WoT content is produced by a large number of machines. Thus, machine assistance is also needed for consuming the data and bulding viable business cases.
Thus, TDs must not only be machine-readible, but machine-understandable. Moreover, the TD metadata can help to make optimized runtime data (i.e., no metadata included in the live data exchanged) also machine-understandable.
This requirement lead to the choice of JSON-LD, an existing W3C standard for machine-understandable JSON documents based on Linked Data vocabularies.
Applications consuming TDs should be able to easily introspect the capabilites, possible interactions, and other metadata of the corresponding Things.
In particular the WoT Scripting API benefits from an alternative structure of the TD, such as separated entry points for Properties, Actions, and Events.
Implementations for the PlugFest showed that basically every developer is counting on defaults,
that is, certain elements can be omitted as their meaning is known implicitly or even irrelevant.
Examples are omitting the security
metadata for test Things that use no-security,
omitting the writable
flag for read-only Properties,
or omitting inputSchema
/outputSchema
for Actions that do not take arguments and/or return nothing.
Treating the JSON-LD TD strictly as Linked Data document, a collection of triples, would not allow for such defaults, and hence convenience. Linked Data underly the open-world assumption. That means, when a TD is omitting statements (e.g., writable flag), then the consumer cannot make any assumptions about its actual value.
Based on the knowledge that it is a TD, the consumer could, however, apply a set rules, which infer the defaults. This leads to the preprocessing introduced in the next section.
Be conservative in what you do, be liberal in what you accept from others. Applying Postel's law fosters interoperability and should also be used in the Web of Things.
This requirement also leads to a preprocessing step that can fill in defaults and correct minor issues.
The Simpified TD proposal aims at solving the requirements given in the previous section.
The main change and enabler for a simplified TD is introducing a preprocessing step.
Due to the open-world assumption, some preprocessing of the TD is required. The rules to fill in defaults could be applied in the following way:
Normalizing the TD in a preprocessing step also helps for robustness. Thus, this is a favorable solution.
JSON-LD 1.1 Frameing can be used to define and apply the preprocessing steps.
NOTE: Even with JSON-LD 1.1 available, there are still open issues.
For instance, the object key becomes the @id
of the Property node defined in the object value:
To derive sensible triples, the object key would need to be declared either as "blank node" by prefixing with _:
,
or the container mechanism must be able generate relative @id
s to avoid conflicts when an object key appears twice at different levels.
When TDs are not a valid JSON-LD document due to necessary preprocessing or simply an omitted @context
,
they need their own media type registered with IANA.
We propose application/td+json
.
link
The Working Draft for the Prague 2018 PlugFest already adopted a top-level link
field,
so that a TD can express relations to other Things or other Web resources.
Note that because the TD is JSON-LD, such relations were always possible and are actually always expressed for all top-level fields (it is Linked Data).
Having the term link
makes it explicit that the elements included there are actual Web Links to fetchable Web resources,
opposed to Linked Data URIs ("IRIs") that are often only an identifier without an actual Web resource.
description
The term description
is very useful and shall become part of the TD core vocabulary for both Thing and Interactions.
name
The term name
would not be the identifier for Interactions anymore.
Following JSON-LD 1.1, the object key would become @id
, which would serve as handle to select Interactions, e.g., for the Scripting API.
With that, name
becomes either obsolete or rather could be used as optional, human-readible label.
As a result, for Things, name
becomes a mandatory label.
For Interactions, the new, optional term label
is used.
id
On the top level, id
will become important for security and identity management.
It identifies the instance of Thing and also serves as the @base
for all other @id
definitions (e.g., of Interactions).
Only this fully enables the object notation of Interactions (opposed to the previous array notation).
The top-level id
must be mandatory and internally maps to the @id
of the Thing.
Therefore, a Thing id
must be a URI (which includes URNs).
For Interactions, @id
would be the handle for scripts and it would
enable references to and between Interactions, e.g., for
cross-Property constraints or for expressing relations between an
action and one or more Properties. Note that this would result
automatically from the object structure listing Interactions
because of JSON-LD 1.1 (Node Identifier Indexing).
To enable alignment with other technologies such as JSON Schema, the Simplified TD needs a few small changes to the TD core model. It has to be evaluated if these changes are actually breaking changes (i.e., a JSON-LD 1.0 TD would create different triples than a Simplified TD).
Using the term properties
also for the object field names of complex Properties (i.e., "type": "object"
) aligns the TD with JSON Schema syntax.
This results in recursive Properties, where
DataSchema
RDF-typeforms
field are Interaction Properties.forms
field.
When no @context
is given, the Simplified TD context
is assumed based on the media type (file location needs update for adoption).
The current TD context also needs an additional definition of @base
set to the Thing's @id
,
so that the object representation of Interactions produces correct @id
s for the Interactions.
{ "@context": { /* enable JSON-LD 1.1 processing */ "@version": 1.1, /* valid @id generation relative to Thing instance */ "@base": "@id", /* object notation for Interactions */ "properties": { "@container": "@id" }, "actions": { "@container": "@id" }, "events": { "@container": "@id" }, /* optional if schema definitions are wanted */ "definitions": { "@container": "@id" }, /* TD term definitions as in https://w3c.github.io/wot/w3c-wot-td-context.jsonld */ ... } }
When @context
is given, the Simplified TD context
is applied last to ensure that the terms of the TD core vocabulary are valid and not shadowed by other contexts.
The first example reflects the minimal option.
It contains no semantic annotations, nor human-readible decorators such as name
or description
.
{ "name": "Lamp", "id": "urn:dev:wot:com:example:servient:lamp", "base": "https://servient.example.com/", "properties": { "on": { "type": "boolean", "forms": [{ "href": "/things/lamp/properties/on", "mediaType": "application/json" }] }, "status": { "readOnly": true, "type": "object", "properties": { "battery": { "type": "number", "minimum": 0.0, "maximum": 100.0, "forms": [{ "href": "/things/lamp/properties/status/batt", "mediaType": "application/json" }] }, "rssi": { "type": "number", "minimum": 0.0, "maximum": 1.0 }, "level": { "type": "integer", "minimum": 0, "maximum": 100 } }, "forms": [{ "href": "/things/lamp/properties/status", "mediaType": "application/json" }] }, "brightness": { "type": "integer", "minimum": 0, "maximum": 100 "forms": [{ "href": "/things/lamp/properties/brightness", "mediaType": "application/json" }] } }, "actions": { "fade": { "input": { "type": "object", "properties": { "from": { "type": "integer", "minimum": 0, "maximum": 100 }, "to": { "type": "integer", "minimum": 0, "maximum": 100 }, "duration": { "type": "number" } } }, "forms": [{ "href": "/things/lamp/actions/fade", /* encType would be for the request body opposed to mediaType, which is for target */ "encType": "application/json", "mediaType": "application/json" }] } }, "events": { "overheated": { "type": "object", "properties": { "temperature": { "type": "number" } }, "forms": [{ "href": "/things/lamp/events/overheated", "http:subProtocol": "http:EventSource", "mediaType": "application/json" }] } }, "links": [{ "href": "https://servient.example.com/things/motion-detector", "rel": "controlledBy", "mediaType": "application/td+json" }] }
{ "@context": { "iot": "https://iot.schema.org/" }, "name": "Lamp", "description": "Corner torchiere", "@type": ["Thing", "iot:Light"], "id": "urn:dev:wot:com:example:servient:lamp", "base": "https://servient.example.com/", "properties": { "on": { "label": "On/Off", "description": "Power switch", "@type": "iot:SwitchStatus", "type": "boolean", "forms": [{ "href": "/things/lamp/properties/on", "mediaType": "application/json" }] }, "status": { "readOnly": true, "@type": "iot:DeviceStatus", "type": "object", "properties": { "battery": { "@type": "iot:BatteryLevel", "type": "number", "minimum": 0.0, "maximum": 100.0, "forms": [{ "href": "/things/lamp/properties/status/batt", "mediaType": "application/json" }] }, "rssi": { "@type": "iot:SignalStrength", "type": "number", "minimum": 0.0, "maximum": 1.0 }, "level": { "@type": "iot:CurrentLevel", "type": "integer", "minimum": 0, "maximum": 100 } }, "forms": [{ "href": "/things/lamp/properties/status", "mediaType": "application/json" }] }, "brightness": { "@type": "iot:CurrentLevel", "type": "integer", "minimum": 0, "maximum": 100, "forms": [{ "href": "/things/lamp/properties/status", "mediaType": "application/json" }] } }, "actions": { "fade": { "input": { "type": "object", "properties": { "from": { "@type": "iot:CurrentLevel", "type": "integer", "minimum": 0, "maximum": 100 }, "to": { "@type": "iot:TargetLevel", "type": "integer", "minimum": 0, "maximum": 100 }, "duration": { "@type": "iot:TransitionTimeData", "type": "number" } } }, "forms": [{ "href": "/things/lamp/actions/fade", /* encType would be for the request body opposed to mediaType, which is for target */ "encType": "application/json", "mediaType": "application/json", /* redundant to default here, just to indicate imagine a PATCH Action or a CoAP FETCH Action */ "http:methodName": "POST" }] } }, "events": { "overheated": { "type": "object", "properties": { "temperature": { "type": "number" } }, "forms": [{ "href": "/things/lamp/events/overheated", "http:subProtocol": "http:EventSource", "mediaType": "application/json" }] } }, "links": [{ "href": "https://servient.example.com/things/motion-detector", "rel": "controlledBy", "mediaType": "application/td+json" }] }
This section summerizes the status of the JSON-LD 1.0-based Thing Description (until Prague 2018 WD).
This example reflects the minimal option.
It contains no semantic annotations, nor human-readible decorators such as name
or description
.
{ "@context": "https://w3c.github.io/wot/w3c-wot-td-context.jsonld", "name": "Lamp", "@id": "urn:dev:wot:com:example:servient:lamp", "base": "https://servient.example.com/", "interaction": [{ "@type": "Property", "name": "on", "writable": true, "schema": { "type": "boolean" }, "form": [{ "href": "/things/lamp/properties/on" }] }, { "@type": "Property", "name": "status", "writable": false, "schema": { "type": "object", "field": [{ "name": "battery", "type": "number", "minimum": 0.0, "maximum": 100.0 }, { "name": "rssi", "type": "number", "minimum": 0.0, "maximum": 1.0 }, { "name": "level", "type": "integer", "minimum": 0, "maximum": 100 }] }, "form": [{ "href": "/things/lamp/properties/on" }] }, { "@type": "Property", "name": "brightness", "writable": true, "schema": { "type": "number", "minimum": 0, "maximum": 100 }, "form": [{ "href": "/things/lamp/properties/brightness" }] }, { "@type": "Action", "name": "fade", "inputSchema": { "type": "object", "field": [{ "name": "from", "schema": { "type": "integer", "minimum": 0, "maximum": 100 } }, { "name": "to", "schema": { "type": "integer", "minimum": 0, "maximum": 100 } }, { "name": "duration", "schema": { "type": "number" } }] }, "form": [{ "href": "/things/lamp/actions/fade" }] }, { "@type": "Event", "name": "overheated", "schema": { "type": "object", "field": [{ "name": "temperature", "schema": { "type": "number" } }] }, "form": [{ "href": "/things/lamp/events/overheated" }] }], "link": [{ "href": "https://servient.example.com/things/motion-detector", "rel": "controlledBy", "mediaType": "application/ld+json" }] }
The following JSON example was build from snippets taken from here.
{ "name": "My Lamp", "type": "thing", "description": "A web connected lamp", "properties": { "on": { "type": "boolean", "description": "Whether the lamp is turned on", "href": "/things/lamp/properties/on" }, "brightness": { "type": "number", "description": "The level of light from 0-100", "minimum": 0, "maximum": 100, "href": "/things/lamp/properties/brightness" } }, "actions": { "fade": { "name": "Fade", "description": "Fade from one brightness to another", "data": { "from": { "type": "number", "minimum": 0, "maximum": 100 }, "to": { "type": "number", "minimum": 0, "maximum": 100 }, "duration": { "type": "number", "unit": "milliseconds" } }, "href": "/things/lamp/actions/fade" } }, "events": { "overheated": { "name": "Overheated", "description": "The device exceeded its maximum safe operating temperature", "data": { "temperature": { "type": "number", "unit": "celcius" } } } }, "links": { "properties": "/thing/lamp/properties", "actions": "/things/lamp/actions", "events": "/things/lamp/events" } }
schema
sub-field
schema
sub-field, not data
schema
sub-field, not data
forms
sub-field


Hello world! This i a good fd d but I want have a question to do it quesitio HTML5 Boilerplate.
Change
Add
Delete


Configuration provides configuration for the EventRateLimit admission controller.
| Field | Description |
|---|---|
apiVersion string |
eventratelimit.admission.k8s.io/v1alpha1 |
kind string |
Configuration |
limits
*
[]Limit
|
limits are the limits to place on event queries received. Limits can be placed on events received server-wide, per namespace, per user, and per source+object. At least one limit is required. |
(Appears in: Configuration)
Limit is the configuration for a particular limit type
| Field | Description |
|---|---|
type
*
LimitType
|
type is the type of limit to which this configuration applies |
qps
*
int32
|
qps is the number of event queries per second that are allowed for this type of limit. The qps and burst fields are used together to determine if a particular event query is accepted. The qps determines how many queries are accepted once the burst amount of queries has been exhausted. |
burst
*
int32
|
burst is the burst number of event queries that are allowed for this type of limit. The qps and burst fields are used together to determine if a particular event query is accepted. The burst determines the maximum size of the allowance granted for a particular bucket. For example, if the burst is 10 and the qps is 3, then the admission control will accept 10 queries before blocking any queries. Every second, 3 more queries will be allowed. If some of that allowance is not used, then it will roll over to the next second, until the maximum allowance of 10 is reached. |
cacheSize
int32
|
cacheSize is the size of the LRU cache for this type of limit. If a bucket is evicted from the cache, then the allowance for that bucket is reset. If more queries are later received for an evicted bucket, then that bucket will re-enter the cache with a clean slate, giving that bucket a full allowance of burst queries. The default cache size is 4096. If limitType is 'server', then cacheSize is ignored. |
string
alias)(Appears in: Limit)
LimitType is the type of the limit (e.g., per-namespace)
Generated with genref
on git commit 4247aac7


Instructions
Your job is simple. Click on all the
human
faces you can identify in the picture.


JavaScript, HTML5, CSS3, GitHub, Firebase, MongoDB, Express, AngularJS, and Node.js (MEAN stack).
Web Developer-Focusing on Front and Back End Development Using MEAN stack. DevMountain Student DevelopersNovember 2015 – March 2016 (5 months)Provo, Utah AreaBuild web apps using MongoDB, Express, AngularJS, and Node.js (MEAN stack).Machine OperatorMegadiamondAugust 2008 – November 2015 (7 years 4 months)Provo, UtahOperation of computerized numerical control (CNC) systems and assembly of advanced ultra-hard materials for use in the petroleum drilling, mining, construction, and cutting tool industries.
Utah Valley University Bachelors in Science graduate and DevMountain alumni.


* For BF4, BF3 and MOHW
* Publish Emblems in Battlelog - Save the emblems in the BBLog Emblem Gallery with one click
* Import Emblems - Choose and import emblems from the Public Gallery with one click
* Possibility to track the "installations" - How often the emblem has been used
* Integrated compatibility check - Can you use the emblem without problems? (missing assets, too much layers, etc...)
Good idea or not?
I know some kind of public galleries but all need some "code" to work or at least another plugin.
Edit:
First testballoon on my local machine
emblem-gallery.jpg
Post edited 1 x times, last by
kurtextrem
kurtextrem
Nice idea. I like the deep integration. But: It would be even better if you could work with the guy behind
http://emblemsbf.com/
it is the largest emblem database (and most probably the most popular today).
Progress:
* Works for BF4, BF3 and MOHW - Each have seperate galleries
* Works for all supported browsers
* Fully integrated - No need of going outside of battlelog
* First dev version will come this or next week
GameFreakBoy
Nice! So you can share your emblem with other people? It has been a while but I also thought that DICE removed the ability to paste the code in the console. Did they find another way of importing emblems?
Topicstarter
BrainFooLong
Administrator
Yes you can share the emblems. To paste code was never been disabled.
Post edited 1 x times, last by
BrainFooLong
Administrator
Topicstarter
BrainFooLong
Administrator
Progress Update - Note that this emblems are not from me, just for tests
emblem-2.gif
* Used Counter works
* General Statistics works
* Clipboard added


Vim documentation: usr_32
main help file*usr_32.txt* For Vim version 7.2. Last change: 2006 Apr 30 VIM USER MANUAL - by Bram Moolenaar The undo tree Vim provides multi-level undo. If you undo a few changes and then make a new change you create a branch in the undo tree. This text is about moving through the branches. |32.1| Numbering changes |32.2| Jumping around the tree |32.3| Time travelling Next chapter: |usr_40.txt| Make new commands Previous chapter: |usr_31.txt| Exploiting the GUI Table of contents: |usr_toc.txt|
*32.1* Numbering changes In section |02.5| we only discussed one line of undo/redo. But it is also possible to branch off. This happens when you undo a few changes and then make a new change. The new changes become a branch in the undo tree. Let's start with the text "one". The first change to make is to append " too". And then move to the first 'o' and change it into 'w'. We then have two changes, numbered 1 and 2, and three states of the text: one | change 1 | one too | change 2 | one two If we now undo one change, back to "one too", and change "one" to "me" we create a branch in the undo tree: one | change 1 | one too / \ change 2 change 3 | | one two me too You can now use the |u| command to undo. If you do this twice you get to "one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| takes you to "me too". Thus undo and redo go up and down in the tree, using the branch that was last used. What matters here is the order in which the changes are made. Undo and redo are not considered changes in this context. After each change you have a new state of the text. Note that only the changes are numbered, the text shown in the tree above has no identifier. They are mostly referred to by the number of the change above it. But sometimes by the number of one of the changes below it, especially when moving up in the tree, so that you know which change was just undone.
*32.2* Jumping around the tree So how do you get to "one two" now? You can use this command: :undo 2 The text is now "one two", you are below change 2. You can use the |:undo| command to jump to below any change in the tree. Now make another change: change "one" to "not": one | change 1 | one too / \ change 2 change 3 | | one two me too | change 4 | not two Now you change your mind and want to go back to "me too". Use the |g-| command. This moves back in time. Thus it doesn't walk the tree upwards or downwards, but goes to the change made before. You can repeat |g-| and you will see the text change: me too one two one too one Use |g+| to move forward in time: one one too one two me too not two Using |:undo| is useful if you know what change you want to jump to. |g-| and |g+| are useful if you don't know exactly what the change number is. You can type a count before |g-| and |g+| to repeat them.
*32.3* Time travelling When you have been working on text for a while the tree grows to become big. Then you may want to go to the text of some minutes ago. To see what branches there are in the undo tree use this command: :undolist number changes time 3 2 16 seconds ago 4 3 5 seconds ago Here you can see the number of the leaves in each branch and when the change was made. Assuming we are below change 4, at "not two", you can go back ten seconds with this command: :earlier 10s Depending on how much time you took for the changes you end up at a certain position in the tree. The |:earlier| command argument can be "m" for minutes and "h" for hours. To go all the way back use a big number: :earlier 10h To travel forward in time again use the |:later| command: :later 1m The arguments are "s", "m" and "h", just like with |:earlier|.
Next chapter: |usr_40.txt| Make new commands Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: top - main help file


<mat-slider>
allows for the selection of a value from a range via mouse, touch, or keyboard,
similar to <input type="range">
.
By default the minimum value of the slider is 0
, the maximum value is 100
, and the thumb moves
in increments of 1
. These values can be changed by setting the min
, max
, and step
attributes
respectively. The initial value is set to the minimum value unless otherwise specified.
<mat-slider min="1" max="5" step="0.5" value="1.5">
<input matSliderThumb>
</mat-slider>
A <mat-slider>
can be converted into a range slider by projecting both a matStartThumb
and a
matEndThumb
into it. Each of the thumbs has an independent value, but they won't be allowed to
overlap and they're still bound by the same min
and max
from the slider.
<mat-slider>
<input matSliderStartThumb>
<input matSliderEndThumb>
</mat-slider>
By default, the exact selected value of a slider is not visible to the user. However, this value can
be added to the thumb by adding the discrete
attribute.
<mat-slider discrete>
<input matSliderThumb>
</mat-slider>
By default, the value in the slider's thumb label will be the same as the model value, however this
may end up being too large to fit into the label. If you want to control the value that is being
displayed, you can do so using the displayWith
input.
By default, sliders do not show tick marks along the thumb track. This can be enabled using the
showTickMarks
attribute.
<mat-slider showTickMarks>
<input matSliderThumb>
</mat-slider>
The slider has the following keyboard bindings:
| Key | Action |
|---|---|
| Right arrow | Increment the slider value by one step (decrements in RTL). |
| Up arrow | Increment the slider value by one step. |
| Left arrow | Decrement the slider value by one step (increments in RTL). |
| Down arrow | Decrement the slider value by one step. |
| Page up | Increment the slider value by 10 steps. |
| Page down | Decrement the slider value by 10 steps. |
| End | Set the value to the maximum possible. |
| Home | Set the value to the minimum possible. |
MatSlider
uses an internal <input type="range">
to provide an accessible experience. The input
receives focus and it can be labelled using aria-label
or aria-labelledby
.


{% extends "seo_link/tests/test_base.html" %} {% block body %}
1 here it should be replaced ###REPLACE ME###
here not bing ###REPLACE ME###
abc reg ex test case pattern containsabc abc abcabcabc
include startswith /link/testpage-reg in the path ###STARTS_WITH###
include exact /link/testpage-reg-ex-abc/ in the path ###EXACT###
include regular expression ###REG_EX### ###REG_EX###
include path contains abc abc ###CONTAINS_ABC###
exclude path contains def def ###CONTAINS_DEF###
inside plain p
This should be replaced
wordcount 1 test_me
wordcount 2 test me
wordcount 3 test me now
wordcount 4 test me now here
wordcount 5 test me now here fast


Algorithms and natural history
09 May 2019Until recently there was in Paris an exhibition about some techniques used for research in natural history. It raises some algorithmic questions and comments about bones, diamonds and polytopes. (More details about this great exhibition at the end of the post.)
Researchers measure the teeth of the tadpoles this frog species, and learn stuff.
Computing (skull) volumes
When you get a skull, something you want to measure is how much brain you can fit in, that is, what is its inside volume. This used to be done by filling the skull with some kind of grains, and then measuring the volume of grain. It is now done by with sensor measurements and computations. But if I give you some triangulation of an object, how do you compute the volume? If you assume the object to be convex, then one can surely do some kind of discrete integrals, suming some basic polytope volumes. This paper (or more precisely its introduction) seems to validate this intuition. It also raises the question about how the object to measure is given.
This made me remember that some price was awarded for something related to volume computation. I dug out the reference: 1991 Fulkerson prize was awarded to Dyer, Frieze and Kannan for works of this flavour. Their model is black-box: you ask for a point and you are answered whether it is inside or outside. They provide a randomized PTAS1 for approximating the volume of high-dimensional polytopes using Markov chain Monte Carlo methods. As many counting problems can be rephrased in terms of polytopes, this is much more useful than just computing high-dimensional skull volumes. For a bit more on this, see this wikipedia page.
Inclusions of diamonds and polytopes
The diamond above is the Blue Diamond of the French Crown that Louis XIV bought at some point of the 17th century. Or actually, it’s what it used to look like, because this diamond disappeared. It was suspected that it has been recut and is now the diamond known as the Hope diamond.
This was presented in the exhibition because the museum in Paris has a lead cast of the original diamond, and used it to validated the link between the two. Basically the two diamonds fit so well one in the other, that is very likely that they are the same with only a light recut.
But how can you decide if two polytopes could be included one in the other? And what’s the complexity? (Note that contrary to skulls, diamonds are pretty much polytopes.)
First for the decision problem: the two polytopes are somehow aligned and you just want to check the inclusion of one into the other. If both polytopes are given by sets of vertices, then some methods similar to convex hull computations should do the job.
Now how to find this alignment? For our diamonds, the spikes and planar symmetries surely help. But what if your polytopes are say, very close to spheres, but with random perturbations? Doesn’t seem very easy. This looks similar to some robotics problem, such as the piano mover’s problem, but it’s not quite the same.
Symmetrizing old bones
Yet another problems that one can transfer to polytopes. Here the paleontologists find skulls like the one on the left (I didn’t take notes of the name of this fellow), that has been deformed by non-uniform forces in the ground. Then they try to reconstruct the correct shape, like the one on the right.
Again if you are a human, if you know a lot about such creatures, it is possible to find a plausible shape by adjusting the parameters of some transformation. In particular, you try to have a left-right symmetry. But what if I give you an arbitrary triangulation, and tell you: find the best way to modify it in order to have a symmetry?
Could be related to principal component analysis, that gives you some notion of “this object is somehow aligned with this direction”, but again if you have a random near-spherical objects, this does not help you (but in this case, you may be happy with any plane, as an approximation).
About the exhibition
The name of the exhibition in French was Secrets dévoilés : voir l’imperceptible, which basically means Unveiling secrets : seeing the imperciptible. It was created by the National Museum of Natural History of Paris and consisted in panels, hung in the Jardin des Plantes.
Some of the pictures can be seen on the website of the illustrator.


VIDEO: Substitute Samuel Tetteh scores in LASK Linz win at Swarovski Tirol
Striker Samuel Tetteh climbed off the bench to score his third league goal of the season as LASK Linz beat Swarovski Tirol 2-0 on Saturday in the Austrian Bundesliga.
The 23-year-old had come on to replace Dominik Frieser on the 62nd minute.
LASK took the lead in the 79th minute through Peter Michorl and went all thought it was going to be a slim victory for the visitor, Tetteh scored in injury time.
The on-loan striker fired from inside the box with his weaker left foot in the 94th minute.
He posted on Twitter: ''+3 points Great Performance Guys 💪🏾 Happy with The Goal #GodIsTheReason ⚡ 🙏🏾 @LASK_Official.''
LASK are second on the Austrian table; one point behind leaders Red Bull Salzburg who have 39 points from 15 matches.


In the previous section we have seen how to perform the Minkowski Sum of two non-convex polygons. The non-convex polygons need to be triangulated and then Minkowski Sum among all pairs of triangles should be calculated. Finally we take the union of all the resulting polygons in order to get a final polygon that represents the Minkowski Sum of the two aforementioned non-convex polygons. The goal of this section is to illustrate the algorithm of performing the union of two non-convex polygons.
Even though the idea of how to perform the union of two polygons can be found in the book "Computational Geometry in C - Joseph O'Rourke", it does not provide key details for the implementation. That is why an entire section explaining how to do it is dedicated here. Moreover the algorithm is not trivial.
The algorithm for calculating the union of two non-convex polygons is a modification of the Bentley-Ottmann sweepline algorithm.
The simple example that we can give about this algorithm is the one used for line segments intersections.
Briefly we can imagine a line \(L\) that sweeps all along a plane in the \(x\) coordinate. This line has information about the order of the segments \({S_1, S_2, ... , S_N}\) by \(y\) coordinate. It stops each time one of the following events happen:
The algorithm uses a priority queue \(Q\) that has all the events that will happen ordered by x coordinate and an AVL tree \(L\) which is a self-balanced binary search tree containing the information about the segments over the line ordered by \(y\) coordinate.
Thus when the line encounters the beginning of a segment it inserts it into the \(L\) tree, it calculates if it intersects with the adjacents segments, if yes then it calculates the intersection point and it inserts it into \(Q\). when the line finds the end of a segment it deletes it from \(L\). Finally when the line touches an intersection it swaps the intersecting segments in the \(L\) structure and calculates future intersections with the adjacent segments. The procedure continues until \(L\) and \(Q\) are empty.
Given two simple polygons \(A\) and \(B\) calculate their union \(A \cup B\) which is a polygon containing the shape of both polygons.
For understanding the main idea the problem will be simplified and thus assume the following:
To use the same approach of the sweepline algorithm for segment intersections the edges of the polygons \(A\) and \(B\) are represented as a set of segments.
The algorithm uses two AVL trees: one for the line status \(L\) and another for the events queue \(Q\). All the edges of \(A\) are labeled with the polygon's name to distinguish it from \(B\) and ordered by the smallest \(x\) coordinate. Additionally each edge contains two points associated with the two vertices that connects. Thus each vertex has information about its position: left if the vertex lies on the left-side of the edge and right if the vertex is on the right-side of the edge in the x coordinate. Simetrically for polygon \(B\). Notice that each vertex is associated with exactly two edges. The events queue initializes with all the vertices of both polygons ordered by \(x\) coordinate.
There are four kinds of events:
This concept is ilustrated below:
Left-left event
Right-right event
Left-right event
Intersection event
When a Left-left event happens, both edges are inserted into \(L\). In the case of a Right-right event both edges are deleted from \(L\). For a Left-right event the left edge is deleted and the right edge is inserted. Finally in case of an Intersection event both edges swap its position in \(L\). The future intersections are calculated and put them in the priority queue \(Q\) each time an edge is inserted in \(L\) or an Intersection event occurs.
Additionally, each edge need to be tagged to be on the exterior or interior of the union polygon. Each time a Left-left event is triggered at point \(x\) for polygon \(A\) (or \(B\) respectively), in order to categorize its edges correctly we need to count the edges of polygon \(B\) that are above the point \(x\) intersecting with the vertical line \(L\). If it is an even number then the new edges will be tagged as external or internal otherwise. This is achivable using the line status \(L\) structure. First we insert the edges into \(L\) and then count how many edges that correspond to that other polygon are above the inserted edge iterating through the previous nodes.
An example is shown in the figure above with two polygons \(A\) in blue and \(B\) in orange. The blue point represents the Left-left event and the red points are the intersection points between the edges above \(x\) corresponding to the other polygon and the sweep line, this information is extracted from the \(L\) structure. The figure on the left shows that there is one edge above and thus the new edges are tagged as internal. The figure on the right shows that there are two edges above and therefore the new edges are tagged as external
Edges corresponding to \(x\) point are categorized as Internal
Edges corresponding to \(x\) point are categorized as External
When a Left-right event is triggered the right edges inherits the tag of the left edge. For instance, if the left edge was tagged as internal then the right edge will continue to be internal.
When an Intersection event is triggered the tag of the two edges are changed to the oposite as it is illustrated in the images below.
Moreover the edges need to know information about its intersections. This is made when an intersection is detected, then both edges belonging to the intersection are related to each other together with the point of intersection. Thus, the construction of the Union Polygon is made when the line detects the following events:
An example is shown above. The red point represents the intersection point. The blue point is the last intersection that both edges has seen. The green arrows represent the edges to be taken for the Union Polygon.
Thus the procedure ends when \(L\) and \(Q\) are empty.
Remember that the data structures used for \(L\) and \(Q\) are AVL trees and thus searching, insertion, deletion operations have a time complexity of \(O(log n)\).
The total number of events is \(2n + k\) = \(O(n + k)\) because for each edge we have two events happening: an insertion and a deletion plus \(k\) intersections happening in total and therefore the length of \(Q\) is bounded by the same amount. Moreover each event is inserted or deleted once from \(Q\) and thus the total costs of mantaining \(Q\) is \(O((n+k)log(n+k))\). Additionally \(k=O(n^2)\) and thus \(O(log(n+k)) = O(log(n + n^2)) = O(log n + 2log n) = O(log n)\). Thus the time complexity of \(Q\) is \(O((n+k)log n)\).
The time complexity of \(L\) is O(nlogn) because there are \(n\) edges inserted or deleted in \(O(logn)\). The total number of intersection calls is \(O(n + k)\) because the number of intersections is at most twice the number of events and each event results in at most two new edges adjacencies.
Therefore the time complexity is \(O((n+k)log n)\) and the space complexity is \(O(n+k)\). Chazelle & Edelsbrunner have shown an optimal algorithm whose time complexity is \(O(nlogn + k)\) and Balaban shown that the space complexity is \(O(n)\).
Notice that the union of two polygons can be a polygon with holes. For the robot path planning problem only the external polygon will be considered and therefore the holes will be ignored.
When calculating the Minkowski Sum of two non-convex polygons it is common to have degeneracy cases of the union of two polygons. Some of them are illustrated in the figures below. The green edges or points indicates where the degeneracy occurs.
Two horizontal edges overlapping
Three vertices of one polygon lies over the edges of the other one
Two vertices lie in the same \((x,y)\) coordinates.
Two edges overlapping
In order to deal with them without altering the complexity time of the algorithm the vertices coordinates should be slightly altered when the event is triggered just before processing it. For instance, let's take the right-most image as an example. We process the first Left-left event for one polygon so when the next Left-left event is triggered we should verify if the point is equal to the last-event-occurred point if that is the case then we should make a very little modification to the current \((x, y)\) point coordinates such that the vertex is infinitesimal different to the one of the other polygon (using randomness). This applies to all the degeneracy cases.
Notice that there is a problem with this approach. The resulting Union Polygon would have more vertices than it should have. The problem is resolved iterating through all the vertices of the Union Polygon in counterclockwise (clockwise) order and if the current vertex and the next one are very close to each other then delete them from the Union Polygon, average their coordinates and add this new vertex to the Union Polygon.