This specification refines the semantics and interaction patterns of the Linked Data Platform ([[LDP]]) in order to better serve the specific needs of those interested in implementing repositories for durable access to digital data. Additionally, this specification contains:
The goal of this specification is to define the behaviors of Fedora server implementations in order to facilitate interoperability with client applications. Although Fedora servers are not necessarily drop-in replacements for one another, a client developed against this specification should work against any Fedora server with little modification. Client applications should not expect the behaviors of every Fedora server implementation to be identical, but the interaction patterns defined in this specification should provide a sufficient mechanism to navigate the differences between Fedora server implementations.
This document is version 1.0 of the Fedora API specification. Release follows a period of review and implementation based on the Candidate Recommendation of 25 June 2018, with minor changes.
A conforming Fedora server is a conforming [[!LDP]] 1.0 server that follows the additional rules defined in sections , , , and of this specification.
Terminology is based on W3C's Linked Data Platform 1.0 [[!LDP]], Memento [[!RFC7089]], and Web Access Control [[!SOLIDWEBAC]].
Accept-Datetime
-varied negotiation of versions of an URI-R.
The following namespace prefixes are used in this document:
@prefix acl: <http://www.w3.org/ns/auth/acl#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
Non-normative note: This section defines the core operations for managing content, using [[!LDP]] as a baseline. It extends [[!LDP]] in several ways, including making some optional features mandatory and expanding requirements related to binary content.
[[!LDP]] defines a hierarchy of resource types, with a top-level distinction between RDF resources (LDP-RS) and non-RDF resources (LDP-NR). Container (LDPC) is a subtype of RDF resource that may contain other resources as members. There are several subtypes of container, which are primarily differentiated by how much the container-member relationship can be configured. Throughout [[!LDP]] and this specification, these types are important for determining what operations are supported, what header fields are required, and what behavior is expected.
Implementations MUST support the creation and management of [[!LDP]] Basic Containers, and MAY support the creation and management of [[!LDP]] Direct and Indirect Containers.
A server that allows client-managed triples with the ldp:contains
predicate MUST be able
to keep those client-managed triples separate from server-managed containment triples. If a server
cannot keep these two uses of ldp:contains
separate then any request to use
ldp:contains
as the membership predicate ([[!LDP]]
2) for Direct and Indirect
Containers, or as a client-managed property, MUST be rejected with a 409
(Conflict) and an accompanying constraints document. Implementations
that can distinguish containment triples MAY permit ldp:contains
as a membership predicate or
client-managed property; such implementations SHOULD support Prefer:
header values allowing
clients to distinguish this data in the representation of an LDPR as defined in [[!LDP]]:
http://www.w3.org/ns/ldp#PreferContainment
,
http://www.w3.org/ns/ldp#PreferMembership
, and
http://www.w3.org/ns/ldp#PreferMinimalContainer
.
([[!LDP]] <IP_ADDRESS> expansion)
Non-normative note: [[!LDP]] defines containment relationships as binding an LDPC to LDPRs whose lifecycle it controls and is aware of, and are expressed through containment triples of the form<LDPC-URI> ldp:contains <LDPR-URI>
. However, implementations that segregate containment and membership triples — for example, by storing containment relationships in a dedicated named graph — may allow the creation of other triples with theldp:contains
predicate, and thus triples with this predicate do not necessarily imply containment.
Implementations that support the creation and management of LDP Direct Containers ([[!LDP]]
5.4)
use the ldp:membershipResource
property to express the membership constant URI (per
[[!LDP]] <IP_ADDRESS>), and use either the
ldp:hasMemberRelation
or ldp:isMemberOfRelation
property to express
the member relation (per [[!LDP]] <IP_ADDRESS>).
These properties are set and updated as follows:
ldp:membershipResource
property of the content RDF on container creation,
or otherwise default to an implementation defined value. Implementations SHOULD
use the URI of the newly created LDP Direct Container as the default property value.
ldp:membershipResource
property of the resource content.
ldp:hasMemberRelation
or ldp:isMemberOfRelation
property of the content RDF
on container creation, or otherwise default to an implementation defined value. Implementations SHOULD
use the default <> ldp:hasMemberRelation ldp:member
.
ldp:hasMemberRelation
or ldp:isMemberOfRelation
property
of the resource content.
Each LDP Indirect Container ([[!LDP]] 5.5) is also a
conforming LDP Direct Container (per [[!LDP]]
<IP_ADDRESS>). Implementations that support the creation
and management of LDP Indirect Containers MUST allow control of ldp:membershipResource
,
ldp:hasMemberRelation
, and ldp:isMemberOfRelation
properties as descibed for
. They also use the ldp:insertedContentRelation
property to control the
behavior when creating new contained resources (per [[!LDP]]
<IP_ADDRESS>).
This property is set and updated as follows:
ldp:insertedContentRelation
property to be set via the
content RDF on container creation, or otherwise default to an implementation defined value.
Implementations SHOULD use the default property value ldp:MemberSubject
.
ldp:insertedContentRelation
property to be updated via the
content RDF by subsequent PUT or PATCH requests.
If, in a successful resource creation request, a Link
request header with a
rel="type"
link specifies the LDP-NR interaction model
(http://www.w3.org/ns/ldp#NonRDFSource
, regardless of Content-Type:
value), then
the server SHOULD handle subsequent requests to the newly created resource as if it is an LDP-NR.
([[!LDP]] <IP_ADDRESS> extension)
When implementation choices result in failure to complete a client request, the response MUST include a
Link
header with a link relation of http://www.w3.org/ns/ldp#constrainedBy
, and
a target URI identifying a document expressing the constraints leading to the failure, as outlined by
([[LDP]] <IP_ADDRESS>).
Non-normative note: Neither [[LDP]] nor this specification constrains the underlying storage model for RDF data. Each LDP-RS may be entirely independent RDF content, may be a portion of a shared RDF store, or follow some other arrangement.
If a client request cannot be processed because of data model constraints, the response MUST include an appropriate constraints document.
Prefer
header
This specification extends the Prefer
header semantics defined in [[!LDP]]
7.2 by describing three additional URIs that
may be used in the include
and omit
parameters of the
return=representation
preference
([[!RFC7240]] section 4.2).
On GET
requests:
http://fedora.info/definitions/fcrepo#PreferInboundReferences
to request that the response include triples from any LDP-RS housed in that server that feature the
requested resource as RDF-object.
http://www.w3.org/ns/oa#PreferContainedDescriptions
to request that the response include representations of any LDPC-contained resources in the
response, as defined in [[!annotation-vocab]]
section 2.3.17.
http://fedora.info/definitions/fcrepo#ServerManaged
to request
that the response omit triples from any LDPR that are managed by the server.
Responses to GET
requests that apply a Prefer
request header to any LDP-RS
MUST include the Preference-Applied
response header as defined in [[!RFC7240]]
section 3 if and only if all specified
parameters of the requested preference were applied.
When a GET
request is made to an LDP-RS that describes an associated LDP-NR
( and [[!LDP]]
<IP_ADDRESS>),
the response MUST include a Link
header with a rel="describes"
link referencing
the LDP-NR in question, as defined in [[!RFC6892]].
GET
requests to any LDP-NR MUST correctly respond to the Want-Digest
header defined in [[!RFC3230]].
Non-normative note: In response to requests with aWant-Digest
header, the currentDigest
value should be calculated to enable fixity verification. Otherwise, it is expected thatETag
values may be cached. In order to trigger a fresh digest calculation, clients should use theCache-Control: no-cache
header (see [[RFC7234]] section <IP_ADDRESS>) to instruct any intermediate caches or proxies not to return a cached response. See .
The HEAD
method is identical to GET
except that the server MUST NOT return a
message-body in the response, as specified in [[!RFC7231]]
section 4.3.2. The server MUST send the same
Digest
header in the response as it would have sent if the request had been a GET
(or omit it if it would have been omitted for a GET
). In other cases, the server SHOULD send the
same headers in response to a HEAD
request as it would have sent if the request had been a
GET
, except that the payload headers (defined in [[!RFC7231]]
section 3.3) MAY be omitted.
Any LDPR MUST support OPTIONS
per [[!LDP]]
4.2.8.
Non-normative note: Particular Allow:
header responses that clients may use to determine
implementation support for specific features are described in the appropriate sections of this specification.
Non-normative note:
Implementations may support creation and update of an LDP-NR with external content, and this is
advertised with the Accept-External-Content-Handling
header, see
.
Any LDPC except Version Containers (LDPCv) MUST support POST
([[!LDP]] 4.2.3 /
5.2.3).
Any LDPC except Version Containers (LDPCv) MUST support creation of
LDP-NRs on POST
([[!LDP]]
<IP_ADDRESS> MAY becomes MUST). On creation of an
LDP-NR, implementations MUST create an associated LDP-RS describing that LDP-NR
([[!LDP]] <IP_ADDRESS> MAY becomes
MUST).
An HTTP POST
request that would create an LDP-NR and includes a Digest
header (as described in [[!RFC3230]]) for which the instance-digest in that header does not match that of
the new LDP-NR MUST be rejected with a 409 (Conflict) response.
An HTTP POST
request that includes an unsupported Digest
algorithm (as
described in [[!RFC3230]]), SHOULD be rejected with a 400 (Bad Request) response.
Non-normative note:
Implementations may support creation of LDP-NR using POST
with external content,
see .
Implementations MAY allow the interaction model of an existing resource to be changed by specification of a
new LDP type in a rel="type"
link in the HTTP Link
header. If supported, requests
SHOULD be rejected with a 409 (Conflict) response unless the new LDP type specified is a subtype of the
resource's current type.
Any LDP-RS MUST support PUT
to update statements that are not server-managed triples
(as defined in [[!LDP]] 2). [[!LDP]] <IP_ADDRESS>
and <IP_ADDRESS> remain in effect. If an
otherwise valid HTTP PUT
request is received that attempts to modify resource statements that
a server disallows (not ignores per [[!LDP]]
<IP_ADDRESS>), the server MUST fail the request by
responding with a 4xx range status code, such as 409 (Conflict). The server MUST provide a corresponding
response body containing information about which statements could not be persisted. ([[!LDP]]
<IP_ADDRESS> SHOULD becomes MUST). In that response,
the restrictions causing such a request to fail MUST be described in a resource indicated by a
rel="http://www.w3.org/ns/ldp#constrainedBy"
link in the Link
response header per
[[!LDP]] <IP_ADDRESS>.
Any LDP-NR MUST support PUT
to replace the binary content of that resource.
An HTTP PUT
request that includes a Digest
header (as described in [[!RFC3230]])
for which any instance-digest in that header does not match the instance it describes, MUST be rejected with
a 409 (Conflict) response.
An HTTP PUT
request that includes an unsupported Digest
algorithm (as
described in [[!RFC3230]]), SHOULD be rejected with a 400 (Bad Request) response.
Non-normative note:
Implementations may support creation of LDP-NR using PUT
with external content,
see .
Non-normative note: Implementations may accept HTTPPUT
to create resources ([[!LDP]] <IP_ADDRESS>). Behavior regarding containment or non-containment of resources created with HTTPPUT
is not defined by [[!LDP]] or this specification.
On creation of an LDP-NR with HTTP PUT
, implementations MUST create an associated
LDP-RS describing that LDP-NR in the same way that it would when
.
Non-normative note: Implementations may support creation of LDP-NR using PUT with external content, see .
Any LDP-RS MUST support PATCH
([[!LDP]]
4.2.7 MAY becomes MUST). [[!sparql11-update]] MUST
be an accepted content-type for PATCH
. Other content-types (e.g. [[ldpatch]]) MAY be supported.
If an otherwise valid HTTP PATCH
request is received that attempts to modify resource statements
that a server disallows (not ignores per [[!LDP]]
<IP_ADDRESS>), the server MUST fail the request by
responding with a 4xx range status code, such as 409 (Conflict). The server MUST provide a corresponding
response body containing information about which statements could not be persisted. ([[!LDP]]
<IP_ADDRESS> SHOULD becomes MUST). In that response, the
restrictions causing such a request to fail MUST be described in a resource indicated by a
rel="http://www.w3.org/ns/ldp#constrainedBy"
link in the Link
response header per
[[!LDP]] <IP_ADDRESS>.
A successful PATCH
request MUST respond with a 2xx status code; the specific code in the 2xx
range MAY vary according to the response body or request state.
PATCH
to update an LDPC’s containment triples; if the
server receives such a request, it SHOULD respond with a 409 (Conflict) status code.
The server MUST disallow a PATCH
request that would change the LDP interaction model of a
resource to a type that is not a subtype of the current resource type. That request MUST be rejected with a
409 (Conflict) response.
The DELETE
method is optional per [[!LDP]]
section 4.2.5 and this specification does not
require Fedora servers to implement it. When a Fedora server supports this method, in addition to the
requirements imposed on LDPRs within containers outlined in [[!LDP]]
section 5.2.5, it must also follow the additional
behavior outlined below.
Implementations that cannot recurse SHOULD NOT advertise DELETE
in response to
OPTIONS
requests for containers with contained resources.
Non-normative note: Clients should assume from an advertised DELETE
that they do not need to
look for contained/child resources to clean up.
If a server supports DELETE
, any recursion MUST be reckoned along the [[!LDP]]
containment relationships linking contained
resources.
Implementations MUST NOT return a 200 (OK) or 204 (No Content) response unless the entire operation successfully completed.
Implementations MUST NOT emit a notification that implies the successful DELETE
of a resource
until the resource has been successfully removed.
Non-normative note: Atomicity is not guaranteed for HTTP DELETE
requests that affect multiple
resources.
Non-normative note: External content features expose resources outside of the repository, and careful consideration should be given by implementations to prevent malicious requests from gaining access to sensitive information.
Non-normative note: Variability among client types and locations may mean that LDP-NR content is addressed in ways that are external to the Fedora server but not resolvable by all clients. This specification describes the use of arel="http://fedora.info/definitions/fcrepo#ExternalContent"
link in aLink
header to signal, onPOST
orPUT
, that the Fedora server should not consider the request entity to be the LDP-NR's content, but instead that the target of the link gives the URI from which the content might be retrieved. Thehttp(s):
[[RFC3986]] andfile:
[[RFC8089]] URI schemes motivate this specification, but a Fedora server may support other URI schemes for addressing external content per the requirements for advertisement and rejection specified here. Thehandling
attribute is introduced to specify the handling of the external content: either copying, redirecting, or proxying.
Link: <http://example.org/some/content>; rel="http://fedora.info/definitions/fcrepo#ExternalContent"; handling="proxy"; type="image/tiff"
Fedora servers SHOULD support the creation and update of LDP-NRs with content external to
the request entity, as indicated by a link with
rel="http://fedora.info/definitions/fcrepo#ExternalContent"
and target that is the
location of the external content. The handling
attribute specifies how the server
should handle the external content, and the optional type
attribute specifies the
media type of the external content.
Fedora servers that do not support the creation of LDP-NRs with content external to the
request entity MUST reject such requests with a 4xx range status code, and MUST describe this
restriction in a resource indicated by a rel="http://www.w3.org/ns/ldp#constrainedBy"
link in the Link
response header.
Fedora servers MUST reject with a 4xx range status code requests that include multiple
rel="http://fedora.info/definitions/fcrepo#ExternalContent"
links.
Fedora servers MUST use the handling
attribute in the external content link to determine
how to process the request. This specification defines the following attibutes and expected behaviors:
copy
- requests that the server dereference the external content URI and treat that as if
it were the entity body of the request.redirect
- requests that the server record the location of the external content and
handle requests for that content using HTTP redirect responses with the Content-Location
header specifying the external content location. See also .proxy
- requests that the server record the location of the external content and
handle requests for that content by proxying. See also .
Fedora servers MUST reject with a 4xx range status code requests for which the handling
attribute is not present or cannot be respected. In the case that the specified handling
cannot be respected, the restrictions causing the request to fail MUST be described in a resource indicated
by a rel="http://www.w3.org/ns/ldp#constrainedBy"
link in the Link
response
header.
Fedora servers MUST use the value of the type
attribute in the external content link as
the media type of the external content, if provided. Any Content-Type
header in the
request SHOULD be ignored. If there is no type
attribute:
Content-Type
header for external content accessed via
http
).Implementations receiving requests that would create or update an LDP-NR with content external to the request entity MUST reject the request if they cannot guarantee all of the response headers required by the LDP-NR interaction model in this specification.
Non-normative note: Example headers for a successful response to aHEAD
request on external content withhandling
ofredirect
(Below,Link
headers are written on separate lines for readability, but can also be listed as comma-separated values in a single header per [[RFC8288]] section 3):Link: <http://www.w3.org/ns/ldp#Resource>;rel="type" Link: <http://www.w3.org/ns/ldp#NonRDFSource>;rel="type" Link: <http://host/fcrepo/image/fcr:metadata>; rel="describedby" Content-Type: application/pdf Location: http://example.org/document
In addition to the requirements of , servers supporting external content
requests to an LDPR MUST include an Accept-External-Content-Handling
header in the
response to an OPTIONS
request to that resource. The value MUST be a comma separated list
of supported behaviors (e.g. Accept-External-Content-Handling: copy,redirect
).
Non-normative note:
This specification takes no position on the use of requests with a
rel="http://fedora.info/definitions/fcrepo#ExternalContent"
link to create or
update LDP-RSs.
Non-normative note: Fedora servers may support requests with arel="http://fedora.info/definitions/fcrepo#ExternalContent"
link and either of theredirect
orproxy
preferences. In both of these cases the content remains external to the repository.
GET
and HEAD
requests to any external LDP-NR MUST correctly
respond to the Want-Digest
header defined in [[!RFC3230]].
A successful response to a GET
and HEAD
request for external content with
handling
of redirect
MUST have status code of either 302 (Found) or
307 (Temporary Redirect).
Non-normative note: State tokens are similar to ETags, providing a mechanism for clients to detect changes
in resource state without having to compare the entire entity body, and to perform conditional updates.
Like ETags, the principle behind state tokens is that implementations have the best information on
resource state, and can choose the most accurate and efficient mechanism for clients to detect changes.
State tokens differ from ETags in that there is no expectation that the state token must change if
the entity body is not byte-for-byte identical, when the underlying state of the resource has not changed.
For example, changes in the order of RDF triples, blank node identifiers, and other serialization
variations would not require the X-State-Token
value to change.
Non-normative note: State tokens can be a more reliable mechanism for detecting changes in resource state than ETags when an implementation cannot provide strong ETags. State tokens can be a more reliable mechanism for detecting changes in resource state than modification dates when the one-second resolution of HTTP date values is not sufficient.
Implementations MAY include the X-State-Token
header field in GET
and
HEAD
responses to provide a token representing the current state of resource. If provided,
this value MUST change whenever the underlying state of the resource has changed.
A client MAY include the X-If-State-Token
header field in a PATCH
or
PUT
request to make the request conditional on the resource's current state token matching
the client's value.
If an implementation does not support state tokens, it MAY ignore any X-If-State-Token
header in HTTP PATCH
or PUT
requests.
An HTTP PATCH
or PUT
request that includes an X-If-State-Token
header MUST be rejected with a 412 (Precondition Failed) response if the implementation supports state
tokens, but the client-supplied value does not match the resource's current state token.
Implementations MUST provide resource versioning as per Memento [[RFC7089]] with the additional requirements described in this section.
When an LDPR is created with a rel="type"
link in the Link
header specifying
type http://mementoweb.org/ns#OriginalResource
to indicate versioning, it MUST be created as
an LDPRv and a version container (LDPCv) MUST be created to contain Memento resources
(LDPRm) capturing time-varying representations of the LDPRv.
Implementations MAY allow a subsequent PUT
request with a rel="type"
link in the
Link
header specifying type http://mementoweb.org/ns#OriginalResource
to convert an
existing LDPR into an LDPRv. If such a conversion from an LDPR to an LDPRv is
supported, it MUST be accompanied by the creation of a version container (LDPCv), as noted above.
Patterns for version creation are described in .
A versioned resource (LDPRv) provides a TimeGate interaction model as detailed in the Memento specification [[RFC7089]]. It otherwise follows the [[!LDP]] specification, the requirements, and the additional behaviors below.
The Accept-Datetime
header is used to request a past state, exactly as per [[!RFC7089]]
section 2.1.1. A successful response
MUST be a 302 (Found) redirect to the appropriate LDPRm.
If no LDPRm is appropriate to the Accept-Datetime
value, implementations SHOULD return a 406 (Unacceptable).
The response to a GET
request on an LDPRv MUST include the following headers:
rel="original timegate"
link in the Link
header referencing itself<http://mementoweb.org/ns#TimeGate>; rel="type"
link in the Link
header<http://mementoweb.org/ns#OriginalResource>; rel="type"
link in the
Link
headerrel="timemap"
link in the Link
header referencing an associated
LDPCvVary: Accept-Datetime
header, exactly as per [[!RFC7089]]
section 2.1.2.It is the presence of these headers that indicates that the resource is versioned.
Implementations MUST support PUT
, as is the case for any LDPR.
An LDPRm MAY be deleted; however, it MUST NOT be modified once created.
Implementations MUST support GET
, as is the case for any LDPR. The headers for
GET
requests and responses on this resource MUST conform to [[!RFC7089]]
section 2.1.
Particularly it should be noted that the relevant TimeGate for an LDPRm is the original
versioned LDPRv. In addition, any response to a GET
request MUST include a
<http://mementoweb.org/ns#Memento>; rel="type"
link in the Link
header.
Implementations MUST support OPTIONS
. A response to an OPTIONS
request MUST
include Allow: GET, HEAD, OPTIONS
as per [[!LDP]]. Implementations MAY include Allow:
DELETE
if clients can remove a version from the version history, as noted in
.
Implementations MUST NOT support POST
for LDPRms.
Implementations MUST NOT support PUT
for LDPRms.
Implementations MUST NOT support PATCH
for LDPRms.
Implementations MAY support DELETE
for LDPRms. If DELETE
is supported,
the server is responsible for all behaviors implied in .
An LDPCv is both a TimeMap per Memento [[!RFC7089]] and an LDPC. As a TimeMap, an LDPCv MUST conform to Memento [[!RFC7089]].
Implementations MUST NOT allow the creation of an LDPCv that is LDP-contained by its associated LDPRv.
Non-normative note: The application/link-format
representation of an LDPCv is not
required to include all statements in the LDPCv graph, only those required by TimeMap
behaviors.
Implementations MUST support GET
, as is the case for any LDPR. Any response to a
GET
request MUST include a <http://mementoweb.org/ns#TimeMap>; rel="type"
link in the Link
header.
An LDPCv MUST respond to GET
with an Accept: application/link-format
header as indicated in
[[!RFC7089]] section 5 and specified in
[[!RFC6690]] section 7.3.
Implementations MUST include the Allow
header and, if appropriate, the
Accept-Post
and Accept-Patch
headers, and as outlined in
.
Implementations MUST support OPTIONS
. A response to an OPTIONS
request MUST
include Allow: GET, HEAD, OPTIONS
as per [[!LDP]].
The response MAY include Allow: DELETE
if the versioning behavior is removable by deleting
the LDPCv. See for requirements on DELETE
if supported.
The response MAY include Allow: PATCH
if the LDPCv has mutable properties. See
for requirements on PATCH
if supported.
The response MAY include Allow: POST
if versions can be explicitly minted by a client. See
for requirements on POST
if supported.
If an LDPCv supports POST
, the response MUST include the Accept-Post
header described in [[!LDP]] 7.1.
If an LDPCv supports PATCH
, the response MUST include the Accept-Patch
header.
Although an LDPCv is both a TimeMap and an LDPC, implementations MAY disallow
POST
requests.
POST
s for LDPCvs
A POST
request that does not contain a
Memento-Datetime
header SHOULD be understood to create a new LDPRm contained by the
LDPCv, reflecting the state of the LDPRv at the time of the POST
. Any request
body MUST be ignored.
A POST
request with a Memento-Datetime
header SHOULD be understood to create a new LDPRm contained by the LDPCv, with the state
given in the request body and the datetime given in the Memento-Datetime
request header.
POST
s for LDPCvs
If implementations do not support one or both of the POST
cases above, they MUST respond to
such requests with a 4xx range status code and a link to an appropriate constraints document (see
[[!LDP]] <IP_ADDRESS>).
Non-normative note: The constraints document indicated in therel="http://www.w3.org/ns/ldp#constrainedBy"
link in theLink
header for an LDPCvPOST
request should describe a versioning mechanism (e.g. byPUT
orPATCH
to the LDPRv described by that LDPCv). DisallowingPOST
suggests that the [[!LDP]] server will manage all LDPRm creation; see Server-Managed Version Creation.
Although an LDPCv is both a TimeMap and an LDPC, implementations MAY disallow PUT requests.
Although an LDPCv is both a TimeMap and an LDPC, implementations MAY disallow PATCH requests.
Implementations MAY support DELETE
. Implementations that do support DELETE
SHOULD do so by both removing the LDPCv and removing the versioning interaction model from the
original LDPRv.
Non-normative note: This section describes the way the normative specification might be applied to implement discoverable versioning patterns. If implementations of LDPCv do not supportPOST
to mint versions, that must be advertised viaOPTIONS
as described in . This allows a client to perform anOPTIONS
request on an LDPCv to determine if it can explicitly mint versions. If the LDPCv does not supportPOST
, the client should assume some other mechanism is used to mint versions, for example, the implementation may automatically mint versions instead, but that is outside the requirements of this specification. This document specifies normatively only how LDPCvs and LDPRms can be discovered, and how they should act.
Non-normative note: UponPUT
orPATCH
to an LDPRv, a new LDPRm is created in an appropriate LDPCv. This LDPRm is the version of the original LDPRv that was just created.
Non-normative note: An LDPRm for a particular LDPRv is created onPOST
to any LDPCv associated with that LDPRv. The new LDPRm is contained in the LDPCv to which thePOST
was made and features in that LDPCv-as-a-TimeMap. This pattern is very flexible and might be useful for migration from other systems into Fedora implementations. Responses from requests to the LDPRv include arel="timemap"
link in theLink
header that references the same LDPCv as per [[!RFC7089]] section 5.
Non-normative note: Using the ingest-by-reference mechanism provided by POST withcopy
external content handling, as described in , servers may support replacement of the contents of an LDPRv with that of an LDPRm by providing the LDPRm's location as the target of a link indicating an external content request. For example, given an LDPRm with URLhttp://example.org/some/memento
, the appropriate headers would be:
Link: <http://example.org/some/memento>; rel="http://fedora.info/definitions/fcrepo#ExternalContent"; handling="copy"; type="image/tiff"
Non-normative note: [[!LDP]] is not explicit, but implies that a resource may not be contained by more than one LDPC. Implementations may want to take this implication into account when creating an LDPRm of an LDPC, to avoid having any members of the LDPC be contained by both the LDPRv and the LDPRm of the LDPC. Alternatives include having a LDPRm's containment triple point to the member's LDPRm, or having the LDPRm return triples about the LDPRv, not the LDPRm itself.
Non-normative note: This section defines when notifications are made available by Fedora implementations, the minimal set of data contained in these notifications, and how the data is serialized. Notifications may be emitted synchronously or asynchronously with the API operations that cause them to be emitted. These notifications are typically used to support external integrations. The structure of these notifications draws upon the existing [[activitystreams-core]] and [[ldn]] specifications. Implementations are free to choose from any transport technology so long as the notifications conform to what is described in the following sections.
Implementers should be aware that some operations may cause multiple resources to change. In these cases, there will be a corresponding notification describing each of the changes. This is especially true for changes to containment or membership triples. This is also true if a
DELETE
operation triggers changes in any contained resources.Consumers of these notifications should not expect a strict ordering of the events reported therein: the fact that a notification for Event A is received before a notification for Event B does not imply that Event A occurred before Event B. Implementations may choose to make further guarantees about ordering.
According to the [[activitystreams-core]] specification, it is possible to collect multiple events into a single notification. This specification makes no restriction on the use of activity stream collections.
For every resource whose state is changed as a result of an HTTP operation, there MUST be a corresponding notification made available describing that change.
The notification serialization MUST conform to the [[!activitystreams-core]] specification.
Wherever possible, data SHOULD be expressed using the [[!activitystreams-vocabulary]].
Each event described by a notification MUST contain:
Each event described by a notification SHOULD contain:
ldp:inbox
for the resource that was changed, if such an inbox link exists
Notifications SHOULD NOT contain the entire content of repository resources.
{ "@context": "https://www.w3.org/ns/activitystreams", "id": "urn:uuid:3c834a8f-5638-4412-aa4b-35ea80416a18", "type": "Create", "name": "Resource Creation", "actor": "http://example.org/agent/fedoraAdmin", "object": { "id": "http://example.org/fcrepo/rest/resource/path", "type": [ "ldp:Container", "ldp:RDFSource" ] } }
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "isPartOf": { "@id": "http://purl.org/dc/terms/isPartOf", "@type": "@id" } } ], "id": "urn:uuid:be29ae69-2134-f1b0-34be-2f91b6d1f029", "type": "Update", "name": "Resource Modification", "published": "2016-07-04T13:46:39Z", "inbox": "http://example.org/ldn/inbox/path", "actor": [ { "id": "#actor0", "type": "Person", "name": "fedo raAdmin" }, { "id": "#actor1", "type": "Service", "name": "APIX-core/0.1" } ], "object": { "id": "http://example.org/fcrepo/rest/resource/path", "updated": "2016-07-04T13:44:39Z", "type": [ "ldp:Container", "ldp:RDFSource", "http://example.org/type/CustomType" ], "isPartOf": "http://example.org/fcrepo/rest/" } }
Non-normative note: For the purposes of the following specification, a fixity result is an extract or summary of some LDP-NR made according to some explicit procedure. Fixity results are taken for the purpose of comparing different fixity results for the same resource over time, to ensure a continuity of that resource's identity according to the particular procedure used. Examples might include:
- Checksums like MD5 or SHA1, often used for digital images.
- XML Signatures
- Per-segment results as used for time-based media
This specification describes two fixity verification mechanisms: firstly, as part of content transmission, to guard against faults in transmission, and secondly, by comparison to a known or proffered digest value, to monitor for faults in persistence.
Non-normative note: Transmission fixity may be verified by including aDigest
header (defined in [[RFC3230]]) inPOST
andPUT
requests for LDP-NRs.
Non-normative note: A client may retrieve the checksum of an LDP-NR by performing aHEAD
orGET
request on it with theWant-Digest
header (using aHEAD
request allows the client to avoid transferring the entire content when only the checksum is needed). TheDigest
header in the response can be used to infer persistence fixity by comparing it to previously-computed values.
Fedora implementations are subject to the same privacy considerations that are found in the following specifications:
There are security considerations for any HTTP server exposed to the Internet. Implementations SHOULD make use of the many security-related features of HTTP, including use of the authentication framework defined in the Authentication chapter of the HTTP/1.1 specification [[!RFC7235]].
Fedora implementations are subject to the same security considerations that are found in the following specifications:
Security considerations for features introduced in this specification can be located in their individual sections:
The following people have been instrumental in providing thoughts, feedback, reviews, content, criticism and input in the creation of this specification:
Aaron Birkland, Sarven Capadisli, Aaron Coburn, Sergio Fernández, Tom Johnson, Ben Pennell, Nick Ruest, Rob Sanderson, Bethany Seeger, Adam Soroka, Herbert Van de Sompel, Adam Wead, Joshua Westgard, Jared Whiklo, and others in the Fedora Repository, Islandora and Samvera communities.


