Spoooky.Blueprints = {
/**
* Blueprints for the game of checkers
*/
CHECKERS : {
entities : {
// Blueprint of standard entity for player 2
topStandardEntity : {
entityType : "topStandardEntity",
// Unique type identifier
// necessary to create game state signatures
typeID : "AA",
// Holds the unique identifier of the associated meta entity
associatedWithMetaAgent : null,
// Visualization of the entity
representation : { type : "image", texture : "assets/black_01.png" },
// Moves of the entity
moves : [{
name : "southeast",
type : "Default",
direction : "southeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true },
{ condition : "Is Not The Last Row" }]
}, {
name : "southwest",
type : "Default",
direction : "southwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true },
{ condition : "Is Not The Last Row" }]
}],
// Sub Goals
goalAtoms : [{
atomName : "opponent southwest",
atomFunction : "Is Opponent",
atomArguments : "southwest"
}, {
atomName : "opponent southeast",
atomFunction : "Is Opponent",
atomArguments : "southeast"
}, {
atomName : "empty field southeast",
atomFunction : "Is Empty Cell",
atomArguments : "southeast"
}, {
atomName : "empty field southwest",
atomFunction : "Is Empty Cell",
atomArguments : "southwest"
}, {
atomName : "empty field two fields southwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, +2 ]
}, {
atomName : "empty field two fields southeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, +2 ]
}, {
atomName : "entity can reach the last row with southwest move",
atomFunction : "Entity Is Able To Reach A Specific Row",
atomArguments : [ "last", "southwest" ]
}, {
atomName : "entity can reach the last row with southeast move",
atomFunction : "Entity Is Able To Reach A Specific Row",
atomArguments : [ "last", "southeast" ]
}],
// Assemble sub goals / goal atoms to game goals of the entity
goals : [{
type : "CAPTURE",
name : "capture opponent southwest",
atoms : ["opponent southwest", "empty field two fields southwest"],
move : "southwest"
}, {
type : "CAPTURE",
name : "capture opponent southeast",
atoms : ["opponent southeast", "empty field two fields southeast"],
move : "southeast"
}, {
type : "GOALMOVE",
name : "reach the last row with southwest move",
atoms : ["empty field southwest",
"entity can reach the last row with southwest move"],
move : "southwest"
}, {
type : "GOALMOVE",
name : "reach the last row with southeast move",
atoms : ["empty field southeast",
"entity can reach the last row with southeast move"],
move : "southeast"
}]
},
// Blueprint of advanced entity for player 2
topKingEntity : {
entityType : "topKingEntity",
typeID : "AB",
associatedWithMetaAgent : null,
// Visualization of the entity
representation : { type : "image", texture : "assets/black_02.png" },
// Moves of the entity
moves : [{
name : "northeast",
type : "Default",
direction : "northeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "southeast",
type : "Default",
direction : "southeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "southwest",
type : "Default",
direction : "southwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "northwest",
type : "Default",
direction : "northwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}],
// Sub Goals
goalAtoms : [
{
atomName : "opponent northeast",
atomFunction : "Is Opponent",
atomArguments : "northeast"
},
{
atomName : "opponent northwest",
atomFunction : "Is Opponent",
atomArguments : "northwest"
}, {
atomName : "opponent southwest",
atomFunction : "Is Opponent",
atomArguments : "southwest"
}, {
atomName : "opponent southeast",
atomFunction : "Is Opponent",
atomArguments : "southeast"
}, {
atomName : "empty field two fields northwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, -2 ]
}, {
atomName : "empty field two fields northeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, -2 ]
}, {
atomName : "empty field two fields southwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, +2 ]
}, {
atomName : "empty field two fields southeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, +2 ]
}],
// Assemble sub goals / goal atoms to game goals of the entity
goals : [
{
type : "CAPTURE",
name : "capture opponent northwest",
atoms : ["opponent northwest", "empty field two fields northwest"],
move : "northwest"
}, {
type : "CAPTURE",
name : "capture opponent northeast",
atoms : ["opponent northeast", "empty field two fields northeast"],
move : "northeast"
}, {
type : "CAPTURE",
name : "capture opponent southwest",
atoms : ["opponent southwest", "empty field two fields southwest"],
move : "southwest"
}, {
type : "CAPTURE",
name : "capture opponent southeast",
atoms : ["opponent southeast", "empty field two fields southeast"],
move : "southeast"
}]
},
// Blueprint of standard entity for player 1
bottomStandardEntity : {
entityType : "bottomStandardEntity",
typeID : "BA",
associatedWithMetaAgent : null,
// Visualization of the entity
representation : { type : "image", texture : "assets/white_01.png" },
// Moves of the entity
moves : [{
name : "northeast",
type : "Default",
direction : "northeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true },
{ condition : "Is Not The First Row" }]
}, {
name : "northwest",
type : "Default",
direction : "northwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true },
{ condition : "Is Not The First Row" }]
}],
// Sub Goals
goalAtoms : [{
atomName : "opponent northwest",
atomFunction : "Is Opponent",
atomArguments : "northwest"
}, {
atomName : "opponent northeast",
atomFunction : "Is Opponent",
atomArguments : "northeast"
}, {
atomName : "empty field northeast",
atomFunction : "Is Empty Cell",
atomArguments : "northeast"
}, {
atomName : "empty field northwest",
atomFunction : "Is Empty Cell",
atomArguments : "northwest"
}, {
atomName : "empty field two fields northwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, -2 ]
}, {
atomName : "empty field two fields northeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, -2 ]
}, {
atomName : "entity can reach the first row with northwest move",
atomFunction : "Entity Is Able To Reach A Specific Row",
atomArguments : [ "first", "northwest" ]
}, {
atomName : "entity can reach the first row with northeast move",
atomFunction : "Entity Is Able To Reach A Specific Row",
atomArguments : [ "first", "northeast" ]
}],
// Assemble sub goals / goal atoms to game goals of the entity
goals : [{
type : "CAPTURE",
name : "capture opponent northwest",
atoms : ["opponent northwest", "empty field two fields northwest"],
move : "northwest"
}, {
type : "CAPTURE",
name : "capture opponent northeast",
atoms : ["opponent northeast", "empty field two fields northeast"],
move : "northeast"
}, {
type : "GOALMOVE",
name : "reach the first row with northwest move",
atoms : ["empty field northwest",
"entity can reach the first row with northwest move"],
move : "northwest"
}, {
type : "GOALMOVE",
name : "reach the first row with northeast move",
atoms : ["empty field northeast",
"entity can reach the first row with northeast move"],
move : "northeast"
}]
},
// Blueprint of advanced entity for player 1
bottomKingEntity : {
entityType : "bottomKingEntity",
typeID : "BB",
associatedWithMetaAgent : null,
// Visualization of the entity
representation : { type : "image", texture : "assets/white_02.png" },
// Moves of the entity
moves : [{
name : "northeast",
type : "Default",
direction : "northeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "southeast",
type : "Default",
direction : "southeast",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "southwest",
type : "Default",
direction : "southwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}, {
name : "northwest",
type : "Default",
direction : "northwest",
frequency : 1,
conditions : [{ condition : "Is Empty", state : true }]
}],
// Sub Goals
goalAtoms : [
{
atomName : "opponent northeast",
atomFunction : "Is Opponent",
atomArguments : "northeast"
}, {
atomName : "opponent northwest",
atomFunction : "Is Opponent",
atomArguments : "northwest"
}, {
atomName : "opponent southwest",
atomFunction : "Is Opponent",
atomArguments : "southwest"
}, {
atomName : "opponent southeast",
atomFunction : "Is Opponent",
atomArguments : "southeast"
}, {
atomName : "empty field two fields northwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, -2 ]
}, {
atomName : "empty field two fields northeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, -2 ]
}, {
atomName : "empty field two fields southwest",
atomFunction : "Is Empty Cell",
atomArguments : [ -2, +2 ]
}, {
atomName : "empty field two fields southeast",
atomFunction : "Is Empty Cell",
atomArguments : [ +2, +2 ]
}],
// Assemble sub goals / goal atoms to game goals of the entity
goals : [
{
type : "CAPTURE",
name : "capture opponent northwest",
atoms : ["opponent northwest", "empty field two fields northwest"],
move : "northwest"
}, {
type : "CAPTURE",
name : "capture opponent northeast",
atoms : ["opponent northeast", "empty field two fields northeast"],
move : "northeast"
}, {
type : "CAPTURE",
name : "capture opponent southwest",
atoms : ["opponent southwest", "empty field two fields southwest"],
move : "southwest"
}, {
type : "CAPTURE",
name : "capture opponent southeast",
atoms : ["opponent southeast", "empty field two fields southeast"],
move : "southeast"
}]
}
},
consequences : {
topPlayer : {
man_capture_opponent_southwest : {
goalName : "capture opponent southwest",
entityType : "topStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, +2, "move_goal", "RELATIVE", "topStandardEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, +1, "RELATIVE", "topStandardEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, +2, "topStandardEntity", "captureMove" ]
}, {
jobName: "Transform Entity If It Has Reached The Last Row",
jobFunction: "Transform Entity If Row Reached",
jobArguments: { row : "last", entityType : "topKingEntity" }
}]
},
man_capture_opponent_southeast : {
goalName : "capture opponent southeast",
entityType : "topStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, +2, "move_goal", "RELATIVE", "topStandardEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, +1, "RELATIVE", "topStandardEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, +2, "topStandardEntity", "captureMove" ]
}, {
jobName: "Transform Entity If It Has Reached The Last Row",
jobFunction: "Transform Entity If Row Reached",
jobArguments: { row : "last", entityType : "topKingEntity" }
}]
},
man_reach_last_row_southwest : {
goalName : "reach the last row with southwest move",
entityType : "topStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -1, +1, "move_goal", "RELATIVE", "topStandardEntity" ],
execute: "immediately"
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -1, +1, "topStandardEntity", "" ]
}, {
jobName: "Transform Entity Into King Entity",
jobFunction: "Transform Entity",
jobArguments: "topKingEntity"
}]
},
man_reach_last_row_southeast : {
goalName : "reach the last row with southeast move",
entityType : "topStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +1, +1, "move_goal", "RELATIVE", "topStandardEntity" ],
execute: "immediately"
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +1, +1, "topStandardEntity", "" ]
}, {
jobName: "Transform Entity Into King Entity",
jobFunction: "Transform Entity",
jobArguments: "topKingEntity"
}]
},
//*** Consequences for king entity
king_capture_opponent_northwest : {
goalName : "capture opponent northwest",
entityType : "topKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, -2, "move_goal", "RELATIVE", "topKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, -1, "RELATIVE", "topKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, -2, "topKingEntity", "captureMove" ]
}]
},
king_capture_opponent_northeast : {
goalName : "capture opponent northeast",
entityType : "topKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, -2, "move_goal", "RELATIVE", "topKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, -1, "RELATIVE", "topKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, -2, "topKingEntity", "captureMove" ]
}]
},
king_capture_opponent_southwest : {
goalName : "capture opponent southwest",
entityType : "topKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, +2, "move_goal", "RELATIVE", "topKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, +1, "RELATIVE", "topKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, +2, "topKingEntity", "captureMove" ]
}]
},
king_capture_opponent_southeast : {
goalName : "capture opponent southeast",
entityType : "topKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, +2, "move_goal", "RELATIVE", "topKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, +1, "RELATIVE", "topKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, +2, "topKingEntity", "captureMove" ]
}]
}
},
bottomPlayer: {
man_capture_opponent_northwest : {
goalName : "capture opponent northwest",
entityType : "bottomStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, -2, "move_goal", "RELATIVE", "bottomStandardEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, -1, "RELATIVE", "bottomStandardEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, -2, "bottomStandardEntity", "captureMove" ]
}, {
jobName: "Transform Entity If It Has Reached The First Row",
jobFunction: "Transform Entity If Row Reached",
jobArguments: { row : "first", entityType : "bottomKingEntity" }
}]
},
man_capture_opponent_northeast : {
goalName : "capture opponent northeast",
entityType : "bottomStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, -2, "move_goal", "RELATIVE", "bottomStandardEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, -1, "RELATIVE", "bottomStandardEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, -2, "bottomStandardEntity", "captureMove" ]
}, {
jobName: "Transform Entity If It Has Reached The First Row",
jobFunction: "Transform Entity If Row Reached",
jobArguments: { row : "first", entityType : "bottomKingEntity" }
}]
},
man_reach_last_row_northwest : {
goalName : "reach the first row with northwest move",
entityType : "bottomStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -1, -1, "move_goal", "RELATIVE", "bottomStandardEntity" ],
execute: "immediately"
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -1, -1, "bottomStandardEntity", "" ]
}, {
jobName: "Transform Entity Into King Entity",
jobFunction: "Transform Entity",
jobArguments: "bottomKingEntity"
}]
},
man_reach_first_row_northeast : {
goalName : "reach the first row with northeast move",
entityType : "bottomStandardEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +1, -1, "move_goal", "RELATIVE", "bottomStandardEntity" ],
execute: "immediately"
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +1, -1, "topStandardEntity", "" ]
}, {
jobName: "Transform Entity Into King Entity",
jobFunction: "Transform Entity",
jobArguments: "bottomKingEntity"
}]
},
king_capture_opponent_northwest : {
goalName : "capture opponent northwest",
entityType : "bottomKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, -2, "move_goal", "RELATIVE", "bottomKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, -1, "RELATIVE", "bottomKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, -2, "bottomKingEntity", "captureMove" ]
}]
},
king_capture_opponent_northeast : {
goalName : "capture opponent northeast",
entityType : "bottomKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, -2, "move_goal", "RELATIVE", "bottomKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, -1, "RELATIVE", "bottomKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, -2, "bottomKingEntity", "captureMove" ]
}]
},
king_capture_opponent_southwest : {
goalName : "capture opponent southwest",
entityType : "bottomKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ -2, +2, "move_goal", "RELATIVE", "bottomKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ -1, +1, "RELATIVE", "bottomKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ -2, +2, "bottomKingEntity", "captureMove" ]
}]
},
king_capture_opponent_southeast : {
goalName : "capture opponent southeast",
entityType : "bottomKingEntity",
consequences : [
{
jobName: "Highlight Target Cell",
jobFunction: "Highlight Cell",
jobArguments: [ +2, +2, "move_goal", "RELATIVE", "bottomKingEntity" ],
execute: "immediately"
}, {
jobName: "Delete Opponent Entity",
jobFunction: "Capture Opponent At",
jobArguments: [ +1, +1, "RELATIVE", "bottomKingEntity" ]
}, {
jobName: "Move Game Entity",
jobFunction: "Move Entity Relative To",
jobArguments: [ +2, +2, "bottomKingEntity", "captureMove" ]
}]
}
}
}
}
};


