Configuration Changes in Infinispan
This blog will introduce both Infinispan users, and Infinispan contributors to the new configuration system. First, I’ll detail the changes for users, and then for committers.
Users
If you use XML to configure Infinispan, you shouldn’t notice any change,
except a much faster startup, courtesy of the Stax based parser.
However, if you use programmatic configuration, read on for the
important differences.
Configuration is now packaged in org.infinispan.configuration
, and you
must use a builder style:
Configuration c1 = new ConfigurationBuilder()
// Adjust any configuration defaults you want
.clustering()
.l1()
.disable()
.mode(DIST_SYNC)
.hash()
.numOwners(5)
.build();
The old bean style configuration is now deprecated and will be removed
in a later version.
Configuration properties which can be safely changed at runtime are
mutable, and all others are immutable.
To copy a configuration, use the read()
method on the builder, for
example:
Configuration c2 = new ConfigurationBuilder()
// Read in C1 to provide defaults
.read(c1)
.clustering()
.l1()
.enable()
// This cache is DIST_SYNC, will have 5 owners, with L1 cache enabled
.build();
This completely replaces the old system of defining a set of overrides on bean properties. Note that this means the behaviour of Infinispan configuration is somewhat different when used programmatically. Whilst before, you could define a default configuration, and any overrides would be applied on top of your defaults when defined, now you must explicitly read in your defaults to the builder. This allows for much greater flexibility in your code (you can have a as many "default" configurations as you want), and makes your code more explicit and type safe (finding references works).
The schema is unchanged from before. Infinispan 4.0 configurations are currently not being parsed. Support for these will be added shortly, however a warning message will be printed if they are used. To upgrade, just change the schema definition from:
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:4.1 http://www.infinispan.org/schemas/infinispan-config-4.1.xsd"
xmlns="urn:infinispan:config:4.1">
to
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd"
xmlns="urn:infinispan:config:5.1">
The schema documentation has changed format, as it is now produced using the standard tool x3p. This should be a significant improvement, as better navigation is offered. Some elements and attributes are missing docs right now, we are working on adding this. As an added benefit, your IDE should now show documentation when an xsd referenced (as above)
We are in the process of adding in support for this configuration style for modules (such as cache stores). In the meantime, please use the old configuration or XML if you require support for cache store module configuration.
Committers
If you are a committer to Infinispan, you may find the following notes useful. Note that currently we still use the old configuration system internally within Infinispan. This makes things a little complicated. This will be switched out soon! For now, you need to also add your property to the old config system as well as the new.
Note, these guides assume you are adding an element to the cache configuration, but apply equally to the global configuration.
Before you start adding a configuration property, identify whether you want to add a property to an existing configuration group/element, or whether you need to create a child object. We call the configuration group XXX in the steps below.
Adding a property
-
Add the property to the relevant
XXXConfiguration
class. Add a private final field, add a parameter to the constructor, and assign the value to the field in the constructor body. Add a accessor for the property. If the property should be mutable at runtime, then add a mutator as well. Most configuration properties are not mutable at runtime - if the configuration is runtime mutable, then Infinispan needs to take notice of this update whilst the cache is running (you can’t cache the value of the configuration in your implementation class). Mutators and accessors don’t use the classic JavaBean pattern of prepending accessors with "get" and mutators with "set". Instead, the name of the property is used for an accessor. A mutator is an overloaded version of the accessor which takes a parameter, the new value. -
Add the property to the matching
XXXConfigurationBuilder
. You’ll need to add a mutable field to the class, and initialise it to it’s default value in the field declaration. Add a mutator (following the above pattern). -
The
create()
method is called by the parent object in order to instantiate theXXXConfiguration
object from the builder. Therefore, make sure to pass the value of the field in the builder to theXXXConfiguration
object’s constructor here. Additionally, if you require a complex default (for example, the value of a configuration property is defaulted conditionally based on the value of some other configuration property), then this is the place to do this. -
The
validate()
method is called by the parent object to validate the values the user has passed in. This method may also be called directly by user code, should they wish to manually validate a configuration object. You should place any validation logic here related to your configuration property. If you need to "cross-validate" properties (validate the value of your property conditionally upon the value of another property), and the other property is on another builder object, increase the visibility of that other property field to "default", and reference it from this builder, by calling thegetBuilder()
method, which will gives you a handle on the root configuration builder. -
The final step is to add parsing logic to the
Parser
class. First, add the attribute to name to theAttribute
enum (this class simply provides a mapping between the non-type-safe name of the attribute in XML and a type-safe reference to use in the parser). Locate the relevantparseXXX()
method on the class, and add a case to the switch statement for the attribute. Call the builder mutator you created above, performing any XML related validation (you are unlikely to need this), and type conversion (using the static methods on the primitive wrapper classes, String class, or relevant enum class).
Adding a group
In some situations you may additionally want to add a configuration
grouping object, represented in XML as an element. You might want to do
this if you are adding a new area of functionality to Infinispan.
Identify the location of the new configuration grouping object. It might
be added to the root Configuration
object, or it might be added to one
it’s children, children’s children. We’ll call the parent YYY in the
steps below.
-
Create the
XXXConfiguration
object. Add any properties required following the guide for adding properties. The constructors visibility should be "default". -
Create the
XXXConfigurationBuilder
object. It should subclass the relevant configuration child builder — use theYYYConfigurationChildBuilder
as the superclass. This will ensure that all builder methods that allow the user to "escape" are provided correctly (i.e provide access to other grouping elements), and also require you to provide a create() and validate() method. The constructor needs to take the theYYYConfigurationBuilder
as an argument, and pass this to the superclass (this simply allows access to the root of the builder tree using thegetBuilder()
method). -
Follow the property adding guide to add any properties you need to the builder. The
create()
method needs to return a new instance of theXXXConfiguration
object. Implement any validation needed in thevalidate()
method. -
In the
YYYConfiguration
object, add your new configuration class as a private final field, add an accessor, and add initialiser assignment in the constructor -
In the
YYYConfigurationBuilder
, add your new configuration builder as a private final field, and initialise it in the constructor with a new instance. Finally, add an accessor for it following the standard pattern discussed in the guide. -
In the
YYYConfigurationBuilder
ensure that your validate method is called in it’s validate method, and that result of theXXXConfiguration
instances' create method is passed to the constructor ofYYYConfiguration
-
Finally, add this to the parser. First, add the element to the
Element
class, which provides a type safe representation of the element name in XML. In theParser
class, add a newparseXXX
method, copying one of the others that most matches your requirements (parse methods either parse elements only - look forParseUtils,requireNoAttributes()
, attributes only — look forParseUtils.requireNoContent()
or a combination of both — look for an iterator over both elements and attributes). Add any attributes as discussed in the adding a property guide. Finally, wire this in by locating theparseYYY()
method, and adding an element to the switch statement, that calls your newparseXXX()
method.
Bridging to the old configuration
Until we entirely swap out the old configuration you will need to add
your property to the old configuration (no need to worry about jaxb
mappings though!), and then add some code to the
LegacyConfigurationAdaptor
to adapt both ways. It’s fairly
straightforward, just locate the relevant point in the adapt()
method
(near the configuration group you are using) and map from the legacy
configuration to the new configuration, or vs versa. You will need to
map both ways, in both adapt methods.


