So far, I’ve posted about the problems with traditional parser and offered a glimpse of how they might be solved, but succinct data structures are quite alien and it isn’t obvious the pay-off will be worthwhile.
In this post, I demonstrate how use broadword programming techniques to exploit data-level parallelism in the parsing of a CSV-like format.
Doing so allows us to parse the text 8-bytes at a time instead of one byte at a time as a traditional parser would.
For simplicity, I will be postponing the particular challenges of implementing the particulars of the RFC standard for CSV for a later time and instead work with a simplified format.
The simplified “CSV” grammar will only recognise delimiters and newlines and have no support for escaping.
The format I describe is effectively the kind of format that the cut
command line tool can process, so cut
will at some point serve as the performance baseline that I’m aiming to improve upon.
Data Parallelism
Data parallelism describes a computation that can be decomposed into smaller computations that can be run in parallel.
We usually think of parsing is an inherently serial process due to the fact the parser must consume the input text one character at a time.
But because I’ve chosen a simplified format where the identification of delimiters and newlines are independent of what characters came before and what came after, there ought to be a way to parse the text more than one character at a time for the purposes of building a rank-select bit-string.
Our parser would need to generate a 1
bit for every newline in one of the rank-select bit-strings and a 1
bit for every newline and delimiter in the other.
Let’s use the example from the previous post to demonstrate how this can be done:
"name","age","profession"John,30,Code MonkeyKyle,40,Data Scrubber
0000001000001000000000000100001001000000000001000010010000000000000
0000000000000000000000000100000000000000000001000000000000000000000
The first line is the text we want to use to construct the following two bit-strings.
Note that
represenes a newline ASCII character
Broadword progamming
Broadword programming, sometimes known as SWAR (SIMD Within A Register) uses large registers (in our case 64-bit integer registers) as small parallel computers that can process several pieces of information at a time.
We will be using this technique to parse our text 8-bytes at a time.
Before we start we will need the following operations:
(.&.) :: Word64 -> Word64 -> Word64 -- Compute the bit-wise AND of two integers
(.|.) :: Word64 -> Word64 -> Word64 -- Compute the bit-wise OR of two integers
(.^.) :: Word64 -> Word64 -> Word64 -- Compute the bit-wise XOR of two integers
comp :: Word64 -> Word64 -- Compute the bit-wise complement of an integer
(.>.) :: Word64 -> Count -> Word64 -- Compute the right shift of an integer by the given offset in Big-Endian
-- Note, this is equivalent to a left shift of an integer in Little-Endian
These operators are pretty standard, but pay close attention to the shift operator, which is the standard right shift operator.
When the bits are laid out in Little-Endian order the right shift operator will actually shift all the bits to the LEFT.
In all of the diagrams, bits and bytes will be laid out in Little-Endian because it is the natural layout for succinct data structures but it can be very confusing so bear with me and keep this in mind.
Our first task is to build the following rank-select bit-string from our text.
"name","age","profession"John,30,Code MonkeyKyle,40,Data Scrubber
0000000000000000000000000100000000000000000001000000000000000000000
To do this, we first create a 64-bit word that contains 8 x 8-bit packed integers each initialised to the ASCII code for the newline character. For example, the hexadecimal representation of the newline character is 0x0a
, so the 64-bit word we are contructing will be:
or
The next step is to take the text and pad it with zero bytes to the nearest 64-bit boundary. Then take the entire text and cast it to a vector of Little-Endian 64-bit integers.
This leads to a view of memory shown below indicated by text
.
Bytes packed into Little-Endian Word64 integers
┌─────────────────────────┼─────────────────────────┐
┌──────────┴──────────┐ ┌──────────┴──────────┐ ┌──────────┴──────────┐
" n a m e " , " a g e " , " p r o f e s s i o n
22 6e 61 6d 65 22 2c 22 61 67 65 22 2c 22 70 72 6f 66 65 73 73 69 6f 6e text ─────────┐
0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a mask ────────┐│
28 64 6b 67 6f 28 26 28 6b 6d 6f 28 26 28 7a 78 65 6c 6f 79 79 63 65 64 comparison <┬┴┘ (.^.)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 newlines <──┘ cmpzero
┌──┐ ┌──┐
" │$ │J o h n , 3 0 , C o d e M o n k e y │ │K y
22│0a│4a 6f 68 6e 2c 33 30 2c 43 6f 64 65 20 4d 6f 6e 6b 65 79│0a│4b 79 text ─────────┐
0a│0a│0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a│0a│0a 0a mask ────────┐│
28│00│40 65 62 64 26 39 3a 26 49 65 6e 6f 2a 47 65 64 61 6f 73│00│41 73 comparison <┬┴┘ (.^.)
0 │1 │0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 │1 │0 0 newlines <──┘ cmpzero
└┬─┘ └┬─┘
└──────────────────────────────────────────────┬────────────────┘
│
│ ┌──┐
l e , 4 0 , D a t a S c r u b │ b e r │ ├───────────┐
6c 65 2c 34 30 2c 44 61 74 61 20 53 63 72 75 62 │ 62 65 72│0a│00 00 00 00│ text ─────────┐
0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a │ 0a 0a 0a│0a│0a 0a 0a 0a│ mask ────────┐│
66 6f 26 3e 3a 26 4e 6b 7e 6b 2a 59 69 78 7f 68 │ 68 6f 78│00│0a 0a 0a 0a│ comparison <┬┴┘ (.^.)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 │ 0 0 0 │1 │0 0 0 0 │ newlines <──┘ cmpzero
│ └┬─┴───┬───────┘
Bits corresponding to newlines that │ │ └─Padding
need to be set to 1 ──────────────────┴──────────┘
Then for each 64-bit value in the vector take the exclusive or (.^.)
with the wNewlines
mask. The resulting vector of 64-bit vector when cast back to a vector of bytes will then contain a zero value for every character in the original text that was a newline and a non-zero value otherwise.
This is very close to what we want. All we need to do now is to collapse every non-zero byte into a 0
bit and every zero byte to a 1
bit.
The problem we are trying to solve can be exemplified by the following example where we need a function cmpzero
that condenses the bytes in the comparison
row to the bits in the newlines
row:
┌──┐
65 64 61 6f 73│00│41 73 comparison ─┐
0 0 0 0 0 │1 │0 0 newlines <──┘
└──┘
This can be done in a series of bit-wise manipulations described below:
T text ┌─── 10100110 00100110 10000110 11110110 11001110 00000000 10000010 11001110
│
mask │┌── 00001111 00001111 00001111 00001111 00001111 00001111 00001111 00001111
A (.&.)├┴─> 00000110 00000110 00000110 00000110 00001110 00000000 00000010 00001110 ─┐
B │ ┌ 01100000 01100000 01100000 01100000 11100000 00000000 00100000 11100000 <┘ (.>.   1)
│ └────────────────────────────────────────────────────────────────────────────┐
mask │┌── 10000000 10000000 10000000 10000000 10000000 00000000 10000000 10000000 │
L (.&.)└┴─> 10000000 10000000 10000000 10000000 10000000 00000000 10000000 10000000 ──┐│
││
M 10000000 10000000 10000000 10000000 10000000 00000000 10000000 10000000 <─┴┘(.|.)
│ │ │ └───┐┌───┘ │ │ │
│ │ └───────────┐││┌───────────┘ │ │
│ └───────────────────┐││││┌───────────────────┘ │
└───────────────────────────┐││││││┌───────────────────────────┘
11111011─┐pext
00000100<┘comp
We start with the following computations:
- At
T
we have our 64-bit integer that contains 8-bytes of our text - At
A
we mask out first half of every byte in our wordT
. - At
B
we shift the second half of every byte into the first half position of every byte in our word. - At
C
we mask out the second half of every byte in our wordT
. - At
D
we computeA .|. C
At this point we have compressed result into the first half of every byte. We repeat this to compress further to the first quarter of our bytes similarly:
- At
E
we mask out first quarter of every byte in our wordD
. - At
F
we shift the second quarter of every byte into the first quarter of every byte in our word. - At
H
we mask out the second quarter of every byte in our wordD
. - At
I
we computeF .|. H
Finally we do this one more time to compress the first quarter of every byte in our word to the first bit of every byte in our word.
- At
J
we mask out first bit of every byte in our wordH
. - At
K
we shift the second bit of every byte into the first bit of every byte in our word. - At
L
we mask out the second bit of every byte in our wordH
. - At
M
we computeJ .|. L
Now we are two steps away from the 8-bits of rank-select bit-string we need for our 8 input characters.
We need some way to extract the first bit of every byte in our word, an operation I will call pext
or parallel extract, and then take the complement of the result to get the rank-select bit-string we sought.
The other rank-select bit-string which marks delimiters and newlines can be derived by applying the same algorithm for the delimiters and the newlines separately then taking the bitwise OR (.|.)
of the two resulting bit-strings.
The resulting code is show below.
testWord8s :: Word64 -> Word64
testWord8s w = let w8s = w
w4s = (w8s .&. 0x0f0f0f0f0f0f0f0f) .|. ((w8s .&. 0xf0f0f0f0f0f0f0f0) .>. 4)
w2s = (w4s .&. 0x0707070707070707) .|. ((w4s .&. 0x7070707070707070) .>. 2)
w1s = (w2s .&. 0x0303030303030303) .|. ((w2s .&. 0x3030303030303030) .>. 1)
in pext w1s 0x0101010101010101
{-# INLINE testWord8s #-}
All up we’ve used the following operations:
(.&.)
x 6(.|.)
x 3(.>.)
x 3pext
x 1load
x 1store
x 1
Which adds up to 13
very fast register only instructions plus 2
implied memory instructions.
Optimising our bit-string construction code
If you look at the M
row in the diagram you will notice that near the end of the computation we only use the least significant bit from each of the 8 bytes in our word and don’t actually care what the values of the other bits are.
We can exploit this fact to remove some of the operations from our computation by marking those bits as don’t care or x
, and tracing those bits backwards through the computation and then figuring out which operations we can omit.
T text ┌─── 10100110 00100110 10000110 11110110 11001110 00000000 10000010 11001110
│
A noop ├──> xxxx0110 xxxx0110 xxxx0110 xxxx0110 xxxx1110 xxxx0000 xxxx0010 xxxx1110 ─┐
B │ ┌ 0110xxxx 0110xxxx 0110xxxx 0110xxxx 1110xxxx 0000xxxx 0010xxxx 1110xxxx <┘ (.>. 4)
│ └────────────────────────────────────────────────────────────────────────────┐
C noop └──> 1010xxxx 0010xxxx 1000xxxx 1111xxxx 1100xxxx 0000xxxx 1000xxxx 1100xxxx ──┐│
││
D ┌─── 1110xxxx 0110xxxx 1110xxxx 1111xxxx 1110xxxx 0000xxxx 1010xxxx 1110xxxx <─┴┘(.|.)
│
E noop ├──> xx10xxxx xx10xxxx xx10xxxx xx11xxxx xx10xxxx xx00xxxx xx10xxxx xx10xxxx ─┐
F │ ┌ 10xxxxxx 10xxxxxx 10xxxxxx 11xxxxxx 10xxxxxx 00xxxxxx 10xxxxxx 10xxxxxx <┘ (.>. 2)
│ └────────────────────────────────────────────────────────────────────────────┐
G noop └──> 11xxxxxx 01xxxxxx 11xxxxxx 11xxxxxx 11xxxxxx 00xxxxxx 10xxxxxx 11xxxxxx ──┐│
││
I ┌─── 11xxxxxx 11xxxxxx 11xxxxxx 11xxxxxx 11xxxxxx 00xxxxxx 10xxxxxx 11xxxxxx <─┴┘(.|.)
│
J noop ├──> x1xxxxxx x1xxxxxx x1xxxxxx x1xxxxxx x1xxxxxx x0xxxxxx x1xxxxxx 01xxxxxx ─┐
K │ ┌ 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx x0xxxxxx 1xxxxxxx 1xxxxxxx <┘ (.>. 1)
│ └────────────────────────────────────────────────────────────────────────────┐
L noop └──> 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 0xxxxxxx 1xxxxxxx 1xxxxxxx ──┐│
││
M 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 1xxxxxxx 0xxxxxxx 1xxxxxxx 1xxxxxxx <─┴┘(.|.)
│ │ │ └───┐┌───┘ │ │ │
│ │ └───────────┐││┌───────────┘ │ │
│ └───────────────────┐││││┌───────────────────┘ │
└───────────────────────────┐││││││┌───────────────────────────┘
11111011─┐pext
00000100<┘comp
As a result of tracing the don’t care or x
bits backwards through the computation, I was able to remove six masks and six AND (.&.)
operations.
I left the rows A
, C
, E
, G
, J
, and L
in as non-operations (noop
) because I wanted to annotate the additional bits I don’t care beyond those I already don’t care about in the original value.
The resulting code is much simpler and faster:
testWord8s :: Word64 -> Word64
testWord8s w = let w8s = w
w4s = w8s .|. (w8s .>. 4)
w2s = w4s .|. (w4s .>. 2)
w1s = w2s .|. (w2s .>. 1)
in pext w1s 0x0101010101010101
{-# INLINE testWord8s #-}
The optimisations meas we now use only these operations:
(.|.)
x 3(.>.)
x 3pext
x 1load
x 1store
x 1
This adds up to 7
very fast register only instructions plus 2
implied memory instructions, which is very close to 1
instruction per byte for each rank-select bit-string constructed.
Unanswered questions
What’s nice about it is that we are parsing 8-bytes at a time using fewer instructions and we’ve managed to avoid any branches or memory allocations within each iteration that could slow the iteration down.
Nevertheless, some benchmarks will be necessary to compare this approach to one that parses a byte at a time.
You may have noticed that I have used the pext
operation without properly describing how it works nor explained why that operation should be fast.
I will follow up in a future post to explain the pext
operation in detail and offer some benchmarks to show the degree of speed up we might expect from exploiting data parallelism in our parsers.
Source code
You can play with the source code here.


System Architect Definitions, Encyclopedia:"D:\DATA\SYSARCH\HCM\GEN_DATA\SUBJECT\V01\CURRENT\"
AC/Direction (Gen-Spec Arc)
- Base Class:
"Associative Category"
- Open:
F
- Definitions Used:
-
Associative Category (Class)
Access Group For Information (Class)
- Description:
Access allowed for a particular "Access Group" to a "Subject".
- Comment:
The "Subject" to which access is allowed is normally one holding information. Others are not
prohibited but would be meaningless in this context.
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
Access Group For Object (Class)
- Description:
Describes the access an "Agent Access Group" has to an "Object".
- Examples:
For example, if a patient says to a GP, "Don't tell anyone about this but another doctor in the
practice".
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
Access Type (Class)
- Description:
"Level" specifying the extents to which access to information may be granted.
- Examples:
-
Examples which may be considered include:
Read only
Copy
Forward to others
Absolute.
Each level would be deemed to include all lower levels.
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
accuracy unit for (Association)
- From Class:
"Unit Of Measure"
- To Class:
"Measured Qualifier"
Acquired Permanent Property (Class)
- Description:
"Subject Property", effective from a point in time, which cannot be changed.
- Source:
post-CBS
- State Type:
F
- &Abstract:
F
- Value:
F
Acquired Temporary Property (Class)
- Description:
"Subject Property" which exists until it is observed to change.
- Source:
post-CBS
- State Type:
F
- &Abstract:
F
- Value:
F
Activity For Subject (Class)
- Description:
"Activity" directed towards a single "Subject".
- Comment:
-
Previous definitions from which the above have been distilled:
An act which changes either the state, or the knowledge of the state, of a "Subject" (CBS v2).
- Source:
CBS V2 Gen
- Previous name:
ACTUAL ACT
- State Type:
F
- &Abstract:
F
- Value:
F
activity for (Association)
- From Class:
Activity
- To Class:
"Activity State"
Activity In Context (Class)
- Description:
"Activity For Subject" placed within a "Context Activity" by an "Agent".
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Qualifier Type (Class)
- Description:
"Descriptive Category" capable of classifying an "Activity Qualifier"
- Comment:
Necessary to indicate the nature of the qualification as opposed to its value.
- Examples:
In medication, "Route", "Form", "Strength", "Special Instructions" are all examples of "Activity
Qualifier Type".
- Source:
COSHER
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Qualifier (Class)
- Description:
"Phenomenon Qualifier" qualifying an "Activity For Subject".
- Examples:
Laterality and site of an operative procedure; route, strength and form of a drug administration.
- Source:
CCC
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Specification (Class)
- Comment:
Activity specification is included here as a place-holder. When this model merged with the protocol
model the definition from that model should be used. If there is no Activity specification in the
protocol model then it should be deleted from this diagram and from the Agent encyclopaedia.
- Source:
PRESTIGE
- State Type:
F
- &Abstract:
F
- Value:
F
Activity State Change (Class)
- Description:
"Activity" changing the state of another "Activity".
- Source:
post-CBS
- Previous name:
State Change Activity
- State Type:
F
- &Abstract:
F
- Value:
F
activity state type from (Association)
- From Class:
"Activity State Type"
- To Class:
"State Transition Excluded"
activity state type to (Association)
- From Class:
"Activity State Type"
- To Class:
"State Transition Excluded"
Activity State Type (Class)
- Description:
"State Type" being one of the permissible states for "Activity State".
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
Activity State (Class)
- Description:
"Activity" in a state which it is currently or has been previously.
- Comment:
Note that there are both subtypes (comprising all the possible states) and a "power type" of
"Activity State Type". The latter's contents are identical to the subtypes; it exists in order to
control topics such as access and permission to amend.
- Source:
HcM QA
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Substitution (Class)
- Description:
"Activity" which has been wholly or partially replaced by another and hence will not be taken
forward.
- Comment:
Note that the "Activity" which is not to be taken forward moves to the "Not Required" state.
- Source:
PRESTIGE
- State Type:
F
- &Abstract:
F
- Value:
F
Activity To Be Done (Class)
- Description:
"Activity" required to be undertaken.
- Comment:
Required activities are those which an Agent has made a specific decision to take forward.
- Source:
post-CBS
- Previous name:
Established Activity
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Type Excluded (Class)
- Description:
-
An "Activity Type" that may not be performed for this "Authorised Agent Activity".
- Comment:
This will be a species or sub-species of the "Activity Type" associated with the Agent via "Agent's
Activity Type".
- Examples:
This could for example mean that a doctor is allowed to perform general medical duties (an "Activity
Type" included by "Permitted Activity Type", with the exception of heart transplants, an excluded
"Activity Type".
- Source:
Unspecified
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Type Offered (Class)
- Description:
-
An "Activity Type" that an "Agent" makes a general offer to perform.
- Comment:
There is no need for any authorisation for this type of offer - it can be offered by a "Free Agent".
Example would be setting up a business to supply goods that are not regulated by legislation (i.e.
a pharmacists shop would not be covered by this type.)
- Source:
CBS V2 Gen
- Previous name:
Business Scope of Agent
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Type (Class)
- Description:
"Descriptive Category" capable of being used as a category for "Activities".
- Source:
CBS V2 Gen
- State Type:
F
- &Abstract:
F
- Value:
F
Activity Under Consideration (Class)
- Description:
"Activity" which is considered appropriate by an "Agent".
- Comment:
Note that there is not necessarily any intention to perform the Activity at this stage - indeed a
set of conflicting Activities may all be simultaneously under consideration.
- Source:
post-CBS
- Previous name:
Relevant Activity
- State Type:
F
- &Abstract:
F
- Value:
F
Activity/Direction (Gen-Spec Arc)
- Base Class:
Activity
- Open:
F
- Definitions Used:
-
Activity (Class)
Activity/Repetition (Gen-Spec Arc)
- Base Class:
Activity
- Open:
F
- Definitions Used:
-
Activity (Class)
Activity/State (Gen-Spec Arc)
- Base Class:
"Activity State"
- Open:
F
- Definitions Used:
-
Activity State (Class)
Activity (Class)
- Description:
Purposeful and intentional "Event"
- Comment:
-
Previous documented definitions providing the source for the above are:
An exertion of energy initiated by an "Agent" (CBS v2) - this definition is followed by a definition
of its subtypes.
Conscious, directed and purposeful exertion of energy.
"Event" occurring through the volition of an "Agent".
- Source:
CBS V2 Gen
- Previous name:
Activity
- State Type:
F
- &Attributes:
-
Quantity
- &Abstract:
F
- Value:
F
- Definitions Used:
-
Quantity (Class Attribute)
Actual Outcome (Class)
- Description:
"Outcome" deduced to be in effect preceding or at the time of the deducing "Activity".

- Source:
post-CBS
- Previous name:
Factual Characteristic
- State Type:
F
- &Abstract:
F
- Value:
F
Actual Resource For Activity (Class)
- Description:
"Resource For Activity" using a specific identified "Resource Held".
- Source:
CBS V2 Gen
- State Type:
F
- &Abstract:
F
- Value:
F
actual source of (Association)
- From Class:
"Subject Phenomenon"
- To Class:
"Actual Outcome"
- Redefines:
"Causal Relation"."source of"
- Definitions Used:
-
source of (Association)
actual user (Association)
- From Class:
"Completed Activity"
- To Class:
"Resource For Completed Activity"
actual user (Association)
- From Class:
"Abandoned Activity"
- To Class:
"Resource For Abandoned Activity"
actual user (Association)
- From Class:
"Started Activity"
- To Class:
"Resource For Started Activity"


A POC of using both a typed theme
object and component @Inputs
with
Emotion CSS to produce something similar to
styled-components with React.
Allows you to dynamically style a angular component without needing CSS classes that exactly match component states as well as use libraries like polished to dynamically change styles.
Please feel free to fork, test, improve and build on this POC via Github.
Switch theme 👉


Recipe: Marinated Olives and Feta
by CBS NewsFrom Bon Appétit's January 2018 issue, a treat from Claire Saffitz.
"This appetizer is so fast and easy, you can have it on the table within 10 minutes of walking in the door. Save any leftover oil, which has been flavored with the red pepper flakes and garlic, for another use like salad dressing."
Marinated Olives and Feta
Recipe by Claire Saffitz
Makes 2 servings
Ingredients:
1 Tbsp. vegetable oil
¼ cup jarred red curry paste
1 14.5-oz. can coconut milk
½ cup creamy peanut butter
3 Tbsp. unseasoned rice vinegar
1 Tbsp. fish sauce
1 Tbsp. honey
Kosher salt
Preparation:
- Preheat oven to 400°. Drain 4 oz. olives and place on a cutting board. Lightly smash with the heel of your hand just to break apart skin and flatten slightly.
- Smash 3 garlic cloves and peel.
- Using a vegetable peeler, remove peel from 1 lemon in long wide strips.
- Cook lemon peel, olives, garlic, ½ cup oil, and ½ tsp. red pepper in a small saucepan over medium-low heat, swirling occasionally, until garlic is sizzling and golden around the edges, 5-7 minutes.
- Meanwhile, crumble 3 oz. feta into a shallow serving bowl.
- Pour oil mixture over feta. Let sit at least 10 minutes and up to 1 hour.
- Meanwhile, tear bread into large pieces and place in oven directly on rack. Bake until craggy edges are golden, 5-8 minutes. Serve with marinated feta and olives for dipping.
For more info:


@(pagename: String, user: models.users.User)(content: Html)
Opt into the sales/promotions email and recieve updates on AMAZING deals..
Sample music before buying and take advantage of our Smart Recommendations on your return visit


Post by: Goran Markovic, Ranch Hand
on Jul 27, 2009 07:03:18
Hi.
I am learning from the book "Java web services: Up and Running".
It is quite good one, but I have a problem in undertanding use of keytool in purpose of kreating kyestore.
Here is problem.
Generated .keystore using :, is stored, just as a book says inside "account's home directory", in will be in my case : "E:\Documents and Settings\Boban", and the file .keystore, is there. But I have a problem to compile my client class. In book it stays :
I just replace "/home/mkalin/.keystore" with "E:/Documents and Settings/Boban/.keystore", bit I get an error (cannot find a class).
I tried to create such a Properties in my client code, and to store the value above, but it won't work neither.
So how can I accomplish this?
Thanks
Post by: Ulf Dittmer, Marshal
on Jul 27, 2009 07:11:29
Please post the exact and complete error message. Make sure the ClientTC.class file is in the directory from where you execute this command.
Post by: Goran Markovic, Ranch Hand
on Jul 27, 2009 08:55:19
Well it is ordinary exception which tells that class not found :
It is when I run from command prompt, and simply place client class on C partition.
However I have placed my own keystore into TOMECAT_HOME dir (named sler.keystore). When browser lunch secured service https://localhost:8443/slersec/sler, the keystore on I have placed have been activated and the browser is prompt to accept this key (because it perform validation on its own key/trust store repository. right?).
So my keystore on server side has been successfully deployed.
But when I lunch a java application (from Eclipse) I have been not validated against sler.keystore (I placed in the work dir of Eclipse). The following error has been got :
So,it's not validated.
Can I however programmatic specified keystore and truststore in my client class, and then certificates received from server, to be validated against it??? That would be solution , and the good one. So, how can I perform such a task?
Thanks
Post by: Ulf Dittmer, Marshal
on Jul 27, 2009 09:00:38
It can't find a class called "and"? Are you sure there isn't a typo or something when you enter the command? Or maybe in some config file?
Post by: Goran Markovic, Ranch Hand
on Jul 27, 2009 09:22:42
No. I typed what I said. But I am quite sure, that that is wrong. I don't think I should type :
It really doesn't sound correct.
But why I can perform programmatic something like this :
[code]
public class SecurityClient {
private static Logger logger =Logger.getLogger("SecurityClient");
private static final String endpoint = "https://localhost:8443/slersec/sler";
public static void main(String[] args) {
try{
SlerSecurityService service = new SlerSecurityService();
SlerSecurity port = service.getSlerSecurityPort();
/*
Properties props = new Properties();
props.put("javax.net.ssl.trustStore", System.getProperty ("user.home"));
props.put("javax.net.ssl.trustStorePassword", "changeot");
props.put("javax.net.ssl.keyStore", System.getProperty ("user.home"));
props.put("javax.net.ssl.keyStorePassword", "changeit");
Map<String, Object> req_ctx = ((BindingProvider) port).getRequestContext();
req_ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint);
// Place the username/password in the HTTP request headers,
// which a non-Java client can do as well.
Map<String, List><String>> hdr = new HashMap<String, List><String>>();
hdr.put("username", Collections.singletonList("afrodom"));
hdr.put("password", Collections.singletonList("slobodan"));
req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, hdr);
Should I also pay attention on self-created .keystore file in user home dir. on client side, or sler.keystore on server side? How would you solve this problem?
Post by: Ulf Dittmer, Marshal
on Jul 27, 2009 09:35:16
No. I typed what I said. But I am quite sure, that that is wrong. I don't think I should type :
That's where the "and" is coming from. If the path has spaces, then you need to enclose it in double quotes.
Post by: Goran Markovic, Ranch Hand
on Jul 27, 2009 09:52:13
Well, you have a right. But now, the second exception has been raised :
What would go wrong now???
Post by: Goran Markovic, Ranch Hand
on Jul 28, 2009 11:15:21
Hi
I made a plenty of googling, but I couldn't find an answer.
This is my Client class. When I use an ordinary protocol, it works fine but when I change to secured, it says throws prevoous exception. Can I somehow, set system property which will pointing at 'localhost' as my ip?
I just cannot figure out...
Post by: Goran Markovic, Ranch Hand
on Aug 01, 2009 10:02:04
Help, Help, Help
Does anyone know what is the wrong? I just cannot resolve the problem. I configure the clinet but the same exception had raised again, and again. I have just simply follow the example from "java Web Service:Up and Running", but I cannot find out what is problem.
The exception :
but then, the second (contradictory) exception has been thrown :
Now, it says the host name SHOULD be localhost (and IT is) ?!
So what should I do??? Thanks... A LoT
Post by: Ivan Krizsan, Bartender
on Aug 02, 2009 18:59:11
Hi!
Include this code snippet on the client side. See the comment in the code below for explanation!
Best wishes!
Post by: Goran Markovic, Ranch Hand
on Aug 03, 2009 03:04:40
Hi Ivan.Thanks for your efforts, but the issue isn't resolved .
When i add the static code you have suggested, I get the following exception on client side :
AND it is probably caused by exception thrown from Tomcat :
I am little confused, because I do not directly use HttpsURLConnection object, but Service (proxy) in my client code, and as much as I see, it points to bad certificate, but there is no problem when I try to access the resource using browser. What could be problem?
Post by: Ivan Krizsan, Bartender
on Aug 03, 2009 22:13:46
Hi!
It looks like your truststore and/or keystore is not set up properly.
Check my SCDJWS study notes for a step-by-step guide on how to set up keystores and truststores for SSL and SSL with mututal authentication.
Best wishes!
All times above are in ranch (not your local) time.
The current ranch time is Dec 13, 2013 17:19:36.


| tiffcmp - compare two TIFF files |
| tiffcmp [ options ] file1.tif file2.tif |
| Tiffcmp compares the tags and data in two files created according to the Tagged Image File Format, Revision 6.0. The schemes used for compressing data in each file are immaterial when data are compared-data are compared on a scanline-by-scanline basis after decompression. Most directory tags are checked; notable exceptions are: GrayResponseCurve, ColorResponseCurve, and ColorMap tags. Data will not be compared if any of the BitsPerSample, SamplesPerPixel, or ImageWidth values are not equal. By default, tiffcmp will terminate if it encounters any difference. |
| -l |
| List each byte of image data that differs between the files. |
| -z number |
| List specified number of image data bytes that differs between the files. |
| -t |
| Ignore any differences in directory tags. |
| Tags that are not recognized by the library are not compared; they may also generate spurious diagnostics. |
| The image data of tiled files is not compared, since the TIFFReadScanline() function is used. A error will be reported for tiled files. |
| The pixel and/or sample number reported in differences may be off in some exotic cases. |
| pal2rgb(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3) |


{% extends "base.html" %} {% from "components/mini_card.html" import create_card with context %} {% from "components/default_tail.html" import tail_banners with context %} {%- block page_title -%}Daily update{% endblock %} {% block head %} {% cache 43200, 'head-home', timestamp, "main-summary" -%}
The official UK Government website for data and insights on Coronavirus (COVID-19).
See the easy read summary for the UK.
{% include "components/vaccination.html" %} {# % include "components/r_number.html" % #}


333
Preprocessor directives in C are any keywords with an octothorp (#) in front. They are special instructions meant for the preprocessor part of the compiler to perform, before the code is actually compiled.
Compiling Code is performed in four steps.
Preprocessor directives like "#define" (and most other keywords beginning with an #octothorp) are handled during the preprocessing step, before the code reaches the "actual" compiler. It can be confusing, because "Compiler" can refer generically to all the programs that perform all the steps above, or specifically to the program that does the Compilation step.
The following are all the C Preprocessor directives, their syntax, and notes on their use.
#define defines a "shorthand" for another chunk of code. The official name for this is a macro. When the preprocessor encounters a #define, it makes a note of the name, or identifier, and the code that follows. Then, anyplace else in the code the identifier is encountered, the preprocessor replaces the identifier with the chunk of code associated with it, cutting and pasting the longer code in to replace the shorthand.
Details about macros, why you would want to use them, and ways they can trip you up are covered in detail in the #Define Macros Section.
#define INIT_VALUE 10
#define PRINT_SOME_STARS printf("***")
int main(void)
{
int myVariable = INIT_VALUE;
//INIT_VALUE gets replaced with "10"
PRINT_SOME_STARS;
//gets replaced with printf("***")"
myVariable++;
return 0;
}
The #ifdef keyword is used with the #endif keyword to surround of code. If the statement after the #ifdef is defined elsewhere as a #define, the preprocessor includes the code in the block. Otherwise, the code is cut out. this is called Conditional Compilation, since its a conditional statement that controls if the code is compiled or not.
#define STARS "***"
int main(void)
{
#ifdef STARS
//Doesn't get compiled if
//"#define STARS" is missing
print(STARS);
#endif
return 0;
}
#ifndef checks if the next statement is NOT defined in the code as a #define.
The preprocessor directive equivalent of an ordinary else statement. It is used with the #ifdef and behaves as you would expect.
Preprocessor directives never reach the compiler proper. By the time the compiler sees the code, it has been chopped and swapped and flipped around. Most debuggers will throw a fit if an error is encountered in a chunk of code that a #define swapped in. In fact most debuggers won't even try.
Be aware that preprocessors are shifting the code around in ways the compiler and debugger don't necessarily expect, and this can lead to strange errors and erratic debugger behavior if you are not careful.
© 2017


Prime Bank Statement
Mariam Taiwo
7B, Adenike Jones Way,
Lagos-Nigeria.
Statement Period | Account Number
2020-09-15 to 2020-08-30 |<PHONE_NUMBER>56
| Date | Description | Withdrawals | Deposits | Balance |
|---|---|---|---|---|
| Total | -1,053,500 | +1,290,800 | 237,300 | |
| 2020-08-30 | Previous Balance | 320,800 | ||
| 2020-08-31 | Payroll Deposit-hotel | +100,000 | 430,800 | |
| 2020-09-01 | Web Bill payment- Mastercard | -500 | 430,300 | |
| 2020-09-02 | ATM Withdrawal - Interac | -80,000 | 320,300 | |
| 2020-09-03 | Mortgage Payment | -200,000 | 120,300 | |
| 2020-09-04 | Payroll Deposit-hotel | +100,000 | 220,300 | |
| 2020-09-05 | Telephone Bill Payment | -30,000 | 190,300 | |
| 2020-09-06 | ATM Withdrawal - Afrobank | -40,000 | 150,300 | |
| 2020-09-07 | Cheque No-409 | -50,000 | 100,300 | |
| 2020-09-08 | Web Fund transfer - From SAVINGS | +360,000 | 460,300 | |
| 2020-09-09 | Pre-Auth Payment- INSURANCE | -230,000 | 230,300 | |
| 2020-09-10 | Web Fund transfer - From SAVINGS | +50,000 | 280,300 | |
| 2020-09-11 | ATM Withdrawal - Interac | -80,000 | 200,300 | |
| 2020-09-12 | Telephone Bill Payment | -10,000 | 190,300 | |
| 2020-09-13 | Regional Director | +360,000 | 550,300 | |
| 2020-09-14 | Fees - Intrac | -130,000 | N420,300 | |
| 2020-09-15 | ATM Withdrawal - Afrobank | -20,300 | 400,000 | |


Camilo Pareja's Portfolio
Computer Science and Sociology student at Bowdoin College.
Nice to meet you, I hope you'll discover a little more about me on this page.
As a technologist, I am passionate about intersections - the intersection between engineering and product management, the intersection between reality and virtuality, and the intersection between innovation and equity.
Click button below to see a random technical skill of mine.
Click here to see the server response (random string) directly.
Click button below to get greeted in one of the languages I speak!


JPost
{% for entry in jpost_stories %}
{{entry.title}}
{% endfor %}
Biased.co
Al-Jazeera
{% for entry in aljazeera_stories %}
{{entry.title}}
{% endfor %}
By Noam
Pick an article from the above dropdown to begin reading.
Pick an article from the above dropdown to begin reading.


Bounty Hunter Kintaijin:
Ah, you've returned!
 Hmm, let's see... one, two, three... four hundred, five hundred! Excellent!
You did better than I thought you would. You have earned Growth Accelerator and Multi-Colored Jewel. Use Growth Accelerator on the Bizzare Coccons, by the way, this Jewel could help you for teleports. Good luck!


property Count: Integer; // Read only
Indicates the amount of layers stored in the collection.
[See also]: Using Layers, Items


--- layout: post title: Breaking up with your code date: 2010-03-04 22:14:30.000000000 +02:00 categories: [] tags: - open source status: publish type: post published: true meta: _edit_last: '10173910' _wpas_done_twitter: '1' author: login: saherneklawy email<EMAIL_ADDRESS>display_name: saherneklawy first_name: '' last_name: '' excerpt: !ruby/object:Hpricot::Doc options: {} ---
A famous quote from The Cathedral and the Bazaar is "Plan to throw one away; you will, anyhow". This never hits a programmer with it's true meaning until they have to throw aways a large bit of code base that they invested time and effort in. Coders tend to build an emotional connection towards every letter of code they wrote (I know i sure do). On the other hand, needs arise where obstacles render current software "unfixable". This confronts with the painful fact that change must be done. Taking an objective stand point in that decision is a tough decision, but facts are fact in face of improvement. In the end of the day, breaking up is tough but a fresh start would most likely end up in more bulletproof code.


View on GitHub
Apicraft-schedule
A mobile friendlier conference schedule.
Download this project as a .zip file
Download this project as a tar.gz file


typealias SgfMoveHandler = (state: SgfState, colorValue: Value, move: Move) -> MoveInfo?
See Also
SgfNodeHandler.useMoveHandler


| December |
| Christmas is going to suck |
AfriadToLive |
2006-12-22 |
|
| There was this guy strung out on cheese whiz |
Aaron Ganschow |
2006-12-13 |
|
| It all kind of brings me back to 7th grade |
PretentiousBlogger |
2006-12-11 |
|
| November |
| This time I am going to stick to it |
AfriadToLive |
2006-11-27 |
|
| Sushi and Student loans both start with "s" |
Aaron Ganschow |
2006-11-11 |
|
| October |
| Why doesn't vomit smell like snot? |
AfriadToLive |
2006-10-22 |
|
| The overwhelming desire to wear a hat |
PretentiousBlogger |
2006-10-11 |
|
| Tvs sometimes show rapid dots |
AfriadToLive |
2006-10-2 |
|


Actionable Stats
+28.62%
12
Main title
Sub title goes here
$405k
Revenue
Q4 2024
12,827
On time
-54.01%
12
All stats
Subtitle goes here
Non Actionable Stats
+28.62%
24.57%
Total revenue
Q4 2023
$405k
Expenses
Q4 2024
524
On time
Interesting Stats
June 2023
+38.62%
11
Main title
Sub title goes here
$401k
Revenue
Q4 2023
1,827
On time
-52.01%
12
All stats
Subtitle goes here
Stats on a Card
+32.62%
11
Main title
Sub title goes here
$201k
Revenue
Q3 2023
3,827
Normal
-22.01%
120
All stats
Subtitle goes here


BrowserifyBin
run npm modules in the browser.
Code has been edited since last run
Run
JavaScript including require('npm-modules')
Output browserified
This is a requirebin fork by
intesso


Enum Lineweight
Represents the line weight of a layer or an entity.
Namespace: netDxf
Assembly: CADability.dll
Syntax
public enum Lineweight
Remarks
The enum numeric value correspond to 1/100 mm.
Fields
| Name | Description |
|---|---|
| ByBlock | Lineweight defined by block. |
| ByLayer | Lineweight defined by layer. |
| Default | Default lineweight. |
| W0 | Lineweight value 0.00 mm (hairline). |
| W100 | Lineweight value 1.00 mm. |
| W106 | Lineweight value 1.06 mm. |
| W120 | Lineweight value 1.20 mm. |
| W13 | Lineweight value 0.13 mm. |
| W140 | Lineweight value 1.40 mm. |
| W15 | Lineweight value 0.15 mm. |
| W158 | Lineweight value 1.58 mm. |
| W18 | Lineweight value 0.18 mm. |
| W20 | Lineweight value 0.20 mm. |
| W200 | Lineweight value 2.00 mm. |
| W211 | Lineweight value 2.11 mm. |
| W25 | Lineweight value 0.25 mm. |
| W30 | Lineweight value 0.30 mm. |
| W35 | Lineweight value 0.35 mm. |
| W40 | Lineweight value 0.40 mm. |
| W5 | Lineweight value 0.05 mm. |
| W50 | Lineweight value 0.50 mm. |
| W53 | Lineweight value 0.53 mm. |
| W60 | Lineweight value 0.60 mm. |
| W70 | Lineweight value 0.70 mm. |
| W80 | Lineweight value 0.80 mm. |
| W9 | Lineweight value 0.09 mm. |
| W90 | Lineweight value 0.90 mm. |


- Use ↹ key and Shift-↹ combination to navigate between fields
- Use your web browser capability to Print into PDF
- Amount fields are calculated automatically
- Nothing is saved on the server
- Empty fields are excluded in the printed version
- VAT calculation is hidden until you specify VATIN
- Several fields can be prefilled via URL fragment #key=value
- Anything that is saved is stored in your browser's localStorage
- Feel free to distribute this page :)


| DOSE: |
3 flowers |
oral |
Datura |
(tea) |
This is my second trip on Datura, the last one was with a smaller dose. This was one of these days when I was really bored and was searching for some adventures. Last time I tried Datura I told myself to never touch it again, but, I couldn't hold myself.
Wednesday July 6th 2005
14:30 Made tea from three flowers of Datura Fastuosa. This resulted in dark blue extremely bitter liquid. I drank half of the glass by now along with orange juice to kill the awful taste and I feel a little sleepy and dizzy. Well I'm not tripping yet cause I can still type. Listening to 'Digitally Imported - Goa/Trance'. My cable TV is not working unfortunately.
14:45 Reading, feeling sleepy.
14:55 Drank most of the half liter cup with a bit left at the bottom. Gonna see if anything is gonna happen.
15:21 This flying feeling. One eye tries to look up, the other down. General dizziness and difficulties to walk. Sitting and playing enemy territory.  Well, we'll see if it gets more exciting. Now I have taken the whole cup of that blue tea.
15:38 Getting very unpleasant. Getting the dry mouth and dizziness became worse. My heart is beating extremely fast like 160/min. At this point I went to sleep. Once I closed my eye I instantly drifted away into a dream world.  Then I would occasionally wake up and realise that all these things were not real. That was quite a frustration for me every time it happened. Datura makes it impossible to resist this sleep.
21:00 Woke up and the effects seemed to fade out slowly. My heart is back to normal. My pupils look like two giant back holes and I have problems reading from the computer screen while writing this. I still see things and hear things like small glitches. I constantly keep hearing my mom calling my name, even though she is in a different town right now. As soon as I consciously realise that these hallucinations are not real, they disappear - except for a 'jumping pencils in a cup' thing. When I look at the pencils they just continue moving up and down, left to right doing a banana dance (like in peanutbutter-jelly-time flash cartoon).
The monitor seems to be a bit alive as well. I'm also feeling a bit dizzy. The hallucinations are getting kina annoying, cause everywhere I look I see either some flickering and pulsations, or an object that does not exist, or a sound. My whole body is dry and especially my hair cause it feels like dried hay when I brush my fingers through it. I guess this the last time I'm using Datura. I use it again only if I'm really bored or if I forget all the unpleasant side effects of this plant. At least I know what it feels like to be schizophrenic.
The next day: feeling great, however still a bit detached. I still don't really pay attention to things and I feel like I'm half dreaming or something. Then as soon as I hear some sudden noise I'd wake up for a moment then drift away again. During the night cotton mouth has disappeared and I was only seeing and hearing stuff. Lots of times I got the idea that I was watching TV, but then I'd open my eyes and discover that the TV is not even on.
I clearly remember watching some nature program on discovery and then a song contest on some Arabic channel, but that was 100% hallucinations because our cable TV was down for repairs since yesterday morning and only went back online today morning. I also remember eating a tomato and then while it was in my hand I thought it was a TV remote and I tried switching channels with it (with my eyes closed and the TV not even on).
I also remember that my mom was at home and making food, but then again as soon as I opened my eyes I discovered that I was just laying on my couch in a dark apartment. Then I decided that I'd not open my eyes next time I realise that they're closed and just continue dreaming. That worked rather good for a while until I fell asleep for real. About four in the morning I still had difficulties to walk but now everything is rather fine (13:00 the next day). This was definitely my strongest datura trip but it wasn't strong enough to totally knock me out of reality. Not as if I want it to happen either. I was rather in control of myself during the trip, which is a good thing. Datura would be my favorite drug if not all of its side effects.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


"We have a catastrophe on our hands!"
Scientist: "The previous morons in charge were both greedy and dumb, and ignored our warnings. They enriched themselves at the expense of our planet. Now we're doomed!"
Senator: "You've been given emergency powers to try to stop the rising water before it's too late. Our factories will produce valuable boxes of widgets which you can use to build new buildings. Good luck, we're all counting on you."
Created for Ludum Dare #42, a 48-hour game jam with the theme of "Running out of space". Created by Luke @deathraygames using RocketBoots, Pixi, Google fonts, and the Steam Lords palette. Open source: v1.2.0
Congratulations! You've stopped the
But your work is not finished! Keep playing and try to get to 100% Happiness, 100% Housing, and 100% Employment.
...or if you want to try out a new land, then refresh the page to play again.


Text:
Type:
SVG
CSS3
HTML5 Canvas
Effect:
zoomBig
zoomSmall
slideTop
slideBottom
slideLeft
slideRight
rotate
rotateBig
rotateSmall
rotateTop
rotateBottom
rotateLeft
rotateRight
flipX
flipY
fade
Animate:
Letters
Words
Lines
Easing:
Linear
Ease In
Ease Out
Ease In Out
Back In
Back Out
Elastic (SVG / Canvas)
Bounce (SVG / Canvas)
Delay:
ms
Duration:
ms
Font:
Carter One
Chango
Cutive
Droid Sans Mono
Damion
Love Ya Like A Sister
Podkova
Sarina
Stint Ultra Expanded
Letter Spacing:
px
Color:
Black
Gray
Light Gray
White
Green
Blue
None
Word Spacing:
px
Size:
pt
Outline:
Black
Gray
Light Gray
White
Green
Blue
None
Size:
px (SVG only)
Play Animation
Copy to Clipboard
Configure the parameters and tap the text to see the animation.
Copy to Clipboard:
Done


Congrats 2019 KMD NN election winners. Hoping u make more techno solid @KomodoPlatform. We the $KMD holder look upon u for ur dedication, rooting for u to win securing KMD every time it gets a hit. Thank u for your efforts in advance, n hope the top of you survive another...


Before Change
sleep_count = 0
print("Listening for messages on {}".format(subscription_path))
while sleep_count < duration:
time.sleep(1)
sleep_count = sleep_count + 1
def parse_command_line_args():
Parse command line arguments.
parser = argparse.ArgumentParser(description=(
"Google Cloud IoT Core MQTT binary transmission demo."))
After Change
// Set up a callback to acknowledge a message. This closes around an event
// so that it can signal that it is done and the main thread can continue.
job_done = threading.Event()
def callback(message):
global count
try:
count = count + 1
print("Received image {}:".format(count))
image_data = base64.b64decode(message.data)
with io.open(
file_pattern.format(prefix, count, extension), "wb") as f:
f.write(image_data)
message.ack()
// Signal to the main thread that we can exit.
job_done.set()
except binascii.Error:
message.ack() // To move forward if a message can"t be processed
subscriber.subscribe(subscription_path, callback=callback)
print("Listening for messages on {}".format(subscription_path))
finished = job_done.wait(timeout=timeout)
if not finished:
print("No event received before the timeout.")


LUIS VASCONCELLOS
usually found as @lfv89 across the internet,
also reachable at<EMAIL_ADDRESS>my resume is here.
thanks for the visit,
bye! :-)


Ultimate Tennis Statistics aims to become the ultimate tennis statistics destination for the die-hard tennis fans.
It tries to provide all kind of tennis statistics in the Open Era male tennis with simple yet effective web GUI.
If you have any suggestions for additional features or tweaks to the current features, please e-mail me at<EMAIL_ADDRESS>or log a GitHub issue.
Features
'GOAT' List - Best players of Open Era ranked by 'GOAT' points
Player Profile - Player information, tournament results, matches, season summary, timeline, rivalries, ranking, performance indicators and statistics with charts, 'GOAT' points breakdown and records
Head-to-Head - Head-to-head between two players with H2H matches, season summary, performance and statistics comparision, ranking, performance and statistics charts, 'GOAT' points breakdown and Hypothetical Matchup prediction based on Neural Network Match Prediction Algorithm
Heads-to-Heads - Heads-to-heads clusters among several players (i.e. among 'Big 4')
Greatest Rivalries - Explore greatest rivalries, overall or by season, tournament level, surface or round
Ranking Charts - Player ranking and ranking point charts (including Elo rating), compare players by constructing custom charts
Peak Elo Ratings - Peak Elo ratings list for comparing players in their peaks (overall and by surface)
Top Performers - Find top performers in both performance and pressure situations categories
Performance Charts - Performance charts for various performance categories, filtered by seasons
Statistics Leaders - Find statistics leaders in various statistics categories, including dominance and break points ratios
Statistics Charts - Statistics charts for various statistics categories, filtered by seasons and surface
Seasons Browser - Browse seasons and check season records, tournaments, rankings, performance, statistics and 'GOAT' points distribution among top players
Best Seasons - Find which are the best seasons of Open Era based on 'GOAT' points
Tournaments Browser - Browse all Open Era tournaments, see tournament draw, performance, statistics, historical winners and records
Data on which the statistics is based is from open source tennis data repository by Jeff Sackmann, with some corrections and additions where data is wrong or lacking.
Even with these corrections and additions, there are still small errors and data missing.
Most notably for many tournaments between 1968 and 1972, as well as full rankings between 1981 and 1983.
Masters tournament classification is per Wikipedia's Tennis Masters Series records and statistics.
This is not completely fair, as this classification starts from 1970 (there are no Masters tournaments in 1968 and 1969),
as well as classification from 1970 to 1978 is fuzzy and contradictory to the Wikipedia's Grand Prix Super Series.
Separation of ATP 500/Championship Series vs ATP 250/World Series for seasons 1990 and onwards is as per ATP.
For seasons before 1990, 11 tournaments per season with strongest participation based on player ranks are considered ATP 500 tournaments.
For seasons 1968 and 1969, in order to compensate lack of Tour Finals and Masters tournaments, 25 strongest tournaments per season are considered ATP 500 tournaments.
In addition, WCT Finals (1971-1989), Grand Slam Cup (1990-1999), Pepsi Grand Slam (1976-1981) and WCT Challenge Cup (1976-1980) are also considered as ATP 500.
Rankings before official ATP rankings started in 1973 season are estimated and as well still not complete.
A lot of content on this site is based on 'GOAT' formula, which is a formula to quantify tennis player achievements throughout their careers and to compare players from different eras.
'GOAT' formula is based on assigning 'GOAT' points to players for tournament results, ATP and Elo rankings and various important achievements.
For visual description of the 'GOAT' formula please click:
Loading...
Glossary
'GOAT' PointsTM - The points assigned to players for various tennis achievements, like winning or going deep into tournaments, ATP and Elo rankings, Big Wins, Head-to-head ratios, Grand Slam (career and calendar year), performance and statistics records.
Elo Rating System - The Elo rating is a method for calculating the relative skill levels of players in competitor-versus-competitor games such as chess or tennis. It is named after its creator Arpad Elo, a Hungarian-born American physics professor.
Points Dominance Ratio - [[#{stats.pointsDominanceRatio.title}]]
Games Dominance Ratio - [[#{stats.gamesDominanceRatio.title}]]
Break Points Ratio - [[#{stats.breakPointsRatio.title}]]
Over-Performing Ratio - [[#{stats.overPerformingRatio.title}]]


Reference id for references is not case sensitive, this intention fixes mismatched case between reference link or image and the reference definition.


Living in the land of Nod,
Trusting their fate to the hands of God,
They pass by so silently,
Tweedle Dum and Tweedle Dee.
Well, they're going to the country, they're gonna retire,
They're taking a streetcar named "Desire",
Looking at the window at the pecan pie,
Lotta things they'd like they would never buy.
Neither one gonna turn and run,
They're making a voyage to the sun.
"His Master's voice is calling me,"
Said Tweedle Dum to Tweedle Dee.
Tweedle Dee and Tweedle Dum,
All that and more and then some,
They walk among the stately trees,
They know the secrets of the breeze.
Tweedle Dum said to Tweedle Dee,
"Your presence is obnoxious to me."

Well, the rain beating down on my windowpane,
I got love for you and it's all in vain.
Brains in the pot, they're beginning to boil,
They're dripping with garlic and olive oil.
Tweedle Dee's on his hands and his knees,
Saying, "Throw me something, mister, please."
"What's good for you is good for me,"
Said Tweedle Dum to Tweedle Dee.
Well, they're living in a happy harmony,
Tweedle Dum and Tweedle Dee.
They're one day older and a dollar short,
They got a parade permit and a police escort.
They're lying low and they're making hay,
They seem determined to go all the way.
They run a brick and tile company,
Tweedle Dum and Tweedle Dee.
Well, a childish dream is a deathless need
And a noble truth is a sacred creed.
My pretty baby, she's looking around,
She's wearing a multi-thousand dollar gown.

"I've had too much of your company,"
Said Tweedle Dum to Tweedle Dee.
1
Throughout this song, Dylan pronounces "Tweedle" as "Tweed-lee".


Elegant
Wedding
3
Eric Rukundo
Interior Decorator
✔ booked:
120 times
👁 Viewed:
200 times today
📕 Posts:
3
Recently booked on
new
Name
Description
Close
Save


Jan. 28th - Feb. 1, 2015
Welcome to the newest and most modern hotel in Richmond, Indiana. Conveniently located right off I-70, 1 hour East of Indianapolis and only 30 minutes West of Dayton, Ohio. The Holiday Inn Richmond is the perfect choice for business or leisure travel. The welcome mat is always out for you in Richmond and our Holiday Inn hotel. With its rich history as the gateway to the west, you are sure to find something for all with attractions such as the Historic Depot District, Gaar House & Farm Museum, Hayes Arboretum, Richmond Art Museum, Civic Hall Performing Arts Center, Antique Shops, Madonna on the Trail and the Indiana Football Hall of Fame.
The Holiday Inn Richmond is the exclusive hotel partnered with the Richmond Meltdown.
Offering exclusive discounts for January 27th to February 1, 2015. Rate is $99.00 + tax for Kings and Double Queens.Call<PHONE_NUMBER> for details and reservations.


Hospitals
Fill Hospitals details
Click
Doctor Details
Fill Doctor details
Click
Medicine Details
Fill Medicine details
Click
Hospitals
Get All Hospital Details
Click
Doctors
Get All Doctor Details
Click
Medicine Details
Get All Medicine Details
Click


Instructions
Simple Text To Speech for listening.
-
Listen and figure out what he is saying.
-
Repeat: Repeat again.
-
Pass: Next.
-
Show: Show the text.
-
OK: No repeat again and next.
-
You can load text picking an item of library.
Also you can paste a new text in textarea and add a new item to library.


CartItemQuery
class CartItemQuery extends ModelCriteria
Base class that represents a query for the 'cart_item' table.
Methods
Initializes internal state of \Thelia\Model\Base\CartItemQuery object.
Returns a new ChildCartItemQuery object.
Find object by primary key.
Find objects by primary key
$objs = $c->findPks(array(12, 56, 832), $con);
Filter the query by primary key
Filter the query by a list of primary keys
Filter the query on the id column
Filter the query on the cart_id column
Filter the query on the product_id column
Filter the query on the quantity column
Filter the query on the productsaleelements_id column
Filter the query on the price column
Filter the query on the promo_price column
Filter the query on the priceendof_life column
Filter the query on the promo column
Filter the query on the created_at column
Filter the query on the updated_at column
Filter the query by a related \Thelia\Model\Cart object
Adds a JOIN clause to the query using the Cart relation
Use the Cart relation Cart object
Filter the query by a related \Thelia\Model\Product object
Adds a JOIN clause to the query using the Product relation
Use the Product relation Product object
Filter the query by a related \Thelia\Model\ProductSaleElements object
Adds a JOIN clause to the query using the ProductSaleElements relation
Use the ProductSaleElements relation ProductSaleElements object
Deletes all rows from the cart_item table.
Performs a DELETE on the database, given a ChildCartItem or Criteria object OR a primary key value.
Filter by the latest updated
Filter by the latest created
Order by update date desc
Order by update date asc
Order by create date desc
Order by create date asc
Order by the id column
Order by the cart_id column
Order by the product_id column
Order by the quantity column
Order by the productsaleelements_id column
Order by the price column
Order by the promo_price column
Order by the priceendof_life column
Order by the promo column
Order by the created_at column
Order by the updated_at column
Group by the id column
Group by the cart_id column
Group by the product_id column
Group by the quantity column
Group by the productsaleelements_id column
Group by the price column
Group by the promo_price column
Group by the priceendof_life column
Group by the promo column
Group by the created_at column
Group by the updated_at column
Adds a LEFT JOIN clause to the query
Adds a RIGHT JOIN clause to the query
Adds a INNER JOIN clause to the query
Adds a LEFT JOIN clause to the query using the Cart relation
Adds a RIGHT JOIN clause to the query using the Cart relation
Adds a INNER JOIN clause to the query using the Cart relation
Adds a LEFT JOIN clause to the query using the Product relation
Adds a RIGHT JOIN clause to the query using the Product relation
Adds a INNER JOIN clause to the query using the Product relation
Adds a LEFT JOIN clause to the query using the ProductSaleElements relation
Adds a RIGHT JOIN clause to the query using the ProductSaleElements relation
Adds a INNER JOIN clause to the query using the ProductSaleElements relation
Return the first ChildCartItem matching the query
Return the first ChildCartItem matching the query, or a new ChildCartItem object populated from the query conditions when no match is found
Return the first ChildCartItem filtered by the id column
Return the first ChildCartItem filtered by the cart_id column
Return the first ChildCartItem filtered by the product_id column
Return the first ChildCartItem filtered by the quantity column
Return the first ChildCartItem filtered by the productsaleelements_id column
Return the first ChildCartItem filtered by the price column
Return the first ChildCartItem filtered by the promo_price column
Return the first ChildCartItem filtered by the priceendof_life column
Return the first ChildCartItem filtered by the promo column
Return the first ChildCartItem filtered by the created_at column
Return the first ChildCartItem filtered by the updated_at column
Return ChildCartItem objects filtered by the id column
Return ChildCartItem objects filtered by the cart_id column
Return ChildCartItem objects filtered by the product_id column
Return ChildCartItem objects filtered by the quantity column
Return ChildCartItem objects filtered by the productsaleelements_id column
Return ChildCartItem objects filtered by the price column
Return ChildCartItem objects filtered by the promo_price column
Return ChildCartItem objects filtered by the priceendof_life column
Return ChildCartItem objects filtered by the promo column
Return ChildCartItem objects filtered by the created_at column
Return ChildCartItem objects filtered by the updated_at column
Details
at line 102
__construct(
string $dbName = 'thelia',
string $modelName = '\\Thelia\\Model\\CartItem',
string $modelAlias = null)
Initializes internal state of \Thelia\Model\Base\CartItemQuery object.
at line 115
static
CartItemQuery
create(
string $modelAlias = null,
Criteria $criteria = null)
Returns a new ChildCartItemQuery object.
at line 145
CartItem|array|mixed
findPk(
mixed $key,
ConnectionInterface $con = null)
Find object by primary key.
Propel uses the instance pool to skip the database if the object exists. Go fast if the query is untouched.
$obj = $c->findPk(12, $con);
at line 227
ObjectCollection|array|mixed
findPks(
array $keys,
ConnectionInterface $con = null)
Find objects by primary key
$objs = $c->findPks(array(12, 56, 832), $con);
at line 248
CartItemQuery
filterByPrimaryKey(
mixed $key)
Filter the query by primary key
at line 261
CartItemQuery
filterByPrimaryKeys(
array $keys)
Filter the query by a list of primary keys
at line 285
CartItemQuery
filterById(
mixed $id = null,
string $comparison = null)
Filter the query on the id column
Example usage:
$query->filterById(1234); // WHERE id = 1234
$query->filterById(array(12, 34)); // WHERE id IN (12, 34)
$query->filterById(array('min' => 12)); // WHERE id > 12
at line 328
CartItemQuery
filterByCartId(
mixed $cartId = null,
string $comparison = null)
Filter the query on the cart_id column
Example usage:
$query->filterByCartId(1234); // WHERE cartid = 1234
$query->filterByCartId(array(12, 34)); // WHERE cartid IN (12, 34)
$query->filterByCartId(array('min' => 12)); // WHERE cart_id > 12
at line 371
CartItemQuery
filterByProductId(
mixed $productId = null,
string $comparison = null)
Filter the query on the product_id column
Example usage:
$query->filterByProductId(1234); // WHERE productid = 1234
$query->filterByProductId(array(12, 34)); // WHERE productid IN (12, 34)
$query->filterByProductId(array('min' => 12)); // WHERE product_id > 12
at line 412
CartItemQuery
filterByQuantity(
mixed $quantity = null,
string $comparison = null)
Filter the query on the quantity column
Example usage:
$query->filterByQuantity(1234); // WHERE quantity = 1234
$query->filterByQuantity(array(12, 34)); // WHERE quantity IN (12, 34)
$query->filterByQuantity(array('min' => 12)); // WHERE quantity > 12
at line 455
CartItemQuery
filterByProductSaleElementsId(
mixed $productSaleElementsId = null,
string $comparison = null)
Filter the query on the productsaleelements_id column
Example usage:
$query->filterByProductSaleElementsId(1234); // WHERE productsaleelementsid = 1234
$query->filterByProductSaleElementsId(array(12, 34)); // WHERE productsaleelementsid IN (12, 34)
$query->filterByProductSaleElementsId(array('min' => 12)); // WHERE productsaleelements_id > 12
at line 496
CartItemQuery
filterByPrice(
mixed $price = null,
string $comparison = null)
Filter the query on the price column
Example usage:
$query->filterByPrice(1234); // WHERE price = 1234
$query->filterByPrice(array(12, 34)); // WHERE price IN (12, 34)
$query->filterByPrice(array('min' => 12)); // WHERE price > 12
at line 537
CartItemQuery
filterByPromoPrice(
mixed $promoPrice = null,
string $comparison = null)
Filter the query on the promo_price column
Example usage:
$query->filterByPromoPrice(1234); // WHERE promoprice = 1234
$query->filterByPromoPrice(array(12, 34)); // WHERE promoprice IN (12, 34)
$query->filterByPromoPrice(array('min' => 12)); // WHERE promo_price > 12
at line 580
CartItemQuery
filterByPriceEndOfLife(
mixed $priceEndOfLife = null,
string $comparison = null)
Filter the query on the priceendof_life column
Example usage:
$query->filterByPriceEndOfLife('2011-03-14'); // WHERE priceendoflife = '2011-03-14'
$query->filterByPriceEndOfLife('now'); // WHERE priceendoflife = '2011-03-14'
$query->filterByPriceEndOfLife(array('max' => 'yesterday')); // WHERE priceendof_life > '2011-03-13'
at line 621
CartItemQuery
filterByPromo(
mixed $promo = null,
string $comparison = null)
Filter the query on the promo column
Example usage:
$query->filterByPromo(1234); // WHERE promo = 1234
$query->filterByPromo(array(12, 34)); // WHERE promo IN (12, 34)
$query->filterByPromo(array('min' => 12)); // WHERE promo > 12
at line 664
CartItemQuery
filterByCreatedAt(
mixed $createdAt = null,
string $comparison = null)
Filter the query on the created_at column
Example usage:
$query->filterByCreatedAt('2011-03-14'); // WHERE createdat = '2011-03-14'
$query->filterByCreatedAt('now'); // WHERE createdat = '2011-03-14'
$query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
at line 707
CartItemQuery
filterByUpdatedAt(
mixed $updatedAt = null,
string $comparison = null)
Filter the query on the updated_at column
Example usage:
$query->filterByUpdatedAt('2011-03-14'); // WHERE updatedat = '2011-03-14'
$query->filterByUpdatedAt('now'); // WHERE updatedat = '2011-03-14'
$query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
at line 738
CartItemQuery
filterByCart(
Cart|ObjectCollection $cart,
string $comparison = null)
Filter the query by a related \Thelia\Model\Cart object
at line 763
CartItemQuery
joinCart(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Adds a JOIN clause to the query using the Cart relation
at line 798
CartQuery
useCartQuery(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Use the Cart relation Cart object
at line 813
CartItemQuery
filterByProduct(
Product|ObjectCollection $product,
string $comparison = null)
Filter the query by a related \Thelia\Model\Product object
at line 838
CartItemQuery
joinProduct(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Adds a JOIN clause to the query using the Product relation
at line 873
ProductQuery
useProductQuery(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Use the Product relation Product object
at line 888
CartItemQuery
filterByProductSaleElements(
ProductSaleElements|ObjectCollection $productSaleElements,
string $comparison = null)
Filter the query by a related \Thelia\Model\ProductSaleElements object
at line 913
CartItemQuery
joinProductSaleElements(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Adds a JOIN clause to the query using the ProductSaleElements relation
at line 948
ProductSaleElementsQuery
useProductSaleElementsQuery(
string $relationAlias = null,
string $joinType = Criteria::INNER_JOIN)
Use the ProductSaleElements relation ProductSaleElements object
at line 962
CartItemQuery
prune(
CartItem $cartItem = null)
Exclude object from result
at line 977
int
doDeleteAll(
ConnectionInterface $con = null)
Deletes all rows from the cart_item table.
at line 1014
int
delete(
ConnectionInterface $con = null)
Performs a DELETE on the database, given a ChildCartItem or Criteria object OR a primary key value.
at line 1055
CartItemQuery
recentlyUpdated(
int $nbDays = 7)
Filter by the latest updated
at line 1067
CartItemQuery
recentlyCreated(
int $nbDays = 7)
Filter by the latest created
at line 1077
CartItemQuery
lastUpdatedFirst()
Order by update date desc
at line 1087
CartItemQuery
firstUpdatedFirst()
Order by update date asc
at line 1097
CartItemQuery
lastCreatedFirst()
Order by create date desc
at line 1107
CartItemQuery
firstCreatedFirst()
Order by create date asc
at line 92
ChildCartItemQuery
orderById($order = Criteria::ASC)
Order by the id column
at line 92
ChildCartItemQuery
orderByCartId($order = Criteria::ASC)
Order by the cart_id column
at line 92
ChildCartItemQuery
orderByProductId($order = Criteria::ASC)
Order by the product_id column
at line 92
ChildCartItemQuery
orderByQuantity($order = Criteria::ASC)
Order by the quantity column
at line 92
ChildCartItemQuery
orderByProductSaleElementsId($order = Criteria::ASC)
Order by the productsaleelements_id column
at line 92
ChildCartItemQuery
orderByPrice($order = Criteria::ASC)
Order by the price column
at line 92
ChildCartItemQuery
orderByPromoPrice($order = Criteria::ASC)
Order by the promo_price column
at line 92
ChildCartItemQuery
orderByPriceEndOfLife($order = Criteria::ASC)
Order by the priceendof_life column
at line 92
ChildCartItemQuery
orderByPromo($order = Criteria::ASC)
Order by the promo column
at line 92
ChildCartItemQuery
orderByCreatedAt($order = Criteria::ASC)
Order by the created_at column
at line 92
ChildCartItemQuery
orderByUpdatedAt($order = Criteria::ASC)
Order by the updated_at column
at line 92
ChildCartItemQuery
groupById()
Group by the id column
at line 92
ChildCartItemQuery
groupByCartId()
Group by the cart_id column
at line 92
ChildCartItemQuery
groupByProductId()
Group by the product_id column
at line 92
ChildCartItemQuery
groupByQuantity()
Group by the quantity column
at line 92
ChildCartItemQuery
groupByProductSaleElementsId()
Group by the productsaleelements_id column
at line 92
ChildCartItemQuery
groupByPrice()
Group by the price column
at line 92
ChildCartItemQuery
groupByPromoPrice()
Group by the promo_price column
at line 92
ChildCartItemQuery
groupByPriceEndOfLife()
Group by the priceendof_life column
at line 92
ChildCartItemQuery
groupByPromo()
Group by the promo column
at line 92
ChildCartItemQuery
groupByCreatedAt()
Group by the created_at column
at line 92
ChildCartItemQuery
groupByUpdatedAt()
Group by the updated_at column
at line 92
ChildCartItemQuery
leftJoin($relation)
Adds a LEFT JOIN clause to the query
at line 92
ChildCartItemQuery
rightJoin($relation)
Adds a RIGHT JOIN clause to the query
at line 92
ChildCartItemQuery
innerJoin($relation)
Adds a INNER JOIN clause to the query
at line 92
ChildCartItemQuery
leftJoinCart($relationAlias = null)
Adds a LEFT JOIN clause to the query using the Cart relation
at line 92
ChildCartItemQuery
rightJoinCart($relationAlias = null)
Adds a RIGHT JOIN clause to the query using the Cart relation
at line 92
ChildCartItemQuery
innerJoinCart($relationAlias = null)
Adds a INNER JOIN clause to the query using the Cart relation
at line 92
ChildCartItemQuery
leftJoinProduct($relationAlias = null)
Adds a LEFT JOIN clause to the query using the Product relation
at line 92
ChildCartItemQuery
rightJoinProduct($relationAlias = null)
Adds a RIGHT JOIN clause to the query using the Product relation
at line 92
ChildCartItemQuery
innerJoinProduct($relationAlias = null)
Adds a INNER JOIN clause to the query using the Product relation
at line 92
ChildCartItemQuery
leftJoinProductSaleElements($relationAlias = null)
Adds a LEFT JOIN clause to the query using the ProductSaleElements relation
at line 92
ChildCartItemQuery
rightJoinProductSaleElements($relationAlias = null)
Adds a RIGHT JOIN clause to the query using the ProductSaleElements relation
at line 92
ChildCartItemQuery
innerJoinProductSaleElements($relationAlias = null)
Adds a INNER JOIN clause to the query using the ProductSaleElements relation
at line 92
ChildCartItem
findOne(
ConnectionInterface $con = null)
Return the first ChildCartItem matching the query
at line 92
ChildCartItem
findOneOrCreate(
ConnectionInterface $con = null)
Return the first ChildCartItem matching the query, or a new ChildCartItem object populated from the query conditions when no match is found
at line 92
ChildCartItem
findOneById(
int $id)
Return the first ChildCartItem filtered by the id column
at line 92
ChildCartItem
findOneByCartId(
int $cart_id)
Return the first ChildCartItem filtered by the cart_id column
at line 92
ChildCartItem
findOneByProductId(
int $product_id)
Return the first ChildCartItem filtered by the product_id column
at line 92
ChildCartItem
findOneByQuantity(
double $quantity)
Return the first ChildCartItem filtered by the quantity column
at line 92
ChildCartItem
findOneByProductSaleElementsId(
int $product_sale_elements_id)
Return the first ChildCartItem filtered by the productsaleelements_id column
at line 92
ChildCartItem
findOneByPrice(
double $price)
Return the first ChildCartItem filtered by the price column
at line 92
ChildCartItem
findOneByPromoPrice(
double $promo_price)
Return the first ChildCartItem filtered by the promo_price column
at line 92
ChildCartItem
findOneByPriceEndOfLife(
string $price_end_of_life)
Return the first ChildCartItem filtered by the priceendof_life column
at line 92
ChildCartItem
findOneByPromo(
int $promo)
Return the first ChildCartItem filtered by the promo column
at line 92
ChildCartItem
findOneByCreatedAt(
string $created_at)
Return the first ChildCartItem filtered by the created_at column
at line 92
ChildCartItem
findOneByUpdatedAt(
string $updated_at)
Return the first ChildCartItem filtered by the updated_at column
at line 92
array
findById(
int $id)
Return ChildCartItem objects filtered by the id column
at line 92
array
findByCartId(
int $cart_id)
Return ChildCartItem objects filtered by the cart_id column
at line 92
array
findByProductId(
int $product_id)
Return ChildCartItem objects filtered by the product_id column
at line 92
array
findByQuantity(
double $quantity)
Return ChildCartItem objects filtered by the quantity column
at line 92
array
findByProductSaleElementsId(
int $product_sale_elements_id)
Return ChildCartItem objects filtered by the productsaleelements_id column
at line 92
array
findByPrice(
double $price)
Return ChildCartItem objects filtered by the price column
at line 92
array
findByPromoPrice(
double $promo_price)
Return ChildCartItem objects filtered by the promo_price column
at line 92
array
findByPriceEndOfLife(
string $price_end_of_life)
Return ChildCartItem objects filtered by the priceendof_life column
at line 92
array
findByPromo(
int $promo)
Return ChildCartItem objects filtered by the promo column
at line 92
array
findByCreatedAt(
string $created_at)
Return ChildCartItem objects filtered by the created_at column
at line 92
array
findByUpdatedAt(
string $updated_at)
Return ChildCartItem objects filtered by the updated_at column


For the fig swirl: Melt butter over medium heat in a saucepan. Add brown sugar and stir to dissolve. Halve all of the figs and toss in saucepan with water and lemon juice. Cook over medium heat, stirring frequently, until you have a chunky-jammy mixture. Add salt with one or two stirs, set aside and let cool completely.
Ice cream: In a small pot over medium heat, combine milk, and granulated sugar until sugar is completely dissolved and the milk is just barely likewarm. Whisk is the egg yolks. Set mixture in the fridge and wait until the fig mixture is cooled.
Using tan ice cream machine, pour liquids into the frozen basin and process according to manufacturer instructions, i.e., let spin and thicken for 20 minutes before adding mascarpone, fig jam mixture, and the nuts. Continue to process for +/- 10 minutes. Pour semi-frozen mixture into a pyrex dish or glass tupperware. Freeze for at least two hours before serving.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/transfer.20between.20isomorphic.20types.html ---
Is there a way to transfer theorems between two isomorphic types (semi-)automatically? For example using transfer
? @Johannes Hölzl ?
In my case, I have row vectors (1xn matrices) and column vectors (nx1 matrices). Whether this makes sense or not is surely also up for discussion and you can tell me your opinion if you like.
Anyhow, I'd like to prove lemmas only for one of them and transfer them to the other via a bijection.
Search for transfer
in this chat...
Or transport
You will find lots of requests, headaches, pain, confusion
Mathematicians think its trivial, computer scientists think not.
People are trying to build things. Little progress so far.
The transfer
tactic exists. But there is no infrastructure.
Oh, right, I should have searched in the chat earlier. Thanks :-)
No worries! The more people are interested in this thing, the higher the chances we get a solution soon.
You are working in the Lean Forward project, right?
Having a powerful and easy-to-use transfer/transport system is a core feature if mathematicians are to use theorem provers...
I am actually part of the Matryoshka project, but I am also working in Amsterdam.
yes, that would be definitely good to have
That's a pretty realistic looking hologram that you sent to Pittsburgh!
Aah, too bad. I was thinking I could suggest you a topic :stuck_out_tongue_wink:
But it seems to work pretty well for has_add
and has_mul
, right?
It's not perfect
But it's much better than nothing
It's also used for integers somehow
Relating them to pairs of naturals
I think this is no longer true
since Lean 3.4.2
I thought they only moved that construction from core to mathlib
No, int is in core
https://github.com/leanprover/lean/commit/95fa4cfb0a8774570d67bb231c1ab088a94e12bb
So transfer is now in mathlib, and is no longer used to build int
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


--- title: Home ---
Welcome to my corner of the internet.
My name is Tim McGilchrist. I currently work as a Principal Software Engineer with Tarides.
I find functional programming interesting and effective for solving problems. Mostly I use OCaml and Haskell but have known Erlang, Elixir, Lisp and Standard ML at various times. My interests are compilers, distributed systems and operating systems. I give talks on these topics at user-groups and conferences. If you are interested in me speaking, let me know via email: timmcgil@gmail.com


Introduction
Welcome to the Simmons API! You can use our API to access Simmons API endpoints, which can get information on people, profiles, packages, etc. from our database.

OAuth and Client ID
sim.init({
'clientid': 'CLIENT_ID'
});
You will need to get an OAuth2 Client ID. Knock on Amol’s door and he will give you one.
After including simmons-api.js
in your application, you need to call sim.init()
method before you can start using the Simmons javascript API.
Make sure to replace
CLIENT_ID
with your Client ID.
Testing on your local machine
You can use the api from localhost
.
You need to use the client id as LOCAL_TEST_APPLICATION
You still need to knock on Amol’s door to get authorization to use the API on a non-localhost host.
You can run a local server on localhost
by running the command python -m SimpleHTTPServer 8000
from the directory where you want to server. Remember that there is CORS check for localhost.
Authentication
Login
sim.login();
Once you have called sim.init()
method, you can require users to login by calling sim.login()
. This function call redirect your application to the Simmons Authentication page where the user will be asked to login (automatically via certs or by username/password). After successful login, the the Simmons Authentication page will automatically redirect to the current page.
If the user was not able to successfully login, Simmons Authentication will show a 401 Forbidden page.
People
Get all people
sim.people.all(function (data) {
console.log('I just got a list of all residents! Here it is:');
console.log(data);
});
data
is list structured like this:
[
"...",
{
"...": "..."
},
{
"username": "ambhave",
"firstname": "Amol",
"lastname": "Bhave",
"title": "Whack",
"room": 337,
"year": "2017"
},
{
"...": "..."
},
"..."
]
To get a list of all residents, use the sim.people.all(success)
method. If the call was succeeds, the success
callback will be called with the parameter data
begin a list of all residents.
Get the profile of a specific person
Use the sim.people.get(username, success)
method to get the profile of a specific person. If the request succeeds, the success
callback will be called with data
containing the profile data of that user.
sim.people.get(username, function (data) {
console.log('Here is all the information for the username ' + username);
console.log(data);
});
data
is a dictionary structured like this:
{
"username": "ambhave",
"firstname": "Amol",
"lastname": "Bhave",
"title": "Whack",
"room": 337,
"year": "2017",
"home_city": "Shire,",
"home_state": "Kingdom of Arnor,",
"home_country": "Eriador",
"cellphone": "1234567890",
"homepage": "http://www.nyan.cat/",
"quote": "Three Rings for the Elven-kings is my quote.",
"type": "Undergraduate",
"email"<EMAIL_ADDRESS>}
Example
The following is an example HTML using the API.

All Residents (limited to 20):

Put this code in a .html file and run python -m SimpleHTTPServer 8000
, then goto http://localhost:8000/
and then click on your file.


Take a look at our sponsorship packages and email us at<EMAIL_ADDRESS>for more information.


|
Punk
Rock Song
(Bad Religion) |
|
Have
you been to the desert?
Have you walked with the dead? There's a hundred thousand children being killed for their bread And the figures don't lie they speak of human disease But we do what we want and we think what we please Have you lived the experience? Have you witnessed the plague? People making babies sometimes just to escape In this land of competition the compassion is gone Yet we ignore the needy and we keep pushing on We keep pushing on This is just a punk rock song Written for the people who can see something's wrong Like ants in a colony we do our share But there's so many other fuckin' insects out there And this is just a punk rock song (Like workers in a company we do our share but there's so many other fuckin' robots out there) Have you visited the quagmire?  The party conventions and the real politik The faces always different, the rhetoric the same But we swallow it, and we see nothing change Nothing has changed... 10 million dollars on a losing campaign 20 million starving and writhing in pain Big strong people unwilling to give Small in vision and perspective One in five kids below the poverty line One population runnin' out of time |


Ali Kasasbeh
Mohammed Alazzam
Mohammed Khasawneh
Doha yousf
Reem Alqurm
Contact Us
Email us and keep upto date with our latest news
Send


public abstract class BasicGame extends java.lang.Object implements Game, InputListener
| Constructor and Description |
|---|
BasicGame(java.lang.String title)
Create a new basic game
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
closeRequested()
Notification that a game close has been requested
|
void |
controllerButtonPressed(int controller,
int button)
Notification that a button control has been pressed on
the controller.
|
void |
controllerButtonReleased(int controller,
int button)
Notification that a button control has been released on
the controller.
|
void |
controllerDownPressed(int controller)
Notification that the down control has been pressed on
the controller.
|
void |
controllerDownReleased(int controller)
Notification that the down control has been released on
the controller.
|
void |
controllerLeftPressed(int controller)
Notification that the left control has been pressed on
the controller.
|
void |
controllerLeftReleased(int controller)
Notification that the left control has been released on
the controller.
|
void |
controllerRightPressed(int controller)
Notification that the right control has been pressed on
the controller.
|
void |
controllerRightReleased(int controller)
Notification that the right control has been released on
the controller.
|
void |
controllerUpPressed(int controller)
Notification that the up control has been pressed on
the controller.
|
void |
controllerUpReleased(int controller)
Notification that the up control has been released on
the controller.
|
java.lang.String |
getTitle()
Get the title of this game
|
void |
inputEnded()
Notification that all input events have been sent for this frame
|
void |
inputStarted()
Notification that input is about to be processed
|
boolean |
isAcceptingInput()
Check if this input listener is accepting input
|
void |
keyPressed(int key,
char c)
Notification that a key was pressed
|
void |
keyReleased(int key,
char c)
Notification that a key was released
|
void |
mouseClicked(int button,
int x,
int y,
int clickCount)
Notification that a mouse button was clicked.
|
void |
mouseDragged(int oldx,
int oldy,
int newx,
int newy)
Notification that mouse cursor was dragged
|
void |
mouseMoved(int oldx,
int oldy,
int newx,
int newy)
Notification that mouse cursor was moved
|
void |
mousePressed(int button,
int x,
int y)
Notification that a mouse button was pressed
|
void |
mouseReleased(int button,
int x,
int y)
Notification that a mouse button was released
|
void |
mouseWheelMoved(int change)
Notification that the mouse wheel position was updated
|
void |
setInput(Input input)
Set the input that events are being sent from
|
public BasicGame(java.lang.String title)
title
- The title for the gamepublic void setInput(Input input)
ControlledInputReciever
setInput
in interface ControlledInputReciever
input
- The input instance sending eventsControlledInputReciever.setInput(com.github.mathiewz.slick.Input)
public boolean closeRequested()
Game
closeRequested
in interface Game
Game.closeRequested()
public java.lang.String getTitle()
Game
getTitle
in interface Game
Game.getTitle()
public void keyPressed(int key, char c)
KeyListener
keyPressed
in interface KeyListener
key
- The key code that was pressed (@see com.github.mathiewz.slick.Input)c
- The character of the key that was pressedKeyListener.keyPressed(int, char)
public void keyReleased(int key, char c)
KeyListener
keyReleased
in interface KeyListener
key
- The key code that was released (@see com.github.mathiewz.slick.Input)c
- The character of the key that was releasedKeyListener.keyReleased(int, char)
public void mouseMoved(int oldx, int oldy, int newx, int newy)
MouseListener
mouseMoved
in interface MouseListener
oldx
- The old x position of the mouseoldy
- The old y position of the mousenewx
- The new x position of the mousenewy
- The new y position of the mouseMouseListener.mouseMoved(int, int, int, int)
public void mouseDragged(int oldx, int oldy, int newx, int newy)
MouseListener
mouseDragged
in interface MouseListener
oldx
- The old x position of the mouseoldy
- The old y position of the mousenewx
- The new x position of the mousenewy
- The new y position of the mouseMouseListener.mouseDragged(int, int, int, int)
public void mouseClicked(int button, int x, int y, int clickCount)
MouseListener
mouseClicked
in interface MouseListener
button
- The index of the button (starting at 0)x
- The x position of the mouse when the button was pressedy
- The y position of the mouse when the button was pressedclickCount
- The number of times the button was clickedMouseListener.mouseClicked(int, int, int, int)
public void mousePressed(int button, int x, int y)
MouseListener
mousePressed
in interface MouseListener
button
- The index of the button (starting at 0)x
- The x position of the mouse when the button was pressedy
- The y position of the mouse when the button was pressedMouseListener.mousePressed(int, int, int)
public void controllerButtonPressed(int controller, int button)
ControllerListener
controllerButtonPressed
in interface ControllerListener
controller
- The index of the controller on which the control
was pressed.button
- The index of the button pressed (starting at 1)ControllerListener.controllerButtonPressed(int, int)
public void controllerButtonReleased(int controller, int button)
ControllerListener
controllerButtonReleased
in interface ControllerListener
controller
- The index of the controller on which the control
was released.button
- The index of the button released (starting at 1)ControllerListener.controllerButtonReleased(int, int)
public void controllerDownPressed(int controller)
ControllerListener
controllerDownPressed
in interface ControllerListener
controller
- The index of the controller on which the control
was pressed.ControllerListener.controllerDownPressed(int)
public void controllerDownReleased(int controller)
ControllerListener
controllerDownReleased
in interface ControllerListener
controller
- The index of the controller on which the control
was released.ControllerListener.controllerDownReleased(int)
public void controllerLeftPressed(int controller)
ControllerListener
controllerLeftPressed
in interface ControllerListener
controller
- The index of the controller on which the control
was pressed.ControllerListener.controllerLeftPressed(int)
public void controllerLeftReleased(int controller)
ControllerListener
controllerLeftReleased
in interface ControllerListener
controller
- The index of the controller on which the control
was released.ControllerListener.controllerLeftReleased(int)
public void controllerRightPressed(int controller)
ControllerListener
controllerRightPressed
in interface ControllerListener
controller
- The index of the controller on which the control
was pressed.ControllerListener.controllerRightPressed(int)
public void controllerRightReleased(int controller)
ControllerListener
controllerRightReleased
in interface ControllerListener
controller
- The index of the controller on which the control
was released.ControllerListener.controllerRightReleased(int)
public void controllerUpPressed(int controller)
ControllerListener
controllerUpPressed
in interface ControllerListener
controller
- The index of the controller on which the control
was pressed.ControllerListener.controllerUpPressed(int)
public void controllerUpReleased(int controller)
ControllerListener
controllerUpReleased
in interface ControllerListener
controller
- The index of the controller on which the control
was released.ControllerListener.controllerUpReleased(int)
public void mouseReleased(int button, int x, int y)
MouseListener
mouseReleased
in interface MouseListener
button
- The index of the button (starting at 0)x
- The x position of the mouse when the button was releasedy
- The y position of the mouse when the button was releasedMouseListener.mouseReleased(int, int, int)
public void mouseWheelMoved(int change)
MouseListener
mouseWheelMoved
in interface MouseListener
change
- The amount of the wheel has movedMouseListener.mouseWheelMoved(int)
public boolean isAcceptingInput()
ControlledInputReciever
isAcceptingInput
in interface ControlledInputReciever
ControlledInputReciever.isAcceptingInput()
public void inputEnded()
ControlledInputReciever
inputEnded
in interface ControlledInputReciever
ControlledInputReciever.inputEnded()
public void inputStarted()
ControlledInputReciever
inputStarted
in interface ControlledInputReciever
ControlledInputReciever.inputStarted()


 To be a Berserker, you must first pass the test of our Berserker Guild.
You show promise, but I think you need additional training before you will be ready to undertake this test.
(This quest may only be undertaken by a Trooper class character who is level 39 or above.)


Start Options:
Start at Remote URL:
Open Maximized:
Start at login:
Start hidden:
If changes occur, the application will restart automatically


2017
Q3 |
Q4 |
2018
Q1 |
Q2 |
Q3 |
Q4 |
2019
Q1 |
Q2 |
Our quarterly reports provide an overview of recent project activity and a glimpse at our current financials. Future updates will be published following the completion of each quarter.


migraine impact patients burden Headache headache higher reported cost Prevalence studies life lost compared disability family study themes interictal disorders results Lipton activities main reduced {border-style Pain work work-related Raggi px;} #ffffff;} ./j.-...x costs direct disease time Neurol QoL prevalence ./s--- Global Migraine review Leonardi household leisure Steiner i.e. showed workdays/ M Burden Patients children data different episodic migraine, pMOH Stovner chronic health migraine: narrative worse .%; Italy difficulties fact, indirect lower papers questionnaire tasks Buse Grazzi Interictal addressed dealing overall productivity quality report research terms total D'Amico Impact Sci addressing daily disorders, healthcare increased limitations people px; school selected shown {font-family Cost Disability Disease D’Amico Health Life Reed Stewart TTH analysis and, associated brain common connected costs. font-size issue migraine. relevant (i.e. GBD Katsarava Res activities. activities; address assessment average burden, care consistently days double; fact frequency global headaches impact, included literature neurological new paper period published recent results. survey systematic women workdays (e.g. .%, Brazil Bussone Curr Eurolight European Finally, HEADWORK MOH Med Opin Quality Varon YLDs Years activities, articles aspects border-color border-width conditions countries economic future general, half importance like majority missed non-headache particular, publications referred scale search shows solid; studies, topics used way {font-style {font-weight years ./-- American Andrée Cephalalgia Chronic Curone Eur Family Fig. France Giovannetti HIT- Italian Karnataka Lampl Lantéri-Minet Linde MIDAS Main Serrano Tassorelli Ware aim attention based bold burdensome clinical comorbidities concept concepts connection controls core costs, courier; covering developed e.g. em; estimated frequency. instruments labor life, likely meaning million ones partners phases policy population population-based presence primary productivity, project provide pt;} publication reporting second severity status thematic this, underlying understanding work, €/year €/year,


During the blitzkrieg, as tanks and planes charged across the battlefield like a blackleg, many soldiers were reduced to begging for their lives. [G|D]
The hound was an adept hunter, with strong and agile forelegs that enabled it to swiftly traverse any terrain, and a bootleg-shaped dogleg that made cornering its prey a cinch. [G|D]
As the hunters trudged through the murky muskeg, their legs grew weary from carrying the heavy keg for miles, but their determination to get home with a full load kept them going. [G|D]
The family garden was a sight to behold - an array of vibrant veggies and fragrant herbs, each neatly labeled with its own peg, from savory tomatoes and squashes to sweet corn and nutmeg. [G|D]


Río volga shortening services
URLs can be long like a river. We shorten them.
Short me!
Last page
Show statistics
Click ID
Created
Referer
Browser
Platform
IP


Unblocked Tweeting.
#UnblockedTweeting
An Android app powered by Lantern that gives direct unblocked access to Twitter from anywhere in the world.
FireTweet is an Android app powered by Lantern that gives direct unblocked access to Twitter from anywhere in the world.
Features include:
FREE and available on Android
No Ads
Easy-to-use: no extra set-up required
Gives the full experience of Twitter to users in regions where Twitter is blocked
Automatically integrates with Twitter, use an existing account or create a new one
All HTTP traffic is routed through a distributed network of direct proxies


--- layout: post title: Welcome to the new OData.org site date: 2014-02-20 06:46:59.000000000 +08:00 categories: - Site announcement tags: [] status: publish type: post published: true author: Mark Stafford ---
Welcome to the new OData.org site. It's now more concise and is easier for you to find out the most important contents about OData. If you have any advice or suggestion about this site or about OData, please feel free to contact us using the contact form. We will be more than happy to see your feedback and it will be very valued.


The Apprentice shock as Thomas offers to take Pamela's place in the boardroom
The Apprentice aired a shock twist during the boardroom scenes in the latest episode as Thomas Skinner put himself in the firing line.
Thomas offered to take Pamela Laird’s place in the boardroom when project manager Ryan-Mark Parsons chose her and Marianne Rawlins to bring back.
Pamela hit back at Ryan-Mark for choosing her, insisting that she had actually ‘saved’ the task, which saw the teams put on a corporate away day.
Ryan-Mark’s team lost by around £15 due to one client demanding a refund as there were no gluten-free options available at the event.
Advertisement Advertisement
Sat before Lord Sugar, he was asked to pick two candidates to bring back.
He chose Marianne and Pamela, saying he would ‘justify’ why he chose Pamela later on.
Thomas said: ‘I don’t think you should be bringing Pamela back at all.’
‘I think you should rethink your decision Ryan-Mark I saved this task,’ Pamela added.
When Lord Sugar asked Thomas if he wanted to take her place, he agreed: ‘I’m being serious because I won’t have it.’
‘She should not be coming back in this room 100 per cent.’
Ryan-Mark gave in, saying: ‘Okay, well on that basis I’ll bring Thomas back if he wants to come back so desperately. I wouldn’t worry it’s fine.’
Somehow Thomas managed to escape being fired yet again, despite being on the losing team for seven out of the eight tasks so far this series.
In the end Ryan-Mark was fired, and the former candidate believes Thomas’ last minute act of gallantry saved his skin.
He told Metro.co.uk: ‘If you look at Thomas, the only reason he was saved was because he decided to come back to the boardroom, I love Thomas but he has lost seven out of eight tasks and it was a disaster on his side.
‘Marianne is a naïve person on task, who runs around in her own universe.
‘And on task, she would be all over the place, she would be erratic and when it came to the boardroom she would attack you and be very condescending and patronising. She would really go for you.’
Advertisement Advertisement
The Apprentice airs Wednesdays at 9pm on BBC One.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


Tycho/Ptolemy (typt) Users Guides
Below we discuss some of the Users Guides to the Tycho/Ptolemy interface.
Contents
Tycho Home Page
Copyright © 1996-1998, The Regents of the University of California.
All rights reserved.
Last updated: 05/13/98
comments to: cxh@eecs.berkeley.edu