PART IV. CHILDREN WITH SPECIAL HEALTH NEEDS
Note
Part heading amended by L 1988, c 4, §1.
§321-51 Department to administer [part]. The department of health is designated as the agency of the State to administer a program of services for children with special health needs. [L 1939, c 179, §2; RL 1945, §2102; RL 1955, §46-41; am L Sp 1959 2d, c 1, §19; HRS §321-51; am L 1988, c 4, §2]


Here are three new things I’ve learned about myself and my ego as a result of the core learning.
 I Think at high school, I was definitely someone with a fixed mindset. I was in top classes which made me think “Oh i must be smart, at some things at least”. Hindsight now can let me see that I was just lucky to grow up in a household that valued education. Where the ego really came in to bite me was when I first came across calculus. In the NZ school system, it felt like there wasn’t any challenge up until that point, but when I hit that point… Boy oh boy was I in for a shock. I think the teenage me blamed my teachers and the system. In reality I just needed to put in the work. Me thinking I was “smart” at math really screwed me when I came up against a new challenge. I flunked that course. Then seven years later, and now an adult who had travelled the world and seen that there're a million different forms of intelligence. I’d seen that the only thing that matters is putting in the work ( Understanding things like neuroplasticity help ). I took a uni paper that covered calculus, without an ego in the way thinking everything else is wrong I aced the paper and more importantly understood “What” calculus is (still would need to refer to formulas in the way a programmer might look up docs). So when it comes to bootcamp, and programing in the future, I’ll understand that I am nether “smart” nor “dumb” I am just yet to learn.
Within the core learnings, the active listening was a key area of development for me. After reading the best selling book, How to Win Friends and Influence People by Dale Carnegie, a few years ago, I have been conscious about being an active listener in day to day life, but I do often find myself chiming in with little things, mainly a confirmation of what the other person is saying. By doing the exercise and waiting completely until the other person has finished talking before responding I feel like I have further developed that skill. It forces you to be even more attentive when listening and makes you really try to understand what the other person is saying concisely, which of course benefits both people involved. The last main take away from the foundations core work was from at the start where we identified our values. By putting them into words and writing it to be consumed by the fellow classmates, it really forces you to think hard, and write in a way to be understood. For me I plan on iterating over my values a few more times and getting a full piece written up on my personal blog.
For me personally, my values are what drive me and help get me through the hard times. They are also something that helps me have a grounding for when I’m getting off track.
Us humans are social animals, so empathy and self awareness are two things that are essential for having healthy social relationships. In a discipline like programming where you come up against hard problems, and work with a wide range of people across businesses, being able to build relationships and have healthy communication are key. The thing that has surprised me the most about the core learning is just how much I’ve enjoyed it, and look forward to developing it for the rest of my life.
As far as challenging aspects go, I really did find it all so enjoyable that it wasn’t a challenge. Often when trying to write it’s hard for me to get going, but it really was super enjoyable and took out any of what some might call “challenge” from it.
Does the time you spent studying core learning here feel like a waste of time? Should you have just used that time to practicing programming instead? Justify your answer. As for if I feel like the core learning was a waste of time or not, and if we should have just been programing instead? I think that its definitely not a waste of time. On one side, it’s a great way to produce content for our work. It's been something that myself and hopefully others have been enjoying doing, and want to put together as part of our blogs. On the other side, I think programming is really hard at times, and without these core skills it’s going to be really hard to stick through it. One final point, I think it is in everyone’s best interest. If the students learn all these core skills, and become better happier people, and the people employing them are happy with them, and the people around them are happy with them, it benefits everybody, including Dev Academy which is going to be more likely to get more enrolments and more employment directly from it. A superb alignment of incentives.
In absolutely no way do I feel like this is a waste of time. When learning a new skill like programming, that can be incredibly cognitively demanding, breaking up the workload with writing allows productive rest time. I find It’s a great way to nurture flow states also, which channel over to programming. As with everything I’ve said above, I think it all fits in together, and hopefully will deliver some great results.


This article includes my reaction to Shereef's fireside chat
Justin W
This article includes my reaction to Shereef's fireside chat
Shereef's fireside chat was a clarifying and informative session for me, in that it made my expectations more clear. The way he described the course and it's group team mentality is how I pictured things would be, since all signs have been pointing to that since I applied. The effort that is expected from students as well is also what I expected, and I am excited to put that effort in.
I found his analogy of the Kitchen and Table interesting and it's definitely something I'd like to stay mindful of. I feel like I'm already in the 'kitchen' mindset, where I want to go in and feel responsible to learn as much as I can; not just expecting to get what I paid for.
The emphasis that Shereef puts on friendliness and everyone being in this together made me feel good about what is to come, and kind of calmed some nerves. I do admit to having some fears of falling behind in some respects, going too fast in others, or not communicating well due to being somewhat of an introvert. However, the environment described seems to help that, as everyone is working together towards a common goal. I am very excited to see what I can learn, and after already seeing how friendly everyone is and watching this video, I feel that I am a great fit for the environment. I can't wait!


