@Generated(value="com.github.davidmoten:openapi-codegen-runtime:0.1.2-SNAPSHOT")
public interface Service
extends org.davidmoten.oa3.codegen.spring.runtime.ErrorHandler
EGC API
Sending a new MSI is two-phase (create then send). This is because the msiId value is a critical piece of information for the client (to be able to check status and/or cancel) and the API design must ensure that the client is safely in possession of msiID before a send happens. If the method was one phase then there would be no guarantee that the msiID was received (a failure could happen in any link in the return snetworking chain like a router, firewall, proxy server or indeed a problem at the client application end that prevented persistence of the msiID for later use). Moreover, if the method was one phase and a failure in the network chain occurred then not only would an orphan MSI be sent by the provider but the client would not have knowledge that the MSI had been successfully queued for sending and would naturally retry the send (multiple times even) and we end up with the same MSI being sent 2+ times.
To further clarify the problem being solved by a two phase send here is a discussion of the delivery guarantees of HTTP responses.
Note that a one phase call where the client generated a new unique id (using a UUID for instance) is a possible solution but is less desirable because it introduces a problematic edge case where the client accidentally uses the same id more than once. If two different messages are sent with the same id (concurrently even) then the service should ensure that only one message is accepted and that the service consumer is aware that the other message failed. To do this demands coordination with a single transactional resource (like a relational database) which also demands that that resource is highly available (relational databases are often not great at that during upgrade cycles). There are ways to get high availability (highly available cloud services like DynamoDB and many more can offer conditional updates) but there is a much simpler way with two-phase.
If instead of the one-phase call the server creates the msiId and communicates it to the client then the server side can potentially be scaled with ease if the msiID is a UUID for instance (which is effectively unique without coordination with other nodes).
For example, a highly available and scalable service could be constructed in AWS cloud using API Gateway with Lambda integrations that for the create message and send actions does this
A separate component then actions items on the queue(s). When both the send and create messages have been read then an actual send can take place. What is clear from this design is that many concurrent nodes could be receiving messages without coordinating with a central node/service to ensure id uniqueness.
Note also that to support two-phase send the status value of
CREATED
is included.
The List MSIs action uses a paginated response as the number of MSIs in a response can get large. Pagination can reduce server overhead and improve response times. Client-driven pagination is where the client specifies an offset (skip) field and that number of rows is skipped by the server to return the next page. This can be inefficient for the server-side (see discussion) and it is preferred to use server-driven pagination which is where each page returned also includes a continuation token to be included in the next page call. The nice thing about this approach is that the server side can simply return an offset in the continuation token if desired but we enable more efficient techniques if wanted later.
Early versions of this API have suggested the inclusion of a
NationalSASId
field in the created MSI with the purpose of allowing
a client to correlate an MSI with its internal data.
This field is a convenience only and thus theoretically should not be included. A client should manage its correlations itself by storing the unique msiId returned by the service paired with its internal identifiers.
If something is required then it should be labelled something
like tag
and have arbitrary values so that the client can use it for
anything. Labelling it NationalSASId
suggests more meaning to the
field than it may have. TODO confirm.
Note that the api below allows for float precision locations for geographic circles and rectangles. An implementation of this API may choose to use the location with reduced precision (for example lat longs rounded to nearest integer).
A PUT to an /msi/[id}
path ]with content like {"isCancelled":true}
has been suggested as a way of cancelling a broadcast. This can be
achieved in a much simpler way with the DELETE verb without content
(a cancel action can be considered as a logical delete in the context
of this API). A cancelled broadcast cannot be changed in status but
can be queried.
Initial proposals for the API suggested a partial abstraction of C-Codes. In particular Priority, MsiType and AreaType were abstracted. This API demonstrates a full abstraction of C-Codes. It is equivalent to C-Codes but has an easier to read and process representation and the mapping to C-Codes then becomes a server-side implementation detail. By using the data modelling constructs of OpenAPI v3 and JSON Schema users can generate code for their API-consuming application that imposes compile-time checking (varies on language) instead of experiencing runtime failures.
TODO is there a requirement for full explicit C-Code support (zero abstraction)?
Initial proposals for this API included a re-authenticate method whereby a new token was returned if a currently valid token was supplied. This is a security hole in that anyone in possession of one valid token (but not the username and password) can stay authenticated forever. In the same vein, a sensible limit on validity duration of a token should be imposed so that a leaked token cannot be used for long. Given the likely usage of the API (in terms of the number of calls made in a time interval by a client) there should be no significant performance penalty forcing a refresh of the token each hour (or even less).
Bearer authentication is used (RFC6750).
Bearer authentication is carried in the Authorization
request header in this format:
Authorization: Bearer BASE64_ENCODED_TOKEN
TODO The encoded content of the token is not defined (for example, JWT could be used) but is left to the implementer. Should the authentication flow follow an existing standard like OAuth 2.0?
Previous API drafts used the field names startDate
and endDate
for an MSI.
Given that those fields refer to timestamps not just dates the names startTime
and endTime
have been used.
Iridium can at times provide receive and read acknowledgements. TODO get better documentation of the capability and a proper specification for their response from a list acks call.
There may be use cases for the following additional fields on an MSI:
A user could record in their own systems when they created or cancelled a broadcast but it might help problem diagnosis if that information was together.
TODO confirm
It would also be useful in some circumstances for users to know exactly when a message was broadcast by satellite. Although messages may be scheduled for immediate or later broadcast there may be significant delays till the broadcast occurs and the user should be able to see the actual broadcast times.
TODO discuss with satellite providers
| Modifier and Type | Method and Description |
|---|---|
default void |
cancelMsi(String id)
This is a logical delete of a broadcast in that it
prevents future broadcasts happening for this msiId
(be it a single or repeating broadcast).
|
default MsiId |
createMsi(MsiContent requestBody)
Submits message content and returns a unique id (across all
users) that is to be used in the send method.
|
default Msi |
getMsi(String id)
Returns the details of an MSI broadcast using the unique MSI identifier.
|
default GetMsis200Response |
getMsis(Optional<OffsetDateTime> startTimeMin,
boolean startTimeMinInclusive,
Optional<OffsetDateTime> startTimeMax,
boolean startTimeMaxInclusive,
Optional<OffsetDateTime> endTimeMin,
Optional<Boolean> endTimeMinInclusive,
Optional<OffsetDateTime> endTimeMax,
boolean endTimeMaxInclusive,
int limit,
Optional<List<String>> status,
Optional<String> broadcastType,
Optional<String> continuationToken)
Returns Maritime Safety Information broadcasts requested to
be sent by the user.
|
default Status |
getMsiStatus(String id)
Returns the status of an MSI broadcast using the unique MSI identifier.
|
default AuthenticationResponse |
getToken(AuthenticationRequestBody requestBody)
Obtains a token that will be passed in a request header to calls
to other paths on this API for authentication and authorization
purposes.
|
default void |
sendMsi(String id)
Requests that an existing unsent MSI be sent.
|
default AuthenticationResponse getToken(AuthenticationRequestBody requestBody) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Obtains a token that will be passed in a request header to calls to other paths on this API for authentication and authorization purposes.
[status=200, application/json] --> AuthenticationResponse
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=500, application/json] --> Error
requestBody
- requestBodyorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
default GetMsis200Response getMsis(Optional<OffsetDateTime> startTimeMin, boolean startTimeMinInclusive, Optional<OffsetDateTime> startTimeMax, boolean startTimeMaxInclusive, Optional<OffsetDateTime> endTimeMin, Optional<Boolean> endTimeMinInclusive, Optional<OffsetDateTime> endTimeMax, boolean endTimeMaxInclusive, int limit, Optional<List<String>> status, Optional<String> broadcastType, Optional<String> continuationToken) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Returns Maritime Safety Information broadcasts requested to be sent by the user.
Note that none of the parameters are required. If no parameters are supplied then all MSIs for the current user will be returned (paged).
The limit
field may not be honoured exactly by the server
side (in that it might exceed a maximum limit of the server).
The results of this query may return in any order and that order may vary in repeated calls (for example, the returned MSIs may not be ordered by timestamp). If the client requires an ordering by time then all pages should be requested and then sorted client-side. TODO confirm expectations
[status=200, application/json] --> GetMsis200Response
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=500, application/json] --> Error
endTimeMaxInclusive
- If endTimeMaxInclusive is true (the default value if not specified)
then filters MSIs on endTime <= endTimeMax.
If endTimeMaxInclusive is false then filters MSIs
on endTime < endTimeMax.
If endTimeMaxInclusive not specified then has no effect.endTimeMax
- If endTimeMaxInclusive is true (the default value if not specified)
then filters MSIs on endTime <= endTimeMax.
If endTimeMaxInclusive is false then filters MSIs
on endTime < endTimeMax.endTimeMin
- If endTimeMinInclusive is true (the default value if not specified)
then filters MSIs on startTime >= startTimeMin.
If startTimeMinInclusive is false then filters MSIs
on startTime > startTimeMin.limit
- Requests that at most `limit` MSIs are returned in the call.
The server may cap the requested `limit` (fewer items may be
returned). To request the next page available include the
returned `continuationToken` in the next call. If there are
no more items available then the response will not contain
a `continuationToken`.startTimeMin
- If startTimeMinInclusive is true (the default value if not specified)
then filters MSIs on startTime >= startTimeMin.
If startTimeMinInclusive is false then filters MSIs
on startTime > startTimeMin.startTimeMinInclusive
- If startTimeMinInclusive is true (the default value if not specified)
then filters MSIs on startTime >= startTimeMin.
If startTimeMinInclusive is false then filters MSIs
on startTime > startTimeMin.
If startTimeMinInclusive not specified then has no effect.endTimeMinInclusive
- If endTimeMinInclusive is true (the default value if not specified)
then filters MSIs on endTime >= endTimeMin.
If endTimeMinInclusive is false then filters MSIs
on endTime > endTimeMin.
If endTimeMinInclusive not specified then has no effect.broadcastType
- the type of broadcaststartTimeMax
- If startTimeMaxInclusive is true (the default value if not specified)
then filters MSIs on startTime <= startTimeMax.
If startTimeMaxInclusive is false then filters MSIs
on startTime < startTimeMax.continuationToken
- Describes to the server the starting point of
the next page of results and is obtained from
the current page. May contain an offset if desired
but is at the discretion of implementer. Note that
it is possible that a call specifying a continuation
token may return en empty list (but an empty list return
should not have a continuation token on it so at
that point paging would stop).status
- Only MSIs that have a status in the given list
are returned. If the list is empty (or the parameter
is not present) then no filtering on status occurs.
TODO** support multi-status filtering or just one?startTimeMaxInclusive
- If startTimeMaxInclusive is true (the default value if not specified)
then filters MSIs on startTime <= startTimeMax.
If startTimeMaxInclusive is false then filters MSIs
on startTime < startTimeMax.
If startTimeMaxInclusive not specified then has no effect.org.davidmoten.oa3.codegen.spring.runtime.ServiceException
default MsiId createMsi(MsiContent requestBody) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Submits message content and returns a unique id (across all users) that is to be used in the send method. It is ok for a message to never be sent but the provider should have the freedom to clean up (delete) unsent messages after some reasonable period or after more than N unsent messages are created. (TODO ask providers what is reasonable minimum period and maximum number of unsent messages so it can be documented here).
[status=201, application/json] --> MsiId
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=500, application/json] --> Error
requestBody
- requestBodyorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
default Msi getMsi(String id) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Returns the details of an MSI broadcast using the unique MSI identifier.
[status=200, application/json] --> Msi
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=404, application/json] --> Error
[status=500, application/json] --> Error
id
- unique msi identifierorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
default void sendMsi(String id) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Requests that an existing unsent MSI be sent. If the MSI has already been sent or the MSI has been cancelled then nothing occurs (this method is idempotent).
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=404, application/json] --> Error
[status=500, application/json] --> Error
id
- unique msi identifierorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
default void cancelMsi(String id) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
This is a logical delete of a broadcast in that it prevents future broadcasts happening for this msiId (be it a single or repeating broadcast). Once cancelled an MSI cannot be resent. However, the broadcast details are still available to be queried.
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=404, application/json] --> Error
[status=500, application/json] --> Error
id
- unique msi identifierorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
default Status getMsiStatus(String id) throws org.davidmoten.oa3.codegen.spring.runtime.ServiceException
Returns the status of an MSI broadcast using the unique MSI identifier.
[status=200, application/json] --> Status
[status=400, application/json] --> Error
[status=401, application/json] --> Error
[status=403, application/json] --> Error
[status=404, application/json] --> Error
[status=500, application/json] --> Error
id
- unique msi identifierorg.davidmoten.oa3.codegen.spring.runtime.ServiceException
Copyright © 2023. All rights reserved.