This widget displays the value of an indicator for a chosen country and its trend over time.
The data backing this widget is made available through Internet Monitor, which aggregates and analyzes data from a wide range of sources. Information on each of the individual indicators is available on our Data Sources page.


My name is Nicanor Ignacio Chuma and I am a student of the equivalent of a Bachelor's Degree in Computer Systems Engineering in the UTN FRBA from Argentina. I am also a Junior Web Developer with motivation and enthusiasm to gain more knowledge as I go.
I am also very passionate about building websites and software because I have interest in figuring out how everything that I see works.
Feel free to contact me for any more information.
ResumeThis project is a background gradient generator that was devolped while learning to make use of Javascript to make a color input and provide a gradient rgb color set to put in your own website.
Basic landing page developed for a family business called Abejas del Parana. It is meant to be a simple landing to be shared with family and friends and to provide contact to possible customers.
This project is a react.js app that uses user information that is on a website to display it as user cards with their own information that can be filtered using a search-bar in an interactive manner.
This project is an app that was built using React.js to build the Front End, Node.js and Express.js to build the Back End Server and PostgreSQL to build a database for the users profiles. After logging in you can use the app to detect faces in pictures and keep a record for each user.
Really looking forward to work with you
Send email


AUTUMN NIGHT
"I'm sitting in my apartment, on my freshly cleaned sheets, with pumpkin candles burning, and an old book that's new to me in my hands. It's just warm enough that I can leave the window open, and as I read, a breeze of crisp air
flows through, and pushes the pages forward. I'm wearing warm socks and a big sweater, waiting for the pumpkin pie to be done in the oven, and him. I've made it for him - someone with whom I'd like to analogize our relationship
to blooming like autumn - the second spring when every leaf is a flower."
Mai Minta
Wollongong - 16/10/1967


