X-Road: Message Transport Protocol
Technical Specification
Version: 2.6
01.06.2023
Doc. ID: PR-MESSTRANSP
Version history
| Date | Version | Description | Author |
|---|---|---|---|
| 01.07.2015 | 0.6 | Translated to English | Siim Annuk |
| 14.07.2015 | 0.7 | Total restructuring | Ilja Kromonov |
| 11.08.2015 | 0.8 | Comments added | Margus Freudenthal |
| 11.08.2015 | 0.9 | Fixes according to comments | Siim Annuk |
| 27.08.2015 | 1.0 | Minor improvements | Siim Annuk |
| 28.08.2015 | 1.1 | Comments and editorial changes | Margus Freudenthal |
| 28.08.2015 | 1.2 | More fixes according to comments | Siim Annuk |
| 31.08.2015 | 1.3 | Made minor editorial changes | Margus Freudenthal |
| 09.09.2015 | 2.0 | Editorial changes made | Imbi Nõgisto |
| 14.10.2015 | 2.1 | Changes added about HTTP headers and attachments. Ports 5500 and 5577 are default configuration. | Siim Annuk |
| 17.10.2015 | 2.2 | Anchored the figures in place | Margus Freudenthal |
| 01.03.2019 | 2.3 | X-Request-Id header | Caro Hautamäki |
| 04.03.2019 | 2.4 | Converted into Markdown | Caro Hautamäki |
| 22.10.2020 | 2.5 | Added REST message protocol | Janne Mattila |
01.06.2023 | 2.6 | Update references | Petteri Kivimäki
Table of Contents
License
This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/
1 Introduction
This document describes the communications protocol that is used by service client's and service provider's security servers to exchange messages with each other.
1.1 Overview
Figure 1. Protocols used in the X-Road system
As can be seen from Figure 1, three protocols are involved when exchanging messages between a service client and a service provider. These include:
-
X-Road message protocol – used for communication between an information system and a security server within an organization
- There are two types of X-Road message protocols, one for SOAP and one for REST
- X-Road message protocol (for SOAP) is a profile of the SOAP protocol (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/). See PR-MESS for details.
- X-Road message protocol for REST is a protocol for consuming and producing REST services. See PR-REST for details.
- Same message protocol needs to be used in both ends. Using message protocol for REST between service client's information system and security server, and message protocol for SOAP between service provider's security server and information system is not supported.
-
X-Road message transport protocol – a synchronous secure communication protocol that provides confidentiality and integrity when exchanging messages between two security servers over the public Internet. This protocol is described in the current document.
-
OCSP Response Retrieval Protocol – the protocol used in parallel with the X-Road message transport protocol when establishing a secure communications channel between the service client's and the service provider's security servers (see Section 2.2 for details).
The communication protocol is divided into two layers (Figure 2) – the transport layer and the application layer. The transport layer uses HTTP over mutually authenticated TLS; see Section 2 for details on how the TLS session is established. The application layer consists of MIME multipart encoded X-Road transport messages that are exchanged over the transport layer (HTTPS); see Section 3 for the exact format of the message and how it's processed.
The service client's security server encapsulates the request message it receives from the service client into an X-Road transport message and in turn receives an X-Road transport message (message format described in Section 3.1) from the service provider's security server before forwarding the encapsulated response back to the service client (process described in detail in Section 3.2).
The service provider's security server receives the X-Road transport message from the service client's security server and forwards the encapsulated request message to the service provider. The service provider's security server encapsulates the response from the service provider into an X-Road transport message and sends it to the service client's security server (process described in detail in Section 3.3).
Chapters 2 and 3, as well as the annex of this specification contain normative information. All the other sections are informative in nature. All the references are normative.
This specification does not include option for partially implementing the protocol – the conformant implementation must implement the entire specification.
Figure 2. Layers of the X-Road message transport protocol
1.2 Terms and Abbreviations
See X-Road terms and abbreviations documentation [TA-TERMS].
1.3 References
-
[PR-SIGDOC] Freudenthal, Margus. Profile for High-Perfomance Digital Signature. Cybernetica Research Reports, T-4-23, 2015 https://cyber.ee/research/reports/
-
[BATCH-TS] Freudenthal, Margus. Using Batch Hashing for Signing and Time-Stamping. Cybernetica Research Reports, T-4-20, 2013 https://cyber.ee/research/reports/
-
[PR-MESS] Cybernetica AS. X-Road: Profile of Messages. Document ID: PR-MESS.
-
[TA-TERMS] X-Road Terms and Abbreviations. Document ID: TA-TERMS.
-
[PR-REST] X-Road: Message Protocol for REST. Document ID: PR-REST.
2 Transport Layer
2.1 TLS Authentication
Security servers use authentication certificates to initiate a mutually authenticated message exchange. Each security server's authentication certificate must be registered at the central server. The certification service provider that issued these certificates must be approved by the central server. Therefore, certificate chains constructed when authenticating the connection must include certificates up to the issuing certificate of the trusted certification service provider that is registered at the central server as an approved certification authority.
The process of establishing of a secure communication channel can be described by the following steps.
-
An X-Road request message arrives at the service client's security server.
-
Service client's security server processes the request and determines the target service provider's security server.
-
Service client's security server initiates the TLS handshake with the target service provider's security server on port 5500 (default configuration).
-
Service client's security server receives the authentication certificate chain of the service provider's security server as part of the TLS handshake.
-
Service client's security server checks if the local OCSP cache contains OCSP responses for the received certificates.
-
If the OCSP responses are not cached, the service client's security server must download them from the service provider's security server and cache them locally (see Section 2.2 for details).
-
Service client's security server verifies that the authentication certificate of the service provider's security server was issued by an approved certification service provider and builds the certification chain for the authentication certificate. The certification chain and corresponding OCSP responses are then verified.
-
If verification is successful, the service client's security server forwards the X-Road transport message to the service provider's security server. If verification failed, the service client's security server sends a SOAP Fault message back to the service client's information system.
-
Having received the X-Road transport message, the service provider's security server verifies the service client's authentication certificate chain using the global configuration.
This process is illustrated in the sequence diagram in Figure 3.
Figure 3. TLS authentication
2.2 Downloading OCSP Responses from Service Provider
Each X-Road security server only interacts with the CA that issued the certificates used by it. For this reason, the OCSP responses for certificates are always transferred together with the certificates themselves. The security servers cache the OCSP responses for their certificates and periodically update this cache.
The service client's security server sends the OCSP responses for authentication certificate as part of the request message. However, before sending the request the client's security server must verify service provider's security server's authentication certificate. Because the OCSP stapling specification is not widely implemented yet, the client's security server downloads the OCSP responses from the service provider's security server using a separate channel (HTTP).
Service provider's security server must respond to HTTP GET requests to port 5577 (default configuration). In the HTTP GET request the client's security server indicates the certificates whose OCSP responses are requested. For this, the client includes cert query parameters whose content is hexadecimally encoded SHA-1 hashes of the certificates. For example, the following URL is used to retrieve OCSP responses for two certificates:
http://SECURITYSERVER:5577/?cert=a1b2c3d4e5&cert=f6g7h8i9j0
where SECURITYSERVER is the address of the service provider's security server.
As a response to this request the service responds with a MIME multipart message (multipart/related
). Each part of this message must contain a requested OCSP responses with content-type application/ocsp-response
. See Annex 4.1 for an example response.
3 Application Layer
The integrity of transmitted message is ensured by signing the X-Road transport message in the security server. The signature can be either a regular signature or a batch signature. Batch signatures must be created for messages that contain attachments. If a signing key is located on a slow secure signature creation device then batch signatures may be used when signing many messages simultaneously. See [PR-SIGDOC] for more information about how signatures are created.
The X-Road message transport protocol is designed for streaming the message contents (e.g. attachments) between security servers. The signature can be calculated after the previous parts (e.g. attachments) of the transport message have been transferred to the other party. Streaming the message contents puts restrictions on how the signature of the transport message must be verified. The contents of the transport message must be cached in the security server before the signature of the message can be verified, because the verification result determines the validity of the message – the security server must not forward an invalid message to the other party.
3.1 X-Road Transport Message
Figure 4. X-Road transport messages
The X-Road transport messages are encoded as MIME multipart messages with content-type multipart/mixed
.
For SOAP messages, the content-type of the client request message is sent from the service client's security server
to the service provider's security server and vice versa using the x-original-content-type
HTTP header.
The value of the original content type is used to forward the request or response message to the service provider's
or service client's information system. All other HTTP headers sent by the service client's security server or service
provider's security server are not preserved in the security server. MIME headers in the multipart message are preserved.
For REST messages, the content-type of the client request message is sent from the service client's security server
to the service provider's security server and vice versa using the application/x-road-rest-request
and
application/x-road-rest-response
parts, which contain "REST header part" of the REST request or response.
REST header part consists of HTTP request line (for requests), HTTP status line (for responses), and HTTP headers (for both).
Besides Content-Type
header, also other headers may be preserved by the security server, but the processing varies.
Some new headers are added (replaced if one already exists) by the security server, for example x-road-request-id
.
Some headers will be removed, for example User-Agent
.
All other headers are passed through as-is, for example X-Powered-By
.
For details, see [PR-REST] and "Use of HTTP Headers".
The X-Road transport message encapsulates either the SOAP/REST message package that arrives to the security server or a
SOAP fault message (uses content-type text/xml
instead of multipart/mixed
). The latter is only sent from the
service provider's security server to the service client's security server if an error occurred before processing the
request message in the service provider's security server. The normal X-Road request message must consist of the
following MIME message parts (see Figure 4). The parts are mandatory unless stated otherwise:
-
byte contents of OCSP responses (content-type
application/ocsp-response
) of the service client's security server authentication certificate chain that was used to authenticate the TLS connection; -
(optional, either this or REST message must exist) the SOAP message (content-type
text/xml
orapplication/xop+xml
in case the original message is a MTOM-encoded SOAP message package); -
(optional) a nested MIME multipart (content-type
multipart/mixed
) containing all attachments as parts. This part is only present if the original SOAP message package contains attachments; -
(optional, either this or SOAP message must exist) the REST message header (content-type
application/x-road-rest-request
) -
(optional) a REST request body (content-type
application/x-road-rest-body
) This part is only present if the REST request contains a body. -
(optional) if the signature is a batch signature, then:
a) the hash chain result XML (content-type
application/hash-chain-result
) andb) the hash chain XML (content-type
application/hash-chain
) of the signature. -
the signature XML (content-type
signature/bdoc-1.0/ts
) associated with the SOAP/REST message and any attachments of the encapsulated message;
The normal X-Road response message must consist of the following MIME message parts (see Figure 4). The parts are mandatory unless stated otherwise:
-
(optional, either this or REST message must exist) the SOAP message (content-type
text/xml
orapplication/xop+xml
in case the original message is a MTOM-encoded SOAP message package); -
(optional) a nested MIME multipart (content-type `multipart/mixed) containing all attachments as parts. This part is only present if the original SOAP message package contains attachments;
-
(optional, either this or SOAP message must exist) the REST message header (content-type
application/x-road-rest-response
) -
(optional) a REST response body (content-type
application/x-road-rest-body
) This part is only present if the REST response contains a body. -
(optional) if the signature is a batch signature, then:
a) the hash chain result XML (content-type
application/hash-chain-result
) andb) the hash chain XML (content-type
application/hash-chain
) of the signature. -
one of the following:
a) the signature XML (content-type
signature/bdoc-1.0/ts
) associated with the SOAP message and any attachments of the encapsulated message; orb) a SOAP fault XML (content-type
text/xml
), if any errors occurred during the processing of the message (i.e. error when creating signature). Since the previous parts of the message have already been sent to the other party, the SOAP fault must be sent as the last part.
3.2 Message Handling in Service Client's Security Server
The following describes the actions that the service client's security server must take in order to perform a secure message exchange between a service client and a service provider.
-
Receive a REST request, SOAP message or a SOAP message package (if attachments are present) from the service client (message format described in PR-MESS).
-
Parse either the SOAP message or
X-Road-Client
header to determine the target service provider. -
Establish TLS connection with it's security server (see Section 2.1).
-
Send an X-Road transport message to the service provider's security server (message format described in Section 3.1) in the following steps:
a) For SOAP and REST messages, add the following HTTP headers to the HTTP headers of the HTTP request:
-
UUID (
x-road-request-id
). The id is shared between request/response pairs so one can easily find corresponding messages from logs if needed. -
Hash algorithm identifier (
x-hash-algorithm
). The hash algorithm is used by the other party to calculate the hashes of the message parts to be used during message verification. -
Original content type (
x-original-content-type
) of the request message. -
Version (
x-proxy-version
) of the client X-Road proxy -
(only for SOAP messages) original SOAPAction (
x-original-soapaction
)
b) For REST messages, add the following additional HTTP header:
- Message type discriminator (
x-road-message-type
) with valueREST
c) Write an OCSP response part to the transport message (content-type
application/ocsp-response
) for each OCSP response in the authentication certificate chain used for establishing the TLS connection.d) For SOAP messages, write the service client's request SOAP message (content-type
text/xml
orapplication/xop+xml
in case the original message is a MTOM-encoded SOAP message package) to the transport message. Calculate the hash of the request SOAP message.e) If the original request was a SOAP message package, write a nested MIME multipart (content-type
multipart/mixed
) containing all attachments as parts. Copy the MIME headers of each attachment part and calculate the hash of the data.f) For REST messages, write the REST request header part (content-type
application/x-road-rest-request
). This part contains HTTP request line and HTTP headers. Calculate the hash of this part.-
Some new headers must be added (replaced if one already exists) by the security server, for example
x-road-request-id
-
Some headers must be removed, for example
User-Agent
-
All other headers must be copied from original request as-is, for example
X-Powered-By
-
For details, see [PR-REST] and "Use of HTTP Headers"
g) For REST messages with a request body, write the part containing the REST request body (content-type
application/x-road-rest-body
). Calculate the hash of the body.h) Calculate the signature using the stored message and attachment hashes in accordance with [PR-SIGDOC, BATCH-TS]. Write the signature as the last part of the message (content-type
signature/bdoc-1.0/ts
). -
-
Start reading a response from the target service provider's security server (message format described in Section 3.1.
-
If the content-type of the response is
multipart/mixed
then process the message parts as follows:a) The first part must be the encapsulated SOAP response message or REST response message. The message is not forwarded to the service client until it can be verified.
b) SOAP response is identified by content-type
text/xml
orapplication/xop+xml
in case the response is a MTOM-encoded SOAP message package.- If the content-type of the next part is
multipart/mixed
then this part is the nested attachments multipart.
c) REST response is identified by content-type
application/x-road-rest-response
-
REST response header part has content-type
application/x-road-rest-response
. This part contains the HTTP status line and HTTP headers. -
If the content-type of the next part is
application/x-road-rest-body
then this part is the body of the REST response. For responses without a body, this part does not exist.
d) If the content-type of the next part is
application/hash-chain-result
then this message contains a batch signature. The hash chain result is stored for message verification.e) If the content-type of the next part is
application/hash-chain
then this message contains a batch signature. The hash chain is stored for message verification. The hash chain result must be present if the hash chain is present.f) If the content-type of the last part is
signature/bdoc-1.0/ts
then the part contains the signature of the message. If the content-type of the part istext/xml
then the part contains a SOAP fault indicating that an error occurred during the processing of the message in the service provider's security server and it must be returned to the service client. - If the content-type of the next part is
If the content-type of the response is text/xml
then an error occurred at the service provider's security server and the received SOAP Fault must be returned to the service client. In case of any other content-type, the response is malformed and a corresponding SOAP Fault must be returned to the service client.
-
Verify the response message using the stored message hash, attachment hashes, and signature in accordance with [PR-SIGDOC, BATCH-TS].
-
Send the service provider's REST response, encapsulated response SOAP message, or a SOAP message package in case the response has attachments to the service client.
a) For REST responses, response HTTP headers are copied from
application/x-road-rest-response
Figure 5. Message processing on service client's side
3.3 Message Handling in Service Provider's Security Server
The following describes the actions that the service provider's security server must take in order to perform a secure message exchange between a service client and a service provider.
-
Establish TLS connection with the service client's security server (see Section 2.1).
-
Start reading the X-Road transport message from the service client's security server (message format described in Section 3.1).
-
The content-type of the request message must be
multipart/mixed
. The security server must process the message parts as follows:a) Read all the parts with content-type
application/ocsp-response
. These parts contain OCSP responses that must be used in when verifying the authentication certificate chain of the service client's security server.b) The part that comes after OCSP responses must be either a SOAP or REST request
c) SOAP request is identified by content-type
text/xml
orapplication/xop+xml
-
If content-type is
text/xml
, this part contains a regular SOAP request. If content-type isapplication/xop+xml
this part contains the encapsulated SOAP request message for a MTOM-encoded SOAP message package. The message is not forwarded to the service provider until it can be verified. -
If the content-type of the next part is
multipart/mixed
then this part is the nested attachments multipart.
d) REST request is identified by content-type
application/x-road-rest-request
-
REST request header part has content-type
application/x-road-rest-response
. This part contains the HTTP request line and HTTP headers. -
If the content-type of the next part is
application/x-road-rest-body
then this part is the body of the REST request. For requests without a body, this part does not exist.
d) If the content-type of the next part is
application/hash-chain-result
then this message contains a batch signature. The hash chain result is stored for message verification.e) If the content-type of the next part is
application/hash-chain
then this message contains a batch signature. The hash chain is stored for message verification.f) If the content-type of the last part is
signature/bdoc-1.0/ts
then the part contains the signature of the message. If the content-type of the last part istext/xml
then the part contains a SOAP fault indicating that an error occurred during the processing of the message in the service client's security server. -
-
Verify the request message using the stored message hash, attachment hashes, and signature in accordance with [PR-SIGDOC, BATCH-TS].
-
Either send the encapsulated SOAP message and any attachments to the target service provider, or execute a REST request against target service provider.
-
Start reading a response from the target service provider (message format described in PR-MESS).
-
Send an X-Road transport message to the service client's security server (message format described in Section 3.1) in the following steps:
a) Add the following HTTP headers to the HTTP headers of the HTTP request:
-
Hash algorithm identifier (
x-hash-algorithm
). The hash algorithm is used by the other party to calculate the hashes of the message parts to be used during message verification. -
Only in the case of SOAP messages, original content type (
x-original-content-type
) of the request message.
b) For SOAP messages, write the service provider's response SOAP message (content-type
text/xml
orapplication/xop+xml
in case the original message is a MTOM-encoded SOAP message package). Calculate the hash of the response SOAP message to be used when creating the signature.c) If the response from the service provider was a SOAP message package, write a nested MIME multipart (
multipart/mixed
) containing all attachments as parts. For each part, calculate the hash of the data to be used when creating the signature.d) For REST messages, write the REST response header part (content-type
application/x-road-rest-response
). This part contains HTTP status line and HTTP headers. Calculate the hash of the response message to be used when creating the signature.-
Some new headers must be added (replaced if one already exists) by the security server, for example
x-road-request-id
-
Some headers must be removed, for example
User-Agent
-
All other headers must be copied from original request as-is, for example
X-Powered-By
-
For details, see [PR-REST] and "Use of HTTP Headers"
e) If the response from the service provider contained a REST message body, write the part containing this (content-type
application/x-road-rest-body
). Calculate the hash of the body to be used when creating the signature.f) Calculate the signature using the stored message and attachment hashes in accordance with [PR-SIGDOC, BATCH-TS]. Write the signature as the last part of the message (content-type
signature/bdoc-1.0/ts
). -
Figure 6. Message processing on service provider's side
4 Annex: Example Messages
All the example messages only contain the relevant HTTP headers (content-type) and the headers of the MIME parts. The contents of the MIME parts are omitted for brevity.
4.1 Response to OCSP Downloading Request
Content-Type: multipart/related; charset=UTF-8; boundary=jetty625909216ic7gfi1u
--jetty625909216ic7gfi1u
Content-Type: application/ocsp-response
...bytes of the ASN.1-encoded OCSP response...
--jetty625909216ic7gfi1u--
4.2 Simple SOAP Request
Content-Type: multipart/mixed; charset=UTF-8; boundary=xtop1357783211hcn1yiro
--xtop1357783211hcn1yiro
Content-Type: application/ocsp-response
...ocsp response...
--xtop1357783211hcn1yiro
Content-Type: text/xml ; charset=UTF-8
...request SOAP...
--xtop1357783211hcn1yiro
Content-Type: signature/bdoc-1.0/ts
...signature XML...
--xtop1357783211hcn1yiro--
4.3 Simple SOAP Response
Content-Type: multipart/mixed; charset=UTF-8; boundary=xatt569125687hcu8vfma
--xatt569125687hcu8vfma
Content-Type: text/xml ; charset=UTF-8
...response SOAP...
--xatt569125687hcu8vfma
Content-Type: signature/bdoc-1.0/ts
...signature XML...
--xatt569125687hcu8vfma--
4.4 SOAP Request with Attachments
Content-Type: multipart/mixed; charset=UTF-8; boundary=xtop1357783211hcn1yiro
--xtop1357783211hcn1yiro
Content-Type: application/ocsp-response
...ocsp response...
--xtop1357783211hcn1yiro
Content-Type: text/xml; charset=UTF-8
...request SOAP...
--xtop1357783211hcn1yiro
Content-Type: multipart/mixed; charset=UTF-8; boundary=xtop569125687h3h10du0
--xtop569125687h3h10du0
Content-Type: text/plain; charset=UTF-8
Content-Location: attachment.txt
...attachment data...
--xtop569125687h3h10du0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Id: <data.bin>
...attachment data...
--xtop569125687h3h10du0 --
--xtop1357783211hcn1yiro
Content-Type: application/hash-chain-result
...hash chain result XML...
--xtop1357783211hcn1yiro
Content-Type: application/hash-chain
...hash chain XML...
--xtop1357783211hcn1yiro
Content-Type: signature/bdoc-1.0/ts
...signature XML...
--xtop1357783211hcn1yiro--
4.5 SOAP Response with Fault as Last Part
Content-Type: multipart/mixed; charset=UTF-8; boundary=xatt569125687hcu8vfma
--xatt569125687hcu8vfma
Content-Type: text/xml; charset=UTF-8
...response SOAP...
--xatt569125687hcu8vfma
Content-Type: text/xml; charset=UTF-8
...SOAP fault...
--xatt569125687hcu8vfma--
4.6 REST Request
Content-Type: multipart/mixed; charset=UTF-8; boundary=xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: application/ocsp-response
...ocsp response...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: application/x-road-rest-request
...REST request header...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: application/x-road-rest-body
...REST request body...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: application/hash-chain-result
...hash chain result XML...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: application/hash-chain
...hash chain XML...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe
content-type: signature/bdoc-1.0/ts
...signature XML...
--xtopVuvPTiuLRQanuYKzamfNZBOlxZclEe--
4.7 REST Response
Content-Type: multipart/mixed; charset=UTF-8; boundary=xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
content-type: application/x-road-rest-response
...REST response header...
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
content-type: application/x-road-rest-body
...REST response body...
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
content-type: application/hash-chain-result
...hash chain result XML...
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
content-type: application/hash-chain
...hash chain XML...
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH
content-type: signature/bdoc-1.0/ts
...signature XML...
--xtoptrgBinKkBvoijBRQYWabkZvkECcuIH--


MDMA (White Playboy) and Mushrooms (Dried P. Cubensis)
So if you read this you will get the following out of it:
My preparations, my dosages over time, some mental experiences, and at the end, a stream of consciousness that I wrote while under the effects of the drugs which may shed some light into the mindset I was in. As a side note, this was the first time I have done mushrooms or mdma.
PREPARATION:
-PHYSICAL
Living room is cleared of debris and the lights are off except for the lava lamp and the TV. On the TV is a visualizer and through the speakers of my stereo pumps the beautiful sounds of psytrance. At 5:30 pm I also swallowed 50mg of Coenzyme Q10 and a tab of 5htp so that I will not feel as crappy the next day.
-MENTAL
I am prepared for the mental carnage that might ensue with the mushrooms. I reassure myself that I must remember at all times, no matter how scared I may get, or how crazy I believe I may be getting, that I will be perfectly fine the next day after the drugs have passed through me. And in the worst case scenario, since I am by myself, if I need a life-line there are two friends I can call to help me.
Also, I make sure that I will be drinking the proper amount of water while on mdma so that I do not dehydrate from too little or swell my brain by drinking too much. I slowly nursed a 20 oz bottle of water over the course of the night since I was not really active.
DOSAGE:
1 tab of white playboy mdma at 6:30 pm.
At +0:40 I blended 4 grams of dried P. Cubensis mushrooms into 16 ounces of orange juice and drank it.
At +5:00 another tab of white playboy mdma.
EXPERIENCES:
At +1:00 I am starting to feel a rush over my body and a daze in my mind. I am rubbing my feet together and my arms are rubbing over my body.
At +1:15 the acoustic ceiling is dancing with color and movement that seems independant of the colors emanated from my lava lamp and visualizer. I feel strong jaw clench and mentally flag that the next time I do mdma, I need to take something to alleviate it.
At +1:30? I feel really good all over my body. I can't stop smiling or gaping my mouth wide open.
The next couple hours are hard to track time, but ultimately I love the way my body feels over time.
I believe the X makes the shrooms much easier to deal with. A couple times I felt I was on the verge of some kind of mental loss. My mind quite often felt like a separate entity from my body. Sometimes I watched this body doing things but it wasn't me controlling it, so I just analyzed it like a 3rd party observer.
There were many visual distortions over time as well.
By +5:00 I felt pretty worn down and disappointed that I didn't feel like I used to. I took another tab of mdma. However it felt like it only achieved 5 to 10 % of the power that the initial tab had.
STREAM OF CONSCIOUSNESS (written while under the effects):
Ok, here is what came from my mind. I began writing at about +4:00:
BEGIN:
Here I am. Glowing white paper. Time to see what I am made of. I can’t believe this… (slow methodical thinking) I bet this is going to be the weirdest stream of consciousness I have ever read because it is myself. I can’t believe I am pausing to correct typos and ponder spelling….
Now that the introduction has been set. Part of the purpose of this is to write down things I want to remember while sober to see If I can remember it at all.
I KEEP LOSING FOCUS!!! I set some small plan of action of my mind like brush my teeth or go get the water in the kitchen… and holy shit, who knows what I was doing in between thought command and action fulfillment but I seemed (point in case, it just happened!!!) I wanted to keep my train of thought, and I know a serious lapse of time went by where my mind was racing with who knows what… and when I come back… this is pretty hard to explain now isn’t it.
Ok.
Blank slate.
Don’t know why I am typing but the first thing that comes to mind comes to print as well.
How long is this going to maintain my interest before I quit.
Ok, back to the things I want to remember.
Losing focus… check.
Serious thoughts about the meanings of my actions.
For example, when James says Steve was talking too much during his experience, I immediately nodded and went “really”, but mentally flagged that as how to act appropriately in that situation because it was a new situation for me and
Headphones on now… god damn this is much better, why wasn’t I wearing them to start with. It is much more boring without them on….
God this is soooo beautiful sounding. I wish there was a way for this artist to know how it makes my “soul” feel when I listen to its utter beauty.
It is now 10:44 pm, if I remember correctly I took the x tab at 6:30 and the 4 grams of dried p cubensis at 7:12
I definitely don’t have that buzz from swallow plus 1 hour, but the trip component makes this very “interesting”
I feel I need to do the two separately next time to isolate these feelings and determine what drug makes me feel what… is that the scientist in me coming out?
I had a simple vision of my current life plan.  Is this what I have resulted to. What other purpose in life should I simultaneously or alternatively pursue instead. Starting a successful business. Making games. Finding a girl and living the cookie cutter life of a happy family.
Am I capable of that. I am quite certain that there is no continuity to this writing. Is that what I read online when people thought they were going insane?
I am really scared at times to interact in person or on the phone. I want to at times… but then freak out about the prospect.
I walked around my apartment complex and saw two of my neighbors. My primary focus at that point was to look normal and not stumble too much. I nodded my head and said a casual “hey” to each of the fat ladies I passed.  If they knew how scared I felt for the next 20 mins? I thought they knew what I was on, and would surely send the cops knocking to my door (I still have a lingering thought that this will happen but it fades as time continues) and find my remaining stash and it would be statute that my qty is intent to sell or something with serious jail time. *DELETED* then I realize I just visualized all of that… it was a memory? A thought, it was so real I was in it, I felt it, awareness was only in the background. This is where I go… and oddly familiar enough… I think I do the zone out thing when sober, but it seems different now because of the drugs.

I guess it is something to do while this drug courses my veins, and I falsely assume that the majority of the drug effect is gone because I know this isn’t my normal self.
Although I have questioned quite repeatedly what is my normal self. I think about all kinds of isolated moments and their meaning. Is this ego loss as it is called? Or am I only on the verge.
I think I am going to make a rule that I can’t go back and read this until tomorrow. To create a proper line between mental states?
Is this boring or do I just have that restless bug in me compelling me to change my lighting/scenery/environment.

I made the realization about myself, that I talk about my lack of money and narcissistic qualities too much in front of my co-workers. I need to cool it, I wouldn’t want to hear that myself from a co-worker.
I need to explore my singleness.
I hate being lonely too… so that will be tough, but I need to learn to live without a crutch of a person. or maybe not, maybe that is reserved for a time in my life when I am old and withered, and nobody left is alive that I care for or that cares for me…. Then I can learn to be on my own and independent.
I like people.
This song is so beautiful
These glasses make it seem like I am trapped behind glass :)
Now I think I am just stretching for something to write.
I just felt my first gnawing ache of hunger… it is 11:02 I last ate at about noon.
Plus the sunflower seeds on the drive home.
This song is beautiful too, as so informed to me by Kaur. It was quite a true statement. Do moments of recalling Kaur like this mean that I am not over her? At most times I feel like I am, but then brief moments like this I kind of doubt that.
I don’t really feel like I have that filter that warps my actions to make me seem “normal” in proper social settings.
I am hesitant to write about jacking off. I am oscillating between being concerned about the appropriateness of what I write and just letting it out cuz who cares.
My penis felt extra good, but it was difficult to masturbate, even when I COULD keep focus to jack off, it just didn’t seem to have the trigger in it to go to that next level where orgasm could be achieved. However, I didn’t care because it felt so good play with it …. So goooooood :)
I am going to delete something for certain criminal sakes…. :(
Closing my eyes in the shower was amazing while washing my hair. Intense 3d visuals, but what was extra weird was that when I felt the spatial movement of my head and neck, my “imagery” as seen in my minds eye cuz my eyes were closed, seemed to be attached to some kind of level, i.e., it didn’t move the way it felt it should have because !!! Even though I looked any direction I saw the scene independently from that….. hope that made sense.
I made the realization that Janet is a loyalist like Summer…
Oh yeah, Summer is great and I love her. I am glad she is my sister and loves me. If I ever have any problems, I think I can trust her to help me sort them out.
I hope that people realize that my sometimes distancing or lack of communications does not mean that I don’t feel tremendously about them. I guess good friends are good friends and can last through lapses in communications and
Where did I just go again :)
Another grapevine of thought spirals dipped in a glass of subconscious
Blah
My arms are starting to feel jellyfish
Dammit that was jellyfish
Stupid auto correct fucker…
JELLYISH
There that makes more sense hehe
Shit this is starting to get so long I am not going to want to read it anymore.
 I am a slob… but I feel like I haven’t had much time.
Spending time with family, traveling, working, this is one of the only times I can remember that is truly free, but I am spending it in a drug induced stupor.
Ok, I think I might call Janet and talk… I feel the need to talk, and I trust her. Why? Is it cuz she is segregated from my everyday life?
Sigh
Ok, I should stop
So I just called her and she was playing poker. Interesting… I think she couldn’t tell I was on drugs. I had to make a conscious effort to simulate the normal me. After I hung up I laughed out loud…. I couldn’t believe I just did that :)
I think I will go for another walk… oh yeah, last walk, instigated alarming amounts of paranoia… especially when I gained focus a few feet away from passing someone…. I was worried that I was staggering and my mouth was wide open in a drool like state and my stare was vacant… much like a crazy man.
END:
Next day now, and I am sober. I am going to correct the typos and post this on the internet.
What a night
Goodbye
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.


COMING SOON.
Our website is under construction, but we are ready to go! Want to know more about us, tell us about your project or just to say hello? Contact us on social media and we will get back as soon as possible.
Designed with by Aldi Duzha


My Projects
My First Webpage
Click here to go to GitHub repositoryDescription
This project was the very first webpage I created. I made it using html and css only. It was the first time I used css to style a webpage and add images into the html code.
Resort Website
Click here to go to GitHub repositoryDescription
This project was written in html and css only. The main purpose of this project was to practice branching and merging on the local and remote git repositories. It helped my understanding of the git workflow.
Travel Agency
Click here to go to GitHub repositoryDescription
This project was also written in html and css only. It's purpose was to practice my css skills and learn how images, lists(both ordered and unordered) and the box-model work.
Band Website
Click here to go to GitHub repositoryDescription
This project was written in html and styled with css only. Here I was trying to understand floats and how to create an aesthetic webpage. I experimented with a themed webpage and accurate image placement via the use of div elements.


All Classes
ConnectMatchController
DashboardCellController
DashboardGamePaneController
GuiUtils
GuiView
MainGamePaneController
MyStatusGamePaneController
OtherPlayersGamePaneController
PlayerGamePaneController
StartGuiApplication
StartGuiController
ViewEventBus


The IP Address for the hostname you entered ({{.DesiredHostname}}) is
currently configured for a different subnet than the one this device
is currently connected to.
You can continue with the first half of the configuration process now,
but the device will not be able to complete its setup until it's
connected to the correct subnet.
Troubleshooting
Check that the switch is configured properly
Check that this device is connected to the correct switch port
Check that the DNS entry is correct
IP in DNS for {{.DesiredHostname}}: {{.AssignedIP}}
Current IP(s) of device: {{range $key, $value := .IPs }}
{{$value}} {{end}}


dbus-cleanup-sockets(1) dbus-cleanup-sockets(1) NAME dbus-cleanup-sockets - clean up leftover sockets in a directory SYNOPSIS dbus-cleanup-sockets [DIRECTORY] DESCRIPTION The dbus-cleanup-sockets command cleans up unused D-Bus connection sock‐ ets. See http://www.freedesktop.org/software/dbus/ for more information about the big picture. If given no arguments, dbus-cleanup-sockets cleans up sockets in the standard default socket directory for the per-user-login-session message bus; this is usually /tmp. Optionally, you can pass a different direc‐ tory on the command line. On Linux, this program is essentially useless, because D-Bus defaults to using "abstract sockets" that exist only in memory and don't have a cor‐ responding file in /tmp. On most other flavors of UNIX, it's possible for the socket files to leak when programs using D-Bus exit abnormally or without closing their D-Bus connections. Thus, it might be interesting to run dbus-cleanup-sockets in a cron job to mop up any leaked sockets. Or you can just ignore the leaked sockets, they aren't really hurting anything, other than clutter‐ ing the output of "ls /tmp" AUTHOR dbus-cleanup-sockets was adapted by Havoc Pennington from linc-cleanup-sockets written by Michael Meeks. BUGS Please send bug reports to the D-Bus mailing list or bug tracker, see http://www.freedesktop.org/software/dbus/ dbus-cleanup-sockets(1)


| Description | Date Reported | Issue Severity | Issue Probability | Date Resolved |
|---|---|---|---|---|
| {{projectIssue.description}} | {{projectIssue.dateReported|date: 'yyyy/MM/dd'}} | {{projectIssue.severity}} | {{projectIssue.probability}} | {{projectIssue.dateResolved|date: 'yyyy/MM/dd'}} |


ptolemy.gui
Interface CloseListener
public interface CloseListener
This is an interface for listeners that need to be informed when a
window closes. Note that this is a very small subset of what Java's
WindowListener interface does. This class is a workaround for a bug
in Java's AWT, where components are not informed in any way when the
window that contains them is closed, even though they can have
registered listeners. The listeners are never called, unless the
component is a top-level window. A listener that implements this
interface, by contrast, is informed regardless of whether it is
at the top level. This is used, for example, by the ComponentDialog
class.
- Since:
- Ptolemy II 1.0
- Version:
- $Id: CloseListener.java 38798 2005-07-08 20:00:01Z cxh $
- Author:
- Edward A. Lee
- See Also:
ComponentDialog
- Accepted Rating:
- Proposed Rating:
|
Method Summary |
void |
windowClosed(java.awt.Window window,
java.lang.String button)
Notify that the specified window has closed. |
windowClosed
void windowClosed(java.awt.Window window,
java.lang.String button)
- Notify that the specified window has closed. The second argument,
if non-null, gives the name of the button that was used to close
the window.
- Parameters:
window
- The window that closed.button
- The name of the button that was used to close the window.


Making a Game: a Postmortem
Note: This post was originally featured on Excessive Furniture, a blog for my final project course at UCSD.
We did it!
It’s been an extremely long ten weeks. We all spent most of our time on this project (to the point where I personally didn’t go to any of my other classes’ lectures!), and even though we didn’t end up having to pull any all-nighters (save for Dexter, but those were totally of his own free will) we obviously put a lot of effort into things. Jeff has considerably more lines than us because he committed his 167 code to the repo. Elton doesn’t have many lines because he forgot to commit with his Github email :(
Now that everything has been finalized, let’s talk about the ten weeks in detail.
Overall Impressions
Q: What game did you seek out to make? What did you end up with?
At its core, we wanted to make a cooperative puzzle game. We’re all big puzzle game fans, and furthermore we’re all big game design nerds. A lot of the games that come out of CSE125 are competitive, usually in the arena shooter/brawler vein. While competitive shooters certainly do require game design (I’m not about to tell you that Quake isn’t a brilliantly designed game) there are a lot of givens and defaults just because of the genre.
A puzzle game however has almost no prior assumptions in terms of mechanics. Furthermore, a puzzle game is all about the puzzles, which require careful design even outside of the mechanics of the game. We knew a game like this would be difficult to make in the given timeframe, and that we’d probably end up spending a much greater portion of our time on design vs. implementation compared to the other groups. I definitely don’t regret that decision.
Unfortunately, time does catch up. A big part of our game (it’s about robots escaping from prison by the way) was supposed to be the competitive aspect. Not all of the robots were going to escape the prison ship, and we wanted puzzles that while forcing the players to cooperate would keep them on their toes, knowing that at any time any other player can just “accidentally” push the wrong button and open the trap door rather than the real one. Due to the time restraints of the class, we weren’t able to explore this idea, at least not the point that we would be satisfied by. We ended up dropping the entire competitive aspect around Week 8 and focused on making it a strictly-cooperative puzzle game.
The design goals we had during the competitive-phase of our game production kept on through the entire project though. Each puzzle was designed and sequenced in a specific way to force certain player interactions: the prison puzzle cannot be solved if any player doesn’t cooperate. The corridor puzzle teaches players that even if they can split up, they shouldn’t necessarily. The keycards teach the players that the puzzles are connected, even if the individual rooms are separate. When you have four players, you have four actors that you have to control simultaneously, and I feel we did a good job of it.
Q: What changed when it came to implementation expectations?
We actually implemented a lot of the crazy technical aspects we strove for. From SSAO in week three to octree-based collisions (we had ramps! Ask anyone who’s ever written a game, and they will tell you ramps are impossible), tech wasn’t often a problem for us. We even explored audio much more than I had ever expected. We did however struggle more with particle effects and animations than we expected, and ended up having to drop both.
Q: Did things go to schedule?
We’ve joked a lot in the prior blog posts about how even though we kept feeling that we were falling behind, we would just check out schedule and find out that we were on track! We definitely underestimated ourselves in many regards when making the schedule.
The big block, one that you’d see coming if you read any of the prior posts, was collision detection. We strove from the beginning to do collision the “right” way, and that cost us dearly. Not only did implementing the octree system take much longer than we expected (we didn’t “stop” working on collision until week 8!!) but it cost us in other regards. Implementing and testing puzzles is surprisingly difficult when you can’t walk into things!
We might have underestimated ourselves, but we surely overestimated Blender. Blender is not a level editor, and even with our ActivatorRegistrator © 2016 Jason Lo, Excessive Furniture. system, we ended up fighting Blender much more than we should have. There really wasn’t an alternative though—a puzzle game requires some sort of level editor, and making a level editor is essentially making a game in itself.
Implementation
Q: What methodologies did you use? Which ones worked well?
We didn’t use any particular development methodologies when making the game, no Kanban boards or user experiences or anything like that.
When it came to development, we did stick to a Git Flow-esque
http://nvie.com/posts/a-successful-git-branching-model/ workflow where we had master
and develop
branches that housed most of the code, and had independent feature branches that would split off and merge back into develop
as required. We rarely ran into merge errors, due to use preferring a rebase-based workflow, causing us to deal with merge conflicts up front rather than pushing them nervously to the future.
We used Dropbox for asset management, which actually turned out to be much more of a hassle than we expected?? We routinely ran into syncing issues, and at some points Dropbox would serve certain team members us older versions of files that we had uploaded, while giving newer versions to others. Very strange stuff.
Q: What difficulties did you have in implementation? Did anything turn out easier than you expected?
We’ve gone to lengths explaining how difficult collision was for us. We strove to do it the “right” way, with an octree-based system that would separate our space into octants, allowing us to only consider collisions and raycasting in a local space, rather than across all colliders in our world (of which there were quite a few). It turned out absolutely fabulous though (ramps!!wow) so it’s not as if it wasn’t effort well-spent.
Networking also turned out to be quite difficult, even more difficult than we had imagined going in. We decided to roll our own TCP stack rather than using a library, so we had expected difficulties, but we ran into problems much more frightening than the lag and desync we were expecting. We ran into issues with some clients refusing packets after a certain period of time (with no TCP errors thrown), we ran into issues with a single client stuttering and cause all other clients to follow suit, and we even ran into a bug we deem the “Sanic” bug, where randomly on start all of the clients will run at superspeed for 10-15 seconds. That bug we never figured out how to fix…
Sound was our saving grace. We used the popular FMOD library for sound, and it works extremely well After you read the documentation first…. No qualms, it just worked. One of our team members, as well as one our friends, even went on to implement FMOD-based sound in their 167 projects by our suggestions, and were very happy with the results.
Q: Time to brag: what parts of the implementation were you really proud of?
You don’t have to look at our game for very long to know it looks good. We had resident graphical wiz-kid Jeffrey Johnson on our team, and that decision really paid off. Besides literally doing all of the art, Jeff did most of the graphics programming, giving us real-time point light shadows, screen space ambient occlusion, and even IES-profile simulation for complex-shaped lights. It even runs relatively smoothly Take that, Ubisoft!.
We’re also really happy with the network infrastructure (not the TCP code driving it all, mind you). All stateful objects, whether it be transforms, mesh data, or even sounds, in our game essentially send their state on changes across the network with no developer interaction. That means that you can write game code as if you were making a single player game, and you got multiplayer for free! We paid a rather high up-front cost getting that to work (Jeff also had to yell at me quite a bit before I agreed to implement it) but I’m so happy with how it turned out. Writing game code is a breeze when you don’t have to worry about sharing state over the network.
Q: Did you use anything besides the expected C++?
Not really, our game was written with C++ and OpenGL. We did however use GLSL a lot for shaders. The only advice we can offer for that is NVIDIA Nsight is greatly recommend for shader debugging, because you’re going to have a lot of fun debugging shaders without such a tool.
Q: How many lines of code did you write?
According to Cloc https://github.com/AlDanial/cloc, we had 12376 lines of C++ and 824 lines of GLSL. This includes graphical code from the 167 project our game is based on.
Q: How did you handle media content in your game?
We used Blender exclusively for our 3D modeling of individual scenes as props, as well as UV unwrapping t. Actual materials were created with the awesome Substance Painter software
Jeff has a legally recognized relationship with Substance Painter in over 10 states.. Rather that directly attaching materials in Blender, we had a custom configuration-based system that allowed to write material data in .ini
files, allowing us to change properties such as textures, tints, brightness, and the like on the fly without having to reopen Blender. To get things into our game, we used ASSIMP for model loading, and SOIL2
https://bitbucket.org/SpartanJ/soil2 for material loading.
We also used Blender for stitching together the individual scenes and props, as well as giving them metadata that our ActivatorRegistrator system took advantage above.
For sound, we composed audio with Audacity, and did voice effects with the awesome Melodyne software. We included audio in our game with FMOD.
Q: Even after all of the above, would you have rather started with a game engine?
We briefly discussed this among those of us who have experience with the Unity game engine. We estimated that we could probably remake our game in its current state with Unity in about a week, with the only thing we’d need to learn is networking (I hear though that in recent versions Unity networking works really cleanly). Our game engine doesn’t really do many custom things, and having an existing game engine would give us way more time to spend on game design, something our game sorely depends upon.
Of course, we’d have to do things the Unity Way, and any straying from the Unity Way would cause harm. I could see Unity physics not working extremely well for a platforming game, and Unity also wouldn’t necessarily give us as much freedom in the Graphics department as raw OpenGL would (although we would get a lot more effects for free).
Q: Did you use any major libraries? What are your opinions of them?
We rolled our own graphics, our own physics, and our own networking. I’m perfectly happy with our graphics, and from what I’ve heard, if you’re not doing physics simulation (which we certainly aren’t, realistic physics make a terrible platformer) then using Bullet will be a struggle, even if it gives us collision for free.
Networking on the other hand is something we’d definitely use a library for. At the end of our day, our underlying networking code just works, and not much more than that. Using a networking library that hundreds of people have worked on gives us reliability and performance. Plus, if we were making an actual game, we’d of course use UDP over TCP to avoid the overheads of TCP, and a networking library might abstract away the technical differences of TCP vs UDP.
Q: You’ve talked about group dynamics in a game, what about in game development?
Working in a large group is often a balancing act. If everyone is off in their own worlds, not following anyone, people will get lost and the project will never get done. However, if there is one leader that no one can agree with, then mutiny would happen.
In Elton’s personal experience when working with a 60 person team in CSE 112, they started off with no clear leader or instruction and ended up in the first boat: no real tasks, no clear place to go. But when they turned towards the leaders, nobody really agreed with any of them. Only when a clear leader emerged and everybody’s skills and experience lined up right, did things start rolling.
One thing that we quickly learned is the need to trust the competency of your teammates I wish I could say the same when playing Rocket League…. I ended up being the task manager of our group, and therefore had to trust that Bert could indeed get wall-sliding to work, or that Elton could indeed get lights to sync over the network. It’s especially hard to trust people you’ve only met recently, but if you don’t and instead just try to implement everything yourself, you’re just going to run out of time, and drive down morale. Trusting everyone to be competent allows you to most effectively divide up tasks which speeds development up along.
Q: What would have you done differently if you could do CSE125 all-over again?
First, I’d find a better to develop on the lab machines! We spent 15-30 minutes setting up every single time due to the computers being wiped. Elton had the right idea, making an external hard drive his development station.
Development-wise, we’d work a lot harder to get something playable right at the front. It wasn’t until Week 8 that we really got to play around with our ideas and see what was viable, which obviously hurts when it comes to proper game design.
We’d also really try to get hold of an artist. Jeff did a great job, of course, but even Jeff’s skills and time are limited. Having dedicated people would have allowed Jeff to do more programming, as well as getting potentially even cooler art-direction that our feeble programmer-minds could have never thought of.
Q: What UCSD courses do you feel prepared you for CSE125?
CSE167, obviously. It’s the only OpenGL introductory course you’ll find at UCSD, and even if you’re not knee-deep in Uniform Buffer Objects and Fresnel coefficients, you really should know what the Model, View, and Perspective matrices are, as well as how transformations work, the role of the camera, scene-graphs, all kinds of stuff. CSE167 is also one of the few classes to allow freeform final projects, which will really help you when coming up with a CSE125 project.
CSE124 is almost essential if you want to start networking with sound footing. A lot of our initial networking exploration was just repurposing old CSE124 code.
Q: What was the most important thing you learned in the class?
I can’t speak for my group, but the most important thing I learned in this class is that shortcuts hurt. It is way too easy to do things the “easy” way just because it’s the quickest, or not very fun to take seriously. Of course, when you just want to get something on the screen, doing things the easy way is often recommend. But if you only take shortcuts, and you don’t remedy those shortcuts as soon as you can, developing actual structure rather than just hacks upon hacks, your codebase will become very unwieldy very fast.
We put a lot more effort into a proper code than I’ve ever done in any of my prior projects Don’t tell my past employers!, and even with the outrageously-high upfront costs, I’d do it all again because it made our code so much easier to reason with once we started reaching crunch time and brainpower started dropping. Good code pays for itself.
Media
Here’s some media we’ve collected of the game. Enjoy!
Feedback
Q: What books do you recommend for learning?
Real-Time Rendering by Akenine-Moller, Haines, and Hoffman is a book that Jeff recommends time and time again when it comes to all things graphics (Dexter even found use for it when making his collision code!). Thankfully you guys provide the second edition of the book.
Not a book, but learnopengl.com is an absolutely fantastic resource for anyone getting up to speed with modern OpenGL programming. It teaches everything you need to know (and then some!) while remaining completely approachable.
Q: What tips do you have for future students?
- Start early. No, really. this isn’t CSE131, you can’t do the assignments the day before they’re due.
- Establish some sort of methods of communication right from the beginning. We used Slack.
- Decide on some sort of source control. Make sure everyone is competent with it, and make sure to establish some sort of etiquette on how it should be used.
- Always communicate what you’re doing. The worst feeling is when you’re halfway working on something and then find out your teammate already did it.
- Make sure everyone is doing something at all times. Even if it’s just looking through code to make sure they understand how it works, people should always be busy. If someone’s not busy, then
- Someone else is too busy and tasks need to be split up
- You forgot something and are therefore not planning well
- Someone is blocking the project and that needs to be resolved ASAP (maybe you can help!!)
Q: Any final feedback?
For me (and the others I’m sure), CSE 125 is a course that I’ve been waiting to take since my freshman year at UCSD, and I’m so happy that I’ve been able to be a part of it with my group members. So definitely don’t stop doing it! I want to come by next year and watch next year’s presentation!
One of the biggest blocks for us was the work environment. From the computers being reset on log-off (we’ve lost work a couple of times due to that), to non-CSE 125 students taking space in the lab even though it’s reserved, to the darn department destroying the hallway and making all foot traffic go through us, B220 had to have been my least favorite part of CSE 125. Obviously the latter problem was a situation specific to us, but the rest were actively bothersome. The problem though is I can’t really see how this would be resolved—it honestly seems like things were handled the best that they could.
Obviously such things can’t be forced, but it would be great if more groups in the future made games that didn’t occupy the competitive arena space. We were quite surprised when we found out that we were the first cooperative puzzler team! It would be great if more teams tried super-wacky ideas (not to put down the other teams; from the team-based naval game to capture-the-farm I really loved the other games this year). Perhaps we could get a speaker to come and talk about game design? Not having experience with/time for game design seems to be the biggest reason why wacky games might not be coming out of CSE 125.
Q: Anything else?
Thank you Professor Voelker and Ruiqing for the best closing of our time at UCSD that we could have ever wished for!


We aim to provide convenience for company regulation, protecting staff against Covid-19.
Download App- About us
- About
- Our team
- Opportunities
- Staff services
- Help
- About us
- About
- Our team
- Opportunities
- Staff services
- Help
- About us
- About
- Our team
- Opportunities
- Staff services
- Help


In this mode, the Lightning-Core engine is started in memory. The client uses in memory core instance to execute URL.
Please refer this example.
In this mode, Lightning-Core instance is started as a standalone process. The client jar is added in the application that wants to use the lightning. The client is built from LightingClientBuilder and is used for various operations.
Please refer this example.


Notebooks
Story: Words and sentences given by |han≠kass'o at the South African Museum
Words and sentences given by |han≠kass'o at the South African Museum
Title
Words and sentences given by |han≠kass'o at the South African Museum
Collection
Summary
Names of Animals, mainly identified at the South African Museum. Given by /han≠kass’o (L VIII.-2. 6141-6145, 9. 6770-6775, 21. 7817, 7819-7821, 7842 and 7843, 7843, 7846, 31. 8790 rev. and 8791). A list list of |xam names of animals given by |han≠kass'o at the South African Museum as well as some details about them.
Comments
1) p.6770: 'Museum, May 1, 1878'; p.6775: 'Mowbray 1 May /78', 2) This story is found in Book VIII-9
Contributors
|han≠kass'o (Klein Jantje) (VIII)
Date
1 May 1878
Categories
Keywords
words and sentences (names of animals) , words and sentences (given by |han≠kass'o at the South African Museum) , vocabulary (|xam) , vocabulary (names of animals) , vocabulary (given by |han≠kass'o at the South African Museum) , names (of animals) , names (given by |han≠kass'o at the South African Museum) , animals (names of) , animals (given by |han≠kass'o at the South African Museum)
Story Pages
6770-6775


org.biopax.paxtools.util
Class AbstractFilterSet<F,E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
org.biopax.paxtools.util.AbstractFilterSet<F,E>
- All Implemented Interfaces:
- java.lang.Iterable<E>, java.util.Collection<E>, java.util.Set<E>, Filter<F>
- Direct Known Subclasses:
- ClassFilterSet
public abstract class AbstractFilterSet<F,E>
- extends java.util.AbstractSet<E>
- implements Filter<F>
Base class for implementing various filter sets.
Filter sets are unmodifiable.
- See Also:
for an implementation that filters classes.
|
Field Summary |
protected java.util.Set<? extends F> |
baseSet
|
|
Method Summary |
boolean |
contains(java.lang.Object o)
|
java.util.Iterator<E> |
iterator()
|
int |
size()
This size operation runs on O(n) and should be avoided for large sets. |
| Methods inherited from class java.util.AbstractSet |
equals, hashCode, removeAll |
| Methods inherited from class java.util.AbstractCollection |
add, addAll, clear, containsAll, isEmpty, remove, retainAll, toArray, toArray, toString |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.biopax.paxtools.util.Filter |
filter |
| Methods inherited from interface java.util.Set |
add, addAll, clear, containsAll, isEmpty, remove, retainAll, toArray, toArray |
baseSet
protected final java.util.Set<? extends F> baseSet
AbstractFilterSet
public AbstractFilterSet(java.util.Set<? extends F> baseSet)
size
public int size()
- This size operation runs on O(n) and should be avoided for large sets.
It is possible to write a one pass more efficient abstract set but its
initialization cost would be higher.
- Specified by:
size
in interface java.util.Collection<E>
- Specified by:
size
in interface java.util.Set<E>
- Specified by:
size
in class java.util.AbstractCollection<E>
- Returns:
- the size of the list
contains
public boolean contains(java.lang.Object o)
- Specified by:
contains
in interface java.util.Collection<E>
- Specified by:
contains
in interface java.util.Set<E>
- Overrides:
contains
in class java.util.AbstractCollection<E>
iterator
public java.util.Iterator<E> iterator()
- Specified by:
iterator
in interface java.lang.Iterable<E>
- Specified by:
iterator
in interface java.util.Collection<E>
- Specified by:
iterator
in interface java.util.Set<E>
- Specified by:
iterator
in class java.util.AbstractCollection<E>


Adani Green Energy reports profit of Rs 102 crore in Q2
The revenue from power generation was up 3 percent at Rs 462 crore.
Adani Green Energy has posted a profit of Rs 102.3 crore in the September quarter.
The company reported a loss of Rs 187.9 crore on YoY basis, while a loss of Rs 97.44 crore on QoQ basis.
Revenue was up 53.5 percent at Rs 689 crore versus Rs 449 crore, YoY.
Earnings before interest, tax, depreciation and amortisation (EBITDA) rose 94.4 percent at Rs 382.1 crore versus Rs 196.6 crore, while EBITDA margin was up at 55.5 percent versus 43.8 percent, YoY.
Tax expense stood at Rs 100 crore against tax credit of Rs 74 crore, YoY.
Revenue from power generation was up 3 percent at Rs 462 crore, while the total number of units sold in Q2 FY20 is 970 Mu’s up 7 percent, YoY.
At 1445 hours, Adani Green Energy Limited was quoting at Rs 96.00, up Rs 2.40, or 2.56 percent, on the BSE.Get access to India's fastest growing financial subscriptions service Moneycontrol Pro for as little as Rs 599 for first year. Use the code "GETPRO". Moneycontrol Pro offers you all the information you need for wealth creation including actionable investment ideas, independent research and insights & analysis For more information, check out the Moneycontrol website or mobile app.


Handling user-submitted data
Subsections
- File Uploads
-
How to upload and handle files using forms
- Form Components
-
Enhanced input fields
- Image Galleries
-
Upload and edit an image gallery
- Multimedia Galleries
-
Create complex image galleries
Description
Forms are used to gather information from users. You could also use plain anchors with request attributes, but forms are way more convenient especially for more than a couple of fields and when performing validation.
The more general kind of form has some input fields that are sent to the server in a POST and received from the @Controller as method parameters. This is a standard Spring Web MVC feature and quite straightforward to implement.
For more complicated forms you’d rather have a "form backing bean" holding all the input fields. This allows the use of the Yada Form Fragments for quickly assembling the HTML of the form.
Creating a java object just to hold the form data might seem overkill when you already have a database @Entity with the same exact fields. With a simple technique you can very easily use the same @Entity classes as form backing beans and save yourself a lot of work.
Plain Forms
The standard plain forms don’t need much explanation: you have some HTML with input fields and a @Controller that receives those input fields:
<form th:action="@{/addBook}">
<input name="bookTitle" th:value="${bookTitle}">
@Controller
public class BookController {
@RequestMapping("/addBook")
public String addBook(String bookTitle) {
Book book = new Book(bookTitle);
The above code doesn’t perform any validation but in a real-world example it should check at least that the title is not empty and go back to the user with an error message. The error handling code would have to be added for any field. Writing it could be quite time-consuming if there are more than a couple of fields. This is a possible solution for error handling:
<form th:action="@{/addBook}">
<input name="bookTitle" th:value="${bookTitle}" th:classappend="${titleError}?'formError':''">

Title Error

@Controller
public class BookController {
@RequestMapping("/addBook")
public String addBook(String bookTitle, Model model) {
if (bookTitle.trim().length()==0) {
model.addAttribute("titleError", "The book title can not be empty");
return "bookForm";
}
Book book = new Book(bookTitle);
Form Backing Beans
TODO
Entity Backing Beans
When the form contains most of the fields that are defined in an existing @Entity it makes sense to use that @Entity as a backing bean. Some may argue that exposing database classes on the front-end layer would compromise layer isolation, but we never experienced anything bad by doing this.
The general idea is that Spring can create an instance of a new @Entity or read it from the database before setting form values on it. The @Controller method handling the form will receive a ready-populated @Entity where any database value has been overwritten by the form value. This is very convenient because you just have to save the object and the form values will be persisted to the database. Even more, you can write a single method to handle both addition and editing of @Entity instances, sharing the common code.
The trick is to add a @ModelAttribute to the @Controller, which is always called before Spring calls the final @RequestMapping method:
<form th:action="@{/addBook}" th:object="${book}">
<input type="hidden" name="bookId" value="*{id}">
<input th:field="*{bookTitle}">
@Controller
public class BookController {
@ModelAttribute("book")
public Book addBook(@RequestParam(value="bookId", required=false) Long id) {
Book toEdit = null;
Exception exception = null;
if (id!=null) {
try {
toEdit = bookRepository.findOne(id);
} catch (Exception e) {
exception = e;
}
if (toEdit==null) {
log.error("Can't find Book with id={} - (creating new)", id, exception);
} else {
log.debug("Book {}-{} fetched from DB as ModelAttribute", id, toEdit.getTitle());
}
}
if (toEdit==null) {
toEdit = new Book();
}
return toEdit;
}
@RequestMapping("/addBook")
public String addBook(Book book, Model model) {
// Validation here
...
bookRepository.save(book);
test that the above code works
It’s always better to use a specific name for the @Entity id, like bookId
and not just id
, so that you can handle different @Entity instances in the same @Controller.
Ajax Forms
To send a form via ajax you just need to add the yadaAjax
class:
<form class="yadaAjax" action="/subscribe">
When a form is added dynamically via custom javascript, you also need to call
yada.enableAjaxForms();
after the change.
Any submit handler that needs to be invoked before form submission has to be listed as a SubmitHandler value:
data-yadaSubmitHandler |
yada:submitHandler |
|---|
Both the data- attribute version and the yada: dialect version take a comma-separated list of function names to be called in order. Submission is aborted if any returns false and any following functions are skipped.
Example:
<form class="yadaAjax" action="/subscribe" yada:submitHandler="validateInput">
Submit handlers can be set on the form tag and on any submit button. The "this" object is either the form or the clicked button, depending on where the tag has been placed.
Postprocessing
There are many options to handle the server response, like replacing page content or invoking some handler. See Ajax Links for more details. For example, this form replaces a page element with the returned html:
<form class="yadaAjax" action="/subscribe" yada:updateOnSuccess="#someSection">
Form groups
Multiple forms scattered around the page can be submitted together if they belong to the same "Form Group": when any (ajax or not) form in the group is submitted, the fields from all other forms in the same group are added to the payload. If a field has the same name in more than one form, only the first found is considered.
The submission of a form group can also be triggered by an anchor or any other type of element
with a href
or data-href
attribute (ajax or not). Any request parameter on the url is added to the payload and
overwrites any form fields with the same name.
The syntax to define a form group is the following:
| data attribute | yada dialect | value | description |
|---|---|---|---|
data-yadaFormGroup |
yada:formGroup |
any name |
Identifies the form as belonging to the given group |
Example with a triggering form:
<form action="/someAction" yada:formGroup="myGroup">
<input name="a" value="1">
<button type="submit">Submit</button>
</form>
<form action="ignored" yada:formGroup="myGroup">
<input name="b" value="2">
</form>
<form action="ignored" yada:formGroup="myGroup">
<input name="c" value="3">
</form>
In the above example, submitting the first form would send "a=1&b=2&c=3"
to /someAction
.
A similar behavior would be obtained by using the "form" attribute on the <input>
tags of child forms.
The use of yada:formGroup
has the following advantages:
-
it is quicker to type on large forms
-
can be used together with (ajax or not) requests from elements other than forms (e.g. ajax links)
-
a future improvement could allow forms to belong to multiple groups, something that can’t be done with the "form" attribute
Example with a triggering anchor in ajax:
Click me
<form action="/someAction" yada:formGroup="myGroup">
<input name="a" value="1">
<input name="c" value="3">
<button type="submit">Submit</button>
</form>
<form action="ignored" yada:formGroup="myGroup">
<input name="b" value="2">
</form>
In the above example, clicking on the link would send "a=9&b=2&c=3"
to /someUrl
.
all. Remember that button handlers receive the button itself: function editTaskFormHandler(responseText, responseHtml, form, button) {
TO BE CONTINUED


Dogs do not actually prefer bones to meat; it is just that no one ever gives them meat.
~ Akan proverb


Choose Budget
Card with header and footer. Card header is used to display card title and footer for some additional information or for custom actions.
Choose Brand
Card with header and footer. Card header is used to display card title and footer for some additional information or for custom actions.
Select Fuel
Card with header and footer. Card header is used to display card title and footer for some additional information or for custom actions.


@* * Copyright 2021 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 play.api.Configuration @import uk.gov.hmrc.agentsexternalstubsfrontend.models._ @import play.api.libs.json.JsObject @import uk.gov.hmrc.play.views.html.helpers.{FormWithCSRF, TextArea} @this(mainTemplate: main_template, form: FormWithCSRF, textArea: TextArea, navigationBar: navigationBar) @(recordForm: Form[JsObject], postUrl: Call, cancelUrl: Call, context: PageContext)(implicit request: Request[_], messages: Messages, config: Configuration) @mainTemplate(title = Messages("records.title"), bodyClasses = Some("full-width")) { @navigationBar(context)
@Messages("records.edit.description")


Test to check the mobile detection feature.
This is . Your UA is
Supported methods tests
| is() | class="true"> |
Other tests
| isiphone() | |
| isIphone() | |
| isTablet() | |
| isIOS() | |
| isWhateverYouWant() |
>
Test to check the mobile detection feature.
This is . Your UA is
| is() | class="true"> |
| isiphone() | |
| isIphone() | |
| isTablet() | |
| isIOS() | |
| isWhateverYouWant() |


NURSE BETTY (USA Films) Starring: Renee Zellweger, Morgan Freeman, Chris Rock, Greg Kinnear, Aaron Eckhart, Tia Texada, Allison Janney. Screenplay: John Richards and James Flamberg. Producers: Steve Golin and Gail Mutrux. Director: Neil LaBute.  Reviewed by Scott Renshaw.
There's something particularly delightful -- and subversive -- about a high-concept comedy that turns into something resonant. GROUNDHOG DAY could have been ridiculous and repetitive, but it charmed you with an unexpectedly touching romance; BEING JOHN MALKOVICH could have been a simplistic tale of misguided celebrity worship, but it turned into an absurdist existential fantasy worthy of Ionesco. Hollywood excels at selling stories in a single sentence, and we come to expect that we know all there is to know about the film from that sentence. When it becomes evident that there's more to a film than its marketing-savvy premise, it's a heart-warming experience indeed.
NURSE BETTY isn't as thematically rich as either GROUNDHOG DAY or BEING JOHN MALKOVICH, and it's certainly not as thematically rich as director Neil LaBute's dazzling debut IN THE COMPANY OF MEN. It is, however, a peculiarly entertaining comedy that sticks in the brain for a while longer than you expect. The high concept involves a Kansas waitress named Betty Sizemore (Renee Zellweger) whose dreary life and joyless marriage to used car salesman Del (Aaron Eckhart) are balanced by her intense devotion to her favorite soap opera, "A Reason to Love." One night, she witnesses a murder committed by hired killers Charlie (Morgan Freeman) and Wesley (Chris Rock), and something inside Betty snaps. She escapes into a fantasy world where she was once the fiancee of "A Reason to Love's" dashing Dr. David Ravell (Greg Kinnear), and hits the road for Los Angeles to find him. Meanwhile, Charlie and Wesley are on her trail, searching for the witness to their crime.
It's entirely possible that NURSE BETTY could have succeeded as a comedy strictly on the basis of its wild premise. LaBute directs with effective comic short-hand -- a scene portraying Del in the middle of an affair with his secretary shows wear marks on the wall to emphasize his recidivist philandering -- and paces his showpiece sequences with a flair you might not expect from the misanthropic mind behind IN THE COMPANY OF MEN.  The performances are not uniformly appealing -- Rock yells without doing much acting, and Eckhart's mullet-headed lout of a husband is as broad a stereotype as you'll find - but the work by Zellweger, Freeman and Kinnear more than takes up the slack. It's simply a funny comedy.
Simply funny, but far from simplistic. NURSE BETTY takes the somewhat trite notion of soap operas as vicarious life for those with unhappy lives and twists it into provocative knots. Zellweger's performance never once romanticizes Betty's instability, turning her into the logically illogical extreme of a woman whose fantasy world becomes necessary for her to cope with her present. She's also not alone in that respect. Charlie -- played with perfect dignity by the incomparable Freeman -- comes to idealize Betty as the paragon of human goodness waiting for him at the end of his last job as a killer; the short-fused Wesley, also a fan of "A Reason to Love," turns his simple assignment into a "statement" so it has more meaning, and rationalizes his killing by comparing himself to God. Even George McCord, the actor who plays David Ravell, comes to love playing his part off-screen with Betty (whom he believes to be just a really committed Method actress looking for a job on the show). The resolution may come to some obvious conclusions about the need to face reality, but along the way it shows a respect for the complexity of our coping mechanisms, whatever form they may take.
With so much strong stuff at the center, it's a shame that NURSE BETTY gets flabby around the edges. The late re-appearance of Crispin Glover and Pruitt Taylor Vince (as a reporter and sheriff from Betty's home town, respectively) adds little to the already dense plot but the presence of two actors whose quirkiness can be distracting. The attempts at entertainment industry satire don't always mesh with the edgier stuff, and the tone shifts from intense to playful on a dime. In fact, by all rights it should be just another affably mediocre piece of Hollywood joke-mongering. Yet even with its bumps and scrapes, NURSE BETTY feels like more. There's something at stake, something recognizably human, something you don't often find in high-concept comedy. Thanks to Zellweger, Freeman and (of all people) Neil LaBute, there's a heart here, and a brain, too. It's an approach that takes a high concept just a bit higher.
On the Renshaw scale of 0 to 10 daytime dramas: 7.
Visit Scott Renshaw's Screening Room http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the Screening Room for details, or reply to this message with subject "Subscribe".
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Hobbies
Things I enjoy doing...
Toggle!
Eat
Sleep
Watch K-Dramas
Shopping
Webtoons
Going on Social Media
Youtubing
The website I enjoy watching.
Back to Homepage


Hello, .

Your current balance is $
Transaction History
| Transaction Type | Date | Transaction Amount | Amount Before | Amount After |
|---|
Welcome to your account, here you can charge your credit and view your full transaction history.
Your current balance is $
| Transaction Type | Date | Transaction Amount | Amount Before | Amount After |
|---|


#{paymentForm.paymentSubmit()}
Thank You!
Payment Complete!
Please check your email
for further instructions.
Continue to homepage


@* * Copyright 2017 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 uk.gov.hmrc.valuationofficeagencycontactfrontend.FrontendAppConfig @import uk.gov.hmrc.valuationofficeagencycontactfrontend.models.NormalMode @(appConfig: FrontendAppConfig)(implicit request: Request[_], messages: Messages) @main_template( title = messages("housingBenefits.title"), appConfig = appConfig, bodyClasses = None) { @components.back_link(uk.gov.hmrc.valuationofficeagencycontactfrontend.controllers.routes.EnquiryCategoryController.onPageLoad(NormalMode).url)
@messages("housingBenefits.para1")
@messages("housingBenefits.address.1")
@messages("housingBenefits.address.2")
@messages("housingBenefits.address.3")
@messages("housingBenefits.address.4")
@messages("housingBenefits.address.5")
@messages("housingBenefits.email")
@messages("housingBenefits.phone-number")
@messages("housingBenefits.para2")
}


KOASK is a self-management and knowledge app for those suffering from knee osteoarthritis (KOA).
Find it on the Apple App Store here!
Through a variety of strategies, tools, and resources, KOASK helps you keep your KOA in check.
Most importantly, it provides peace of mind.
Calculate the current severity and stage of your knee osteoarthritis
Track your pain, functionality, and stiffness to get a comprehensive picture of your condition
See strategies and information with the potential to slow down your KOA's progression
Customize an exercise plan from a set of recommended activities
Get a glimpse into the future with a projected severity estimate
Manage your KOA with ease. After all, KOASK was developed with you in mind!
Osteoarthritis, commonly known as wear-and-tear arthritis, is a condition in which the natural cushioning between joints - cartilage - wears away. When this happens, the bones of the joints rub more closely against one another with less of the shock-absorbing benefits of cartilage. The rubbing results in pain, swelling, stiffness, decreased ability to move and, sometimes, the formation of bone spurs.
According to the Arthritis Foundation, more than 27 million people in the U.S. have osteoarthritis, with the knee being one of the most commonly affected areas. In the United States, knee osteoarthritis (KOA) occurs in 10% of men and in 13% of women aged 60 years or older. Although there's no cure for knee osteoarthritis as of yet, the good news is that there are a number of treatments that can help ease symptoms and reduce the chances of your condition becoming worse.
Take a quick look at what KOASK has to offer!
Have questions, comments, or concerns? Drop us a line at<EMAIL_ADDRESS>We would love to hear from you!


To enroll for upcoming NLP Online batches or for any other queries, please contact us at shinota.com
NLP Online Courses
Courses on Offer
NLP Online courses are interactive one-on-one and group sessions with Ashok Subramanian over web based video-conferencing. Currently there are 3 types of courses on offer: Personal Effectiveness Workshop (PEW), NLP Foundation Workshop (FW) and Personal Excellence Coaching (telephonic).
Format & Requirements
Each PEW and FW course consists of six 2-hr interactive sessions distributed over a period of 3 weeks and includes assignments and a certificate (you'll need a decent internet connection and a webcam).Telephonic coaching is a counselling session over phone and can be purchased/scheduled when required.
Ashok & Shinota
Ashok Subramanian is an NLP Master Trainer of international repute and an NLP pioneer in India. He has been using NLP to bring value to the masses for around two decades. You can read more about Ashok and Shinota at shinota.com.


cgpf library portability and compatibility -- tested supported C++ compilers and platforms
Below table shows the tested platforms and C++ compilers that cpgf works on.
In summary, if you are working on Microsoft Windows, Linux, Mac (iOS, iPhone, iPad), and using the compilers MS VC 2008 or newer, GCC 3.4.2 or newer, cpgf library will work for you.
And your target platform is not limited to Windows, Linux or Mac. It can be mobile phones, embeded deviced, game consoles, as long as it has a compiler supported in the list.
From version 1.2.3, cpgf also supports Embarcadero C++ Builder (tested with version 2010).
| Platform |
Compiler |
Target |
Result |
Comment |
| Microsoft Windows |
Microsoft Visual C++ 2008 Express |
32 bit |
Compile clean |
Though the target is 32 bit, "-Wp64" is enabled to check 64 bit portability. |
| Microsoft Windows |
Microsoft Visual C++ 2010 Professional |
32 bit |
Compile clean |
Though the target is 32 bit, "-Wp64" is enabled to check 64 bit portability. |
| MinGW |
gcc 4.4.0, 4.5.2, 4.6.1 |
32 bit |
Compile clean |
|
MinGW |
gcc 3.4.2 |
32 bit |
A lot of useless compile warnings |
The test case "test_reflection_class.cpp" will trigger an internal bug in g++.
So that file is excluded from the test.
|
| Linux |
gcc 4.5.2 |
32 bit |
Compile clean |
The Linux version is Ubuntu 11.04 running in VirtualBox |
| Apple Mac 10.6.8 |
gcc 4.4.0 |
32 bit |
Compile clean |
|
| Apple Mac 10.6.8 |
Darwin gcc 4.2.1 |
32 bit |
A lot of useless compile warnings |
|
| Apple Mac 10.6.8 |
Xcode 4.0.1 |
32 bit |
Compile clean |
The compiler is Xcode default one. |
| Apple Mac 10.6.8 |
Xcode 4.0.1 |
64 bit |
Compile clean |
Failed link because Lua and V8 were compiled in 32 bit.
The library itself should work well on 64 bit target.
|
| Linux |
Intel C++ Compiler Composer XE 12.1.2, free version |
32 bit |
Issues some no hurt warnings |
The Linux version is Ubuntu 11.04 running in VirtualBox.
Unit test test_callback is failed to compile due to compiler internal error.
|
| Windows XP |
Embarcadero C++ Builder |
32 bit |
Only compiled library and partial unit tests |
Note: script binding library can be compiled but doesn't link, because it's not trivial work to get C++ Buidler work with Lua and Google V8 library.
Some unit tests will cause "E2491 Maximum VIRDEF count exceeded" error, or internal error.
That's because of that the compiler is buggy and lame.
|
Notes:
"Compile clean" means succeeding the compiling and linking, no errors or warnings after enabling all warnings.
Google V8 v8.h will introduce warnings but that's not counted to cpgf.
The working compilers and platforms are not limited to the list in the table.
The table only shows the compilers and platforms that had been tested.
The other not too old compilers in GCC, VC family should work well too. Not too old means not as old as VC 6 or GCC 2.9.5.
Intel C++ Compiler is super slow to compile cpgf.
It uses more than 2 hours to compile the unit tests while GCC and VC only need 10~20 minutes.
Not sure it's because that the compiler is quite slow to compile template code, or because it's run in Ubuntu which is running in Virtualbox (but GCC in Ubuntu + Virtualbox is quite faster).
C++ Builder is not fully tested.
Seems C++ Builder is quite lame and doesn't have the ability to compile quite complicated source file.
For some unit test, the compiler always throws errors, such like "E2491 Maximum VIRDEF count exceeded", or internal error. All are the compiler's internal limitation.
So some unit test for reflection, such as method or operator, most tests are removed in C++ Builder.
Also script binding is not tested in C++ Builder, because it will be hard to build Lua and V8 library using C++ Builder.
In brief, only 40% of the total unit tests are used to test cpgf in C++ Builder.
So if you want to use cpgf in C++ Builder, take your own risk.
Not all compilers are tested for compatibility in every cpgf release.
Due to the frequently library releasing, and the huge work/time on testing all compilers listed above, in each release, not all compilers are tested.
So if you find any supported compiler failed to compile the library, please forgive it kindly and notify me for the issue.
Up to now, it's only guaranteed that GCC 4.6 and VC 2008 are used to test every release.
Your help is wanted.
If you approve that cpgf library works on other compilers or platforms, please let me know!
Especially non-VC and non-gcc compilers are interested, such as Intel compiler.
Also non-Windows, non-Linux and non-Mac platforms are interested, such as mobile phones, game consoles (Wii, WiiU, NDS, 3DS, XBox 360, PS3, PSP), or embeded system.
Also more 64 bit tests are interested.


Find Out More »
Read More »
The Holly Community Center is located at 300 East St Holly, Mi 48442, Holly, Michigan 48442.
Our hours of operation are Monday-Saturday 10AM-9PM.


Click in the boxes to colour them, that have the correct Homophones for the given pictures.
flour
flower
night
knight
bee
be
hare
hair
foul
fowl
one
won
not
knot
fairy
ferry
bear
bare
Submit