To get in touch with Patrick, you can connect on LinkedIn, and make sure to check out his GitHub!
To get in touch with Sergio, you can connect on LinkedIn, and make sure to check out his GitHub!
To get in touch with Elia, you can connect on LinkedIn, and make sure to check out her GitHub!
To get in touch with Anne, you can connect on LinkedIn, and make sure to check out her GitHub!


public interface IKandyGroupService
| Modifier and Type | Method and Description |
|---|---|
void |
addParticipants(KandyRecord groupId,
java.util.List<KandyRecord> participants,
KandyGroupResponseListener responseListener)
Add participants to the group
|
void |
createGroup(KandyGroupParams groupParams,
KandyGroupResponseListener responseListener)
Create a KandyGroup by the received KandyGroupParams
|
void |
destroyGroup(KandyRecord groupId,
KandyResponseListener responseListener)
Destroy group by group ID
|
void |
downloadGroupImage(KandyRecord groupId,
KandyResponseProgressListener progressListener)
Download the group image
|
void |
downloadGroupImageThumbnail(KandyRecord groupId,
KandyThumbnailSize thumbnailSize,
KandyResponseProgressListener progressListener)
Download the goup's image thumnail
|
void |
getGroupById(KandyRecord groupId,
KandyGroupResponseListener responseListener)
Get group details by group id
|
void |
getMyGroups(KandyGroupsResponseListener responseListener)
Get all my groups
|
KandyGroupSettings |
getSettings()
Gets the settings object to configure service specific configurations
|
void |
leaveGroup(KandyRecord groupId,
KandyResponseListener responseListener)
Leave a group
|
void |
muteGroup(KandyRecord groupId,
KandyGroupResponseListener responseListener)
Mute group - push notifications from this group will not be received
|
void |
muteParticipants(KandyRecord groupId,
java.util.List<KandyRecord> participants,
KandyGroupResponseListener responseListener)
Mute participants - push notifications from this participants will not be received
|
void |
registerNotificationListener(KandyGroupServiceNotificationListener listener)
Register to incoming events the client receives from the group service
|
void |
removeGroupImage(KandyRecord groupId,
KandyGroupResponseListener responseListener)
Remove the Group image(avatar)
|
void |
removeParticipants(KandyRecord groupId,
java.util.List<KandyRecord> participants,
KandyGroupResponseListener responseListener)
Remove participants from the group
|
void |
unmuteGroup(KandyRecord groupId,
KandyGroupResponseListener responseListener)
Unmute group - push notifications from this group will be received
|
void |
unmuteParticipants(KandyRecord groupId,
java.util.List<KandyRecord> participants,
KandyGroupResponseListener responseListener)
Unmute participants - push notifications from this participants will be received
|
void |
unregisterNotificationListener(KandyGroupServiceNotificationListener listener)
Stop listening to group notifications
|
void |
updateGroup(KandyRecord groupId,
KandyGroupParams groupParams,
KandyGroupResponseListener responseListener)
Update a KandyGroup by the received
KandyGroupParams |
void |
updateGroupImage(KandyRecord groupId,
android.net.Uri groupImageUri,
KandyGroupResponseListener responseListener)
Update the group image
|
void |
updateGroupName(KandyRecord groupId,
java.lang.String groupName,
KandyGroupResponseListener responseListener)
Update the group name
|
void registerNotificationListener(KandyGroupServiceNotificationListener listener)
listener
- to be registered/added to group service notificationsvoid unregisterNotificationListener(KandyGroupServiceNotificationListener listener)
listener
- to be unregistered/removed from group service notificationsvoid createGroup(KandyGroupParams groupParams, KandyGroupResponseListener responseListener)
groupParams
- KandyGroupParams
to use for creating the KandyGroupresponseListener
- will be called upon completion, will contain error in case of failure or KandyGroup
in case of success
see KandyGroupResponseListener
void destroyGroup(KandyRecord groupId, KandyResponseListener responseListener)
groupId
- the ID of the group to destroy NOT NULLresponseListener
- KandyResponseListener
calls the success callback or fail with error callbackvoid updateGroup(KandyRecord groupId, KandyGroupParams groupParams, KandyGroupResponseListener responseListener)
KandyGroupParams
groupId
- the ID of the group to updategroupParams
- KandyGroupParams
to use for updating the KandyGroup
responseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of success
on success will be returned the KandyGroup
instancevoid updateGroupName(KandyRecord groupId, java.lang.String groupName, KandyGroupResponseListener responseListener)
groupId
- the ID of the group to updategroupName
- new name to updateresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of success
on success will be returned the KandyGroup
instancevoid updateGroupImage(KandyRecord groupId, android.net.Uri groupImageUri, KandyGroupResponseListener responseListener)
groupId
- the ID of the group to updategroupImageUri
- new image to be updated toresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of successvoid addParticipants(KandyRecord groupId, java.util.List<KandyRecord> participants, KandyGroupResponseListener responseListener)
groupId
- the ID of the groupparticipants
- list of KandyRecord
s of participants to addresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of successvoid removeParticipants(KandyRecord groupId, java.util.List<KandyRecord> participants, KandyGroupResponseListener responseListener)
groupId
- the ID of the groupparticipants
- list of KandyRecord
s of participants to removeresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of successvoid muteGroup(KandyRecord groupId, KandyGroupResponseListener responseListener)
groupId
- groupId the ID of the groupresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of success
on success will be returned KandyGroup
instancevoid unmuteGroup(KandyRecord groupId, KandyGroupResponseListener responseListener)
groupId
- groupId the ID of the groupresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error in case of failure or KandyGroup in case of success
on success will be returned KandyGroup
instancevoid muteParticipants(KandyRecord groupId, java.util.List<KandyRecord> participants, KandyGroupResponseListener responseListener)
groupId
- group where the selected members will be mutedparticipants
- list of participants to be mutedresponseListener
- KandyGroupResponseListener
calls the success callback or fail with error callback
on success will be returned KandyGroup
instancevoid unmuteParticipants(KandyRecord groupId, java.util.List<KandyRecord> participants, KandyGroupResponseListener responseListener)
groupId
- the ID of the groupparticipants
- list of the participants to muteresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error
in case of failure or KandyGroup in case of success
on success will be returned KandyGroup
instancevoid getGroupById(KandyRecord groupId, KandyGroupResponseListener responseListener)
groupId
- the ID of the group to get the details ofresponseListener
- KandyGroupResponseListener
will be called upon completion, will contain error
in case of failure or KandyGroup in case of success
on success will be returned KandyGroup
instance with group detailsvoid getMyGroups(KandyGroupsResponseListener responseListener)
responseListener
- KandyGroupsResponseListener
will be called upon completion, will contain error
in case of failure or KandyGroup in case of successvoid leaveGroup(KandyRecord groupId, KandyResponseListener responseListener)
groupId
- the ID of the group to leaveresponseListener
- KandyResponseListener
will be called upon completion, will contain error incase of failurevoid downloadGroupImage(KandyRecord groupId, KandyResponseProgressListener progressListener)
groupId
- id of the group, which image to downloadprogressListener
- track the downloa dprogress and notify when download succeeded with file's uri on device or failed with errorvoid downloadGroupImageThumbnail(KandyRecord groupId, KandyThumbnailSize thumbnailSize, KandyResponseProgressListener progressListener)
groupId
- groupId id of the group, which thumbnail to downloadthumbnailSize
- size of the thumbnail to be downloaded KandyThumbnailSize
progressListener
- track the downloa dprogress and notify when download succeeded with file's uri on device or failed with errorvoid removeGroupImage(KandyRecord groupId, KandyGroupResponseListener responseListener)
groupId
- group wich image want to removeresponseListener
- KandyResponseListener
calls the success callback or fail with error callbackKandyGroupSettings getSettings()
Copyright © 2014 GENBAND, Inc. All Rights Reserved.