Netizens react to old versus new Sonic design
- Advertisement -
The newly redesigned Sonic for the upcoming live-action movie is here with fans seemingly happy with the look.
The new-look is more familiar like the stylised, wide-eyed look that people who played a modern-day Sonic game or watched Sonic Boom would recognise.
Here are some hot takes from the original design compared to the latest reactions.
The original movie was so divisive that it inspired numerous memes about other video game characters with teeth.
- Advertisement -
Here is what some fans’ reaction to the new design on Twitter.
And we have Sonic co-creator Yuji Naka and his immediate thoughts:
Naka’s statement translates that there is a new trailer for Sonic with a new design. The new Sonic has gloves added but the eyes are not connected. That creates an uncomfortable feeling but Naka said he is looking forward to see the movie.
The Internet is in a frenzy about the newly designed Sonic the Hedgehog live-action movie.
Director of Sonic the Hedgehog, Jeff Fowler makes fun of the reception to the original design after leaks and early reactions started appearing, but before the original trailer released.
Brian Altano from IGN lamented that he jumped to criticism of the original design and trailer, but ended up feeling gross for it. You can read his piece to see why.
Jim Carrey wasn’t safe from criticism for his look as Dr Robotnik despite being the brightest spot of the original trailer.
Which one do you prefer? Do you like the toothy original?
The movie will be released on February 14, 2020.
While you’re here, check out what Jim Carrey had to say about the movie’s reshoots, or check out IGN’s side-by-side Sonic redesign comparison.
- Advertisement -