Mailbiz
Homologação
Formulário normal
Name
Email
Comment
Development Languages...
HTML
Javascript
CSS
How did you hear...
Retail
Phone Call
Website
City
Seattle
Acre
Enviar


Many data sets consist of results of repeated random trials, and therefore many outcome spaces consist of sequences. An outcome space representing two tosses of a coin is
$$ \Omega = \{ \text{HH, HT, TH, TT} \} $$If you were tossing 10 times, the outcome space would consist of the $2^{10}$ sequences of 10 elements where each element is H or T. The outcomes are a pain to list by hand, but computers are good at saving us that kind of pain.
The product of two sets $A$ and $B$ is the set of all pairs $(a, b)$ where $a \in A$ and $b \in B$. This concept is exactly what we need to describe spaces representing multiple trials.
For example, the space representing the outcome of one toss of a coin is $ \Omega_1 = \{ \text{H, T}\}$. The product of $\Omega_1$ with itself is the set of pairs (H, H), (H, T), (T, H) and (T, T), which you will recognize as the outcomes of two tosses of a coin. The product of this new space and $\Omega_1$ is the space representing three tosses. And so on.
The Python module itertools
contains a function product
that constructs product spaces. Let's import it.
from itertools import product
To see how product
works, we will start with the outcomes of one toss of a coin. We are creating an array using make_array
but you could use any other way of creating an array or list.
one_toss = make_array('H', 'T')
To use product
, we have to specify the base space, the number of repetitions, and then covert the result to a list.
two_tosses = list(product(one_toss, repeat=2))
two_tosses
For three tosses, just change the number of repetitions:
three_tosses = list(product(one_toss, repeat=3))
three_tosses
A probability space is an outcome space accompanied by the probabilities of all the outcomes. If you assume all eight outcomes of three tosses are equally likely, the probabilities are all 1/8:
three_toss_probs = (1/8)*np.ones(8)
The corresponding probability space:
three_toss_space = Table().with_columns(
'omega', three_tosses,
'P(omega)', three_toss_probs
)
three_toss_space
Product spaces get large very quickly. If you roll a die 5 times, there are almost 8,000 possible outcomes:
6**5
But we have product
so we can still list them all!  If that seems artificial, be patient for a moment and you'll soon see why it's interesting.
The sum of the rolls is a numerical function on the outcome space $\Omega$ of five rolls. The sum is thus a random variable. Let's call it $S$. Then, formally, $$ S: \Omega \rightarrow \{ 5, 6, \ldots, 30 \} $$ The range of $S$ is the integers 5 through 30, because each die shows at least one and at most six spots. We can also use the equivalent notation
$$ \Omega \stackrel{S}{\rightarrow} \{ 5, 6, \ldots, 30 \} $$From a computational perspective, the elements of $\Omega$ are in the column omega
of five_roll_space
. Let's apply this function and create a larger table.
five_rolls_sum = Table().with_columns(
'omega', five_rolls,
'S(omega)', five_roll_space.apply(sum, 'omega'),
'P(omega)', five_roll_probs
)
five_rolls_sum
We now have every possible outcome of five rolls of a die, along with its total number of spots. You can see that the first row of the table shows the smallest possible number of spots, corresponding to all the rolls showing 1 spot. The 7776th row shows the largest:
five_rolls_sum.take(7775)
All the other values of $S$ are between these two extremes.
A random variable is a numerical function on $\Omega$. Therefore by composition, a numerical function of a random variable is also a random variable.
For example, $S^2$ is a random variable, calculated as follows:
$$ S^2(\omega) = \big{(} S(\omega)\big{)}^2 $$Thus for example $S^2(\text{[6 6 6 6 6]}) = 30^2 = 900$.
From the table five_rolls_sum
it is hard to tell how many rows show a sum of 6, or 10, or any other value. To better understand the properties of $S$, we have to organize the information in five_rolls_sum
.
For any subset $A$ of the range of $S$, define the event $\{S \in A\}$ as
$$ \{S \in A \} = \{\omega: S(\omega) \in A \} $$That is, $\{ S \in A\}$ is the collection of all $\omega$ for which $S(\omega)$ is in $A$.
If that definition looks unfriendly, try it out in a special case. Take $A = \{5, 30\}$. Then $\{S \in A\}$ if and only if either all the rolls show 1 spot or all the rolls show 6 spots. So $$ \{S \in A\} = \{\text{[1 1 1 1 1], [6 6 6 6 6]}\} $$
It is natural to ask about the chance the sum is a particular value, say 10. That's not easy to read off the table, but we can access the corresponding rows:
five_rolls_sum.where('S(omega)', are.equal_to(10))
There are 126 values of $\omega$ for which $S(\omega) = 10$. Since all the $\omega$ are equally likely, the chance that $S$ has the value 10 is 126/7776.
We are informal with notation and write $\{ S = 10 \}$ instead of $\{ S \in \{10\} \}$: $$ P(S = 10) = \frac{126}{7776} = 1.62\% $$