| DOSE: |
repeated |
oral |
DXM |
(liquid) |
| |
repeated |
insufflated |
5-MeO-DMT |
(powder / crystals) |
I used dextromethorphan regularly for about 3 and a half years, sporadically at first, then more and more compulsively as time went on. As a result, I have learned much, and suffer from lingering after-effects that might be of interest to others.
I began using DXM after reading about it on the internet, experimenting with the different plateaus, and after 2 or three months I reached a level of use consisting of a 4 oz. bottle of Robitussin or the equivalent every week or two weeks, and 2 bottles once every month or 2, on average, although there was a period of a month or so where I was using it two or three times a week.
I experienced psychedelic effects to some degree through this whole period, although they would be very slight now if I were to take up the habit again and most of my really good trips later on were with DXM in conjunction with something else, usually pot or 5-meo-dmt. I realize, in retrospect, that my use was mainly because of a mood lift that would last for a couple days after my trip, followed by a slight but persistent depression and cravings, and also the nearly complete escape from reality and feeling of power the drug provided.
Most of my trips were pretty typical for the various dosage levels, running the range from music induced imagery and body distortions to seeing the white light and thinking I was dying. I have discovered several things of note, however. An online source mentions that meditation can enhance DXM trips. I found through experimentation that two particular forms are stunningly effective. Both are described in depth in a work on out of body experiences dealing with 'the rope method' of leaving the body.
First, attempting to enter a trance state while under the influence is very easy, and dramatically enhances disassociation, i.e., one becomes extremely cut off from the outside world. The method I used is to imagine you are climbing down a long ladder, being sure to imagine the physical feeling of my body moving down, not just the visual image. I would loose all sensation in my limbs, and finally all awareness of my physical self except as a microscopic pin prick, on a low second plateau dose. Second, attempting to leave the body using the rope method induces a dramatic increase in sensations of movement, body image distortion, and visual imagery, and the exit from the body is much easier than while sober. My method is to imagine I am pulling myself hand over hand up a rope while perfectly still with eyes closed.
Once again, imagining the physical sensation and that I have moved through space to a new location is important, and complete focus on the imagined climbing is a must. This ultimately leads to a powerful rushing, tearing sensation, a feeling that I am in two places at once, both in and above the body, and finally the ability to roam about the room separate from the body. The common thread I think is imagining myself to be physically located somewhere else in the room. Both methods can create effects comparable to a 4th plateau trip on a second plateau dose if applied diligently.
My second discovery is of a wonderful synergy between DXM and 5-meo-dmt. The experience is similar to combining other psychedelics with DXM, but lacks the overwhelming gaudy visuals and confusion I find in combinations with LSD or other tryptamines. I would come down being able to remember much more of the trip than with other psychedelics, and the trips were always powerful. The visuals were not flashy or highly colored, but were intense and quite realistic, most reminiscent of my early days with DXM alone, but amplified.
A common theme in many of the trips was being taken back to the creation of the universe to witness it's birth in a sea of white light, then through all of history; first the emergence of order in the cosmos, best described as a visual music, or a music of being, then the creation of our planet, the development of plants, then animals, then people, then through human history and culture, all with a powerful sense of progression from simplicity and abundance of potential and energy, a strong dichotomy of being, to fecundity, diversity, and a kind of exhaustion of resources and dissipation, as if the yin and yang had leaked together. The first birth and explosion was much like a regular 5-meo flash, but the rest radically different.
I would insufflate about 15mg of the 5-meo an hour after the DXM. I believe in the reality of visions, and I think that 5-meo-dmt is a powerful source of psychic energy, perhaps the most powerful, releasing the full energy reserves of the user or drawing it from somewhere else, and it provides great impetus for travel using the metaphorical vehicle of DXM, which provides relatively easy access to the immaterial realms; enough impetus, in fact, to travel back to the very end of time. It is the plutonium in the DXM Dalorean.
I finally gave up this particular substance after experiencing disturbing, persistent side effects that could be evidence of brain damage. The first thing I noticed was difficulty finding the exact word I wanted. The word would be on the tip of my tongue, but wouldn't come to me unless I spent a good couple minutes thinking about it. This was very disturbing, and lead me to give up the drug, although it took the better part of a year to get off of it completely.
My verbal memory seems to have recovered now that I've quit; my brain has hopefully adapted and shuffled the knowledge to some unaffected wrinkle on the walnut, although I can't tell for sure whether my vocabulary has been cropped.
The second side effect is a visual disturbance that is nearly identical to fine textured television static, overlayed onto my visual field. It only occurs at night and is quite pronounced, sometimes to the point of obscuring the outlines of objects. The dots of static are a faint grey, tinged with all the colors of the rainbow. It becomes worse while I am under the influence of serotonergic psychedelics, or immediately after I wake up. This is also getting better, but much more slowly, and I expect it will be a couple more years before I am free of it. While it doesn't affect my work like the loss of vocabulary, it is still unnerving. I could hardly see the stars for a while; that was a sad state of affairs.
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.