My name is Samantha Morco, but I go by Sami. I'm born and raised in the San Francisco Bay Area, but I relocated to New York in January 2017. I'm a full-stack web developer whose goal in life is to help people by creating amazing technology that will enhance the daily lives of everyone who uses it.
I attended UC Berkeley where I graduated with a bachelor's in integrative biology. During my time at Berkeley, I took a computer science course for non-majors where I learned Snap! and took a student-taught web design course and fell in love with coding. I decided to enroll in the immersive coding bootcamp Actualize and I've been involved with tech ever since.
My first full-time developer job was at Coshx Labs, a full-stack design and development consultancy for startups and the enterprise. I worked in the San Francisco office, but headquarters is in Charlotesville, Virginia. While at Coshx, I worked on a variety of both internal and external projects. I primarily coded in Rails, Javascript, and jQuery, but some projects had me learning new technologies like React and PHP (for Wordpress development).
As a student of the Actualize bootcamp, I created an app that revolves around video game sales. It uses Best Buy’s API to list video games, which can be sorted by game system. Users can add deals and reviews to a game. The app also allows users to track video game deals through a wishlist. It is built on a Ruby on Rails MVC Framework and utilizes Ruby on Rails, HTML, CSS, JavaScript, jQuery, AngularJS, and SQL.
Please feel free to contact me about anything.


I’m part of digital-only secret Santa exchange. It’s a cool idea…you’re assigned someone you may (or may not know) and tasked with coming up with a free (or very cheap, ~$5) digital gift. Some ideas were things like creating customized Spotify playlists or blog lists, creative portraits of the person from images you find online, to recipe or book suggestions.
After snooping out my person, I found that they really like being outside, but they’re a programmer by day. So, I decided to throw together a little Chrome/Firefox extension which replaces their new tab page with a randomly-found picture from Flickr.
Originally, I hardcoded tags that would always return an image of a forest. I decided that wasn’t much fun. What if they wanted to look at a beach that day?
So, I tapped into Chrome and Firefox local storage. You can input some tags (comma separated) into a simple form and hey presto! The image changes. It will use those tags with each new tab load until you change the tags.
I’m pulling the large image (1600px on the longest side) and every now and then an image fails to load. I don’t know of a good way to preprocess for missing image URLs yet. Plus, I did this in a two-day blitz. In good fashion, each photo is linked to the original file in Flickr at the bottom of the screen so you can go and give it a fav if you’re a Flickr user.
If you want to try it out you can download this zip holding both extension files.
Go to chrome:extensions
in the address bar.
Make sure the “Developer Mode” checkbox is selected.
Click on “Load unpacked extension” and select the folder you downloaded.
Enable it and then open a new tab. You’ll need to set the tags the first time.
Go to about:addons
in the address bar.
Click on the gear icon (top right) and select “Install Add-On From File…”
Select the .xpi
file from your download and enable it in the popup.
Open a new tab and set your keywords.
—
Featured image is a screenshot of the extension which is showing Crowded summer beach. High angle view flickr photo by slon.pics shared into the public domain using Creative Commons Public Domain Dedication (CC0)
Written on December 19th, 2017 by Brian Bennett Categorized in: All Creative
Leave a comment