- getBase() - Method in class dk.kb.mermeid.filter.FilterUtilityMethods
-
Get the databaes, i.e., the eXist collection
- getConstants() - Method in class dk.kb.mermeid.filter.Configuration
-
- getId() - Method in class dk.kb.mermeid.filter.IdGenerator
-
Here we calculate the ID as a java.lang.Long, and return it as a string
- getInstance() - Static method in class dk.kb.mermeid.filter.Configuration
-
We return ourselves as the instance
- getInstance() - Static method in class dk.kb.mermeid.filter.IdGenerator
-
We return ourselves to whom it might concern
- getServletConfig() - Method in class dk.kb.mermeid.filter.HttpFilter
-
This one is used by the servlet container.
- getUser() - Method in class dk.kb.mermeid.filter.FilterUtilityMethods
-
An authenticated user's UID can be read from the HTTP header.


This sample shows how to send a coupon to your users who have just purchased something. For instance: 10% off on your next purchase!
See file functions/index.js for the trigger and the FCM code.
The function assumes that you are setting the Firebase Analytics User ID
to be the same as the Firebase Auth uid using the setUserId API. Also it
is assumed that the FCM Device Tokens need to be saved in the Firebase
Realtime Database under /users/$uid/tokens
.
The dependencies are listed in functions/package.json.
The function triggers on changes to in_app_purchase
Firebase
Analytics events. For other automatically logged events see:
https://support.google.com/firebase/answer/6317485
This sample can be tested on your Android and iOS app. To test it out:
firebase use --add
then select your projec tin the list.
firebase deploy
in_app_purchase
event (somehow).