Tuesdays, 6pm
Room UC-222
Devon Elliott
<EMAIL_ADDRESS>Office Hours: Tuesdays, 4:00 - 5:00pm, SSC 1004 or by appointment
Karen
Map Warper
https://mapwarper.net/
Schedule:
http://bit.ly/1KHe4G0
Readings:
Technology:
"You can't grep dead trees."
ABBYY Finereader
Adobe Acrobat
On the school's computers in labs -- you can scan documents and OCR them, or load a file and OCR it.
http://www.adobe.com/ca/products/acrobat/convert-jpeg-scan-ocr-to-pdf.htmlTesseract
Started by HP, adopted by Google -- free and open source.
https://code.google.com/p/tesseract-ocr/Break up a large file into smaller, more manageable parts. These might be into individual pages of a document, or by the number of lines.
This is easier to do on a Mac, or on other Unix-based machines (computers running a version of Linux).
Save the PDF files of the New York Clipper issues you've got.
Internet Archive exampleOpen a Command Prompt. Click Start > Accessories > Command Prompt.
C:\Program Files\gs\gs9.10\bin>gswin64c -dNOPAUSE -o "C:\Users\WinMachine\Documents\NewYorkClipper\clipper-1914-01\clipper-1914-01-%03d.png" -sDEVICE=png16m -r300 "C:\Users\WinMachine\Documents\NewYorkClipper\clipper-1914-01\clipper61-1914-01.pdf"
For Windows PCs - go to the following site, download and open tesseract-ocr-setup-3.02.02.exe.
https://code.google.com/p/tesseract-ocr/downloads/listClick on your Spotlight icon (the little magnifying glass in the top-right corner. Type Terminal. One of the options should be called that, click it to open a terminal.
Go to http://brew.sh/ and copy the install code and paste it into the Terminal window. The install code is:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
In the Terminal, type brew install tesseract
Go to the Command Prompt or Terminal
At the Command Prompt or in Terminal, type tesseract and press the Space Bar, and then click and drag one of your png files onto that command line. Alternatively, you can enter the directory path and file name of one of the .PNG files. Follow this with a space, and type the name of the file again WITHOUT the .PNG.
It should look something like this: tesseract /Users/devonelliott/Documents/NewYorkClipper/clipper61-1914-01-003.png /Users/devonelliott/Documents/NewYorkClipper/clipper61-1914-01-003 on a Mac, or the following on a Windows PC tesseract C:\Users\devonelliott\Documents\NewYorkClipper\clipper61-1914-01-003.png C:\Users\devonelliott\Documents\NewYorkClipper\clipper61-1914-01-003
That should generate a .TXT file that is the OCR results of that page. Open it and see how well (or poorly) it did.
TextRecognize
See you on March 17.
Contact me at<EMAIL_ADDRESS>or stop by SSC 1004 on Tuesdays, 4:00-5:00. I'm also available before and after class on Tuesdays, or by appointment.