{% import "macros.html" as macros %}
{% extends "layout.html" %}
{% block article_body %}
{% markdown %}
The greater China region that encompasses mainland China, Hong Kong and Taiwan is becoming increasingly important in the world of business education.
Many schools have received seals of approval from AACSB and Equis, the two leading global business education accreditation organisations. Many also attract significant numbers of international students.
For the first time, the FT has compiled data that will enable prospective students to compare business schools more easily in the region. 26 schools have participated.
Below are three separate tables listing 13 business schools in mainland China, five in Hong Kong and eight in Taiwan. Each participating school has shared data on its headline MBA, masters in management and masters in finance programmes, revealing details such as the proportion of international students and average starting salary of graduates.
Click on the column headings to sort each table according to the information most relevant to you. You can organise the schools alphabetically, by programme type, by tuition fee or by starting salary by clicking on the arrows at the top of each column. For more information, click on the programme title to navigate to the website of that business school.
To see how we defined each metric, please refer to the [footnotes](#footnotes) below the tables. On mobile devices, the tables will be transposed and scroll left to right.
{% endmarkdown %}
{% endblock %}


Phora Delivers "Set You Free"
Phora delivers a new message.
by Milca P.Set You Free
Phora
Editor Rating: HOTTTTT
User Rating: hottttt - 67% (3)
Rapper Phora has returned to share his newest "Set You Free" track, a song penned as an ode to a victim of domestic violence as he attaches a matching clip to the track in its debut.
"I wrote this song about a girl I knew who went through something I couldn’t do anything about," Phora revealed in an Instagram post. "I felt powerless, like I wanted to change the situation and free her from what she was going thru.. she was trapped, stuck, lost in a TOXIC situation she didn’t wanna be in.. I know that so many people are going thru the same thing, some even worse, so I wanted to put how I felt in a song to let her and the rest of the world know they deserve better than to be trapped in a toxic situation."


Box Shadow
This module provides several options for box-shadow. Feel free to customize if they do not suit your needs.
%= head %>
<%= siteHeader %>This module provides several options for box-shadow. Feel free to customize if they do not suit your needs.
.shadow-1
.shadow-2
.shadow-3
.shadow-4
.shadow-5
<%= srccss %>


Teams
|
Groups
|
Filter Matches
|
Matches in Play
|
Match Odds Update
|
Group of Death Visual
|
Match Odds Visual
Matches In Play [jQuery & Mustache]


| HBASE-11994 |
PutCombiner floods the M/R log with repeated log messages. |
Major |
mapreduce |
Aditya Kishore |
Aditya Kishore |
| HBASE-11991 |
Region states may be out of sync |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-11266 |
Remove shaded references to logger |
Major |
build |
Elliott Clark |
Elliott Clark |
| HBASE-10314 |
Add Chaos Monkey that doesn't touch the master |
Major |
test |
Elliott Clark |
Elliott Clark |
| HBASE-12025 |
TestHttpServerLifecycle.testStartedServerWithRequestLog hangs frequently |
Major |
test |
stack |
stack |
| HBASE-12007 |
StochasticBalancer should avoid putting user regions on master |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-10757 |
Change HTable class doc so it sends people to HCM getting instances |
Critical |
. |
stack |
stack |
| HBASE-11145 |
UNEXPECTED!!! when HLog sync: Queue full |
Critical |
wal |
Anoop Sam John |
stack |
| HBASE-11982 |
Bootstraping hbase:meta table creates a WAL file in region dir |
Major |
. |
Enis Soztutar |
Enis Soztutar |
| HBASE-11906 |
Meta data loss with distributed log replay |
Major |
. |
Jimmy Xiang |
Jeffrey Zhong |
| HBASE-11988 |
AC/VC system table create on postStartMaster fails too often in test |
Critical |
. |
Anoop Sam John |
stack |
| HBASE-11974 |
When a disabled table is scanned, NotServingRegionException is thrown instead of TableNotEnabledException |
Major |
. |
Ted Yu |
Ted Yu |
| HBASE-12043 |
REST server should respond with FORBIDDEN(403) code on AccessDeniedException |
Minor |
REST |
Aditya Kishore |
Aditya Kishore |
| HBASE-12044 |
REST delete operation should not retry disableTable for DoNotRetryIOException |
Minor |
REST |
Aditya Kishore |
Aditya Kishore |
| HBASE-12045 |
REST proxy users configuration in hbase-site.xml is ignored |
Major |
. |
Aditya Kishore |
Aditya Kishore |
| HBASE-12024 |
Fix javadoc warning |
Trivial |
documentation |
Matteo Bertozzi |
Anoop Sam John |
| HBASE-12067 |
Remove deprecated metrics classes. |
Major |
metrics |
Elliott Clark |
Elliott Clark |
| HBASE-12064 |
hbase.master.balancer.stochastic.numRegionLoadsToRemember is not used |
Minor |
Balancer |
Junegunn Choi |
Junegunn Choi |
| HBASE-12056 |
RPC logging too much in DEBUG mode |
Major |
. |
Enis Soztutar |
Enis Soztutar |
| HBASE-10748 |
hbase-daemon.sh fails to execute with 'sh' command |
Major |
scripts |
Ashish Singhi |
Ashish Singhi |
| HBASE-12054 |
bad state after NamespaceUpgrade with reserved table names |
Major |
. |
Matteo Bertozzi |
Matteo Bertozzi |
| HBASE-11405 |
Multiple invocations of hbck in parallel disables balancer permanently |
Major |
Balancer, hbck |
bharath v |
bharath v |
| HBASE-12041 |
AssertionError in HFilePerformanceEvaluation.UniformRandomReadBenchmark |
Major |
. |
Jean-Marc Spaggiari |
stack |
| HBASE-12052 |
BulkLoad Failed due to no write permission on input files |
Major |
. |
Jeffrey Zhong |
Jeffrey Zhong |
| HBASE-12019 |
hbase-daemon.sh overwrite HBASE_ROOT_LOGGER and HBASE_SECURITY_LOGGER variables |
Minor |
scripts |
Sebastien Barrier |
Sebastien Barrier |
| HBASE-12034 |
If I kill single RS in branch-1, all regions end up on Master! |
Critical |
master |
stack |
Jimmy Xiang |
| HBASE-12042 |
Replace internal uses of HTable(Configuration, String) with HTable(Configuration, TableName) |
Major |
. |
Solomon Duskis |
Solomon Duskis |
| HBASE-12098 |
User granted namespace table create permissions can't create a table |
Critical |
Client, security |
Dima Spivak |
Srikanth Srungarapu |
| HBASE-12119 |
Master regionserver web UI NOT_FOUND |
Minor |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12038 |
Replace internal uses of signatures with byte[] and String tableNames to use the TableName equivalents. |
Major |
. |
Solomon Duskis |
Solomon Duskis |
| HBASE-12123 |
Failed assertion in BucketCache after HBASE-11331 |
Major |
regionserver |
Enis Soztutar |
Nick Dimiduk |
| HBASE-12134 |
publish_website.sh script is too optimistic |
Major |
scripts |
Misty Stanley-Jones |
Misty Stanley-Jones |
| HBASE-12135 |
Website is broken |
Blocker |
documentation |
Misty Stanley-Jones |
Misty Stanley-Jones |
| HBASE-12095 |
SecureWALCellCodec should handle the case where encryption is disabled |
Major |
. |
Ashish Singhi |
Ted Yu |
| HBASE-12139 |
StochasticLoadBalancer doesn't work on large lightly loaded clusters |
Critical |
Balancer, master |
Elliott Clark |
Elliott Clark |
| HBASE-11804 |
Raise default heap size if unspecified |
Major |
scripts |
Elliott Clark |
Elliott Clark |
| HBASE-12130 |
HBASE-11980 calls hflush and hsync doing near double the syncing work |
Critical |
. |
stack |
stack |
| HBASE-12145 |
Fix javadoc and findbugs so new folks aren't freaked when they see them |
Major |
. |
stack |
stack |
| HBASE-12065 |
Import tool is not restoring multiple DeleteFamily markers of a row |
Minor |
util |
Maddineni Sukumar |
Maddineni Sukumar |
| HBASE-12078 |
Missing Data when scanning using PREFIX_TREE DATA-BLOCK-ENCODING |
Critical |
. |
Duo Zhang |
Duo Zhang |
| HBASE-12120 |
HBase shell doesn't allow deleting of a cell by user with W-only permissions to it |
Major |
shell |
Dima Spivak |
Srikanth Srungarapu |
| HBASE-12140 |
Add ConnectionFactory.createConnection() to create using default HBaseConfiguration. |
Major |
Client |
Jean-Marc Spaggiari |
Jean-Marc Spaggiari |
| HBASE-12153 |
Fixing TestReplicaWithCluster |
Trivial |
test |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-12158 |
TestHttpServerLifecycle.testStartedServerWithRequestLog goes zombie on occasion |
Major |
test |
stack |
stack |
| HBASE-12149 |
TestRegionPlacement is failing undeterministically |
Minor |
test |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-12160 |
Make Surefire's argLine configurable in the command line |
Major |
. |
Elliott Clark |
Elliott Clark |
| HBASE-12151 |
Make dev scripts executable |
Minor |
scripts |
Misty Stanley-Jones |
Misty Stanley-Jones |
| HBASE-12164 |
Check for presence of user Id in SecureBulkLoadEndpoint#secureBulkLoadHFiles() is inaccurate |
Major |
. |
Ted Yu |
Ted Yu |
| HBASE-12122 |
Try not to assign user regions to master all the time |
Minor |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12136 |
Race condition between client adding tableCF replication znode and server triggering TableCFsTracker |
Major |
Replication |
Virag Kothari |
Virag Kothari |
| HBASE-12167 |
NPE in AssignmentManager |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12156 |
TableName cache isn't used for one of valueOf methods. |
Major |
. |
Andrey Stepachev |
Andrey Stepachev |
| HBASE-12166 |
TestDistributedLogSplitting.testMasterStartsUpWithLogReplayWork |
Major |
test, wal |
stack |
Jimmy Xiang |
| HBASE-12137 |
Alter table add cf doesn't do compression test |
Major |
master |
Virag Kothari |
Virag Kothari |
| HBASE-8808 |
Use Jacoco to generate Unit Test coverage reports |
Trivial |
build |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-12124 |
Closed region could stay closed if master stops at bad time |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12146 |
RegionServerTracker should escape data in log messages |
Trivial |
. |
Lars Hofhansl |
stack |
| HBASE-11890 |
HBase REST Client is hard coded to http protocol |
Major |
Client |
Eric Yang |
Qiang Tian |
| HBASE-12184 |
ServerShutdownHandler throws NPE |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-6994 |
minor doc update about DEFAULT_ACCEPTABLE_FACTOR |
Minor |
documentation |
Liang Xie |
Liang Xie |
| HBASE-9005 |
Improve documentation around KEEP_DELETED_CELLS, time range scans, and delete markers |
Minor |
documentation |
Lars Hofhansl |
Misty Stanley-Jones |
| HBASE-11815 |
Flush and compaction could just close the tmp writer if there is an exception |
Trivial |
. |
ramkrishna.s.vasudevan |
ramkrishna.s.vasudevan |
| HBASE-12106 |
Move test annotations to test artifact |
Major |
. |
Enis Soztutar |
Enis Soztutar |
| HBASE-12191 |
Make TestCacheOnWrite faster. |
Trivial |
test |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-12196 |
SSH should retry in case failed to assign regions |
Major |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12199 |
Make TestAtomicOperation and TestEncodedSeekers faster |
Trivial |
test |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-8936 |
Fixing TestSplitLogWorker while running Jacoco tests. |
Trivial |
. |
Manukranth Kolloju |
Manukranth Kolloju |
| HBASE-12181 |
Some tests create a table and try to use it before regions get assigned |
Major |
. |
Dima Spivak |
Dima Spivak |
| HBASE-12206 |
NPE in RSRpcServices |
Minor |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12200 |
When an RPC server handler thread dies, throw exception |
Minor |
regionserver |
Alicia Ying Shu |
Alicia Ying Shu |
| HBASE-12209 |
NPE in HRegionServer#getLastSequenceId |
Minor |
. |
Jimmy Xiang |
Jimmy Xiang |
| HBASE-12218 |
Make HBaseCommonTestingUtil#deleteDir try harder |
Major |
. |
Elliott Clark |
Elliott Clark |
| HBASE-12109 |
user_permission command for namespace does not return correct result |
Minor |
shell |
Vandana Ayyalasomayajula |
Vandana Ayyalasomayajula |
| HBASE-12165 |
TestEndToEndSplitTransaction.testFromClientSideWhileSplitting fails |
Major |
test |
stack |
stack |
| HBASE-12198 |
Fix the bug of not updating location cache |
Minor |
Client |
Yi Deng |
Yi Deng |
| HBASE-12183 |
FuzzyRowFilter doesn't support reverse scans |
Major |
Filters |
Nick Dimiduk |
Nick Dimiduk |
| HBASE-12197 |
Move REST |
Major |
REST |
Elliott Clark |
Elliott Clark |
| HBASE-11394 |
Replication can have data loss if peer id contains hyphen "-" |
Major |
. |
Enis Soztutar |
Talat UYARER |
| HBASE-12126 |
Region server coprocessor endpoint |
Major |
Coprocessors |
Virag Kothari |
Virag Kothari |
| HBASE-12170 |
TestReplicaWithCluster.testReplicaAndReplication timeouts |
Major |
test |
stack |
stack |
| HBASE-12465 |
HBase master start fails due to incorrect file creations |
Major |
master |
Biju Nair |
Alicia Ying Shu |


Have an idea? KikBits can help you transform your idea into reality.
Find Out MoreBe it a web app, a server or a browser extension. Our team of talented front-end and back-end developers can help you build your next app.
We are no usual!
We'll gather detailed requirements from you making sure we understand each and every detail.
Once requirements are complete. We'll split the project into milestones and provide time and cost estimates for each milestone.
We keep you updated with the project progress in the form of milestones so that feedback or requirement changes are incorporated as early as possible.
A product you would love!
Ready to start your next project with us? That's great! Send us an email and we will get back to you as soon as possible!


pips Red=124 White=60
(CorrectAnswer= 0/0, ErrorScore= 0)
In the history of backgammon there have only been four books written that have been dedicated solely to the topic of doubling. Two of those, “Backgammon Winning with Doubling Cube” by Peter Bell and “Advanced Cube Strategy” by Gaby Horowitz and Bruce Roman, are riddled with errors and misconceptions and should not really be in anybody’s backgammon library.
The other two are “The Doubling Cube Volume 1” by Jeff Ward, which stands the test of time but has long been out of print, and “The Backgammon Encyclopedia Volume 1 by Kit Woolsey. Woolsey’s book is excellent but the proofs have been lost so it too is currently unavailable unless you can find one second-hand.
The good news is that there is now a fifth book as The Gammon Press have just published Woolsey’s “The Backgammon Encyclopedia Volume 2”. The format of the book is the same as Volume 1. Woolsey takes a scenario such as priming and starts with a base position for which he establishes the correct cube action. He then varies the position to judge the impact of changing various different elements. In this way the reader can begin to understand what is important in any given position type and learns how to think correctly about the cube action.
This week’s position is taken from the excellent chapter on Containment. Sadly for the student each of the variables has an influence on the cube handling. Those variables are:
• Number of White checkers borne off
• The strength of White’s home board
• The length and position of Black’s prime
• Number of Black builders in position to make the next point in the prime
• The position of the contained checker
In the position shown Black not quite strong enough to redouble although it is very close. If White had only borne off one checker rather than two then Black would have a marginal redouble. Getting such positions right over the board is very difficult but studying such positions in a structured manner is a key method for improving one’s over the board performance.
Like all backgammon books Volume 2 of the Encyclopedia will never be a best-seller but, for those prepared to put in the hours of study, it will certainly help to improve their decision making in difficult situations. I have always been a firm believer in Malcolm Gladwell’s “10,000 Hours” concept. That is, to become world-class at anything you need to put in 10,000 hours of study, practice and play. Reading Volume 2 should be part of everybody’s 10,000 hours.
The other two are “The Doubling Cube Volume 1” by Jeff Ward, which stands the test of time but has long been out of print, and “The Backgammon Encyclopedia Volume 1 by Kit Woolsey. Woolsey’s book is excellent but the proofs have been lost so it too is currently unavailable unless you can find one second-hand.
The good news is that there is now a fifth book as The Gammon Press have just published Woolsey’s “The Backgammon Encyclopedia Volume 2”. The format of the book is the same as Volume 1. Woolsey takes a scenario such as priming and starts with a base position for which he establishes the correct cube action. He then varies the position to judge the impact of changing various different elements. In this way the reader can begin to understand what is important in any given position type and learns how to think correctly about the cube action.
This week’s position is taken from the excellent chapter on Containment. Sadly for the student each of the variables has an influence on the cube handling. Those variables are:
• Number of White checkers borne off
• The strength of White’s home board
• The length and position of Black’s prime
• Number of Black builders in position to make the next point in the prime
• The position of the contained checker
In the position shown Black not quite strong enough to redouble although it is very close. If White had only borne off one checker rather than two then Black would have a marginal redouble. Getting such positions right over the board is very difficult but studying such positions in a structured manner is a key method for improving one’s over the board performance.
Like all backgammon books Volume 2 of the Encyclopedia will never be a best-seller but, for those prepared to put in the hours of study, it will certainly help to improve their decision making in difficult situations. I have always been a firm believer in Malcolm Gladwell’s “10,000 Hours” concept. That is, to become world-class at anything you need to put in 10,000 hours of study, practice and play. Reading Volume 2 should be part of everybody’s 10,000 hours.
Cube analysis 2-ply cubeless equity +0.416 0.747 0.000 0.000 - 0.253 0.073 0.005 Cubeful equities: 1. No double +0.717 2. Double, pass +1.000 (+0.283) 3. Double, take +0.662 (-0.054) Proper cube action: No redouble, take (16.1%)


@main("Home", user = null) {
Welcome to WEYGYM.
We currently run daily classes, browse our options and when you find the class your into give us a call and book your spot.
Please enjoy the pictures of our top of the range equipment you will experience in WEYGYM.
If you see something you like or would like to see more why not call into any of our three branch’s located in Tallaght, Rathcoole or Lucan.
I hope you find what you’re looking for with WEYGYM…..
Gigantic business solution


EEVIE LOGO
Home
Logout
My Templates
Create Template
Name
Last Modified
Sample template
June 23, 2017
Edit
Other Templates
Name
Created By
Last Modified
Sample template
Author
June 23, 2017
Save


‘Study Events, Events, ‘Weight
8 § 8
AA
Zhang (2010) 0.90 (0.59, 1.36) 29/121 Akar (2002) 0.24 (0.02, 2.43) 1/65 Broniarczyk-Dyla (2002) 0.41 (0.02, 8.01) 052 Entz (2006) 3.09 (0.13, 76.50) 1/161 Tao (2011) 0.55 (0.35,0.87) 23/112 Megiomi (2011) 2.51 (0.35, 18.09) 2/85 Barbosa (2016) 4,140.14, 11.29) 1133
D+L Overall (I-squared = 0.0%, p = 0.441) 0.74 (0.55,0.99) 57/629
M-H Overall 0.72 (0.54, 0.97)
NOTE: Weights are from random effects analysis
01 1 20
‘Controls (D+L)
6492/24930 50.80
350 1.69 3/152 1.00 0/165 0.86
1809/5645 41.68
2/210 228
3112 1.68
8312/31264 100.00


When you register a webhook for an event or for multiple events (for example, for Code Push
and for Pull Request
events), your source code hosting service will call the webhook every time the related event happens.
On bitrise.io these webhooks calls are called triggers,
and can be mapped to different Workflows
, or not mapped at all.
If you don’t map a trigger to any workflow, then bitrise.io won’t
start a build. If you map it to a workflow, then a build will be started
with the selected workflow.
In the following examples, we’ll use a very simple Bitrise configuration (bitrise.yml
),
which does nothing else just prints the selected workflow’s ID:
---
format_version: 1.3.0
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: "*"
workflow: primary
- pull_request_target_branch: "*"
pull_request_source_branch: "*"
workflow: primary
- tag: "*"
workflow: primary
workflows:
primary:
steps:
- script:
inputs:
- content: |-
#!/bin/bash
echo "$BITRISE_TRIGGERED_WORKFLOW_ID"
The above example bitrise.yml
will select the primary
branch for every Code Push (push_branch: "*"
), Tag Push (tag: "*"
)
and for every Pull Request (pull_request_target_branch: "*"
& pull_request_source_branch: "*"
).
If you remove the pull request item from the trigger_map
list, then
no pull request will trigger a build anymore. Example:
trigger_map:
- push_branch: "*"
workflow: primary
This configuration will start a build with the primary
workflow for every code push, but for nothing else (for example not for pull requests).
Components of the trigger_map
⚓
A trigger_map
is a list of filters, and the workflow
the given
filters should select in case of a matching trigger.
Every filter item has to include at least one condition!
This means that you can’t have an item which only specifies the workflow
,
at least one filter (push_branch
/ pull_request_source_branch
/ pull_request_target_branch
/ tag
)
has to be specified!
The available filters: ⚓
push_branch
: A filter which is matched against Code Push events’ “branch” parameterpull_request_source_branch
: A filter which is matched against Pull Request events’ “source branch” parameter (the branch the pull request was started from)pull_request_target_branch
: A filter which is matched against Pull Request events’ “target branch” parameter - the branch the pull request will be merged intotag
: A filter which is matched against Tag Push events’ “tag” (name) parameterpattern
: DEPRECATED - this filter was used for both code push and pull request events, in combination withis_pull_request_allowed
. This filter is now deprecated, as the new filters allow better control over event mapping.
If you define multiple filters in a single item then all filters have to match in order to select that item’s workflow. For example:
trigger_map:
- pull_request_target_branch: "master"
pull_request_source_branch: "develop"
workflow: primary
will only select the primary
workflow if the pull request’s source branch is develop
AND
the target branch is master
.
If you want to specify filters which should be treated separately, for example, to select primary
for pull requests where the source is develop
, as well as select
for the ones which target master
:
trigger_map:
- pull_request_target_branch: "master"
workflow: primary
- pull_request_source_branch: "develop"
workflow: primary
One last note, which is hopefully not surprising after the previous example:
you can’t mix and match push_branch
, tag
and the pull_request_..
filters in the same item.
This would effectively mean that the workflow should be selected
if the event is a Code Push and a Pull Request (or Tag Push) event at the same time.
This is simply not possible, source code hosting services send separate
webhooks for Pull Request (pre-merge state), Tags and for Code Push events.
A single webhook event will never be Code Push, Tag Push and Pull Request at the same time,
a single webhook is always related to only one type (Code Push, Tag Push or Pull Request).
One trigger = one build ⚓
One trigger can only select a single workflow / can only start a single build. The first item which matches the trigger will select the workflow for the build!
If you want to run more than one workflow, you can Chaining workflows after each other. The workflows chained this way won’t run in parallel, but the full chain of workflows will be executed, in the order you chain them.
The order of the items also matter: if you’d specify a push_branch: mast
item after a _push_branch: "*"_
item, the push_branch: master
would never be selected
as every code push event would match push_branch: "*"
first,
and the first item which matches the trigger will select the workflow for the build!
How to build only a single branch ⚓
If you want to build only a single branch, for every code push, but for nothing else (no push to
any other branch should trigger a build, nor any pull request or tag), then
all you have to do is to specify a trigger_map
which does not map anything else
to any workflow, only the branch you want to build.
For example, if you only want to build the master
branch on code push:
trigger_map:
- push_branch: master
workflow: primary
Or if you only want to build feature/
branches:
trigger_map:
- push_branch: feature/*
workflow: primary
Or the two together:
trigger_map:
- push_branch: master
workflow: primary
- push_branch: feature/*
workflow: primary
This configuration will start a build for every code push which happens on
either master
or on a feature/
branch, and will use the same workflow for
both (primary
).
If you want to use a different workflow for your master
branch, then
all you have to do is to change the workflow:
for that trigger map item:
trigger_map:
- push_branch: master
workflow: deploy
- push_branch: feature/*
workflow: primary
This configuration will use the workflow deploy
for every code push on master
,
and the workflow primary
for every code push on feature/
branches,
and will not start a build for anything else.
A very simple, two-workflow CI/CD setup ⚓
A base CI/CD setup involves two workflows: one for integration tests, and one for distribution.
If you have a workflow primary
for doing the integration tests,
and deploy
to do the deployment / distribution, and you want to
run the integration test for code pushes and pull requests on every branch
except the master
branch, which should instead use the deploy
workflow:
trigger_map:
- push_branch: master
workflow: deploy
- push_branch: "*"
workflow: primary
- pull_request_target_branch: "*"
workflow: primary
Don’t start two builds for pull requests from the same repository ⚓
When you start a Pull Request from the same repository (not from a fork, just from a branch of the repository), the source code hosting service will send two webhooks, one for the code push and one for the pull request!
Whether you want to build both or just one of these in case of a pull request
is up to you and depends on your project’s requirements, but with bitrise
you can decide whether you want it or not.
An example to build only the pull request (“pre-merged”) events/state,
in addition to deploying master
:
trigger_map:
- push_branch: master
workflow: deploy
- pull_request_target_branch: "*"
workflow: primary
or if you don’t want to start a build for pull requests, only for code push events:
trigger_map:
- push_branch: master
workflow: deploy
- push_branch: "*"
workflow: primary
Three workflows: test, deploy to staging and deploy to production ⚓
Another common CI/CD pattern is to have three workflows:
- A Test workflow, which will run for every pull request, every code push on
feature/
branches etc., to test whether the test can be integrated into a release (branch) - A Staging deployment workflow, to deploy the app/code to an internal/testing system. Examples:
- In case of an iOS app this can be, for example, an Ad Hoc signed IPA deployed to HockeyApp, where your tester team can download and test it, or a deploy to iTunes Connect / TestFlight for internal testing.
- In case of an Android app this can be a deploy to Google Play to a “beta” track.
- In case of a server code this can be a deploy to, for example, a staging Heroku server.
- A Production deployment workflow, to deploy the app/code into production. Examples:
- In case of an iOS app this can be an App Store signed IPA deployed to iTunes Connect/TestFlight, enabled for “external testing”.
- In case of an Android app this can be a deploy to Google Play as a public update of the app.
- In case of a server code this can be a deploy to, for example, the production Heroku server.
So, we have three workflows (primary
(test), deploy-to-staging
and deploy-to-production
)
and we’ll specify three triggers, to select the right workflow for the right trigger.
There are two similar approaches, depending whether you prefer tags of branches for production deployment:
Using Tags to trigger the production deployment ⚓
trigger_map:
- tag: v*.*.*
workflow: deploy-to-production
- push_branch: master
workflow: deploy-to-staging
- push_branch: "*"
workflow: primary
- pull_request_target_branch: "*"
workflow: primary
This trigger map configuration will trigger a build:
- with the
deploy-to-production
workflow if a new tag (with the formatv*.*.*
,v1.0.0
) is pushed - with the
deploy-to-staging
workflow if a code push happens on themaster
branch (for example, a pull request is merged into themaster
branch) - with the
primary
workflow for any other branch and for pull requests
Using a Branch to trigger the production deployment ⚓
trigger_map:
- push_branch: master
workflow: deploy-to-production
- push_branch: develop
workflow: deploy-to-staging
- push_branch: "*"
workflow: primary
- pull_request_target_branch: "*"
workflow: primary
This trigger map configuration will trigger a build:
- with the
deploy-to-production
workflow if a code push happens on themaster
branch (for example, a git flow release branch merged intomaster
) - with the
deploy-to-staging
workflow if a code push happens on thedevelop
branch (for example, a pull request is merged into thedevelop
branch) - with the
primary
workflow for any other branch and for pull requests
How to build only pull requests ⚓
If all you want is to run integration tests for pull requests, and you don’t want to do anything else, then you can use a trigger map configuration like this:
trigger_map:
- pull_request_target_branch: "*"
workflow: primary
This will select the primary
workflow for every and any pull request,
and will not start a build for anything else.
If you’d only want to build pull requests which are targeted to
be merged into master
, the configuration would look like this:
trigger_map:
- pull_request_target_branch: master
workflow: primary


my night started usual, just chillen with some freinds. we had some bags, my freind was prescribed 20 miligram pills of Adderall and had them on her. I did alot of concerta and dexetrin so i knew what to expect. I dropped the first 3 pills at 6:35 p.m. and within 20 minutes i felt a nice little boost. so i decided to take 2 more. i now had 100 miligrams in my body. my leg started to twitch a little and i became the conversationalist of the group. While 6 of my freinds smoked i just sat there telling stories with everyone on edge listening, and then i felt the full effects. an immediate adrenaline rush smacked my body from the top of my head to my feet and i was in bloodboiling mode. i could have done anything. i started smokign ciggarettes one right after another like a crackfiend until 3 quarters of the pack was gone. i had become so dehydrated that i began to drink orange juice that i found in my freinds fridge. i drank, and drank, and drank, until i killed half of it.
Then i went out and testdrove my freinds car. Driving with 100 miligrams of Adderall pumping through my veins was on of the hottest things i have ever done. i felt like an invincable wheelman driving to the phatest party in town with the music blasting and all my freinds in the car, when in reality i was just driving around. i began to see mild hillucinations of bursts of colors that werent there so i went back to ym friend house.
when i arrived home that night i listened to some underground rave and then went to lay in my bed. I was the common insomniac sweatign through my sheets and shaking, but despite my uncomfortableness i was still content with the thoughts rushing through my head. everything from nightclubs to my girlfreind, i was so happy. Then when i went to pee i noticed somethign unbelievable, my d*ck had literally shrunk and shriveled up to the size of my pinky. it was 100 percent limp and i could not feel it at all. it was impossible to get an erection no matter how hard i tried. i was unbelievably scared thinking i would ahve to go to a hospital and have it removed becasue it was becomign discolored really bad, like a dirty yellow brown almost. i drank large amounts of water and went back into my bed scared shitless.  In the end, the high was definatley worth it.
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.


The First Product Page
Features
How-it-works
Pricing
Fast Delivery
Easy To Use
Long lasting
How it works
Lorem upsum- 1 300 $
Lorem upsum -2 500 $
Lorem upsum -3 600 $


---
layout: post
title: Praise for Agile Product Management with Scrum
tags:
- agile
status: publish
type: post
published: true
meta:
_edit_last: '1'
_wp_old_slug: ''
dsq_thread_id: '219274753'
---
“Product owners have had few places to turn to for advice, despite having the hardest role on an agile project. This book rectifies that. Roman Pichler’s insights into the duties of the product owner are powerful and practical. Correctly applied, his advice will benefit any product owner and agile team.”
—Mike Cohn, Author of Succeeding with Agile, Agile Estimating and Planning, and User Stories Applied
“Scrum is silent on how a product owner can maximize value. Most product managers and marketers don’t know how to use the iterative, incremental nature of Scrum to do so. Roman has filled this hole nicely with his new book, Agile Product Management with Scrum.”
—Ken Schwaber, codeveloper of the Scrum process
“With so little written on the intersections of agile methods and product management, Roman makes a significant contribution to the field. The book provides clear guidance and rich examples on how to become an agile product manager and a successful product owner, and, further, how to lead with a strong vision. This book is a must read for product managers new to Scrum, product owners new to product management, and any product manager who wants to get the most out of Agile.”
—Greg Cohen, Principal Consultant, 280 Group and Director, Silicon Valley Product Management Association
“I’m always happy to hear what Roman is thinking. What I really like about this book is that he not only shares his experience (“Common Mistakes” is a great section), but he also brings in the wisdom of others in the field. This powerful combination allows him to see farther ahead and share that vision with us. Thanks, Roman!”
—Linda Rising, Independent Consultant and coauthor of Fearless Change: Patterns for Introducing New Ideas


I am Sophomore at Virginia Tech majoring in Computer Science. Really enjoy programming in general and in my spare time I like to work on my music and DJ various events.


ALPHA CODE: do not use. This is where I'm testing and working on a new table Widget built on top of ObjectListTable. Once it works, it will be refactored into another package.
The goal is a table similar to the tables used on Google Code for issues. Built in support for the following will be included:
The programmer will be expected to provide a description of the table model. Table features will be enabled based on what interfaces the programmer chooses to implement.


{% extends "base.html" %} {% block title %} Edit Criminal {% endblock title %} {% block body %} Hello {{na.name}} Register Criminal Search Criminal See All Criminal Contact: {{na.contact}} Email: {{na.email}} Gender: {{na.gender}} Designation: {{na.position}} Home LogOut Edit Criminal {% csrf_token %} Criminal Name Looks good! {{c.gender}} Phone No Relative's Phone No Crime Detail Looks good! Address Looks good! UPDATE {% endblock body %}


About
GitHub
Linkedin
2023
How can Analytics Engineers protect customer data?
May 13, 2023
2021
Tools for blogging - less is more
March 13, 2021
2020
Systematic approach to improve your model
April 21, 2020
Deep learning in minutes!
January 19, 2020
Quick rules to tune a neural net
January 6, 2020
2019
Checklist fastai ml
December 14, 2019


#include <cusbd_structs_if.h>
Data Fields | |
| LIST_ListHead | list |
| CUSBD_Req * | prevReq |
| CUSBD_Req * | nextReq |
| uint8_t * | buf |
| uint32_t | length |
| uintptr_t | dma |
| uint16_t | streamId |
| uint8_t | noInterrupt |
| uint8_t | zero |
| uint8_t | shortNotOk |
| uint8_t | requestPending |
| CUSBD_CbReqComplete | complete |
| void * | context |
| uint32_t | status |
| uint32_t | actual |
Transfer request structure. I/O transfers of higher layers are realized with the help of CUSBD_Req objects. CUSBD_Req is associated with endpoints.
| uint32_t CUSBD_Req_s::actual |
number of actually processed bytes
| uint8_t* CUSBD_Req_s::buf |
buffer with data to transfer - virtual address
| CUSBD_CbReqComplete CUSBD_Req_s::complete |
Callback function called on the transfer completion event
| void* CUSBD_Req_s::context |
general-use data hook driver doesn't make use of this field. May be dsed in complete callback function
| uintptr_t CUSBD_Req_s::dma |
physical address of buf buffer
| uint32_t CUSBD_Req_s::length |
This transfer data length
| LIST_ListHead CUSBD_Req_s::list |
Head of the list.
| CUSBD_Req* CUSBD_Req_s::nextReq |
pointer to the next request in the linked list
| uint8_t CUSBD_Req_s::noInterrupt |
Setting this flag to 1 disables generating of transfer completion interrupt
| CUSBD_Req* CUSBD_Req_s::prevReq |
pointer to the previous request in the linked list
| uint8_t CUSBD_Req_s::requestPending |
Internal flag used by driver to mark request as pending
| uint8_t CUSBD_Req_s::shortNotOk |
Setting this flag causes all reading transfers with short packet as erroneous
| uint32_t CUSBD_Req_s::status |
keeps actual status of request
| uint16_t CUSBD_Req_s::streamId |
stream id - used only in Super Speed mode
| uint8_t CUSBD_Req_s::zero |
Setting this flag to 1 causes adding zero length data packet at the end of data transfer when data transfer length is a multiple of MaxPacketSize for endpoint


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.TrackingConsentConfig @import views.html.helper.CSPNonce @(form: Form[_root_.forms.AssistanceDetailsForm.Data], disabilityCategories: List[String])(implicit request: Request[_], flash: Flash, user: Option[CachedData], feedbackUrl: String, trackingConsentConfig: TrackingConsentConfig, messages: Messages) @import views.html.application.assistancedetails.{ hasDisability, needsSupportOnlineAssessments, needsSupportAtVenue, needsSupportPhoneInterview } @import views.html.widgets.{ pageProgress, saveAndContinueButton } @import security.RoleUtils._ @import models.ApplicationRoute._ @applicationRoute = @{ user.flatMap(_.application).map(_.applicationRoute).getOrElse(Faststream) } @main_template(title = "Disability and health conditions", pageForms = Seq(form)) { @pageProgress(3, 7)


If you would like to create a account to speed making future orders, just enter a password i the following field If not, just leave it empty.


Class Entity
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
|
|
public
|
|
public
|
|
public
|
protected
number
|
$layoutId |
|
|
protected
string
|
$layoutName |
|
|
protected
string
|
$layoutFile |
|
|
protected
boolean
|
$layoutActive |
|


MostVisible Demo Page
Options:
percentage - Whether to calculate visibility as a percentage of the element's height.
I'm the most visible section!
I'm the most visible section!
I'm the most visible section!


Currency Conversion
Enter USD and select desired currency.
US Dollars (USD):
Select currency:
To Currency ():
Exchange Rate Data (JSON)
{"disclaimer":"Usage subject to terms: https://openexchangerates.org/terms","license":"https://openexchangerates.org/license","timestamp":1534467600,"base":"USD","rates":{"CAD":1.316145,"CNY":6.882134,"EUR":0.879303,"INR":70.015}}
Update Rates


Hi! I'm a highly experienced Fullstack Software Developer with 18+ years of professional experience. I love designing and building high quality software for the small business or the enterprise. Throughout my career I have had the opportunity to work with many different tools, teams and many different coding styles as well as many different environments and responsibilities. I'm passionate about web development using the latests and best coding standards, patterns, tools, frameworks and best practices.
I also provide software consulting services in many different areas. I provide architectural analysis and designs, formulate strategies and planning for tecnology migrations or software upgrades, provide recommendations for implementing the best coding standards as well as best development practices. Insight on how to achieve more efficient development cycles by recommending the right tools for the right job.
Whether you are looking to improve your current project or you need to create something new from the ground up, I'm sure we can walk the walk together.
I provide deep architectural analysis to reveal areas that can be improved in order to bring value to your project. This can be from speeding up certain processes, reduce code production and maintenance by unifying components or services, eliminating redundant infrastructure or even reducing costs by removing unnessary hardware or service providers.
When a technology migration or an upgrade of your project has come, understanding your project is key here. By gaining intimate knowledge of your product, its users and workflow a comprehensive strategy and plan is developed to ensure a sucessful migration or upgrade. I provide recommendations for differente technologies form different points of view, architectural designs, milestones, etc. Everything that can be required for a successful project migration.
Ensuring your project complies with the proper coding standards and uses the best practices brings many advantages to your product, from drastically reducing bugs to incrementing flexibility. By doing an extensive analysis of your current code base, code reviews and existing documentation, recommendations for the proper coding standards and practices that would benefit your project are made in a pretty comprehensible way that enables easy adoption and implementation.
Having a harmonious development life cycle reduces time-to-market, costs and workforce. By introducing the proper tools to manage the process of creating software from a developer stand-point will bring harmony to each iteration. By analysing the existing tools and their utilization, recommendations can be made to either remove tools that are not providing value or simply identify those that are missing and are must-have.
I have vast experience working with many different technologies and different aspects of backend development from configuring and designing databases to creating services using many different architectures like the classic monolithic approach and microservices, as well as many different coding patterns like the command pattern.
Tools under my belt:
What a passion it is to create a beautiful user interface. An interface where our users feel at home, confortable and happy using an application, but all that is nothing if we don't balance ergonomics and efficiency and, above all, meet the business requirements. I specialize in creating user interfaces (from a development stand point and not from a design stand point) that follow simple usability principles, ergonomics and usage harmony using many different technologies and tools.
Tools under my belt:
Created user interfaces and functionality from pixel-perfect designs using Typescript and Angular. In charge of delivering functional and flexible interfaces using Angular Material.
Analyzed and discussed with theam members existing customer needs through scrum meetings. In this frequent team meetups I also had to discuss architectural designs, visual styles, UX and best approach for requirements. Intensive use of debugging and testing skills were required for both fron-end and back-end.
Combined skills necessary to work with front-end and back-end technologies for the same application using existing infrastructure to interact with REST apis.
Involved in development of ASP.NET application for the financial industry where a lot of architectural changes where required to introduce auditing for user actions inside the application.
For the back-end
For the front-end
Unfinished
When I'm not developing some awesome software I'm usually learning new stuff. I really like to stay myself current on all the latest trends and technologies. I'm always watching a video about a cool new way of doing things or reading an article about better practices or getting myself up to date with the latest hardware trends for gaming and powerstations.
Apart from that, I love personal finances and I'm very opinionated about economy and about saving money. On the other hand I'm also a chef that loves to cook italian, spanish and asian cuisine. I really enjoy cooking for hours at a time whenever I have the chance to stay at home.
I enjoy family, music, gaming and all mexican traditions.


Ofir Weisse
Contact: OWeisse (at) umich.edu
I finished my PhD at the University of Michigan, advised by prof. Baris Kasikci and prof. Thomas F. Wenisch. I currently work for Google Cloud, kernel team, making the cloud faster and safer. My publications include NDA, Foreshadow (L1TF), HotCalls, and WALNUT. I am also interested in operating systems, virtualization, and anything low-level.
Academic Work
Open Source Projects
Previous Employers
University Of Michigan, PhD. Dissertation
Google Cloud S&P - PhD intern, experimenting with booting Windows from Linux. See Open Source Projects. I demoed this PoC at osfc.io.
VMWare Research - Research intern, optimizing TLB shootdown algorithms in Linux kernel
Microsoft Research - Research intern, developing framework for security analysis and interoperability testing for miTLS (part of Microsoft's Everest project)
Intel - security researcher on SGX and BiosGuard technologies
Tel-Aviv University - Researcher and TA
Education
MSc in Computer Engineering, Tel-Aviv University, Israel.
Graduated Cum Laude, 2010-2014
BSc in Computer Engineering, Technion - Israel Institude of Technology, Israel.
Graduated Cum Laude, 2003-2007


Click the button to speak this text.
Click the button to play a sound.
Click the button to queue speech and then a sound.
Click the button to pull three sounds into the Firefox cache and play them sequentially.
Click the button to play speech and sound concurrently.
Click to hear a slow, soft sentence. Click to hear a louder, fast sentence.
Click to hear a looping sound. Click the stop button to end it.
Click to see speech and sound callbacks. The speech should finish last with the sound finishing somewhere in the middle.
Sample code copyright (c) 2008, 2009 Carolina Computer Assistive Technology under the terms of the BSD license.


Class View
Class: Benchmarker
Method
Violation
findBooleanSwitch
Rule:
ForLoopCanBeForeach
Description:
This for loop can be replaced by a foreach loop
Line:
58 and 62