--- layout: post title: Fluent Interfaces in Coffeescript date: 2013-07-30 14:30:39.000000000 -05:00 categories: - nodejs tags: - coffeescript status: publish type: post published: true author: Adam N England excerpt:
We've all seen them - builder patterns that make object construction clean and readable.
person().named('Bob').withSpouse('Alice').bornOn('01-26-1982').build()
I used to do these all the time in Java (we called them fluent interfaces), and I just realized today that I had no idea how to do this style in Coffeescript. Well, lets remedy that.
---We've all seen them - builder patterns that make object construction clean and readable.
person().named('Bob').withSpouse('Alice').bornOn('01-26-1982').build()
I used to do these all the time in Java (we called them fluent interfaces), and I just realized today that I had no idea how to do this style in Coffeescript. Well, lets remedy that.
To get started, I'm going to follow the basic pattern I've followed in Java. Since CoffeeScript provides native class functionality, its a pretty simple clone.
{% highlight coffeescript linenos%} class Person named: (name) -> @name = name @ withSpouse: (spouse) -> @spouse = spouse @ bornOn: (dob) -> @dob = dob @ build : -> return { name: @name spouse: @spouse dob: @dob } console.log new Person().named('Adam').withSpouse('Rachel').build() {% endhighlight %}But hey, this is coffeescript. We can do better. Lets use a attribute shortcut to reduce the code length.
{% highlight coffeescript linenos %} class Person named: (@name) -> @ withSpouse: (@spouse) -> @ bornOn: (@dob) -> @ build : -> return { name: @name spouse: @spouse dob: @dob } console.log new Person().named('Adam').withSpouse('Rachel').build() {% endhighlight %}I suspect there may be an even cleaner way to do this, but this seems concise enough for now.
The full source code is available here: https://github.com/adamnengland/coffee-fluent-interface