Class tags and id tags are used to apply rules to your elements in your HTML file via a CSS file or via inline styling. Basically, they are used to tell information on a website to be presented in a certain way, such as font color, positioning, borders and so on. Class tags are identified by using the . symbol before the tag name, while id tags use the # symbol.
The main difference between the two, is that class tags can be reused for multiple elements, while id tags are unique and can not. If comparing to cars, class tags are like the make of a car, while id tags are like the specific number plate. Many cars share the same shape, colours and motors which is comparable to using class tags, while every car has a specific number plate, which is similar to how id tags word.
The other main difference is that id tags have higher priority than class tags. This means that when an class and an id are applied to the same element, and they are both affecting the same trait, the rule set in the id tag will prevail.
Refer to the below image:
*As you can see the id tag holds priority here.
The other difference, is that multiple class tags can be applied to an element. Id tags can not. This makes it handy to apply rules from different class tags to the same element.
Refer to the below image:
*When more than one class uses the same trait rule, the last class tag will take priority.
In general, the class tag function has much more functionality than the id tag. However,there may be specific times where id will be more beneficial.
For example, if you were working with somebody elses stylesheet, but you wanted to change a few traits on one element. In this case, you may not want to change the entire class or make a new one from scratch. This is where id tags are handy.
In this scenario you could create an id tag for all of the traits you wanted to change and apply it to the element. As id tags take priority, it'll overwrite the relevant class functions, but leave the rest. This can be very handy for collaboration work.
In the end, it really comes down to context. Class tags have much more functionality, and allow you to repeat styling. However, id tags can help you when you're already using a hardset of styling rules and it can be helpful with applying Javascript rules. More on this in the future.


Weathermaster:
Recommended Output:
Teleportation-type Golem Maintenance: 10->5
West Wing Project: 30->25
The Guard System in the each wing: 20 -> 20
Outputting Energy: 40->0
Do you wish to implement it?
Implement


föda
Filters
Favorites
Options
Login
Demo
×
Modal title
One fine body…
×
Filters
Food Type
American
Chinese
Italian
Sushi
Cafe
Open Now
Vegetarian
×
Favorites
×
Options
Location Enabled
Save Favorites
Reset Food Preferences
×
Warning!
 All your favorites and dislikes will be erased.