UN expert: 100,000 kids in migration-related detention in US
GENEVA (AP) - An independent expert working with the U.N. human rights office estimates that over 100,000 children are being held in migration-related detention in the United States.
Human rights lawyer Manfred Nowak said Monday the U.S. is holding "far more" than are other countries for which he has reliable figures. About 60 out of every 100,000 children in the U.S. are deprived of liberty, versus about five on average in Western Europe.
Nowak said country-specific figures for the U.N. Global Study on Children Deprived of Liberty, a version of which was released in July, will be published Tuesday. Data came from government and advocacy group statistics.
The U.S. government didn't respond to his team's questionnaire. The U.S. is the only country not to have ratified the Convention on the Rights of the Child.
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


100 Days of Vue
Webpage & Indexer of #100DaysOfVue where can be
found all projects made.
Conditions
Each project:
- must be developed on at
least two
consecutive days (recommended on weekends).
- must be JAMStack
(Javascript + API + Markup) using Vue
Framework.
- must have its own
repository on Github,
under the same organization.
- must be accessed from the URL:
https://<organizationURL>/<projectName>
- can use LocalStorage
as local database (if applicable).
- SHOULD be using JEXIA, if
requires some kind of external storage.
- must be documented with a README.md file, explaining
what they need for its operation and what was learned during the
process.
Projects suggested
All projects listed here are optional, so you can feel free to get rid of
some of those projects and make others either way.
(*) but it is also a pun in Spanish 😉
Additional commitments
- Each project completed should be shared, on
social media, promoting both
hashtags #100DaysOfCode and #100DaysOfVue,
with a brief summary of what was learned.
- Each project should be ended within the
time
suggested. Consider how
much hours
do you need each day to reach the goal.
- All images in each project should be
uploaded on SVG format (except favicons).
- Each project can be use a CSS framework to
shorten the developing time, also a
CSS pre-processor. There are no limitations in which framework can be
used.
- All projects can be developed using Flat
Design
, Material
Design, or whatever UI pattern design you
want,
but you must be consistent in which pattern design you choose. I mean,
if the
first project you completed (whatever it was) you made it on a Material
Design,
you should complete all remaining projects in that UI pattern design.
Good luck and May the force be with you! 😌


Contact name
City
Country
Is Promoted
Maria Andreas
Berlin
Germany
Ana Trujili
Mexico D.F.
Mexico
Antonio Moreno
Mexico D.F.
Mexico
Thomas Hardy
London
UK


optimized for printing
GUIs are helpful but they add an extra layer of abstraction
the official documentation and most of StackOverflow answers explain things in terms of the command line
valid especially for branching and merging
writing and using scripts so that the team can actually focus on solving problems
tools come and go; the CLI will be there, on every machine that can run Git


Hi There,
My name's Andre Rodrigues, I'm a Software Engineer at Microsoft and this is my personal page. In here you'll be able to find information about me, some of my work and general thought randomness.
Recent Posts
-
{% for post in site.posts %}
- {{ post.date | date: "%B %e, %Y" }} {{ post.title }} {% endfor %}