f"Experiment ID: {upload_session_pk}"
)
for email in {
creator.email,
*[o.email for o in algorithm.editors_group.user_set.all()],
}:
send_mail(
subject=(
f"[{Site.objects.get_current().domain.lower()}] "
if session_pk is not None:
message += f"Experiment ID: {session_pk}\n"
receivers = {o.email for o in algorithm.editors_group.user_set.all()}
if creator is not None:
receivers.add(creator.email)
for email in receivers:


Let $X_{1},\ldots ,X_{n}$ be i.i.d. $N(\mu_{1},{\sigma}_{1}^{2})$ and let $Y_{1},\ldots ,Y_{m}$ be i.i.d. $N(\mu_{2},{\sigma}_{2}^{2})$. We shall consider the following hypothesis testing problems.
This kind of problem arises in many situations in comparing two different populations or the effect of two different treatments etc. Actual data sets of such questions can be found in the homework.
We take a random sample of $n+m$ patients and break them into two groups of $n$ and of $m$ patients. The first group is administered the new drug while the second group is administered the old drug. Let $X_{1},\ldots ,X_{n}$ be the decrease in blood pressures in the first group. Let $Y_{1},\ldots ,Y_{m}$ be the decrease in blood pressures in the second group. The claim is that one average $X_{i}$s are larger than $Y_{i}$s.
Note that it does not make sense to subtract $X_{i}-Y_{i}$ and reduce to a one sample test as in the previous section (here $X_{i}$ is a measurement on one person and $Y_{i}$ is a measurement on a completely different person! Even the number of persons in the two groups may differ). This is an example of a two-sample test as formulated above.
BIG ASSUMPTION: We shall assume that ${\sigma}_{1}^{2}={\sigma}_{2}^{2}={\sigma}^{2}$ (yet unknown). This assumption is not made because it is natural or because it is often observed, but because it leads to mathematical simplification. Without this assumption, no exact level-$\alpha$ test has been found!
The test : Let $\bar{X},\bar{Y}$ denote the sample means of $X$ and $Y$ and let $s_{X}, s_{Y}$ denote the corresponding sample standard deviations. Since ${\sigma}^{2}$ is the assumed to be the same for both populations, $s_{X}^{2}$ and $s_{Y}^{2}$ can be combined to define $$ S^{2}:=\frac{(n-1)s_{X}^{2}+(m-1)s_{Y}^{2} }{m+n-2} $$ which is a better estimate for ${\sigma}^{2}$ than just $s_{X}^{2}$ or $s_{Y}^{2}$ (this $S^{2}$ is better than simply taking $(s_{X}^{2}+s_{Y}^{2})/2$ because it gives greater weight to the larger sample).
Now define $\mathcal T =\sqrt{\frac{1}{n}+\frac{1}{m} }\left(\frac{\bar{X}-\bar{Y} }{S}\right)$. The following tests hav significance level $\alpha$.
The rationale behind the tests : If $\bar{X}$ is much larger than $\bar{Y}$ then the greater is the evidence that the true mean $\mu_{1}$ is greater than $\mu_{2}$. But again we need to standardize by dividing this by an estimate of ${\sigma}$, namely $S$. The resulting statistic $\mathcal T$ has a $t_{m+n-2}$ distribution as explained below.
The significance level is $\alpha$ : The question is where to draw the threshold. From the facts we know, $$\begin{align*} \bar{X}&\sim N(\mu_{1},{\sigma}_{1}^{2}/n), \\ \bar{Y}&\sim N(\mu_{2},{\sigma}_{2}^{2}/m), \\ \frac{(n-1)}{{\sigma}^{2} }s_{X}^{2}&\sim \chi_{n-1}^{2}, \\ \frac{(m-1)}{{\sigma}^{2} }s_{Y}^{2}&\sim \chi_{m-1}^{2} \end{align*}$$ and the four random variables are independent. From this, it follows that $(m+n-2)S^{2}$ has $\chi_{n+m-2}^{2}$ distribution. Under the null hypothesis $\frac{1}{{\sigma}}\sqrt{\frac{1}{n}+\frac{1}{m} }(\bar{X}-\bar{Y})$ has $N(0,1)$ distribution and is independent of $S$. Taking ratios, we see that $\mathcal T$ has $t_{m+n-2}$ distribution (under the null hypothesis).


Take a sneak peak at this year's Durham Lumiere
The UKs largest light festival returns to Durham for its tenth anniversary. Across the city some 37 light installations will transform the landscape and are guaranteed to impress visitors.
14 Nov 2019, 09:12 by Agency Staff
Durham Cathedral is lit up during a preview of Stones(Image: Owen Humphreys/PA Wire)
Durham Cathedral is lit up during a preview of Stones, part of Lumiere Durham(Image: Owen Humphreys/PA Wire)
I Love Durham, a giant snow globe by Jacques Rival, during a preview of Lumiere Durham(Image: Owen Humphreys/PA Wire)
Mysticete by Topla Design/Catherine Garre, one of the artworks at Lumiere Durham(Image: Owen Humphreys/PA Wire)
End Over End by Lucy McDonnell, part of Lumiere Durham(Image: Owen Humphreys/PA Wire)
'Fools Paradise' is projected onto Durham Castle during a preview of Stones, part of Lumiere Durham(Image: Owen Humphreys/PA Wire)
Durham Cathedral is lit up during a preview of Stones(Image: Owen Humphreys/PA Wire)
A light artwork called Cloud, an atmospheric sculpture formed from 6,000 incandescent light bulbs in the form of a rain cloud is displayed during a preview evening for the tenth anniversary of Lumiere(Image: Ian Forsyth/Getty Images)
Mysticete, featuring the projection of a whale emerging from the River Wear is displayed during a preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A light artwork called Lift Off is displayed during the preview evening(Image: Ian Forsyth/Getty Images)
A light artwork called I Love Durham, a giant snow globe, is displayed in Durham Market place(Image: Ian Forsyth/Getty Images)
A light artwork called Wave at the preview evening(Image: Ian Forsyth/Getty Images)
A light artwork called Wave, featuring 500 orbs of light is displayed during the preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A light artwork called Stones, an animation across the facade of Durham Cathedral(Image: Ian Forsyth/Getty Images)
A light artwork called Stones, an animation across the facade of Durham Cathedral(Image: Ian Forsyth/Getty Images)
A light artwork called Wave, featuring 500 orbs of light is displayed during a preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A light artwork called Fogscope, a rolling nocturnal fog cascading into the River Wear is displayed during a preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A light artwork called, The Stars Come Out at Night, a revolving universe of twinkling stars is displayed during a preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A family interacts with a light artwork called Wave, featuring 500 orbs of light as it is displayed during a preview evening for Lumiere(Image: Ian Forsyth/Getty Images)
A girl interacts with a light artwork called Wave(Image: Ian Forsyth/Getty Images)
A light artwork called Geometrical Traces(Image: Ian Forsyth/Getty Images)
A light artwork called Geometrical Traces(Image: Ian Forsyth/Getty Images)
A light artwork called Shoefetti(Image: Ian Forsyth/Getty Images)
A light artwork called End Over End(Image: Ian Forsyth/Getty Images)
A light artwork called Shoefetti(Image: Ian Forsyth/Getty Images)
Mysticete by Topla Design/Catherine Garre, one of the artworks at Lumiere Durham(Image: Owen Humphreys/PA Wire)
I Love Durham by Jacques Rival on of the artworks at Lumiere Durham(Image: Owen Humphreys/PA Wire)


| |
Methods defined here:
- __init__(self, img, bin_fact=8L, min_range=0)
- channel_to_image(self, chan, scale_x=3, scale_y=3, y_range=64)
- Creates an iplimage displaying histogram results after its computation
- compute_histogram(self, img, bin_fact=8L, min_range=0)
- Creates the histogram of the input image
Returns a Tippy histogram, with one item by channel of input image.
The number of bins is 2^bin_fact (256 by default)
min_range is the value of the lowest bin
max_range is automatically calculated using the input image depth.
max_range = (2^img_depth)
NOTE : Supports only 8 bits images for now.
More should be added soon.
- to_images(self, scale_x=3, scale_y=3, y_range=64)
- Creates a graphical representation of an histogram.
Outputs a list of nChannels iplimages, one for each channel of the
histogram.
The images should have the same depth as the image used to create the
histogram.
- to_tables(self)
- Transforms an histogram into a list of values.
This way, it is easier to process for calculations.
Returns a list of nChannels items.
NOTE : Supports only 8 bits images for now.
More should be added soon.
|


Via attribute
January
February
March
April
May
June
July
August
September
October
November
December
Via options
Option 1
Option 2
Option 3
Option 4
Option 5
Option 6
Option 7
Option 8
Option 9


Field Prime: {{curve.prime.toString()}} Curve equation: {{curve.equation}}
Generating points
Public Key: {{publicKey}}


links
Music
周杰伦
JACOBS VOCAL ACADEMY
Openmic Vancouver
Guitar
Justin guitar
GoliathGuitar
GuitarNick
Tips for Taylor GS Mini Owners: Part 1, Part 2
BEST ONLINE GUITAR LESSONS
3 BEST BLUES GUITAR COURSES OF 2020
Tomo Fujita
Learn Practice Play
Next level playing
GuitarTricks
Jamplay
TrueFire
TheGuitarLessons
Movies
Books
Book List
Physically Based Rendering
Neural Networks and Deep Learning by Michael Nielsen
Calendars
Computer Vision Conferences
Computer Graphics Events
Finance
Travel
Wikitravel
Wikivoyage
Flying the nest
TRAVEL WITH WINNY
Kara and Nate
Post Everest Recap
Photography
Digital photography
Clarkvision Articles
Cambridge in Colour
iPhone photography school
Ken Rockwell
500px
Shoottokyo\
Language Learning
How I Learned French in 12 Months —
Userful Resources
Awesome Computer Vision
CVonline
The Computer Vision Homepage
USC Vision Bibliography
Minimal Problems in Computer Vision
Background Subtraction Website
Open Source Photogrammetry
Theory of computation
Paper we love
Vim Cheatsheet
Websites
Group
Princeton Vision & Robotics Toolkit (PVRT)
CVLAB - EPFL
AVG - Autonomous Vision Group
Computer Graphics and Geometry Lab
GCC
Academia
Sameer Agarwal
Ronald T. Azuma, Ph.D.
Tianqi Chen
Colah’s blog (Neural Networks tutorials)
Noam Chomsky
Shuoyang Ding
Ethan Eade
Matthew Fisher
Sean Ryan Fanello
Yasutaka Furukawa
Jun Gong
Ross Girshick (rbg)
Philip Guo
Kaiming He
Felix Heide
Philipp Heise
DANIEL HOMOLA
Chip Huyen
Ivo Ihrke
Satoshi Ikehata
Andrej Karpathy’s Blog
Johnny Lee
Ce Liu
SATYA MALLICK - Learn OpenCV
Wojciech Matusik
Lei Mao
Free Mind
Matt Might
Matthias Nießner
Jordan Peterson
Marc Pollefeys
Mark Reid
Marco Tulio Ribeiro
David Robinson - Data Scientist
Random collection by Prof. Henning Schulzrinne
Steve Seitz
Chris Sweeney
Julian Straub
Tianwei Shen
Stackable
engin tola
Tombone’s Computer Vision Blog
George Vogiatzis
Xiu-Shen Wei
Michael Wilber
Kai Wolf
Junyuan Xie
Ziv Yaniv - Absolute orientation, ICP
Xiong Ying - PSBox, DfGBox
Christopher Zach
Victor Zappi
Qianyi Zhou
Wang Zhe
Non-academia
编码者言
陈梓瀚(vczh)
当然我在扯淡
考据癖
虎兔手记
酷壳
稚晖的个人站
AskTog
Brandon Gregg
BYVoid
Clay Bavor
danielmiessler
Debarghya Das
Ash Furrow
Laruence
Lee Jacobson
Matrix67
Don Normal: Designing For People
Simon’s Tech Blog
Surely I Am Joking
Hujiawei Bujidao
An amateur programmer
Misc
Hacker News
George R.R. Martin
Source Code
Computer Vision
General vision library
OpenCV
CVT Library: General purpose computer vision library written in C++
Peter Kovesi’s MATLAB and Octave Functions for Computer Vision and Image Processing
VLFeat
VXL
3D vision library
PMVS2
CMVS
CMPMVS - Jancosek
Open3D
OpenMVS
VGG Multiple View Geometry Library
Bundler: SfM system for unordered image collections, C/C++
Libmv
openMVG: open Multiple View Geometry
Theia Vision Library - for SfM
COLMAP - SfM + MVS
MVE: include incremental SfM, MVS, FSSR
VisualSFM: a GUI application for 3D reconstruction using SFM
Structure and Motion Toolkit in MATLAB - Torr
MRPT
Dense Visual SLAM
Visual Hull from Uncalibrated Sanpshots
QHull
Manolis Lourakis
Calibration
Multi-Camera Self-Calibration
Automatic camera pose estimation from dot pattern - Carlos Hernandez
Multiple Camera Calibration Toolbox
Projector-Camera Calibration
EPnP: Efficient Perspective-n-Point Camera Pose Estimation
Registration
Normal ICP
LibICP (Note: not so good)
Go-ICP
Sparse ICP
libpointmatcher - An ICP library for 2D/3D mapping in robotic
nonrigidICP
ICP Registration using Efficient Variants and Multi-Resolution Scheme
Coherent Point Drift
cpd - C++ implementation
Stereo Correspondence
Growing Correspondence Seeds
Quasi-dense wide baseline matching
Efficient Large Scale Stereo
Nearest neighbour
flann
ANN - Approximate Nearest Neighbour
nanoflann
FASTANN
libkdtree++
3D Geometry
geom3d
Mesh Processing Library - Hoppe
libigl
FSSR
Poisson Recon
MeshRecon
Mesh Toolbox: Executables
Machine Learning
Toolbox
Pattern Recognition and Machine Learning Toolbox
Optimization
CVX: Matlab Software for Disciplined Convex Programming
sba
levmar
Ceres Solver
LSQR: Sparse Equations and Least Squares
Misc
GMM EM
GMM Variational Bayesian
FAST GAUSS TRANSFORM
Eigen: C++ template library for linear algebra
Armadillo - A C++ linear algebra library
WNLIB
Microsoft opensource
Professor X Toolkit
Toolbox Graph
Dataset
Middlebury CV
DTU Robot Image Data Sets
ETH3D Benchmark
Stanford 3D Scanning Repository
MERL BRDF Dataset
Experimental Analysis of BRDF Models
FAUST
‘DiLiGenT’ Photometric Stereo Dataset
Multiview Photometric Stereo
RGB-D Object Dataset
List of RGBD datasets
Courses & Tutorials
Computer Vision
CS231A: Computer Vision, From 3D Reconstruction to Recognition
CS231n: Convolutional Neural Networks for Visual Recognition
Introduction to Deep Learning by Alex Smola and Mu Li
SLAM by Prof. Cyrill Stachniss
Photogrammetry by Prof. Cyrill Stachniss
COMPUTER VISION - EPFL, Pascal Fua
Physics based Methods in Vision - CMU
3D Computer Vision - U of Utah
CSC320S: Introduction to Visual Computing
Visual 3D Modeling from Images - Marc Pollefeys
SFMedu: A Structure from Motion System for Education
Open Source Structure-from-Motion
3d Shape Reconstruction from Photographs: a Multi-View Stereo Approach
Build Your Own 3D Scanner: Optical Triangulation for Beginners
Visual 3D Modeling from Images
3D Vision
Large-scale 3D Modelling from Crowdsourced Data.
Computer Graphics
Computer Graphics - Edx
Comptuer Graphics - UC Davis (Course website, Videos)
CSC418/2504 Computer Graphics
Introduction to Computer Graphics - CSCI 1230
Nate Robins Tutorial
Song Ho Ahn’s OpenGL Tutorial
Learn OpenGL
Learn Computer Graphics Programming from Scratch
Lode’s Computer Graphics Tutorial (FT tutoril)
Learn Computer Graphics From Scratch!
Interactive Computer Graphics: A Top-Down Approach with OpenGL
ONLINE FREE TUTORIALS AND BOOKS
OpenGLBook
SIGGRAPH 2010 Course: Physically-Based Shading Models in Film and Game Production
SIGGRAPH 2012 Course: Practical Physically Based Shading in Film and Game Production
SIGGRAPH 2015 Course: Physically Based Shading in Theory and Practice
Ray Tracing in One Weekend
Machine Learning
All of Machine Learning - Prof. Mark Schmidt
80 Lectures on Machine Learning - Prof. Mark Schmidt
CPSC 340 - UBC
Deep Learning - Nando de Freitas
Machine Learning Reading Group at UBC
Comvex Optimization at Stanford
Numerical Optimization by Prof. MPF
MIT Deep Learning
Stats
Probabilistic Graphical Models - CS 228
Math
Calculus Part 1
Calculus Part 2
multi-variate calculus
Introduction to Linear Algebra
The Matrix in Computer Science
Numerical Tours
Introduction to Probability and Statistics
Learn Differential Equations
Mathematics for Computer Science
Paul’s Online Math Notes
Algorithm
Algorithms from Princeton
Algorithms by Jeff Erickson
Introduction to algorithm
Programming
CS-related
Scientific Programming in Matlab and Python
data structure
operating system
compiler-stanford
compiler-mli
computer architecture
Learn Linux the Hard Way
Tutorial on C and C++ Programming
Practical Programming in C
(Done)Introduction to C Memory Management and C++ Object-Oriented Programming
Introduction to C++
Introduction to C and C++
Effective Programming in C and C++
C++ tutorial
Thinking in C++ 2nd Edition by Bruce Eckel
Topcoder - Power up C++ with the Standard Template Library by Dmitry Korolev Part 1, Part 2
Topcoder - Introduction to Graphs and Their Data Structures
Topcoder - Dynamic programming
Python tutor
NumPy for Matlab users
The Hitchhiker’s Guide to Python!
Full list of 600 online courses
Software Carpentry
Cracking the coding
Leetcode编程训练
算法珠玑
力扣(lucifer)
UDLS
CG softwares
Remington’s PBR Shader
Procedural 4 Texture
BLENDER DISNEY SURFACE UBER SHADER - ONELVXE
TBR
Photometric Stereo 1, 2
CSE 455 Project 4: Photometric Stereo
CSE 252A: Photometric stereo and Specularity Removal
Multi-view Photometric stereo with SV-isotropic material
Multi-view intersection code
Iterative Integration
ICP code 1, 2
Understanding Quaternions
Introduction to CUDA using Visual Studio 2008
Registration - Symposium Geometry Processing 2015
Derivation of Point-to-Plane Minimization
Joint Registration of Multiple Point Sets
ICP Variants
An Invitation to 3-D Vision
CMake Doc
Computing Correspondences in Geometric Data Sets
Xiaojun Chang’s CV CODE\


{%extends 'base.html'%} {%load bootstrap4%} {%block content%} Neighbourhood Registration Page / User registration {%csrf_token%} {%bootstrap_form form%} GO CLICK TO VIEW INSTRUCTIONS!


A Postdoc researcher from the Department of Materials Science and Engineering, Harbin Institute of Technology, Shenzhen, China
A Fan of FCB, LFC, Lakers, and Dota2
I obtained the Bachelor's degree in Materials Science and Engineering from Tianjin University in 2015, the Master's and doctoral degree in Mechanical Engineering from HK PolyU in 2018 and 2021.
My research interests include high entropy alloys, high-performance steels, and materials informatics.
Materials informatics integrate the materials science domain knowledge and machine learning approaches
Graduated with an overall GPA of 82/100, the thesis Effects of Aging on Diffusion-bonded Joint of Reduced Activated Ferretic Steels was awarded as the distinguish undergraduated thesis of Tianjin University
Graduated with an overall GPA of 3.60/4.00, the thesis Machine Learning Approach for Predicting the Elastic Properties and Glass Forming Ability of Metallic Glasses was supervised by Prof Shi San-Qiang and Prof Zhang Tong-Yi
Graduated with an overall GPA of 3.70/4.00, the thesis Materials Informatics and Its Application to Metallic Materials Design and Discovery was supervised by Prof Shi San-Qiang and Prof Zhang Tong-Yi
Presentations and Accpted Publications
J. Xiong, Q. Cai, Z. Q. Ma, L. M. Yu, Y. C. Liu Enhancement of Critical Current Density in MgB 2 Bulk with CNT-coated Al Addition. Journal of Superconductivity and Novel Magnetism 27 (2014) 1659-1664.
J. XIONG, C. X. Liu, Change Rule on Structure of Diffusion Bonding Joint for CLAM Steel after High Temperature Aging. Heat Treatment Technology and Equipment. 5 (2015).
J. Xiong, T. Y. Zhang, S. Q. Shi, Machine learning prediction of elastic properties and glass-forming ability of bulk metallic glasses. MRS Communications. 9 (2019) 576–585.
J. Xiong, T. Y. Zhang, S. Q. Shi, Machine learning of mechanical properties of steels. Science China Technological Sciences. 63 (2020) 1247–1255.
J. Xiong, S. Q. Shi, T. Y. Zhang, A machine-learning approach to predicting and understanding the properties of amorphous metallic alloys. Materials and Design. 187 (2020) 108378.
A. R. Wei, J. Xiong, W. D. Yang, F. L. Guo, Identifying the elastic isotropy of architecture materials based on deep learning method. Extreme Mechanics Letters. 43 (2021) 101173.
J. Xiong, S. Q. Shi, T. Y. Zhang, Machine Learning of Phases and Mechanical Properties in Complex Concentrated Alloys. Journal of Materials Science & Technology. 87 (2021) 133-142.
J. Xiong, S. Q. Shi, T. Y. Zhang, Machine learning prediction of glass-forming ability in bulk metallic glasses. Computational Materials Science. 192 (2021) 110362.


You will find your QR code below:
The QR code redirects to a page of your poster that has been automatically created and you can view it here. The link to this page is public and permanent. Feel free to share it with everyone:
You can edit the information for this poster at any time here. Be sure to bookmark this link somewhere as it is the unique way to update the information of your poster on Pauling.
Enter your email below to receive these information by email. No spam, ever.
{% else %}{{ poster.email }}
.
Wrong email? Please contact us.
{% endif %}


The Modern JavaScript test score is an indication of how well your browser supports the upcoming ES6 standard and related specifications. Even though the specification isn't finalized yet, all major browser manufacturers are making sure their browser is ready for the future. Find out which parts of Modern JavaScript are already supported by your browser today and compare the results with other browsers.
Huge thanks to kangax for the ES6 compatibility table!
Sponsors
The Modern JavaScript test does not try to test all of the new features offered by Modern JavaScript, nor does it try to test the functionality of each feature it does detect. Despite these shortcomings we hope that by quantifying the level of support users and web developers will get an idea of how hard the browser manufacturers work on improving their browsers and the web as a development platform.
The score is calculated by testing for the many new features of Modern JavaScript. Each feature is worth one or more points. Apart from the main ES6 specification and other specifications created the W3C HTML Working Group, this test also awards points for supporting related drafts and specifications.
..
Sponsors
Please be aware that the specifications that are being tested are still in development and could change before receiving an official status. In the future new tests will be added for the pieces of the specification that are currently still missing. The maximum number of points that can be scored is 0 at this moment, but this is a moving goalpost.
The Modern JavaScript test is created by Alon Zakai, a fork of HTML5 Test by Niels Leenheer (thanks Niels!)


I am a Lecturer in the Department of Electrical Engineering, Politeknik Negeri Batam, Indonesia. I am also a member of BRAIL (Barelang Robotics and Artificial Intelligence Lab) who works on Humanoid Robot and Computer Vision research. You can find an overview of my research through my YouTube Channel or Github Repository.
I got Master's Degree from the Department of Electrical Engineering, National Taiwan Normal University in 2020. Previously, I graduated from the School of Electrical Engineering and Informatics, Bandung Institute of Technology in 2013. In my spare time, I love traveling to a new place and enjoy outdoor sport (hiking, cycling, running, and sometimes swimming). Of course, I also like to write code with Python and drink more cups of coffee in the morning.
More about me can be found through my Curriculum Vitae.
Room RB7 Industrial Robot, Floor 2, Main Hall, Politeknik Negeri Batam, Jl. Ahmad Yani, Batam Centre, Batam, Kepulauan Riau, Indonesia


--- date: 2010-02-08T00:00:00Z published: true title: Optics shriek 'hypocrisy' - Danny Williams in the USA url: /2010/02/08/optics-shriek-hypocrisy-danny-williams-in-the-usa/ ---
So when he flew southward for heart surgery, leaving wintry St. John's behind, he had to have known what it would look like. And not given a hoot.
Here's the nub: Williams is the guy who leads the province, the jurisdiction responsible for administering the health care of its half-million citizens. And he's publicly decided it isn't good enough to serve his medical needs.
True, in the absence of details about his actual condition, it is fair to speculate that the procedure he needed is not readily available at home, either through lack of equipment or expertise. But that does not give him a pass to head to the States.


Help
Classroom Teaching Scan Report Maker
Practices
What you did
Comments
Opportunities to Respond (OTRs)
Feedback Statements (FB)
Non Instructional activities
The Big Picture
One Big Thing
Link to CT Scan Data Timeline:
Create report