More results


--- layout: page title: "Digest Fields" description: "This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields." ---
| Document Name: | Internet Draft ietf-httpbis-digest-headers |
|---|---|
| Document URI: |
urn:ietf:id:ietf-httpbis-digest-headers
|
| Online Version: |
https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-digest-headers
|
| Organization: | Internet Engineering Task Force (IETF) |
| Series: | Internet Draft (I-D) |
| Abstract: | This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields. |
Content-Digest
,
Repr-Digest
,
Want-Content-Digest
,
Want-Repr-Digest
Return to ( Series | Organization | all Specifications )


Meizu phone
Oops！The page is not found
Maybe the address is incorrect, please check and retry.
Home Page


{% extends "base.html" %} {% from 'products/includes/product_macros.html' import product_cards with context %} {% set styles = ('home',) %} {% block content %}


Both of the select list elements above are empty. The rendering in Internet Explorer (and now Edge) is very quirky. I can only pressume that this is a legacy hold over from the way that native Windows combo box elements originally rendered.


Ansu celebrates his birthday with his family and his Juvenil A teammates
The teenage forward celebrated turning 17 at a party on Thursday night
by SPORT.esThe divine treasure of youth. Ansu Fati has the world at his feet and he has only just turned 17. He celebrated his birthday on Oct. 31, the night of Halloween.
The young Barcelona players, the second youngest to ever play for the club in La Liga and the youngest to score a league goal, celebrated in correspondence with his age. Well, maybe a little more luxuriously, than your usual teenage birthday, but he still managed to have a cake and the presence of his friends, many of them players for Barcelona's Juvenil A team (U19s).
Without going further, a video uploaded onto Instagram by U19 full-back Adria Altimira shows the moment the cake was delivered to Ansu. As well as his teammates, there were many other people present, such as Rodrigo Messi (his agent), his parents, and various members of his family.
The celebration took place at Nuba in Barcelona in the Sarria area. The party could not go on to late, though. For starters, Ansu and most of his friends are still not old enough to drink, and secondly he had training on Friday ahead of Saturday's game at Levante.


public class AdditionalKt
@NotNull public static <T,R> java.lang.Thread runOnThread(T $this$runOnThread, @NotNull kotlin.jvm.functions.Function1<? super R,kotlin.Unit> onResult, @NotNull kotlin.jvm.functions.Function1<? super java.lang.Exception,kotlin.Unit> onError, boolean _isDaemon, @NotNull kotlin.jvm.functions.Function1<? super T,? extends R> lambda)
Calls the specified function lambda
with this
value
as its receiver and returns its result as callback
each call is made on a new thread
onResult
- the code that return the result,if this code is missing will be run stub
onError
- the code that handle the Exception,
if this code is missing will be run stubErrorCallback
_isDaemon
- determines whether the thread is a daemon, false by defaultlambda
@NotNull public static <T,R> java.lang.Thread runOnThreadWitch(T receiver, @NotNull kotlin.jvm.functions.Function1<? super R,kotlin.Unit> onResult, @NotNull kotlin.jvm.functions.Function1<? super java.lang.Exception,kotlin.Unit> onError, boolean _isDaemon, @NotNull kotlin.jvm.functions.Function1<? super T,? extends R> lambda)
Calls the specified function lambda
with the given receiver
as its receiver
and returns its result as callback
each call is made on a new thread
onResult
- the code that return the result,if this code is missing will be run stub
onError
- the code that handle the Exception,
if this code is missing will be run stubErrorCallback
_isDaemon
- determines whether the thread is a daemon, false by defaultlambda
,
receiver
@NotNull public static <T,R> java.lang.Thread processingOnThread(T $this$processingOnThread, @NotNull kotlin.jvm.functions.Function1<? super R,kotlin.Unit> onResult, @NotNull kotlin.jvm.functions.Function1<? super java.lang.Exception,kotlin.Unit> onError, boolean _isDaemon, @NotNull kotlin.jvm.functions.Function1<? super T,? extends R> lambda)
Calls the specified function lambda
with this
value as its argument and returns its result as callback
each call is made on a new thread
onResult
- the code that return the result,if this code is missing will be run stub
onError
- the code that handle the Exception,
if this code is missing will be run stubErrorCallback
_isDaemon
- determines whether the thread is a daemon, false by defaultlambda
@NotNull public static <T,R> java.lang.Thread handleOnThread(T data, @NotNull kotlin.jvm.functions.Function1<? super R,kotlin.Unit> onResult, @NotNull kotlin.jvm.functions.Function1<? super java.lang.Exception,kotlin.Unit> onError, boolean _isDaemon, @NotNull kotlin.jvm.functions.Function1<? super T,? extends R> lambda)
Calls the specified function lambda
with the given data
as as its argument
and returns its result as callback
each call is made on a new thread
data
- data for handlingonResult
- the code that return the result,if this code is missing will be run stub
onError
- the code that handle the Exception,
if this code is missing will be run stubErrorCallback
_isDaemon
- determines whether the thread is a daemon, false by defaultlambda
,
data
@NotNull public static <T> java.lang.Thread prepareOnThreadAndRun(T $this$prepareOnThreadAndRun, @NotNull kotlin.jvm.functions.Function1<? super T,kotlin.Unit> onResult, @NotNull kotlin.jvm.functions.Function1<? super java.lang.Exception,kotlin.Unit> onError, boolean _isDaemon, @NotNull kotlin.jvm.functions.Function1<? super T,kotlin.Unit> lambda)
Calls the specified function lambda
with this
value as its argument on a new thread
onResult
- Calls on main thread with this
value as its argument afterfunction lambda
finishedif this code is missing will be run stubonError
- the code that handle the Exception,if this code is missing will be run stubErrorCallback
onError
and onResult
are called in the main thread_isDaemon
- determines whether the thread is a daemon, true by defaultlambda