In this first chapter, you will install NWG and then look at a very simple application. This tutorial will use both native-windows-derive (the procedural macro to generate GUI's from rust structs) and the plain native-window-gui api. The next chapter "Basics" will go deeper into these.
cargo.toml
:
[dependencies] native-windows-gui = "1.0.12" native-windows-derive = "1.0.3"And then, in
main.rs
or lib.rs
:
extern crate native_windows_gui as nwg; extern crate native_windows_derive as nwd;
/*!
A very simple application that show your name in a message box.
See `basic` for the version without the derive macro
*/
extern crate native_windows_gui as nwg;
extern crate native_windows_derive as nwd;
use nwd::NwgUi;
use nwg::NativeUi;
#[derive(Default, NwgUi)]
pub struct BasicApp {
#[nwg_control(size: (300, 115), position: (300, 300), title: "Basic example", flags: "WINDOW|VISIBLE")]
#[nwg_events( OnWindowClose: [BasicApp::say_goodbye] )]
window: nwg::Window,
#[nwg_control(text: "Heisenberg", size: (280, 25), position: (10, 10))]
name_edit: nwg::TextInput,
#[nwg_control(text: "Say my name", size: (280, 60), position: (10, 40))]
#[nwg_events( OnButtonClick: [BasicApp::say_hello] )]
hello_button: nwg::Button
}
impl BasicApp {
fn say_hello(&self) {
nwg::simple_message("Hello", &format!("Hello {}", self.name_edit.text()));
}
fn say_goodbye(&self) {
nwg::simple_message("Goodbye", &format!("Goodbye {}", self.name_edit.text()));
nwg::stop_thread_dispatch();
}
}
fn main() {
nwg::init().expect("Failed to init Native Windows GUI");
let _app = BasicApp::build_ui(Default::default()).expect("Failed to build UI");
nwg::dispatch_thread_events();
}
Default
trait. Default-built controls are considered uninitialized. Calling their methods
will cause the program to panic.NwgUi
, Native-windows-derive can automatically generate the Ui code. The derive macro has no way to actually know
how to actually create the controls, so more information must be provided over the fields.nwg_control
specifies the control parameters. The actual syntax is ident: expr
. The parameters names maps directly to
the control builder field (yes NWG uses builders to create controls, more on that later). Check a specific control documentation to see which
parameters are available.position: (300, 300)
. This is ok for this example because the window
cannot be resized, but NWG also supports layouts. nwg_events
specifies the events that the control responds to. It take an array of EVENT_NAME: [callbacks]
. Note that
this is only the default way to dispatch events. nwg_events can be further customized to match all your callback needs. Again, check
a specific control documentation to see which events can be raised.nwg::init()
. This function should not fail, but if it does, it's because the host system is really broken.
In such case, the only thing left to do is to panic. Note that some helper functions (such as nwg::simple_message
) can still be called.NativeUi
trait, which gives you the build_ui
function.
The build_ui
function takes a single argument: the initial state of your application (aka your UI struct default state).
Because this application is very simple, there's no user state to initialize, so we just pass Default::default
at
let native-windows-derive do its magic. nwg::dispatch_thread_events()
.
This function will block the thread until nwg::stop_thread_dispatch()
is called. NWG does not provide a default handler on window close,
so you will have to manually bind the `OnWindowClose` event/*!
A very simple application that show your name in a message box.
See `basic_d` for the derive version
*/
extern crate native_windows_gui as nwg;
use nwg::NativeUi;
#[derive(Default)]
pub struct BasicApp {
window: nwg::Window,
name_edit: nwg::TextInput,
hello_button: nwg::Button
}
impl BasicApp {
fn say_hello(&self) {
nwg::simple_message("Hello", &format!("Hello {}", self.name_edit.text()));
}
fn say_goodbye(&self) {
nwg::simple_message("Goodbye", &format!("Goodbye {}", self.name_edit.text()));
nwg::stop_thread_dispatch();
}
}
//
// ALL of this stuff is handled by native-windows-derive
//
mod basic_app_ui {
use native_windows_gui as nwg;
use super::*;
use std::rc::Rc;
use std::cell::RefCell;
use std::ops::Deref;
pub struct BasicAppUi {
inner: Rc<BasicApp>,
default_handler: RefCell<Option<nwg::EventHandler>>
}
impl nwg::NativeUi<BasicAppUi> for BasicApp {
fn build_ui(mut data: BasicApp) -> Result<BasicAppUi, nwg::NwgError> {
use nwg::Event as E;
// Controls
nwg::Window::builder()
.flags(nwg::WindowFlags::WINDOW | nwg::WindowFlags::VISIBLE)
.size((300, 115))
.position((300, 300))
.title("Basic example")
.build(&mut data.window)?;
nwg::TextInput::builder()
.size((280, 25))
.position((10, 10))
.text("Heisenberg")
.parent(&data.window)
.focus(true)
.build(&mut data.name_edit)?;
nwg::Button::builder()
.size((280, 60))
.position((10, 40))
.text("Say my name")
.parent(&data.window)
.build(&mut data.hello_button)?;
// Wrap-up
let ui = BasicAppUi {
inner: Rc::new(data),
default_handler: Default::default(),
};
// Events
let evt_ui = Rc::downgrade(&ui.inner);
let handle_events = move |evt, _evt_data, handle| {
if let Some(ui) = evt_ui.upgrade() {
match evt {
E::OnButtonClick =>
if &handle == &ui.hello_button {
BasicApp::say_hello(&ui);
},
E::OnWindowClose =>
if &handle == &ui.window {
BasicApp::say_goodbye(&ui);
},
_ => {}
}
}
};
*ui.default_handler.borrow_mut() = Some(nwg::full_bind_event_handler(&ui.window.handle, handle_events));
return Ok(ui);
}
}
impl Drop for BasicAppUi {
/// To make sure that everything is freed without issues, the default handler must be unbound.
fn drop(&mut self) {
let handler = self.default_handler.borrow();
if handler.is_some() {
nwg::unbind_event_handler(handler.as_ref().unwrap());
}
}
}
impl Deref for BasicAppUi {
type Target = BasicApp;
fn deref(&self) -> &BasicApp {
&self.inner
}
}
}
fn main() {
nwg::init().expect("Failed to init Native Windows GUI");
nwg::Font::set_global_family("Segoe UI").expect("Failed to set default font");
let _ui = BasicApp::build_ui(Default::default()).expect("Failed to build UI");
nwg::dispatch_thread_events();
}
build_ui
.nwg::CONTROL::builder()
method.
Default values and builder parameters are available in the documentation.build
function does not return the new control, instead you must pass a mutable reference to the function. This allows
further customization of controls using DerefMut
shenanigans.?
to propagate the error to the caller. parent
builder method."WINDOW|VISIBLE"
to nwg::WindowFlags::WINDOW | nwg::WindowFlags::VISIBLE
[Control]Ui
wraps the inner application data.full_bind_event_handler(parent_handle, callback)
full_bind_event_handler
do (with lots, lots of safety guards).
Event
, it's data (if any) EventData
, and the sender window handle ControlHandle
.WeakRef
is used here so that Drop
can be called.match evt
&handle == &evt_ui.hello_button
BasicApp::say_hello(&evt_ui.inner);
full_bind_event_handler
applies to the parent and all its children. This means you only need to bind handlers on TOP LEVEL window.
Lastly, the handler returned by full_bind_event_handler
is saved in the wrapper struct under default_handler
.
nwg::unbind_event_handler(&handler)
WeakRef
in our event handler, the ui struct only has 1 strong refcount. This way we can unbind the event handler in
the drop method.


Swiftype Faceted Search E-Commerce Store Example
Search products
Sorted by
Relevance
Price
Date Added
Prices
Under $5
Under $10
Under $25
Over $50
No products found


My First portfolio Webpage
My career is to be a developer
welcome to my portfolio
I love coding. coding is fun and challenging too.
To become a developer one needs alot of effort.
The following are basics of coding
- Hello World
This was my first project in moringa school. link to site
- My portfolio
This was my second project in moringa school. link to site
ABOUT ME
My background i haven't done alot i finshed highschool that it.
The skills that i have are for exmple:
- Swimming>
- Football
- Volleyball
For my hobbies are:
- Traveling
- Being a seccesful woman
- Being helpful to people everytime


It defines if you want to allow transcoding in the media server or not when forcedVideoCodec is not compatible with the browser/client.
If defined here, this parameter has prevalence over OPENVIDU_STREAMS_ALLOW_TRANSCODING. OPENVIDU_STREAMS_ALLOW_TRANSCODING default is 'false'
Fix the sessionId that will be assigned to the session with this parameter. You can take advantage of this property to facilitate the mapping between OpenVidu Server 'session' entities and your own 'session' entities. If this parameter is undefined or an empty string, OpenVidu Server will generate a random sessionId for you.
Default recording properties of this session. You can easily override this value later when starting a Recording by providing new RecordingProperties
Default values defined in RecordingProperties class
Define which video codec will be forcibly used for this session.
This forces all browsers/clients to use the same codec, which would
avoid transcoding in the media server (Kurento only). If
forcedVideoCodec
is set to NONE, no codec will be forced.
If the browser/client is not compatible with the specified codec, and
allowTranscoding is false
, an exception will occur.
If defined here, this parameter has prevalence over OPENVIDU_STREAMS_FORCED_VIDEO_CODEC.
Default is VideoCodec.MEDIA_SERVER_PREFERRED.
How the media streams will be sent and received by your clients: routed through OpenVidu Media Node
(MediaMode.ROUTED
) or attempting direct p2p connections (MediaMode.RELAYED
, not available yet)
Default to MediaMode.ROUTED
This feature is part of OpenVidu PRO and ENTERPRISE editions
The Media Node where to host the session. The default option if this property is not defined is the less loaded Media Node at the moment the first user joins the session. This object defines the following properties as Media Node selector:
id
: Media Node unique identifierWhether the Session will be automatically recorded (RecordingMode.ALWAYS
) or not (RecordingMode.MANUAL
)
Default to RecordingMode.MANUAL
Generated using TypeDoc
See OpenVidu.createSession


12:25
Zsolt
Welcome!
12:28
Zsolt
This is an RxJs demo. Use this demo to discover how event streams can be handled using RxJs.
general
This is a general chat.
channel 1
Channel one.


We analyze commuter bike data for the city of Boston for the year 2016, and allow for exploration of the data.
The visualization here shows data around the year: how many bike commutes are made each day in Boston. The way Boston bikers commute closely mirrors an inverse relationship with the weather patterns. As is evident from the graph, the frequency starts ascending as the weather gets warmer with the arrival of Spring. Similarly, it starts descending as the temperature dips with the approaching winter season. We can see periodic dips on most weekends, which gets more pronounced during the warmer months as the reference trips in the adjoining days is large.
The map here shows the bike share stations in the Boston Metro region.
Find out More!Make a brush selection in the time bars below and click the button to explore bike share use in Boston! Please wait for a minute after pressing the button, the data filtering takes time!


Avatar (2009)
The Curious Case of
Benjamin Button (2008)
Big Fish (2003)
The Green Mile (1999)
Groundhog Day (1993)
The Lord of the Rings (1978)
Mr. Nobody (2009)
Pans Labyrint (2006)
Perfume:
The Story of a Murderer (2006)
The Mask (1994)
The Last Witch Hunter (2015)
X-Men: Apocalypse (2016)


Samples
Simple yet flexible JavaScript charting for designers & developers
Website
Documentation
GitHub


Mi Playlist
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
1
5 Reasons To Choose A Notebook Over A Computer Desktop
Playlists de Amigos
Gordon Caroll
Gordon Caroll
Gordon Caroll
Gordon Caroll
New Order- Bizarre Love Triangle
124,886 vistas
Guardar
Comentarios
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Gordon Caroll
Barbecue Sauce For A Perfect barbecue
Sugerencias
Quick And Easy Lunches For The Cooking Challenged
Quick And Easy Lunches For The Cooking Challenged


Sign Up
Register your account to have access to your favorite trails, personal records, and more.
Register your account to have access to your favorite trails, personal records, and more.
No matter where you are, we've got you covered. This map will keep you informed of the trails closest to you in real time.


tf2_colored_message_generator - v0.1.0
1. Set your text:
2. Colorize your text:
Set the selection to:
1
2
3
4
5
6
7
8
9
10
11
3. Generate the TF2 'sm_me' command
Made by
Wait, what?
- September 05, 2017.


Annual time series of circulation indices, expressed as anomalies from 1961 to 1990. Shown are series from two reanalyses (20CRv2c, ERA20C), the atmospheric model simulations ERA20CM (10 members; ensemble mean and spread are indicated (Hersbach et al., 2015) and series based on observations or reconstructions. Shown are the seasonal mean strength of the boreal Hadley cell (the maximum of the meridional mass stream function), its latitudinal position (latitude of the maximum), the Pacific Walker cell (difference in 500 hPa ω between the areas [10°S–10°N, 180–100°W] and [10°S–10°N, 100–150°E]), the North Atlantic oscillation (NAO) and the Arctic dipole mode (here defined as the SLP difference north of 60°N between the western and the eastern hemisphere; after Brönnimann et al. ( 2009) and Brönnimann et al. ( 2009). Additionally, a statistical reconstruction of the Pacific Walker cell is shown (Brönnimann, Stickler, Griesser, Ewen, et al., 2009; Brönnimann, Stickler, Griesser, Fischer, et al., 2009) and an observation‐based NAO index based on HadSLP2p data (Allan & Ansell, 2006). All series are for December–February except Hadley cell position (January–December) and Indian summer monsoon rainfall (June–August, Sontakke et al., 2008). Colored numbers indicate correlations between the correspondingly colored reanalyses or observations with the ERA20CM ensemble mean (* and ** denote 95 and 99% significance). The purple line for Indian summer monsoon rainfall is based on a reconstruction (Zhou et al., 2010). Severe and phenomenal droughts (Wang, 2006) over India are added as circles


AccuWeather: Sun fading to start the week
by WABCNEW YORK (WABC) -- The sun will be fading to start off the week
Here is the 7-day forecast for the Tri-State area:
Monday
Sun fading with a high of 55.
Tuesday
Milder mix with a high of 60.
Wednesday
Sun, but cooler with a high of 53.
Thursday
Limited sun with a high of 54.
Friday
Brisk and colder with a high of 42.
Saturday
Cold blend with a high of 40.
Sunday
Still chilly with a high of 47.
Click here for the latest watches and warnings from the National Weather Service.
Check the weather any time at abc7NY.com/weather. For weather updates wherever you go, please download the AccuWeather app.
Here's a look at the 7 Day AccuWeather forecast


Common part
First you need to install MTA (at this time only qmail is supported).
I created patch for qmail including most needed stuff like
smtp-auth, ssl, etc., more informations are located at
http://new.foo-baz.com/proj/q-p/.
Following installation procedure was created using OpenBSD 3.4 box, but
it will work also for Linux. Commands are executed as root:
- groupadd vq
- useradd -g vq -d /var/vq vq
- bunzip2 -c vq-*.tar.bz2 | tar -xf -
- cd vq
-
vim *.lib *.inc
Files *.inc includes options for compiler telling where to look
for include files. Files *.lib point to libraries and directories.
On OpenBSD usually you need add -liconv to iconv.lib, Linux's
glibc includes iconv (so you need to remove this line).
Default options may not work for you (it's not an error), you
must set values depending on your system configuration.
Sometimes you will need to add some other libraries, I found
that sablotron on OpenBSD 3.4 references functions from readline,
ncurses.
-
vim comp-so compile make-so make-lib
Comp* are used to call compiler so you may put there
optimization options. Check files if they match your system.
If you compile vq on system not listed in
Documentation::Supported Systems please
send me an information.
-
vim conf/*
Edit you configuration files.
-
make
This starts compilation. I'm using gcc 2.95.5 and 3.2.2.
If you encounter any problems please give me feedback.
I'll try to fix them ASAP. Also if you want to port this
package on other systems I will help.
-
./install
Installing files in home.
-
Add home/lib to linker's seach path. On OpenBSD you need
to edit /etc/rc.conf, variable shlib_dirs (this works
after restart, to update current database run
ldconfig -m home/lib). On Linux add path to /etc/ld.so.conf and
run ldconfig.
-
Depending on system you should set SUID/SGID and owners
for all home/bin/qmail* files. They must have an access
to qmail/control, qmail/users, and qmail's processes (qmail-send).
-
That should be all. You have now working vq system.
Using PostgreSQL as a database server
-
Install PostgreSQL.
I try to keep using the most current stable version.
I don't support older versions. Install also libpqxx, use
newest stable version.
-
Create user, default is "mail".
-
Create database, default is "mail". It's adviced
to set encoding to UTF-8 (programs in contrib relay on this
setting).
-
Go to the doc/pgsql directory. There's list of things
you need to do. It also contains SQL files that are
used to create basic database structure.
Programs in contrib
I think that after installing vq you'll be able to install the
rest of programs. There may be problems with hosting and
freemail modules. They require to add some specific tables to database.
Run some daemons. I assume that senior administrators will
handle this. If you are interested in developing/using them
on your site you can contact me, I'll try to help.
|


{% load static %}
Data Carousel dashboard:
This page summarizes input datasets staging from TAPE RSE.
By default page shows all non-finished stagings and staged datasets that were modified in last 24 hours. To change the time range of the selection, use the Change button in the top sub-bar. To apply the new time range push the Apply button.
Use multi-select menus in top-right corner of the page to select particular campaign or source RSE. Click on the Update button to reload the data.
To look for potentially stuck files click on sign in Rucio rule column which is available for datasets in active staging state only. The new table will appear below with list of failed file stagings. Note, all failed attempts are shown so number of rows in the table != number of stuck files. We are limited by 1000 of rows because of the peculiarity of the data source.
If you notice any issue or if you have an advice how to improve the page, please let us know<EMAIL_ADDRESS>!


| input | output |
| var options = {name: 'John'}; 'Hello, there! Are you #{name}?'.format(options); |
'Hello, there! Are you John' |
| var options = {name: 'John', age: 13}; 'My name is #{name} and I am #{age}-years-old'.format(options); |
'My name is John and I am 13-years-old' |


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.swing.text.DefaultStyledDocument.ElementSpec
public static class DefaultStyledDocument.ElementSpec
Specification for building elements.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeansTM
has been added to the java.beans
package.
Please see XMLEncoder
.
| Field Summary | |
|---|---|
static short |
ContentType
A possible value for getType. |
static short |
EndTagType
A possible value for getType. |
static short |
JoinFractureDirection
A possible value for getDirection. |
static short |
JoinNextDirection
A possible value for getDirection. |
static short |
JoinPreviousDirection
A possible value for getDirection. |
static short |
OriginateDirection
A possible value for getDirection. |
static short |
StartTagType
A possible value for getType. |
| Constructor Summary | |
|---|---|
DefaultStyledDocument.ElementSpec(AttributeSet a,
short type)
Constructor useful for markup when the markup will not be stored in the document. |
|
DefaultStyledDocument.ElementSpec(AttributeSet a,
short type,
char[] txt,
int offs,
int len)
Constructor for creating a spec externally for batch input of content and markup into the document. |
|
DefaultStyledDocument.ElementSpec(AttributeSet a,
short type,
int len)
Constructor for parsing inside the document when the data has already been added, but len information is needed. |
| Method Summary | |
|---|---|
char[] |
getArray()
Gets the array of characters. |
AttributeSet |
getAttributes()
Gets the element attributes. |
short |
getDirection()
Gets the direction. |
int |
getLength()
Gets the length. |
int |
getOffset()
Gets the starting offset. |
short |
getType()
Gets the element type. |
void |
setDirection(short direction)
Sets the direction. |
void |
setType(short type)
Sets the element type. |
String |
toString()
Converts the element to a string. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final short StartTagType
public static final short EndTagType
public static final short ContentType
public static final short JoinPreviousDirection
public static final short JoinNextDirection
public static final short OriginateDirection
public static final short JoinFractureDirection
| Constructor Detail |
|---|
public DefaultStyledDocument.ElementSpec(AttributeSet a, short type)
a
- the attributes for the elementtype
- the type of the element (StartTagType, EndTagType,
ContentType)public DefaultStyledDocument.ElementSpec(AttributeSet a, short type, int len)
a
- the attributes for the elementtype
- the type of the element (StartTagType, EndTagType,
ContentType)len
- the length >= 0public DefaultStyledDocument.ElementSpec(AttributeSet a, short type, char[] txt, int offs, int len)
a
- the attributes for the elementtype
- the type of the element (StartTagType, EndTagType,
ContentType)txt
- the text for the elementoffs
- the offset into the text >= 0len
- the length of the text >= 0| Method Detail |
|---|
public void setType(short type)
type
- the type of the element (StartTagType, EndTagType,
ContentType)public short getType()
public void setDirection(short direction)
direction
- the direction (JoinPreviousDirection,
JoinNextDirection)public short getDirection()
public AttributeSet getAttributes()
public char[] getArray()
public int getOffset()
public int getLength()
public String toString()
toString
in class Object
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Next: Tilde Percent-> Newline, Previous: FORMAT Basic Output, Up: FORMAT Basic Output
The next arg should be a character; it is printed according to the modifier flags.
~C prints the character as if by using write-char if it is a simple character. Characters that are not simple are not necessarily printed as if by write-char, but are displayed in an implementation-defined, abbreviated format. For example,
(format nil "~C" #\A) ⇒ "A" (format nil "~C" #\Space) ⇒ " "
~:C is the same as ~C for printing characters, but other characters are "spelled out." The intent is that this is a "pretty" format for printing characters. For simple characters that are not printing, what is spelled out is the name of the character (see char-name). For characters that are not simple and not printing, what is spelled out is implementation-defined. For example,
(format nil "~:C" #\A) ⇒ "A" (format nil "~:C" #\Space) ⇒ "Space" ;; This next example assumes an implementation-defined "Control" attribute. (format nil "~:C" #\Control-Space) ⇒ "Control-Space" OR⇒ "c-Space"
~:@C prints what ~:C would, and then if the character requires unusual shift keys on the keyboard to type it, this fact is mentioned. For example,
(format nil "~:@C" #\Control-Partial) ⇒ "Control-\partial (Top-F)"
This is the format used for telling the user about a key he is expected to type, in prompts, for instance. The precise output may depend not only on the implementation, but on the particular I/O devices in use.
~@C prints the character in a way that the Lisp reader can understand, using #\ syntax.
~@C binds *print-escape* to t.
Next: Tilde Percent-> Newline, Previous: FORMAT Basic Output, Up: FORMAT Basic Output


function GetSampleInt(X, Y: Integer): TColor32;
function GetSampleFixed(X, Y: TFixed): TColor32;
function GetSampleFloat(X, Y: Single): TColor32;
GetSample provides a method for acquiring a color sample from the coordinate (X, Y). The sample may be generated by the sampler itself, or it may be acquired from a nested sampler. Descendants of TCustomSampler must always override at least one of GetSampleFixed or GetSampleFloat.
The different postfixes determines the precision of the input parameters (integer, fixed-point or floating-point).


NICPICK
INSTRUCTIONS:
Please input your name before you play the game;
Click the different places and you will see the difference. Check the example picture on the right side;
The time is limited. You have to find the difference in the required time;
When you find one different place, you get one point. Who get higher points who win;
Start the Game!
ONLY GUYS WITH SHARP EYES WILL WIN THE GAME!
2015 Distributed System Projects by HUST-4. All rights reserved.
Home
NICPICK
INPUT YOUR NAME HERE:
Save your name
Continue
2015 Distributed System Projects by HUST-4. All rights reserved.
Home
NICPICK
Scores
Player 1
Score
Online
Player 2
Score
Online
Player 3
Score
Online
ONLY GUYS WITH SHARP EYES WILL WIN THE GAME!
2015 Distributed System Projects by HUST-4. All rights reserved.


The text of the exit is the one shown when the user put the mouse over it.
The pointer shown is the one which appears when the user is over the exit. With the button select, the pointer can be chosen.. With the cross button we can remove the selected pointer. A pointer is always shown. When there is no cursor selected, the default one will be used.


The Heisenberg Equation (Part 3)
A Bit of Review
Last week I derived the expectation values of position and momentum of the quantum harmonic oscillator using the Heisenberg equation. First, I outlined how operators and wavefunctions evolve in time in the Schrodinger and Heisenberg pictures of quantum mechanics:
| Property | Schrodinger Picture | Heisenberg Picture |
| Operator | Time Independent | Time Dependent |
| Wavefunction | Time Dependent | Time Independent |
Then, I calculated that the time-dependent expectation values for position and momentum.
\[\begin{equation} \langle \hat{x}_H \rangle = \langle \psi | \hat{x}_H | \psi \rangle = \langle \hat{x} \rangle cos(\omega t) + \frac{\langle \hat{p} \rangle}{m\omega} sin(\omega t) \end{equation}\] \[\begin{equation} \langle \hat{p}_H \rangle = \langle \psi | \hat{p}_H | \psi \rangle = \langle \hat{p} \rangle cos(\omega t) - m\omega \langle \hat{x} \rangle sin(\omega t) \end{equation}\]The expressions above state that the time-evolution of the expectation values of position and momentum depend on the initial expectation values of position and momentum as well as sinusoidal functions of time. This leads to two scenarios. First, suppose that the quantum harmonic oscillator starts off in some arbitrary state \(\psi\). That means \(\langle \hat{x} \rangle\) and \(\langle \hat{p} \rangle\) are not necessarily zero. Thus, the expectation values of position and momentum oscillate as a function of time. On the other hand, suppose that the quantum harmonic oscillator is in an energy eigenstate. That means \(\langle \hat{x} \rangle\) and \(\langle \hat{p} \rangle\) are equal to zero. Thus, as we expect, the expectation values of position and momentum are zero at all points in time.
This week I am going to solve exactly the same problem as last week. However, instead of writing everything in terms of position and momentum, I am going to write everything in terms of the creation and annihilation operators (\(\hat{a}\) and \(\hat{a}^\dagger\)).
Cue the sunglasses cupcake one more time…
My Notation
The notation is exactly the same as last week. Any operator with an H subscript is an operator in the Heisenberg picture with time dependence. Any operator with no subscript is one in the Schrodinger picture with no time-dependence. The relationship between these operators is:
\[\begin{equation} \hat{Q}_H = \hat{U}^\dagger \hat{Q} \hat{U} \end{equation}\]Where \(\hat{U}\) is a unitary operator that describes the time evolution of the quantum system.
The Creation and Annihilation Operators
When analyzing the quantum harmonic oscillator, we often try to avoid using the position and momentum operators explicitly. This is because the eigenstates of the Hamiltonian are not position or momentum eigenstates - they are energy eigenstates. Thus, it makes sense to recast position and momentum operators in terms of energy operators. Usually, the way this is done is by defining the creation and annihilation operators:
\[\begin{equation} \hat{a}^\dagger = \frac{1}{\sqrt{2\hbar m \omega}} \left ( m\omega \hat{x} - i\hat{p} \right ) \end{equation}\] \[\begin{equation} \hat{a} = \frac{1}{\sqrt{2\hbar m \omega}} \left ( m\omega \hat{x} + i\hat{p} \right ) \end{equation}\]There are a huge number of resources out on the internet that describe how these operators affect energy eigenstates (usually indexed by n). I will assume that you are familiar with the properties of \(\hat{a}\), \(\hat{a}^\dagger\), and \(n\). If not, take some time to do a quick review before continuing on.
I will quickly prove that we can rewrite the Hamiltonian in terms of these two operators. Multiplying them together yields:
\[\begin{align} \hat{a}^\dagger \hat{a} &= \left [ \frac{1}{\sqrt{2\hbar m \omega}} \left ( m\omega \hat{x} - i\hat{p} \right ) \right ] \left [ \frac{1}{\sqrt{2\hbar m \omega}} \left ( m\omega \hat{x} + i\hat{p} \right ) \right ]\\[0.1cm] &= \frac{1}{2\hbar m \omega} \left ( m^2\omega^2 \hat{x} \hat{x} - im\omega \hat{p} \hat{x} + im\omega \hat{x} \hat{p} + \hat{p} \hat{p} \right )\\[0.1cm] &= \frac{1}{2\hbar m \omega} \left ( m^2\omega^2 \hat{x}^2 + im\omega \left [ \hat{x}, \hat{p} \right ] + \hat{p}^2 \right )\\[0.1cm] &= \frac{1}{2\hbar m \omega} \left [ m^2\omega^2 \hat{x}^2 + im\omega \left ( i\hbar \right ) + \hat{p}^2 \right ]\\[0.1cm] &= \frac{1}{2\hbar m \omega} \left [ m^2\omega^2 \hat{x}^2 - m \hbar \omega + \hat{p}^2 \right ]\\[0.1cm] &= \frac{\hat{p}^2}{2\hbar m \omega} + \frac{1}{2\hbar} m\omega \hat{x}^2 - \frac{1}{2} \end{align}\]Adding \(1/2\) to the expression above yields:
\[\begin{equation} \hat{a}^\dagger \hat{a} + \frac{1}{2} = \frac{\hat{p}^2}{2\hbar m \omega} + \frac{1}{2\hbar} m\omega \hat{x}^2 \end{equation}\]Finally, multiplying each side by \(\hbar \omega\) gives the Hamiltonian.
\[\begin{equation} \hat{H} = \hbar \omega \left ( \hat{a}^\dagger \hat{a} + \frac{1}{2} \right ) = \frac{\hat{p}^2}{2m} + \frac{1}{2} m \omega^2 \hat{x}^2 \end{equation}\]Thus, we can write the Hamiltonian in a position-momentum representation or an energy representation. We know from previous weeks that we can use the Heisenberg equation to recast the Hamiltonian from the Schrodinger to the Heisenberg picture. Let’s see what happens when we plug the creation and annihilation operators into that equation.
\[\begin{equation} \frac{d\hat{a}_H}{dt} = \frac{i}{\hbar} \left [\hat{H}, \hat{a}_H \right ] + \left ( \frac{d\hat{a}}{dt} \right )_H \end{equation}\] \[\begin{equation} \frac{d\hat{a}^\dagger_H}{dt} = \frac{i}{\hbar} \left [\hat{H}, \hat{a}^\dagger_H \right ] + \left ( \frac{d\hat{a}^\dagger}{dt} \right )_H \end{equation}\]The operators \(\hat{a}\) and \(\hat{a}^\dagger\) are not functions of time. Thus, we can solve for \(\hat{a}\) first:
\[\begin{align} \frac{d\hat{a}_H}{dt} &= \frac{i}{\hbar} \left [\hat{H}, \hat{a}_H \right ]\\[0.1cm] &= \frac{i}{\hbar} \left [\hat{H}, \hat{U}^\dagger \hat{a} \hat{U} \right ]\\[0.1cm] &= \frac{i}{\hbar} \hat{U}^\dagger \left [\hat{H}, \hat{a} \right ] \hat{U}\\[0.1cm] &= \frac{i}{\hbar} \hat{U}^\dagger \left ( -\hbar \omega \hat{a} \right ) \hat{U}\\[0.1cm] &= - i\omega \hat{U}^\dagger \hat{a} \hat{U}\\[0.1cm] &= - i\omega \hat{a}_H \end{align}\] \[\begin{equation} \frac{d\hat{a}_H}{dt} + i\omega \hat{a}_H = 0 \end{equation}\] \[\begin{equation} \hat{a}_H(t) = \hat{a}_H(0) e^{ -i\omega t} = \hat{a} e^{ -i\omega t} \end{equation}\]And we can solve for \(\hat{a}^\dagger\) second:
\[\begin{align} \frac{d\hat{a}^\dagger_H}{dt} &= \frac{i}{\hbar} \left [\hat{H}, \hat{a}^\dagger_H \right ]\\[0.1cm] &= \frac{i}{\hbar} \left [\hat{H}, \hat{U}^\dagger \hat{a}^\dagger \hat{U} \right ]\\[0.1cm] &= \frac{i}{\hbar} \hat{U}^\dagger \left [\hat{H}, \hat{a}^\dagger \right ] \hat{U}\\[0.1cm] &= \frac{i}{\hbar} \hat{U}^\dagger \left ( \hbar \omega \hat{a}^\dagger \right ) \hat{U}\\[0.1cm] &= i\omega \hat{U}^\dagger \hat{a}^\dagger \hat{U}\\[0.1cm] &= i\omega \hat{a}^\dagger_H\\[0.1cm] \end{align}\] \[\begin{equation} \frac{d\hat{a}^\dagger_H}{dt} - i\omega \hat{a}^\dagger_H = 0 \end{equation}\] \[\begin{equation} \hat{a}^\dagger_H(t) = \hat{a}^\dagger_H(0) e^{ i\omega t} = \hat{a}^\dagger e^{ i\omega t} \end{equation}\]We have recovered nice expressions for \(\hat{a}\) and \(\hat{a}^\dagger\). Let’s put them to use.
Coming Full Circle
Now that we have the creation and annihilation operators in the Heisenberg picture, let’s once again find the position and momentum expectation values of the quantum harmonic oscillator, in a slightly different way.
Suppose I have some arbitrary quantum state that is a linear superposition of energy eigenstates (each \(b_n\) is a constant):
\[\begin{equation} | \psi \rangle = b_0 \psi_0 + b_1 \psi_1 + b_2 \psi_2 + ... = \sum_{n=0}^N b_n \psi_n = \sum_{n=0}^N b_n | n \rangle \end{equation}\] \[\begin{equation} \langle \psi | = b_0^* \psi^*_0 + b_1^* \psi_1^* + b_2^* \psi_2^* + ... = \sum_{n=0}^N b_n^* \psi_n^* = \sum_{n=0}^N b_n^* \langle n | \end{equation}\]I want to calculate the expectation values of position and momentum as a function of time; however, this time I will put everything in terms of \(\hat{a}\) and \(\hat{a}^\dagger\). First, I will rewrite \(\hat{x}\) and \(\hat{p}\) in terms of \(\hat{a}\) and \(\hat{a}^\dagger\). Taking the definition of the creation and annihilation operators from above and rearranging terms gives:
\[\begin{equation} \hat{x}_H = \sqrt{\frac{\hbar}{2m\omega}} \left ( \hat{a}^\dagger_H + \hat{a}_H \right ) \end{equation}\] \[\begin{equation} \hat{p}_H = i\sqrt{\frac{m \hbar\omega}{2}} \left ( \hat{a}^\dagger_H - \hat{a}_H \right ) \end{equation}\]The expectation value of position is:
\[\begin{align} \langle \hat{x}_H \rangle &= \langle \psi | \hat{x}_H | \psi \rangle\\[0.1cm] &= \sum_{n=0}^N \sum_{m=0}^M \langle n | b_n^* \hat{x}_H b_m | m \rangle\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( \hat{a}^\dagger_H + \hat{a}_H \right ) | m \rangle\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( e^{i\omega t} \hat{a}^\dagger |m\rangle + e^{-i\omega t} \hat{a} |m\rangle \right )\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( e^{i\omega t} \sqrt{m+1} |m+1\rangle + e^{-i\omega t} \sqrt{m} |m-1\rangle \right )\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \left ( e^{i\omega t} \sqrt{m+1} \langle n |m+1\rangle + e^{-i\omega t} \sqrt{m} \langle n |m-1\rangle \right )\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \left ( e^{i\omega t} \sqrt{m+1} \delta_{n,m+1} + e^{-i\omega t} \sqrt{m} \delta_{n,m-1} \right )\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{m=0}^M \left [ b_{m+1}^* b_m e^{i\omega t} \sqrt{m+1} + b_{m-1}^* b_m e^{-i\omega t} \sqrt{m} \right ] \end{align}\]And the expectation value of momentum is:
\[\begin{align} \langle \hat{p}_H \rangle &= \langle \psi | \hat{p}_H | \psi \rangle\\[0.1cm] &= \sum_{n=0}^N \sum_{m=0}^M \langle n | b_n^* \hat{p}_H b_m | m \rangle\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( \hat{a}^\dagger_H - \hat{a}_H \right ) | m \rangle\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( e^{i\omega t} \hat{a}^\dagger |m\rangle - e^{-i\omega t} \hat{a} |m\rangle \right )\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \langle n | \left ( e^{i\omega t} \sqrt{m+1} |m+1\rangle - e^{-i\omega t} \sqrt{m} |m-1\rangle \right )\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \left ( e^{i\omega t} \sqrt{m+1} \langle n |m+1\rangle - e^{-i\omega t} \sqrt{m} \langle n |m-1\rangle \right )\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{n=0}^N \sum_{m=0}^M b_n^* b_m \left ( e^{i\omega t} \sqrt{m+1} \delta_{n,m+1} - e^{-i\omega t} \sqrt{m} \delta_{n,m-1} \right )\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{m=0}^M \left [ b_{m+1}^* b_m e^{i\omega t} \sqrt{m+1} - b_{m-1}^* b_m e^{-i\omega t} \sqrt{m} \right ] \end{align}\]And there we have it! Victory!
Ok, at this point, you might be thinking what the heck is going on. How are the answers above anything like what we derived last week? They look very different, but they are actually one and the same. Let’s look at a quick example. Suppose I start with the superposition state:
\[\begin{equation} | \psi \rangle = \frac{1}{\sqrt{2}} \left ( |0\rangle + |1\rangle \right ) \end{equation}\]Let’s calculate the expectation values of position and momentum using the weird formulae above:
\[\begin{align} \langle \hat{x}_H \rangle &= \sqrt{\frac{\hbar}{2m\omega}} \sum_{m=0}^1 \left [ b_{m+1}^* b_m e^{i\omega t} \sqrt{m+1} + b_{m-1}^* b_m e^{-i\omega t} \sqrt{m} \right ]\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \left \{ \left [ b_{1}^* b_0 e^{i\omega t} \sqrt{1} + b_{-1}^* b_0 e^{-i\omega t} \sqrt{0} \right ] + \left [ b_{2}^* b_1 e^{i\omega t} \sqrt{2} + b_{0}^* b_1 e^{-i\omega t} \sqrt{1} \right ] \right \}\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \left [ b_{1}^* b_0 e^{i\omega t} + b_{0}^* b_1 e^{-i\omega t} \right ]\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \left [ \left ( \frac{1}{\sqrt{2}} \right )^2 e^{i\omega t} + \left ( \frac{1}{\sqrt{2}} \right )^2 e^{-i\omega t} \right ]\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} \frac{1}{2} \left [ e^{i\omega t} + e^{-i\omega t} \right ]\\[0.1cm] &= \sqrt{\frac{\hbar}{2m\omega}} cos(\omega t)\\[0.1cm] \end{align}\] \[\begin{align} \langle \hat{p}_H \rangle &= i\sqrt{\frac{m\hbar\omega}{2}} \sum_{m=0}^1 \left [ b_{m+1}^* b_m e^{i\omega t} \sqrt{m+1} - b_{m-1}^* b_m e^{-i\omega t} \sqrt{m} \right ]\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \left \{ \left [ b_{1}^* b_0 e^{i\omega t} \sqrt{1} - b_{-1}^* b_0 e^{-i\omega t} \sqrt{0} \right ] + \left [ b_{2}^* b_1 e^{i\omega t} \sqrt{2} - b_{0}^* b_1 e^{-i\omega t} \sqrt{1} \right ] \right \}\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \left [ b_{1}^* b_0 e^{i\omega t} - b_{0}^* b_1 e^{-i\omega t} \right ]\\[0.1cm] &= i\sqrt{\frac{m\hbar\omega}{2}} \left [ \left ( \frac{1}{\sqrt{2}} \right )^2 e^{i\omega t} - \left ( \frac{1}{\sqrt{2}} \right )^2 e^{-i\omega t} \right ]\\[0.1cm] &= \sqrt{\frac{m\hbar\omega}{2}} \frac{i}{2} \left [ e^{i\omega t} - e^{-i\omega t} \right ]\\[0.1cm] &= - \sqrt{\frac{m\hbar\omega}{2}} sin(\omega t) \end{align}\]If you take the final equations from last week and use the initial conditions \(\langle \hat{x} \rangle = \sqrt{\hbar/2m\omega}\) and \(\langle \hat{p} \rangle = 0\), you get the same answer as above! Thus, the superposition state above is equivalent to a random state with an initial expected momentum of zero and an initial expected position of \(\sqrt{\hbar/2m\omega}\).
Final Thoughts
Wow, this has been an intense arc. The big take-home message is that there is more than one way to visualize quantum mechanics. The Heisenberg picture of quantum mechanics gives the same answers as the Schrodinger picture - it is a matter of preference as to which one you would use for a given problem.
See you next week!


User' Credit Detail
Overview
The first thing to point out is that User Credit is OPTIONAL - you do not need to implement user credits unless you want to.
What is a User Credit?
User Credit is a number, representing a currency amount, associated with a registered user. You can sell your customer user credits OUTSIDE of ABPro then enter their number of credits into ABPro. Now when they go to make a booking, the cost of the booking is deducted from their credits.
Why use User Credit?
A few reasons:
- If you want to sell your customer the ability to make multiple bookings without paying each time. For example, selling a package of 5 appointments.
- Quantity discounting. You can sell a package of 10 appointments for less than the cost of 10 individual appointments. This could be done for example by selling $100 of credits for $75.
- Support additional payment gateways, for example sell credits through Virtumart or an existing gateway, then just add the credits into ABPro.
Limitations
- ABPro is not a banking system and Soft Ventures will not be liable for any discrepancies.
Limited activity logging will be maintained but NOT at an auditing level one would find in financial system software.
- PayPal must be enabled to turn on the financial parts of the screens.
- Credits are purchased outside of ABPro (PayPal buy now or Virtumart, etc.) and entered manually by Admin.
- A resource can have only one rate, that is you cannot offer a different rate for customers paying by PayPal vs paying by credits. Discounting would be handled outside ABPro when credits are purchased (ex: sell $100 worth of credits for $75)
- No partial cancel, ie: no cancel 1 seat of 3, cancel all and reorder.
- If a user needs to pay part via PayPal (his credit balance was not enough) and he bails out of PayPal without paying, he would need to contact admin to get his credits restored manually.
- The credit system only applies to the public booking screens and Front-Desk booking screen. Admin manually setting a booking to 'accepted' will have no effect on the user's credit balance. If admin sets a booking to 'canceled', and the booking was paid all or in part by user credit, the credit is re-instated. If part was paid by PayPal, that will be added to the user's credit balance - no PayPal refunds are ever initiated by ABPro.
- Not compatible with manual booking acceptance (Auto-Accept = No)
Toolbar Icons
Cancel: Abort changes and return to the previous screen.
Save: Save changes and return to the previous screen.
Help: Opens this help screen.
Edit Area
User Name: Name of the user this credit balance pertains to. When adding a new account this is a drop down list of all registered users on the system.
Credit Balance: Current balance. You would enter an initial value here when creating a new account or you can manually adjust the balance by changing the number. The number must be a currency amount (ie ###.##) greater than 0.00.
Credit Activity: This section shows all activity on this credit account.


Reviewed with @mzelesky An example of a holdings_1display would be:
"holdings1display": "{ "22745884920006421": {"locationcode":"lewis$stacks","location":"Stacks","library":"Lewis Library","callnumber":"QB981 . D63 2021","callnumberbrowse":"QB981 . D63 2021","items":[{"holdingid":"22745884920006421","id":"23745884910006421","statusatload":"1","barcode":"32101104014996","copynumber":"0"}]}, "lewis$res": {"locationcode":"lewis$res","location":"Course Reserve","library":"Lewis Library","callnumber":"QB981 . D63 2021","callnumberbrowse":"QB981 . D63 2021", "items":[{"holdingid":"22745884920006421","id":"23898873500006421","statusatload":"1","barcode":"32101109060713","copy_number":"2"}]} }"
Items will be grouped by the temporary location. Temporary location will be added as an extra key in the holdings_1display key. Items grouped under the temporary location could have different holding ids.
unlabeled
by Christina Chortaria at 2021-10-19 14:32:08.unlabeled
by Christina Chortaria at 2021-10-19 14:32:08.milestoned
by Christina Chortaria at 2021-10-19 14:32:23.mentioned
by None at 2021-10-19 16:29:18.subscribed
by None at 2021-10-19 16:29:18.@hectorcorrea can you also rename the file to browselists.md ?
@christinach I made the changes that you requested, including renaming the file.
Thanks!
mentioned
by Hector Correa at 2021-10-19 15:31:47.subscribed
by Hector Correa at 2021-10-19 15:31:47.head_ref_force_pushed
by Hector Correa at 2021-10-19 15:34:55.review_requested
by Hector Correa at 2021-10-19 15:35:29.mentioned
by Christina Chortaria at 2021-10-19 15:36:09.subscribed
by Christina Chortaria at 2021-10-19 15:36:09.renamed
by Hector Correa at 2021-10-19 15:44:58.referenced
by Christina Chortaria at 2021-10-19 16:49:12.merged
by Christina Chortaria at 2021-10-19 16:49:13.closed
by Christina Chortaria at 2021-10-19 16:49:13.head_ref_deleted
by Christina Chortaria at 2021-10-19 16:49:14.referenced
by None at 2021-10-19 18:57:34.merged
by None at 2021-10-19 18:57:34.closed
by None at 2021-10-19 18:57:34.head_ref_deleted
by None at 2021-10-19 18:57:35.labeled
by None at 2021-10-19 18:59:25.labeled
by None at 2021-10-19 18:59:25.closed
by None at 2021-10-19 18:59:33.per conversation with @kelea99, we want to keep the feature and update the data. Kim will look for instances of this in staging and then update the data in production so things will look right when we deploy the upgrade.
@hackartisan , published sites have been gone through in staging. Any data cleanup needed has been done in DPUL prod. I found only 2 instances and they were both the Piranesi exhibition. Going through unpublished exhibitions next
unpublished collections look fine from what I could see.
🎉
closed
by None at 2021-10-19 13:39:40.mentioned
by Kim Leaman at 2021-10-19 13:39:41.subscribed
by Kim Leaman at 2021-10-19 13:39:41.unlabeled
by None at 2021-10-19 13:45:51.mentioned
by None at 2021-10-19 17:36:22.subscribed
by None at 2021-10-19 17:36:22.referenced
by Eliot Jordan at 2021-10-19 19:15:35.merged
by Eliot Jordan at 2021-10-19 19:15:35.closed
by Eliot Jordan at 2021-10-19 19:15:35.head_ref_deleted
by Eliot Jordan at 2021-10-19 19:15:36.referenced
by Eliot Jordan at 2021-10-19 20:50:25.merged
by Eliot Jordan at 2021-10-19 20:50:25.closed
by Eliot Jordan at 2021-10-19 20:50:25.head_ref_deleted
by Eliot Jordan at 2021-10-19 20:50:25.head_ref_force_pushed
by None at 2021-10-19 19:39:15.head_ref_force_pushed
by None at 2021-10-19 19:39:38.deployed
by None at 2021-10-19 19:39:59.head_ref_force_pushed
by None at 2021-10-19 20:40:24.referenced
by Eliot Jordan at 2021-10-19 20:50:43.merged
by Eliot Jordan at 2021-10-19 20:50:43.closed
by Eliot Jordan at 2021-10-19 20:50:44.head_ref_deleted
by Eliot Jordan at 2021-10-19 20:50:44.deployed
by None at 2021-10-19 12:55:00.deployed
by None at 2021-10-19 20:51:41.labeled
by James R. Griffin III at 2021-10-19 13:31:15.labeled
by James R. Griffin III at 2021-10-19 13:31:15.milestoned
by James R. Griffin III at 2021-10-19 13:31:15.assigned
by James R. Griffin III at 2021-10-19 13:31:15.demilestoned
by Kate Lynch at 2021-10-19 14:12:03.milestoned
by Kate Lynch at 2021-10-19 14:12:03.This was confirmed as resolved by the reporting user.
milestoned
by James R. Griffin III at 2021-10-19 14:08:44.demilestoned
by James R. Griffin III at 2021-10-19 14:13:48.closed
by James R. Griffin III at 2021-10-19 14:14:18.labeled
by James R. Griffin III at 2021-10-19 17:45:41.labeled
by James R. Griffin III at 2021-10-19 17:45:41.labeled
by James R. Griffin III at 2021-10-19 17:45:41.milestoned
by James R. Griffin III at 2021-10-19 17:45:41.closed
by James R. Griffin III at 2021-10-19 17:46:12.After trying to determine why this is still not properly updating, I did manage to locate the following within the user interface:
Perhaps this is why the imports are not being rendered properly for other users? I cannot find any proprietary ID within the CSV provided from the HR import.
From what I can determine within the dev
environment, these are being imported:
I have just discovered that it is the case that the Is current
may not be being parsed properly by the API:
...as the following is encoded within the XML request body:
25857 <api:is-academic>true</api:is-academic>
25858 <api:is-login-allowed>false</api:is-login-allowed>
25859 <api:is-current-staff>true</api:is-current-staff>
milestoned
by James R. Griffin III at 2021-10-19 14:13:34.As stated in the linked issue from 2020, the following action run on the server and then at the dspace CLI prompt resolves this issue:
Load the JRuby terminal: ``` $ source $HOME/.rvm/scripts/rvm $ cd ~/pulibrary-src/dspace-cli $ bin/dspace-irb $eperson Using /dspace Loading jars Loading /dspace/config/dspace.cfg INFO: Loading provided config file: /dspace/config/dspace.cfg INFO: Using dspace provided log configuration (log.init.config) INFO: Loading: /dspace/config/log4j.properties Starting new DSpaceKernel DB jdbc:postgresql://localhost:5432/dspacedb, UserName=dspacedb_user, PostgreSQL JDBC Driver jruby-<IP_ADDRESS> :001 >
In the JRuby terminal:
certhandle = '88435/dsp01c247ds15b'
certcollection = DSpace::CLI::SeniorThesisCollection.findforhandle(certhandle)
query = DSpace::CLI::SeniorThesisCommunity.findbyclassyear('2021')
certprogram = 'Theater Program'
subquery = query.findbycertificateprogram(certprogram)
unmapped = subquery.results.select { |i| i.collections.select { |c| c.title.include?(certprogram) }.empty? }
unmapped.map { |i| certcollection.additem(i); certcollection.update }
certcollection.index
``
Where
certhandleis the certificate program ark to be mapped (consult the table above), the matching
pu.certificatevalue from the item's metadata (for example
Theater Program,
Creative Writing Program), and the parameter in the call to
findbyclassyear` matching the current year.
I ran this code against the following item, after adjusting the class year to 2021, and adding a pu.certificate
field instance with the value Theater Program
:
https://dataspace-dev.princeton.edu/handle/99999/fk4321d72q
I also adjusted the following item on staging (imported in 2020) to be in the class year 2021, with the pu.certificate
value of Theater Program.
:
https://dataspace-staging.princeton.edu/handle/88435/dsp01xw42nb94p
We should be safe to run this on production ASAP.
This has been done; Lynn has been contacted for acceptance testing as of 3:20PM, 10/19.
milestoned
by Kate Lynch at 2021-10-19 19:48:22.head_ref_force_pushed
by Trey Pendragon at 2021-10-19 02:24:49.assigned
by Cliff Wulfman at 2021-10-19 13:42:22.unlabeled
by Trey Pendragon at 2021-10-19 17:12:07.labeled
by Trey Pendragon at 2021-10-19 17:25:59.labeled
by Trey Pendragon at 2021-10-19 19:54:59.labeled
by Trey Pendragon at 2021-10-19 19:54:59.referenced
by Trey Pendragon at 2021-10-19 20:17:08.head_ref_force_pushed
by None at 2021-10-19 18:40:31.head_ref_force_pushed
by None at 2021-10-19 18:47:33.head_ref_force_pushed
by None at 2021-10-19 18:55:28.head_ref_force_pushed
by None at 2021-10-19 19:02:26.head_ref_force_pushed
by None at 2021-10-19 19:09:00.head_ref_force_pushed
by None at 2021-10-19 19:14:48.head_ref_force_pushed
by None at 2021-10-19 19:47:53.head_ref_force_pushed
by None at 2021-10-19 19:49:23.head_ref_force_pushed
by None at 2021-10-19 19:51:12.head_ref_force_pushed
by None at 2021-10-19 19:54:29.head_ref_force_pushed
by None at 2021-10-19 19:55:32.head_ref_force_pushed
by None at 2021-10-19 20:00:51.head_ref_force_pushed
by None at 2021-10-19 20:03:50.head_ref_force_pushed
by None at 2021-10-19 20:08:16.referenced
by None at 2021-10-19 20:10:54.merged
by None at 2021-10-19 20:10:54.closed
by None at 2021-10-19 20:10:55.head_ref_deleted
by None at 2021-10-19 20:10:58.Wrote to ReadCube asking for their suggestions for Alma customers. Kevin also wrote to Peter B. about usage.
head_ref_force_pushed
by None at 2021-10-19 13:12:09.head_ref_force_pushed
by None at 2021-10-19 17:33:45.ready_for_review
by None at 2021-10-19 17:35:22.referenced
by Kevin Reiss at 2021-10-19 18:10:10.merged
by Kevin Reiss at 2021-10-19 18:10:10.closed
by Kevin Reiss at 2021-10-19 18:10:10.head_ref_deleted
by Kevin Reiss at 2021-10-19 18:10:10.head_ref_force_pushed
by Bess Sadler at 2021-10-19 20:32:12.Resolved: Confluence is back up in 9e123e0
.
labeled
by Francis Kayiwa at 2021-10-19 11:05:49.labeled
by Francis Kayiwa at 2021-10-19 11:05:49.locked
by Francis Kayiwa at 2021-10-19 11:05:50.closed
by Francis Kayiwa at 2021-10-19 11:57:07.Resolved: OAR is back up in 6dbd5f1
.
labeled
by Francis Kayiwa at 2021-10-19 11:56:57.labeled
by Francis Kayiwa at 2021-10-19 11:56:57.locked
by Francis Kayiwa at 2021-10-19 11:56:58.closed
by Francis Kayiwa at 2021-10-19 12:19:08.Resolved: Confluence is back up in 2d4e9f2
.
labeled
by Francis Kayiwa at 2021-10-19 12:20:39.labeled
by Francis Kayiwa at 2021-10-19 12:20:39.locked
by Francis Kayiwa at 2021-10-19 12:20:41.closed
by Francis Kayiwa at 2021-10-19 13:09:04.


Thanks to these sponsors for supporting ORHX
Sponsor 1
Placeholder text
Sponsor 2
Placeholder text
Sponsor 3
Placeholder text
Sponsor 4
Placeholder text
Sponsor 5
Placeholder text
Sponsor 6
Placeholder text


A C E F G I N P R S T W
A
- addRider(Rider) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- addRiders(Collection<Rider>) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
C
- com.insurancecalculator.terminsurancecalculator.support.entities - package com.insurancecalculator.terminsurancecalculator.support.entities
-
E
- endOfTenure - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
F
- from(Date) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
G
- getEndOfTenure() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- getInsurance() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- getName() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- getName() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- getPerCentOfPremium() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- getPerCentOfSumAssured() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- getPremium() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- getPremium() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- getPrice() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- getPrice() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- getRiders() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- getStartOfTenure() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- getSumAssured() - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
I
- insurance - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
N
- name - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- name - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
P
- perCentOfPremium - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- perCentOfSumAssured - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- premium - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- Proposal - Class in com.insurancecalculator.terminsurancecalculator.support.entities
-
- Proposal() - Constructor for class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
R
- removeRider(Rider) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- removeRiders(Collection<Rider>) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- Rider - Class in com.insurancecalculator.terminsurancecalculator.support.entities
-
- Rider() - Constructor for class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- riders - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
S
- setEndOfTenure(Date) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- setEndOfTenure(Map<String, Integer>) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- setInsurance(TermInsurance) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- setName(String) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- setName(String) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- setPerCentOfPremium(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- setPerCentOfSumAssured(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- setPremium(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- setRiders(Collection<Rider>) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Proposal
-
- setStartOfTenure(Date) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- setSumAssured(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- startOfTenure - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- sumAssured - Variable in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
T
- TermInsurance - Class in com.insurancecalculator.terminsurancecalculator.support.entities
-
- TermInsurance() - Constructor for class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- to(Date) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
W
- wherePerCentOfPremium(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- wherePerCentOfSumAssured(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
- wherePremium(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.Rider
-
- whereSumAssured(Double) - Method in class com.insurancecalculator.terminsurancecalculator.support.entities.TermInsurance
-
A C E F G I N P R S T W
Copyright © 2019. All rights reserved.


Strange Times
- infojunkie
Made with iReal Pro
To import this song/playlist tap or click the link on an Android or iOS device or Mac with iReal Pro installed.