Ultra Puffers
& Parkas
Our warmest collection of coats, as seen on
some of our amazing home office associates.
SHOP MEN'S
SHOP WOMEN'S
From Our Door to Yours
New arrivals to give and get—because it’s
never too soon to start gifting.
SHOP MEN'S
SHOP WOMEN'S
Make Your List
It’s never too soon to start gifting. This year,
all our best gifts are all in one place.
SHOP THE A&F GIFT GUIDE
Shop Your Local Store & Get It Faster
Choose curbside pickup at checkout (where available) and we’ll email you when your order’s ready.
FIND YOUR STORE
Shop Safely This Season
We’re happy to offer you options, whether you’re shopping in-store or online.
(Pro tip: the sooner you shop, the sooner your gifts will ship!)
FIND A STORE
LEARN MORE


On this page, you can find informations about how to create a form using PSK Web Components designed in this scope.
There will be some major aspects described here, which are vital in order to be able to use these components properly:
What is a model and how to use it and how to create a controller for your form.What is a template and how to combine it with a model and the psk-for-each component.How to handle the form submission.How to bind the model to the form. Two-way binding
A model is data used by a program. This may be a database, file, or a simple object.
In our case, the model is a JavaScript object capable of handling changes to the form, but also of checking some validations (e.g. the input component is "required" to be filled in before submission).
For now, each model can be defined inside a controller as in the examples below the page (Using Forms chapter).
For this method, we have two possible ways of writing a Form controller:
If you want to use the basic functionalities of the form, you can create your own controller by extending the DefaultFormController as in below examples (Form Examples)The other way to do so is by extending the ContainerController and by following the exact source code below:
import ContainerController from '../../../cardinal/controllers/base-controllers/ContainerController.js';
export default class MyCustomFormController extends ContainerController {
constructor(element) {
super(element);
this.model = this.setModel({
// Your JavaScript object model here.
});
}
}
Information about the Controllers can be found here: Cardinal -> Controllers
If you do not need any special behaviour in your controller, but only submitting the form-data to a server, we strongly recommend you to use the first method, which is less likely to cause errors.
So far, so good, we know what is a model, we know how to create a controller and at the bottom of the page can be found some examples in order to provide a starting point to understand and use the form and form components.
A template is a sequence of components or HTML elements with the purpose to serve as view for a model. It means that a component will render the same HTML but with different content.
An example of a template can be found below, on Form example using psk-for-each component chapter.
For now, because of an error from Stencil.Js, we are somehow cornered to use the HTML tag template. So, there is a very important aspect regarding this issue is that if we want to use the psk-for-each component, we need to write the components between the template tags like in the example from the chapter HTML - View - TestFormForEachController. Only the components written inside template tags are mapped to the array model.
In order to combine a model with psk-for-each component, we need to have a model, a controller that will be attached to the psk-form component and an HTML source file which will contain the psk-for-each component and the template.
The model is attached to the psk-for-each component by using the special attribute data-view-model. Without this attribute, the component will do nothing. If the value assigned to the attribute is not present in our model, again, the component will do nothing.
Binding, at it's very basic, is the process where one thing is assinged to another thing. Here, we want to assign some attributes from a model to a component.
To bind the model to a component, we need set the attribute view-model or data-view-model to the component we want to bind the data. Pay attention that the attribute data-view-model is available only for the component psk-for-each, as described in the above chapter.
Let's take a look at the following source code of a controller wich loads a model, and the HTML view:
The bind is made only if the value of the attribute view-model is an existing chain inside the model. The chain is the sequence to the JavaScript object that will be bound to the component. If the chain is not a valid one, then the component will be rendered blank, without any properties.
Two-way binding in programming, as minimal definition, is the process where any change made in the view is reflected into the model and any change in the model is reflected into the view.
All the form components of type inputs, radio, checkbox and select have two-way binding implemented, which means that whenever the user is changing the content of an input, the model and view are automatically updated. Also it is applied when the user checks a checkbox or a radio and when he selects something from a select component.
There is not much to do here, you just need to make sure that the components are bound and the two-way is handled by the components.
This part is not very complicated, if you ned only to have a submition, just extend the DefaultFormController like in the above examples and let the default behaviour handle it. The form will automatically collect the form-data from and will send them to your Server or ESB or whatever you use to receive the form-data by using the attributes exposed by the psk-form component.
If you still want to customize the submition, no problem, this is also simple enough. At the end of the form, or wherever you need, add the component psk-button. Bear in mind to add the type="submit" attribute in order to proper validate you form fields, if required.
Here is an example:
Strong recommendation here to avoid unexpected "surprises" from the browser. Write the event name using only lower cases letters and if you want to sepparate words, use only dash(-) like in the example.
You will see that one of the attributes of this component is event-name. This event-name is the name of your handler. So, after you added the buttons, now go back to your custom form controller and register thess events. One notice; you can add as many buttons you need in here, nothing stops you.
Here is an example of a controller that does this:
This page holds enough information to understand how psk-form components work, how to create a form, how to handle the submition, how to use binding with models and templates.
Below, there are two full examples of forms resuming the described chapters above, one with binding data to a regular form and the other using template with psk-for-each component.
Don't hesitate to contact us in case there are further clarifications!


--- layout: post title: Hard Drive Backup via Amazon S3 date: 2008-05-14 20:29:00.000000000 -07:00 type: post parent_id: '0' published: true password: '' status: publish categories: [] tags: - Amazon S3 - Interesting Things meta: _edit_last: '1' blogger_blog: philihp.blogspot.com blogger_author: Philihp<EMAIL_ADDRESS>blogger_permalink: "/2008/05/hard-drive-backup-via-amazon-s3.html" tmac_last_id: '166390280281538563' _jetpack_related_posts_cache: a:1:{s:32:"8f6677c9d6b0f903e98ad32ec61f8deb";a:2:{s:7:"expires";i:1542041050;s:7:"payload";a:3:{i:0;a:1:{s:2:"id";i:176;}i:1;a:1:{s:2:"id";i:1232;}i:2;a:1:{s:2:"id";i:1354;}}}} author: login: Philihp email<EMAIL_ADDRESS>display_name: Philihp first_name: '' last_name: '' ---
Amazon has this nice service aptly named Simple Storage Service (abbreviated S3), where they aim to provide simple storage of data of arbitrary size, with high availability at consumer-level cost. It really is a nice design. And there's a REST interface setup for me to store my data!
And Jeremy Zawodny points out how using this service actually ends up to be cheaper (and more reliable) than having a home media server!
That puts the total cost for 5 years worth of backups [on a home backup server] around $2,275 assuming that no hardware breaks.
Switching to S3 could save me $587 over five years!


Buttons
The <button>
tag defines a clickable button. Inside a <button>
element you can put content, like text or images. Styling a <button>
element is as easy as adding the .btn
class. Further customization can be added to style your butons as decibed in the documentation below.
The .btn
Class
The .btn
class is the base class that creates your default unstyled buttons. It is designed for use on <button>
elements. However, you can also use it on other elements such as

or
.
To add a color class simply add -primary
, -info
, or another color class listed in the variables styleguide directly to the .btn
class.
This will result in one class that looks like this .btn-primary
Outlined Buttons
An alternative to the default solid buttons you can allso attach the class -outlined
to the .btn
to give them a transparent look and feel.
Button Sizes
Need a quick change in size for your buttons. Just add one of the button sizing classes. -small
, or -large
to the end of your buttons class. The medium sized button is the default size.
Block Level Buttons
Create block level buttons that span the full width of a parent by adding -block
to the end of your button class.
Grouped Buttons
Buttons can easily be grouped together by wrapping your buttons in a div
tag and attaching the class .grouped-buttons
as shown in the examples below.


Let's take a ride down the river! Collect coconuts, avoid gators, and stay ahead of the current. Race against time or an opponent!
1) Create the look of your game. Add a backdrop, trees, grass—whatever you like. Most importantly, create a river! Search for images on Google, use shapes in Woof, or head on over to Pixlr (or another image editor) and create something there. Note: If you create your own image, you'll then need to host it somewhere like Postimage.
2) Give your river a downward current. Have the current get faster over time.
3) Create two character sprites and place them at the bottom of the screen. Make one move with the arrow keys and the other with the A, W, S, and D keys.
4) Make the character sprites bounce off of each other if they collide.
5) Create two score variables—one for each character. Display the scores on the screen.
6) Create objects for the character sprites to collect as they move upstream. Have the objects appear every so often in random places and float down the river.
7) If either character touches one of the objects, have the object disappear and increase that player's score by one.
8) Create obstacles for your characters to avoid. Have them appear every so often in random places and move in different directions as they float downstream. Have them speed up over time.
9) If a character touches an obstacle, make the obstacle disappear and decrease that player's score. Send the character back to the bottom of the screen.
10) If a character sprite touches the outer edges of the river, create a collision effect and bring the sprite back to the middle of the river. Set its score to 0.
11) If a player's score gets to 10, end the game. Tell the players who won.
12) Add text at the beginning of the game. Have it explain how to play the game and ask if the player wants to add music. Find an audio file to play if the answer is yes!
13) Challenge: Create an option for a one-player game and have the player race against a timer. Add a choice of one player or two players at the start and update your game as needed.